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