| Index: src/objects-inl.h
|
| diff --git a/src/objects-inl.h b/src/objects-inl.h
|
| index 18a96b8a1503259d7644463c702de27ce1243ac9..e064ce60569bfc63bc33b7fd943271394a164080 100644
|
| --- a/src/objects-inl.h
|
| +++ b/src/objects-inl.h
|
| @@ -3379,11 +3379,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);
|
| }
|
|
|
| @@ -3397,6 +3405,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;
|
| @@ -5635,8 +5646,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
|
| @@ -5818,6 +5829,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)
|
| @@ -6269,11 +6300,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)
|
|
|