Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Unified Diff: test/cctest/test-api.cc

Side-by-side diff isn't available for this file because of its large size.
Issue 2551353003: [stubs] Ensure that the stubs are recompiled in respective tests. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
Download patch
« no previous file with comments | « src/code-stubs.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/test-api.cc
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
index 96ee17e964cdb0fda1a01ce5a41d3dd87955e989..487c1a15750535602eabd3fb52724aee040a90ea 100644
--- a/test/cctest/test-api.cc
+++ b/test/cctest/test-api.cc
@@ -21746,6 +21746,39 @@ int* LookupCounter(const char* name) {
return NULL;
}
+template <typename Stub, typename... Args>
+void Recompile(Args... args) {
+ Stub stub(args...);
+ stub.DeleteStubFromCacheForTesting();
+ stub.GetCode();
+}
+
+void RecompileICStubs(i::Isolate* isolate) {
+ using namespace i;
+ Recompile<LoadGlobalICStub>(isolate, LoadGlobalICState(NOT_INSIDE_TYPEOF));
+ Recompile<LoadGlobalICStub>(isolate, LoadGlobalICState(INSIDE_TYPEOF));
+ Recompile<LoadGlobalICTrampolineStub>(isolate,
+ LoadGlobalICState(NOT_INSIDE_TYPEOF));
+ Recompile<LoadGlobalICTrampolineStub>(isolate,
+ LoadGlobalICState(INSIDE_TYPEOF));
+
+ Recompile<LoadICStub>(isolate);
+ Recompile<LoadICTrampolineStub>(isolate);
+
+ Recompile<KeyedLoadICTFStub>(isolate);
+ Recompile<KeyedLoadICTrampolineTFStub>(isolate);
+
+ Recompile<StoreICStub>(isolate, StoreICState(SLOPPY));
+ Recompile<StoreICTrampolineStub>(isolate, StoreICState(SLOPPY));
+ Recompile<StoreICStub>(isolate, StoreICState(STRICT));
+ Recompile<StoreICTrampolineStub>(isolate, StoreICState(STRICT));
+
+ Recompile<KeyedStoreICTFStub>(isolate, StoreICState(SLOPPY));
+ Recompile<KeyedStoreICTrampolineTFStub>(isolate, StoreICState(SLOPPY));
+ Recompile<KeyedStoreICTFStub>(isolate, StoreICState(STRICT));
+ Recompile<KeyedStoreICTrampolineTFStub>(isolate, StoreICState(STRICT));
+}
+
} // namespace
#ifdef ENABLE_DISASSEMBLER
@@ -21779,46 +21812,35 @@ const char* kMegamorphicTestProgram =
"}\n";
void TestStubCache(bool primary) {
+ using namespace i;
+
// The test does not work with interpreter because bytecode handlers taken
// from the snapshot already refer to ICs with disabled counters and there
// is no way to trigger bytecode handlers recompilation.
- if (i::FLAG_ignition || i::FLAG_turbo) return;
+ if (FLAG_ignition || FLAG_turbo) return;
- i::FLAG_native_code_counters = true;
+ FLAG_native_code_counters = true;
if (primary) {
- i::FLAG_test_primary_stub_cache = true;
+ FLAG_test_primary_stub_cache = true;
} else {
- i::FLAG_test_secondary_stub_cache = true;
+ FLAG_test_secondary_stub_cache = true;
}
- i::FLAG_crankshaft = false;
- i::FLAG_turbo = false;
+ FLAG_crankshaft = false;
+
v8::Isolate::CreateParams create_params;
create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
create_params.counter_lookup_callback = LookupCounter;
v8::Isolate* isolate = v8::Isolate::New(create_params);
+ Isolate* i_isolate = reinterpret_cast<Isolate*>(isolate);
{
v8::Isolate::Scope isolate_scope(isolate);
LocalContext env(isolate);
v8::HandleScope scope(isolate);
- {
- // Enforce recompilation of IC stubs that access megamorphic stub cache
- // to respect enabled native code counters and stub cache test flags.
- i::CodeStub::Major code_stub_keys[] = {
- i::CodeStub::LoadIC, i::CodeStub::LoadICTrampoline,
- i::CodeStub::KeyedLoadICTF, i::CodeStub::KeyedLoadICTrampolineTF,
- i::CodeStub::StoreIC, i::CodeStub::StoreICTrampoline,
- i::CodeStub::KeyedStoreICTF, i::CodeStub::KeyedStoreICTrampolineTF,
- };
- i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
- i::Heap* heap = i_isolate->heap();
- i::Handle<i::UnseededNumberDictionary> dict(heap->code_stubs());
- for (size_t i = 0; i < arraysize(code_stub_keys); i++) {
- dict = i::UnseededNumberDictionary::DeleteKey(dict, code_stub_keys[i]);
- }
- heap->SetRootCodeStubs(*dict);
- }
+ // Enforce recompilation of IC stubs that access megamorphic stub cache
+ // to respect enabled native code counters and stub cache test flags.
+ RecompileICStubs(i_isolate);
int initial_probes = probes_counter;
int initial_misses = misses_counter;
@@ -22711,41 +22733,30 @@ TEST(AccessCheckThrows) {
}
TEST(AccessCheckInIC) {
+ using namespace i;
+
// The test does not work with interpreter because bytecode handlers taken
// from the snapshot already refer to ICs with disabled counters and there
// is no way to trigger bytecode handlers recompilation.
- if (i::FLAG_ignition || i::FLAG_turbo) return;
+ if (FLAG_ignition || FLAG_turbo) return;
+
+ FLAG_native_code_counters = true;
+ FLAG_crankshaft = false;
- i::FLAG_native_code_counters = true;
- i::FLAG_crankshaft = false;
- i::FLAG_turbo = false;
v8::Isolate::CreateParams create_params;
create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
create_params.counter_lookup_callback = LookupCounter;
v8::Isolate* isolate = v8::Isolate::New(create_params);
+ Isolate* i_isolate = reinterpret_cast<Isolate*>(isolate);
{
v8::Isolate::Scope isolate_scope(isolate);
LocalContext env(isolate);
v8::HandleScope scope(isolate);
- {
- // Enforce recompilation of IC stubs that access megamorphic stub cache
- // to respect enabled native code counters and stub cache test flags.
- i::CodeStub::Major code_stub_keys[] = {
- i::CodeStub::LoadIC, i::CodeStub::LoadICTrampoline,
- i::CodeStub::KeyedLoadICTF, i::CodeStub::KeyedLoadICTrampolineTF,
- i::CodeStub::StoreIC, i::CodeStub::StoreICTrampoline,
- i::CodeStub::KeyedStoreICTF, i::CodeStub::KeyedStoreICTrampolineTF,
- };
- i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
- i::Heap* heap = i_isolate->heap();
- i::Handle<i::UnseededNumberDictionary> dict(heap->code_stubs());
- for (size_t i = 0; i < arraysize(code_stub_keys); i++) {
- dict = i::UnseededNumberDictionary::DeleteKey(dict, code_stub_keys[i]);
- }
- heap->SetRootCodeStubs(*dict);
- }
+ // Enforce recompilation of IC stubs that access megamorphic stub cache
+ // to respect enabled native code counters and stub cache test flags.
+ RecompileICStubs(i_isolate);
// Create an ObjectTemplate for global objects and install access
// check callbacks that will block access.
« no previous file with comments | « src/code-stubs.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698