| Index: src/hydrogen.cc
|
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
|
| index c3dfd5ff261db65fa7ad2c1d148253ed4baa9967..d599bd6f8b2c3cf16490a38ce2137bb39d066c8f 100644
|
| --- a/src/hydrogen.cc
|
| +++ b/src/hydrogen.cc
|
| @@ -4653,12 +4653,18 @@ void HGraphBuilder::VisitUnaryOperation(UnaryOperation* expr) {
|
| // The subexpression does not have side effects.
|
| ast_context()->ReturnValue(graph()->GetConstantFalse());
|
| } else if (prop != NULL) {
|
| - VISIT_FOR_VALUE(prop->obj());
|
| - VISIT_FOR_VALUE(prop->key());
|
| - HValue* key = Pop();
|
| - HValue* obj = Pop();
|
| - ast_context()->ReturnInstruction(new HDeleteProperty(obj, key),
|
| - expr->id());
|
| + if (prop->is_synthetic()) {
|
| + // Result of deleting parameters is false, even when they rewrite
|
| + // to accesses on the arguments object.
|
| + ast_context()->ReturnValue(graph()->GetConstantFalse());
|
| + } else {
|
| + VISIT_FOR_VALUE(prop->obj());
|
| + VISIT_FOR_VALUE(prop->key());
|
| + HValue* key = Pop();
|
| + HValue* obj = Pop();
|
| + HDeleteProperty* instr = new HDeleteProperty(obj, key);
|
| + ast_context()->ReturnInstruction(instr, expr->id());
|
| + }
|
| } else if (var->is_global()) {
|
| BAILOUT("delete with global variable");
|
| } else {
|
|
|