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 |