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

Side by Side Diff: src/objects-inl.h

Issue 1906823002: Move of the type feedback vector to the closure. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: REBASE. Created 4 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // Review notes: 5 // Review notes:
6 // 6 //
7 // - The use of macros in these inline functions may seem superfluous 7 // - The use of macros in these inline functions may seem superfluous
8 // but it is absolutely needed to make sure gcc generates optimal 8 // but it is absolutely needed to make sure gcc generates optimal
9 // code. gcc is not happy when attempting to inline too deep. 9 // code. gcc is not happy when attempting to inline too deep.
10 // 10 //
(...skipping 3290 matching lines...) Expand 10 before | Expand all | Expand 10 after
3301 } 3301 }
3302 3302
3303 3303
3304 LiteralsArray* LiteralsArray::cast(Object* object) { 3304 LiteralsArray* LiteralsArray::cast(Object* object) {
3305 SLOW_DCHECK(object->IsLiteralsArray()); 3305 SLOW_DCHECK(object->IsLiteralsArray());
3306 return reinterpret_cast<LiteralsArray*>(object); 3306 return reinterpret_cast<LiteralsArray*>(object);
3307 } 3307 }
3308 3308
3309 3309
3310 TypeFeedbackVector* LiteralsArray::feedback_vector() const { 3310 TypeFeedbackVector* LiteralsArray::feedback_vector() const {
3311 if (length() == 0) {
3312 return TypeFeedbackVector::cast(
3313 const_cast<FixedArray*>(FixedArray::cast(this)));
3314 }
3311 return TypeFeedbackVector::cast(get(kVectorIndex)); 3315 return TypeFeedbackVector::cast(get(kVectorIndex));
3312 } 3316 }
3313 3317
3314 3318
3315 void LiteralsArray::set_feedback_vector(TypeFeedbackVector* vector) { 3319 void LiteralsArray::set_feedback_vector(TypeFeedbackVector* vector) {
3320 if (length() <= kVectorIndex) {
3321 DCHECK(vector->length() == 0);
3322 return;
3323 }
3316 set(kVectorIndex, vector); 3324 set(kVectorIndex, vector);
3317 } 3325 }
3318 3326
3319 3327
3320 Object* LiteralsArray::literal(int literal_index) const { 3328 Object* LiteralsArray::literal(int literal_index) const {
3321 return get(kFirstLiteralIndex + literal_index); 3329 return get(kFirstLiteralIndex + literal_index);
3322 } 3330 }
3323 3331
3324 3332
3325 void LiteralsArray::set_literal(int literal_index, Object* literal) { 3333 void LiteralsArray::set_literal(int literal_index, Object* literal) {
3326 set(kFirstLiteralIndex + literal_index, literal); 3334 set(kFirstLiteralIndex + literal_index, literal);
3327 } 3335 }
3328 3336
3337 void LiteralsArray::set_literal_undefined(int literal_index) {
3338 set_undefined(kFirstLiteralIndex + literal_index);
3339 }
3329 3340
3330 int LiteralsArray::literals_count() const { 3341 int LiteralsArray::literals_count() const {
3331 return length() - kFirstLiteralIndex; 3342 return length() - kFirstLiteralIndex;
3332 } 3343 }
3333 3344
3334 int HandlerTable::GetRangeStart(int index) const { 3345 int HandlerTable::GetRangeStart(int index) const {
3335 return Smi::cast(get(index * kRangeEntrySize + kRangeStartIndex))->value(); 3346 return Smi::cast(get(index * kRangeEntrySize + kRangeStartIndex))->value();
3336 } 3347 }
3337 3348
3338 int HandlerTable::GetRangeEnd(int index) const { 3349 int HandlerTable::GetRangeEnd(int index) const {
(...skipping 2222 matching lines...) Expand 10 before | Expand all | Expand 10 after
5561 5572
5562 SMI_ACCESSORS(BreakPointInfo, code_offset, kCodeOffsetIndex) 5573 SMI_ACCESSORS(BreakPointInfo, code_offset, kCodeOffsetIndex)
5563 SMI_ACCESSORS(BreakPointInfo, source_position, kSourcePositionIndex) 5574 SMI_ACCESSORS(BreakPointInfo, source_position, kSourcePositionIndex)
5564 SMI_ACCESSORS(BreakPointInfo, statement_position, kStatementPositionIndex) 5575 SMI_ACCESSORS(BreakPointInfo, statement_position, kStatementPositionIndex)
5565 ACCESSORS(BreakPointInfo, break_point_objects, Object, kBreakPointObjectsIndex) 5576 ACCESSORS(BreakPointInfo, break_point_objects, Object, kBreakPointObjectsIndex)
5566 5577
5567 ACCESSORS(SharedFunctionInfo, name, Object, kNameOffset) 5578 ACCESSORS(SharedFunctionInfo, name, Object, kNameOffset)
5568 ACCESSORS(SharedFunctionInfo, optimized_code_map, FixedArray, 5579 ACCESSORS(SharedFunctionInfo, optimized_code_map, FixedArray,
5569 kOptimizedCodeMapOffset) 5580 kOptimizedCodeMapOffset)
5570 ACCESSORS(SharedFunctionInfo, construct_stub, Code, kConstructStubOffset) 5581 ACCESSORS(SharedFunctionInfo, construct_stub, Code, kConstructStubOffset)
5571 ACCESSORS(SharedFunctionInfo, feedback_vector, TypeFeedbackVector, 5582 ACCESSORS(SharedFunctionInfo, feedback_metadata, TypeFeedbackMetadata,
5572 kFeedbackVectorOffset) 5583 kFeedbackMetadataOffset)
5573 #if TRACE_MAPS 5584 #if TRACE_MAPS
5574 SMI_ACCESSORS(SharedFunctionInfo, unique_id, kUniqueIdOffset) 5585 SMI_ACCESSORS(SharedFunctionInfo, unique_id, kUniqueIdOffset)
5575 #endif 5586 #endif
5576 ACCESSORS(SharedFunctionInfo, instance_class_name, Object, 5587 ACCESSORS(SharedFunctionInfo, instance_class_name, Object,
5577 kInstanceClassNameOffset) 5588 kInstanceClassNameOffset)
5578 ACCESSORS(SharedFunctionInfo, function_data, Object, kFunctionDataOffset) 5589 ACCESSORS(SharedFunctionInfo, function_data, Object, kFunctionDataOffset)
5579 ACCESSORS(SharedFunctionInfo, script, Object, kScriptOffset) 5590 ACCESSORS(SharedFunctionInfo, script, Object, kScriptOffset)
5580 ACCESSORS(SharedFunctionInfo, debug_info, Object, kDebugInfoOffset) 5591 ACCESSORS(SharedFunctionInfo, debug_info, Object, kDebugInfoOffset)
5581 ACCESSORS(SharedFunctionInfo, function_identifier, Object, 5592 ACCESSORS(SharedFunctionInfo, function_identifier, Object,
5582 kFunctionIdentifierOffset) 5593 kFunctionIdentifierOffset)
(...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after
6230 6241
6231 6242
6232 bool JSFunction::is_compiled() { 6243 bool JSFunction::is_compiled() {
6233 Builtins* builtins = GetIsolate()->builtins(); 6244 Builtins* builtins = GetIsolate()->builtins();
6234 return code() != builtins->builtin(Builtins::kCompileLazy) && 6245 return code() != builtins->builtin(Builtins::kCompileLazy) &&
6235 code() != builtins->builtin(Builtins::kCompileBaseline) && 6246 code() != builtins->builtin(Builtins::kCompileBaseline) &&
6236 code() != builtins->builtin(Builtins::kCompileOptimized) && 6247 code() != builtins->builtin(Builtins::kCompileOptimized) &&
6237 code() != builtins->builtin(Builtins::kCompileOptimizedConcurrent); 6248 code() != builtins->builtin(Builtins::kCompileOptimizedConcurrent);
6238 } 6249 }
6239 6250
6251 TypeFeedbackVector* JSFunction::feedback_vector() {
6252 LiteralsArray* array = literals();
6253 return array->feedback_vector();
6254 }
6240 6255
6241 ACCESSORS(JSProxy, target, JSReceiver, kTargetOffset) 6256 ACCESSORS(JSProxy, target, JSReceiver, kTargetOffset)
6242 ACCESSORS(JSProxy, handler, Object, kHandlerOffset) 6257 ACCESSORS(JSProxy, handler, Object, kHandlerOffset)
6243 ACCESSORS(JSProxy, hash, Object, kHashOffset) 6258 ACCESSORS(JSProxy, hash, Object, kHashOffset)
6244 6259
6245 bool JSProxy::IsRevoked() const { return !handler()->IsJSReceiver(); } 6260 bool JSProxy::IsRevoked() const { return !handler()->IsJSReceiver(); }
6246 6261
6247 ACCESSORS(JSCollection, table, Object, kTableOffset) 6262 ACCESSORS(JSCollection, table, Object, kTableOffset)
6248 6263
6249 6264
(...skipping 1587 matching lines...) Expand 10 before | Expand all | Expand 10 after
7837 #undef WRITE_INT64_FIELD 7852 #undef WRITE_INT64_FIELD
7838 #undef READ_BYTE_FIELD 7853 #undef READ_BYTE_FIELD
7839 #undef WRITE_BYTE_FIELD 7854 #undef WRITE_BYTE_FIELD
7840 #undef NOBARRIER_READ_BYTE_FIELD 7855 #undef NOBARRIER_READ_BYTE_FIELD
7841 #undef NOBARRIER_WRITE_BYTE_FIELD 7856 #undef NOBARRIER_WRITE_BYTE_FIELD
7842 7857
7843 } // namespace internal 7858 } // namespace internal
7844 } // namespace v8 7859 } // namespace v8
7845 7860
7846 #endif // V8_OBJECTS_INL_H_ 7861 #endif // V8_OBJECTS_INL_H_
OLDNEW
« src/compiler.cc ('K') | « src/objects-debug.cc ('k') | src/objects-printer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698