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 17 matching lines...) Expand all Loading... |
173 TYPE_CHECKER(JSValue, JS_VALUE_TYPE) | 176 TYPE_CHECKER(JSValue, JS_VALUE_TYPE) |
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(Symbol, SYMBOL_TYPE) | 184 TYPE_CHECKER(Symbol, SYMBOL_TYPE) |
182 TYPE_CHECKER(TransitionArray, TRANSITION_ARRAY_TYPE) | 185 TYPE_CHECKER(TransitionArray, TRANSITION_ARRAY_TYPE) |
| 186 TYPE_CHECKER(TypeFeedbackInfo, TUPLE3_TYPE) |
183 TYPE_CHECKER(WeakCell, WEAK_CELL_TYPE) | 187 TYPE_CHECKER(WeakCell, WEAK_CELL_TYPE) |
184 TYPE_CHECKER(WeakFixedArray, FIXED_ARRAY_TYPE) | 188 TYPE_CHECKER(WeakFixedArray, FIXED_ARRAY_TYPE) |
185 | 189 |
186 #define TYPED_ARRAY_TYPE_CHECKER(Type, type, TYPE, ctype, size) \ | 190 #define TYPED_ARRAY_TYPE_CHECKER(Type, type, TYPE, ctype, size) \ |
187 TYPE_CHECKER(Fixed##Type##Array, FIXED_##TYPE##_ARRAY_TYPE) | 191 TYPE_CHECKER(Fixed##Type##Array, FIXED_##TYPE##_ARRAY_TYPE) |
188 TYPED_ARRAYS(TYPED_ARRAY_TYPE_CHECKER) | 192 TYPED_ARRAYS(TYPED_ARRAY_TYPE_CHECKER) |
189 #undef TYPED_ARRAY_TYPE_CHECKER | 193 #undef TYPED_ARRAY_TYPE_CHECKER |
190 | 194 |
191 #undef TYPE_CHECKER | 195 #undef TYPE_CHECKER |
192 | 196 |
(...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
605 return this->IsHeapNumber() && | 609 return this->IsHeapNumber() && |
606 i::IsMinusZero(HeapNumber::cast(this)->value()); | 610 i::IsMinusZero(HeapNumber::cast(this)->value()); |
607 } | 611 } |
608 | 612 |
609 // ------------------------------------ | 613 // ------------------------------------ |
610 // Cast operations | 614 // Cast operations |
611 | 615 |
612 CAST_ACCESSOR(AbstractCode) | 616 CAST_ACCESSOR(AbstractCode) |
613 CAST_ACCESSOR(ArrayList) | 617 CAST_ACCESSOR(ArrayList) |
614 CAST_ACCESSOR(BoilerplateDescription) | 618 CAST_ACCESSOR(BoilerplateDescription) |
| 619 CAST_ACCESSOR(BreakPointInfo) |
615 CAST_ACCESSOR(ByteArray) | 620 CAST_ACCESSOR(ByteArray) |
616 CAST_ACCESSOR(BytecodeArray) | 621 CAST_ACCESSOR(BytecodeArray) |
| 622 CAST_ACCESSOR(CallHandlerInfo) |
617 CAST_ACCESSOR(Cell) | 623 CAST_ACCESSOR(Cell) |
618 CAST_ACCESSOR(Code) | 624 CAST_ACCESSOR(Code) |
619 CAST_ACCESSOR(ConsString) | 625 CAST_ACCESSOR(ConsString) |
| 626 CAST_ACCESSOR(ConstantElementsPair) |
620 CAST_ACCESSOR(DeoptimizationInputData) | 627 CAST_ACCESSOR(DeoptimizationInputData) |
621 CAST_ACCESSOR(DeoptimizationOutputData) | 628 CAST_ACCESSOR(DeoptimizationOutputData) |
622 CAST_ACCESSOR(DependentCode) | 629 CAST_ACCESSOR(DependentCode) |
623 CAST_ACCESSOR(DescriptorArray) | 630 CAST_ACCESSOR(DescriptorArray) |
624 CAST_ACCESSOR(ExternalOneByteString) | 631 CAST_ACCESSOR(ExternalOneByteString) |
625 CAST_ACCESSOR(ExternalString) | 632 CAST_ACCESSOR(ExternalString) |
626 CAST_ACCESSOR(ExternalTwoByteString) | 633 CAST_ACCESSOR(ExternalTwoByteString) |
627 CAST_ACCESSOR(FixedArray) | 634 CAST_ACCESSOR(FixedArray) |
628 CAST_ACCESSOR(FixedArrayBase) | 635 CAST_ACCESSOR(FixedArrayBase) |
629 CAST_ACCESSOR(FixedDoubleArray) | 636 CAST_ACCESSOR(FixedDoubleArray) |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
678 CAST_ACCESSOR(PropertyCell) | 685 CAST_ACCESSOR(PropertyCell) |
679 CAST_ACCESSOR(TemplateList) | 686 CAST_ACCESSOR(TemplateList) |
680 CAST_ACCESSOR(RegExpMatchInfo) | 687 CAST_ACCESSOR(RegExpMatchInfo) |
681 CAST_ACCESSOR(ScopeInfo) | 688 CAST_ACCESSOR(ScopeInfo) |
682 CAST_ACCESSOR(SeededNumberDictionary) | 689 CAST_ACCESSOR(SeededNumberDictionary) |
683 CAST_ACCESSOR(SeqOneByteString) | 690 CAST_ACCESSOR(SeqOneByteString) |
684 CAST_ACCESSOR(SeqString) | 691 CAST_ACCESSOR(SeqString) |
685 CAST_ACCESSOR(SeqTwoByteString) | 692 CAST_ACCESSOR(SeqTwoByteString) |
686 CAST_ACCESSOR(SharedFunctionInfo) | 693 CAST_ACCESSOR(SharedFunctionInfo) |
687 CAST_ACCESSOR(SlicedString) | 694 CAST_ACCESSOR(SlicedString) |
| 695 CAST_ACCESSOR(SloppyArgumentsElements) |
688 CAST_ACCESSOR(Smi) | 696 CAST_ACCESSOR(Smi) |
689 CAST_ACCESSOR(String) | 697 CAST_ACCESSOR(String) |
690 CAST_ACCESSOR(StringSet) | 698 CAST_ACCESSOR(StringSet) |
691 CAST_ACCESSOR(StringTable) | 699 CAST_ACCESSOR(StringTable) |
692 CAST_ACCESSOR(Struct) | 700 CAST_ACCESSOR(Struct) |
693 CAST_ACCESSOR(Symbol) | 701 CAST_ACCESSOR(Symbol) |
694 CAST_ACCESSOR(TemplateInfo) | 702 CAST_ACCESSOR(TemplateInfo) |
695 CAST_ACCESSOR(ThinString) | 703 CAST_ACCESSOR(ThinString) |
| 704 CAST_ACCESSOR(TypeFeedbackInfo) |
696 CAST_ACCESSOR(UnseededNumberDictionary) | 705 CAST_ACCESSOR(UnseededNumberDictionary) |
697 CAST_ACCESSOR(WeakCell) | 706 CAST_ACCESSOR(WeakCell) |
698 CAST_ACCESSOR(WeakFixedArray) | 707 CAST_ACCESSOR(WeakFixedArray) |
699 CAST_ACCESSOR(WeakHashTable) | 708 CAST_ACCESSOR(WeakHashTable) |
700 CAST_ACCESSOR(SloppyArgumentsElements) | |
701 | 709 |
702 #define MAKE_STRUCT_CAST(NAME, Name, name) CAST_ACCESSOR(Name) | 710 #define MAKE_STRUCT_CAST(NAME, Name, name) CAST_ACCESSOR(Name) |
703 STRUCT_LIST(MAKE_STRUCT_CAST) | 711 STRUCT_LIST(MAKE_STRUCT_CAST) |
704 #undef MAKE_STRUCT_CAST | 712 #undef MAKE_STRUCT_CAST |
705 | 713 |
706 #undef CAST_ACCESSOR | 714 #undef CAST_ACCESSOR |
707 | 715 |
708 bool Object::HasValidElements() { | 716 bool Object::HasValidElements() { |
709 // Dictionary is covered under FixedArray. | 717 // Dictionary is covered under FixedArray. |
710 return IsFixedArray() || IsFixedDoubleArray() || IsFixedTypedArrayBase(); | 718 return IsFixedArray() || IsFixedDoubleArray() || IsFixedTypedArrayBase(); |
(...skipping 7559 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8270 #undef WRITE_BYTE_FIELD | 8278 #undef WRITE_BYTE_FIELD |
8271 #undef NOBARRIER_READ_BYTE_FIELD | 8279 #undef NOBARRIER_READ_BYTE_FIELD |
8272 #undef NOBARRIER_WRITE_BYTE_FIELD | 8280 #undef NOBARRIER_WRITE_BYTE_FIELD |
8273 | 8281 |
8274 } // namespace internal | 8282 } // namespace internal |
8275 } // namespace v8 | 8283 } // namespace v8 |
8276 | 8284 |
8277 #include "src/objects/object-macros-undef.h" | 8285 #include "src/objects/object-macros-undef.h" |
8278 | 8286 |
8279 #endif // V8_OBJECTS_INL_H_ | 8287 #endif // V8_OBJECTS_INL_H_ |
OLD | NEW |