Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(491)

Unified Diff: src/type-feedback-vector.cc

Issue 2655853010: [TypeFeedbackVector] Combine the literals array and the feedback vector. (Closed)
Patch Set: more comments. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/type-feedback-vector.h ('k') | src/type-feedback-vector-inl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/type-feedback-vector.cc
diff --git a/src/type-feedback-vector.cc b/src/type-feedback-vector.cc
index 546139e481e63a154198592c084029b3dcf3bbd9..fcb1787411b063955c77b46f3a5092ffdd39aacb 100644
--- a/src/type-feedback-vector.cc
+++ b/src/type-feedback-vector.cc
@@ -164,6 +164,8 @@ const char* TypeFeedbackMetadata::Kind2String(FeedbackVectorSlotKind kind) {
return "STORE_DATA_PROPERTY_IN_LITERAL_IC";
case FeedbackVectorSlotKind::CREATE_CLOSURE:
return "CREATE_CLOSURE";
+ case FeedbackVectorSlotKind::LITERAL:
+ return "LITERAL";
case FeedbackVectorSlotKind::GENERAL:
return "STUB";
case FeedbackVectorSlotKind::KINDS_NUMBER:
@@ -202,8 +204,9 @@ Handle<TypeFeedbackVector> TypeFeedbackVector::New(
int entry_size = TypeFeedbackMetadata::GetSlotSize(kind);
if (kind == FeedbackVectorSlotKind::CREATE_CLOSURE) {
- // TODO(mvstanton): Root literal arrays in this location.
- array->set(index, *factory->empty_literals_array(), SKIP_WRITE_BARRIER);
+ // TODO(mvstanton): Root feedback vectors in this location.
+ array->set(index, *factory->empty_type_feedback_vector(),
+ SKIP_WRITE_BARRIER);
}
i += entry_size;
}
@@ -212,6 +215,7 @@ Handle<TypeFeedbackVector> TypeFeedbackVector::New(
// Ensure we can skip the write barrier
Handle<Object> uninitialized_sentinel = UninitializedSentinel(isolate);
+ Handle<Oddball> undefined_value = factory->undefined_value();
DCHECK_EQ(isolate->heap()->uninitialized_symbol(), *uninitialized_sentinel);
for (int i = 0; i < slot_count;) {
FeedbackVectorSlot slot(i);
@@ -225,6 +229,8 @@ Handle<TypeFeedbackVector> TypeFeedbackVector::New(
} else if (kind == FeedbackVectorSlotKind::INTERPRETER_COMPARE_IC ||
kind == FeedbackVectorSlotKind::INTERPRETER_BINARYOP_IC) {
value = Smi::kZero;
+ } else if (kind == FeedbackVectorSlotKind::LITERAL) {
+ value = *undefined_value;
} else {
value = *uninitialized_sentinel;
}
@@ -242,14 +248,6 @@ Handle<TypeFeedbackVector> TypeFeedbackVector::New(
return Handle<TypeFeedbackVector>::cast(array);
}
-
-// static
-int TypeFeedbackVector::GetIndexFromSpec(const FeedbackVectorSpec* spec,
- FeedbackVectorSlot slot) {
- return kReservedIndexCount + slot.ToInt();
-}
-
-
// static
Handle<TypeFeedbackVector> TypeFeedbackVector::Copy(
Isolate* isolate, Handle<TypeFeedbackVector> vector) {
@@ -276,6 +274,7 @@ void TypeFeedbackVector::ClearSlotsImpl(SharedFunctionInfo* shared,
Object* uninitialized_sentinel =
TypeFeedbackVector::RawUninitializedSentinel(isolate);
+ Oddball* undefined_value = isolate->heap()->undefined_value();
TypeFeedbackMetadataIterator iter(metadata());
while (iter.HasNext()) {
@@ -323,11 +322,6 @@ void TypeFeedbackVector::ClearSlotsImpl(SharedFunctionInfo* shared,
break;
}
case FeedbackVectorSlotKind::CREATE_CLOSURE: {
- // Fill the array with undefined.
- FixedArray* array = FixedArray::cast(Get(slot));
- for (int i = 1; i < array->length(); i++) {
- array->set_undefined(i);
- }
break;
}
case FeedbackVectorSlotKind::GENERAL: {
@@ -343,6 +337,10 @@ void TypeFeedbackVector::ClearSlotsImpl(SharedFunctionInfo* shared,
}
break;
}
+ case FeedbackVectorSlotKind::LITERAL: {
+ Set(slot, undefined_value, SKIP_WRITE_BARRIER);
+ break;
+ }
case FeedbackVectorSlotKind::STORE_DATA_PROPERTY_IN_LITERAL_IC: {
StoreDataPropertyInLiteralICNexus nexus(this, slot);
nexus.Clear(shared->code());
« no previous file with comments | « src/type-feedback-vector.h ('k') | src/type-feedback-vector-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698