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

Side by Side Diff: src/compiler/js-operator.h

Issue 453363003: Revert "Initial shot at deoptimizing JSCallFunction in Turbofan." (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « src/compiler/js-generic-lowering.cc ('k') | src/compiler/linkage.h » ('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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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_COMPILER_JS_OPERATOR_H_ 5 #ifndef V8_COMPILER_JS_OPERATOR_H_
6 #define V8_COMPILER_JS_OPERATOR_H_ 6 #define V8_COMPILER_JS_OPERATOR_H_
7 7
8 #include "src/compiler/linkage.h"
9 #include "src/compiler/opcodes.h" 8 #include "src/compiler/opcodes.h"
10 #include "src/compiler/operator.h" 9 #include "src/compiler/operator.h"
11 #include "src/unique.h" 10 #include "src/unique.h"
12 #include "src/zone.h" 11 #include "src/zone.h"
13 12
14 namespace v8 { 13 namespace v8 {
15 namespace internal { 14 namespace internal {
16 namespace compiler { 15 namespace compiler {
17 16
18 // Defines the location of a context slot relative to a specific scope. This is 17 // Defines the location of a context slot relative to a specific scope. This is
(...skipping 23 matching lines...) Expand all
42 struct LoadNamedParameters { 41 struct LoadNamedParameters {
43 PrintableUnique<Name> name; 42 PrintableUnique<Name> name;
44 ContextualMode contextual_mode; 43 ContextualMode contextual_mode;
45 }; 44 };
46 45
47 // Defines the arity and the call flags for a JavaScript function call. This is 46 // Defines the arity and the call flags for a JavaScript function call. This is
48 // used as a parameter by JSCall operators. 47 // used as a parameter by JSCall operators.
49 struct CallParameters { 48 struct CallParameters {
50 int arity; 49 int arity;
51 CallFunctionFlags flags; 50 CallFunctionFlags flags;
52 // TODO(jarin) Remove the deopt flag once we can deoptimize all JavaScript
53 // calls (specifically the FILTER_KEY call in ForInStatement).
54 CallDescriptor::DeoptimizationSupport can_deoptimize;
55 }; 51 };
56 52
57 // Interface for building JavaScript-level operators, e.g. directly from the 53 // Interface for building JavaScript-level operators, e.g. directly from the
58 // AST. Most operators have no parameters, thus can be globally shared for all 54 // AST. Most operators have no parameters, thus can be globally shared for all
59 // graphs. 55 // graphs.
60 class JSOperatorBuilder { 56 class JSOperatorBuilder {
61 public: 57 public:
62 explicit JSOperatorBuilder(Zone* zone) : zone_(zone) {} 58 explicit JSOperatorBuilder(Zone* zone) : zone_(zone) {}
63 59
64 #define SIMPLE(name, properties, inputs, outputs) \ 60 #define SIMPLE(name, properties, inputs, outputs) \
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 Operator* UnaryNot() { UNOP(JSUnaryNot); } 96 Operator* UnaryNot() { UNOP(JSUnaryNot); }
101 Operator* ToBoolean() { UNOP(JSToBoolean); } 97 Operator* ToBoolean() { UNOP(JSToBoolean); }
102 Operator* ToNumber() { UNOP(JSToNumber); } 98 Operator* ToNumber() { UNOP(JSToNumber); }
103 Operator* ToString() { UNOP(JSToString); } 99 Operator* ToString() { UNOP(JSToString); }
104 Operator* ToName() { UNOP(JSToName); } 100 Operator* ToName() { UNOP(JSToName); }
105 Operator* ToObject() { UNOP(JSToObject); } 101 Operator* ToObject() { UNOP(JSToObject); }
106 Operator* Yield() { UNOP(JSYield); } 102 Operator* Yield() { UNOP(JSYield); }
107 103
108 Operator* Create() { SIMPLE(JSCreate, Operator::kEliminatable, 0, 1); } 104 Operator* Create() { SIMPLE(JSCreate, Operator::kEliminatable, 0, 1); }
109 105
110 Operator* Call(int arguments, CallFunctionFlags flags, 106 Operator* Call(int arguments, CallFunctionFlags flags) {
111 CallDescriptor::DeoptimizationSupport can_deoptimize) { 107 CallParameters parameters = {arguments, flags};
112 CallParameters parameters = {arguments, flags, can_deoptimize};
113 OP1(JSCallFunction, CallParameters, parameters, Operator::kNoProperties, 108 OP1(JSCallFunction, CallParameters, parameters, Operator::kNoProperties,
114 arguments, 1); 109 arguments, 1);
115 } 110 }
116 111
117 Operator* CallNew(int arguments) { 112 Operator* CallNew(int arguments) {
118 return new (zone_) 113 return new (zone_)
119 Operator1<int>(IrOpcode::kJSCallConstruct, Operator::kNoProperties, 114 Operator1<int>(IrOpcode::kJSCallConstruct, Operator::kNoProperties,
120 arguments, 1, "JSCallConstruct", arguments); 115 arguments, 1, "JSCallConstruct", arguments);
121 } 116 }
122 117
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 static int HashCode(Runtime::FunctionId val) { return static_cast<int>(val); } 204 static int HashCode(Runtime::FunctionId val) { return static_cast<int>(val); }
210 static bool Equals(Runtime::FunctionId a, Runtime::FunctionId b) { 205 static bool Equals(Runtime::FunctionId a, Runtime::FunctionId b) {
211 return a == b; 206 return a == b;
212 } 207 }
213 }; 208 };
214 } 209 }
215 } 210 }
216 } // namespace v8::internal::compiler 211 } // namespace v8::internal::compiler
217 212
218 #endif // V8_COMPILER_JS_OPERATOR_H_ 213 #endif // V8_COMPILER_JS_OPERATOR_H_
OLDNEW
« no previous file with comments | « src/compiler/js-generic-lowering.cc ('k') | src/compiler/linkage.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698