diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-01-20 13:40:20 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-01-22 12:41:23 +0000 |
commit | 7961cea6d1041e3e454dae6a1da660b453efd238 (patch) | |
tree | c0eeb4a9ff9ba32986289c1653d9608e53ccb444 /chromium/v8/src/objects/feedback-vector.cc | |
parent | b7034d0803538058e5c9d904ef03cf5eab34f6ef (diff) | |
download | qtwebengine-chromium-7961cea6d1041e3e454dae6a1da660b453efd238.tar.gz |
BASELINE: Update Chromium to 78.0.3904.130
Change-Id: If185e0c0061b3437531c97c9c8c78f239352a68b
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
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 { |