diff options
Diffstat (limited to 'chromium/v8/src/objects/feedback-vector.cc')
-rw-r--r-- | chromium/v8/src/objects/feedback-vector.cc | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/chromium/v8/src/objects/feedback-vector.cc b/chromium/v8/src/objects/feedback-vector.cc index 4f4826eab36..2fbc48a95ed 100644 --- a/chromium/v8/src/objects/feedback-vector.cc +++ b/chromium/v8/src/objects/feedback-vector.cc @@ -887,8 +887,7 @@ float FeedbackNexus::ComputeCallFrequency() { double const invocation_count = vector().invocation_count(); double const call_count = GetCallCount(); - if (invocation_count == 0) { - // Prevent division by 0. + if (invocation_count == 0.0) { // Prevent division by 0. return 0.0f; } return static_cast<float>(call_count / invocation_count); @@ -1094,6 +1093,12 @@ Name FeedbackNexus::GetName() const { return Name::cast(feedback->GetHeapObjectAssumeStrong()); } } + if (IsStoreDataPropertyInLiteralKind(kind())) { + MaybeObject extra = GetFeedbackExtra(); + if (IsPropertyNameFeedback(extra)) { + return Name::cast(extra->GetHeapObjectAssumeStrong()); + } + } return Name(); } @@ -1180,7 +1185,8 @@ KeyedAccessStoreMode KeyedAccessStoreModeForBuiltin(int builtin_index) { } // namespace KeyedAccessStoreMode FeedbackNexus::GetKeyedAccessStoreMode() const { - DCHECK(IsKeyedStoreICKind(kind()) || IsStoreInArrayLiteralICKind(kind())); + DCHECK(IsKeyedStoreICKind(kind()) || IsStoreInArrayLiteralICKind(kind()) || + IsStoreDataPropertyInLiteralKind(kind())); KeyedAccessStoreMode mode = STANDARD_STORE; MapHandles maps; MaybeObjectHandles handlers; @@ -1220,14 +1226,17 @@ KeyedAccessStoreMode FeedbackNexus::GetKeyedAccessStoreMode() const { IcCheckType FeedbackNexus::GetKeyType() const { DCHECK(IsKeyedStoreICKind(kind()) || IsKeyedLoadICKind(kind()) || - IsStoreInArrayLiteralICKind(kind()) || IsKeyedHasICKind(kind())); + IsStoreInArrayLiteralICKind(kind()) || IsKeyedHasICKind(kind()) || + IsStoreDataPropertyInLiteralKind(kind())); MaybeObject feedback = GetFeedback(); if (feedback == MaybeObject::FromObject( *FeedbackVector::MegamorphicSentinel(GetIsolate()))) { return static_cast<IcCheckType>( Smi::ToInt(GetFeedbackExtra()->cast<Object>())); } - return IsPropertyNameFeedback(feedback) ? PROPERTY : ELEMENT; + MaybeObject maybe_name = + IsStoreDataPropertyInLiteralKind(kind()) ? GetFeedbackExtra() : feedback; + return IsPropertyNameFeedback(maybe_name) ? PROPERTY : ELEMENT; } BinaryOperationHint FeedbackNexus::GetBinaryOperationFeedback() const { |