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

Side by Side Diff: src/deoptimizer.h

Issue 2803853005: Inline Array.prototype.forEach in TurboFan (Closed)
Patch Set: Disable new array builtins by default Created 3 years, 6 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/compiler/js-call-reducer.cc ('k') | src/deoptimizer.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_DEOPTIMIZER_H_ 5 #ifndef V8_DEOPTIMIZER_H_
6 #define V8_DEOPTIMIZER_H_ 6 #define V8_DEOPTIMIZER_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/deoptimize-reason.h" 9 #include "src/deoptimize-reason.h"
10 #include "src/macro-assembler.h" 10 #include "src/macro-assembler.h"
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 public: 152 public:
153 enum Kind { 153 enum Kind {
154 kFunction, 154 kFunction,
155 kInterpretedFunction, 155 kInterpretedFunction,
156 kGetter, 156 kGetter,
157 kSetter, 157 kSetter,
158 kTailCallerFunction, 158 kTailCallerFunction,
159 kArgumentsAdaptor, 159 kArgumentsAdaptor,
160 kConstructStub, 160 kConstructStub,
161 kCompiledStub, 161 kCompiledStub,
162 kBuiltinContinuation,
163 kJavaScriptBuiltinContinuation,
162 kInvalid 164 kInvalid
163 }; 165 };
164 166
165 int GetValueCount(); 167 int GetValueCount();
166 168
167 Kind kind() const { return kind_; } 169 Kind kind() const { return kind_; }
168 BailoutId node_id() const { return node_id_; } 170 BailoutId node_id() const { return node_id_; }
169 Handle<SharedFunctionInfo> shared_info() const { return shared_info_; } 171 Handle<SharedFunctionInfo> shared_info() const { return shared_info_; }
170 int height() const { return height_; } 172 int height() const { return height_; }
171 173
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 SharedFunctionInfo* shared_info, 225 SharedFunctionInfo* shared_info,
224 int height); 226 int height);
225 static TranslatedFrame AccessorFrame(Kind kind, 227 static TranslatedFrame AccessorFrame(Kind kind,
226 SharedFunctionInfo* shared_info); 228 SharedFunctionInfo* shared_info);
227 static TranslatedFrame ArgumentsAdaptorFrame(SharedFunctionInfo* shared_info, 229 static TranslatedFrame ArgumentsAdaptorFrame(SharedFunctionInfo* shared_info,
228 int height); 230 int height);
229 static TranslatedFrame TailCallerFrame(SharedFunctionInfo* shared_info); 231 static TranslatedFrame TailCallerFrame(SharedFunctionInfo* shared_info);
230 static TranslatedFrame ConstructStubFrame(BailoutId bailout_id, 232 static TranslatedFrame ConstructStubFrame(BailoutId bailout_id,
231 SharedFunctionInfo* shared_info, 233 SharedFunctionInfo* shared_info,
232 int height); 234 int height);
235 static TranslatedFrame BuiltinContinuationFrame(
236 BailoutId bailout_id, SharedFunctionInfo* shared_info, int height);
237 static TranslatedFrame JavaScriptBuiltinContinuationFrame(
238 BailoutId bailout_id, SharedFunctionInfo* shared_info, int height);
233 static TranslatedFrame CompiledStubFrame(int height, Isolate* isolate) { 239 static TranslatedFrame CompiledStubFrame(int height, Isolate* isolate) {
234 return TranslatedFrame(kCompiledStub, isolate, nullptr, height); 240 return TranslatedFrame(kCompiledStub, isolate, nullptr, height);
235 } 241 }
236 static TranslatedFrame InvalidFrame() { 242 static TranslatedFrame InvalidFrame() {
237 return TranslatedFrame(kInvalid, nullptr); 243 return TranslatedFrame(kInvalid, nullptr);
238 } 244 }
239 245
240 static void AdvanceIterator(std::deque<TranslatedValue>::iterator* iter); 246 static void AdvanceIterator(std::deque<TranslatedValue>::iterator* iter);
241 247
242 TranslatedFrame(Kind kind, Isolate* isolate, 248 TranslatedFrame(Kind kind, Isolate* isolate,
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 void DoComputeArgumentsAdaptorFrame(TranslatedFrame* translated_frame, 567 void DoComputeArgumentsAdaptorFrame(TranslatedFrame* translated_frame,
562 int frame_index); 568 int frame_index);
563 void DoComputeTailCallerFrame(TranslatedFrame* translated_frame, 569 void DoComputeTailCallerFrame(TranslatedFrame* translated_frame,
564 int frame_index); 570 int frame_index);
565 void DoComputeConstructStubFrame(TranslatedFrame* translated_frame, 571 void DoComputeConstructStubFrame(TranslatedFrame* translated_frame,
566 int frame_index); 572 int frame_index);
567 void DoComputeAccessorStubFrame(TranslatedFrame* translated_frame, 573 void DoComputeAccessorStubFrame(TranslatedFrame* translated_frame,
568 int frame_index, bool is_setter_stub_frame); 574 int frame_index, bool is_setter_stub_frame);
569 void DoComputeCompiledStubFrame(TranslatedFrame* translated_frame, 575 void DoComputeCompiledStubFrame(TranslatedFrame* translated_frame,
570 int frame_index); 576 int frame_index);
577 void DoComputeBuiltinContinuation(TranslatedFrame* translated_frame,
578 int frame_index, bool java_script_frame);
571 579
572 void WriteTranslatedValueToOutput( 580 void WriteTranslatedValueToOutput(
573 TranslatedFrame::iterator* iterator, int* input_index, int frame_index, 581 TranslatedFrame::iterator* iterator, int* input_index, int frame_index,
574 unsigned output_offset, const char* debug_hint_string = nullptr, 582 unsigned output_offset, const char* debug_hint_string = nullptr,
575 Address output_address_for_materialization = nullptr); 583 Address output_address_for_materialization = nullptr);
576 void WriteValueToOutput(Object* value, int input_index, int frame_index, 584 void WriteValueToOutput(Object* value, int input_index, int frame_index,
577 unsigned output_offset, 585 unsigned output_offset,
578 const char* debug_hint_string); 586 const char* debug_hint_string);
579 void DebugPrintOutputSlot(intptr_t value, int frame_index, 587 void DebugPrintOutputSlot(intptr_t value, int frame_index,
580 unsigned output_offset, 588 unsigned output_offset,
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 922
915 void Skip(int n) { 923 void Skip(int n) {
916 for (int i = 0; i < n; i++) Next(); 924 for (int i = 0; i < n; i++) Next();
917 } 925 }
918 926
919 private: 927 private:
920 ByteArray* buffer_; 928 ByteArray* buffer_;
921 int index_; 929 int index_;
922 }; 930 };
923 931
924 #define TRANSLATION_OPCODE_LIST(V) \ 932 #define TRANSLATION_OPCODE_LIST(V) \
925 V(BEGIN) \ 933 V(BEGIN) \
926 V(JS_FRAME) \ 934 V(JS_FRAME) \
927 V(INTERPRETED_FRAME) \ 935 V(INTERPRETED_FRAME) \
928 V(CONSTRUCT_STUB_FRAME) \ 936 V(BUILTIN_CONTINUATION_FRAME) \
929 V(GETTER_STUB_FRAME) \ 937 V(JAVA_SCRIPT_BUILTIN_CONTINUATION_FRAME) \
930 V(SETTER_STUB_FRAME) \ 938 V(CONSTRUCT_STUB_FRAME) \
931 V(ARGUMENTS_ADAPTOR_FRAME) \ 939 V(GETTER_STUB_FRAME) \
932 V(TAIL_CALLER_FRAME) \ 940 V(SETTER_STUB_FRAME) \
933 V(COMPILED_STUB_FRAME) \ 941 V(ARGUMENTS_ADAPTOR_FRAME) \
934 V(DUPLICATED_OBJECT) \ 942 V(TAIL_CALLER_FRAME) \
935 V(ARGUMENTS_OBJECT) \ 943 V(COMPILED_STUB_FRAME) \
936 V(ARGUMENTS_ELEMENTS) \ 944 V(DUPLICATED_OBJECT) \
937 V(ARGUMENTS_LENGTH) \ 945 V(ARGUMENTS_OBJECT) \
938 V(CAPTURED_OBJECT) \ 946 V(ARGUMENTS_ELEMENTS) \
939 V(REGISTER) \ 947 V(ARGUMENTS_LENGTH) \
940 V(INT32_REGISTER) \ 948 V(CAPTURED_OBJECT) \
941 V(UINT32_REGISTER) \ 949 V(REGISTER) \
942 V(BOOL_REGISTER) \ 950 V(INT32_REGISTER) \
943 V(FLOAT_REGISTER) \ 951 V(UINT32_REGISTER) \
944 V(DOUBLE_REGISTER) \ 952 V(BOOL_REGISTER) \
945 V(STACK_SLOT) \ 953 V(FLOAT_REGISTER) \
946 V(INT32_STACK_SLOT) \ 954 V(DOUBLE_REGISTER) \
947 V(UINT32_STACK_SLOT) \ 955 V(STACK_SLOT) \
948 V(BOOL_STACK_SLOT) \ 956 V(INT32_STACK_SLOT) \
949 V(FLOAT_STACK_SLOT) \ 957 V(UINT32_STACK_SLOT) \
950 V(DOUBLE_STACK_SLOT) \ 958 V(BOOL_STACK_SLOT) \
959 V(FLOAT_STACK_SLOT) \
960 V(DOUBLE_STACK_SLOT) \
951 V(LITERAL) 961 V(LITERAL)
952 962
953 class Translation BASE_EMBEDDED { 963 class Translation BASE_EMBEDDED {
954 public: 964 public:
955 #define DECLARE_TRANSLATION_OPCODE_ENUM(item) item, 965 #define DECLARE_TRANSLATION_OPCODE_ENUM(item) item,
956 enum Opcode { 966 enum Opcode {
957 TRANSLATION_OPCODE_LIST(DECLARE_TRANSLATION_OPCODE_ENUM) 967 TRANSLATION_OPCODE_LIST(DECLARE_TRANSLATION_OPCODE_ENUM)
958 LAST = LITERAL 968 LAST = LITERAL
959 }; 969 };
960 #undef DECLARE_TRANSLATION_OPCODE_ENUM 970 #undef DECLARE_TRANSLATION_OPCODE_ENUM
(...skipping 12 matching lines...) Expand all
973 983
974 // Commands. 984 // Commands.
975 void BeginJSFrame(BailoutId node_id, int literal_id, unsigned height); 985 void BeginJSFrame(BailoutId node_id, int literal_id, unsigned height);
976 void BeginInterpretedFrame(BailoutId bytecode_offset, int literal_id, 986 void BeginInterpretedFrame(BailoutId bytecode_offset, int literal_id,
977 unsigned height); 987 unsigned height);
978 void BeginCompiledStubFrame(int height); 988 void BeginCompiledStubFrame(int height);
979 void BeginArgumentsAdaptorFrame(int literal_id, unsigned height); 989 void BeginArgumentsAdaptorFrame(int literal_id, unsigned height);
980 void BeginTailCallerFrame(int literal_id); 990 void BeginTailCallerFrame(int literal_id);
981 void BeginConstructStubFrame(BailoutId bailout_id, int literal_id, 991 void BeginConstructStubFrame(BailoutId bailout_id, int literal_id,
982 unsigned height); 992 unsigned height);
993 void BeginBuiltinContinuationFrame(BailoutId bailout_id, int literal_id,
994 unsigned height);
995 void BeginJavaScriptBuiltinContinuationFrame(BailoutId bailout_id,
996 int literal_id, unsigned height);
983 void BeginGetterStubFrame(int literal_id); 997 void BeginGetterStubFrame(int literal_id);
984 void BeginSetterStubFrame(int literal_id); 998 void BeginSetterStubFrame(int literal_id);
985 void BeginArgumentsObject(int args_length); 999 void BeginArgumentsObject(int args_length);
986 void ArgumentsElements(bool is_rest); 1000 void ArgumentsElements(bool is_rest);
987 void ArgumentsLength(bool is_rest); 1001 void ArgumentsLength(bool is_rest);
988 void BeginCapturedObject(int length); 1002 void BeginCapturedObject(int length);
989 void DuplicateObject(int object_index); 1003 void DuplicateObject(int object_index);
990 void StoreRegister(Register reg); 1004 void StoreRegister(Register reg);
991 void StoreInt32Register(Register reg); 1005 void StoreInt32Register(Register reg);
992 void StoreUint32Register(Register reg); 1006 void StoreUint32Register(Register reg);
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
1104 std::vector<Handle<Object> > expression_stack_; 1118 std::vector<Handle<Object> > expression_stack_;
1105 int source_position_; 1119 int source_position_;
1106 1120
1107 friend class Deoptimizer; 1121 friend class Deoptimizer;
1108 }; 1122 };
1109 1123
1110 } // namespace internal 1124 } // namespace internal
1111 } // namespace v8 1125 } // namespace v8
1112 1126
1113 #endif // V8_DEOPTIMIZER_H_ 1127 #endif // V8_DEOPTIMIZER_H_
OLDNEW
« no previous file with comments | « src/compiler/js-call-reducer.cc ('k') | src/deoptimizer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698