Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index 5ad593bfa6630d6fe0df69e71a15f6d8efe4a722..64d0a93cc832bec9ba50a10654e26cf7d837d42f 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -3505,12 +3505,16 @@ LiteralsArray* LiteralsArray::cast(Object* object) { |
return reinterpret_cast<LiteralsArray*>(object); |
} |
+bool LiteralsArray::has_feedback_vector() const { |
+ return !get(kVectorIndex)->IsUndefined(this->GetIsolate()); |
+} |
TypeFeedbackVector* LiteralsArray::feedback_vector() const { |
- if (length() == 0) { |
+ if (length() == 0 || !has_feedback_vector()) { |
return TypeFeedbackVector::cast( |
- const_cast<FixedArray*>(FixedArray::cast(this))); |
+ this->GetIsolate()->heap()->empty_type_feedback_vector()); |
} |
+ |
return TypeFeedbackVector::cast(get(kVectorIndex)); |
} |
@@ -6657,6 +6661,13 @@ void JSFunction::ReplaceCode(Code* code) { |
} |
} |
+bool JSFunction::has_literals_array() const { |
+ SharedFunctionInfo* shared = this->shared(); |
+ |
+ return (literals() != shared->GetIsolate()->heap()->empty_literals_array() || |
+ (shared->feedback_metadata()->slot_count() == 0 && |
+ shared->num_literals() == 0)); |
+} |
Context* JSFunction::context() { |
return Context::cast(READ_FIELD(this, kContextOffset)); |