diff -r bbf9f3809d55 -r e718b56aba78 src/BytecodeCompiler.cpp --- a/src/BytecodeCompiler.cpp Sun Aug 12 20:51:31 2012 -0700 +++ b/src/BytecodeCompiler.cpp Sat Sep 01 16:36:20 2012 -0700 @@ -333,7 +333,9 @@ Variable *var = proxy->binding()->toVariable(); // Bind. - if (var->type()->isReference() || var->type()->isArray()) + if (var->location() == Variable::ENVIRONMENT) + getEnvSlot(var); + else if (var->type()->isReference() || var->type()->isArray()) __ get(var); // Dup and fetch. @@ -346,7 +348,8 @@ } } else { assert(!var->type()->isArray()); - __ get(var); + if (var->location() != Variable::ENVIRONMENT) + __ get(var); if (node->postfix()) __ dup(); } @@ -406,6 +409,8 @@ if (var->type()->isReference()) __ setref(node->type()); + else if (var->location() == Variable::ENVIRONMENT) + setEnvSlot(var); else __ set(var); } else if (expr->isFieldExpression()) { @@ -1115,9 +1120,13 @@ } void +BytecodeCompiler::visit(FunctionTypeStatement *node) +{ +} + +void BytecodeCompiler::visit(EnumStatement *node) { - // :TODO: eventually, we'll export these. } void