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 |