Commit d1478f4e authored by mvstanton's avatar mvstanton Committed by Commit bot

VectorICs: Address test-heap TODOS

Tests for non-clearing of weak cells in LoadICs weren't running when
vector ICs are enabled.

R=ulan@chromium.org
BUG=

Review URL: https://codereview.chromium.org/1032843002

Cr-Commit-Position: refs/heads/master@{#27435}
parent 93a290d0
...@@ -4596,17 +4596,33 @@ Handle<JSFunction> GetFunctionByName(Isolate* isolate, const char* name) { ...@@ -4596,17 +4596,33 @@ Handle<JSFunction> GetFunctionByName(Isolate* isolate, const char* name) {
} }
void CheckIC(Code* code, Code::Kind kind, InlineCacheState state) { void CheckIC(Code* code, Code::Kind kind, SharedFunctionInfo* shared,
Code* ic = FindFirstIC(code, kind); int ic_slot, InlineCacheState state) {
CHECK(ic->is_inline_cache_stub()); if (FLAG_vector_ics &&
CHECK(ic->ic_state() == state); (kind == Code::LOAD_IC || kind == Code::KEYED_LOAD_IC ||
kind == Code::CALL_IC)) {
TypeFeedbackVector* vector = shared->feedback_vector();
FeedbackVectorICSlot slot(ic_slot);
if (kind == Code::LOAD_IC) {
LoadICNexus nexus(vector, slot);
CHECK_EQ(nexus.StateFromFeedback(), state);
} else if (kind == Code::KEYED_LOAD_IC) {
KeyedLoadICNexus nexus(vector, slot);
CHECK_EQ(nexus.StateFromFeedback(), state);
} else if (kind == Code::CALL_IC) {
CallICNexus nexus(vector, slot);
CHECK_EQ(nexus.StateFromFeedback(), state);
}
} else {
Code* ic = FindFirstIC(code, kind);
CHECK(ic->is_inline_cache_stub());
CHECK(ic->ic_state() == state);
}
} }
TEST(MonomorphicStaysMonomorphicAfterGC) { TEST(MonomorphicStaysMonomorphicAfterGC) {
if (FLAG_always_opt) return; if (FLAG_always_opt) return;
// TODO(mvstanton): vector ics need weak support!
if (FLAG_vector_ics) return;
CcTest::InitializeVM(); CcTest::InitializeVM();
Isolate* isolate = CcTest::i_isolate(); Isolate* isolate = CcTest::i_isolate();
Heap* heap = isolate->heap(); Heap* heap = isolate->heap();
...@@ -4629,19 +4645,17 @@ TEST(MonomorphicStaysMonomorphicAfterGC) { ...@@ -4629,19 +4645,17 @@ TEST(MonomorphicStaysMonomorphicAfterGC) {
CompileRun("(testIC())"); CompileRun("(testIC())");
} }
heap->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask); heap->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
CheckIC(loadIC->code(), Code::LOAD_IC, MONOMORPHIC); CheckIC(loadIC->code(), Code::LOAD_IC, loadIC->shared(), 0, MONOMORPHIC);
{ {
v8::HandleScope scope(CcTest::isolate()); v8::HandleScope scope(CcTest::isolate());
CompileRun("(testIC())"); CompileRun("(testIC())");
} }
CheckIC(loadIC->code(), Code::LOAD_IC, MONOMORPHIC); CheckIC(loadIC->code(), Code::LOAD_IC, loadIC->shared(), 0, MONOMORPHIC);
} }
TEST(PolymorphicStaysPolymorphicAfterGC) { TEST(PolymorphicStaysPolymorphicAfterGC) {
if (FLAG_always_opt) return; if (FLAG_always_opt) return;
// TODO(mvstanton): vector ics need weak support!
if (FLAG_vector_ics) return;
CcTest::InitializeVM(); CcTest::InitializeVM();
Isolate* isolate = CcTest::i_isolate(); Isolate* isolate = CcTest::i_isolate();
Heap* heap = isolate->heap(); Heap* heap = isolate->heap();
...@@ -4667,12 +4681,12 @@ TEST(PolymorphicStaysPolymorphicAfterGC) { ...@@ -4667,12 +4681,12 @@ TEST(PolymorphicStaysPolymorphicAfterGC) {
CompileRun("(testIC())"); CompileRun("(testIC())");
} }
heap->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask); heap->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
CheckIC(loadIC->code(), Code::LOAD_IC, POLYMORPHIC); CheckIC(loadIC->code(), Code::LOAD_IC, loadIC->shared(), 0, POLYMORPHIC);
{ {
v8::HandleScope scope(CcTest::isolate()); v8::HandleScope scope(CcTest::isolate());
CompileRun("(testIC())"); CompileRun("(testIC())");
} }
CheckIC(loadIC->code(), Code::LOAD_IC, POLYMORPHIC); CheckIC(loadIC->code(), Code::LOAD_IC, loadIC->shared(), 0, POLYMORPHIC);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment