| Index: src/objects-inl.h
|
| diff --git a/src/objects-inl.h b/src/objects-inl.h
|
| index db3c1c2b0f05b304675f71e72253ea7ffa2ece29..d1d3f99af805b173c5c0006c124ed09e936ec21d 100644
|
| --- a/src/objects-inl.h
|
| +++ b/src/objects-inl.h
|
| @@ -5655,8 +5655,7 @@ ACCESSORS(JSBoundFunction, bound_this, Object, kBoundThisOffset)
|
| ACCESSORS(JSBoundFunction, bound_arguments, FixedArray, kBoundArgumentsOffset)
|
|
|
| ACCESSORS(JSFunction, shared, SharedFunctionInfo, kSharedFunctionInfoOffset)
|
| -ACCESSORS(JSFunction, feedback_vector, TypeFeedbackVector,
|
| - kFeedbackVectorOffset)
|
| +ACCESSORS(JSFunction, feedback_vector_cell, Cell, kFeedbackVectorOffset)
|
| ACCESSORS(JSFunction, next_function_link, Object, kNextFunctionLinkOffset)
|
|
|
| ACCESSORS(JSGlobalObject, native_context, Context, kNativeContextOffset)
|
| @@ -6481,6 +6480,10 @@ bool SharedFunctionInfo::OptimizedCodeMapIsCleared() const {
|
| return optimized_code_map() == GetHeap()->empty_fixed_array();
|
| }
|
|
|
| +TypeFeedbackVector* JSFunction::feedback_vector() const {
|
| + DCHECK(feedback_vector_cell()->value()->IsTypeFeedbackVector());
|
| + return TypeFeedbackVector::cast(feedback_vector_cell()->value());
|
| +}
|
|
|
| bool JSFunction::IsOptimized() {
|
| return code()->kind() == Code::OPTIMIZED_FUNCTION;
|
| @@ -6588,6 +6591,14 @@ void JSFunction::ReplaceCode(Code* code) {
|
| }
|
| }
|
|
|
| +bool JSFunction::has_feedback_vector() const {
|
| + SharedFunctionInfo* shared = this->shared();
|
| +
|
| + return (feedback_vector_cell()->value() !=
|
| + shared->GetIsolate()->heap()->empty_type_feedback_vector() ||
|
| + (shared->feedback_metadata()->slot_count() == 0 &&
|
| + shared->num_literals() == 0));
|
| +}
|
|
|
| Context* JSFunction::context() {
|
| return Context::cast(READ_FIELD(this, kContextOffset));
|
|
|