diff options
Diffstat (limited to 'deps/v8/src/objects/feedback-vector.cc')
-rw-r--r-- | deps/v8/src/objects/feedback-vector.cc | 38 |
1 files changed, 7 insertions, 31 deletions
diff --git a/deps/v8/src/objects/feedback-vector.cc b/deps/v8/src/objects/feedback-vector.cc index 2fbc48a95e..4fe75ab325 100644 --- a/deps/v8/src/objects/feedback-vector.cc +++ b/deps/v8/src/objects/feedback-vector.cc @@ -52,7 +52,6 @@ static bool IsPropertyNameFeedback(MaybeObject feedback) { Symbol symbol = Symbol::cast(heap_object); ReadOnlyRoots roots = symbol.GetReadOnlyRoots(); return symbol != roots.uninitialized_symbol() && - symbol != roots.premonomorphic_symbol() && symbol != roots.megamorphic_symbol(); } @@ -233,8 +232,8 @@ Handle<FeedbackVector> FeedbackVector::New( const int slot_count = shared->feedback_metadata().slot_count(); - Handle<FeedbackVector> vector = factory->NewFeedbackVector( - shared, closure_feedback_cell_array, AllocationType::kOld); + Handle<FeedbackVector> vector = + factory->NewFeedbackVector(shared, closure_feedback_cell_array); DCHECK_EQ(vector->length(), slot_count); @@ -524,12 +523,6 @@ bool FeedbackNexus::Clear() { return feedback_updated; } -void FeedbackNexus::ConfigurePremonomorphic(Handle<Map> receiver_map) { - SetFeedback(*FeedbackVector::PremonomorphicSentinel(GetIsolate()), - SKIP_WRITE_BARRIER); - SetFeedbackExtra(HeapObjectReference::Weak(*receiver_map)); -} - bool FeedbackNexus::ConfigureMegamorphic() { DisallowHeapAllocation no_gc; Isolate* isolate = GetIsolate(); @@ -585,13 +578,6 @@ InlineCacheState FeedbackNexus::ic_state() const { case FeedbackSlotKind::kLoadGlobalInsideTypeof: { if (feedback->IsSmi()) return MONOMORPHIC; - if (feedback == MaybeObject::FromObject( - *FeedbackVector::PremonomorphicSentinel(isolate))) { - DCHECK(kind() == FeedbackSlotKind::kStoreGlobalSloppy || - kind() == FeedbackSlotKind::kStoreGlobalStrict); - return PREMONOMORPHIC; - } - DCHECK(feedback->IsWeakOrCleared()); MaybeObject extra = GetFeedbackExtra(); if (!feedback->IsCleared() || @@ -619,10 +605,6 @@ InlineCacheState FeedbackNexus::ic_state() const { *FeedbackVector::MegamorphicSentinel(isolate))) { return MEGAMORPHIC; } - if (feedback == MaybeObject::FromObject( - *FeedbackVector::PremonomorphicSentinel(isolate))) { - return PREMONOMORPHIC; - } if (feedback->IsWeakOrCleared()) { // Don't check if the map is cleared. return MONOMORPHIC; @@ -974,14 +956,6 @@ int FeedbackNexus::ExtractMaps(MapHandles* maps) const { Map map = Map::cast(heap_object); maps->push_back(handle(map, isolate)); return 1; - } else if (feedback->GetHeapObjectIfStrong(&heap_object) && - heap_object == - heap_object.GetReadOnlyRoots().premonomorphic_symbol()) { - if (GetFeedbackExtra()->GetHeapObjectIfWeak(&heap_object)) { - Map map = Map::cast(heap_object); - maps->push_back(handle(map, isolate)); - return 1; - } } return 0; @@ -1203,9 +1177,11 @@ KeyedAccessStoreMode FeedbackNexus::GetKeyedAccessStoreMode() const { handler = handle(Code::cast(data_handler->smi_handler()), vector().GetIsolate()); } else if (maybe_code_handler.object()->IsSmi()) { - // Skip proxy handlers. - DCHECK_EQ(*(maybe_code_handler.object()), - *StoreHandler::StoreProxy(GetIsolate())); + // Skip proxy handlers and the slow handler. + DCHECK(*(maybe_code_handler.object()) == + *StoreHandler::StoreProxy(GetIsolate()) || + *(maybe_code_handler.object()) == + *StoreHandler::StoreSlow(GetIsolate())); continue; } else { // Element store without prototype chain check. |