Chromium Code Reviews| Index: src/parser.cc |
| diff --git a/src/parser.cc b/src/parser.cc |
| index b79589160190cd4019428bf5cc4b2293ff3276a6..efffe5a4e68d92414118302a497b56502a2aa2e2 100644 |
| --- a/src/parser.cc |
| +++ b/src/parser.cc |
| @@ -5541,7 +5541,7 @@ static ScriptDataImpl* DoPreParse(UC16CharacterStream* source, |
| // Preparse, but only collect data that is immediately useful, |
| // even if the preparser data is only used once. |
| -ScriptDataImpl* ParserApi::PartialPreParse(UC16CharacterStream* source, |
| +ScriptDataImpl* ParserApi::PartialPreParse(Handle<String> source, |
|
Lasse Reichstein
2011/11/29 08:07:27
For what it's worth, there is no longer any need f
|
| v8::Extension* extension, |
| int flags) { |
| bool allow_lazy = FLAG_lazy && (extension == NULL); |
| @@ -5552,7 +5552,15 @@ ScriptDataImpl* ParserApi::PartialPreParse(UC16CharacterStream* source, |
| } |
| flags |= kAllowLazy; |
| PartialParserRecorder recorder; |
| - return DoPreParse(source, flags, &recorder); |
| + int source_length = source->length(); |
| + if (source->IsExternalTwoByteString()) { |
| + ExternalTwoByteStringUC16CharacterStream stream( |
| + Handle<ExternalTwoByteString>::cast(source), 0, source_length); |
| + return DoPreParse(&stream, flags, &recorder); |
| + } else { |
| + GenericStringUC16CharacterStream stream(source, 0, source_length); |
| + return DoPreParse(&stream, flags, &recorder); |
| + } |
| } |