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

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

Issue 1949023003: [Interpreter] Fix incorrect frame walking in arguments create stubs (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Add ports Created 4 years, 7 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-factory.cc ('k') | src/ia32/code-stubs-ia32.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 1050 matching lines...) Expand 10 before | Expand all | Expand 10 after
1061 DEFINE_PLATFORM_CODE_STUB(FastNewObject, PlatformCodeStub); 1061 DEFINE_PLATFORM_CODE_STUB(FastNewObject, PlatformCodeStub);
1062 }; 1062 };
1063 1063
1064 1064
1065 // TODO(turbofan): This stub should be possible to write in TurboFan 1065 // TODO(turbofan): This stub should be possible to write in TurboFan
1066 // using the CodeStubAssembler very soon in a way that is as efficient 1066 // using the CodeStubAssembler very soon in a way that is as efficient
1067 // and easy as the current handwritten version, which is partly a copy 1067 // and easy as the current handwritten version, which is partly a copy
1068 // of the strict arguments object materialization code. 1068 // of the strict arguments object materialization code.
1069 class FastNewRestParameterStub final : public PlatformCodeStub { 1069 class FastNewRestParameterStub final : public PlatformCodeStub {
1070 public: 1070 public:
1071 explicit FastNewRestParameterStub(Isolate* isolate) 1071 explicit FastNewRestParameterStub(Isolate* isolate,
1072 : PlatformCodeStub(isolate) {} 1072 bool skip_stub_frame = false)
1073 : PlatformCodeStub(isolate) {
1074 minor_key_ = SkipStubFrameBits::encode(skip_stub_frame);
1075 }
1073 1076
1074 DEFINE_CALL_INTERFACE_DESCRIPTOR(FastNewRestParameter); 1077 DEFINE_CALL_INTERFACE_DESCRIPTOR(FastNewRestParameter);
1075 DEFINE_PLATFORM_CODE_STUB(FastNewRestParameter, PlatformCodeStub); 1078 DEFINE_PLATFORM_CODE_STUB(FastNewRestParameter, PlatformCodeStub);
1079
1080 int skip_stub_frame() const { return SkipStubFrameBits::decode(minor_key_); }
1081
1082 private:
1083 class SkipStubFrameBits : public BitField<bool, 0, 1> {};
1076 }; 1084 };
1077 1085
1078 1086
1079 // TODO(turbofan): This stub should be possible to write in TurboFan 1087 // TODO(turbofan): This stub should be possible to write in TurboFan
1080 // using the CodeStubAssembler very soon in a way that is as efficient 1088 // using the CodeStubAssembler very soon in a way that is as efficient
1081 // and easy as the current handwritten version. 1089 // and easy as the current handwritten version.
1082 class FastNewSloppyArgumentsStub final : public PlatformCodeStub { 1090 class FastNewSloppyArgumentsStub final : public PlatformCodeStub {
1083 public: 1091 public:
1084 explicit FastNewSloppyArgumentsStub(Isolate* isolate) 1092 explicit FastNewSloppyArgumentsStub(Isolate* isolate,
1085 : PlatformCodeStub(isolate) {} 1093 bool skip_stub_frame = false)
1094 : PlatformCodeStub(isolate) {
1095 minor_key_ = SkipStubFrameBits::encode(skip_stub_frame);
1096 }
1097
1098 int skip_stub_frame() const { return SkipStubFrameBits::decode(minor_key_); }
1086 1099
1087 DEFINE_CALL_INTERFACE_DESCRIPTOR(FastNewSloppyArguments); 1100 DEFINE_CALL_INTERFACE_DESCRIPTOR(FastNewSloppyArguments);
1088 DEFINE_PLATFORM_CODE_STUB(FastNewSloppyArguments, PlatformCodeStub); 1101 DEFINE_PLATFORM_CODE_STUB(FastNewSloppyArguments, PlatformCodeStub);
1102
1103 private:
1104 class SkipStubFrameBits : public BitField<bool, 0, 1> {};
1089 }; 1105 };
1090 1106
1091 1107
1092 // TODO(turbofan): This stub should be possible to write in TurboFan 1108 // TODO(turbofan): This stub should be possible to write in TurboFan
1093 // using the CodeStubAssembler very soon in a way that is as efficient 1109 // using the CodeStubAssembler very soon in a way that is as efficient
1094 // and easy as the current handwritten version. 1110 // and easy as the current handwritten version.
1095 class FastNewStrictArgumentsStub final : public PlatformCodeStub { 1111 class FastNewStrictArgumentsStub final : public PlatformCodeStub {
1096 public: 1112 public:
1097 explicit FastNewStrictArgumentsStub(Isolate* isolate) 1113 explicit FastNewStrictArgumentsStub(Isolate* isolate,
1098 : PlatformCodeStub(isolate) {} 1114 bool skip_stub_frame = false)
1115 : PlatformCodeStub(isolate) {
1116 minor_key_ = SkipStubFrameBits::encode(skip_stub_frame);
1117 }
1099 1118
1100 DEFINE_CALL_INTERFACE_DESCRIPTOR(FastNewStrictArguments); 1119 DEFINE_CALL_INTERFACE_DESCRIPTOR(FastNewStrictArguments);
1101 DEFINE_PLATFORM_CODE_STUB(FastNewStrictArguments, PlatformCodeStub); 1120 DEFINE_PLATFORM_CODE_STUB(FastNewStrictArguments, PlatformCodeStub);
1121
1122 int skip_stub_frame() const { return SkipStubFrameBits::decode(minor_key_); }
1123
1124 private:
1125 class SkipStubFrameBits : public BitField<bool, 0, 1> {};
1102 }; 1126 };
1103 1127
1104 1128
1105 class FastCloneRegExpStub final : public HydrogenCodeStub { 1129 class FastCloneRegExpStub final : public HydrogenCodeStub {
1106 public: 1130 public:
1107 explicit FastCloneRegExpStub(Isolate* isolate) : HydrogenCodeStub(isolate) {} 1131 explicit FastCloneRegExpStub(Isolate* isolate) : HydrogenCodeStub(isolate) {}
1108 1132
1109 private: 1133 private:
1110 DEFINE_CALL_INTERFACE_DESCRIPTOR(FastCloneRegExp); 1134 DEFINE_CALL_INTERFACE_DESCRIPTOR(FastCloneRegExp);
1111 DEFINE_HYDROGEN_CODE_STUB(FastCloneRegExp, HydrogenCodeStub); 1135 DEFINE_HYDROGEN_CODE_STUB(FastCloneRegExp, HydrogenCodeStub);
(...skipping 2123 matching lines...) Expand 10 before | Expand all | Expand 10 after
3235 #undef DEFINE_HYDROGEN_CODE_STUB 3259 #undef DEFINE_HYDROGEN_CODE_STUB
3236 #undef DEFINE_CODE_STUB 3260 #undef DEFINE_CODE_STUB
3237 #undef DEFINE_CODE_STUB_BASE 3261 #undef DEFINE_CODE_STUB_BASE
3238 3262
3239 extern Representation RepresentationFromType(Type* type); 3263 extern Representation RepresentationFromType(Type* type);
3240 3264
3241 } // namespace internal 3265 } // namespace internal
3242 } // namespace v8 3266 } // namespace v8
3243 3267
3244 #endif // V8_CODE_STUBS_H_ 3268 #endif // V8_CODE_STUBS_H_
OLDNEW
« no previous file with comments | « src/code-factory.cc ('k') | src/ia32/code-stubs-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698