Index: tools/parser-shell.cc |
diff --git a/tools/parser-shell.cc b/tools/parser-shell.cc |
index 4acdf7c034c778b72909e913878410afa09dbf2e..05b5a89b363f49965ae305c4bf6a655969773aec 100644 |
--- a/tools/parser-shell.cc |
+++ b/tools/parser-shell.cc |
@@ -44,6 +44,18 @@ |
using namespace v8::internal; |
+class StringResource8 : public v8::String::ExternalAsciiStringResource { |
+ public: |
+ StringResource8(const char* data, int length) |
+ : data_(data), length_(length) { } |
+ virtual size_t length() const { return length_; } |
+ virtual const char* data() const { return data_; } |
+ |
+ private: |
+ const char* data_; |
+ int length_; |
+}; |
+ |
std::pair<TimeDelta, TimeDelta> RunBaselineParser( |
const char* fname, Encoding encoding, int repeat, v8::Isolate* isolate, |
v8::Handle<v8::Context> context) { |
@@ -63,7 +75,9 @@ std::pair<TimeDelta, TimeDelta> RunBaselineParser( |
break; |
} |
case LATIN1: { |
- source_handle = v8::String::NewFromOneByte(isolate, source); |
+ StringResource8* string_resource = |
+ new StringResource8(reinterpret_cast<const char*>(source), length); |
+ source_handle = v8::String::NewExternal(isolate, string_resource); |
break; |
} |
} |