| Index: src/compiler.cc
|
| ===================================================================
|
| --- src/compiler.cc (revision 3241)
|
| +++ src/compiler.cc (working copy)
|
| @@ -650,6 +650,16 @@
|
| if (decl->fun() != NULL) {
|
| ProcessExpression(decl->fun(), Expression::kValue);
|
| }
|
| + Variable* var = decl->proxy()->var();
|
| + ASSERT_NOT_NULL(var);
|
| + if ((!var->is_global() && decl->fun() != NULL)) {
|
| + BAILOUT("Non-global function declaration");
|
| + }
|
| + if ((!var->is_global() &&
|
| + var->slot() != NULL &&
|
| + var->slot()->type() == Slot::LOOKUP)) {
|
| + BAILOUT("Lookup slot encountered in declaration");
|
| + }
|
| }
|
|
|
|
|
| @@ -794,8 +804,10 @@
|
| }
|
|
|
| Slot::Type type = slot->type();
|
| - if (type != Slot::PARAMETER && type != Slot::LOCAL) {
|
| - BAILOUT("non-parameter/non-local slot reference");
|
| + // When LOOKUP slots are enabled, some currently dead code
|
| + // implementing unary typeof will become live.
|
| + if (type == Slot::LOOKUP) {
|
| + BAILOUT("Lookup slot");
|
| }
|
| }
|
| }
|
| @@ -883,8 +895,8 @@
|
| BAILOUT("non-global/non-slot assignment");
|
| }
|
| Slot::Type type = var->slot()->type();
|
| - if (type != Slot::PARAMETER && type != Slot::LOCAL) {
|
| - BAILOUT("non-parameter/non-local slot assignment");
|
| + if (type == Slot::LOOKUP) {
|
| + BAILOUT("Lookup slot");
|
| }
|
| }
|
| } else if (prop != NULL) {
|
|
|