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 825 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
836 TYPE_CHECKER(Foreign, FOREIGN_TYPE) | 836 TYPE_CHECKER(Foreign, FOREIGN_TYPE) |
837 | 837 |
838 | 838 |
839 bool Object::IsBoolean() const { | 839 bool Object::IsBoolean() const { |
840 return IsOddball() && | 840 return IsOddball() && |
841 ((Oddball::cast(this)->kind() & Oddball::kNotBooleanMask) == 0); | 841 ((Oddball::cast(this)->kind() & Oddball::kNotBooleanMask) == 0); |
842 } | 842 } |
843 | 843 |
844 | 844 |
845 TYPE_CHECKER(JSArray, JS_ARRAY_TYPE) | 845 TYPE_CHECKER(JSArray, JS_ARRAY_TYPE) |
846 TYPE_CHECKER(JSArrayBuffer, JS_ARRAY_BUFFER_TYPE) | 846 |
847 TYPE_CHECKER(JSTypedArray, JS_TYPED_ARRAY_TYPE) | 847 |
| 848 bool Object::IsJSArrayBuffer() const { |
| 849 if (!IsHeapObject()) return false; |
| 850 |
| 851 InstanceType type = HeapObject::cast(this)->map()->instance_type(); |
| 852 return type == JS_ARRAY_BUFFER_TYPE || type == JS_SHARED_ARRAY_BUFFER_TYPE; |
| 853 } |
| 854 |
| 855 |
| 856 bool Object::IsJSTypedArray() const { |
| 857 if (!IsHeapObject()) return false; |
| 858 |
| 859 InstanceType type = HeapObject::cast(this)->map()->instance_type(); |
| 860 return type == JS_TYPED_ARRAY_TYPE || type == JS_SHARED_TYPED_ARRAY_TYPE; |
| 861 } |
| 862 |
| 863 |
848 TYPE_CHECKER(JSDataView, JS_DATA_VIEW_TYPE) | 864 TYPE_CHECKER(JSDataView, JS_DATA_VIEW_TYPE) |
849 | 865 |
850 | 866 |
851 bool Object::IsJSArrayBufferView() const { | 867 bool Object::IsJSArrayBufferView() const { |
852 return IsJSDataView() || IsJSTypedArray(); | 868 return IsJSDataView() || IsJSTypedArray(); |
853 } | 869 } |
854 | 870 |
855 | 871 |
856 TYPE_CHECKER(JSRegExp, JS_REGEXP_TYPE) | 872 TYPE_CHECKER(JSRegExp, JS_REGEXP_TYPE) |
857 | 873 |
(...skipping 1100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1958 return JSBuiltinsObject::kSize; | 1974 return JSBuiltinsObject::kSize; |
1959 case JS_FUNCTION_TYPE: | 1975 case JS_FUNCTION_TYPE: |
1960 return JSFunction::kSize; | 1976 return JSFunction::kSize; |
1961 case JS_VALUE_TYPE: | 1977 case JS_VALUE_TYPE: |
1962 return JSValue::kSize; | 1978 return JSValue::kSize; |
1963 case JS_DATE_TYPE: | 1979 case JS_DATE_TYPE: |
1964 return JSDate::kSize; | 1980 return JSDate::kSize; |
1965 case JS_ARRAY_TYPE: | 1981 case JS_ARRAY_TYPE: |
1966 return JSArray::kSize; | 1982 return JSArray::kSize; |
1967 case JS_ARRAY_BUFFER_TYPE: | 1983 case JS_ARRAY_BUFFER_TYPE: |
| 1984 case JS_SHARED_ARRAY_BUFFER_TYPE: |
1968 return JSArrayBuffer::kSize; | 1985 return JSArrayBuffer::kSize; |
1969 case JS_TYPED_ARRAY_TYPE: | 1986 case JS_TYPED_ARRAY_TYPE: |
| 1987 case JS_SHARED_TYPED_ARRAY_TYPE: |
1970 return JSTypedArray::kSize; | 1988 return JSTypedArray::kSize; |
1971 case JS_DATA_VIEW_TYPE: | 1989 case JS_DATA_VIEW_TYPE: |
1972 return JSDataView::kSize; | 1990 return JSDataView::kSize; |
1973 case JS_SET_TYPE: | 1991 case JS_SET_TYPE: |
1974 return JSSet::kSize; | 1992 return JSSet::kSize; |
1975 case JS_MAP_TYPE: | 1993 case JS_MAP_TYPE: |
1976 return JSMap::kSize; | 1994 return JSMap::kSize; |
1977 case JS_SET_ITERATOR_TYPE: | 1995 case JS_SET_ITERATOR_TYPE: |
1978 return JSSetIterator::kSize; | 1996 return JSSetIterator::kSize; |
1979 case JS_MAP_ITERATOR_TYPE: | 1997 case JS_MAP_ITERATOR_TYPE: |
(...skipping 4476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6456 bool JSArrayBuffer::is_neuterable() { | 6474 bool JSArrayBuffer::is_neuterable() { |
6457 return BooleanBit::get(flag(), kIsNeuterableBit); | 6475 return BooleanBit::get(flag(), kIsNeuterableBit); |
6458 } | 6476 } |
6459 | 6477 |
6460 | 6478 |
6461 void JSArrayBuffer::set_is_neuterable(bool value) { | 6479 void JSArrayBuffer::set_is_neuterable(bool value) { |
6462 set_flag(BooleanBit::set(flag(), kIsNeuterableBit, value)); | 6480 set_flag(BooleanBit::set(flag(), kIsNeuterableBit, value)); |
6463 } | 6481 } |
6464 | 6482 |
6465 | 6483 |
| 6484 bool JSArrayBuffer::is_shared() { |
| 6485 return BooleanBit::get(flag(), kIsSharedBit); |
| 6486 } |
| 6487 |
| 6488 |
| 6489 void JSArrayBuffer::set_is_shared(bool value) { |
| 6490 set_flag(BooleanBit::set(flag(), kIsSharedBit, value)); |
| 6491 } |
| 6492 |
| 6493 |
6466 ACCESSORS(JSArrayBuffer, weak_next, Object, kWeakNextOffset) | 6494 ACCESSORS(JSArrayBuffer, weak_next, Object, kWeakNextOffset) |
6467 ACCESSORS(JSArrayBuffer, weak_first_view, Object, kWeakFirstViewOffset) | 6495 ACCESSORS(JSArrayBuffer, weak_first_view, Object, kWeakFirstViewOffset) |
6468 | 6496 |
6469 | 6497 |
6470 ACCESSORS(JSArrayBufferView, buffer, Object, kBufferOffset) | 6498 ACCESSORS(JSArrayBufferView, buffer, Object, kBufferOffset) |
6471 ACCESSORS(JSArrayBufferView, byte_offset, Object, kByteOffsetOffset) | 6499 ACCESSORS(JSArrayBufferView, byte_offset, Object, kByteOffsetOffset) |
6472 ACCESSORS(JSArrayBufferView, byte_length, Object, kByteLengthOffset) | 6500 ACCESSORS(JSArrayBufferView, byte_length, Object, kByteLengthOffset) |
6473 ACCESSORS(JSArrayBufferView, weak_next, Object, kWeakNextOffset) | 6501 ACCESSORS(JSArrayBufferView, weak_next, Object, kWeakNextOffset) |
6474 ACCESSORS(JSTypedArray, length, Object, kLengthOffset) | 6502 ACCESSORS(JSTypedArray, length, Object, kLengthOffset) |
6475 | 6503 |
| 6504 |
| 6505 bool JSTypedArray::is_shared() const { |
| 6506 return Smi::cast(READ_FIELD(this, kIsSharedOffset))->value() != 0; |
| 6507 } |
| 6508 |
| 6509 |
| 6510 void JSTypedArray::set_is_shared(bool value) { |
| 6511 WRITE_FIELD(this, kIsSharedOffset, Smi::FromInt(value)); |
| 6512 } |
| 6513 |
| 6514 |
6476 ACCESSORS(JSRegExp, data, Object, kDataOffset) | 6515 ACCESSORS(JSRegExp, data, Object, kDataOffset) |
6477 | 6516 |
6478 | 6517 |
6479 JSRegExp::Type JSRegExp::TypeTag() { | 6518 JSRegExp::Type JSRegExp::TypeTag() { |
6480 Object* data = this->data(); | 6519 Object* data = this->data(); |
6481 if (data->IsUndefined()) return JSRegExp::NOT_COMPILED; | 6520 if (data->IsUndefined()) return JSRegExp::NOT_COMPILED; |
6482 Smi* smi = Smi::cast(FixedArray::cast(data)->get(kTagIndex)); | 6521 Smi* smi = Smi::cast(FixedArray::cast(data)->get(kTagIndex)); |
6483 return static_cast<JSRegExp::Type>(smi->value()); | 6522 return static_cast<JSRegExp::Type>(smi->value()); |
6484 } | 6523 } |
6485 | 6524 |
(...skipping 1055 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7541 #undef READ_SHORT_FIELD | 7580 #undef READ_SHORT_FIELD |
7542 #undef WRITE_SHORT_FIELD | 7581 #undef WRITE_SHORT_FIELD |
7543 #undef READ_BYTE_FIELD | 7582 #undef READ_BYTE_FIELD |
7544 #undef WRITE_BYTE_FIELD | 7583 #undef WRITE_BYTE_FIELD |
7545 #undef NOBARRIER_READ_BYTE_FIELD | 7584 #undef NOBARRIER_READ_BYTE_FIELD |
7546 #undef NOBARRIER_WRITE_BYTE_FIELD | 7585 #undef NOBARRIER_WRITE_BYTE_FIELD |
7547 | 7586 |
7548 } } // namespace v8::internal | 7587 } } // namespace v8::internal |
7549 | 7588 |
7550 #endif // V8_OBJECTS_INL_H_ | 7589 #endif // V8_OBJECTS_INL_H_ |
OLD | NEW |