Revision: 22851
Author: [email protected]
Date: Tue Aug 5 08:47:39 2014 UTC
Log: Make start node a value input to parameter nodes.
BUG=
[email protected]
Review URL: https://codereview.chromium.org/437183002
http://code.google.com/p/v8/source/detail?r=22851
Modified:
/branches/bleeding_edge/src/compiler/ast-graph-builder.cc
/branches/bleeding_edge/src/compiler/common-operator.h
/branches/bleeding_edge/src/compiler/opcodes.h
/branches/bleeding_edge/src/compiler/raw-machine-assembler.cc
/branches/bleeding_edge/src/compiler/structured-machine-assembler.cc
/branches/bleeding_edge/src/compiler/verifier.cc
/branches/bleeding_edge/test/cctest/compiler/graph-builder-tester.cc
/branches/bleeding_edge/test/cctest/compiler/graph-builder-tester.h
/branches/bleeding_edge/test/cctest/compiler/graph-tester.h
/branches/bleeding_edge/test/cctest/compiler/simplified-graph-builder.cc
/branches/bleeding_edge/test/cctest/compiler/simplified-graph-builder.h
/branches/bleeding_edge/test/cctest/compiler/test-js-context-specialization.cc
/branches/bleeding_edge/test/cctest/compiler/test-js-typed-lowering.cc
/branches/bleeding_edge/test/cctest/compiler/test-machine-operator-reducer.cc
/branches/bleeding_edge/test/cctest/compiler/test-phi-reducer.cc
/branches/bleeding_edge/test/cctest/compiler/test-representation-change.cc
/branches/bleeding_edge/test/cctest/compiler/test-schedule.cc
/branches/bleeding_edge/test/cctest/compiler/test-scheduler.cc
=======================================
--- /branches/bleeding_edge/src/compiler/ast-graph-builder.cc Mon Aug 4
11:34:54 2014 UTC
+++ /branches/bleeding_edge/src/compiler/ast-graph-builder.cc Tue Aug 5
08:47:39 2014 UTC
@@ -33,7 +33,7 @@
if (!function_closure_.is_set()) {
// Parameter -1 is special for the function closure
Operator* op = common()->Parameter(-1);
- Node* node = NewNode(op);
+ Node* node = NewNode(op, graph()->start());
function_closure_.set(node);
}
return function_closure_.get();
@@ -44,7 +44,7 @@
if (!function_context_.is_set()) {
// Parameter (arity + 1) is special for the outer context of the
function
Operator* op = common()->Parameter(info()->num_parameters() + 1);
- Node* node = NewNode(op);
+ Node* node = NewNode(op, graph()->start());
function_context_.set(node);
}
return function_context_.get();
@@ -60,7 +60,8 @@
SourcePosition(info()->shared_info()->start_position()));
// Set up the basic structure of the graph.
- graph()->SetStart(graph()->NewNode(common()->Start()));
+ graph()->SetStart(
+ graph()->NewNode(common()->Start(info()->num_parameters())));
// Initialize the top-level environment.
Environment env(this, scope, graph()->start());
@@ -177,13 +178,15 @@
DCHECK_EQ(scope->num_parameters() + 1, parameters_count());
// Bind the receiver variable.
- Node* receiver = builder->graph()->NewNode(common()->Parameter(0));
+ Node* receiver = builder->graph()->NewNode(common()->Parameter(0),
+ builder->graph()->start());
values()->push_back(receiver);
// Bind all parameter variables. The parameter indices are shifted by 1
// (receiver is parameter index -1 but environment index 0).
for (int i = 0; i < scope->num_parameters(); ++i) {
- Node* parameter = builder->graph()->NewNode(common()->Parameter(i +
1));
+ Node* parameter = builder->graph()->NewNode(common()->Parameter(i + 1),
+ builder->graph()->start());
values()->push_back(parameter);
}
@@ -1618,7 +1621,7 @@
if (!variable->IsContextSlot()) continue;
// Temporary parameter node. The parameter indices are shifted by 1
// (receiver is parameter index -1 but environment index 0).
- Node* parameter = NewNode(common()->Parameter(i + 1));
+ Node* parameter = NewNode(common()->Parameter(i + 1),
graph()->start());
// Context variable (at bottom of the context chain).
DCHECK_EQ(0, info()->scope()->ContextChainLength(variable->scope()));
Operator* op = javascript()->StoreContext(0, variable->index());
=======================================
--- /branches/bleeding_edge/src/compiler/common-operator.h Mon Aug 4
11:34:54 2014 UTC
+++ /branches/bleeding_edge/src/compiler/common-operator.h Tue Aug 5
08:47:39 2014 UTC
@@ -65,7 +65,12 @@
return new (zone_) ControlOperator(IrOpcode::k##name,
Operator::kFoldable, \
inputs, 0, controls, #name);
- Operator* Start() { CONTROL_OP(Start, 0, 0); }
+ Operator* Start(int num_formal_parameters) {
+ // Outputs are formal parameters, plus context, receiver, and
JSFunction.
+ int outputs = num_formal_parameters + 3;
+ return new (zone_) ControlOperator(IrOpcode::kStart,
Operator::kFoldable, 0,
+ outputs, 0, "Start");
+ }
Operator* Dead() { CONTROL_OP(Dead, 0, 0); }
Operator* End() { CONTROL_OP(End, 0, 1); }
Operator* Branch() { CONTROL_OP(Branch, 1, 1); }
@@ -95,7 +100,7 @@
}
Operator* Parameter(int index) {
- return new (zone_) Operator1<int>(IrOpcode::kParameter,
Operator::kPure, 0,
+ return new (zone_) Operator1<int>(IrOpcode::kParameter,
Operator::kPure, 1,
1, "Parameter", index);
}
Operator* Int32Constant(int32_t value) {
=======================================
--- /branches/bleeding_edge/src/compiler/opcodes.h Fri Aug 1 12:18:20 2014
UTC
+++ /branches/bleeding_edge/src/compiler/opcodes.h Tue Aug 5 08:47:39 2014
UTC
@@ -23,7 +23,6 @@
// Opcodes for common operators.
#define LEAF_OP_LIST(V) \
- V(Parameter) \
V(Int32Constant) \
V(Int64Constant) \
V(Float64Constant) \
@@ -36,6 +35,7 @@
V(EffectPhi) \
V(FrameState) \
V(Call) \
+ V(Parameter) \
V(Projection)
#define COMMON_OP_LIST(V) \
=======================================
--- /branches/bleeding_edge/src/compiler/raw-machine-assembler.cc Mon Aug
4 11:34:54 2014 UTC
+++ /branches/bleeding_edge/src/compiler/raw-machine-assembler.cc Tue Aug
5 08:47:39 2014 UTC
@@ -21,10 +21,12 @@
parameters_(NULL),
exit_label_(schedule()->exit()),
current_block_(schedule()->entry()) {
+ Node* s = graph->NewNode(common_.Start(parameter_count()));
+ graph->SetStart(s);
if (parameter_count() == 0) return;
parameters_ = zone()->NewArray<Node*>(parameter_count());
for (int i = 0; i < parameter_count(); ++i) {
- parameters_[i] = NewNode(common()->Parameter(i));
+ parameters_[i] = NewNode(common()->Parameter(i), graph->start());
}
}
=======================================
--- /branches/bleeding_edge/src/compiler/structured-machine-assembler.cc
Mon Aug 4 11:34:54 2014 UTC
+++ /branches/bleeding_edge/src/compiler/structured-machine-assembler.cc
Tue Aug 5 08:47:39 2014 UTC
@@ -28,10 +28,12 @@
current_environment_(new (zone())
Environment(zone(), schedule()->entry(),
false)),
number_of_variables_(0) {
+ Node* s = graph->NewNode(common_.Start(parameter_count()));
+ graph->SetStart(s);
if (parameter_count() == 0) return;
parameters_ = zone()->NewArray<Node*>(parameter_count());
for (int i = 0; i < parameter_count(); ++i) {
- parameters_[i] = NewNode(common()->Parameter(i));
+ parameters_[i] = NewNode(common()->Parameter(i), graph->start());
}
}
=======================================
--- /branches/bleeding_edge/src/compiler/verifier.cc Wed Jul 30 13:54:45
2014 UTC
+++ /branches/bleeding_edge/src/compiler/verifier.cc Tue Aug 5 08:47:39
2014 UTC
@@ -102,7 +102,8 @@
Node::Uses uses = node->uses();
for (Node::Uses::iterator it = uses.begin(); it != uses.end(); ++it) {
CHECK(!NodeProperties::IsValueEdge(it.edge()) ||
- (*it)->opcode() == IrOpcode::kProjection);
+ (*it)->opcode() == IrOpcode::kProjection ||
+ (*it)->opcode() == IrOpcode::kParameter);
}
}
@@ -148,10 +149,18 @@
case IrOpcode::kThrow:
// TODO(rossberg): what are the constraints on these?
break;
- case IrOpcode::kParameter:
- // Parameters have no inputs.
- CHECK_EQ(0, input_count);
+ case IrOpcode::kParameter: {
+ // Parameters have the start node as inputs.
+ CHECK_EQ(1, input_count);
+ CHECK_EQ(IrOpcode::kStart,
+ NodeProperties::GetValueInput(node, 0)->opcode());
+ // Parameter has an input that produces enough values.
+ int index = static_cast<Operator1<int>*>(node->op())->parameter();
+ Node* input = NodeProperties::GetValueInput(node, 0);
+ // Currently, parameter indices start at -1 instead of 0.
+ CHECK_GT(NodeProperties::GetValueOutputCount(input), index + 1);
break;
+ }
case IrOpcode::kInt32Constant:
case IrOpcode::kInt64Constant:
case IrOpcode::kFloat64Constant:
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/graph-builder-tester.cc
Mon Aug 4 11:34:54 2014 UTC
+++ /branches/bleeding_edge/test/cctest/compiler/graph-builder-tester.cc
Tue Aug 5 08:47:39 2014 UTC
@@ -22,9 +22,9 @@
DCHECK_EQ(NULL, parameters_);
graph_ = builder->graph();
if (parameter_count() == 0) return;
- parameters_ =
builder->graph()->zone()->NewArray<Node*>(parameter_count());
+ parameters_ = graph_->zone()->NewArray<Node*>(parameter_count());
for (int i = 0; i < parameter_count(); ++i) {
- parameters_[i] = builder->NewNode(common->Parameter(i));
+ parameters_[i] = builder->NewNode(common->Parameter(i),
graph_->start());
}
}
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/graph-builder-tester.h Fri
Aug 1 08:16:19 2014 UTC
+++ /branches/bleeding_edge/test/cctest/compiler/graph-builder-tester.h Tue
Aug 5 08:47:39 2014 UTC
@@ -47,10 +47,12 @@
MachineRepresentation* parameters);
void InitParameters(GraphBuilder* builder, CommonOperatorBuilder*
common);
- private:
+ protected:
int parameter_count() const {
return call_descriptor_builder_->parameter_count();
}
+
+ private:
MachineCallDescriptorBuilder* call_descriptor_builder_;
Node** parameters_;
// TODO(dcarney): shouldn't need graph stored.
@@ -97,7 +99,7 @@
p0, p1, p2, p3, p4)),
SimplifiedGraphBuilder(main_graph_, &main_common_, &main_machine_,
&main_simplified_) {
- Begin();
+ Begin(parameter_count());
InitParameters(this, &main_common_);
}
virtual ~GraphBuilderTester() {}
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/graph-tester.h Wed Jul 30
13:54:45 2014 UTC
+++ /branches/bleeding_edge/test/cctest/compiler/graph-tester.h Tue Aug 5
08:47:39 2014 UTC
@@ -23,8 +23,9 @@
class GraphWithStartNodeTester : public GraphTester {
public:
- GraphWithStartNodeTester()
- : builder_(main_zone()), start_node_(NewNode(builder_.Start())) {
+ explicit GraphWithStartNodeTester(int num_parameters = 0)
+ : builder_(main_zone()),
+ start_node_(NewNode(builder_.Start(num_parameters))) {
SetStart(start_node_);
}
=======================================
---
/branches/bleeding_edge/test/cctest/compiler/simplified-graph-builder.cc
Mon Aug 4 11:34:54 2014 UTC
+++
/branches/bleeding_edge/test/cctest/compiler/simplified-graph-builder.cc
Tue Aug 5 08:47:39 2014 UTC
@@ -16,9 +16,9 @@
simplified_(simplified) {}
-void SimplifiedGraphBuilder::Begin() {
+void SimplifiedGraphBuilder::Begin(int num_parameters) {
DCHECK(graph()->start() == NULL);
- Node* start = graph()->NewNode(common()->Start());
+ Node* start = graph()->NewNode(common()->Start(num_parameters));
graph()->SetStart(start);
set_environment(new (zone()) Environment(this, start));
}
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/simplified-graph-builder.h
Wed Jul 30 13:54:45 2014 UTC
+++ /branches/bleeding_edge/test/cctest/compiler/simplified-graph-builder.h
Tue Aug 5 08:47:39 2014 UTC
@@ -53,7 +53,7 @@
}
// Initialize graph and builder.
- void Begin();
+ void Begin(int num_parameters);
void Return(Node* value);
=======================================
---
/branches/bleeding_edge/test/cctest/compiler/test-js-context-specialization.cc
Wed Jul 30 13:54:45 2014 UTC
+++
/branches/bleeding_edge/test/cctest/compiler/test-js-context-specialization.cc
Tue Aug 5 08:47:39 2014 UTC
@@ -50,7 +50,7 @@
TEST(ReduceJSLoadContext) {
ContextSpecializationTester t;
- Node* start = t.NewNode(t.common()->Start());
+ Node* start = t.NewNode(t.common()->Start(0));
t.graph()->SetStart(start);
// Make a context and initialize it a bit for this test.
@@ -64,7 +64,7 @@
native->set(slot, *expected);
Node* const_context = t.jsgraph()->Constant(native);
- Node* param_context = t.NewNode(t.common()->Parameter(0));
+ Node* param_context = t.NewNode(t.common()->Parameter(0), start);
JSContextSpecializer spec(t.info(), t.jsgraph(), const_context);
{
@@ -145,7 +145,7 @@
TEST(SpecializeToContext) {
ContextSpecializationTester t;
- Node* start = t.NewNode(t.common()->Start());
+ Node* start = t.NewNode(t.common()->Start(0));
t.graph()->SetStart(start);
// Make a context and initialize it a bit for this test.
@@ -156,13 +156,13 @@
t.info()->SetContext(native);
Node* const_context = t.jsgraph()->Constant(native);
- Node* param_context = t.NewNode(t.common()->Parameter(0));
+ Node* param_context = t.NewNode(t.common()->Parameter(0), start);
JSContextSpecializer spec(t.info(), t.jsgraph(), const_context);
{
// Check that SpecializeToContext() replaces values and forwards
effects
// correctly, and folds values from constant and non-constant contexts
- Node* effect_in = t.NewNode(t.common()->Start());
+ Node* effect_in = t.NewNode(t.common()->Start(0));
Node* load = t.NewNode(t.javascript()->LoadContext(0, slot, true),
const_context, const_context, effect_in, start);
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-js-typed-lowering.cc
Thu Jul 31 11:31:39 2014 UTC
+++ /branches/bleeding_edge/test/cctest/compiler/test-js-typed-lowering.cc
Tue Aug 5 08:47:39 2014 UTC
@@ -16,7 +16,7 @@
class JSTypedLoweringTester : public HandleAndZoneScope {
public:
- JSTypedLoweringTester()
+ explicit JSTypedLoweringTester(int num_parameters = 0)
: isolate(main_isolate()),
binop(NULL),
unop(NULL),
@@ -29,6 +29,8 @@
source_positions(&graph),
context_node(NULL) {
typer.DecorateGraph(&graph);
+ Node* s = graph.NewNode(common.Start(num_parameters));
+ graph.SetStart(s);
}
Isolate* isolate;
@@ -44,7 +46,7 @@
Node* context_node;
Node* Parameter(Type* t, int32_t index = 0) {
- Node* n = graph.NewNode(common.Parameter(index));
+ Node* n = graph.NewNode(common.Parameter(index), graph.start());
NodeProperties::SetBounds(n, Bounds(Type::None(), t));
return n;
}
@@ -57,18 +59,11 @@
return node;
}
- Node* start() {
- Node* s = graph.start();
- if (s == NULL) {
- s = graph.NewNode(common.Start());
- graph.SetStart(s);
- }
- return s;
- }
+ Node* start() { return graph.start(); }
Node* context() {
if (context_node == NULL) {
- context_node = graph.NewNode(common.Parameter(-1));
+ context_node = graph.NewNode(common.Parameter(-1), graph.start());
}
return context_node;
}
=======================================
---
/branches/bleeding_edge/test/cctest/compiler/test-machine-operator-reducer.cc
Fri Aug 1 10:54:58 2014 UTC
+++
/branches/bleeding_edge/test/cctest/compiler/test-machine-operator-reducer.cc
Tue Aug 5 08:47:39 2014 UTC
@@ -30,14 +30,17 @@
class ReducerTester : public HandleAndZoneScope {
public:
- ReducerTester()
+ explicit ReducerTester(int num_parameters = 0)
: isolate(main_isolate()),
binop(NULL),
unop(NULL),
machine(main_zone()),
common(main_zone()),
graph(main_zone()),
- maxuint32(Constant<int32_t>(kMaxUInt32)) {}
+ maxuint32(Constant<int32_t>(kMaxUInt32)) {
+ Node* s = graph.NewNode(common.Start(num_parameters));
+ graph.SetStart(s);
+ }
Isolate* isolate;
Operator* binop;
@@ -168,7 +171,7 @@
}
Node* Parameter(int32_t index = 0) {
- return graph.NewNode(common.Parameter(index));
+ return graph.NewNode(common.Parameter(index), graph.start());
}
};
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-phi-reducer.cc Wed
Jul 30 13:54:45 2014 UTC
+++ /branches/bleeding_edge/test/cctest/compiler/test-phi-reducer.cc Tue
Aug 5 08:47:39 2014 UTC
@@ -14,12 +14,14 @@
class PhiReducerTester : HandleAndZoneScope {
public:
- PhiReducerTester()
+ explicit PhiReducerTester(int num_parameters = 0)
: isolate(main_isolate()),
common(main_zone()),
graph(main_zone()),
- self(graph.NewNode(common.Start())),
- dead(graph.NewNode(common.Dead())) {}
+ self(graph.NewNode(common.Start(num_parameters))),
+ dead(graph.NewNode(common.Dead())) {
+ graph.SetStart(self);
+ }
Isolate* isolate;
CommonOperatorBuilder common;
@@ -47,7 +49,7 @@
}
Node* Parameter(int32_t index = 0) {
- return graph.NewNode(common.Parameter(index));
+ return graph.NewNode(common.Parameter(index), graph.start());
}
Node* Phi(Node* a) {
=======================================
---
/branches/bleeding_edge/test/cctest/compiler/test-representation-change.cc
Fri Aug 1 10:54:58 2014 UTC
+++
/branches/bleeding_edge/test/cctest/compiler/test-representation-change.cc
Tue Aug 5 08:47:39 2014 UTC
@@ -22,11 +22,13 @@
class RepresentationChangerTester : public HandleAndZoneScope,
public GraphAndBuilders {
public:
- RepresentationChangerTester()
+ explicit RepresentationChangerTester(int num_parameters = 0)
: GraphAndBuilders(main_zone()),
typer_(main_zone()),
jsgraph_(main_graph_, &main_common_, &typer_),
changer_(&jsgraph_, &main_simplified_, &main_machine_,
main_isolate()) {
+ Node* s = graph()->NewNode(common()->Start(num_parameters));
+ graph()->SetStart(s);
}
Typer typer_;
@@ -60,7 +62,7 @@
}
Node* Parameter(int index = 0) {
- return graph()->NewNode(common()->Parameter(index));
+ return graph()->NewNode(common()->Parameter(index), graph()->start());
}
void CheckTypeError(RepTypeUnion from, RepTypeUnion to) {
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-schedule.cc Wed Jul
30 13:54:45 2014 UTC
+++ /branches/bleeding_edge/test/cctest/compiler/test-schedule.cc Tue Aug
5 08:47:39 2014 UTC
@@ -147,10 +147,10 @@
CommonOperatorBuilder common(scope.main_zone());
MachineOperatorBuilder machine(scope.main_zone(), kMachineWord32);
- Node* start = graph.NewNode(common.Start());
+ Node* start = graph.NewNode(common.Start(0));
graph.SetStart(start);
- Node* param0 = graph.NewNode(common.Parameter(0));
- Node* param1 = graph.NewNode(common.Parameter(1));
+ Node* param0 = graph.NewNode(common.Parameter(0), graph.start());
+ Node* param1 = graph.NewNode(common.Parameter(1), graph.start());
Node* mul = graph.NewNode(machine.Int32Mul(), param0, param1);
Node* ret = graph.NewNode(common.Return(), mul, start);
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-scheduler.cc Thu Jul
31 11:59:49 2014 UTC
+++ /branches/bleeding_edge/test/cctest/compiler/test-scheduler.cc Tue Aug
5 08:47:39 2014 UTC
@@ -605,7 +605,7 @@
HandleAndZoneScope scope;
Graph graph(scope.main_zone());
CommonOperatorBuilder builder(scope.main_zone());
- graph.SetStart(graph.NewNode(builder.Start()));
+ graph.SetStart(graph.NewNode(builder.Start(0)));
graph.SetEnd(graph.NewNode(builder.End(), graph.start()));
Scheduler scheduler(scope.main_zone());
@@ -617,9 +617,9 @@
HandleAndZoneScope scope;
Graph graph(scope.main_zone());
CommonOperatorBuilder builder(scope.main_zone());
- graph.SetStart(graph.NewNode(builder.Start()));
+ graph.SetStart(graph.NewNode(builder.Start(0)));
- Node* p1 = graph.NewNode(builder.Parameter(0));
+ Node* p1 = graph.NewNode(builder.Parameter(0), graph.start());
Node* ret = graph.NewNode(builder.Return(), p1, graph.start(),
graph.start());
graph.SetEnd(graph.NewNode(builder.End(), ret));
@@ -664,13 +664,13 @@
Graph graph(scope.main_zone());
CommonOperatorBuilder builder(scope.main_zone());
JSOperatorBuilder js_builder(scope.main_zone());
- graph.SetStart(graph.NewNode(builder.Start()));
+ graph.SetStart(graph.NewNode(builder.Start(3)));
- Node* p1 = graph.NewNode(builder.Parameter(0));
- Node* p2 = graph.NewNode(builder.Parameter(1));
- Node* p3 = graph.NewNode(builder.Parameter(2));
- Node* p4 = graph.NewNode(builder.Parameter(3));
- Node* p5 = graph.NewNode(builder.Parameter(4));
+ Node* p1 = graph.NewNode(builder.Parameter(0), graph.start());
+ Node* p2 = graph.NewNode(builder.Parameter(1), graph.start());
+ Node* p3 = graph.NewNode(builder.Parameter(2), graph.start());
+ Node* p4 = graph.NewNode(builder.Parameter(3), graph.start());
+ Node* p5 = graph.NewNode(builder.Parameter(4), graph.start());
Node* cmp = graph.NewNode(js_builder.LessThanOrEqual(), p1, p2, p3,
graph.start(), graph.start());
Node* branch = graph.NewNode(builder.Branch(), cmp, graph.start());
@@ -715,6 +715,9 @@
// return c * c - a;
// }
// }
+ op = common_builder.Start(0);
+ Node* n0 = graph.NewNode(op);
+ USE(n0);
Node* nil = graph.NewNode(common_builder.Dead());
op = common_builder.End();
Node* n23 = graph.NewNode(op, nil);
@@ -738,11 +741,11 @@
Node* n11 = graph.NewNode(op, nil, nil, nil, nil, nil);
USE(n11);
op = common_builder.Parameter(0);
- Node* n2 = graph.NewNode(op);
+ Node* n2 = graph.NewNode(op, n0);
USE(n2);
n11->ReplaceInput(0, n2);
op = common_builder.Parameter(0);
- Node* n3 = graph.NewNode(op);
+ Node* n3 = graph.NewNode(op, n0);
USE(n3);
n11->ReplaceInput(1, n3);
op = common_builder.HeapConstant(unique_constant);
@@ -755,9 +758,6 @@
n8->ReplaceInput(0, n2);
n8->ReplaceInput(1, n3);
n8->ReplaceInput(2, n7);
- op = common_builder.Start();
- Node* n0 = graph.NewNode(op);
- USE(n0);
n8->ReplaceInput(3, n0);
n8->ReplaceInput(4, n0);
n11->ReplaceInput(3, n8);
@@ -776,7 +776,7 @@
Node* n12 = graph.NewNode(op, nil, nil, nil, nil, nil);
USE(n12);
op = common_builder.Parameter(0);
- Node* n4 = graph.NewNode(op);
+ Node* n4 = graph.NewNode(op, n0);
USE(n4);
n12->ReplaceInput(0, n4);
n12->ReplaceInput(1, n4);
@@ -794,7 +794,7 @@
n14->ReplaceInput(4, n10);
n15->ReplaceInput(0, n14);
op = common_builder.Parameter(0);
- Node* n5 = graph.NewNode(op);
+ Node* n5 = graph.NewNode(op, n0);
USE(n5);
n15->ReplaceInput(1, n5);
n15->ReplaceInput(2, n7);
@@ -867,6 +867,9 @@
// }
// return a;
// }
+ op = common_builder.Start(0);
+ Node* n0 = graph.NewNode(op);
+ USE(n0);
Node* nil = graph.NewNode(common_builder.Dead());
op = common_builder.End();
Node* n20 = graph.NewNode(op, nil);
@@ -878,7 +881,7 @@
Node* n8 = graph.NewNode(op, nil, nil, nil);
USE(n8);
op = common_builder.Parameter(0);
- Node* n2 = graph.NewNode(op);
+ Node* n2 = graph.NewNode(op, n0);
USE(n2);
n8->ReplaceInput(0, n2);
op = js_builder.Add();
@@ -900,16 +903,13 @@
Node* n9 = graph.NewNode(op, nil, nil, nil);
USE(n9);
op = common_builder.Parameter(0);
- Node* n3 = graph.NewNode(op);
+ Node* n3 = graph.NewNode(op, n0);
USE(n3);
n9->ReplaceInput(0, n3);
n9->ReplaceInput(1, n9);
op = common_builder.Loop(2);
Node* n6 = graph.NewNode(op, nil, nil);
USE(n6);
- op = common_builder.Start();
- Node* n0 = graph.NewNode(op);
- USE(n0);
n6->ReplaceInput(0, n0);
op = common_builder.IfTrue();
Node* n14 = graph.NewNode(op, nil);
@@ -993,6 +993,9 @@
// }
// return a;
// }
+ op = common_builder.Start(0);
+ Node* n0 = graph.NewNode(op);
+ USE(n0);
Node* nil = graph.NewNode(common_builder.Dead());
op = common_builder.End();
Node* n46 = graph.NewNode(op, nil);
@@ -1007,7 +1010,7 @@
Node* n9 = graph.NewNode(op, nil, nil, nil);
USE(n9);
op = common_builder.Parameter(0);
- Node* n2 = graph.NewNode(op);
+ Node* n2 = graph.NewNode(op, n0);
USE(n2);
n9->ReplaceInput(0, n2);
op = common_builder.Phi(2);
@@ -1032,7 +1035,7 @@
Node* n10 = graph.NewNode(op, nil, nil, nil);
USE(n10);
op = common_builder.Parameter(0);
- Node* n3 = graph.NewNode(op);
+ Node* n3 = graph.NewNode(op, n0);
USE(n3);
n10->ReplaceInput(0, n3);
op = common_builder.Phi(2);
@@ -1053,9 +1056,6 @@
op = common_builder.Loop(2);
Node* n7 = graph.NewNode(op, nil, nil);
USE(n7);
- op = common_builder.Start();
- Node* n0 = graph.NewNode(op);
- USE(n0);
n7->ReplaceInput(0, n0);
op = common_builder.IfFalse();
Node* n30 = graph.NewNode(op, nil);
@@ -1073,7 +1073,7 @@
Node* n11 = graph.NewNode(op, nil, nil, nil);
USE(n11);
op = common_builder.Parameter(0);
- Node* n4 = graph.NewNode(op);
+ Node* n4 = graph.NewNode(op, n0);
USE(n4);
n11->ReplaceInput(0, n4);
n11->ReplaceInput(1, n25);
@@ -1250,6 +1250,9 @@
// }
// return a + d;
// }
+ op = common_builder.Start(0);
+ Node* n0 = graph.NewNode(op);
+ USE(n0);
Node* nil = graph.NewNode(common_builder.Dead());
op = common_builder.End();
Node* n58 = graph.NewNode(op, nil);
@@ -1264,7 +1267,7 @@
Node* n10 = graph.NewNode(op, nil, nil, nil);
USE(n10);
op = common_builder.Parameter(0);
- Node* n2 = graph.NewNode(op);
+ Node* n2 = graph.NewNode(op, n0);
USE(n2);
n10->ReplaceInput(0, n2);
op = common_builder.Phi(2);
@@ -1289,7 +1292,7 @@
Node* n11 = graph.NewNode(op, nil, nil, nil);
USE(n11);
op = common_builder.Parameter(0);
- Node* n3 = graph.NewNode(op);
+ Node* n3 = graph.NewNode(op, n0);
USE(n3);
n11->ReplaceInput(0, n3);
op = common_builder.Phi(2);
@@ -1310,9 +1313,6 @@
op = common_builder.Loop(2);
Node* n8 = graph.NewNode(op, nil, nil);
USE(n8);
- op = common_builder.Start();
- Node* n0 = graph.NewNode(op);
- USE(n0);
n8->ReplaceInput(0, n0);
op = common_builder.Merge(2);
Node* n53 = graph.NewNode(op, nil, nil);
@@ -1345,7 +1345,7 @@
Node* n12 = graph.NewNode(op, nil, nil, nil);
USE(n12);
op = common_builder.Parameter(0);
- Node* n4 = graph.NewNode(op);
+ Node* n4 = graph.NewNode(op, n0);
USE(n4);
n12->ReplaceInput(0, n4);
op = common_builder.Phi(2);
@@ -1580,6 +1580,9 @@
// }
// return a;
// }
+ op = common_builder.Start(0);
+ Node* n0 = graph.NewNode(op);
+ USE(n0);
Node* nil = graph.NewNode(common_builder.Dead());
op = common_builder.End();
Node* n22 = graph.NewNode(op, nil);
@@ -1591,7 +1594,7 @@
Node* n9 = graph.NewNode(op, nil, nil, nil);
USE(n9);
op = common_builder.Parameter(0);
- Node* n2 = graph.NewNode(op);
+ Node* n2 = graph.NewNode(op, n0);
USE(n2);
n9->ReplaceInput(0, n2);
op = js_builder.Add();
@@ -1605,16 +1608,13 @@
Node* n10 = graph.NewNode(op, nil, nil, nil);
USE(n10);
op = common_builder.Parameter(0);
- Node* n3 = graph.NewNode(op);
+ Node* n3 = graph.NewNode(op, n0);
USE(n3);
n10->ReplaceInput(0, n3);
n10->ReplaceInput(1, n10);
op = common_builder.Loop(2);
Node* n7 = graph.NewNode(op, nil, nil);
USE(n7);
- op = common_builder.Start();
- Node* n0 = graph.NewNode(op);
- USE(n0);
n7->ReplaceInput(0, n0);
op = common_builder.IfTrue();
Node* n17 = graph.NewNode(op, nil);
@@ -1656,7 +1656,7 @@
Node* n11 = graph.NewNode(op, nil, nil, nil);
USE(n11);
op = common_builder.Parameter(0);
- Node* n4 = graph.NewNode(op);
+ Node* n4 = graph.NewNode(op, n0);
USE(n4);
n11->ReplaceInput(0, n4);
n11->ReplaceInput(1, n11);
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.