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 #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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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_ |
OLD | NEW |