| 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 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 } \ | 132 } \ |
| 133 void holder::set_##name(bool value) { \ | 133 void holder::set_##name(bool value) { \ |
| 134 set_##field(BooleanBit::set(field(), offset, value)); \ | 134 set_##field(BooleanBit::set(field(), offset, value)); \ |
| 135 } | 135 } |
| 136 | 136 |
| 137 #define TYPE_CHECKER(type, instancetype) \ | 137 #define TYPE_CHECKER(type, instancetype) \ |
| 138 bool HeapObject::Is##type() const { \ | 138 bool HeapObject::Is##type() const { \ |
| 139 return map()->instance_type() == instancetype; \ | 139 return map()->instance_type() == instancetype; \ |
| 140 } | 140 } |
| 141 | 141 |
| 142 TYPE_CHECKER(BreakPointInfo, TUPLE2_TYPE) |
| 142 TYPE_CHECKER(ByteArray, BYTE_ARRAY_TYPE) | 143 TYPE_CHECKER(ByteArray, BYTE_ARRAY_TYPE) |
| 143 TYPE_CHECKER(BytecodeArray, BYTECODE_ARRAY_TYPE) | 144 TYPE_CHECKER(BytecodeArray, BYTECODE_ARRAY_TYPE) |
| 145 TYPE_CHECKER(CallHandlerInfo, TUPLE2_TYPE) |
| 144 TYPE_CHECKER(Cell, CELL_TYPE) | 146 TYPE_CHECKER(Cell, CELL_TYPE) |
| 145 TYPE_CHECKER(Code, CODE_TYPE) | 147 TYPE_CHECKER(Code, CODE_TYPE) |
| 148 TYPE_CHECKER(ConstantElementsPair, TUPLE2_TYPE) |
| 146 TYPE_CHECKER(FixedDoubleArray, FIXED_DOUBLE_ARRAY_TYPE) | 149 TYPE_CHECKER(FixedDoubleArray, FIXED_DOUBLE_ARRAY_TYPE) |
| 147 TYPE_CHECKER(Foreign, FOREIGN_TYPE) | 150 TYPE_CHECKER(Foreign, FOREIGN_TYPE) |
| 148 TYPE_CHECKER(FreeSpace, FREE_SPACE_TYPE) | 151 TYPE_CHECKER(FreeSpace, FREE_SPACE_TYPE) |
| 149 TYPE_CHECKER(HeapNumber, HEAP_NUMBER_TYPE) | 152 TYPE_CHECKER(HeapNumber, HEAP_NUMBER_TYPE) |
| 150 TYPE_CHECKER(JSArgumentsObject, JS_ARGUMENTS_TYPE) | 153 TYPE_CHECKER(JSArgumentsObject, JS_ARGUMENTS_TYPE) |
| 151 TYPE_CHECKER(JSArray, JS_ARRAY_TYPE) | 154 TYPE_CHECKER(JSArray, JS_ARRAY_TYPE) |
| 152 TYPE_CHECKER(JSArrayBuffer, JS_ARRAY_BUFFER_TYPE) | 155 TYPE_CHECKER(JSArrayBuffer, JS_ARRAY_BUFFER_TYPE) |
| 153 TYPE_CHECKER(JSAsyncGeneratorObject, JS_ASYNC_GENERATOR_OBJECT_TYPE) | 156 TYPE_CHECKER(JSAsyncGeneratorObject, JS_ASYNC_GENERATOR_OBJECT_TYPE) |
| 154 TYPE_CHECKER(JSBoundFunction, JS_BOUND_FUNCTION_TYPE) | 157 TYPE_CHECKER(JSBoundFunction, JS_BOUND_FUNCTION_TYPE) |
| 155 TYPE_CHECKER(JSContextExtensionObject, JS_CONTEXT_EXTENSION_OBJECT_TYPE) | 158 TYPE_CHECKER(JSContextExtensionObject, JS_CONTEXT_EXTENSION_OBJECT_TYPE) |
| (...skipping 18 matching lines...) Expand all Loading... |
| 174 TYPE_CHECKER(JSWeakMap, JS_WEAK_MAP_TYPE) | 177 TYPE_CHECKER(JSWeakMap, JS_WEAK_MAP_TYPE) |
| 175 TYPE_CHECKER(JSWeakSet, JS_WEAK_SET_TYPE) | 178 TYPE_CHECKER(JSWeakSet, JS_WEAK_SET_TYPE) |
| 176 TYPE_CHECKER(Map, MAP_TYPE) | 179 TYPE_CHECKER(Map, MAP_TYPE) |
| 177 TYPE_CHECKER(MutableHeapNumber, MUTABLE_HEAP_NUMBER_TYPE) | 180 TYPE_CHECKER(MutableHeapNumber, MUTABLE_HEAP_NUMBER_TYPE) |
| 178 TYPE_CHECKER(Oddball, ODDBALL_TYPE) | 181 TYPE_CHECKER(Oddball, ODDBALL_TYPE) |
| 179 TYPE_CHECKER(PropertyCell, PROPERTY_CELL_TYPE) | 182 TYPE_CHECKER(PropertyCell, PROPERTY_CELL_TYPE) |
| 180 TYPE_CHECKER(SharedFunctionInfo, SHARED_FUNCTION_INFO_TYPE) | 183 TYPE_CHECKER(SharedFunctionInfo, SHARED_FUNCTION_INFO_TYPE) |
| 181 TYPE_CHECKER(SourcePositionTableWithFrameCache, TUPLE2_TYPE) | 184 TYPE_CHECKER(SourcePositionTableWithFrameCache, TUPLE2_TYPE) |
| 182 TYPE_CHECKER(Symbol, SYMBOL_TYPE) | 185 TYPE_CHECKER(Symbol, SYMBOL_TYPE) |
| 183 TYPE_CHECKER(TransitionArray, TRANSITION_ARRAY_TYPE) | 186 TYPE_CHECKER(TransitionArray, TRANSITION_ARRAY_TYPE) |
| 187 TYPE_CHECKER(TypeFeedbackInfo, TUPLE3_TYPE) |
| 184 TYPE_CHECKER(WeakCell, WEAK_CELL_TYPE) | 188 TYPE_CHECKER(WeakCell, WEAK_CELL_TYPE) |
| 185 TYPE_CHECKER(WeakFixedArray, FIXED_ARRAY_TYPE) | 189 TYPE_CHECKER(WeakFixedArray, FIXED_ARRAY_TYPE) |
| 186 | 190 |
| 187 #define TYPED_ARRAY_TYPE_CHECKER(Type, type, TYPE, ctype, size) \ | 191 #define TYPED_ARRAY_TYPE_CHECKER(Type, type, TYPE, ctype, size) \ |
| 188 TYPE_CHECKER(Fixed##Type##Array, FIXED_##TYPE##_ARRAY_TYPE) | 192 TYPE_CHECKER(Fixed##Type##Array, FIXED_##TYPE##_ARRAY_TYPE) |
| 189 TYPED_ARRAYS(TYPED_ARRAY_TYPE_CHECKER) | 193 TYPED_ARRAYS(TYPED_ARRAY_TYPE_CHECKER) |
| 190 #undef TYPED_ARRAY_TYPE_CHECKER | 194 #undef TYPED_ARRAY_TYPE_CHECKER |
| 191 | 195 |
| 192 #undef TYPE_CHECKER | 196 #undef TYPE_CHECKER |
| 193 | 197 |
| (...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 606 return this->IsHeapNumber() && | 610 return this->IsHeapNumber() && |
| 607 i::IsMinusZero(HeapNumber::cast(this)->value()); | 611 i::IsMinusZero(HeapNumber::cast(this)->value()); |
| 608 } | 612 } |
| 609 | 613 |
| 610 // ------------------------------------ | 614 // ------------------------------------ |
| 611 // Cast operations | 615 // Cast operations |
| 612 | 616 |
| 613 CAST_ACCESSOR(AbstractCode) | 617 CAST_ACCESSOR(AbstractCode) |
| 614 CAST_ACCESSOR(ArrayList) | 618 CAST_ACCESSOR(ArrayList) |
| 615 CAST_ACCESSOR(BoilerplateDescription) | 619 CAST_ACCESSOR(BoilerplateDescription) |
| 620 CAST_ACCESSOR(BreakPointInfo) |
| 616 CAST_ACCESSOR(ByteArray) | 621 CAST_ACCESSOR(ByteArray) |
| 617 CAST_ACCESSOR(BytecodeArray) | 622 CAST_ACCESSOR(BytecodeArray) |
| 623 CAST_ACCESSOR(CallHandlerInfo) |
| 618 CAST_ACCESSOR(Cell) | 624 CAST_ACCESSOR(Cell) |
| 619 CAST_ACCESSOR(Code) | 625 CAST_ACCESSOR(Code) |
| 620 CAST_ACCESSOR(ConsString) | 626 CAST_ACCESSOR(ConsString) |
| 627 CAST_ACCESSOR(ConstantElementsPair) |
| 621 CAST_ACCESSOR(DeoptimizationInputData) | 628 CAST_ACCESSOR(DeoptimizationInputData) |
| 622 CAST_ACCESSOR(DeoptimizationOutputData) | 629 CAST_ACCESSOR(DeoptimizationOutputData) |
| 623 CAST_ACCESSOR(DependentCode) | 630 CAST_ACCESSOR(DependentCode) |
| 624 CAST_ACCESSOR(DescriptorArray) | 631 CAST_ACCESSOR(DescriptorArray) |
| 625 CAST_ACCESSOR(ExternalOneByteString) | 632 CAST_ACCESSOR(ExternalOneByteString) |
| 626 CAST_ACCESSOR(ExternalString) | 633 CAST_ACCESSOR(ExternalString) |
| 627 CAST_ACCESSOR(ExternalTwoByteString) | 634 CAST_ACCESSOR(ExternalTwoByteString) |
| 628 CAST_ACCESSOR(FixedArray) | 635 CAST_ACCESSOR(FixedArray) |
| 629 CAST_ACCESSOR(FixedArrayBase) | 636 CAST_ACCESSOR(FixedArrayBase) |
| 630 CAST_ACCESSOR(FixedDoubleArray) | 637 CAST_ACCESSOR(FixedDoubleArray) |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 680 CAST_ACCESSOR(TemplateList) | 687 CAST_ACCESSOR(TemplateList) |
| 681 CAST_ACCESSOR(RegExpMatchInfo) | 688 CAST_ACCESSOR(RegExpMatchInfo) |
| 682 CAST_ACCESSOR(ScopeInfo) | 689 CAST_ACCESSOR(ScopeInfo) |
| 683 CAST_ACCESSOR(SeededNumberDictionary) | 690 CAST_ACCESSOR(SeededNumberDictionary) |
| 684 CAST_ACCESSOR(SeqOneByteString) | 691 CAST_ACCESSOR(SeqOneByteString) |
| 685 CAST_ACCESSOR(SeqString) | 692 CAST_ACCESSOR(SeqString) |
| 686 CAST_ACCESSOR(SeqTwoByteString) | 693 CAST_ACCESSOR(SeqTwoByteString) |
| 687 CAST_ACCESSOR(SharedFunctionInfo) | 694 CAST_ACCESSOR(SharedFunctionInfo) |
| 688 CAST_ACCESSOR(SourcePositionTableWithFrameCache) | 695 CAST_ACCESSOR(SourcePositionTableWithFrameCache) |
| 689 CAST_ACCESSOR(SlicedString) | 696 CAST_ACCESSOR(SlicedString) |
| 697 CAST_ACCESSOR(SloppyArgumentsElements) |
| 690 CAST_ACCESSOR(Smi) | 698 CAST_ACCESSOR(Smi) |
| 691 CAST_ACCESSOR(String) | 699 CAST_ACCESSOR(String) |
| 692 CAST_ACCESSOR(StringSet) | 700 CAST_ACCESSOR(StringSet) |
| 693 CAST_ACCESSOR(StringTable) | 701 CAST_ACCESSOR(StringTable) |
| 694 CAST_ACCESSOR(Struct) | 702 CAST_ACCESSOR(Struct) |
| 695 CAST_ACCESSOR(Symbol) | 703 CAST_ACCESSOR(Symbol) |
| 696 CAST_ACCESSOR(TemplateInfo) | 704 CAST_ACCESSOR(TemplateInfo) |
| 697 CAST_ACCESSOR(ThinString) | 705 CAST_ACCESSOR(ThinString) |
| 706 CAST_ACCESSOR(TypeFeedbackInfo) |
| 698 CAST_ACCESSOR(UnseededNumberDictionary) | 707 CAST_ACCESSOR(UnseededNumberDictionary) |
| 699 CAST_ACCESSOR(WeakCell) | 708 CAST_ACCESSOR(WeakCell) |
| 700 CAST_ACCESSOR(WeakFixedArray) | 709 CAST_ACCESSOR(WeakFixedArray) |
| 701 CAST_ACCESSOR(WeakHashTable) | 710 CAST_ACCESSOR(WeakHashTable) |
| 702 CAST_ACCESSOR(SloppyArgumentsElements) | |
| 703 | 711 |
| 704 #define MAKE_STRUCT_CAST(NAME, Name, name) CAST_ACCESSOR(Name) | 712 #define MAKE_STRUCT_CAST(NAME, Name, name) CAST_ACCESSOR(Name) |
| 705 STRUCT_LIST(MAKE_STRUCT_CAST) | 713 STRUCT_LIST(MAKE_STRUCT_CAST) |
| 706 #undef MAKE_STRUCT_CAST | 714 #undef MAKE_STRUCT_CAST |
| 707 | 715 |
| 708 #undef CAST_ACCESSOR | 716 #undef CAST_ACCESSOR |
| 709 | 717 |
| 710 bool Object::HasValidElements() { | 718 bool Object::HasValidElements() { |
| 711 // Dictionary is covered under FixedArray. | 719 // Dictionary is covered under FixedArray. |
| 712 return IsFixedArray() || IsFixedDoubleArray() || IsFixedTypedArrayBase(); | 720 return IsFixedArray() || IsFixedDoubleArray() || IsFixedTypedArrayBase(); |
| (...skipping 7628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8341 #undef WRITE_BYTE_FIELD | 8349 #undef WRITE_BYTE_FIELD |
| 8342 #undef NOBARRIER_READ_BYTE_FIELD | 8350 #undef NOBARRIER_READ_BYTE_FIELD |
| 8343 #undef NOBARRIER_WRITE_BYTE_FIELD | 8351 #undef NOBARRIER_WRITE_BYTE_FIELD |
| 8344 | 8352 |
| 8345 } // namespace internal | 8353 } // namespace internal |
| 8346 } // namespace v8 | 8354 } // namespace v8 |
| 8347 | 8355 |
| 8348 #include "src/objects/object-macros-undef.h" | 8356 #include "src/objects/object-macros-undef.h" |
| 8349 | 8357 |
| 8350 #endif // V8_OBJECTS_INL_H_ | 8358 #endif // V8_OBJECTS_INL_H_ |
| OLD | NEW |