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