Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(607)

Side by Side Diff: src/objects-inl.h

Issue 2811183005: Do not use new struct type where unnecessary. (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698