| OLD | NEW | 
|---|
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "src/base/utils/random-number-generator.h" | 5 #include "src/base/utils/random-number-generator.h" | 
| 6 #include "src/code-factory.h" | 6 #include "src/code-factory.h" | 
| 7 #include "src/code-stub-assembler.h" | 7 #include "src/code-stub-assembler.h" | 
| 8 #include "src/compiler/node.h" | 8 #include "src/compiler/node.h" | 
| 9 #include "src/ic/stub-cache.h" | 9 #include "src/ic/stub-cache.h" | 
| 10 #include "src/isolate.h" | 10 #include "src/isolate.h" | 
| (...skipping 1328 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1339     stub_cache.Set(*name, receiver->map(), *handler); | 1339     stub_cache.Set(*name, receiver->map(), *handler); | 
| 1340   } | 1340   } | 
| 1341 | 1341 | 
| 1342   // Perform some queries. | 1342   // Perform some queries. | 
| 1343   bool queried_existing = false; | 1343   bool queried_existing = false; | 
| 1344   bool queried_non_existing = false; | 1344   bool queried_non_existing = false; | 
| 1345   for (int i = 0; i < N; i++) { | 1345   for (int i = 0; i < N; i++) { | 
| 1346     int index = rand_gen.NextInt(); | 1346     int index = rand_gen.NextInt(); | 
| 1347     Handle<Name> name = names[index % names.size()]; | 1347     Handle<Name> name = names[index % names.size()]; | 
| 1348     Handle<JSObject> receiver = receivers[index % receivers.size()]; | 1348     Handle<JSObject> receiver = receivers[index % receivers.size()]; | 
| 1349     Code* handler = stub_cache.Get(*name, receiver->map()); | 1349     Object* handler = stub_cache.Get(*name, receiver->map()); | 
| 1350     if (handler == nullptr) { | 1350     if (handler == nullptr) { | 
| 1351       queried_non_existing = true; | 1351       queried_non_existing = true; | 
| 1352     } else { | 1352     } else { | 
| 1353       queried_existing = true; | 1353       queried_existing = true; | 
| 1354     } | 1354     } | 
| 1355 | 1355 | 
| 1356     Handle<Code> expected_handler(handler, isolate); | 1356     Handle<Object> expected_handler(handler, isolate); | 
| 1357     ft.CheckTrue(receiver, name, expected_handler); | 1357     ft.CheckTrue(receiver, name, expected_handler); | 
| 1358   } | 1358   } | 
| 1359 | 1359 | 
| 1360   for (int i = 0; i < N; i++) { | 1360   for (int i = 0; i < N; i++) { | 
| 1361     int index1 = rand_gen.NextInt(); | 1361     int index1 = rand_gen.NextInt(); | 
| 1362     int index2 = rand_gen.NextInt(); | 1362     int index2 = rand_gen.NextInt(); | 
| 1363     Handle<Name> name = names[index1 % names.size()]; | 1363     Handle<Name> name = names[index1 % names.size()]; | 
| 1364     Handle<JSObject> receiver = receivers[index2 % receivers.size()]; | 1364     Handle<JSObject> receiver = receivers[index2 % receivers.size()]; | 
| 1365     Code* handler = stub_cache.Get(*name, receiver->map()); | 1365     Object* handler = stub_cache.Get(*name, receiver->map()); | 
| 1366     if (handler == nullptr) { | 1366     if (handler == nullptr) { | 
| 1367       queried_non_existing = true; | 1367       queried_non_existing = true; | 
| 1368     } else { | 1368     } else { | 
| 1369       queried_existing = true; | 1369       queried_existing = true; | 
| 1370     } | 1370     } | 
| 1371 | 1371 | 
| 1372     Handle<Code> expected_handler(handler, isolate); | 1372     Handle<Object> expected_handler(handler, isolate); | 
| 1373     ft.CheckTrue(receiver, name, expected_handler); | 1373     ft.CheckTrue(receiver, name, expected_handler); | 
| 1374   } | 1374   } | 
| 1375   // Ensure we performed both kind of queries. | 1375   // Ensure we performed both kind of queries. | 
| 1376   CHECK(queried_existing && queried_non_existing); | 1376   CHECK(queried_existing && queried_non_existing); | 
| 1377 } | 1377 } | 
| 1378 | 1378 | 
| 1379 TEST(GotoIfException) { | 1379 TEST(GotoIfException) { | 
| 1380   typedef CodeStubAssembler::Label Label; | 1380   typedef CodeStubAssembler::Label Label; | 
| 1381   typedef CodeStubAssembler::Variable Variable; | 1381   typedef CodeStubAssembler::Variable Variable; | 
| 1382   Isolate* isolate(CcTest::InitIsolateOnce()); | 1382   Isolate* isolate(CcTest::InitIsolateOnce()); | 
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1504 | 1504 | 
| 1505   Handle<Object> constructor = | 1505   Handle<Object> constructor = | 
| 1506       Object::GetPropertyOrElement(result, | 1506       Object::GetPropertyOrElement(result, | 
| 1507                                    isolate->factory()->constructor_string()) | 1507                                    isolate->factory()->constructor_string()) | 
| 1508           .ToHandleChecked(); | 1508           .ToHandleChecked(); | 
| 1509   CHECK(constructor->SameValue(*isolate->type_error_function())); | 1509   CHECK(constructor->SameValue(*isolate->type_error_function())); | 
| 1510 } | 1510 } | 
| 1511 | 1511 | 
| 1512 }  // namespace internal | 1512 }  // namespace internal | 
| 1513 }  // namespace v8 | 1513 }  // namespace v8 | 
| OLD | NEW | 
|---|