| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 23 matching lines...) Expand all Loading... |
| 34 | 34 |
| 35 #include "v8.h" | 35 #include "v8.h" |
| 36 | 36 |
| 37 #include "api.h" | 37 #include "api.h" |
| 38 #include "factory.h" | 38 #include "factory.h" |
| 39 #include "objects.h" | 39 #include "objects.h" |
| 40 #include "cctest.h" | 40 #include "cctest.h" |
| 41 #include "zone-inl.h" | 41 #include "zone-inl.h" |
| 42 | 42 |
| 43 // Adapted from http://en.wikipedia.org/wiki/Multiply-with-carry | 43 // Adapted from http://en.wikipedia.org/wiki/Multiply-with-carry |
| 44 class RandomNumberGenerator { | 44 class MyRandomNumberGenerator { |
| 45 public: | 45 public: |
| 46 RandomNumberGenerator() { | 46 MyRandomNumberGenerator() { |
| 47 init(); | 47 init(); |
| 48 } | 48 } |
| 49 | 49 |
| 50 void init(uint32_t seed = 0x5688c73e) { | 50 void init(uint32_t seed = 0x5688c73e) { |
| 51 static const uint32_t phi = 0x9e3779b9; | 51 static const uint32_t phi = 0x9e3779b9; |
| 52 c = 362436; | 52 c = 362436; |
| 53 i = kQSize-1; | 53 i = kQSize-1; |
| 54 Q[0] = seed; | 54 Q[0] = seed; |
| 55 Q[1] = seed + phi; | 55 Q[1] = seed + phi; |
| 56 Q[2] = seed + phi + phi; | 56 Q[2] = seed + phi + phi; |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 | 126 |
| 127 private: | 127 private: |
| 128 const char* data_; | 128 const char* data_; |
| 129 size_t length_; | 129 size_t length_; |
| 130 }; | 130 }; |
| 131 | 131 |
| 132 | 132 |
| 133 static void InitializeBuildingBlocks(Handle<String>* building_blocks, | 133 static void InitializeBuildingBlocks(Handle<String>* building_blocks, |
| 134 int bb_length, | 134 int bb_length, |
| 135 bool long_blocks, | 135 bool long_blocks, |
| 136 RandomNumberGenerator* rng, | 136 MyRandomNumberGenerator* rng, |
| 137 Zone* zone) { | 137 Zone* zone) { |
| 138 // A list of pointers that we don't have any interest in cleaning up. | 138 // A list of pointers that we don't have any interest in cleaning up. |
| 139 // If they are reachable from a root then leak detection won't complain. | 139 // If they are reachable from a root then leak detection won't complain. |
| 140 Isolate* isolate = Isolate::Current(); | 140 Isolate* isolate = Isolate::Current(); |
| 141 Factory* factory = isolate->factory(); | 141 Factory* factory = isolate->factory(); |
| 142 for (int i = 0; i < bb_length; i++) { | 142 for (int i = 0; i < bb_length; i++) { |
| 143 int len = rng->next(16); | 143 int len = rng->next(16); |
| 144 int slice_head_chars = 0; | 144 int slice_head_chars = 0; |
| 145 int slice_tail_chars = 0; | 145 int slice_tail_chars = 0; |
| 146 int slice_depth = 0; | 146 int slice_depth = 0; |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 269 inline Handle<String> block(uint32_t offset); | 269 inline Handle<String> block(uint32_t offset); |
| 270 // Input variables. | 270 // Input variables. |
| 271 double early_termination_threshold_; | 271 double early_termination_threshold_; |
| 272 double leftness_; | 272 double leftness_; |
| 273 double rightness_; | 273 double rightness_; |
| 274 double empty_leaf_threshold_; | 274 double empty_leaf_threshold_; |
| 275 unsigned max_leaves_; | 275 unsigned max_leaves_; |
| 276 // Cached data. | 276 // Cached data. |
| 277 Handle<String> building_blocks_[kNumberOfBuildingBlocks]; | 277 Handle<String> building_blocks_[kNumberOfBuildingBlocks]; |
| 278 String* empty_string_; | 278 String* empty_string_; |
| 279 RandomNumberGenerator rng_; | 279 MyRandomNumberGenerator rng_; |
| 280 // Stats. | 280 // Stats. |
| 281 ConsStringStats stats_; | 281 ConsStringStats stats_; |
| 282 unsigned early_terminations_; | 282 unsigned early_terminations_; |
| 283 private: | 283 private: |
| 284 DISALLOW_COPY_AND_ASSIGN(ConsStringGenerationData); | 284 DISALLOW_COPY_AND_ASSIGN(ConsStringGenerationData); |
| 285 }; | 285 }; |
| 286 | 286 |
| 287 | 287 |
| 288 ConsStringGenerationData::ConsStringGenerationData(bool long_blocks, | 288 ConsStringGenerationData::ConsStringGenerationData(bool long_blocks, |
| 289 Zone* zone) { | 289 Zone* zone) { |
| (...skipping 1059 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1349 CheckCanonicalEquivalence(c, test); | 1349 CheckCanonicalEquivalence(c, test); |
| 1350 continue; | 1350 continue; |
| 1351 } | 1351 } |
| 1352 if (upper != c && lower != c) { | 1352 if (upper != c && lower != c) { |
| 1353 CheckCanonicalEquivalence(c, test); | 1353 CheckCanonicalEquivalence(c, test); |
| 1354 continue; | 1354 continue; |
| 1355 } | 1355 } |
| 1356 CHECK_EQ(Min(upper, lower), test); | 1356 CHECK_EQ(Min(upper, lower), test); |
| 1357 } | 1357 } |
| 1358 } | 1358 } |
| OLD | NEW |