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

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, 7 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 2236 matching lines...) Expand 10 before | Expand all | Expand 10 after
5575 5586
5576 SMI_ACCESSORS(BreakPointInfo, code_offset, kCodeOffsetIndex) 5587 SMI_ACCESSORS(BreakPointInfo, code_offset, kCodeOffsetIndex)
5577 SMI_ACCESSORS(BreakPointInfo, source_position, kSourcePositionIndex) 5588 SMI_ACCESSORS(BreakPointInfo, source_position, kSourcePositionIndex)
5578 SMI_ACCESSORS(BreakPointInfo, statement_position, kStatementPositionIndex) 5589 SMI_ACCESSORS(BreakPointInfo, statement_position, kStatementPositionIndex)
5579 ACCESSORS(BreakPointInfo, break_point_objects, Object, kBreakPointObjectsIndex) 5590 ACCESSORS(BreakPointInfo, break_point_objects, Object, kBreakPointObjectsIndex)
5580 5591
5581 ACCESSORS(SharedFunctionInfo, name, Object, kNameOffset) 5592 ACCESSORS(SharedFunctionInfo, name, Object, kNameOffset)
5582 ACCESSORS(SharedFunctionInfo, optimized_code_map, FixedArray, 5593 ACCESSORS(SharedFunctionInfo, optimized_code_map, FixedArray,
5583 kOptimizedCodeMapOffset) 5594 kOptimizedCodeMapOffset)
5584 ACCESSORS(SharedFunctionInfo, construct_stub, Code, kConstructStubOffset) 5595 ACCESSORS(SharedFunctionInfo, construct_stub, Code, kConstructStubOffset)
5585 ACCESSORS(SharedFunctionInfo, feedback_vector, TypeFeedbackVector, 5596 ACCESSORS(SharedFunctionInfo, feedback_metadata, TypeFeedbackMetadata,
5586 kFeedbackVectorOffset) 5597 kFeedbackMetadataOffset)
5587 #if TRACE_MAPS 5598 #if TRACE_MAPS
5588 SMI_ACCESSORS(SharedFunctionInfo, unique_id, kUniqueIdOffset) 5599 SMI_ACCESSORS(SharedFunctionInfo, unique_id, kUniqueIdOffset)
5589 #endif 5600 #endif
5590 ACCESSORS(SharedFunctionInfo, instance_class_name, Object, 5601 ACCESSORS(SharedFunctionInfo, instance_class_name, Object,
5591 kInstanceClassNameOffset) 5602 kInstanceClassNameOffset)
5592 ACCESSORS(SharedFunctionInfo, function_data, Object, kFunctionDataOffset) 5603 ACCESSORS(SharedFunctionInfo, function_data, Object, kFunctionDataOffset)
5593 ACCESSORS(SharedFunctionInfo, script, Object, kScriptOffset) 5604 ACCESSORS(SharedFunctionInfo, script, Object, kScriptOffset)
5594 ACCESSORS(SharedFunctionInfo, debug_info, Object, kDebugInfoOffset) 5605 ACCESSORS(SharedFunctionInfo, debug_info, Object, kDebugInfoOffset)
5595 ACCESSORS(SharedFunctionInfo, function_identifier, Object, 5606 ACCESSORS(SharedFunctionInfo, function_identifier, Object,
5596 kFunctionIdentifierOffset) 5607 kFunctionIdentifierOffset)
(...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after
6239 6250
6240 6251
6241 bool JSFunction::is_compiled() { 6252 bool JSFunction::is_compiled() {
6242 Builtins* builtins = GetIsolate()->builtins(); 6253 Builtins* builtins = GetIsolate()->builtins();
6243 return code() != builtins->builtin(Builtins::kCompileLazy) && 6254 return code() != builtins->builtin(Builtins::kCompileLazy) &&
6244 code() != builtins->builtin(Builtins::kCompileBaseline) && 6255 code() != builtins->builtin(Builtins::kCompileBaseline) &&
6245 code() != builtins->builtin(Builtins::kCompileOptimized) && 6256 code() != builtins->builtin(Builtins::kCompileOptimized) &&
6246 code() != builtins->builtin(Builtins::kCompileOptimizedConcurrent); 6257 code() != builtins->builtin(Builtins::kCompileOptimizedConcurrent);
6247 } 6258 }
6248 6259
6249 6260 TypeFeedbackVector* JSFunction::feedback_vector() {
6250 int JSFunction::NumberOfLiterals() { 6261 LiteralsArray* array = literals();
6251 return literals()->length(); 6262 return array->feedback_vector();
6252 } 6263 }
6253 6264
6265 int JSFunction::NumberOfLiterals() { return literals()->literals_count(); }
6254 6266
6255 ACCESSORS(JSProxy, target, JSReceiver, kTargetOffset) 6267 ACCESSORS(JSProxy, target, JSReceiver, kTargetOffset)
6256 ACCESSORS(JSProxy, handler, Object, kHandlerOffset) 6268 ACCESSORS(JSProxy, handler, Object, kHandlerOffset)
6257 ACCESSORS(JSProxy, hash, Object, kHashOffset) 6269 ACCESSORS(JSProxy, hash, Object, kHashOffset)
6258 6270
6259 bool JSProxy::IsRevoked() const { return !handler()->IsJSReceiver(); } 6271 bool JSProxy::IsRevoked() const { return !handler()->IsJSReceiver(); }
6260 6272
6261 ACCESSORS(JSCollection, table, Object, kTableOffset) 6273 ACCESSORS(JSCollection, table, Object, kTableOffset)
6262 6274
6263 6275
(...skipping 1582 matching lines...) Expand 10 before | Expand all | Expand 10 after
7846 #undef WRITE_INT64_FIELD 7858 #undef WRITE_INT64_FIELD
7847 #undef READ_BYTE_FIELD 7859 #undef READ_BYTE_FIELD
7848 #undef WRITE_BYTE_FIELD 7860 #undef WRITE_BYTE_FIELD
7849 #undef NOBARRIER_READ_BYTE_FIELD 7861 #undef NOBARRIER_READ_BYTE_FIELD
7850 #undef NOBARRIER_WRITE_BYTE_FIELD 7862 #undef NOBARRIER_WRITE_BYTE_FIELD
7851 7863
7852 } // namespace internal 7864 } // namespace internal
7853 } // namespace v8 7865 } // namespace v8
7854 7866
7855 #endif // V8_OBJECTS_INL_H_ 7867 #endif // V8_OBJECTS_INL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698