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

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

Issue 1211333003: Make context register implicit for CallInterfaceDescriptors (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Platform ports Created 5 years, 5 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/arm64/lithium-arm64.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/codegen.h" 10 #include "src/codegen.h"
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 // GC. This means that we must be statically sure that no GC can occur while 207 // GC. This means that we must be statically sure that no GC can occur while
208 // they are running. If that is the case they should override this to return 208 // they are running. If that is the case they should override this to return
209 // true, which will cause an assertion if we try to call something that can 209 // true, which will cause an assertion if we try to call something that can
210 // GC or if we try to put a stack frame on top of the junk, which would not 210 // GC or if we try to put a stack frame on top of the junk, which would not
211 // result in a traversable stack. 211 // result in a traversable stack.
212 virtual bool SometimesSetsUpAFrame() { return true; } 212 virtual bool SometimesSetsUpAFrame() { return true; }
213 213
214 // Lookup the code in the (possibly custom) cache. 214 // Lookup the code in the (possibly custom) cache.
215 bool FindCodeInCache(Code** code_out); 215 bool FindCodeInCache(Code** code_out);
216 216
217 virtual CallInterfaceDescriptor GetCallInterfaceDescriptor() = 0; 217 virtual CallInterfaceDescriptor GetCallInterfaceDescriptor() const = 0;
mvstanton 2015/07/01 08:33:24 Why do you have to take const away?
danno 2015/07/01 08:43:16 I'm not taking it away... I'm adding it ;-)
218 218
219 virtual int GetStackParameterCount() const { return 0; } 219 virtual int GetStackParameterCount() const { return 0; }
220 220
221 virtual void InitializeDescriptor(CodeStubDescriptor* descriptor) {} 221 virtual void InitializeDescriptor(CodeStubDescriptor* descriptor) {}
222 222
223 static void InitializeDescriptor(Isolate* isolate, uint32_t key, 223 static void InitializeDescriptor(Isolate* isolate, uint32_t key,
224 CodeStubDescriptor* desc); 224 CodeStubDescriptor* desc);
225 225
226 static MaybeHandle<Code> GetCode(Isolate* isolate, uint32_t key); 226 static MaybeHandle<Code> GetCode(Isolate* isolate, uint32_t key);
227 227
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 // currently compiling some kind of code stub. Remove this when the pipeline and 315 // currently compiling some kind of code stub. Remove this when the pipeline and
316 // testing machinery is restructured in such a way that we don't have to come up 316 // testing machinery is restructured in such a way that we don't have to come up
317 // with a CompilationInfo out of thin air, although we only need a few parts of 317 // with a CompilationInfo out of thin air, although we only need a few parts of
318 // it. 318 // it.
319 struct FakeStubForTesting : public CodeStub { 319 struct FakeStubForTesting : public CodeStub {
320 explicit FakeStubForTesting(Isolate* isolate) : CodeStub(isolate) {} 320 explicit FakeStubForTesting(Isolate* isolate) : CodeStub(isolate) {}
321 321
322 // Only used by pipeline.cc's GetDebugName in DEBUG mode. 322 // Only used by pipeline.cc's GetDebugName in DEBUG mode.
323 Major MajorKey() const override { return CodeStub::NoCache; } 323 Major MajorKey() const override { return CodeStub::NoCache; }
324 324
325 CallInterfaceDescriptor GetCallInterfaceDescriptor() override { 325 CallInterfaceDescriptor GetCallInterfaceDescriptor() const override {
326 UNREACHABLE(); 326 UNREACHABLE();
327 return CallInterfaceDescriptor(); 327 return CallInterfaceDescriptor();
328 } 328 }
329 329
330 Handle<Code> GenerateCode() override { 330 Handle<Code> GenerateCode() override {
331 UNREACHABLE(); 331 UNREACHABLE();
332 return Handle<Code>(); 332 return Handle<Code>();
333 } 333 }
334 }; 334 };
335 335
(...skipping 22 matching lines...) Expand all
358 public: \ 358 public: \
359 void InitializeDescriptor(CodeStubDescriptor* descriptor) override; \ 359 void InitializeDescriptor(CodeStubDescriptor* descriptor) override; \
360 Handle<Code> GenerateCode() override; \ 360 Handle<Code> GenerateCode() override; \
361 DEFINE_CODE_STUB(NAME, SUPER) 361 DEFINE_CODE_STUB(NAME, SUPER)
362 362
363 #define DEFINE_HANDLER_CODE_STUB(NAME, SUPER) \ 363 #define DEFINE_HANDLER_CODE_STUB(NAME, SUPER) \
364 public: \ 364 public: \
365 Handle<Code> GenerateCode() override; \ 365 Handle<Code> GenerateCode() override; \
366 DEFINE_CODE_STUB(NAME, SUPER) 366 DEFINE_CODE_STUB(NAME, SUPER)
367 367
368 #define DEFINE_CALL_INTERFACE_DESCRIPTOR(NAME) \ 368 #define DEFINE_CALL_INTERFACE_DESCRIPTOR(NAME) \
369 public: \ 369 public: \
370 CallInterfaceDescriptor GetCallInterfaceDescriptor() override { \ 370 CallInterfaceDescriptor GetCallInterfaceDescriptor() const override { \
371 return NAME##Descriptor(isolate()); \ 371 return NAME##Descriptor(isolate()); \
372 } 372 }
373 373
374 // There are some code stubs we just can't describe right now with a 374 // There are some code stubs we just can't describe right now with a
375 // CallInterfaceDescriptor. Isolate behavior for those cases with this macro. 375 // CallInterfaceDescriptor. Isolate behavior for those cases with this macro.
376 // An attempt to retrieve a descriptor will fail. 376 // An attempt to retrieve a descriptor will fail.
377 #define DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR() \ 377 #define DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR() \
378 public: \ 378 public: \
379 CallInterfaceDescriptor GetCallInterfaceDescriptor() override { \ 379 CallInterfaceDescriptor GetCallInterfaceDescriptor() const override { \
380 UNREACHABLE(); \ 380 UNREACHABLE(); \
381 return CallInterfaceDescriptor(); \ 381 return CallInterfaceDescriptor(); \
382 } 382 }
383 383
384 384
385 class PlatformCodeStub : public CodeStub { 385 class PlatformCodeStub : public CodeStub {
386 public: 386 public:
387 // Retrieve the code for the stub. Generate the code if needed. 387 // Retrieve the code for the stub. Generate the code if needed.
388 Handle<Code> GenerateCode() override; 388 Handle<Code> GenerateCode() override;
389 389
390 protected: 390 protected:
391 explicit PlatformCodeStub(Isolate* isolate) : CodeStub(isolate) {} 391 explicit PlatformCodeStub(Isolate* isolate) : CodeStub(isolate) {}
(...skipping 28 matching lines...) Expand all
420 miss_handler_ = handler; 420 miss_handler_ = handler;
421 has_miss_handler_ = true; 421 has_miss_handler_ = true;
422 // Our miss handler infrastructure doesn't currently support 422 // Our miss handler infrastructure doesn't currently support
423 // variable stack parameter counts. 423 // variable stack parameter counts.
424 DCHECK(!stack_parameter_count_.is_valid()); 424 DCHECK(!stack_parameter_count_.is_valid());
425 } 425 }
426 426
427 void set_call_descriptor(CallInterfaceDescriptor d) { call_descriptor_ = d; } 427 void set_call_descriptor(CallInterfaceDescriptor d) { call_descriptor_ = d; }
428 CallInterfaceDescriptor call_descriptor() const { return call_descriptor_; } 428 CallInterfaceDescriptor call_descriptor() const { return call_descriptor_; }
429 429
430 int GetEnvironmentParameterCount() const { 430 int GetRegisterParameterCount() const {
431 return call_descriptor().GetEnvironmentParameterCount(); 431 return call_descriptor().GetRegisterParameterCount();
432 } 432 }
433 433
434 Type* GetEnvironmentParameterType(int index) const { 434 Register GetRegisterParameter(int index) const {
435 return call_descriptor().GetEnvironmentParameterType(index); 435 return call_descriptor().GetRegisterParameter(index);
436 }
437
438 Type* GetParameterType(int index) const {
439 return call_descriptor().GetParameterType(index);
436 } 440 }
437 441
438 ExternalReference miss_handler() const { 442 ExternalReference miss_handler() const {
439 DCHECK(has_miss_handler_); 443 DCHECK(has_miss_handler_);
440 return miss_handler_; 444 return miss_handler_;
441 } 445 }
442 446
443 bool has_miss_handler() const { 447 bool has_miss_handler() const {
444 return has_miss_handler_; 448 return has_miss_handler_;
445 } 449 }
446 450
447 bool IsEnvironmentParameterCountRegister(int index) const {
448 return call_descriptor().GetEnvironmentParameterRegister(index).is(
449 stack_parameter_count_);
450 }
451
452 int GetHandlerParameterCount() const { 451 int GetHandlerParameterCount() const {
453 int params = call_descriptor().GetEnvironmentParameterCount(); 452 int params = GetRegisterParameterCount();
454 if (handler_arguments_mode_ == PASS_ARGUMENTS) { 453 if (handler_arguments_mode_ == PASS_ARGUMENTS) {
455 params += 1; 454 params += 1;
456 } 455 }
457 return params; 456 return params;
458 } 457 }
459 458
460 int hint_stack_parameter_count() const { return hint_stack_parameter_count_; } 459 int hint_stack_parameter_count() const { return hint_stack_parameter_count_; }
461 Register stack_parameter_count() const { return stack_parameter_count_; } 460 Register stack_parameter_count() const { return stack_parameter_count_; }
462 StubFunctionMode function_mode() const { return function_mode_; } 461 StubFunctionMode function_mode() const { return function_mode_; }
463 Address deoptimization_handler() const { return deoptimization_handler_; } 462 Address deoptimization_handler() const { return deoptimization_handler_; }
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 523
525 DEFINE_CODE_STUB_BASE(HydrogenCodeStub, CodeStub); 524 DEFINE_CODE_STUB_BASE(HydrogenCodeStub, CodeStub);
526 }; 525 };
527 526
528 527
529 class TurboFanCodeStub : public CodeStub { 528 class TurboFanCodeStub : public CodeStub {
530 public: 529 public:
531 // Retrieve the code for the stub. Generate the code if needed. 530 // Retrieve the code for the stub. Generate the code if needed.
532 Handle<Code> GenerateCode() override; 531 Handle<Code> GenerateCode() override;
533 532
533 virtual int GetStackParameterCount() const override {
534 return GetCallInterfaceDescriptor().GetStackParameterCount();
535 }
536
534 Code::StubType GetStubType() const override { return Code::FAST; } 537 Code::StubType GetStubType() const override { return Code::FAST; }
535 538
536 protected: 539 protected:
537 explicit TurboFanCodeStub(Isolate* isolate) : CodeStub(isolate) {} 540 explicit TurboFanCodeStub(Isolate* isolate) : CodeStub(isolate) {}
538 541
539 private: 542 private:
540 DEFINE_CODE_STUB_BASE(TurboFanCodeStub, CodeStub); 543 DEFINE_CODE_STUB_BASE(TurboFanCodeStub, CodeStub);
541 }; 544 };
542 545
543 546
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
845 kReturnTrueFalseObject = 1 << 2 848 kReturnTrueFalseObject = 1 << 2
846 }; 849 };
847 850
848 InstanceofStub(Isolate* isolate, Flags flags) : PlatformCodeStub(isolate) { 851 InstanceofStub(Isolate* isolate, Flags flags) : PlatformCodeStub(isolate) {
849 minor_key_ = FlagBits::encode(flags); 852 minor_key_ = FlagBits::encode(flags);
850 } 853 }
851 854
852 static Register left() { return InstanceofDescriptor::left(); } 855 static Register left() { return InstanceofDescriptor::left(); }
853 static Register right() { return InstanceofDescriptor::right(); } 856 static Register right() { return InstanceofDescriptor::right(); }
854 857
855 CallInterfaceDescriptor GetCallInterfaceDescriptor() override { 858 CallInterfaceDescriptor GetCallInterfaceDescriptor() const override {
856 if (HasArgsInRegisters()) { 859 if (HasArgsInRegisters()) {
857 return InstanceofDescriptor(isolate()); 860 return InstanceofDescriptor(isolate());
858 } 861 }
859 return ContextOnlyDescriptor(isolate()); 862 return ContextOnlyDescriptor(isolate());
860 } 863 }
861 864
862 private: 865 private:
863 Flags flags() const { return FlagBits::decode(minor_key_); } 866 Flags flags() const { return FlagBits::decode(minor_key_); }
864 867
865 bool HasArgsInRegisters() const { return (flags() & kArgsInRegisters) != 0; } 868 bool HasArgsInRegisters() const { return (flags() & kArgsInRegisters) != 0; }
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
926 929
927 class MathPowStub: public PlatformCodeStub { 930 class MathPowStub: public PlatformCodeStub {
928 public: 931 public:
929 enum ExponentType { INTEGER, DOUBLE, TAGGED, ON_STACK }; 932 enum ExponentType { INTEGER, DOUBLE, TAGGED, ON_STACK };
930 933
931 MathPowStub(Isolate* isolate, ExponentType exponent_type) 934 MathPowStub(Isolate* isolate, ExponentType exponent_type)
932 : PlatformCodeStub(isolate) { 935 : PlatformCodeStub(isolate) {
933 minor_key_ = ExponentTypeBits::encode(exponent_type); 936 minor_key_ = ExponentTypeBits::encode(exponent_type);
934 } 937 }
935 938
936 CallInterfaceDescriptor GetCallInterfaceDescriptor() override { 939 CallInterfaceDescriptor GetCallInterfaceDescriptor() const override {
937 if (exponent_type() == TAGGED) { 940 if (exponent_type() == TAGGED) {
938 return MathPowTaggedDescriptor(isolate()); 941 return MathPowTaggedDescriptor(isolate());
939 } else if (exponent_type() == INTEGER) { 942 } else if (exponent_type() == INTEGER) {
940 return MathPowIntegerDescriptor(isolate()); 943 return MathPowIntegerDescriptor(isolate());
941 } 944 }
942 // A CallInterfaceDescriptor doesn't specify double registers (yet). 945 // A CallInterfaceDescriptor doesn't specify double registers (yet).
943 return ContextOnlyDescriptor(isolate()); 946 return ContextOnlyDescriptor(isolate());
944 } 947 }
945 948
946 private: 949 private:
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1014 class FunctionPrototypeStub : public PlatformCodeStub { 1017 class FunctionPrototypeStub : public PlatformCodeStub {
1015 public: 1018 public:
1016 explicit FunctionPrototypeStub(Isolate* isolate) 1019 explicit FunctionPrototypeStub(Isolate* isolate)
1017 : PlatformCodeStub(isolate) {} 1020 : PlatformCodeStub(isolate) {}
1018 1021
1019 Code::Kind GetCodeKind() const override { return Code::HANDLER; } 1022 Code::Kind GetCodeKind() const override { return Code::HANDLER; }
1020 1023
1021 // TODO(mvstanton): only the receiver register is accessed. When this is 1024 // TODO(mvstanton): only the receiver register is accessed. When this is
1022 // translated to a hydrogen code stub, a new CallInterfaceDescriptor 1025 // translated to a hydrogen code stub, a new CallInterfaceDescriptor
1023 // should be created that just uses that register for more efficient code. 1026 // should be created that just uses that register for more efficient code.
1024 CallInterfaceDescriptor GetCallInterfaceDescriptor() override { 1027 CallInterfaceDescriptor GetCallInterfaceDescriptor() const override {
1025 return LoadWithVectorDescriptor(isolate()); 1028 return LoadWithVectorDescriptor(isolate());
1026 } 1029 }
1027 1030
1028 DEFINE_PLATFORM_CODE_STUB(FunctionPrototype, PlatformCodeStub); 1031 DEFINE_PLATFORM_CODE_STUB(FunctionPrototype, PlatformCodeStub);
1029 }; 1032 };
1030 1033
1031 1034
1032 // TODO(mvstanton): Translate to hydrogen code stub. 1035 // TODO(mvstanton): Translate to hydrogen code stub.
1033 class LoadIndexedInterceptorStub : public PlatformCodeStub { 1036 class LoadIndexedInterceptorStub : public PlatformCodeStub {
1034 public: 1037 public:
(...skipping 22 matching lines...) Expand all
1057 1060
1058 1061
1059 class HandlerStub : public HydrogenCodeStub { 1062 class HandlerStub : public HydrogenCodeStub {
1060 public: 1063 public:
1061 Code::Kind GetCodeKind() const override { return Code::HANDLER; } 1064 Code::Kind GetCodeKind() const override { return Code::HANDLER; }
1062 ExtraICState GetExtraICState() const override { return kind(); } 1065 ExtraICState GetExtraICState() const override { return kind(); }
1063 InlineCacheState GetICState() const override { return MONOMORPHIC; } 1066 InlineCacheState GetICState() const override { return MONOMORPHIC; }
1064 1067
1065 void InitializeDescriptor(CodeStubDescriptor* descriptor) override; 1068 void InitializeDescriptor(CodeStubDescriptor* descriptor) override;
1066 1069
1067 CallInterfaceDescriptor GetCallInterfaceDescriptor() override; 1070 CallInterfaceDescriptor GetCallInterfaceDescriptor() const override;
1068 1071
1069 protected: 1072 protected:
1070 explicit HandlerStub(Isolate* isolate) : HydrogenCodeStub(isolate) {} 1073 explicit HandlerStub(Isolate* isolate) : HydrogenCodeStub(isolate) {}
1071 1074
1072 virtual Code::Kind kind() const = 0; 1075 virtual Code::Kind kind() const = 0;
1073 1076
1074 DEFINE_CODE_STUB_BASE(HandlerStub, HydrogenCodeStub); 1077 DEFINE_CODE_STUB_BASE(HandlerStub, HydrogenCodeStub);
1075 }; 1078 };
1076 1079
1077 1080
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
1251 Representation representation() { 1254 Representation representation() {
1252 DCHECK(store_mode() != StoreMapOnly); 1255 DCHECK(store_mode() != StoreMapOnly);
1253 uint8_t repr = RepresentationBits::decode(sub_minor_key()); 1256 uint8_t repr = RepresentationBits::decode(sub_minor_key());
1254 return PropertyDetails::DecodeRepresentation(repr); 1257 return PropertyDetails::DecodeRepresentation(repr);
1255 } 1258 }
1256 1259
1257 StoreMode store_mode() const { 1260 StoreMode store_mode() const {
1258 return StoreModeBits::decode(sub_minor_key()); 1261 return StoreModeBits::decode(sub_minor_key());
1259 } 1262 }
1260 1263
1261 CallInterfaceDescriptor GetCallInterfaceDescriptor() override; 1264 CallInterfaceDescriptor GetCallInterfaceDescriptor() const override;
1262 1265
1263 protected: 1266 protected:
1264 Code::Kind kind() const override { return Code::STORE_IC; } 1267 Code::Kind kind() const override { return Code::STORE_IC; }
1265 Code::StubType GetStubType() const override { return Code::FAST; } 1268 Code::StubType GetStubType() const override { return Code::FAST; }
1266 1269
1267 private: 1270 private:
1268 class StoreFieldByIndexBits : public BitField<int, 0, 13> {}; 1271 class StoreFieldByIndexBits : public BitField<int, 0, 13> {};
1269 class RepresentationBits : public BitField<uint8_t, 13, 4> {}; 1272 class RepresentationBits : public BitField<uint8_t, 13, 4> {};
1270 class StoreModeBits : public BitField<StoreMode, 17, 2> {}; 1273 class StoreModeBits : public BitField<StoreMode, 17, 2> {};
1271 1274
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after
1782 READ_ELEMENT, 1785 READ_ELEMENT,
1783 NEW_SLOPPY_FAST, 1786 NEW_SLOPPY_FAST,
1784 NEW_SLOPPY_SLOW, 1787 NEW_SLOPPY_SLOW,
1785 NEW_STRICT 1788 NEW_STRICT
1786 }; 1789 };
1787 1790
1788 ArgumentsAccessStub(Isolate* isolate, Type type) : PlatformCodeStub(isolate) { 1791 ArgumentsAccessStub(Isolate* isolate, Type type) : PlatformCodeStub(isolate) {
1789 minor_key_ = TypeBits::encode(type); 1792 minor_key_ = TypeBits::encode(type);
1790 } 1793 }
1791 1794
1792 CallInterfaceDescriptor GetCallInterfaceDescriptor() override { 1795 CallInterfaceDescriptor GetCallInterfaceDescriptor() const override {
1793 if (type() == READ_ELEMENT) { 1796 if (type() == READ_ELEMENT) {
1794 return ArgumentsAccessReadDescriptor(isolate()); 1797 return ArgumentsAccessReadDescriptor(isolate());
1795 } 1798 }
1796 return ContextOnlyDescriptor(isolate()); 1799 return ContextOnlyDescriptor(isolate());
1797 } 1800 }
1798 1801
1799 private: 1802 private:
1800 Type type() const { return TypeBits::decode(minor_key_); } 1803 Type type() const { return TypeBits::decode(minor_key_); }
1801 1804
1802 void GenerateReadElement(MacroAssembler* masm); 1805 void GenerateReadElement(MacroAssembler* masm);
1803 void GenerateNewStrict(MacroAssembler* masm); 1806 void GenerateNewStrict(MacroAssembler* masm);
1804 void GenerateNewSloppyFast(MacroAssembler* masm); 1807 void GenerateNewSloppyFast(MacroAssembler* masm);
1805 void GenerateNewSloppySlow(MacroAssembler* masm); 1808 void GenerateNewSloppySlow(MacroAssembler* masm);
1806 1809
1807 void PrintName(std::ostream& os) const override; // NOLINT 1810 void PrintName(std::ostream& os) const override; // NOLINT
1808 1811
1809 class TypeBits : public BitField<Type, 0, 2> {}; 1812 class TypeBits : public BitField<Type, 0, 2> {};
1810 1813
1811 DEFINE_PLATFORM_CODE_STUB(ArgumentsAccess, PlatformCodeStub); 1814 DEFINE_PLATFORM_CODE_STUB(ArgumentsAccess, PlatformCodeStub);
1812 }; 1815 };
1813 1816
1814 1817
1815 class RestParamAccessStub: public PlatformCodeStub { 1818 class RestParamAccessStub: public PlatformCodeStub {
1816 public: 1819 public:
1817 explicit RestParamAccessStub(Isolate* isolate) : PlatformCodeStub(isolate) { } 1820 explicit RestParamAccessStub(Isolate* isolate) : PlatformCodeStub(isolate) { }
1818 1821
1819 CallInterfaceDescriptor GetCallInterfaceDescriptor() override { 1822 CallInterfaceDescriptor GetCallInterfaceDescriptor() const override {
1820 return ContextOnlyDescriptor(isolate()); 1823 return ContextOnlyDescriptor(isolate());
1821 } 1824 }
1822 1825
1823 private: 1826 private:
1824 void GenerateNew(MacroAssembler* masm); 1827 void GenerateNew(MacroAssembler* masm);
1825 1828
1826 void PrintName(std::ostream& os) const override; // NOLINT 1829 void PrintName(std::ostream& os) const override; // NOLINT
1827 1830
1828 DEFINE_PLATFORM_CODE_STUB(RestParamAccess, PlatformCodeStub); 1831 DEFINE_PLATFORM_CODE_STUB(RestParamAccess, PlatformCodeStub);
1829 }; 1832 };
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
2101 2104
2102 DISALLOW_COPY_AND_ASSIGN(StringCharAtGenerator); 2105 DISALLOW_COPY_AND_ASSIGN(StringCharAtGenerator);
2103 }; 2106 };
2104 2107
2105 2108
2106 class LoadDictionaryElementStub : public HydrogenCodeStub { 2109 class LoadDictionaryElementStub : public HydrogenCodeStub {
2107 public: 2110 public:
2108 explicit LoadDictionaryElementStub(Isolate* isolate) 2111 explicit LoadDictionaryElementStub(Isolate* isolate)
2109 : HydrogenCodeStub(isolate) {} 2112 : HydrogenCodeStub(isolate) {}
2110 2113
2111 CallInterfaceDescriptor GetCallInterfaceDescriptor() override { 2114 CallInterfaceDescriptor GetCallInterfaceDescriptor() const override {
2112 return LoadWithVectorDescriptor(isolate()); 2115 return LoadWithVectorDescriptor(isolate());
2113 } 2116 }
2114 2117
2115 DEFINE_HYDROGEN_CODE_STUB(LoadDictionaryElement, HydrogenCodeStub); 2118 DEFINE_HYDROGEN_CODE_STUB(LoadDictionaryElement, HydrogenCodeStub);
2116 }; 2119 };
2117 2120
2118 2121
2119 class KeyedLoadGenericStub : public HydrogenCodeStub { 2122 class KeyedLoadGenericStub : public HydrogenCodeStub {
2120 public: 2123 public:
2121 explicit KeyedLoadGenericStub(Isolate* isolate) : HydrogenCodeStub(isolate) {} 2124 explicit KeyedLoadGenericStub(Isolate* isolate) : HydrogenCodeStub(isolate) {}
(...skipping 839 matching lines...) Expand 10 before | Expand all | Expand 10 after
2961 #undef DEFINE_PLATFORM_CODE_STUB 2964 #undef DEFINE_PLATFORM_CODE_STUB
2962 #undef DEFINE_HANDLER_CODE_STUB 2965 #undef DEFINE_HANDLER_CODE_STUB
2963 #undef DEFINE_HYDROGEN_CODE_STUB 2966 #undef DEFINE_HYDROGEN_CODE_STUB
2964 #undef DEFINE_CODE_STUB 2967 #undef DEFINE_CODE_STUB
2965 #undef DEFINE_CODE_STUB_BASE 2968 #undef DEFINE_CODE_STUB_BASE
2966 2969
2967 extern Representation RepresentationFromType(Type* type); 2970 extern Representation RepresentationFromType(Type* type);
2968 } } // namespace v8::internal 2971 } } // namespace v8::internal
2969 2972
2970 #endif // V8_CODE_STUBS_H_ 2973 #endif // V8_CODE_STUBS_H_
OLDNEW
« no previous file with comments | « src/arm64/lithium-arm64.cc ('k') | src/code-stubs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698