| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 399 } | 399 } |
| 400 | 400 |
| 401 | 401 |
| 402 bool Object::IsExternalFloatArray() { | 402 bool Object::IsExternalFloatArray() { |
| 403 return Object::IsHeapObject() && | 403 return Object::IsHeapObject() && |
| 404 HeapObject::cast(this)->map()->instance_type() == | 404 HeapObject::cast(this)->map()->instance_type() == |
| 405 EXTERNAL_FLOAT_ARRAY_TYPE; | 405 EXTERNAL_FLOAT_ARRAY_TYPE; |
| 406 } | 406 } |
| 407 | 407 |
| 408 | 408 |
| 409 bool Object::IsExternalDoubleArray() { |
| 410 return Object::IsHeapObject() && |
| 411 HeapObject::cast(this)->map()->instance_type() == |
| 412 EXTERNAL_DOUBLE_ARRAY_TYPE; |
| 413 } |
| 414 |
| 415 |
| 409 bool MaybeObject::IsFailure() { | 416 bool MaybeObject::IsFailure() { |
| 410 return HAS_FAILURE_TAG(this); | 417 return HAS_FAILURE_TAG(this); |
| 411 } | 418 } |
| 412 | 419 |
| 413 | 420 |
| 414 bool MaybeObject::IsRetryAfterGC() { | 421 bool MaybeObject::IsRetryAfterGC() { |
| 415 return HAS_FAILURE_TAG(this) | 422 return HAS_FAILURE_TAG(this) |
| 416 && Failure::cast(this)->type() == Failure::RETRY_AFTER_GC; | 423 && Failure::cast(this)->type() == Failure::RETRY_AFTER_GC; |
| 417 } | 424 } |
| 418 | 425 |
| (...skipping 1475 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1894 CAST_ACCESSOR(Proxy) | 1901 CAST_ACCESSOR(Proxy) |
| 1895 CAST_ACCESSOR(ByteArray) | 1902 CAST_ACCESSOR(ByteArray) |
| 1896 CAST_ACCESSOR(ExternalArray) | 1903 CAST_ACCESSOR(ExternalArray) |
| 1897 CAST_ACCESSOR(ExternalByteArray) | 1904 CAST_ACCESSOR(ExternalByteArray) |
| 1898 CAST_ACCESSOR(ExternalUnsignedByteArray) | 1905 CAST_ACCESSOR(ExternalUnsignedByteArray) |
| 1899 CAST_ACCESSOR(ExternalShortArray) | 1906 CAST_ACCESSOR(ExternalShortArray) |
| 1900 CAST_ACCESSOR(ExternalUnsignedShortArray) | 1907 CAST_ACCESSOR(ExternalUnsignedShortArray) |
| 1901 CAST_ACCESSOR(ExternalIntArray) | 1908 CAST_ACCESSOR(ExternalIntArray) |
| 1902 CAST_ACCESSOR(ExternalUnsignedIntArray) | 1909 CAST_ACCESSOR(ExternalUnsignedIntArray) |
| 1903 CAST_ACCESSOR(ExternalFloatArray) | 1910 CAST_ACCESSOR(ExternalFloatArray) |
| 1911 CAST_ACCESSOR(ExternalDoubleArray) |
| 1904 CAST_ACCESSOR(ExternalPixelArray) | 1912 CAST_ACCESSOR(ExternalPixelArray) |
| 1905 CAST_ACCESSOR(Struct) | 1913 CAST_ACCESSOR(Struct) |
| 1906 | 1914 |
| 1907 | 1915 |
| 1908 #define MAKE_STRUCT_CAST(NAME, Name, name) CAST_ACCESSOR(Name) | 1916 #define MAKE_STRUCT_CAST(NAME, Name, name) CAST_ACCESSOR(Name) |
| 1909 STRUCT_LIST(MAKE_STRUCT_CAST) | 1917 STRUCT_LIST(MAKE_STRUCT_CAST) |
| 1910 #undef MAKE_STRUCT_CAST | 1918 #undef MAKE_STRUCT_CAST |
| 1911 | 1919 |
| 1912 | 1920 |
| 1913 template <typename Shape, typename Key> | 1921 template <typename Shape, typename Key> |
| (...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2308 } | 2316 } |
| 2309 | 2317 |
| 2310 | 2318 |
| 2311 void ExternalFloatArray::set(int index, float value) { | 2319 void ExternalFloatArray::set(int index, float value) { |
| 2312 ASSERT((index >= 0) && (index < this->length())); | 2320 ASSERT((index >= 0) && (index < this->length())); |
| 2313 float* ptr = static_cast<float*>(external_pointer()); | 2321 float* ptr = static_cast<float*>(external_pointer()); |
| 2314 ptr[index] = value; | 2322 ptr[index] = value; |
| 2315 } | 2323 } |
| 2316 | 2324 |
| 2317 | 2325 |
| 2326 double ExternalDoubleArray::get(int index) { |
| 2327 ASSERT((index >= 0) && (index < this->length())); |
| 2328 double* ptr = static_cast<double*>(external_pointer()); |
| 2329 return ptr[index]; |
| 2330 } |
| 2331 |
| 2332 |
| 2333 void ExternalDoubleArray::set(int index, double value) { |
| 2334 ASSERT((index >= 0) && (index < this->length())); |
| 2335 double* ptr = static_cast<double*>(external_pointer()); |
| 2336 ptr[index] = value; |
| 2337 } |
| 2338 |
| 2339 |
| 2318 int Map::visitor_id() { | 2340 int Map::visitor_id() { |
| 2319 return READ_BYTE_FIELD(this, kVisitorIdOffset); | 2341 return READ_BYTE_FIELD(this, kVisitorIdOffset); |
| 2320 } | 2342 } |
| 2321 | 2343 |
| 2322 | 2344 |
| 2323 void Map::set_visitor_id(int id) { | 2345 void Map::set_visitor_id(int id) { |
| 2324 ASSERT(0 <= id && id < 256); | 2346 ASSERT(0 <= id && id < 256); |
| 2325 WRITE_BYTE_FIELD(this, kVisitorIdOffset, static_cast<byte>(id)); | 2347 WRITE_BYTE_FIELD(this, kVisitorIdOffset, static_cast<byte>(id)); |
| 2326 } | 2348 } |
| 2327 | 2349 |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2508 bool Map::is_shared() { | 2530 bool Map::is_shared() { |
| 2509 return ((1 << kIsShared) & bit_field2()) != 0; | 2531 return ((1 << kIsShared) & bit_field2()) != 0; |
| 2510 } | 2532 } |
| 2511 | 2533 |
| 2512 | 2534 |
| 2513 JSFunction* Map::unchecked_constructor() { | 2535 JSFunction* Map::unchecked_constructor() { |
| 2514 return reinterpret_cast<JSFunction*>(READ_FIELD(this, kConstructorOffset)); | 2536 return reinterpret_cast<JSFunction*>(READ_FIELD(this, kConstructorOffset)); |
| 2515 } | 2537 } |
| 2516 | 2538 |
| 2517 | 2539 |
| 2540 FixedArray* Map::unchecked_prototype_transitions() { |
| 2541 return reinterpret_cast<FixedArray*>( |
| 2542 READ_FIELD(this, kPrototypeTransitionsOffset)); |
| 2543 } |
| 2544 |
| 2545 |
| 2518 Code::Flags Code::flags() { | 2546 Code::Flags Code::flags() { |
| 2519 return static_cast<Flags>(READ_INT_FIELD(this, kFlagsOffset)); | 2547 return static_cast<Flags>(READ_INT_FIELD(this, kFlagsOffset)); |
| 2520 } | 2548 } |
| 2521 | 2549 |
| 2522 | 2550 |
| 2523 void Code::set_flags(Code::Flags flags) { | 2551 void Code::set_flags(Code::Flags flags) { |
| 2524 STATIC_ASSERT(Code::NUMBER_OF_KINDS <= (kFlagsKindMask >> kFlagsKindShift)+1); | 2552 STATIC_ASSERT(Code::NUMBER_OF_KINDS <= (kFlagsKindMask >> kFlagsKindShift)+1); |
| 2525 // Make sure that all call stubs have an arguments count. | 2553 // Make sure that all call stubs have an arguments count. |
| 2526 ASSERT((ExtractKindFromFlags(flags) != CALL_IC && | 2554 ASSERT((ExtractKindFromFlags(flags) != CALL_IC && |
| 2527 ExtractKindFromFlags(flags) != KEYED_CALL_IC) || | 2555 ExtractKindFromFlags(flags) != KEYED_CALL_IC) || |
| (...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2916 Map* new_map = Map::cast(obj); | 2944 Map* new_map = Map::cast(obj); |
| 2917 new_map->set_has_fast_elements(false); | 2945 new_map->set_has_fast_elements(false); |
| 2918 isolate()->counters()->map_fast_to_slow_elements()->Increment(); | 2946 isolate()->counters()->map_fast_to_slow_elements()->Increment(); |
| 2919 return new_map; | 2947 return new_map; |
| 2920 } | 2948 } |
| 2921 | 2949 |
| 2922 | 2950 |
| 2923 ACCESSORS(Map, instance_descriptors, DescriptorArray, | 2951 ACCESSORS(Map, instance_descriptors, DescriptorArray, |
| 2924 kInstanceDescriptorsOffset) | 2952 kInstanceDescriptorsOffset) |
| 2925 ACCESSORS(Map, code_cache, Object, kCodeCacheOffset) | 2953 ACCESSORS(Map, code_cache, Object, kCodeCacheOffset) |
| 2954 ACCESSORS(Map, prototype_transitions, FixedArray, kPrototypeTransitionsOffset) |
| 2926 ACCESSORS(Map, constructor, Object, kConstructorOffset) | 2955 ACCESSORS(Map, constructor, Object, kConstructorOffset) |
| 2927 | 2956 |
| 2928 ACCESSORS(JSFunction, shared, SharedFunctionInfo, kSharedFunctionInfoOffset) | 2957 ACCESSORS(JSFunction, shared, SharedFunctionInfo, kSharedFunctionInfoOffset) |
| 2929 ACCESSORS(JSFunction, literals, FixedArray, kLiteralsOffset) | 2958 ACCESSORS(JSFunction, literals, FixedArray, kLiteralsOffset) |
| 2930 ACCESSORS_GCSAFE(JSFunction, next_function_link, Object, | 2959 ACCESSORS_GCSAFE(JSFunction, next_function_link, Object, |
| 2931 kNextFunctionLinkOffset) | 2960 kNextFunctionLinkOffset) |
| 2932 | 2961 |
| 2933 ACCESSORS(GlobalObject, builtins, JSBuiltinsObject, kBuiltinsOffset) | 2962 ACCESSORS(GlobalObject, builtins, JSBuiltinsObject, kBuiltinsOffset) |
| 2934 ACCESSORS(GlobalObject, global_context, Context, kGlobalContextOffset) | 2963 ACCESSORS(GlobalObject, global_context, Context, kGlobalContextOffset) |
| 2935 ACCESSORS(GlobalObject, global_receiver, JSObject, kGlobalReceiverOffset) | 2964 ACCESSORS(GlobalObject, global_receiver, JSObject, kGlobalReceiverOffset) |
| (...skipping 695 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3631 case EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE: | 3660 case EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE: |
| 3632 return EXTERNAL_UNSIGNED_BYTE_ELEMENTS; | 3661 return EXTERNAL_UNSIGNED_BYTE_ELEMENTS; |
| 3633 case EXTERNAL_SHORT_ARRAY_TYPE: | 3662 case EXTERNAL_SHORT_ARRAY_TYPE: |
| 3634 return EXTERNAL_SHORT_ELEMENTS; | 3663 return EXTERNAL_SHORT_ELEMENTS; |
| 3635 case EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE: | 3664 case EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE: |
| 3636 return EXTERNAL_UNSIGNED_SHORT_ELEMENTS; | 3665 return EXTERNAL_UNSIGNED_SHORT_ELEMENTS; |
| 3637 case EXTERNAL_INT_ARRAY_TYPE: | 3666 case EXTERNAL_INT_ARRAY_TYPE: |
| 3638 return EXTERNAL_INT_ELEMENTS; | 3667 return EXTERNAL_INT_ELEMENTS; |
| 3639 case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: | 3668 case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: |
| 3640 return EXTERNAL_UNSIGNED_INT_ELEMENTS; | 3669 return EXTERNAL_UNSIGNED_INT_ELEMENTS; |
| 3670 case EXTERNAL_FLOAT_ARRAY_TYPE: |
| 3671 return EXTERNAL_FLOAT_ELEMENTS; |
| 3672 case EXTERNAL_DOUBLE_ARRAY_TYPE: |
| 3673 return EXTERNAL_DOUBLE_ELEMENTS; |
| 3641 case EXTERNAL_PIXEL_ARRAY_TYPE: | 3674 case EXTERNAL_PIXEL_ARRAY_TYPE: |
| 3642 return EXTERNAL_PIXEL_ELEMENTS; | 3675 return EXTERNAL_PIXEL_ELEMENTS; |
| 3643 default: | 3676 default: |
| 3644 break; | 3677 break; |
| 3645 } | 3678 } |
| 3646 } | 3679 } |
| 3647 ASSERT(array->map()->instance_type() == EXTERNAL_FLOAT_ARRAY_TYPE); | 3680 UNREACHABLE(); |
| 3648 return EXTERNAL_FLOAT_ELEMENTS; | 3681 return DICTIONARY_ELEMENTS; |
| 3649 } | 3682 } |
| 3650 | 3683 |
| 3651 | 3684 |
| 3652 bool JSObject::HasFastElements() { | 3685 bool JSObject::HasFastElements() { |
| 3653 return GetElementsKind() == FAST_ELEMENTS; | 3686 return GetElementsKind() == FAST_ELEMENTS; |
| 3654 } | 3687 } |
| 3655 | 3688 |
| 3656 | 3689 |
| 3657 bool JSObject::HasDictionaryElements() { | 3690 bool JSObject::HasDictionaryElements() { |
| 3658 return GetElementsKind() == DICTIONARY_ELEMENTS; | 3691 return GetElementsKind() == DICTIONARY_ELEMENTS; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 3679 EXTERNAL_ELEMENTS_CHECK(Byte, EXTERNAL_BYTE_ARRAY_TYPE) | 3712 EXTERNAL_ELEMENTS_CHECK(Byte, EXTERNAL_BYTE_ARRAY_TYPE) |
| 3680 EXTERNAL_ELEMENTS_CHECK(UnsignedByte, EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE) | 3713 EXTERNAL_ELEMENTS_CHECK(UnsignedByte, EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE) |
| 3681 EXTERNAL_ELEMENTS_CHECK(Short, EXTERNAL_SHORT_ARRAY_TYPE) | 3714 EXTERNAL_ELEMENTS_CHECK(Short, EXTERNAL_SHORT_ARRAY_TYPE) |
| 3682 EXTERNAL_ELEMENTS_CHECK(UnsignedShort, | 3715 EXTERNAL_ELEMENTS_CHECK(UnsignedShort, |
| 3683 EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE) | 3716 EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE) |
| 3684 EXTERNAL_ELEMENTS_CHECK(Int, EXTERNAL_INT_ARRAY_TYPE) | 3717 EXTERNAL_ELEMENTS_CHECK(Int, EXTERNAL_INT_ARRAY_TYPE) |
| 3685 EXTERNAL_ELEMENTS_CHECK(UnsignedInt, | 3718 EXTERNAL_ELEMENTS_CHECK(UnsignedInt, |
| 3686 EXTERNAL_UNSIGNED_INT_ARRAY_TYPE) | 3719 EXTERNAL_UNSIGNED_INT_ARRAY_TYPE) |
| 3687 EXTERNAL_ELEMENTS_CHECK(Float, | 3720 EXTERNAL_ELEMENTS_CHECK(Float, |
| 3688 EXTERNAL_FLOAT_ARRAY_TYPE) | 3721 EXTERNAL_FLOAT_ARRAY_TYPE) |
| 3722 EXTERNAL_ELEMENTS_CHECK(Double, |
| 3723 EXTERNAL_DOUBLE_ARRAY_TYPE) |
| 3689 EXTERNAL_ELEMENTS_CHECK(Pixel, EXTERNAL_PIXEL_ARRAY_TYPE) | 3724 EXTERNAL_ELEMENTS_CHECK(Pixel, EXTERNAL_PIXEL_ARRAY_TYPE) |
| 3690 | 3725 |
| 3691 | 3726 |
| 3692 bool JSObject::HasNamedInterceptor() { | 3727 bool JSObject::HasNamedInterceptor() { |
| 3693 return map()->has_named_interceptor(); | 3728 return map()->has_named_interceptor(); |
| 3694 } | 3729 } |
| 3695 | 3730 |
| 3696 | 3731 |
| 3697 bool JSObject::HasIndexedInterceptor() { | 3732 bool JSObject::HasIndexedInterceptor() { |
| 3698 return map()->has_indexed_interceptor(); | 3733 return map()->has_indexed_interceptor(); |
| (...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4157 #undef WRITE_INT_FIELD | 4192 #undef WRITE_INT_FIELD |
| 4158 #undef READ_SHORT_FIELD | 4193 #undef READ_SHORT_FIELD |
| 4159 #undef WRITE_SHORT_FIELD | 4194 #undef WRITE_SHORT_FIELD |
| 4160 #undef READ_BYTE_FIELD | 4195 #undef READ_BYTE_FIELD |
| 4161 #undef WRITE_BYTE_FIELD | 4196 #undef WRITE_BYTE_FIELD |
| 4162 | 4197 |
| 4163 | 4198 |
| 4164 } } // namespace v8::internal | 4199 } } // namespace v8::internal |
| 4165 | 4200 |
| 4166 #endif // V8_OBJECTS_INL_H_ | 4201 #endif // V8_OBJECTS_INL_H_ |
| OLD | NEW |