summaryrefslogtreecommitdiff
path: root/deps/v8/src/objects/feedback-vector.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/objects/feedback-vector.cc')
-rw-r--r--deps/v8/src/objects/feedback-vector.cc38
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.