| Index: tools/parser-shell.cc
|
| diff --git a/tools/parser-shell.cc b/tools/parser-shell.cc
|
| index 4acdf7c034c778b72909e913878410afa09dbf2e..fd2cd085bb00f559a3a4a2c01f5a7e90a2463d59 100644
|
| --- a/tools/parser-shell.cc
|
| +++ b/tools/parser-shell.cc
|
| @@ -44,6 +44,20 @@
|
|
|
| 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 +77,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;
|
| }
|
| }
|
| @@ -85,6 +101,10 @@ std::pair<TimeDelta, TimeDelta> RunBaselineParser(
|
| fprintf(stderr, "Parsing failed\n");
|
| return std::make_pair(TimeDelta(), TimeDelta());
|
| }
|
| + if (!cached_data_impl) {
|
| + fprintf(stderr, "Didn't produce cached data\n");
|
| + return std::make_pair(parse_time1, TimeDelta());
|
| + }
|
| }
|
| // Second round of parsing (consume cached data).
|
| {
|
|
|