| 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 27 matching lines...) Expand all Loading... |
| 38 #include "src/compiler.h" | 38 #include "src/compiler.h" |
| 39 #include "src/parsing/scanner-character-streams.h" | 39 #include "src/parsing/scanner-character-streams.h" |
| 40 #include "src/parsing/parser.h" | 40 #include "src/parsing/parser.h" |
| 41 #include "src/parsing/preparse-data-format.h" | 41 #include "src/parsing/preparse-data-format.h" |
| 42 #include "src/parsing/preparse-data.h" | 42 #include "src/parsing/preparse-data.h" |
| 43 #include "src/parsing/preparser.h" | 43 #include "src/parsing/preparser.h" |
| 44 #include "tools/shell-utils.h" | 44 #include "tools/shell-utils.h" |
| 45 | 45 |
| 46 using namespace v8::internal; | 46 using namespace v8::internal; |
| 47 | 47 |
| 48 class ArrayBufferAllocator : public v8::ArrayBuffer::Allocator { | |
| 49 public: | |
| 50 virtual void* Allocate(size_t length) { | |
| 51 void* data = AllocateUninitialized(length); | |
| 52 return data == NULL ? data : memset(data, 0, length); | |
| 53 } | |
| 54 virtual void* AllocateUninitialized(size_t length) { return malloc(length); } | |
| 55 virtual void Free(void* data, size_t) { free(data); } | |
| 56 }; | |
| 57 | |
| 58 class StringResource8 : public v8::String::ExternalOneByteStringResource { | 48 class StringResource8 : public v8::String::ExternalOneByteStringResource { |
| 59 public: | 49 public: |
| 60 StringResource8(const char* data, int length) | 50 StringResource8(const char* data, int length) |
| 61 : data_(data), length_(length) { } | 51 : data_(data), length_(length) { } |
| 62 virtual size_t length() const { return length_; } | 52 virtual size_t length() const { return length_; } |
| 63 virtual const char* data() const { return data_; } | 53 virtual const char* data() const { return data_; } |
| 64 | 54 |
| 65 private: | 55 private: |
| 66 const char* data_; | 56 const char* data_; |
| 67 int length_; | 57 int length_; |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 161 encoding = UTF16; | 151 encoding = UTF16; |
| 162 } else if (strncmp(argv[i], "--benchmark=", 12) == 0) { | 152 } else if (strncmp(argv[i], "--benchmark=", 12) == 0) { |
| 163 benchmark = std::string(argv[i]).substr(12); | 153 benchmark = std::string(argv[i]).substr(12); |
| 164 } else if (strncmp(argv[i], "--repeat=", 9) == 0) { | 154 } else if (strncmp(argv[i], "--repeat=", 9) == 0) { |
| 165 std::string repeat_str = std::string(argv[i]).substr(9); | 155 std::string repeat_str = std::string(argv[i]).substr(9); |
| 166 repeat = atoi(repeat_str.c_str()); | 156 repeat = atoi(repeat_str.c_str()); |
| 167 } else if (i > 0 && argv[i][0] != '-') { | 157 } else if (i > 0 && argv[i][0] != '-') { |
| 168 fnames.push_back(std::string(argv[i])); | 158 fnames.push_back(std::string(argv[i])); |
| 169 } | 159 } |
| 170 } | 160 } |
| 171 ArrayBufferAllocator array_buffer_allocator; | |
| 172 v8::Isolate::CreateParams create_params; | 161 v8::Isolate::CreateParams create_params; |
| 173 create_params.array_buffer_allocator = &array_buffer_allocator; | 162 create_params.array_buffer_allocator = |
| 163 v8::ArrayBuffer::Allocator::NewDefaultAllocator(); |
| 174 v8::Isolate* isolate = v8::Isolate::New(create_params); | 164 v8::Isolate* isolate = v8::Isolate::New(create_params); |
| 175 { | 165 { |
| 176 v8::Isolate::Scope isolate_scope(isolate); | 166 v8::Isolate::Scope isolate_scope(isolate); |
| 177 v8::HandleScope handle_scope(isolate); | 167 v8::HandleScope handle_scope(isolate); |
| 178 v8::Local<v8::ObjectTemplate> global = v8::ObjectTemplate::New(isolate); | 168 v8::Local<v8::ObjectTemplate> global = v8::ObjectTemplate::New(isolate); |
| 179 v8::Local<v8::Context> context = v8::Context::New(isolate, NULL, global); | 169 v8::Local<v8::Context> context = v8::Context::New(isolate, NULL, global); |
| 180 DCHECK(!context.IsEmpty()); | 170 DCHECK(!context.IsEmpty()); |
| 181 { | 171 { |
| 182 v8::Context::Scope scope(context); | 172 v8::Context::Scope scope(context); |
| 183 double first_parse_total = 0; | 173 double first_parse_total = 0; |
| 184 double second_parse_total = 0; | 174 double second_parse_total = 0; |
| 185 for (size_t i = 0; i < fnames.size(); i++) { | 175 for (size_t i = 0; i < fnames.size(); i++) { |
| 186 std::pair<v8::base::TimeDelta, v8::base::TimeDelta> time = | 176 std::pair<v8::base::TimeDelta, v8::base::TimeDelta> time = |
| 187 RunBaselineParser(fnames[i].c_str(), encoding, repeat, isolate, | 177 RunBaselineParser(fnames[i].c_str(), encoding, repeat, isolate, |
| 188 context); | 178 context); |
| 189 first_parse_total += time.first.InMillisecondsF(); | 179 first_parse_total += time.first.InMillisecondsF(); |
| 190 second_parse_total += time.second.InMillisecondsF(); | 180 second_parse_total += time.second.InMillisecondsF(); |
| 191 } | 181 } |
| 192 if (benchmark.empty()) benchmark = "Baseline"; | 182 if (benchmark.empty()) benchmark = "Baseline"; |
| 193 printf("%s(FirstParseRunTime): %.f ms\n", benchmark.c_str(), | 183 printf("%s(FirstParseRunTime): %.f ms\n", benchmark.c_str(), |
| 194 first_parse_total); | 184 first_parse_total); |
| 195 printf("%s(SecondParseRunTime): %.f ms\n", benchmark.c_str(), | 185 printf("%s(SecondParseRunTime): %.f ms\n", benchmark.c_str(), |
| 196 second_parse_total); | 186 second_parse_total); |
| 197 } | 187 } |
| 198 } | 188 } |
| 199 v8::V8::Dispose(); | 189 v8::V8::Dispose(); |
| 200 v8::V8::ShutdownPlatform(); | 190 v8::V8::ShutdownPlatform(); |
| 201 delete platform; | 191 delete platform; |
| 192 delete create_params.array_buffer_allocator; |
| 202 return 0; | 193 return 0; |
| 203 } | 194 } |
| OLD | NEW |