| 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 |