Index: src/type-feedback-vector.cc |
diff --git a/src/type-feedback-vector.cc b/src/type-feedback-vector.cc |
index c808fb9bfefa5055a2e7a9ff21ed086f55f58c2d..b03e95d6eeb8b8b6d8880a131301539ee53212fb 100644 |
--- a/src/type-feedback-vector.cc |
+++ b/src/type-feedback-vector.cc |
@@ -66,10 +66,10 @@ Handle<TypeFeedbackMetadata> TypeFeedbackMetadata::New(Isolate* isolate, |
} |
#ifdef DEBUG |
for (int i = 0; i < slot_count;) { |
- FeedbackVectorSlotKind kind = spec->GetKind(i); |
+ FeedbackVectorSlotKind kind = spec->GetKind(FeedbackVectorSlot(i)); |
int entry_size = TypeFeedbackMetadata::GetSlotSize(kind); |
for (int j = 1; j < entry_size; j++) { |
- FeedbackVectorSlotKind kind = spec->GetKind(i + j); |
+ FeedbackVectorSlotKind kind = spec->GetKind(FeedbackVectorSlot(i + j)); |
DCHECK_EQ(FeedbackVectorSlotKind::INVALID, kind); |
} |
i += entry_size; |
@@ -87,8 +87,9 @@ Handle<TypeFeedbackMetadata> TypeFeedbackMetadata::New(Isolate* isolate, |
Handle<TypeFeedbackMetadata>::cast(array); |
for (int i = 0; i < slot_count; i++) { |
- FeedbackVectorSlotKind kind = spec->GetKind(i); |
- metadata->SetKind(FeedbackVectorSlot(i), kind); |
+ FeedbackVectorSlot slot(i); |
+ FeedbackVectorSlotKind kind = spec->GetKind(slot); |
+ metadata->SetKind(slot, kind); |
} |
// It's important that the TypeFeedbackMetadata have a COW map, since it's |
@@ -113,7 +114,7 @@ bool TypeFeedbackMetadata::SpecDiffersFrom( |
FeedbackVectorSlotKind kind = GetKind(slot); |
int entry_size = TypeFeedbackMetadata::GetSlotSize(kind); |
- if (kind != other_spec->GetKind(i)) { |
+ if (kind != other_spec->GetKind(slot)) { |
return true; |
} |
i += entry_size; |
@@ -152,10 +153,14 @@ const char* TypeFeedbackMetadata::Kind2String(FeedbackVectorSlotKind kind) { |
return "LOAD_GLOBAL_IC"; |
case FeedbackVectorSlotKind::KEYED_LOAD_IC: |
return "KEYED_LOAD_IC"; |
- case FeedbackVectorSlotKind::STORE_IC: |
- return "STORE_IC"; |
- case FeedbackVectorSlotKind::KEYED_STORE_IC: |
- return "KEYED_STORE_IC"; |
+ case FeedbackVectorSlotKind::STORE_SLOPPY_IC: |
+ return "STORE_SLOPPY_IC"; |
+ case FeedbackVectorSlotKind::STORE_STRICT_IC: |
+ return "STORE_STRICT_IC"; |
+ case FeedbackVectorSlotKind::KEYED_STORE_SLOPPY_IC: |
+ return "KEYED_STORE_SLOPPY_IC"; |
+ case FeedbackVectorSlotKind::KEYED_STORE_STRICT_IC: |
+ return "KEYED_STORE_STRICT_IC"; |
case FeedbackVectorSlotKind::INTERPRETER_BINARYOP_IC: |
return "INTERPRETER_BINARYOP_IC"; |
case FeedbackVectorSlotKind::INTERPRETER_COMPARE_IC: |
@@ -233,8 +238,10 @@ Handle<TypeFeedbackVector> TypeFeedbackVector::New( |
break; |
case FeedbackVectorSlotKind::LOAD_IC: |
case FeedbackVectorSlotKind::KEYED_LOAD_IC: |
- case FeedbackVectorSlotKind::STORE_IC: |
- case FeedbackVectorSlotKind::KEYED_STORE_IC: |
+ case FeedbackVectorSlotKind::STORE_SLOPPY_IC: |
+ case FeedbackVectorSlotKind::STORE_STRICT_IC: |
+ case FeedbackVectorSlotKind::KEYED_STORE_SLOPPY_IC: |
+ case FeedbackVectorSlotKind::KEYED_STORE_STRICT_IC: |
case FeedbackVectorSlotKind::STORE_DATA_PROPERTY_IN_LITERAL_IC: |
case FeedbackVectorSlotKind::GENERAL: |
value = *uninitialized_sentinel; |
@@ -311,12 +318,14 @@ void TypeFeedbackVector::ClearSlotsImpl(SharedFunctionInfo* shared, |
nexus.Clear(shared->code()); |
break; |
} |
- case FeedbackVectorSlotKind::STORE_IC: { |
+ case FeedbackVectorSlotKind::STORE_SLOPPY_IC: |
+ case FeedbackVectorSlotKind::STORE_STRICT_IC: { |
StoreICNexus nexus(this, slot); |
nexus.Clear(shared->code()); |
break; |
} |
- case FeedbackVectorSlotKind::KEYED_STORE_IC: { |
+ case FeedbackVectorSlotKind::KEYED_STORE_SLOPPY_IC: |
+ case FeedbackVectorSlotKind::KEYED_STORE_STRICT_IC: { |
KeyedStoreICNexus nexus(this, slot); |
nexus.Clear(shared->code()); |
break; |