Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index f6f3287bfbe388c3782756d1ca99b1057e42310f..4cf6cda51ccf3964f8a25289659d9b55bf41e1c9 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -3390,11 +3390,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); |
} |
@@ -3408,6 +3416,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; |
@@ -5621,8 +5632,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 |
@@ -5804,6 +5815,26 @@ void SharedFunctionInfo::set_kind(FunctionKind kind) { |
set_compiler_hints(hints); |
} |
+// static |
+int SharedFunctionInfo::OffsetToPreviousContext() { |
+ return FixedArray::kHeaderSize + |
+ kPointerSize * (kContextOffset - kEntryLength); |
+} |
+ |
+int SharedFunctionInfo::OffsetToPreviousCachedCode() { |
+ return FixedArray::kHeaderSize + |
+ kPointerSize * (kCachedCodeOffset - kEntryLength); |
+} |
+ |
+int SharedFunctionInfo::OffsetToPreviousLiterals() { |
+ return FixedArray::kHeaderSize + |
+ kPointerSize * (kLiteralsOffset - kEntryLength); |
+} |
+ |
+int SharedFunctionInfo::OffsetToPreviousOsrAstId() { |
+ return FixedArray::kHeaderSize + |
+ kPointerSize * (kOsrAstIdOffset - kEntryLength); |
+} |
BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, needs_home_object, |
kNeedsHomeObject) |
@@ -6255,11 +6286,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) |