jitcraft/SemanticAnalysis.cpp
changeset 30 8c8bf75114f7
parent 28 a9665857cfd5
child 37 abb03d835b53
     1.1 --- a/jitcraft/SemanticAnalysis.cpp	Tue Jul 03 00:21:37 2012 -0700
     1.2 +++ b/jitcraft/SemanticAnalysis.cpp	Tue Jul 03 00:25:29 2012 -0700
     1.3 @@ -1,4 +1,5 @@
     1.4 -/*
     1.5 +/* vim: set ts=4 sw=4 tw=99 et:
     1.6 + *
     1.7   * Copyright (C) 2012 David Anderson
     1.8   *
     1.9   * This file is part of JITCraft.
    1.10 @@ -94,8 +95,9 @@
    1.11      }
    1.12  }
    1.13  
    1.14 -SemanticAnalysis::SemanticAnalysis(CompileContext &cc, ParseTree *tree)
    1.15 -  : cc_(cc),
    1.16 +SemanticAnalysis::SemanticAnalysis(Zone *zone, CompileContext &cc, ParseTree *tree)
    1.17 +  : zone_(zone),
    1.18 +    cc_(cc),
    1.19      tree_(tree),
    1.20      loopDepth_(0),
    1.21      scope_(NULL)
    1.22 @@ -390,7 +392,7 @@
    1.23  SemanticAnalysis::visit(VariableDeclaration *node)
    1.24  {
    1.25      // :TODO: use locals
    1.26 -    Type *type = ZONE()->types()->getPrimitiveForTag(node->tag());
    1.27 +    Type *type = zone_->types()->getPrimitiveForTag(node->tag());
    1.28      if (!type)
    1.29          return;
    1.30  
    1.31 @@ -478,7 +480,7 @@
    1.32                  size = init->elements();
    1.33              }
    1.34  
    1.35 -            type = ZONE()->types()->unsafeArray(type, size);
    1.36 +            type = zone_->types()->unsafeArray(type, size);
    1.37              if (!type)
    1.38                  return;
    1.39  
    1.40 @@ -510,7 +512,7 @@
    1.41  void
    1.42  SemanticAnalysis::visit(IntegerLiteral *node)
    1.43  {
    1.44 -    node->setType(ZONE()->types()->getPrimitive(PrimitiveType_Int32));
    1.45 +    node->setType(zone_->types()->getPrimitive(PrimitiveType_Int32));
    1.46  }
    1.47  
    1.48  void
    1.49 @@ -524,7 +526,7 @@
    1.50  {
    1.51      // :TODO: use Local
    1.52  
    1.53 -    FixedArray *args = FixedArray::New(ZONE(), node->parameters()->size(), Heap::Tenure_Old);
    1.54 +    FixedArray *args = FixedArray::New(zone_, node->parameters()->size(), Heap::Tenure_Old);
    1.55      if (!args)
    1.56          return false;
    1.57  
    1.58 @@ -532,7 +534,7 @@
    1.59      for (size_t i = 0; i < node->parameters()->size(); i++) {
    1.60          Parameter *parameter = node->parameters()->at(i);
    1.61          
    1.62 -        Type *type = ZONE()->types()->getPrimitiveForTag(parameter->tag());
    1.63 +        Type *type = zone_->types()->getPrimitiveForTag(parameter->tag());
    1.64          if (!type)
    1.65              return false;
    1.66  
    1.67 @@ -542,20 +544,20 @@
    1.68          }
    1.69  
    1.70          if (parameter->reference()) {
    1.71 -            type = ZONE()->types()->getReference(type);
    1.72 +            type = zone_->types()->getReference(type);
    1.73              if (!type)
    1.74                  return false;
    1.75          }
    1.76  
    1.77 -        args->set(ZONE(), i, type);
    1.78 +        args->set(zone_, i, type);
    1.79          parameter->variable()->setType(type);
    1.80      }
    1.81  
    1.82 -    Type *returnType = ZONE()->types()->getPrimitive(PrimitiveType_Int32);
    1.83 +    Type *returnType = zone_->types()->getPrimitive(PrimitiveType_Int32);
    1.84      if (!returnType)
    1.85          return false;
    1.86  
    1.87 -    Type *funtype = ZONE()->types()->newFunction(returnType, args);
    1.88 +    Type *funtype = zone_->types()->newFunction(returnType, args);
    1.89      if (!funtype)
    1.90          return false;
    1.91  
    1.92 @@ -755,7 +757,7 @@
    1.93          return;
    1.94      }
    1.95  
    1.96 -    Type *type = ZONE()->types()->getPrimitiveForTag(tag);
    1.97 +    Type *type = zone_->types()->getPrimitiveForTag(tag);
    1.98      if (!type)
    1.99          return;
   1.100  
   1.101 @@ -783,11 +785,11 @@
   1.102  void
   1.103  SemanticAnalysis::visit(StringLiteral *node)
   1.104  {
   1.105 -    Type *type = ZONE()->types()->getPrimitive(PrimitiveType_Char);
   1.106 +    Type *type = zone_->types()->getPrimitive(PrimitiveType_Char);
   1.107      if (!type)
   1.108          return;
   1.109  
   1.110 -    type = Type::NewArray(ZONE(), type, node->string()->length() + 1, true);
   1.111 +    type = Type::NewArray(zone_, type, node->string()->length() + 1, true);
   1.112      if (!type)
   1.113          return;
   1.114  
   1.115 @@ -797,7 +799,7 @@
   1.116  void
   1.117  SemanticAnalysis::visit(FloatLiteral *node)
   1.118  {
   1.119 -    Type *type = ZONE()->types()->getPrimitive(PrimitiveType_Float);
   1.120 +    Type *type = zone_->types()->getPrimitive(PrimitiveType_Float);
   1.121      if (!type)
   1.122          return;
   1.123