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

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

Issue 1668103002: Type Feedback Vector lives in the closure (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: REBASE. Created 4 years, 10 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
« no previous file with comments | « src/objects-debug.cc ('k') | src/objects-printer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 3361 matching lines...) Expand 10 before | Expand all | Expand 10 after
3372 } 3372 }
3373 3373
3374 3374
3375 LiteralsArray* LiteralsArray::cast(Object* object) { 3375 LiteralsArray* LiteralsArray::cast(Object* object) {
3376 SLOW_DCHECK(object->IsLiteralsArray()); 3376 SLOW_DCHECK(object->IsLiteralsArray());
3377 return reinterpret_cast<LiteralsArray*>(object); 3377 return reinterpret_cast<LiteralsArray*>(object);
3378 } 3378 }
3379 3379
3380 3380
3381 TypeFeedbackVector* LiteralsArray::feedback_vector() const { 3381 TypeFeedbackVector* LiteralsArray::feedback_vector() const {
3382 if (length() == 0) {
3383 return TypeFeedbackVector::cast(
3384 const_cast<FixedArray*>(FixedArray::cast(this)));
3385 }
3382 return TypeFeedbackVector::cast(get(kVectorIndex)); 3386 return TypeFeedbackVector::cast(get(kVectorIndex));
3383 } 3387 }
3384 3388
3385 3389
3386 void LiteralsArray::set_feedback_vector(TypeFeedbackVector* vector) { 3390 void LiteralsArray::set_feedback_vector(TypeFeedbackVector* vector) {
3391 if (length() <= kVectorIndex) {
3392 DCHECK(vector->length() == 0);
3393 return;
3394 }
3387 set(kVectorIndex, vector); 3395 set(kVectorIndex, vector);
3388 } 3396 }
3389 3397
3390 3398
3391 Object* LiteralsArray::literal(int literal_index) const { 3399 Object* LiteralsArray::literal(int literal_index) const {
3392 return get(kFirstLiteralIndex + literal_index); 3400 return get(kFirstLiteralIndex + literal_index);
3393 } 3401 }
3394 3402
3395 3403
3396 void LiteralsArray::set_literal(int literal_index, Object* literal) { 3404 void LiteralsArray::set_literal(int literal_index, Object* literal) {
3397 set(kFirstLiteralIndex + literal_index, literal); 3405 set(kFirstLiteralIndex + literal_index, literal);
3398 } 3406 }
3399 3407
3408 void LiteralsArray::set_literal_undefined(int literal_index) {
3409 set_undefined(kFirstLiteralIndex + literal_index);
3410 }
3400 3411
3401 int LiteralsArray::literals_count() const { 3412 int LiteralsArray::literals_count() const {
3402 return length() - kFirstLiteralIndex; 3413 return length() - kFirstLiteralIndex;
3403 } 3414 }
3404 3415
3405 int HandlerTable::GetRangeStart(int index) const { 3416 int HandlerTable::GetRangeStart(int index) const {
3406 return Smi::cast(get(index * kRangeEntrySize + kRangeStartIndex))->value(); 3417 return Smi::cast(get(index * kRangeEntrySize + kRangeStartIndex))->value();
3407 } 3418 }
3408 3419
3409 int HandlerTable::GetRangeEnd(int index) const { 3420 int HandlerTable::GetRangeEnd(int index) const {
(...skipping 2218 matching lines...) Expand 10 before | Expand all | Expand 10 after
5628 5639
5629 SMI_ACCESSORS(BreakPointInfo, code_offset, kCodeOffsetIndex) 5640 SMI_ACCESSORS(BreakPointInfo, code_offset, kCodeOffsetIndex)
5630 SMI_ACCESSORS(BreakPointInfo, source_position, kSourcePositionIndex) 5641 SMI_ACCESSORS(BreakPointInfo, source_position, kSourcePositionIndex)
5631 SMI_ACCESSORS(BreakPointInfo, statement_position, kStatementPositionIndex) 5642 SMI_ACCESSORS(BreakPointInfo, statement_position, kStatementPositionIndex)
5632 ACCESSORS(BreakPointInfo, break_point_objects, Object, kBreakPointObjectsIndex) 5643 ACCESSORS(BreakPointInfo, break_point_objects, Object, kBreakPointObjectsIndex)
5633 5644
5634 ACCESSORS(SharedFunctionInfo, name, Object, kNameOffset) 5645 ACCESSORS(SharedFunctionInfo, name, Object, kNameOffset)
5635 ACCESSORS(SharedFunctionInfo, optimized_code_map, FixedArray, 5646 ACCESSORS(SharedFunctionInfo, optimized_code_map, FixedArray,
5636 kOptimizedCodeMapOffset) 5647 kOptimizedCodeMapOffset)
5637 ACCESSORS(SharedFunctionInfo, construct_stub, Code, kConstructStubOffset) 5648 ACCESSORS(SharedFunctionInfo, construct_stub, Code, kConstructStubOffset)
5638 ACCESSORS(SharedFunctionInfo, feedback_vector, TypeFeedbackVector, 5649 ACCESSORS(SharedFunctionInfo, feedback_metadata, TypeFeedbackMetadata,
5639 kFeedbackVectorOffset) 5650 kFeedbackMetadataOffset)
5640 #if TRACE_MAPS 5651 #if TRACE_MAPS
5641 SMI_ACCESSORS(SharedFunctionInfo, unique_id, kUniqueIdOffset) 5652 SMI_ACCESSORS(SharedFunctionInfo, unique_id, kUniqueIdOffset)
5642 #endif 5653 #endif
5643 ACCESSORS(SharedFunctionInfo, instance_class_name, Object, 5654 ACCESSORS(SharedFunctionInfo, instance_class_name, Object,
5644 kInstanceClassNameOffset) 5655 kInstanceClassNameOffset)
5645 ACCESSORS(SharedFunctionInfo, function_data, Object, kFunctionDataOffset) 5656 ACCESSORS(SharedFunctionInfo, function_data, Object, kFunctionDataOffset)
5646 ACCESSORS(SharedFunctionInfo, script, Object, kScriptOffset) 5657 ACCESSORS(SharedFunctionInfo, script, Object, kScriptOffset)
5647 ACCESSORS(SharedFunctionInfo, debug_info, Object, kDebugInfoOffset) 5658 ACCESSORS(SharedFunctionInfo, debug_info, Object, kDebugInfoOffset)
5648 ACCESSORS(SharedFunctionInfo, inferred_name, String, kInferredNameOffset) 5659 ACCESSORS(SharedFunctionInfo, inferred_name, String, kInferredNameOffset)
5649 5660
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
5811 } 5822 }
5812 5823
5813 5824
5814 void SharedFunctionInfo::set_kind(FunctionKind kind) { 5825 void SharedFunctionInfo::set_kind(FunctionKind kind) {
5815 DCHECK(IsValidFunctionKind(kind)); 5826 DCHECK(IsValidFunctionKind(kind));
5816 int hints = compiler_hints(); 5827 int hints = compiler_hints();
5817 hints = FunctionKindBits::update(hints, kind); 5828 hints = FunctionKindBits::update(hints, kind);
5818 set_compiler_hints(hints); 5829 set_compiler_hints(hints);
5819 } 5830 }
5820 5831
5832 // static
5833 int SharedFunctionInfo::OffsetToPreviousContext() {
5834 return FixedArray::kHeaderSize +
5835 kPointerSize * (kContextOffset - kEntryLength);
5836 }
5837
5838 int SharedFunctionInfo::OffsetToPreviousCachedCode() {
5839 return FixedArray::kHeaderSize +
5840 kPointerSize * (kCachedCodeOffset - kEntryLength);
5841 }
5842
5843 int SharedFunctionInfo::OffsetToPreviousLiterals() {
5844 return FixedArray::kHeaderSize +
5845 kPointerSize * (kLiteralsOffset - kEntryLength);
5846 }
5847
5848 int SharedFunctionInfo::OffsetToPreviousOsrAstId() {
5849 return FixedArray::kHeaderSize +
5850 kPointerSize * (kOsrAstIdOffset - kEntryLength);
5851 }
5821 5852
5822 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, needs_home_object, 5853 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, needs_home_object,
5823 kNeedsHomeObject) 5854 kNeedsHomeObject)
5824 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, native, kNative) 5855 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, native, kNative)
5825 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, force_inline, kForceInline) 5856 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, force_inline, kForceInline)
5826 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, 5857 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints,
5827 name_should_print_as_anonymous, 5858 name_should_print_as_anonymous,
5828 kNameShouldPrintAsAnonymous) 5859 kNameShouldPrintAsAnonymous)
5829 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_anonymous, kIsAnonymous) 5860 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_anonymous, kIsAnonymous)
5830 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_function, kIsFunction) 5861 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_function, kIsFunction)
(...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after
6262 } 6293 }
6263 6294
6264 6295
6265 bool JSFunction::is_compiled() { 6296 bool JSFunction::is_compiled() {
6266 Builtins* builtins = GetIsolate()->builtins(); 6297 Builtins* builtins = GetIsolate()->builtins();
6267 return code() != builtins->builtin(Builtins::kCompileLazy) && 6298 return code() != builtins->builtin(Builtins::kCompileLazy) &&
6268 code() != builtins->builtin(Builtins::kCompileOptimized) && 6299 code() != builtins->builtin(Builtins::kCompileOptimized) &&
6269 code() != builtins->builtin(Builtins::kCompileOptimizedConcurrent); 6300 code() != builtins->builtin(Builtins::kCompileOptimizedConcurrent);
6270 } 6301 }
6271 6302
6272 6303 TypeFeedbackVector* JSFunction::feedback_vector() {
6273 int JSFunction::NumberOfLiterals() { 6304 LiteralsArray* array = literals();
6274 return literals()->length(); 6305 return array->feedback_vector();
6275 } 6306 }
6276 6307
6308 int JSFunction::NumberOfLiterals() { return literals()->literals_count(); }
6277 6309
6278 ACCESSORS(JSProxy, target, JSReceiver, kTargetOffset) 6310 ACCESSORS(JSProxy, target, JSReceiver, kTargetOffset)
6279 ACCESSORS(JSProxy, handler, Object, kHandlerOffset) 6311 ACCESSORS(JSProxy, handler, Object, kHandlerOffset)
6280 ACCESSORS(JSProxy, hash, Object, kHashOffset) 6312 ACCESSORS(JSProxy, hash, Object, kHashOffset)
6281 6313
6282 bool JSProxy::IsRevoked() const { return !handler()->IsJSReceiver(); } 6314 bool JSProxy::IsRevoked() const { return !handler()->IsJSReceiver(); }
6283 6315
6284 ACCESSORS(JSCollection, table, Object, kTableOffset) 6316 ACCESSORS(JSCollection, table, Object, kTableOffset)
6285 6317
6286 6318
(...skipping 1556 matching lines...) Expand 10 before | Expand all | Expand 10 after
7843 #undef WRITE_INT64_FIELD 7875 #undef WRITE_INT64_FIELD
7844 #undef READ_BYTE_FIELD 7876 #undef READ_BYTE_FIELD
7845 #undef WRITE_BYTE_FIELD 7877 #undef WRITE_BYTE_FIELD
7846 #undef NOBARRIER_READ_BYTE_FIELD 7878 #undef NOBARRIER_READ_BYTE_FIELD
7847 #undef NOBARRIER_WRITE_BYTE_FIELD 7879 #undef NOBARRIER_WRITE_BYTE_FIELD
7848 7880
7849 } // namespace internal 7881 } // namespace internal
7850 } // namespace v8 7882 } // namespace v8
7851 7883
7852 #endif // V8_OBJECTS_INL_H_ 7884 #endif // V8_OBJECTS_INL_H_
OLDNEW
« 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