diff -r fbc7363dc96f -r abb03d835b53 jitcraft/SemanticAnalysis.cpp --- a/jitcraft/SemanticAnalysis.cpp Tue Jul 03 00:50:36 2012 -0700 +++ b/jitcraft/SemanticAnalysis.cpp Tue Jul 03 00:54:40 2012 -0700 @@ -391,13 +391,12 @@ void SemanticAnalysis::visit(VariableDeclaration *node) { - // :TODO: use locals - Type *type = zone_->types()->getPrimitiveForTag(node->tag()); + Local type(zone_, zone_->types()->getPrimitiveForTag(node->tag())); if (!type) return; if (node->postDimensions()) { - Type *init = NULL; + Local init(zone_); if (node->initialization()) { if ((init = visitAndApplyType(node->initialization())) == NULL) return; @@ -414,13 +413,13 @@ return; } - Type *check = init; + Local check(zone_, init); for (size_t i = node->postDimensions()->size() - 1; i < node->postDimensions()->size(); i--) { Expression *expr = node->postDimensions()->at(i); int size = -1; if (expr) { - Type *exprType = visitForLoad(expr); + Local exprType(zone_, visitForLoad(expr)); if (!exprType) return; @@ -524,9 +523,7 @@ bool SemanticAnalysis::preanalyze(FunctionStatement *node) { - // :TODO: use Local - - FixedArray *args = FixedArray::New(zone_, node->parameters()->size(), Heap::Tenure_Old); + Local args(zone_, FixedArray::New(zone_, node->parameters()->size(), Heap::Tenure_Old)); if (!args) return false; @@ -534,7 +531,7 @@ for (size_t i = 0; i < node->parameters()->size(); i++) { Parameter *parameter = node->parameters()->at(i); - Type *type = zone_->types()->getPrimitiveForTag(parameter->tag()); + Local type(zone_, zone_->types()->getPrimitiveForTag(parameter->tag())); if (!type) return false; @@ -553,11 +550,11 @@ parameter->variable()->setType(type); } - Type *returnType = zone_->types()->getPrimitive(PrimitiveType_Int32); + Local returnType(zone_, zone_->types()->getPrimitive(PrimitiveType_Int32)); if (!returnType) return false; - Type *funtype = zone_->types()->newFunction(returnType, args); + Local funtype(zone_, zone_->types()->newFunction(returnType, args)); if (!funtype) return false;