OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 26 matching lines...) Expand all Loading... |
37 #include "src/compiler.h" | 37 #include "src/compiler.h" |
38 #include "src/scanner-character-streams.h" | 38 #include "src/scanner-character-streams.h" |
39 #include "tools/shell-utils.h" | 39 #include "tools/shell-utils.h" |
40 #include "src/parser.h" | 40 #include "src/parser.h" |
41 #include "src/preparse-data-format.h" | 41 #include "src/preparse-data-format.h" |
42 #include "src/preparse-data.h" | 42 #include "src/preparse-data.h" |
43 #include "src/preparser.h" | 43 #include "src/preparser.h" |
44 | 44 |
45 using namespace v8::internal; | 45 using namespace v8::internal; |
46 | 46 |
47 class StringResource8 : public v8::String::ExternalAsciiStringResource { | |
48 public: | |
49 StringResource8(const char* data, int length) | |
50 : data_(data), length_(length) { } | |
51 virtual size_t length() const { return length_; } | |
52 virtual const char* data() const { return data_; } | |
53 | |
54 private: | |
55 const char* data_; | |
56 int length_; | |
57 }; | |
58 | |
59 std::pair<TimeDelta, TimeDelta> RunBaselineParser( | 47 std::pair<TimeDelta, TimeDelta> RunBaselineParser( |
60 const char* fname, Encoding encoding, int repeat, v8::Isolate* isolate, | 48 const char* fname, Encoding encoding, int repeat, v8::Isolate* isolate, |
61 v8::Handle<v8::Context> context) { | 49 v8::Handle<v8::Context> context) { |
62 int length = 0; | 50 int length = 0; |
63 const byte* source = ReadFileAndRepeat(fname, &length, repeat); | 51 const byte* source = ReadFileAndRepeat(fname, &length, repeat); |
64 v8::Handle<v8::String> source_handle; | 52 v8::Handle<v8::String> source_handle; |
65 switch (encoding) { | 53 switch (encoding) { |
66 case UTF8: { | 54 case UTF8: { |
67 source_handle = v8::String::NewFromUtf8( | 55 source_handle = v8::String::NewFromUtf8( |
68 isolate, reinterpret_cast<const char*>(source)); | 56 isolate, reinterpret_cast<const char*>(source)); |
69 break; | 57 break; |
70 } | 58 } |
71 case UTF16: { | 59 case UTF16: { |
72 source_handle = v8::String::NewFromTwoByte( | 60 source_handle = v8::String::NewFromTwoByte( |
73 isolate, reinterpret_cast<const uint16_t*>(source), | 61 isolate, reinterpret_cast<const uint16_t*>(source), |
74 v8::String::kNormalString, length / 2); | 62 v8::String::kNormalString, length / 2); |
75 break; | 63 break; |
76 } | 64 } |
77 case LATIN1: { | 65 case LATIN1: { |
78 StringResource8* string_resource = | 66 source_handle = v8::String::NewFromOneByte(isolate, source); |
79 new StringResource8(reinterpret_cast<const char*>(source), length); | |
80 source_handle = v8::String::NewExternal(isolate, string_resource); | |
81 break; | 67 break; |
82 } | 68 } |
83 } | 69 } |
84 TimeDelta parse_time1, parse_time2; | 70 TimeDelta parse_time1, parse_time2; |
85 Handle<Script> script = Isolate::Current()->factory()->NewScript( | 71 Handle<Script> script = Isolate::Current()->factory()->NewScript( |
86 v8::Utils::OpenHandle(*source_handle)); | 72 v8::Utils::OpenHandle(*source_handle)); |
87 i::ScriptData* cached_data_impl = NULL; | 73 i::ScriptData* cached_data_impl = NULL; |
88 // First round of parsing (produce data to cache). | 74 // First round of parsing (produce data to cache). |
89 { | 75 { |
90 CompilationInfoWithZone info(script); | 76 CompilationInfoWithZone info(script); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 if (benchmark.empty()) benchmark = "Baseline"; | 148 if (benchmark.empty()) benchmark = "Baseline"; |
163 printf("%s(FirstParseRunTime): %.f ms\n", benchmark.c_str(), | 149 printf("%s(FirstParseRunTime): %.f ms\n", benchmark.c_str(), |
164 first_parse_total); | 150 first_parse_total); |
165 printf("%s(SecondParseRunTime): %.f ms\n", benchmark.c_str(), | 151 printf("%s(SecondParseRunTime): %.f ms\n", benchmark.c_str(), |
166 second_parse_total); | 152 second_parse_total); |
167 } | 153 } |
168 } | 154 } |
169 v8::V8::Dispose(); | 155 v8::V8::Dispose(); |
170 return 0; | 156 return 0; |
171 } | 157 } |
OLD | NEW |