Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index a824b3b25479fe911bd9afb7ee528cc4ac40a564..598dc18e5d0bc706e5033230b6d539f0a476a193 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -3391,11 +3391,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); |
} |
@@ -3409,6 +3417,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; |
@@ -5615,8 +5626,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 |
@@ -5798,6 +5809,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) |
@@ -6249,6 +6280,10 @@ bool JSFunction::is_compiled() { |
code() != builtins->builtin(Builtins::kCompileOptimizedConcurrent); |
} |
+TypeFeedbackVector* JSFunction::feedback_vector() { |
+ LiteralsArray* array = literals(); |
+ return array->feedback_vector(); |
+} |
int JSFunction::NumberOfLiterals() { |
return literals()->length(); |