| Index: src/hydrogen.cc
|
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
|
| index c109133c8faab654988891bd21fd49fea05f6bc5..85fb18765b1e275281f7229a532fc21a9e775099 100644
|
| --- a/src/hydrogen.cc
|
| +++ b/src/hydrogen.cc
|
| @@ -3577,6 +3577,9 @@ void HGraphBuilder::VisitAssignment(Assignment* expr) {
|
| if (expr->op() != Token::INIT_CONST) {
|
| return Bailout("non-initializer assignment to const");
|
| }
|
| + if (!var->IsStackAllocated()) {
|
| + return Bailout("assignment to const context slot");
|
| + }
|
| // We insert a use of the old value to detect unsupported uses of const
|
| // variables (e.g. initialization inside a loop).
|
| HValue* old_value = environment()->Lookup(var);
|
| @@ -3595,7 +3598,8 @@ void HGraphBuilder::VisitAssignment(Assignment* expr) {
|
| Bind(var, value);
|
| ast_context()->ReturnValue(value);
|
|
|
| - } else if (var->IsContextSlot() && var->mode() != Variable::CONST) {
|
| + } else if (var->IsContextSlot()) {
|
| + ASSERT(var->mode() != Variable::CONST);
|
| CHECK_ALIVE(VisitForValue(expr->value()));
|
| HValue* context = BuildContextChainWalk(var);
|
| int index = var->AsSlot()->index();
|
| @@ -5381,6 +5385,7 @@ void HGraphBuilder::VisitDeclaration(Declaration* decl) {
|
| }
|
|
|
| if (decl->mode() == Variable::CONST) {
|
| + ASSERT(var->IsStackAllocated());
|
| environment()->Bind(var, graph()->GetConstantHole());
|
| }
|
| }
|
|
|