Index: tools/parser-shell.cc |
diff --git a/tools/parser-shell.cc b/tools/parser-shell.cc |
index c2291857f0ccb30f836a8cf1fa40cae000b5e4dd..f14c0008b42b1fa5794803f534b9acd4c920d8db 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; |
} |
} |