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/codegen.h" | 10 #include "src/codegen.h" |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 V(StubFailureTrampoline) \ | 60 V(StubFailureTrampoline) \ |
61 /* These are only called from FCG */ \ | 61 /* These are only called from FCG */ \ |
62 /* They can be removed when only the TF */ \ | 62 /* They can be removed when only the TF */ \ |
63 /* version of the corresponding stub is */ \ | 63 /* version of the corresponding stub is */ \ |
64 /* used universally */ \ | 64 /* used universally */ \ |
65 V(CallICTrampoline) \ | 65 V(CallICTrampoline) \ |
66 /* --- HydrogenCodeStubs --- */ \ | 66 /* --- HydrogenCodeStubs --- */ \ |
67 /* These will be ported/eliminated */ \ | 67 /* These will be ported/eliminated */ \ |
68 /* as part of the new IC system, ask */ \ | 68 /* as part of the new IC system, ask */ \ |
69 /* ishell before doing anything */ \ | 69 /* ishell before doing anything */ \ |
70 V(LoadConstant) \ | |
71 V(LoadField) \ | 70 V(LoadField) \ |
72 /* These should never be ported to TF */ \ | 71 /* These should never be ported to TF */ \ |
73 /* because they are either used only by */ \ | 72 /* because they are either used only by */ \ |
74 /* FCG/Crankshaft or are deprecated */ \ | 73 /* FCG/Crankshaft or are deprecated */ \ |
75 V(BinaryOpIC) \ | 74 V(BinaryOpIC) \ |
76 V(BinaryOpWithAllocationSite) \ | 75 V(BinaryOpWithAllocationSite) \ |
77 V(ToBooleanIC) \ | 76 V(ToBooleanIC) \ |
78 V(TransitionElementsKind) \ | 77 V(TransitionElementsKind) \ |
79 /* --- TurboFanCodeStubs --- */ \ | 78 /* --- TurboFanCodeStubs --- */ \ |
80 V(AllocateHeapNumber) \ | 79 V(AllocateHeapNumber) \ |
(...skipping 1141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1222 } | 1221 } |
1223 | 1222 |
1224 Code::Kind GetCodeKind() const override { return Code::HANDLER; } | 1223 Code::Kind GetCodeKind() const override { return Code::HANDLER; } |
1225 ExtraICState GetExtraICState() const override { return Code::STORE_IC; } | 1224 ExtraICState GetExtraICState() const override { return Code::STORE_IC; } |
1226 | 1225 |
1227 protected: | 1226 protected: |
1228 DEFINE_CALL_INTERFACE_DESCRIPTOR(StoreWithVector); | 1227 DEFINE_CALL_INTERFACE_DESCRIPTOR(StoreWithVector); |
1229 DEFINE_TURBOFAN_CODE_STUB(KeyedStoreSloppyArguments, TurboFanCodeStub); | 1228 DEFINE_TURBOFAN_CODE_STUB(KeyedStoreSloppyArguments, TurboFanCodeStub); |
1230 }; | 1229 }; |
1231 | 1230 |
1232 | |
1233 class LoadConstantStub : public HandlerStub { | |
1234 public: | |
1235 LoadConstantStub(Isolate* isolate, int constant_index) | |
1236 : HandlerStub(isolate) { | |
1237 set_sub_minor_key(ConstantIndexBits::encode(constant_index)); | |
1238 } | |
1239 | |
1240 int constant_index() const { | |
1241 return ConstantIndexBits::decode(sub_minor_key()); | |
1242 } | |
1243 | |
1244 protected: | |
1245 Code::Kind kind() const override { return Code::LOAD_IC; } | |
1246 | |
1247 private: | |
1248 class ConstantIndexBits : public BitField<int, 0, kSubMinorKeyBits> {}; | |
1249 | |
1250 // TODO(ishell): The stub uses only kReceiver parameter. | |
1251 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector); | |
1252 DEFINE_HANDLER_CODE_STUB(LoadConstant, HandlerStub); | |
1253 }; | |
1254 | |
1255 class LoadApiGetterStub : public TurboFanCodeStub { | 1231 class LoadApiGetterStub : public TurboFanCodeStub { |
1256 public: | 1232 public: |
1257 LoadApiGetterStub(Isolate* isolate, bool receiver_is_holder, int index) | 1233 LoadApiGetterStub(Isolate* isolate, bool receiver_is_holder, int index) |
1258 : TurboFanCodeStub(isolate) { | 1234 : TurboFanCodeStub(isolate) { |
1259 // If that's not true, we need to ensure that the receiver is actually a | 1235 // If that's not true, we need to ensure that the receiver is actually a |
1260 // JSReceiver. http://crbug.com/609134 | 1236 // JSReceiver. http://crbug.com/609134 |
1261 DCHECK(receiver_is_holder); | 1237 DCHECK(receiver_is_holder); |
1262 minor_key_ = IndexBits::encode(index) | | 1238 minor_key_ = IndexBits::encode(index) | |
1263 ReceiverIsHolderBits::encode(receiver_is_holder); | 1239 ReceiverIsHolderBits::encode(receiver_is_holder); |
1264 } | 1240 } |
(...skipping 1350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2615 #undef DEFINE_PLATFORM_CODE_STUB | 2591 #undef DEFINE_PLATFORM_CODE_STUB |
2616 #undef DEFINE_HANDLER_CODE_STUB | 2592 #undef DEFINE_HANDLER_CODE_STUB |
2617 #undef DEFINE_HYDROGEN_CODE_STUB | 2593 #undef DEFINE_HYDROGEN_CODE_STUB |
2618 #undef DEFINE_CODE_STUB | 2594 #undef DEFINE_CODE_STUB |
2619 #undef DEFINE_CODE_STUB_BASE | 2595 #undef DEFINE_CODE_STUB_BASE |
2620 | 2596 |
2621 } // namespace internal | 2597 } // namespace internal |
2622 } // namespace v8 | 2598 } // namespace v8 |
2623 | 2599 |
2624 #endif // V8_CODE_STUBS_H_ | 2600 #endif // V8_CODE_STUBS_H_ |
OLD | NEW |