Index: test/cctest/test-code-stub-assembler.cc |
diff --git a/test/cctest/test-code-stub-assembler.cc b/test/cctest/test-code-stub-assembler.cc |
index 37cb4d055d75180b30395aa47c574338eab7d534..7709f84678b1c09f2a880267f7bd6ba322a67435 100644 |
--- a/test/cctest/test-code-stub-assembler.cc |
+++ b/test/cctest/test-code-stub-assembler.cc |
@@ -1109,16 +1109,18 @@ |
const int kNumParams = 2; |
CodeStubAssemblerTester m(isolate, kNumParams); |
+ Code::Flags code_flags = |
+ Code::RemoveHolderFromFlags(Code::ComputeHandlerFlags(handler_kind)); |
{ |
Node* name = m.Parameter(0); |
Node* map = m.Parameter(1); |
- Node* primary_offset = m.StubCachePrimaryOffset(name, map); |
+ Node* primary_offset = m.StubCachePrimaryOffset(name, code_flags, map); |
Node* result; |
if (table == StubCache::kPrimary) { |
result = primary_offset; |
} else { |
CHECK_EQ(StubCache::kSecondary, table); |
- result = m.StubCacheSecondaryOffset(name, primary_offset); |
+ result = m.StubCacheSecondaryOffset(name, code_flags, primary_offset); |
} |
m.Return(m.SmiFromWord32(result)); |
} |
@@ -1161,12 +1163,13 @@ |
int expected_result; |
{ |
- int primary_offset = StubCache::PrimaryOffsetForTesting(*name, *map); |
+ int primary_offset = |
+ StubCache::PrimaryOffsetForTesting(*name, code_flags, *map); |
if (table == StubCache::kPrimary) { |
expected_result = primary_offset; |
} else { |
- expected_result = |
- StubCache::SecondaryOffsetForTesting(*name, primary_offset); |
+ expected_result = StubCache::SecondaryOffsetForTesting( |
+ *name, code_flags, primary_offset); |
} |
} |
Handle<Object> result = ft.Call(name, map).ToHandleChecked(); |
@@ -1214,6 +1217,9 @@ |
CodeStubAssemblerTester m(isolate, kNumParams); |
Code::Kind ic_kind = Code::LOAD_IC; |
+ Code::Flags flags_to_query = |
+ Code::RemoveHolderFromFlags(Code::ComputeHandlerFlags(ic_kind)); |
+ |
StubCache stub_cache(isolate, ic_kind); |
stub_cache.Clear(); |
@@ -1293,8 +1299,25 @@ |
// Generate some number of handlers. |
for (int i = 0; i < 30; i++) { |
+ Code::Kind code_kind; |
+ switch (rand_gen.NextInt(4)) { |
+ case 0: |
+ code_kind = Code::LOAD_IC; |
+ break; |
+ case 1: |
+ code_kind = Code::KEYED_LOAD_IC; |
+ break; |
+ case 2: |
+ code_kind = Code::STORE_IC; |
+ break; |
+ case 3: |
+ code_kind = Code::KEYED_STORE_IC; |
+ break; |
+ default: |
+ UNREACHABLE(); |
+ } |
Code::Flags flags = |
- Code::RemoveHolderFromFlags(Code::ComputeHandlerFlags(ic_kind)); |
+ Code::RemoveHolderFromFlags(Code::ComputeHandlerFlags(code_kind)); |
handlers.push_back(CreateCodeWithFlags(flags)); |
} |
@@ -1319,7 +1342,7 @@ |
int index = rand_gen.NextInt(); |
Handle<Name> name = names[index % names.size()]; |
Handle<JSObject> receiver = receivers[index % receivers.size()]; |
- Code* handler = stub_cache.Get(*name, receiver->map()); |
+ Code* handler = stub_cache.Get(*name, receiver->map(), flags_to_query); |
if (handler == nullptr) { |
queried_non_existing = true; |
} else { |
@@ -1335,7 +1358,7 @@ |
int index2 = rand_gen.NextInt(); |
Handle<Name> name = names[index1 % names.size()]; |
Handle<JSObject> receiver = receivers[index2 % receivers.size()]; |
- Code* handler = stub_cache.Get(*name, receiver->map()); |
+ Code* handler = stub_cache.Get(*name, receiver->map(), flags_to_query); |
if (handler == nullptr) { |
queried_non_existing = true; |
} else { |