src/BytecodeCompiler.cpp
changeset 174 e718b56aba78
parent 173 bbf9f3809d55
child 175 f875ce723f2c
     1.1 --- a/src/BytecodeCompiler.cpp	Sun Aug 12 20:51:31 2012 -0700
     1.2 +++ b/src/BytecodeCompiler.cpp	Sat Sep 01 16:36:20 2012 -0700
     1.3 @@ -333,7 +333,9 @@
     1.4          Variable *var = proxy->binding()->toVariable();
     1.5  
     1.6          // Bind.
     1.7 -        if (var->type()->isReference() || var->type()->isArray())
     1.8 +        if (var->location() == Variable::ENVIRONMENT)
     1.9 +            getEnvSlot(var);
    1.10 +        else if (var->type()->isReference() || var->type()->isArray())
    1.11              __ get(var);
    1.12  
    1.13          // Dup and fetch.
    1.14 @@ -346,7 +348,8 @@
    1.15              }
    1.16          } else {
    1.17              assert(!var->type()->isArray());
    1.18 -            __ get(var);
    1.19 +            if (var->location() != Variable::ENVIRONMENT)
    1.20 +                __ get(var);
    1.21              if (node->postfix())
    1.22                  __ dup();
    1.23          }
    1.24 @@ -406,6 +409,8 @@
    1.25  
    1.26          if (var->type()->isReference())
    1.27              __ setref(node->type());
    1.28 +        else if (var->location() == Variable::ENVIRONMENT)
    1.29 +            setEnvSlot(var);
    1.30          else
    1.31              __ set(var);
    1.32      } else if (expr->isFieldExpression()) {
    1.33 @@ -1115,9 +1120,13 @@
    1.34  }
    1.35  
    1.36  void
    1.37 +BytecodeCompiler::visit(FunctionTypeStatement *node)
    1.38 +{
    1.39 +}
    1.40 +
    1.41 +void
    1.42  BytecodeCompiler::visit(EnumStatement *node)
    1.43  {
    1.44 -    // :TODO: eventually, we'll export these.
    1.45  }
    1.46  
    1.47  void