Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index 0492436903b7cd572168b46b7954effefc5d8f41..f9076a74152c9eddb7afd30c513d6a2101eea5a0 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -3308,11 +3308,19 @@ LiteralsArray* LiteralsArray::cast(Object* object) { |
TypeFeedbackVector* LiteralsArray::feedback_vector() const { |
+ if (length() == 0) { |
+ return TypeFeedbackVector::cast( |
+ const_cast<FixedArray*>(FixedArray::cast(this))); |
+ } |
return TypeFeedbackVector::cast(get(kVectorIndex)); |
} |
void LiteralsArray::set_feedback_vector(TypeFeedbackVector* vector) { |
+ if (length() <= kVectorIndex) { |
+ DCHECK(vector->length() == 0); |
+ return; |
+ } |
set(kVectorIndex, vector); |
} |
@@ -3326,6 +3334,9 @@ void LiteralsArray::set_literal(int literal_index, Object* literal) { |
set(kFirstLiteralIndex + literal_index, literal); |
} |
+void LiteralsArray::set_literal_undefined(int literal_index) { |
+ set_undefined(kFirstLiteralIndex + literal_index); |
+} |
int LiteralsArray::literals_count() const { |
return length() - kFirstLiteralIndex; |
@@ -5582,8 +5593,8 @@ ACCESSORS(SharedFunctionInfo, name, Object, kNameOffset) |
ACCESSORS(SharedFunctionInfo, optimized_code_map, FixedArray, |
kOptimizedCodeMapOffset) |
ACCESSORS(SharedFunctionInfo, construct_stub, Code, kConstructStubOffset) |
-ACCESSORS(SharedFunctionInfo, feedback_vector, TypeFeedbackVector, |
- kFeedbackVectorOffset) |
+ACCESSORS(SharedFunctionInfo, feedback_metadata, TypeFeedbackMetadata, |
+ kFeedbackMetadataOffset) |
#if TRACE_MAPS |
SMI_ACCESSORS(SharedFunctionInfo, unique_id, kUniqueIdOffset) |
#endif |
@@ -6246,11 +6257,12 @@ bool JSFunction::is_compiled() { |
code() != builtins->builtin(Builtins::kCompileOptimizedConcurrent); |
} |
- |
-int JSFunction::NumberOfLiterals() { |
- return literals()->length(); |
+TypeFeedbackVector* JSFunction::feedback_vector() { |
+ LiteralsArray* array = literals(); |
+ return array->feedback_vector(); |
} |
+int JSFunction::NumberOfLiterals() { return literals()->literals_count(); } |
ACCESSORS(JSProxy, target, JSReceiver, kTargetOffset) |
ACCESSORS(JSProxy, handler, Object, kHandlerOffset) |