Chromium Code Reviews| Index: src/messages.js |
| =================================================================== |
| --- src/messages.js (revision 10896) |
| +++ src/messages.js (working copy) |
| @@ -533,6 +533,13 @@ |
| if (this.name) { |
| return this.name; |
| } |
| + |
| + // The result is cached as on long scripts it takes noticable time to search |
| + // for the sourceURL. |
| + if (this.hasCachedNameOrSourceURL) |
| + return this.cachedNameOrSourceURL; |
| + this.hasCachedNameOrSourceURL = true; |
| + |
| // TODO(608): the spaces in a regexp below had to be escaped as \040 |
| // because this file is being processed by js2c whose handling of spaces |
| // in regexps is broken. Also, ['"] are excluded from allowed URLs to |
| @@ -541,6 +548,7 @@ |
| // the scanner/parser. |
| var source = ToString(this.source); |
| var sourceUrlPos = %StringIndexOf(source, "sourceURL=", 0); |
| + var sourceUrl; |
| if (sourceUrlPos > 4) { |
| var sourceUrlPattern = |
| /\/\/@[\040\t]sourceURL=[\040\t]*([^\s\'\"]*)[\040\t]*$/gm; |
| @@ -551,15 +559,17 @@ |
| var match = |
| %_RegExpExec(sourceUrlPattern, source, sourceUrlPos - 4, matchInfo); |
| if (match) { |
| - return SubString(source, matchInfo[CAPTURE(2)], matchInfo[CAPTURE(3)]); |
| + sourceUrl = SubString(source, matchInfo[CAPTURE(2)], matchInfo[CAPTURE(3)]); |
|
danno
2012/03/02 12:06:32
80 col
yurys
2012/03/02 12:22:20
Done.
|
| } |
| } |
| - return this.name; |
| + this.cachedNameOrSourceURL = sourceUrl || this.name; |
|
danno
2012/03/02 12:06:32
I think it's a bit more readable if you name the v
yurys
2012/03/02 12:22:20
Done.
|
| + return this.cachedNameOrSourceURL; |
| } |
| SetUpLockedPrototype(Script, |
| - $Array("source", "name", "line_ends", "line_offset", "column_offset"), |
| + $Array("source", "name", "line_ends", "line_offset", "column_offset", |
| + "cachedNameOrSourceURL", "hasCachedNameOrSourceURL" ), |
| $Array( |
| "lineFromPosition", ScriptLineFromPosition, |
| "locationFromPosition", ScriptLocationFromPosition, |