Index: src/parser.cc |
diff --git a/src/parser.cc b/src/parser.cc |
index e19af1cd5cd3dd265633660544b675246588c17b..2780a8789d8d25daf455a5f4b2d24fbd9c4ac112 100644 |
--- a/src/parser.cc |
+++ b/src/parser.cc |
@@ -5374,7 +5374,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, |
v8::Extension* extension, |
int flags) { |
bool allow_lazy = FLAG_lazy && (extension == NULL); |
@@ -5385,7 +5385,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); |
+ } |
} |