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

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

Issue 2811183005: Do not use new struct type where unnecessary. (Closed)
Patch Set: rebase 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
« no previous file with comments | « src/objects-debug.cc ('k') | src/objects-printer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 18 matching lines...) Expand all
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
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
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
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_
OLDNEW
« no previous file with comments | « src/objects-debug.cc ('k') | src/objects-printer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698