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

Side by Side Diff: src/code-stubs.h

Issue 2313093002: [stubs] Port StoreTransitionStub and ElementsTransitionAndStoreStub to TurboFan. (Closed)
Patch Set: Addressing comments Created 4 years, 3 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/code-stub-assembler.cc ('k') | src/code-stubs.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 #ifndef V8_CODE_STUBS_H_ 5 #ifndef V8_CODE_STUBS_H_
6 #define V8_CODE_STUBS_H_ 6 #define V8_CODE_STUBS_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/assembler.h" 9 #include "src/assembler.h"
10 #include "src/code-stub-assembler.h" 10 #include "src/code-stub-assembler.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 /* These are only called from FCG */ \ 60 /* These are only called from FCG */ \
61 /* They can be removed when only the TF */ \ 61 /* They can be removed when only the TF */ \
62 /* version of the corresponding stub is */ \ 62 /* version of the corresponding stub is */ \
63 /* used universally */ \ 63 /* used universally */ \
64 V(CallICTrampoline) \ 64 V(CallICTrampoline) \
65 V(LoadICTrampoline) \ 65 V(LoadICTrampoline) \
66 V(KeyedLoadICTrampoline) \ 66 V(KeyedLoadICTrampoline) \
67 V(KeyedStoreICTrampoline) \ 67 V(KeyedStoreICTrampoline) \
68 V(StoreICTrampoline) \ 68 V(StoreICTrampoline) \
69 /* --- HydrogenCodeStubs --- */ \ 69 /* --- HydrogenCodeStubs --- */ \
70 V(ElementsTransitionAndStore) \
71 V(FastCloneShallowArray) \ 70 V(FastCloneShallowArray) \
72 V(NumberToString) \ 71 V(NumberToString) \
73 V(StringAdd) \ 72 V(StringAdd) \
74 V(ToObject) \ 73 V(ToObject) \
75 V(Typeof) \ 74 V(Typeof) \
76 /* These builtins w/ JS linkage are */ \ 75 /* These builtins w/ JS linkage are */ \
77 /* just fast-cases of C++ builtins. They */ \ 76 /* just fast-cases of C++ builtins. They */ \
78 /* require varg support from TF */ \ 77 /* require varg support from TF */ \
79 V(FastArrayPush) \ 78 V(FastArrayPush) \
80 V(FastFunctionBind) \ 79 V(FastFunctionBind) \
81 /* These will be ported/eliminated */ \ 80 /* These will be ported/eliminated */ \
82 /* as part of the new IC system, ask */ \ 81 /* as part of the new IC system, ask */ \
83 /* ishell before doing anything */ \ 82 /* ishell before doing anything */ \
84 V(KeyedLoadGeneric) \ 83 V(KeyedLoadGeneric) \
85 V(LoadConstant) \ 84 V(LoadConstant) \
86 V(LoadDictionaryElement) \ 85 V(LoadDictionaryElement) \
87 V(LoadFastElement) \ 86 V(LoadFastElement) \
88 V(LoadField) \ 87 V(LoadField) \
89 V(StoreTransition) \
90 /* These should never be ported to TF */ \ 88 /* These should never be ported to TF */ \
91 /* because they are either used only by */ \ 89 /* because they are either used only by */ \
92 /* FCG/Crankshaft or are deprecated */ \ 90 /* FCG/Crankshaft or are deprecated */ \
93 V(BinaryOpIC) \ 91 V(BinaryOpIC) \
94 V(BinaryOpWithAllocationSite) \ 92 V(BinaryOpWithAllocationSite) \
95 V(ToBooleanIC) \ 93 V(ToBooleanIC) \
96 V(RegExpConstructResult) \ 94 V(RegExpConstructResult) \
97 V(TransitionElementsKind) \ 95 V(TransitionElementsKind) \
98 V(StoreGlobalViaContext) \ 96 V(StoreGlobalViaContext) \
99 /* --- TurboFanCodeStubs --- */ \ 97 /* --- TurboFanCodeStubs --- */ \
(...skipping 27 matching lines...) Expand all
127 V(ShiftRight) \ 125 V(ShiftRight) \
128 V(ShiftRightLogical) \ 126 V(ShiftRightLogical) \
129 V(ShiftLeft) \ 127 V(ShiftLeft) \
130 V(BitwiseAnd) \ 128 V(BitwiseAnd) \
131 V(BitwiseOr) \ 129 V(BitwiseOr) \
132 V(BitwiseXor) \ 130 V(BitwiseXor) \
133 V(Inc) \ 131 V(Inc) \
134 V(InternalArrayNoArgumentConstructor) \ 132 V(InternalArrayNoArgumentConstructor) \
135 V(InternalArraySingleArgumentConstructor) \ 133 V(InternalArraySingleArgumentConstructor) \
136 V(Dec) \ 134 V(Dec) \
135 V(ElementsTransitionAndStore) \
137 V(FastCloneShallowObject) \ 136 V(FastCloneShallowObject) \
138 V(FastCloneRegExp) \ 137 V(FastCloneRegExp) \
139 V(FastNewClosure) \ 138 V(FastNewClosure) \
140 V(FastNewFunctionContext) \ 139 V(FastNewFunctionContext) \
141 V(InstanceOf) \ 140 V(InstanceOf) \
142 V(LessThan) \ 141 V(LessThan) \
143 V(LessThanOrEqual) \ 142 V(LessThanOrEqual) \
144 V(GreaterThan) \ 143 V(GreaterThan) \
145 V(GreaterThanOrEqual) \ 144 V(GreaterThanOrEqual) \
146 V(Equal) \ 145 V(Equal) \
(...skipping 14 matching lines...) Expand all
161 V(ToLength) \ 160 V(ToLength) \
162 V(HasProperty) \ 161 V(HasProperty) \
163 V(ForInFilter) \ 162 V(ForInFilter) \
164 V(GetProperty) \ 163 V(GetProperty) \
165 V(LoadICTF) \ 164 V(LoadICTF) \
166 V(KeyedLoadICTF) \ 165 V(KeyedLoadICTF) \
167 V(StoreFastElement) \ 166 V(StoreFastElement) \
168 V(StoreField) \ 167 V(StoreField) \
169 V(StoreGlobal) \ 168 V(StoreGlobal) \
170 V(StoreInterceptor) \ 169 V(StoreInterceptor) \
170 V(StoreTransition) \
171 V(LoadApiGetter) \ 171 V(LoadApiGetter) \
172 V(LoadIndexedInterceptor) \ 172 V(LoadIndexedInterceptor) \
173 V(GrowArrayElements) \ 173 V(GrowArrayElements) \
174 /* These are only called from FGC and */ \ 174 /* These are only called from FGC and */ \
175 /* can be removed when we use ignition */ \ 175 /* can be removed when we use ignition */ \
176 /* only */ \ 176 /* only */ \
177 V(LoadICTrampolineTF) \ 177 V(LoadICTrampolineTF) \
178 V(LoadGlobalICTrampoline) \ 178 V(LoadGlobalICTrampoline) \
179 V(KeyedLoadICTrampolineTF) 179 V(KeyedLoadICTrampolineTF)
180 180
(...skipping 1478 matching lines...) Expand 10 before | Expand all | Expand 10 after
1659 class RepresentationBits 1659 class RepresentationBits
1660 : public BitField<Representation::Kind, StoreFieldByIndexBits::kNext, 4> { 1660 : public BitField<Representation::Kind, StoreFieldByIndexBits::kNext, 4> {
1661 }; 1661 };
1662 STATIC_ASSERT(Representation::kNumRepresentations - 1 < 1662 STATIC_ASSERT(Representation::kNumRepresentations - 1 <
1663 RepresentationBits::kMax); 1663 RepresentationBits::kMax);
1664 1664
1665 DEFINE_CALL_INTERFACE_DESCRIPTOR(StoreWithVector); 1665 DEFINE_CALL_INTERFACE_DESCRIPTOR(StoreWithVector);
1666 DEFINE_TURBOFAN_CODE_STUB(StoreField, TurboFanCodeStub); 1666 DEFINE_TURBOFAN_CODE_STUB(StoreField, TurboFanCodeStub);
1667 }; 1667 };
1668 1668
1669 1669 class StoreTransitionStub : public TurboFanCodeStub {
1670 // Register and parameter access methods are specified here instead of in
1671 // the CallInterfaceDescriptor because the stub uses a different descriptor
1672 // if FLAG_vector_stores is on.
1673 class StoreTransitionHelper {
1674 public:
1675 static Register ReceiverRegister() {
1676 return StoreTransitionDescriptor::ReceiverRegister();
1677 }
1678
1679 static Register NameRegister() {
1680 return StoreTransitionDescriptor::NameRegister();
1681 }
1682
1683 static Register ValueRegister() {
1684 return StoreTransitionDescriptor::ValueRegister();
1685 }
1686
1687 static Register SlotRegister() {
1688 return VectorStoreTransitionDescriptor::SlotRegister();
1689 }
1690
1691 static Register VectorRegister() {
1692 return VectorStoreTransitionDescriptor::VectorRegister();
1693 }
1694
1695 static Register MapRegister() {
1696 return VectorStoreTransitionDescriptor::MapRegister();
1697 }
1698
1699 static int ReceiverIndex() { return StoreTransitionDescriptor::kReceiver; }
1700
1701 static int NameIndex() { return StoreTransitionDescriptor::kReceiver; }
1702
1703 static int ValueIndex() { return StoreTransitionDescriptor::kValue; }
1704
1705 static int MapIndex() {
1706 DCHECK(static_cast<int>(VectorStoreTransitionDescriptor::kMap) ==
1707 static_cast<int>(StoreTransitionDescriptor::kMap));
1708 return StoreTransitionDescriptor::kMap;
1709 }
1710
1711 static int VectorIndex() {
1712 if (HasVirtualSlotArg()) {
1713 return VectorStoreTransitionDescriptor::kVirtualSlotVector;
1714 }
1715 return VectorStoreTransitionDescriptor::kVector;
1716 }
1717
1718 // Some platforms don't have a slot arg.
1719 static bool HasVirtualSlotArg() {
1720 return SlotRegister().is(no_reg);
1721 }
1722 };
1723
1724
1725 class StoreTransitionStub : public HandlerStub {
1726 public: 1670 public:
1727 enum StoreMode { 1671 enum StoreMode {
1728 StoreMapOnly, 1672 StoreMapOnly,
1729 StoreMapAndValue, 1673 StoreMapAndValue,
1730 ExtendStorageAndStoreMapAndValue 1674 ExtendStorageAndStoreMapAndValue
1731 }; 1675 };
1732 1676
1733 explicit StoreTransitionStub(Isolate* isolate) : HandlerStub(isolate) { 1677 explicit StoreTransitionStub(Isolate* isolate) : TurboFanCodeStub(isolate) {
1734 set_sub_minor_key(StoreModeBits::encode(StoreMapOnly)); 1678 minor_key_ = StoreModeBits::encode(StoreMapOnly);
1735 } 1679 }
1736 1680
1737 StoreTransitionStub(Isolate* isolate, FieldIndex index, 1681 StoreTransitionStub(Isolate* isolate, FieldIndex index,
1738 Representation representation, StoreMode store_mode) 1682 Representation representation, StoreMode store_mode)
1739 : HandlerStub(isolate) { 1683 : TurboFanCodeStub(isolate) {
1740 DCHECK(store_mode != StoreMapOnly); 1684 DCHECK(store_mode != StoreMapOnly);
1741 int property_index_key = index.GetFieldAccessStubKey(); 1685 int property_index_key = index.GetFieldAccessStubKey();
1742 uint8_t repr = PropertyDetails::EncodeRepresentation(representation); 1686 minor_key_ = StoreFieldByIndexBits::encode(property_index_key) |
1743 set_sub_minor_key(StoreFieldByIndexBits::encode(property_index_key) | 1687 RepresentationBits::encode(representation.kind()) |
1744 RepresentationBits::encode(repr) | 1688 StoreModeBits::encode(store_mode);
1745 StoreModeBits::encode(store_mode));
1746 } 1689 }
1747 1690
1691 Code::Kind GetCodeKind() const override { return Code::HANDLER; }
1692 ExtraICState GetExtraICState() const override { return Code::STORE_IC; }
1693
1748 FieldIndex index() const { 1694 FieldIndex index() const {
1749 DCHECK(store_mode() != StoreMapOnly); 1695 DCHECK(store_mode() != StoreMapOnly);
1750 int property_index_key = StoreFieldByIndexBits::decode(sub_minor_key()); 1696 int property_index_key = StoreFieldByIndexBits::decode(minor_key_);
1751 return FieldIndex::FromFieldAccessStubKey(property_index_key); 1697 return FieldIndex::FromFieldAccessStubKey(property_index_key);
1752 } 1698 }
1753 1699
1754 Representation representation() { 1700 Representation representation() const {
1755 DCHECK(store_mode() != StoreMapOnly); 1701 DCHECK(store_mode() != StoreMapOnly);
1756 uint8_t repr = RepresentationBits::decode(sub_minor_key()); 1702 return Representation::FromKind(RepresentationBits::decode(minor_key_));
1757 return PropertyDetails::DecodeRepresentation(repr);
1758 } 1703 }
1759 1704
1760 StoreMode store_mode() const { 1705 StoreMode store_mode() const { return StoreModeBits::decode(minor_key_); }
1761 return StoreModeBits::decode(sub_minor_key());
1762 }
1763
1764 protected:
1765 Code::Kind kind() const override { return Code::STORE_IC; }
1766 void InitializeDescriptor(CodeStubDescriptor* descriptor) override;
1767 1706
1768 private: 1707 private:
1769 class StoreFieldByIndexBits : public BitField<int, 0, 13> {}; 1708 class StoreFieldByIndexBits : public BitField<int, 0, 13> {};
1770 class RepresentationBits : public BitField<uint8_t, 13, 4> {}; 1709 class RepresentationBits : public BitField<Representation::Kind, 13, 4> {};
1710 STATIC_ASSERT(Representation::kNumRepresentations - 1 <
1711 RepresentationBits::kMax);
1771 class StoreModeBits : public BitField<StoreMode, 17, 2> {}; 1712 class StoreModeBits : public BitField<StoreMode, 17, 2> {};
1772 1713
1773 DEFINE_CALL_INTERFACE_DESCRIPTOR(VectorStoreTransition); 1714 DEFINE_CALL_INTERFACE_DESCRIPTOR(StoreTransition);
1774 DEFINE_HANDLER_CODE_STUB(StoreTransition, HandlerStub); 1715 DEFINE_TURBOFAN_CODE_STUB(StoreTransition, TurboFanCodeStub);
1775 }; 1716 };
1776 1717
1777 class StoreGlobalStub : public TurboFanCodeStub { 1718 class StoreGlobalStub : public TurboFanCodeStub {
1778 public: 1719 public:
1779 StoreGlobalStub(Isolate* isolate, PropertyCellType type, 1720 StoreGlobalStub(Isolate* isolate, PropertyCellType type,
1780 Maybe<PropertyCellConstantType> constant_type, 1721 Maybe<PropertyCellConstantType> constant_type,
1781 bool check_global) 1722 bool check_global)
1782 : TurboFanCodeStub(isolate) { 1723 : TurboFanCodeStub(isolate) {
1783 PropertyCellConstantType encoded_constant_type = 1724 PropertyCellConstantType encoded_constant_type =
1784 constant_type.FromMaybe(PropertyCellConstantType::kSmi); 1725 constant_type.FromMaybe(PropertyCellConstantType::kSmi);
(...skipping 1200 matching lines...) Expand 10 before | Expand all | Expand 10 after
2985 StoreElementStub(Isolate* isolate, ElementsKind elements_kind, 2926 StoreElementStub(Isolate* isolate, ElementsKind elements_kind,
2986 KeyedAccessStoreMode mode) 2927 KeyedAccessStoreMode mode)
2987 : PlatformCodeStub(isolate) { 2928 : PlatformCodeStub(isolate) {
2988 // TODO(jkummerow): Rename this stub to StoreSlowElementStub, 2929 // TODO(jkummerow): Rename this stub to StoreSlowElementStub,
2989 // drop elements_kind parameter. 2930 // drop elements_kind parameter.
2990 DCHECK_EQ(DICTIONARY_ELEMENTS, elements_kind); 2931 DCHECK_EQ(DICTIONARY_ELEMENTS, elements_kind);
2991 minor_key_ = ElementsKindBits::encode(elements_kind) | 2932 minor_key_ = ElementsKindBits::encode(elements_kind) |
2992 CommonStoreModeBits::encode(mode); 2933 CommonStoreModeBits::encode(mode);
2993 } 2934 }
2994 2935
2995 CallInterfaceDescriptor GetCallInterfaceDescriptor() const override {
2996 return StoreWithVectorDescriptor(isolate());
2997 }
2998
2999 Code::Kind GetCodeKind() const override { return Code::HANDLER; } 2936 Code::Kind GetCodeKind() const override { return Code::HANDLER; }
3000 ExtraICState GetExtraICState() const override { return Code::KEYED_STORE_IC; } 2937 ExtraICState GetExtraICState() const override { return Code::KEYED_STORE_IC; }
3001 2938
3002 private: 2939 private:
3003 ElementsKind elements_kind() const { 2940 ElementsKind elements_kind() const {
3004 return ElementsKindBits::decode(minor_key_); 2941 return ElementsKindBits::decode(minor_key_);
3005 } 2942 }
3006 2943
3007 class ElementsKindBits 2944 class ElementsKindBits
3008 : public BitField<ElementsKind, CommonStoreModeBits::kNext, 8> {}; 2945 : public BitField<ElementsKind, CommonStoreModeBits::kNext, 8> {};
3009 2946
2947 DEFINE_CALL_INTERFACE_DESCRIPTOR(StoreWithVector);
3010 DEFINE_PLATFORM_CODE_STUB(StoreElement, PlatformCodeStub); 2948 DEFINE_PLATFORM_CODE_STUB(StoreElement, PlatformCodeStub);
3011 }; 2949 };
3012 2950
3013 class ToBooleanICStub : public HydrogenCodeStub { 2951 class ToBooleanICStub : public HydrogenCodeStub {
3014 public: 2952 public:
3015 enum Type { 2953 enum Type {
3016 UNDEFINED, 2954 UNDEFINED,
3017 BOOLEAN, 2955 BOOLEAN,
3018 NULL_TYPE, 2956 NULL_TYPE,
3019 SMI, 2957 SMI,
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
3076 : HydrogenCodeStub(isolate, init_state) {} 3014 : HydrogenCodeStub(isolate, init_state) {}
3077 3015
3078 class TypesBits : public BitField<uint16_t, 0, NUMBER_OF_TYPES> {}; 3016 class TypesBits : public BitField<uint16_t, 0, NUMBER_OF_TYPES> {};
3079 3017
3080 DEFINE_CALL_INTERFACE_DESCRIPTOR(TypeConversion); 3018 DEFINE_CALL_INTERFACE_DESCRIPTOR(TypeConversion);
3081 DEFINE_HYDROGEN_CODE_STUB(ToBooleanIC, HydrogenCodeStub); 3019 DEFINE_HYDROGEN_CODE_STUB(ToBooleanIC, HydrogenCodeStub);
3082 }; 3020 };
3083 3021
3084 std::ostream& operator<<(std::ostream& os, const ToBooleanICStub::Types& t); 3022 std::ostream& operator<<(std::ostream& os, const ToBooleanICStub::Types& t);
3085 3023
3086 class ElementsTransitionAndStoreStub : public HydrogenCodeStub { 3024 class ElementsTransitionAndStoreStub : public TurboFanCodeStub {
3087 public: 3025 public:
3088 ElementsTransitionAndStoreStub(Isolate* isolate, ElementsKind from_kind, 3026 ElementsTransitionAndStoreStub(Isolate* isolate, ElementsKind from_kind,
3089 ElementsKind to_kind, bool is_jsarray, 3027 ElementsKind to_kind, bool is_jsarray,
3090 KeyedAccessStoreMode store_mode) 3028 KeyedAccessStoreMode store_mode)
3091 : HydrogenCodeStub(isolate) { 3029 : TurboFanCodeStub(isolate) {
3092 set_sub_minor_key(CommonStoreModeBits::encode(store_mode) | 3030 minor_key_ = CommonStoreModeBits::encode(store_mode) |
3093 FromBits::encode(from_kind) | ToBits::encode(to_kind) | 3031 FromBits::encode(from_kind) | ToBits::encode(to_kind) |
3094 IsJSArrayBits::encode(is_jsarray)); 3032 IsJSArrayBits::encode(is_jsarray);
3095 } 3033 }
3096 3034
3097 ElementsKind from_kind() const { return FromBits::decode(sub_minor_key()); } 3035 ElementsKind from_kind() const { return FromBits::decode(minor_key_); }
3098 ElementsKind to_kind() const { return ToBits::decode(sub_minor_key()); } 3036 ElementsKind to_kind() const { return ToBits::decode(minor_key_); }
3099 bool is_jsarray() const { return IsJSArrayBits::decode(sub_minor_key()); } 3037 bool is_jsarray() const { return IsJSArrayBits::decode(minor_key_); }
3100 KeyedAccessStoreMode store_mode() const { 3038 KeyedAccessStoreMode store_mode() const {
3101 return CommonStoreModeBits::decode(sub_minor_key()); 3039 return CommonStoreModeBits::decode(minor_key_);
3102 } 3040 }
3103 3041
3104 Code::Kind GetCodeKind() const override { return Code::HANDLER; } 3042 Code::Kind GetCodeKind() const override { return Code::HANDLER; }
3105 ExtraICState GetExtraICState() const override { return Code::KEYED_STORE_IC; } 3043 ExtraICState GetExtraICState() const override { return Code::KEYED_STORE_IC; }
3106 3044
3107 private: 3045 private:
3108 class FromBits 3046 class FromBits
3109 : public BitField<ElementsKind, CommonStoreModeBits::kNext, 8> {}; 3047 : public BitField<ElementsKind, CommonStoreModeBits::kNext, 8> {};
3110 class ToBits : public BitField<ElementsKind, 11, 8> {}; 3048 class ToBits : public BitField<ElementsKind, 11, 8> {};
3111 class IsJSArrayBits : public BitField<bool, 19, 1> {}; 3049 class IsJSArrayBits : public BitField<bool, 19, 1> {};
3112 3050
3113 DEFINE_CALL_INTERFACE_DESCRIPTOR(VectorStoreTransition); 3051 DEFINE_CALL_INTERFACE_DESCRIPTOR(StoreTransition);
3114 DEFINE_HYDROGEN_CODE_STUB(ElementsTransitionAndStore, HydrogenCodeStub); 3052 DEFINE_TURBOFAN_CODE_STUB(ElementsTransitionAndStore, TurboFanCodeStub);
3115 }; 3053 };
3116 3054
3117 3055
3118 class StubFailureTrampolineStub : public PlatformCodeStub { 3056 class StubFailureTrampolineStub : public PlatformCodeStub {
3119 public: 3057 public:
3120 StubFailureTrampolineStub(Isolate* isolate, StubFunctionMode function_mode) 3058 StubFailureTrampolineStub(Isolate* isolate, StubFunctionMode function_mode)
3121 : PlatformCodeStub(isolate) { 3059 : PlatformCodeStub(isolate) {
3122 minor_key_ = FunctionModeField::encode(function_mode); 3060 minor_key_ = FunctionModeField::encode(function_mode);
3123 } 3061 }
3124 3062
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
3208 #undef DEFINE_HYDROGEN_CODE_STUB 3146 #undef DEFINE_HYDROGEN_CODE_STUB
3209 #undef DEFINE_CODE_STUB 3147 #undef DEFINE_CODE_STUB
3210 #undef DEFINE_CODE_STUB_BASE 3148 #undef DEFINE_CODE_STUB_BASE
3211 3149
3212 extern Representation RepresentationFromMachineType(MachineType type); 3150 extern Representation RepresentationFromMachineType(MachineType type);
3213 3151
3214 } // namespace internal 3152 } // namespace internal
3215 } // namespace v8 3153 } // namespace v8
3216 3154
3217 #endif // V8_CODE_STUBS_H_ 3155 #endif // V8_CODE_STUBS_H_
OLDNEW
« no previous file with comments | « src/code-stub-assembler.cc ('k') | src/code-stubs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698