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