Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(228)

Unified Diff: src/objects-inl.h

Issue 1642613002: Reland of Type Feedback Vector lives in the closure (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: %SetCode failed to install literals in cache. Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/objects-debug.cc ('k') | src/objects-printer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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)
« no previous file with comments | « src/objects-debug.cc ('k') | src/objects-printer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698