| OLD | NEW |
| 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 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 return Object::IsHeapObject() && | 180 return Object::IsHeapObject() && |
| 181 HeapObject::cast(this)->map()->instance_type() <= LAST_NAME_TYPE; | 181 HeapObject::cast(this)->map()->instance_type() <= LAST_NAME_TYPE; |
| 182 } | 182 } |
| 183 | 183 |
| 184 | 184 |
| 185 bool Object::IsUniqueName() const { | 185 bool Object::IsUniqueName() const { |
| 186 return IsInternalizedString() || IsSymbol(); | 186 return IsInternalizedString() || IsSymbol(); |
| 187 } | 187 } |
| 188 | 188 |
| 189 | 189 |
| 190 bool Object::IsFunction() const { | |
| 191 STATIC_ASSERT(LAST_FUNCTION_TYPE == LAST_TYPE); | |
| 192 return Object::IsHeapObject() && | |
| 193 HeapObject::cast(this)->map()->instance_type() >= FIRST_FUNCTION_TYPE; | |
| 194 } | |
| 195 | |
| 196 | |
| 197 bool Object::IsCallable() const { | 190 bool Object::IsCallable() const { |
| 198 return Object::IsHeapObject() && HeapObject::cast(this)->map()->is_callable(); | 191 return Object::IsHeapObject() && HeapObject::cast(this)->map()->is_callable(); |
| 199 } | 192 } |
| 200 | 193 |
| 201 | 194 |
| 202 bool Object::IsConstructor() const { | 195 bool Object::IsConstructor() const { |
| 203 return Object::IsHeapObject() && | 196 return Object::IsHeapObject() && |
| 204 HeapObject::cast(this)->map()->is_constructor(); | 197 HeapObject::cast(this)->map()->is_constructor(); |
| 205 } | 198 } |
| 206 | 199 |
| (...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 741 } | 734 } |
| 742 | 735 |
| 743 | 736 |
| 744 bool Object::IsTypeFeedbackVector() const { return IsFixedArray(); } | 737 bool Object::IsTypeFeedbackVector() const { return IsFixedArray(); } |
| 745 | 738 |
| 746 | 739 |
| 747 bool Object::IsTypeFeedbackMetadata() const { return IsFixedArray(); } | 740 bool Object::IsTypeFeedbackMetadata() const { return IsFixedArray(); } |
| 748 | 741 |
| 749 | 742 |
| 750 bool Object::IsLiteralsArray() const { return IsFixedArray(); } | 743 bool Object::IsLiteralsArray() const { return IsFixedArray(); } |
| 744 bool Object::IsBindingsArray() const { return IsFixedArray(); } |
| 751 | 745 |
| 752 | 746 |
| 753 bool Object::IsDeoptimizationInputData() const { | 747 bool Object::IsDeoptimizationInputData() const { |
| 754 // Must be a fixed array. | 748 // Must be a fixed array. |
| 755 if (!IsFixedArray()) return false; | 749 if (!IsFixedArray()) return false; |
| 756 | 750 |
| 757 // There's no sure way to detect the difference between a fixed array and | 751 // There's no sure way to detect the difference between a fixed array and |
| 758 // a deoptimization data array. Since this is used for asserts we can | 752 // a deoptimization data array. Since this is used for asserts we can |
| 759 // check that the length is zero or else the fixed size plus a multiple of | 753 // check that the length is zero or else the fixed size plus a multiple of |
| 760 // the entry size. | 754 // the entry size. |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 821 } | 815 } |
| 822 | 816 |
| 823 | 817 |
| 824 bool Object::IsScopeInfo() const { | 818 bool Object::IsScopeInfo() const { |
| 825 return Object::IsHeapObject() && | 819 return Object::IsHeapObject() && |
| 826 HeapObject::cast(this)->map() == | 820 HeapObject::cast(this)->map() == |
| 827 HeapObject::cast(this)->GetHeap()->scope_info_map(); | 821 HeapObject::cast(this)->GetHeap()->scope_info_map(); |
| 828 } | 822 } |
| 829 | 823 |
| 830 | 824 |
| 831 TYPE_CHECKER(JSBoundFunction, JS_BOUND_FUNCTION_TYPE) | |
| 832 TYPE_CHECKER(JSFunction, JS_FUNCTION_TYPE) | 825 TYPE_CHECKER(JSFunction, JS_FUNCTION_TYPE) |
| 833 | 826 |
| 834 | 827 |
| 835 template <> inline bool Is<JSFunction>(Object* obj) { | 828 template <> inline bool Is<JSFunction>(Object* obj) { |
| 836 return obj->IsJSFunction(); | 829 return obj->IsJSFunction(); |
| 837 } | 830 } |
| 838 | 831 |
| 839 | 832 |
| 840 TYPE_CHECKER(Code, CODE_TYPE) | 833 TYPE_CHECKER(Code, CODE_TYPE) |
| 841 TYPE_CHECKER(Oddball, ODDBALL_TYPE) | 834 TYPE_CHECKER(Oddball, ODDBALL_TYPE) |
| (...skipping 1242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2084 if (type == JS_OBJECT_TYPE) return JSObject::kHeaderSize; | 2077 if (type == JS_OBJECT_TYPE) return JSObject::kHeaderSize; |
| 2085 switch (type) { | 2078 switch (type) { |
| 2086 case JS_GENERATOR_OBJECT_TYPE: | 2079 case JS_GENERATOR_OBJECT_TYPE: |
| 2087 return JSGeneratorObject::kSize; | 2080 return JSGeneratorObject::kSize; |
| 2088 case JS_MODULE_TYPE: | 2081 case JS_MODULE_TYPE: |
| 2089 return JSModule::kSize; | 2082 return JSModule::kSize; |
| 2090 case JS_GLOBAL_PROXY_TYPE: | 2083 case JS_GLOBAL_PROXY_TYPE: |
| 2091 return JSGlobalProxy::kSize; | 2084 return JSGlobalProxy::kSize; |
| 2092 case JS_GLOBAL_OBJECT_TYPE: | 2085 case JS_GLOBAL_OBJECT_TYPE: |
| 2093 return JSGlobalObject::kSize; | 2086 return JSGlobalObject::kSize; |
| 2094 case JS_BOUND_FUNCTION_TYPE: | |
| 2095 return JSBoundFunction::kSize; | |
| 2096 case JS_FUNCTION_TYPE: | 2087 case JS_FUNCTION_TYPE: |
| 2097 return JSFunction::kSize; | 2088 return JSFunction::kSize; |
| 2098 case JS_VALUE_TYPE: | 2089 case JS_VALUE_TYPE: |
| 2099 return JSValue::kSize; | 2090 return JSValue::kSize; |
| 2100 case JS_DATE_TYPE: | 2091 case JS_DATE_TYPE: |
| 2101 return JSDate::kSize; | 2092 return JSDate::kSize; |
| 2102 case JS_ARRAY_TYPE: | 2093 case JS_ARRAY_TYPE: |
| 2103 return JSArray::kSize; | 2094 return JSArray::kSize; |
| 2104 case JS_ARRAY_BUFFER_TYPE: | 2095 case JS_ARRAY_BUFFER_TYPE: |
| 2105 return JSArrayBuffer::kSize; | 2096 return JSArrayBuffer::kSize; |
| (...skipping 1113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3219 CAST_ACCESSOR(Foreign) | 3210 CAST_ACCESSOR(Foreign) |
| 3220 CAST_ACCESSOR(GlobalDictionary) | 3211 CAST_ACCESSOR(GlobalDictionary) |
| 3221 CAST_ACCESSOR(HandlerTable) | 3212 CAST_ACCESSOR(HandlerTable) |
| 3222 CAST_ACCESSOR(HeapObject) | 3213 CAST_ACCESSOR(HeapObject) |
| 3223 CAST_ACCESSOR(Int16x8) | 3214 CAST_ACCESSOR(Int16x8) |
| 3224 CAST_ACCESSOR(Int32x4) | 3215 CAST_ACCESSOR(Int32x4) |
| 3225 CAST_ACCESSOR(Int8x16) | 3216 CAST_ACCESSOR(Int8x16) |
| 3226 CAST_ACCESSOR(JSArray) | 3217 CAST_ACCESSOR(JSArray) |
| 3227 CAST_ACCESSOR(JSArrayBuffer) | 3218 CAST_ACCESSOR(JSArrayBuffer) |
| 3228 CAST_ACCESSOR(JSArrayBufferView) | 3219 CAST_ACCESSOR(JSArrayBufferView) |
| 3229 CAST_ACCESSOR(JSBoundFunction) | |
| 3230 CAST_ACCESSOR(JSDataView) | 3220 CAST_ACCESSOR(JSDataView) |
| 3231 CAST_ACCESSOR(JSDate) | 3221 CAST_ACCESSOR(JSDate) |
| 3232 CAST_ACCESSOR(JSFunction) | 3222 CAST_ACCESSOR(JSFunction) |
| 3233 CAST_ACCESSOR(JSGeneratorObject) | 3223 CAST_ACCESSOR(JSGeneratorObject) |
| 3234 CAST_ACCESSOR(JSGlobalObject) | 3224 CAST_ACCESSOR(JSGlobalObject) |
| 3235 CAST_ACCESSOR(JSGlobalProxy) | 3225 CAST_ACCESSOR(JSGlobalProxy) |
| 3236 CAST_ACCESSOR(JSMap) | 3226 CAST_ACCESSOR(JSMap) |
| 3237 CAST_ACCESSOR(JSMapIterator) | 3227 CAST_ACCESSOR(JSMapIterator) |
| 3238 CAST_ACCESSOR(JSMessageObject) | 3228 CAST_ACCESSOR(JSMessageObject) |
| 3239 CAST_ACCESSOR(JSModule) | 3229 CAST_ACCESSOR(JSModule) |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3423 void LiteralsArray::set_literal(int literal_index, Object* literal) { | 3413 void LiteralsArray::set_literal(int literal_index, Object* literal) { |
| 3424 set(kFirstLiteralIndex + literal_index, literal); | 3414 set(kFirstLiteralIndex + literal_index, literal); |
| 3425 } | 3415 } |
| 3426 | 3416 |
| 3427 | 3417 |
| 3428 int LiteralsArray::literals_count() const { | 3418 int LiteralsArray::literals_count() const { |
| 3429 return length() - kFirstLiteralIndex; | 3419 return length() - kFirstLiteralIndex; |
| 3430 } | 3420 } |
| 3431 | 3421 |
| 3432 | 3422 |
| 3423 Object* BindingsArray::get(int index) const { return FixedArray::get(index); } |
| 3424 |
| 3425 |
| 3426 void BindingsArray::set(int index, Object* value) { |
| 3427 FixedArray::set(index, value); |
| 3428 } |
| 3429 |
| 3430 |
| 3431 void BindingsArray::set(int index, Smi* value) { |
| 3432 FixedArray::set(index, value); |
| 3433 } |
| 3434 |
| 3435 |
| 3436 void BindingsArray::set(int index, Object* value, WriteBarrierMode mode) { |
| 3437 FixedArray::set(index, value, mode); |
| 3438 } |
| 3439 |
| 3440 |
| 3441 int BindingsArray::length() const { return FixedArray::length(); } |
| 3442 |
| 3443 |
| 3444 BindingsArray* BindingsArray::cast(Object* object) { |
| 3445 SLOW_DCHECK(object->IsBindingsArray()); |
| 3446 return reinterpret_cast<BindingsArray*>(object); |
| 3447 } |
| 3448 |
| 3449 void BindingsArray::set_feedback_vector(TypeFeedbackVector* vector) { |
| 3450 set(kVectorIndex, vector); |
| 3451 } |
| 3452 |
| 3453 |
| 3454 TypeFeedbackVector* BindingsArray::feedback_vector() const { |
| 3455 return TypeFeedbackVector::cast(get(kVectorIndex)); |
| 3456 } |
| 3457 |
| 3458 |
| 3459 JSReceiver* BindingsArray::bound_function() const { |
| 3460 return JSReceiver::cast(get(kBoundFunctionIndex)); |
| 3461 } |
| 3462 |
| 3463 |
| 3464 void BindingsArray::set_bound_function(JSReceiver* function) { |
| 3465 set(kBoundFunctionIndex, function); |
| 3466 } |
| 3467 |
| 3468 |
| 3469 Object* BindingsArray::bound_this() const { return get(kBoundThisIndex); } |
| 3470 |
| 3471 |
| 3472 void BindingsArray::set_bound_this(Object* bound_this) { |
| 3473 set(kBoundThisIndex, bound_this); |
| 3474 } |
| 3475 |
| 3476 |
| 3477 Object* BindingsArray::binding(int binding_index) const { |
| 3478 return get(kFirstBindingIndex + binding_index); |
| 3479 } |
| 3480 |
| 3481 |
| 3482 void BindingsArray::set_binding(int binding_index, Object* binding) { |
| 3483 set(kFirstBindingIndex + binding_index, binding); |
| 3484 } |
| 3485 |
| 3486 |
| 3487 int BindingsArray::bindings_count() const { |
| 3488 return length() - kFirstBindingIndex; |
| 3489 } |
| 3490 |
| 3491 |
| 3433 void HandlerTable::SetRangeStart(int index, int value) { | 3492 void HandlerTable::SetRangeStart(int index, int value) { |
| 3434 set(index * kRangeEntrySize + kRangeStartIndex, Smi::FromInt(value)); | 3493 set(index * kRangeEntrySize + kRangeStartIndex, Smi::FromInt(value)); |
| 3435 } | 3494 } |
| 3436 | 3495 |
| 3437 | 3496 |
| 3438 void HandlerTable::SetRangeEnd(int index, int value) { | 3497 void HandlerTable::SetRangeEnd(int index, int value) { |
| 3439 set(index * kRangeEntrySize + kRangeEndIndex, Smi::FromInt(value)); | 3498 set(index * kRangeEntrySize + kRangeEndIndex, Smi::FromInt(value)); |
| 3440 } | 3499 } |
| 3441 | 3500 |
| 3442 | 3501 |
| (...skipping 1031 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4474 set_bit_field(bit_field() & ~(1 << kHasNonInstancePrototype)); | 4533 set_bit_field(bit_field() & ~(1 << kHasNonInstancePrototype)); |
| 4475 } | 4534 } |
| 4476 } | 4535 } |
| 4477 | 4536 |
| 4478 | 4537 |
| 4479 bool Map::has_non_instance_prototype() { | 4538 bool Map::has_non_instance_prototype() { |
| 4480 return ((1 << kHasNonInstancePrototype) & bit_field()) != 0; | 4539 return ((1 << kHasNonInstancePrototype) & bit_field()) != 0; |
| 4481 } | 4540 } |
| 4482 | 4541 |
| 4483 | 4542 |
| 4484 void Map::set_is_constructor() { | 4543 void Map::set_is_constructor(bool value) { |
| 4485 set_bit_field(bit_field() | (1 << kIsConstructor)); | 4544 if (value) { |
| 4545 set_bit_field(bit_field() | (1 << kIsConstructor)); |
| 4546 } else { |
| 4547 set_bit_field(bit_field() & ~(1 << kIsConstructor)); |
| 4548 } |
| 4486 } | 4549 } |
| 4487 | 4550 |
| 4488 | 4551 |
| 4489 bool Map::is_constructor() const { | 4552 bool Map::is_constructor() const { |
| 4490 return ((1 << kIsConstructor) & bit_field()) != 0; | 4553 return ((1 << kIsConstructor) & bit_field()) != 0; |
| 4491 } | 4554 } |
| 4492 | 4555 |
| 4493 | 4556 |
| 4494 void Map::set_is_hidden_prototype() { | 4557 void Map::set_is_hidden_prototype() { |
| 4495 set_bit_field3(IsHiddenPrototype::update(bit_field3(), true)); | 4558 set_bit_field3(IsHiddenPrototype::update(bit_field3(), true)); |
| (...skipping 965 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5461 set_constructor_or_backpointer(constructor, mode); | 5524 set_constructor_or_backpointer(constructor, mode); |
| 5462 } | 5525 } |
| 5463 | 5526 |
| 5464 | 5527 |
| 5465 Handle<Map> Map::CopyInitialMap(Handle<Map> map) { | 5528 Handle<Map> Map::CopyInitialMap(Handle<Map> map) { |
| 5466 return CopyInitialMap(map, map->instance_size(), map->GetInObjectProperties(), | 5529 return CopyInitialMap(map, map->instance_size(), map->GetInObjectProperties(), |
| 5467 map->unused_property_fields()); | 5530 map->unused_property_fields()); |
| 5468 } | 5531 } |
| 5469 | 5532 |
| 5470 | 5533 |
| 5471 ACCESSORS(JSBoundFunction, length, Object, kLengthOffset) | |
| 5472 ACCESSORS(JSBoundFunction, name, Object, kNameOffset) | |
| 5473 ACCESSORS(JSBoundFunction, bound_target_function, JSReceiver, | |
| 5474 kBoundTargetFunctionOffset) | |
| 5475 ACCESSORS(JSBoundFunction, bound_this, Object, kBoundThisOffset) | |
| 5476 ACCESSORS(JSBoundFunction, bound_arguments, FixedArray, kBoundArgumentsOffset) | |
| 5477 ACCESSORS(JSBoundFunction, creation_context, Context, kCreationContextOffset) | |
| 5478 | |
| 5479 ACCESSORS(JSFunction, shared, SharedFunctionInfo, kSharedFunctionInfoOffset) | 5534 ACCESSORS(JSFunction, shared, SharedFunctionInfo, kSharedFunctionInfoOffset) |
| 5480 ACCESSORS(JSFunction, literals, LiteralsArray, kLiteralsOffset) | 5535 ACCESSORS(JSFunction, literals_or_bindings, FixedArray, kLiteralsOffset) |
| 5481 ACCESSORS(JSFunction, next_function_link, Object, kNextFunctionLinkOffset) | 5536 ACCESSORS(JSFunction, next_function_link, Object, kNextFunctionLinkOffset) |
| 5482 | 5537 |
| 5483 ACCESSORS(JSGlobalObject, native_context, Context, kNativeContextOffset) | 5538 ACCESSORS(JSGlobalObject, native_context, Context, kNativeContextOffset) |
| 5484 ACCESSORS(JSGlobalObject, global_proxy, JSObject, kGlobalProxyOffset) | 5539 ACCESSORS(JSGlobalObject, global_proxy, JSObject, kGlobalProxyOffset) |
| 5485 | 5540 |
| 5486 ACCESSORS(JSGlobalProxy, native_context, Object, kNativeContextOffset) | 5541 ACCESSORS(JSGlobalProxy, native_context, Object, kNativeContextOffset) |
| 5487 ACCESSORS(JSGlobalProxy, hash, Object, kHashOffset) | 5542 ACCESSORS(JSGlobalProxy, hash, Object, kHashOffset) |
| 5488 | 5543 |
| 5489 ACCESSORS(AccessorInfo, name, Object, kNameOffset) | 5544 ACCESSORS(AccessorInfo, name, Object, kNameOffset) |
| 5490 SMI_ACCESSORS(AccessorInfo, flag, kFlagOffset) | 5545 SMI_ACCESSORS(AccessorInfo, flag, kFlagOffset) |
| (...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5813 } | 5868 } |
| 5814 | 5869 |
| 5815 | 5870 |
| 5816 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, needs_home_object, | 5871 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, needs_home_object, |
| 5817 kNeedsHomeObject) | 5872 kNeedsHomeObject) |
| 5818 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, native, kNative) | 5873 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, native, kNative) |
| 5819 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, force_inline, kForceInline) | 5874 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, force_inline, kForceInline) |
| 5820 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, | 5875 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, |
| 5821 name_should_print_as_anonymous, | 5876 name_should_print_as_anonymous, |
| 5822 kNameShouldPrintAsAnonymous) | 5877 kNameShouldPrintAsAnonymous) |
| 5878 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, bound, kBoundFunction) |
| 5823 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_anonymous, kIsAnonymous) | 5879 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_anonymous, kIsAnonymous) |
| 5824 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_function, kIsFunction) | 5880 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_function, kIsFunction) |
| 5825 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, dont_crankshaft, | 5881 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, dont_crankshaft, |
| 5826 kDontCrankshaft) | 5882 kDontCrankshaft) |
| 5827 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, dont_flush, kDontFlush) | 5883 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, dont_flush, kDontFlush) |
| 5828 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_arrow, kIsArrow) | 5884 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_arrow, kIsArrow) |
| 5829 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_generator, kIsGenerator) | 5885 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_generator, kIsGenerator) |
| 5830 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_concise_method, | 5886 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_concise_method, |
| 5831 kIsConciseMethod) | 5887 kIsConciseMethod) |
| 5832 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_accessor_function, | 5888 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_accessor_function, |
| (...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6257 | 6313 |
| 6258 | 6314 |
| 6259 bool JSFunction::is_compiled() { | 6315 bool JSFunction::is_compiled() { |
| 6260 Builtins* builtins = GetIsolate()->builtins(); | 6316 Builtins* builtins = GetIsolate()->builtins(); |
| 6261 return code() != builtins->builtin(Builtins::kCompileLazy) && | 6317 return code() != builtins->builtin(Builtins::kCompileLazy) && |
| 6262 code() != builtins->builtin(Builtins::kCompileOptimized) && | 6318 code() != builtins->builtin(Builtins::kCompileOptimized) && |
| 6263 code() != builtins->builtin(Builtins::kCompileOptimizedConcurrent); | 6319 code() != builtins->builtin(Builtins::kCompileOptimizedConcurrent); |
| 6264 } | 6320 } |
| 6265 | 6321 |
| 6266 | 6322 |
| 6323 LiteralsArray* JSFunction::literals() { |
| 6324 DCHECK(!shared()->bound()); |
| 6325 return LiteralsArray::cast(literals_or_bindings()); |
| 6326 } |
| 6327 |
| 6328 |
| 6329 void JSFunction::set_literals(LiteralsArray* literals) { |
| 6330 DCHECK(!shared()->bound()); |
| 6331 set_literals_or_bindings(literals); |
| 6332 } |
| 6333 |
| 6334 |
| 6335 BindingsArray* JSFunction::function_bindings() { |
| 6336 DCHECK(shared()->bound()); |
| 6337 return BindingsArray::cast(literals_or_bindings()); |
| 6338 } |
| 6339 |
| 6340 |
| 6341 void JSFunction::set_function_bindings(BindingsArray* bindings) { |
| 6342 DCHECK(shared()->bound()); |
| 6343 // Bound function literal may be initialized to the empty fixed array |
| 6344 // before the bindings are set. |
| 6345 DCHECK(bindings == GetHeap()->empty_fixed_array() || |
| 6346 bindings->map() == GetHeap()->fixed_array_map()); |
| 6347 set_literals_or_bindings(bindings); |
| 6348 } |
| 6349 |
| 6350 |
| 6267 int JSFunction::NumberOfLiterals() { | 6351 int JSFunction::NumberOfLiterals() { |
| 6352 DCHECK(!shared()->bound()); |
| 6268 return literals()->length(); | 6353 return literals()->length(); |
| 6269 } | 6354 } |
| 6270 | 6355 |
| 6271 | 6356 |
| 6272 ACCESSORS(JSProxy, target, JSReceiver, kTargetOffset) | 6357 ACCESSORS(JSProxy, target, JSReceiver, kTargetOffset) |
| 6273 ACCESSORS(JSProxy, handler, Object, kHandlerOffset) | 6358 ACCESSORS(JSProxy, handler, Object, kHandlerOffset) |
| 6274 ACCESSORS(JSProxy, hash, Object, kHashOffset) | 6359 ACCESSORS(JSProxy, hash, Object, kHashOffset) |
| 6275 | 6360 |
| 6276 bool JSProxy::IsRevoked() const { return !handler()->IsJSReceiver(); } | 6361 bool JSProxy::IsRevoked() const { return !handler()->IsJSReceiver(); } |
| 6277 | 6362 |
| (...skipping 1522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7800 #undef WRITE_INT64_FIELD | 7885 #undef WRITE_INT64_FIELD |
| 7801 #undef READ_BYTE_FIELD | 7886 #undef READ_BYTE_FIELD |
| 7802 #undef WRITE_BYTE_FIELD | 7887 #undef WRITE_BYTE_FIELD |
| 7803 #undef NOBARRIER_READ_BYTE_FIELD | 7888 #undef NOBARRIER_READ_BYTE_FIELD |
| 7804 #undef NOBARRIER_WRITE_BYTE_FIELD | 7889 #undef NOBARRIER_WRITE_BYTE_FIELD |
| 7805 | 7890 |
| 7806 } // namespace internal | 7891 } // namespace internal |
| 7807 } // namespace v8 | 7892 } // namespace v8 |
| 7808 | 7893 |
| 7809 #endif // V8_OBJECTS_INL_H_ | 7894 #endif // V8_OBJECTS_INL_H_ |
| OLD | NEW |