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 1308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1319 private: | 1319 private: |
1320 void GenerateCase(MacroAssembler* masm, ElementsKind kind); | 1320 void GenerateCase(MacroAssembler* masm, ElementsKind kind); |
1321 | 1321 |
1322 DEFINE_CALL_INTERFACE_DESCRIPTOR(ArrayNArgumentsConstructor); | 1322 DEFINE_CALL_INTERFACE_DESCRIPTOR(ArrayNArgumentsConstructor); |
1323 DEFINE_PLATFORM_CODE_STUB(InternalArrayConstructor, PlatformCodeStub); | 1323 DEFINE_PLATFORM_CODE_STUB(InternalArrayConstructor, PlatformCodeStub); |
1324 }; | 1324 }; |
1325 | 1325 |
1326 | 1326 |
1327 class MathPowStub: public PlatformCodeStub { | 1327 class MathPowStub: public PlatformCodeStub { |
1328 public: | 1328 public: |
1329 enum ExponentType { INTEGER, DOUBLE, TAGGED, ON_STACK }; | 1329 enum ExponentType { INTEGER, DOUBLE, TAGGED }; |
1330 | 1330 |
1331 MathPowStub(Isolate* isolate, ExponentType exponent_type) | 1331 MathPowStub(Isolate* isolate, ExponentType exponent_type) |
1332 : PlatformCodeStub(isolate) { | 1332 : PlatformCodeStub(isolate) { |
1333 minor_key_ = ExponentTypeBits::encode(exponent_type); | 1333 minor_key_ = ExponentTypeBits::encode(exponent_type); |
1334 } | 1334 } |
1335 | 1335 |
1336 CallInterfaceDescriptor GetCallInterfaceDescriptor() const override { | 1336 CallInterfaceDescriptor GetCallInterfaceDescriptor() const override { |
1337 if (exponent_type() == ON_STACK) { | 1337 if (exponent_type() == TAGGED) { |
1338 return OnStackArgsDescriptorBase::ForArgs(isolate(), 2); | |
1339 } else if (exponent_type() == TAGGED) { | |
1340 return MathPowTaggedDescriptor(isolate()); | 1338 return MathPowTaggedDescriptor(isolate()); |
1341 } else if (exponent_type() == INTEGER) { | 1339 } else if (exponent_type() == INTEGER) { |
1342 return MathPowIntegerDescriptor(isolate()); | 1340 return MathPowIntegerDescriptor(isolate()); |
1343 } else { | 1341 } else { |
1344 // A CallInterfaceDescriptor doesn't specify double registers (yet). | 1342 // A CallInterfaceDescriptor doesn't specify double registers (yet). |
1345 DCHECK_EQ(DOUBLE, exponent_type()); | 1343 DCHECK_EQ(DOUBLE, exponent_type()); |
1346 return ContextOnlyDescriptor(isolate()); | 1344 return ContextOnlyDescriptor(isolate()); |
1347 } | 1345 } |
1348 } | 1346 } |
1349 | 1347 |
(...skipping 1763 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3113 #undef DEFINE_HYDROGEN_CODE_STUB | 3111 #undef DEFINE_HYDROGEN_CODE_STUB |
3114 #undef DEFINE_CODE_STUB | 3112 #undef DEFINE_CODE_STUB |
3115 #undef DEFINE_CODE_STUB_BASE | 3113 #undef DEFINE_CODE_STUB_BASE |
3116 | 3114 |
3117 extern Representation RepresentationFromType(Type* type); | 3115 extern Representation RepresentationFromType(Type* type); |
3118 | 3116 |
3119 } // namespace internal | 3117 } // namespace internal |
3120 } // namespace v8 | 3118 } // namespace v8 |
3121 | 3119 |
3122 #endif // V8_CODE_STUBS_H_ | 3120 #endif // V8_CODE_STUBS_H_ |
OLD | NEW |