Revision: 23031
Author: [email protected]
Date: Mon Aug 11 11:21:51 2014 UTC
Log: Revert "More lazy deoptimization in Turbofan (binops,
loads/stores)"
This reverts commit r23029.
BUG=
[email protected]
Review URL: https://codereview.chromium.org/460623002
http://code.google.com/p/v8/source/detail?r=23031
Modified:
/branches/bleeding_edge/src/compiler/arm/linkage-arm.cc
/branches/bleeding_edge/src/compiler/arm64/linkage-arm64.cc
/branches/bleeding_edge/src/compiler/ast-graph-builder.cc
/branches/bleeding_edge/src/compiler/ast-graph-builder.h
/branches/bleeding_edge/src/compiler/code-generator.cc
/branches/bleeding_edge/src/compiler/ia32/linkage-ia32.cc
/branches/bleeding_edge/src/compiler/js-generic-lowering.cc
/branches/bleeding_edge/src/compiler/js-operator.h
/branches/bleeding_edge/src/compiler/linkage-impl.h
/branches/bleeding_edge/src/compiler/linkage.cc
/branches/bleeding_edge/src/compiler/linkage.h
/branches/bleeding_edge/src/compiler/operator-properties-inl.h
/branches/bleeding_edge/src/compiler/register-allocator.cc
/branches/bleeding_edge/src/compiler/register-allocator.h
/branches/bleeding_edge/src/compiler/x64/linkage-x64.cc
/branches/bleeding_edge/src/deoptimizer.cc
/branches/bleeding_edge/src/objects.cc
/branches/bleeding_edge/test/cctest/cctest.status
/branches/bleeding_edge/test/cctest/compiler/test-scheduler.cc
/branches/bleeding_edge/test/cctest/test-deoptimization.cc
=======================================
--- /branches/bleeding_edge/src/compiler/arm/linkage-arm.cc Mon Aug 11
10:42:01 2014 UTC
+++ /branches/bleeding_edge/src/compiler/arm/linkage-arm.cc Mon Aug 11
11:21:51 2014 UTC
@@ -49,10 +49,9 @@
CallDescriptor* Linkage::GetStubCallDescriptor(
- CodeStubInterfaceDescriptor* descriptor, int stack_parameter_count,
- CallDescriptor::DeoptimizationSupport can_deoptimize, Zone* zone) {
+ CodeStubInterfaceDescriptor* descriptor, int stack_parameter_count) {
return LinkageHelper::GetStubCallDescriptor<LinkageHelperTraits>(
- zone, descriptor, stack_parameter_count, can_deoptimize);
+ this->info_->zone(), descriptor, stack_parameter_count);
}
=======================================
--- /branches/bleeding_edge/src/compiler/arm64/linkage-arm64.cc Mon Aug 11
10:42:01 2014 UTC
+++ /branches/bleeding_edge/src/compiler/arm64/linkage-arm64.cc Mon Aug 11
11:21:51 2014 UTC
@@ -49,10 +49,9 @@
CallDescriptor* Linkage::GetStubCallDescriptor(
- CodeStubInterfaceDescriptor* descriptor, int stack_parameter_count,
- CallDescriptor::DeoptimizationSupport can_deoptimize, Zone* zone) {
+ CodeStubInterfaceDescriptor* descriptor, int stack_parameter_count) {
return LinkageHelper::GetStubCallDescriptor<LinkageHelperTraits>(
- zone, descriptor, stack_parameter_count, can_deoptimize);
+ this->info_->zone(), descriptor, stack_parameter_count);
}
=======================================
--- /branches/bleeding_edge/src/compiler/ast-graph-builder.cc Mon Aug 11
10:42:01 2014 UTC
+++ /branches/bleeding_edge/src/compiler/ast-graph-builder.cc Mon Aug 11
11:21:51 2014 UTC
@@ -238,12 +238,8 @@
AstGraphBuilder::AstContext::AstContext(AstGraphBuilder* own,
- Expression::Context kind,
- BailoutId bailout_id)
- : bailout_id_(bailout_id),
- kind_(kind),
- owner_(own),
- outer_(own->ast_context()) {
+ Expression::Context kind)
+ : kind_(kind), owner_(own), outer_(own->ast_context()) {
owner()->set_ast_context(this); // Push.
#ifdef DEBUG
original_height_ = environment()->stack_height();
@@ -269,28 +265,6 @@
AstGraphBuilder::AstTestContext::~AstTestContext() {
DCHECK(environment()->stack_height() == original_height_ + 1);
}
-
-
-void AstGraphBuilder::AstEffectContext::ProduceValueWithLazyBailout(
- Node* value) {
- ProduceValue(value);
- owner()->BuildLazyBailout(value, bailout_id_);
-}
-
-
-void AstGraphBuilder::AstValueContext::ProduceValueWithLazyBailout(
- Node* value) {
- ProduceValue(value);
- owner()->BuildLazyBailout(value, bailout_id_);
-}
-
-
-void AstGraphBuilder::AstTestContext::ProduceValueWithLazyBailout(Node*
value) {
- environment()->Push(value);
- owner()->BuildLazyBailout(value, bailout_id_);
- environment()->Pop();
- ProduceValue(value);
-}
void AstGraphBuilder::AstEffectContext::ProduceValue(Node* value) {
@@ -359,7 +333,7 @@
void AstGraphBuilder::VisitForValue(Expression* expr) {
- AstValueContext for_value(this, expr->id());
+ AstValueContext for_value(this);
if (!HasStackOverflow()) {
expr->Accept(this);
}
@@ -367,7 +341,7 @@
void AstGraphBuilder::VisitForEffect(Expression* expr) {
- AstEffectContext for_effect(this, expr->id());
+ AstEffectContext for_effect(this);
if (!HasStackOverflow()) {
expr->Accept(this);
}
@@ -375,7 +349,7 @@
void AstGraphBuilder::VisitForTest(Expression* expr) {
- AstTestContext for_condition(this, expr->id());
+ AstTestContext for_condition(this);
if (!HasStackOverflow()) {
expr->Accept(this);
}
@@ -712,8 +686,6 @@
Node* index = environment()->Peek(0);
Node* exit_cond =
NewNode(javascript()->LessThan(), index, cache_length);
- // TODO(jarin): provide real bailout id.
- BuildLazyBailout(exit_cond, BailoutId::None());
for_loop.BreakUnless(exit_cond);
// TODO(dcarney): this runtime call should be a handful of
// simplified instructions that
@@ -752,8 +724,6 @@
// is gone.
Node* res = ProcessArguments(
javascript()->Call(3, NO_CALL_FUNCTION_FLAGS), 3);
- // TODO(jarin): provide real bailout id.
- BuildLazyBailout(res, BailoutId::None());
Node* property_missing = NewNode(javascript()->StrictEqual(),
res,
jsgraph()->ZeroConstant());
{
@@ -859,7 +829,7 @@
void AstGraphBuilder::VisitVariableProxy(VariableProxy* expr) {
- Node* value = BuildVariableLoad(expr->var(), expr->id());
+ Node* value = BuildVariableLoad(expr->var());
ast_context()->ProduceValue(value);
}
@@ -926,9 +896,7 @@
VisitForValue(property->value());
Node* value = environment()->Pop();
PrintableUnique<Name> name = MakeUnique(key->AsPropertyName());
- Node* store =
- NewNode(javascript()->StoreNamed(name), literal, value);
- BuildLazyBailout(store, key->id());
+ NewNode(javascript()->StoreNamed(name), literal, value);
} else {
VisitForEffect(property->value());
}
@@ -1019,8 +987,7 @@
VisitForValue(subexpr);
Node* value = environment()->Pop();
Node* index = jsgraph()->Constant(i);
- Node* store = NewNode(javascript()->StoreProperty(), literal, index,
value);
- BuildLazyBailout(store, expr->GetIdForElement(i));
+ NewNode(javascript()->StoreProperty(), literal, index, value);
}
environment()->Pop(); // Array literal index.
@@ -1039,8 +1006,7 @@
switch (assign_type) {
case VARIABLE: {
Variable* var = expr->AsVariableProxy()->var();
- // TODO(jarin) Fill in the correct bailout id.
- BuildVariableAssignment(var, value, Token::ASSIGN,
BailoutId::None());
+ BuildVariableAssignment(var, value, Token::ASSIGN);
break;
}
case NAMED_PROPERTY: {
@@ -1050,9 +1016,7 @@
value = environment()->Pop();
PrintableUnique<Name> name =
MakeUnique(property->key()->AsLiteral()->AsPropertyName());
- Node* store = NewNode(javascript()->StoreNamed(name), object, value);
- // TODO(jarin) Fill in the correct bailout id.
- BuildLazyBailout(store, BailoutId::None());
+ NewNode(javascript()->StoreNamed(name), object, value);
break;
}
case KEYED_PROPERTY: {
@@ -1062,9 +1026,7 @@
Node* key = environment()->Pop();
Node* object = environment()->Pop();
value = environment()->Pop();
- Node* store = NewNode(javascript()->StoreProperty(), object, key,
value);
- // TODO(jarin) Fill in the correct bailout id.
- BuildLazyBailout(store, BailoutId::None());
+ NewNode(javascript()->StoreProperty(), object, key, value);
break;
}
}
@@ -1100,7 +1062,7 @@
switch (assign_type) {
case VARIABLE: {
Variable* variable = expr->target()->AsVariableProxy()->var();
- old_value = BuildVariableLoad(variable, expr->target()->id());
+ old_value = BuildVariableLoad(variable);
break;
}
case NAMED_PROPERTY: {
@@ -1108,14 +1070,12 @@
PrintableUnique<Name> name =
MakeUnique(property->key()->AsLiteral()->AsPropertyName());
old_value = NewNode(javascript()->LoadNamed(name), object);
- BuildLazyBailoutWithPushedNode(old_value, property->LoadId());
break;
}
case KEYED_PROPERTY: {
Node* key = environment()->Top();
Node* object = environment()->Peek(1);
old_value = NewNode(javascript()->LoadProperty(), object, key);
- BuildLazyBailoutWithPushedNode(old_value, property->LoadId());
break;
}
}
@@ -1125,7 +1085,6 @@
Node* left = environment()->Pop();
Node* value = BuildBinaryOp(left, right, expr->binary_op());
environment()->Push(value);
- BuildLazyBailout(value, expr->binary_operation()->id());
} else {
VisitForValue(expr->value());
}
@@ -1135,23 +1094,20 @@
switch (assign_type) {
case VARIABLE: {
Variable* variable = expr->target()->AsVariableProxy()->var();
- BuildVariableAssignment(variable, value, expr->op(),
- expr->AssignmentId());
+ BuildVariableAssignment(variable, value, expr->op());
break;
}
case NAMED_PROPERTY: {
Node* object = environment()->Pop();
PrintableUnique<Name> name =
MakeUnique(property->key()->AsLiteral()->AsPropertyName());
- Node* store = NewNode(javascript()->StoreNamed(name), object, value);
- BuildLazyBailout(store, expr->AssignmentId());
+ NewNode(javascript()->StoreNamed(name), object, value);
break;
}
case KEYED_PROPERTY: {
Node* key = environment()->Pop();
Node* object = environment()->Pop();
- Node* store = NewNode(javascript()->StoreProperty(), object, key,
value);
- BuildLazyBailout(store, expr->AssignmentId());
+ NewNode(javascript()->StoreProperty(), object, key, value);
break;
}
}
@@ -1194,7 +1150,7 @@
Node* object = environment()->Pop();
value = NewNode(javascript()->LoadProperty(), object, key);
}
- ast_context()->ProduceValueWithLazyBailout(value);
+ ast_context()->ProduceValue(value);
}
@@ -1211,7 +1167,7 @@
switch (call_type) {
case Call::GLOBAL_CALL: {
Variable* variable = callee->AsVariableProxy()->var();
- callee_value = BuildVariableLoad(variable, expr->expression()->id());
+ callee_value = BuildVariableLoad(variable);
receiver_value = jsgraph()->UndefinedConstant();
break;
}
@@ -1238,7 +1194,6 @@
Node* key = environment()->Pop();
callee_value = NewNode(javascript()->LoadProperty(), object, key);
}
- BuildLazyBailoutWithPushedNode(callee_value, property->LoadId());
receiver_value = environment()->Pop();
// Note that a PROPERTY_CALL requires the receiver to be wrapped
into an
// object for sloppy callees. This could also be modeled explicitly
here,
@@ -1293,7 +1248,7 @@
// Create node to perform the function call.
Operator* call = javascript()->Call(args->length() + 2, flags);
Node* value = ProcessArguments(call, args->length() + 2);
- ast_context()->ProduceValueWithLazyBailout(value);
+ ast_context()->ProduceValue(value);
}
@@ -1307,7 +1262,7 @@
// Create node to perform the construct call.
Operator* call = javascript()->CallNew(args->length() + 1);
Node* value = ProcessArguments(call, args->length() + 1);
- ast_context()->ProduceValueWithLazyBailout(value);
+ ast_context()->ProduceValue(value);
}
@@ -1321,9 +1276,6 @@
PrintableUnique<String> unique = MakeUnique(name);
Node* callee_value = NewNode(javascript()->LoadNamed(unique),
receiver_value);
environment()->Push(callee_value);
- // TODO(jarin): Find/create a bailout id to deoptimize to (crankshaft
- // refuses to optimize functions with jsruntime calls).
- BuildLazyBailout(callee_value, BailoutId::None());
environment()->Push(receiver_value);
// Evaluate all arguments to the JS runtime call.
@@ -1333,7 +1285,7 @@
// Create node to perform the JS runtime call.
Operator* call = javascript()->Call(args->length() + 2, flags);
Node* value = ProcessArguments(call, args->length() + 2);
- ast_context()->ProduceValueWithLazyBailout(value);
+ ast_context()->ProduceValue(value);
}
@@ -1355,7 +1307,9 @@
Runtime::FunctionId functionId = function->function_id;
Operator* call = javascript()->Runtime(functionId, args->length());
Node* value = ProcessArguments(call, args->length());
- ast_context()->ProduceValueWithLazyBailout(value);
+ ast_context()->ProduceValue(value);
+
+ BuildLazyBailout(value, expr->id());
}
@@ -1392,7 +1346,7 @@
switch (assign_type) {
case VARIABLE: {
Variable* variable = expr->expression()->AsVariableProxy()->var();
- old_value = BuildVariableLoad(variable, expr->expression()->id());
+ old_value = BuildVariableLoad(variable);
stack_depth = 0;
break;
}
@@ -1402,7 +1356,6 @@
PrintableUnique<Name> name =
MakeUnique(property->key()->AsLiteral()->AsPropertyName());
old_value = NewNode(javascript()->LoadNamed(name), object);
- BuildLazyBailoutWithPushedNode(old_value, property->LoadId());
stack_depth = 1;
break;
}
@@ -1412,7 +1365,6 @@
Node* key = environment()->Top();
Node* object = environment()->Peek(1);
old_value = NewNode(javascript()->LoadProperty(), object, key);
- BuildLazyBailoutWithPushedNode(old_value, property->LoadId());
stack_depth = 2;
break;
}
@@ -1427,31 +1379,25 @@
// Create node to perform +1/-1 operation.
Node* value =
BuildBinaryOp(old_value, jsgraph()->OneConstant(),
expr->binary_op());
- // TODO(jarin) Insert proper bailout id here (will need to change
- // full code generator).
- BuildLazyBailout(value, BailoutId::None());
// Store the value.
switch (assign_type) {
case VARIABLE: {
Variable* variable = expr->expression()->AsVariableProxy()->var();
- BuildVariableAssignment(variable, value, expr->op(),
- expr->AssignmentId());
+ BuildVariableAssignment(variable, value, expr->op());
break;
}
case NAMED_PROPERTY: {
Node* object = environment()->Pop();
PrintableUnique<Name> name =
MakeUnique(property->key()->AsLiteral()->AsPropertyName());
- Node* store = NewNode(javascript()->StoreNamed(name), object, value);
- BuildLazyBailout(store, expr->AssignmentId());
+ NewNode(javascript()->StoreNamed(name), object, value);
break;
}
case KEYED_PROPERTY: {
Node* key = environment()->Pop();
Node* object = environment()->Pop();
- Node* store = NewNode(javascript()->StoreProperty(), object, key,
value);
- BuildLazyBailout(store, expr->AssignmentId());
+ NewNode(javascript()->StoreProperty(), object, key, value);
break;
}
}
@@ -1476,7 +1422,7 @@
Node* right = environment()->Pop();
Node* left = environment()->Pop();
Node* value = BuildBinaryOp(left, right, expr->op());
- ast_context()->ProduceValueWithLazyBailout(value);
+ ast_context()->ProduceValue(value);
}
}
}
@@ -1525,8 +1471,6 @@
Node* left = environment()->Pop();
Node* value = NewNode(op, left, right);
ast_context()->ProduceValue(value);
-
- BuildLazyBailout(value, expr->id());
}
@@ -1606,8 +1550,7 @@
// Typeof does not throw a reference error on global variables, hence
we
// perform a non-contextual load in case the operand is a variable
proxy.
Variable* variable = expr->expression()->AsVariableProxy()->var();
- operand =
- BuildVariableLoad(variable, expr->expression()->id(),
NOT_CONTEXTUAL);
+ operand = BuildVariableLoad(variable, NOT_CONTEXTUAL);
} else {
VisitForValue(expr->expression());
operand = environment()->Pop();
@@ -1707,8 +1650,7 @@
// Assign the object to the arguments variable.
DCHECK(arguments->IsContextSlot() || arguments->IsStackAllocated());
- // This should never lazy deopt, so it is fine to send invalid bailout
id.
- BuildVariableAssignment(arguments, object, Token::ASSIGN,
BailoutId::None());
+ BuildVariableAssignment(arguments, object, Token::ASSIGN);
return object;
}
@@ -1745,7 +1687,6 @@
Node* AstGraphBuilder::BuildVariableLoad(Variable* variable,
- BailoutId bailout_id,
ContextualMode contextual_mode) {
Node* the_hole = jsgraph()->TheHoleConstant();
VariableMode mode = variable->mode();
@@ -1755,9 +1696,7 @@
Node* global = BuildLoadGlobalObject();
PrintableUnique<Name> name = MakeUnique(variable->name());
Operator* op = javascript()->LoadNamed(name, contextual_mode);
- Node* node = NewNode(op, global);
- BuildLazyBailoutWithPushedNode(node, bailout_id);
- return node;
+ return NewNode(op, global);
}
case Variable::PARAMETER:
case Variable::LOCAL: {
@@ -1846,8 +1785,7 @@
Node* AstGraphBuilder::BuildVariableAssignment(Variable* variable, Node*
value,
- Token::Value op,
- BailoutId bailout_id) {
+ Token::Value op) {
Node* the_hole = jsgraph()->TheHoleConstant();
VariableMode mode = variable->mode();
switch (variable->location()) {
@@ -1856,9 +1794,7 @@
Node* global = BuildLoadGlobalObject();
PrintableUnique<Name> name = MakeUnique(variable->name());
Operator* op = javascript()->StoreNamed(name);
- Node* store = NewNode(op, global, value);
- BuildLazyBailout(store, bailout_id);
- return store;
+ return NewNode(op, global, value);
}
case Variable::PARAMETER:
case Variable::LOCAL:
@@ -2022,10 +1958,6 @@
NewNode(common()->LazyDeoptimization());
- // TODO(jarin) If ast_id.IsNone(), perhaps we should generate an empty
- // deopt block and make sure there is no patch entry for this (so
- // that the deoptimizer dies when trying to deoptimize here).
-
Node* state_node = environment()->Checkpoint(ast_id);
Node* deoptimize_node = NewNode(common()->Deoptimize(), state_node);
@@ -2038,14 +1970,6 @@
NewNode(common()->Continuation());
}
}
-
-
-void AstGraphBuilder::BuildLazyBailoutWithPushedNode(Node* node,
- BailoutId ast_id) {
- environment()->Push(node);
- BuildLazyBailout(node, ast_id);
- environment()->Pop();
-}
}
}
} // namespace v8::internal::compiler
=======================================
--- /branches/bleeding_edge/src/compiler/ast-graph-builder.h Mon Aug 11
10:42:01 2014 UTC
+++ /branches/bleeding_edge/src/compiler/ast-graph-builder.h Mon Aug 11
11:21:51 2014 UTC
@@ -78,11 +78,9 @@
Node* BuildArgumentsObject(Variable* arguments);
// Builders for variable load and assignment.
- Node* BuildVariableAssignment(Variable* var, Node* value, Token::Value
op,
- BailoutId bailout_id);
+ Node* BuildVariableAssignment(Variable* var, Node* value, Token::Value
op);
Node* BuildVariableDelete(Variable* var);
- Node* BuildVariableLoad(Variable* var, BailoutId bailout_id,
- ContextualMode mode = CONTEXTUAL);
+ Node* BuildVariableLoad(Variable* var, ContextualMode mode = CONTEXTUAL);
// Builders for accessing the function context.
Node* BuildLoadBuiltinsObject();
@@ -172,7 +170,6 @@
void VisitForInAssignment(Expression* expr, Node* value);
void BuildLazyBailout(Node* node, BailoutId ast_id);
- void BuildLazyBailoutWithPushedNode(Node* node, BailoutId ast_id);
DEFINE_AST_VISITOR_SUBCLASS_MEMBERS();
DISALLOW_COPY_AND_ASSIGN(AstGraphBuilder);
@@ -285,7 +282,6 @@
// Plug a node into this expression context. Call this function in tail
// position in the Visit functions for expressions.
virtual void ProduceValue(Node* value) = 0;
- virtual void ProduceValueWithLazyBailout(Node* value) = 0;
// Unplugs a node from this expression context. Call this to retrieve
the
// result of another Visit function that already plugged the context.
@@ -295,8 +291,7 @@
void ReplaceValue() { ProduceValue(ConsumeValue()); }
protected:
- AstContext(AstGraphBuilder* owner, Expression::Context kind,
- BailoutId bailout_id);
+ AstContext(AstGraphBuilder* owner, Expression::Context kind);
virtual ~AstContext();
AstGraphBuilder* owner() const { return owner_; }
@@ -308,8 +303,6 @@
int original_height_;
#endif
- BailoutId bailout_id_;
-
private:
Expression::Context kind_;
AstGraphBuilder* owner_;
@@ -320,11 +313,10 @@
// Context to evaluate expression for its side effects only.
class AstGraphBuilder::AstEffectContext V8_FINAL : public AstContext {
public:
- explicit AstEffectContext(AstGraphBuilder* owner, BailoutId bailout_id)
- : AstContext(owner, Expression::kEffect, bailout_id) {}
+ explicit AstEffectContext(AstGraphBuilder* owner)
+ : AstContext(owner, Expression::kEffect) {}
virtual ~AstEffectContext();
virtual void ProduceValue(Node* value) V8_OVERRIDE;
- virtual void ProduceValueWithLazyBailout(Node* value) V8_OVERRIDE;
virtual Node* ConsumeValue() V8_OVERRIDE;
};
@@ -332,11 +324,10 @@
// Context to evaluate expression for its value (and side effects).
class AstGraphBuilder::AstValueContext V8_FINAL : public AstContext {
public:
- explicit AstValueContext(AstGraphBuilder* owner, BailoutId bailout_id)
- : AstContext(owner, Expression::kValue, bailout_id) {}
+ explicit AstValueContext(AstGraphBuilder* owner)
+ : AstContext(owner, Expression::kValue) {}
virtual ~AstValueContext();
virtual void ProduceValue(Node* value) V8_OVERRIDE;
- virtual void ProduceValueWithLazyBailout(Node* value) V8_OVERRIDE;
virtual Node* ConsumeValue() V8_OVERRIDE;
};
@@ -344,11 +335,10 @@
// Context to evaluate expression for a condition value (and side effects).
class AstGraphBuilder::AstTestContext V8_FINAL : public AstContext {
public:
- explicit AstTestContext(AstGraphBuilder* owner, BailoutId bailout_id)
- : AstContext(owner, Expression::kTest, bailout_id) {}
+ explicit AstTestContext(AstGraphBuilder* owner)
+ : AstContext(owner, Expression::kTest) {}
virtual ~AstTestContext();
virtual void ProduceValue(Node* value) V8_OVERRIDE;
- virtual void ProduceValueWithLazyBailout(Node* value) V8_OVERRIDE;
virtual Node* ConsumeValue() V8_OVERRIDE;
};
=======================================
--- /branches/bleeding_edge/src/compiler/code-generator.cc Mon Aug 11
10:42:01 2014 UTC
+++ /branches/bleeding_edge/src/compiler/code-generator.cc Mon Aug 11
11:21:51 2014 UTC
@@ -215,9 +215,7 @@
for (int i = 0; i < deopt_count; i++) {
FrameStateDescriptor* descriptor = code()->GetDeoptimizationEntry(i);
data->SetAstId(i, descriptor->bailout_id());
- CHECK_NE(NULL, deoptimization_states_[i]);
- data->SetTranslationIndex(
- i, Smi::FromInt(deoptimization_states_[i]->translation_id_));
+ data->SetTranslationIndex(i, Smi::FromInt(0));
data->SetArgumentsStackHeight(i, Smi::FromInt(0));
data->SetPc(i, Smi::FromInt(-1));
}
=======================================
--- /branches/bleeding_edge/src/compiler/ia32/linkage-ia32.cc Mon Aug 11
10:42:01 2014 UTC
+++ /branches/bleeding_edge/src/compiler/ia32/linkage-ia32.cc Mon Aug 11
11:21:51 2014 UTC
@@ -45,10 +45,9 @@
CallDescriptor* Linkage::GetStubCallDescriptor(
- CodeStubInterfaceDescriptor* descriptor, int stack_parameter_count,
- CallDescriptor::DeoptimizationSupport can_deoptimize, Zone* zone) {
+ CodeStubInterfaceDescriptor* descriptor, int stack_parameter_count) {
return LinkageHelper::GetStubCallDescriptor<LinkageHelperTraits>(
- zone, descriptor, stack_parameter_count, can_deoptimize);
+ this->info_->zone(), descriptor, stack_parameter_count);
}
=======================================
--- /branches/bleeding_edge/src/compiler/js-generic-lowering.cc Mon Aug 11
10:42:01 2014 UTC
+++ /branches/bleeding_edge/src/compiler/js-generic-lowering.cc Mon Aug 11
11:21:51 2014 UTC
@@ -290,14 +290,6 @@
REPLACE_UNIMPLEMENTED(JSYield)
REPLACE_UNIMPLEMENTED(JSDebugger)
#undef REPLACE_UNIMPLEMENTED
-
-
-static CallDescriptor::DeoptimizationSupport DeoptimizationSupportForNode(
- Node* node) {
- return OperatorProperties::CanLazilyDeoptimize(node->op())
- ? CallDescriptor::kCanDeoptimize
- : CallDescriptor::kCannotDeoptimize;
-}
void JSGenericLowering::ReplaceWithCompareIC(Node* node, Token::Value
token,
@@ -332,8 +324,7 @@
void JSGenericLowering::ReplaceWithICStubCall(Node* node,
HydrogenCodeStub* stub) {
CodeStubInterfaceDescriptor* d = stub->GetInterfaceDescriptor();
- CallDescriptor* desc = linkage()->GetStubCallDescriptor(
- d, 0, DeoptimizationSupportForNode(node));
+ CallDescriptor* desc = linkage()->GetStubCallDescriptor(d);
Node* stub_code = CodeConstant(stub->GetCode());
PatchInsertInput(node, 0, stub_code);
PatchOperator(node, common()->Call(desc));
@@ -364,8 +355,12 @@
Operator::Property props = node->op()->properties();
const Runtime::Function* fun = Runtime::FunctionForId(f);
int nargs = (nargs_override < 0) ? fun->nargs : nargs_override;
- CallDescriptor* desc = linkage()->GetRuntimeCallDescriptor(
- f, nargs, props, DeoptimizationSupportForNode(node));
+ CallDescriptor::DeoptimizationSupport deopt =
+ OperatorProperties::CanLazilyDeoptimize(node->op())
+ ? CallDescriptor::kCanDeoptimize
+ : CallDescriptor::kCannotDeoptimize;
+ CallDescriptor* desc =
+ linkage()->GetRuntimeCallDescriptor(f, nargs, props, deopt);
Node* ref = ExternalConstant(ExternalReference(f, isolate()));
Node* arity = Int32Constant(nargs);
if (!centrystub_constant_.is_set()) {
@@ -513,8 +508,7 @@
int arity = OpParameter<int>(node);
CallConstructStub stub(isolate(), NO_CALL_CONSTRUCTOR_FLAGS);
CodeStubInterfaceDescriptor* d = GetInterfaceDescriptor(isolate(),
&stub);
- CallDescriptor* desc = linkage()->GetStubCallDescriptor(
- d, arity, DeoptimizationSupportForNode(node));
+ CallDescriptor* desc = linkage()->GetStubCallDescriptor(d, arity);
Node* stub_code = CodeConstant(stub.GetCode());
Node* construct = NodeProperties::GetValueInput(node, 0);
PatchInsertInput(node, 0, stub_code);
@@ -530,8 +524,7 @@
CallParameters p = OpParameter<CallParameters>(node);
CallFunctionStub stub(isolate(), p.arity - 2, p.flags);
CodeStubInterfaceDescriptor* d = GetInterfaceDescriptor(isolate(),
&stub);
- CallDescriptor* desc = linkage()->GetStubCallDescriptor(
- d, p.arity - 1, DeoptimizationSupportForNode(node));
+ CallDescriptor* desc = linkage()->GetStubCallDescriptor(d, p.arity - 1);
Node* stub_code = CodeConstant(stub.GetCode());
PatchInsertInput(node, 0, stub_code);
PatchOperator(node, common()->Call(desc));
=======================================
--- /branches/bleeding_edge/src/compiler/js-operator.h Mon Aug 11 10:42:01
2014 UTC
+++ /branches/bleeding_edge/src/compiler/js-operator.h Mon Aug 11 11:21:51
2014 UTC
@@ -5,7 +5,6 @@
#ifndef V8_COMPILER_JS_OPERATOR_H_
#define V8_COMPILER_JS_OPERATOR_H_
-#include "src/compiler/linkage.h"
#include "src/compiler/opcodes.h"
#include "src/compiler/operator.h"
#include "src/unique.h"
=======================================
--- /branches/bleeding_edge/src/compiler/linkage-impl.h Mon Aug 11 10:42:01
2014 UTC
+++ /branches/bleeding_edge/src/compiler/linkage-impl.h Mon Aug 11 11:21:51
2014 UTC
@@ -128,8 +128,7 @@
template <typename LinkageTraits>
static CallDescriptor* GetStubCallDescriptor(
Zone* zone, CodeStubInterfaceDescriptor* descriptor,
- int stack_parameter_count,
- CallDescriptor::DeoptimizationSupport can_deoptimize) {
+ int stack_parameter_count) {
int register_parameter_count =
descriptor->GetEnvironmentParameterCount();
int parameter_count = register_parameter_count + stack_parameter_count;
const int code_count = 1;
@@ -166,8 +165,9 @@
locations, // locations
Operator::kNoProperties, // properties
kNoCalleeSaved, // callee-saved registers
- can_deoptimize, // deoptimization
+ CallDescriptor::kCannotDeoptimize, //
deoptimization
CodeStub::MajorName(descriptor->MajorKey(), false));
+ // TODO(jarin) should deoptimize!
}
=======================================
--- /branches/bleeding_edge/src/compiler/linkage.cc Mon Aug 11 10:42:01
2014 UTC
+++ /branches/bleeding_edge/src/compiler/linkage.cc Mon Aug 11 11:21:51
2014 UTC
@@ -100,14 +100,6 @@
return GetRuntimeCallDescriptor(function, parameter_count, properties,
can_deoptimize, this->info_->zone());
}
-
-
-CallDescriptor* Linkage::GetStubCallDescriptor(
- CodeStubInterfaceDescriptor* descriptor, int stack_parameter_count,
- CallDescriptor::DeoptimizationSupport can_deoptimize) {
- return GetStubCallDescriptor(descriptor, stack_parameter_count,
- can_deoptimize, this->info_->zone());
-}
//==============================================================================
@@ -130,8 +122,7 @@
CallDescriptor* Linkage::GetStubCallDescriptor(
- CodeStubInterfaceDescriptor* descriptor, int stack_parameter_count,
- CallDescriptor::DeoptimizationSupport can_deoptimize, Zone* zone) {
+ CodeStubInterfaceDescriptor* descriptor, int stack_parameter_count) {
UNIMPLEMENTED();
return NULL;
}
=======================================
--- /branches/bleeding_edge/src/compiler/linkage.h Mon Aug 11 10:42:01 2014
UTC
+++ /branches/bleeding_edge/src/compiler/linkage.h Mon Aug 11 11:21:51 2014
UTC
@@ -147,13 +147,8 @@
Operator::Property properties,
CallDescriptor::DeoptimizationSupport can_deoptimize, Zone* zone);
- CallDescriptor* GetStubCallDescriptor(
- CodeStubInterfaceDescriptor* descriptor, int stack_parameter_count =
0,
- CallDescriptor::DeoptimizationSupport can_deoptimize =
- CallDescriptor::kCannotDeoptimize);
- static CallDescriptor* GetStubCallDescriptor(
- CodeStubInterfaceDescriptor* descriptor, int stack_parameter_count,
- CallDescriptor::DeoptimizationSupport can_deoptimize, Zone* zone);
+ CallDescriptor* GetStubCallDescriptor(CodeStubInterfaceDescriptor*
descriptor,
+ int stack_parameter_count = 0);
// Creates a call descriptor for simplified C calls that is appropriate
// for the host platform. This simplified calling convention only
supports
=======================================
--- /branches/bleeding_edge/src/compiler/operator-properties-inl.h Mon Aug
11 10:42:01 2014 UTC
+++ /branches/bleeding_edge/src/compiler/operator-properties-inl.h Mon Aug
11 11:21:51 2014 UTC
@@ -7,7 +7,6 @@
#include "src/v8.h"
-#include "src/compiler/js-operator.h"
#include "src/compiler/opcodes.h"
#include "src/compiler/operator-properties.h"
@@ -60,10 +59,6 @@
#undef OPCODE_CASE
return static_cast<ControlOperator*>(op)->ControlInputCount();
default:
- // If a node can lazily deoptimize, it needs control dependency.
- if (CanLazilyDeoptimize(op)) {
- return 1;
- }
// Operators that have write effects must have a control
// dependency. Effect dependencies only ensure the correct order of
// write/read operations without consideration of control flow.
Without an
@@ -135,52 +130,17 @@
}
inline bool OperatorProperties::CanLazilyDeoptimize(Operator* op) {
- // TODO(jarin) This function allows turning on lazy deoptimization
- // incrementally. It will change as we turn on lazy deopt for
- // more nodes.
-
- if (!FLAG_turbo_deoptimization) {
- return false;
+ if (op->opcode() == IrOpcode::kCall) {
+ CallOperator* call_op = reinterpret_cast<CallOperator*>(op);
+ CallDescriptor* descriptor = call_op->parameter();
+ return descriptor->CanLazilyDeoptimize();
}
-
- switch (op->opcode()) {
- case IrOpcode::kCall: {
- CallOperator* call_op = reinterpret_cast<CallOperator*>(op);
- CallDescriptor* descriptor = call_op->parameter();
- return descriptor->CanLazilyDeoptimize();
- }
- case IrOpcode::kJSCallRuntime: {
- Runtime::FunctionId function =
-
reinterpret_cast<Operator1<Runtime::FunctionId>*>(op)->parameter();
- // TODO(jarin) At the moment, we only support lazy deoptimization for
- // the %DeoptimizeFunction runtime function.
- return function == Runtime::kDeoptimizeFunction;
- }
-
- // JS function calls
- case IrOpcode::kJSCallFunction:
- case IrOpcode::kJSCallConstruct:
-
- // Binary operations
- case IrOpcode::kJSBitwiseOr:
- case IrOpcode::kJSBitwiseXor:
- case IrOpcode::kJSBitwiseAnd:
- case IrOpcode::kJSShiftLeft:
- case IrOpcode::kJSShiftRight:
- case IrOpcode::kJSShiftRightLogical:
- case IrOpcode::kJSAdd:
- case IrOpcode::kJSSubtract:
- case IrOpcode::kJSMultiply:
- case IrOpcode::kJSDivide:
- case IrOpcode::kJSModulus:
- case IrOpcode::kJSLoadProperty:
- case IrOpcode::kJSStoreProperty:
- case IrOpcode::kJSLoadNamed:
- case IrOpcode::kJSStoreNamed:
- return true;
-
- default:
- return false;
+ if (op->opcode() == IrOpcode::kJSCallRuntime) {
+ // TODO(jarin) At the moment, we only support lazy deoptimization for
+ // the %DeoptimizeFunction runtime function.
+ Runtime::FunctionId function =
+ reinterpret_cast<Operator1<Runtime::FunctionId>*>(op)->parameter();
+ return function == Runtime::kDeoptimizeFunction;
}
return false;
}
=======================================
--- /branches/bleeding_edge/src/compiler/register-allocator.cc Mon Aug 11
10:42:01 2014 UTC
+++ /branches/bleeding_edge/src/compiler/register-allocator.cc Mon Aug 11
11:21:51 2014 UTC
@@ -744,70 +744,6 @@
if (!AllocationOk()) return;
}
}
-
- // Meet register constraints for the instruction in the end.
- if (!code()->IsGapAt(end)) {
- MeetRegisterConstraintsForLastInstructionInBlock(block);
- }
-}
-
-
-void RegisterAllocator::MeetRegisterConstraintsForLastInstructionInBlock(
- BasicBlock* block) {
- int end = block->last_instruction_index();
- Instruction* last_instruction = InstructionAt(end);
- for (size_t i = 0; i < last_instruction->OutputCount(); i++) {
- InstructionOperand* output_operand = last_instruction->OutputAt(i);
- DCHECK(!output_operand->IsConstant());
- UnallocatedOperand* output = UnallocatedOperand::cast(output_operand);
- int output_vreg = output->virtual_register();
- LiveRange* range = LiveRangeFor(output_vreg);
- bool assigned = false;
- if (output->HasFixedPolicy()) {
- AllocateFixed(output, -1, false);
- // This value is produced on the stack, we never need to spill it.
- if (output->IsStackSlot()) {
- range->SetSpillOperand(output);
- range->SetSpillStartIndex(end);
- assigned = true;
- }
-
- BasicBlock::Successors successors = block->successors();
- for (BasicBlock::Successors::iterator succ = successors.begin();
- succ != successors.end(); ++succ) {
- DCHECK((*succ)->PredecessorCount() == 1);
- int gap_index = (*succ)->first_instruction_index() + 1;
- DCHECK(code()->IsGapAt(gap_index));
-
- // Create an unconstrained operand for the same virtual register
- // and insert a gap move from the fixed output to the operand.
- UnallocatedOperand* output_copy =
- new (code_zone()) UnallocatedOperand(UnallocatedOperand::ANY);
- output_copy->set_virtual_register(output_vreg);
-
- code()->AddGapMove(gap_index, output, output_copy);
- }
- }
-
- if (!assigned) {
- BasicBlock::Successors successors = block->successors();
- for (BasicBlock::Successors::iterator succ = successors.begin();
- succ != successors.end(); ++succ) {
- DCHECK((*succ)->PredecessorCount() == 1);
- int gap_index = (*succ)->first_instruction_index() + 1;
- range->SetSpillStartIndex(gap_index);
-
- // This move to spill operand is not a real use. Liveness analysis
- // and splitting of live ranges do not account for it.
- // Thus it should be inserted to a lifetime position corresponding
to
- // the instruction end.
- GapInstruction* gap = code()->GapAt(gap_index);
- ParallelMove* move =
- gap->GetOrCreateParallelMove(GapInstruction::BEFORE,
code_zone());
- move->AddMove(output, range->GetSpillOperand(), code_zone());
- }
- }
- }
}
@@ -850,8 +786,6 @@
code()->AddGapMove(gap_index, first_output, output_copy);
}
- // Make sure we add a gap move for spilling (if we have not done
- // so already).
if (!assigned) {
range->SetSpillStartIndex(gap_index);
=======================================
--- /branches/bleeding_edge/src/compiler/register-allocator.h Mon Aug 11
10:42:01 2014 UTC
+++ /branches/bleeding_edge/src/compiler/register-allocator.h Mon Aug 11
11:21:51 2014 UTC
@@ -391,7 +391,6 @@
void MeetRegisterConstraints(BasicBlock* block);
void MeetConstraintsBetween(Instruction* first, Instruction* second,
int gap_index);
- void MeetRegisterConstraintsForLastInstructionInBlock(BasicBlock* block);
void ResolvePhis(BasicBlock* block);
// Helper methods for building intervals.
=======================================
--- /branches/bleeding_edge/src/compiler/x64/linkage-x64.cc Mon Aug 11
10:42:01 2014 UTC
+++ /branches/bleeding_edge/src/compiler/x64/linkage-x64.cc Mon Aug 11
11:21:51 2014 UTC
@@ -64,10 +64,9 @@
CallDescriptor* Linkage::GetStubCallDescriptor(
- CodeStubInterfaceDescriptor* descriptor, int stack_parameter_count,
- CallDescriptor::DeoptimizationSupport can_deoptimize, Zone* zone) {
+ CodeStubInterfaceDescriptor* descriptor, int stack_parameter_count) {
return LinkageHelper::GetStubCallDescriptor<LinkageHelperTraits>(
- zone, descriptor, stack_parameter_count, can_deoptimize);
+ this->info_->zone(), descriptor, stack_parameter_count);
}
=======================================
--- /branches/bleeding_edge/src/deoptimizer.cc Mon Aug 11 10:42:01 2014 UTC
+++ /branches/bleeding_edge/src/deoptimizer.cc Mon Aug 11 11:21:51 2014 UTC
@@ -447,11 +447,8 @@
int patch_count = input_data->ReturnAddressPatchCount();
for (int i = 0; i < patch_count; i++) {
int return_pc = input_data->ReturnAddressPc(i)->value();
- int patch_pc = input_data->PatchedAddressPc(i)->value();
- // If the supplied pc matches the return pc or if the address
- // has been already patched, return the patch pc.
- if (pc == return_pc || pc == patch_pc) {
- return patch_pc;
+ if (pc == return_pc) {
+ return input_data->PatchedAddressPc(i)->value();
}
}
return -1;
=======================================
--- /branches/bleeding_edge/src/objects.cc Mon Aug 11 10:42:01 2014 UTC
+++ /branches/bleeding_edge/src/objects.cc Mon Aug 11 11:21:51 2014 UTC
@@ -10726,26 +10726,7 @@
SafepointEntry Code::GetSafepointEntry(Address pc) {
SafepointTable table(this);
- SafepointEntry entry = table.FindEntry(pc);
- if (entry.is_valid() || !is_turbofanned()) {
- return entry;
- }
-
- // If the code is turbofanned, we might be looking for
- // an address that was patched by lazy deoptimization.
- // In that case look through the patch table, try to
- // lookup the original address there, and then use this
- // to find the safepoint entry.
- DeoptimizationInputData* deopt_data =
- DeoptimizationInputData::cast(deoptimization_data());
- intptr_t offset = pc - instruction_start();
- for (int i = 0; i < deopt_data->ReturnAddressPatchCount(); i++) {
- if (deopt_data->PatchedAddressPc(i)->value() == offset) {
- int original_offset = deopt_data->ReturnAddressPc(i)->value();
- return table.FindEntry(instruction_start() + original_offset);
- }
- }
- return SafepointEntry();
+ return table.FindEntry(pc);
}
@@ -11147,7 +11128,7 @@
os << "Deoptimization Input Data (deopt points = " << deopt_count
<< ")\n";
if (0 != deopt_count) {
os << " index ast id argc pc";
- if (FLAG_print_code_verbose) os << " commands";
+ if (FLAG_print_code_verbose) os << "commands";
os << "\n";
}
for (int i = 0; i < deopt_count; i++) {
@@ -11177,7 +11158,7 @@
Translation::BEGIN !=
(opcode = static_cast<Translation::Opcode>(iterator.Next()))) {
Vector<char> buf2 = Vector<char>::New(128);
- SNPrintF(buf2, "%27s %s ", "", Translation::StringFor(opcode));
+ SNPrintF(buf2, "%24s %s ", "", Translation::StringFor(opcode));
os << buf2.start();
switch (opcode) {
@@ -11303,11 +11284,11 @@
if (return_address_patch_count != 0) {
os << "Return address patch data (count = " <<
return_address_patch_count
<< ")\n";
- os << " index pc patched_pc\n";
+ os << "index pc patched_pc\n";
}
for (int i = 0; i < return_address_patch_count; i++) {
Vector<char> buf = Vector<char>::New(128);
- SNPrintF(buf, "%6d %6d %12d\n", i, ReturnAddressPc(i)->value(),
+ SNPrintF(buf, "%6d %6d %10d", i, ReturnAddressPc(i)->value(),
PatchedAddressPc(i)->value());
os << buf.start();
}
=======================================
--- /branches/bleeding_edge/test/cctest/cctest.status Mon Aug 11 10:42:01
2014 UTC
+++ /branches/bleeding_edge/test/cctest/cctest.status Mon Aug 11 11:21:51
2014 UTC
@@ -107,7 +107,13 @@
'test-debug/DebugBreakLoop': [PASS, NO_VARIANTS],
# Support for lazy deoptimization is missing.
+ 'test-deoptimization/DeoptimizeSimple': [PASS, NO_VARIANTS],
+ 'test-deoptimization/DeoptimizeSimpleNested': [PASS, NO_VARIANTS],
+ 'test-deoptimization/DeoptimizeSimpleWithArguments': [PASS, NO_VARIANTS],
+ 'test-deoptimization/DeoptimizeBinaryOperation*': [PASS, NO_VARIANTS],
'test-deoptimization/DeoptimizeCompare': [PASS, NO_VARIANTS],
+ 'test-deoptimization/DeoptimizeLoadICStoreIC': [PASS, NO_VARIANTS],
+ 'test-deoptimization/DeoptimizeLoadICStoreICNested': [PASS, NO_VARIANTS],
# Support for breakpoints requires using LoadICs and StoreICs.
'test-debug/BreakPointICStore': [PASS, NO_VARIANTS],
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-scheduler.cc Mon Aug
11 10:42:01 2014 UTC
+++ /branches/bleeding_edge/test/cctest/compiler/test-scheduler.cc Mon Aug
11 11:21:51 2014 UTC
@@ -1713,8 +1713,6 @@
TEST(BuildScheduleTrivialLazyDeoptCall) {
- FLAG_turbo_deoptimization = true;
-
HandleAndZoneScope scope;
Isolate* isolate = scope.main_isolate();
Graph graph(scope.main_zone());
=======================================
--- /branches/bleeding_edge/test/cctest/test-deoptimization.cc Mon Aug 11
10:42:01 2014 UTC
+++ /branches/bleeding_edge/test/cctest/test-deoptimization.cc Mon Aug 11
11:21:51 2014 UTC
@@ -113,8 +113,6 @@
TEST(DeoptimizeSimple) {
- i::FLAG_turbo_deoptimization = true;
-
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -153,8 +151,6 @@
TEST(DeoptimizeSimpleWithArguments) {
- i::FLAG_turbo_deoptimization = true;
-
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -194,8 +190,6 @@
TEST(DeoptimizeSimpleNested) {
- i::FLAG_turbo_deoptimization = true;
-
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -221,7 +215,6 @@
TEST(DeoptimizeRecursive) {
- i::FLAG_turbo_deoptimization = true;
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -249,7 +242,6 @@
TEST(DeoptimizeMultiple) {
- i::FLAG_turbo_deoptimization = true;
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -278,7 +270,6 @@
TEST(DeoptimizeConstructor) {
- i::FLAG_turbo_deoptimization = true;
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -317,7 +308,6 @@
TEST(DeoptimizeConstructorMultiple) {
- i::FLAG_turbo_deoptimization = true;
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -347,7 +337,6 @@
TEST(DeoptimizeBinaryOperationADDString) {
- i::FLAG_turbo_deoptimization = true;
i::FLAG_concurrent_recompilation = false;
AllowNativesSyntaxNoInlining options;
LocalContext env;
@@ -439,7 +428,6 @@
TEST(DeoptimizeBinaryOperationADD) {
- i::FLAG_turbo_deoptimization = true;
i::FLAG_concurrent_recompilation = false;
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -453,7 +441,6 @@
TEST(DeoptimizeBinaryOperationSUB) {
- i::FLAG_turbo_deoptimization = true;
i::FLAG_concurrent_recompilation = false;
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -467,7 +454,6 @@
TEST(DeoptimizeBinaryOperationMUL) {
- i::FLAG_turbo_deoptimization = true;
i::FLAG_concurrent_recompilation = false;
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -481,7 +467,6 @@
TEST(DeoptimizeBinaryOperationDIV) {
- i::FLAG_turbo_deoptimization = true;
i::FLAG_concurrent_recompilation = false;
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -495,7 +480,6 @@
TEST(DeoptimizeBinaryOperationMOD) {
- i::FLAG_turbo_deoptimization = true;
i::FLAG_concurrent_recompilation = false;
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -509,7 +493,6 @@
TEST(DeoptimizeCompare) {
- i::FLAG_turbo_deoptimization = true;
i::FLAG_concurrent_recompilation = false;
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -554,7 +537,6 @@
TEST(DeoptimizeLoadICStoreIC) {
- i::FLAG_turbo_deoptimization = true;
i::FLAG_concurrent_recompilation = false;
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -635,7 +617,6 @@
TEST(DeoptimizeLoadICStoreICNested) {
- i::FLAG_turbo_deoptimization = true;
i::FLAG_concurrent_recompilation = false;
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
--
--
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.