jitcraft/SemanticAnalysis.cpp
changeset 37 abb03d835b53
parent 30 8c8bf75114f7
child 40 ce787d61fb71
     1.1 --- a/jitcraft/SemanticAnalysis.cpp	Tue Jul 03 00:50:36 2012 -0700
     1.2 +++ b/jitcraft/SemanticAnalysis.cpp	Tue Jul 03 00:54:40 2012 -0700
     1.3 @@ -391,13 +391,12 @@
     1.4  void
     1.5  SemanticAnalysis::visit(VariableDeclaration *node)
     1.6  {
     1.7 -    // :TODO: use locals
     1.8 -    Type *type = zone_->types()->getPrimitiveForTag(node->tag());
     1.9 +    Local<Type> type(zone_, zone_->types()->getPrimitiveForTag(node->tag()));
    1.10      if (!type)
    1.11          return;
    1.12  
    1.13      if (node->postDimensions()) {
    1.14 -        Type *init = NULL;
    1.15 +        Local<Type> init(zone_);
    1.16          if (node->initialization()) {
    1.17              if ((init = visitAndApplyType(node->initialization())) == NULL)
    1.18                  return;
    1.19 @@ -414,13 +413,13 @@
    1.20              return;
    1.21          }
    1.22  
    1.23 -        Type *check = init;
    1.24 +        Local<Type> check(zone_, init);
    1.25          for (size_t i = node->postDimensions()->size() - 1; i < node->postDimensions()->size(); i--) {
    1.26              Expression *expr = node->postDimensions()->at(i);
    1.27              int size = -1;
    1.28  
    1.29              if (expr) {
    1.30 -                Type *exprType = visitForLoad(expr);
    1.31 +                Local<Type> exprType(zone_, visitForLoad(expr));
    1.32                  if (!exprType)
    1.33                      return;
    1.34  
    1.35 @@ -524,9 +523,7 @@
    1.36  bool
    1.37  SemanticAnalysis::preanalyze(FunctionStatement *node)
    1.38  {
    1.39 -    // :TODO: use Local
    1.40 -
    1.41 -    FixedArray *args = FixedArray::New(zone_, node->parameters()->size(), Heap::Tenure_Old);
    1.42 +    Local<FixedArray> args(zone_, FixedArray::New(zone_, node->parameters()->size(), Heap::Tenure_Old));
    1.43      if (!args)
    1.44          return false;
    1.45  
    1.46 @@ -534,7 +531,7 @@
    1.47      for (size_t i = 0; i < node->parameters()->size(); i++) {
    1.48          Parameter *parameter = node->parameters()->at(i);
    1.49          
    1.50 -        Type *type = zone_->types()->getPrimitiveForTag(parameter->tag());
    1.51 +        Local<Type> type(zone_, zone_->types()->getPrimitiveForTag(parameter->tag()));
    1.52          if (!type)
    1.53              return false;
    1.54  
    1.55 @@ -553,11 +550,11 @@
    1.56          parameter->variable()->setType(type);
    1.57      }
    1.58  
    1.59 -    Type *returnType = zone_->types()->getPrimitive(PrimitiveType_Int32);
    1.60 +    Local<Type> returnType(zone_, zone_->types()->getPrimitive(PrimitiveType_Int32));
    1.61      if (!returnType)
    1.62          return false;
    1.63  
    1.64 -    Type *funtype = zone_->types()->newFunction(returnType, args);
    1.65 +    Local<Type> funtype(zone_, zone_->types()->newFunction(returnType, args));
    1.66      if (!funtype)
    1.67          return false;
    1.68