Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index ee6850b69827fb8cb0476ad89129843eac339c47..e98fbfd7e7c4988f8de57dbf8722e905a204e090 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; |
@@ -5568,8 +5579,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 |
@@ -6237,6 +6248,10 @@ bool JSFunction::is_compiled() { |
code() != builtins->builtin(Builtins::kCompileOptimizedConcurrent); |
} |
+TypeFeedbackVector* JSFunction::feedback_vector() { |
+ LiteralsArray* array = literals(); |
+ return array->feedback_vector(); |
+} |
ACCESSORS(JSProxy, target, JSReceiver, kTargetOffset) |
ACCESSORS(JSProxy, handler, Object, kHandlerOffset) |