diff --git a/lib/parfait/method.rb b/lib/parfait/method.rb index 04879fdd..cc12da72 100644 --- a/lib/parfait/method.rb +++ b/lib/parfait/method.rb @@ -28,9 +28,8 @@ module Parfait raise "Wrong type, expect List not #{arg_names.class}" unless arg_names.is_a? List self.arg_names = arg_names self.locals = List.new - self.tmps = List.new end - attributes [:name , :arg_names , :for_class , :code , :locals , :tmps] + attributes [:name , :arg_names , :for_class , :code , :locals ] # determine whether this method has a variable by the given name @@ -54,7 +53,6 @@ module Parfait def has_local name raise "has_local #{name}.#{name.class}" unless name.is_a? Symbol index = self.locals.index_of(name) - index = self.tmps.index_of(name) unless index index end diff --git a/lib/virtual/boot.rb b/lib/virtual/boot.rb index 972985b8..87aa00d2 100644 --- a/lib/virtual/boot.rb +++ b/lib/virtual/boot.rb @@ -130,7 +130,7 @@ module Virtual # instances are copied (shame on you) :Class => [:object_layout , :name , :instance_methods , :super_class , :meta_class], :Dictionary => [:keys , :values ] , - :Method => [:name , :code ,:arg_names , :for_class, :locals , :tmps ] , + :Method => [:name , :code ,:arg_names , :for_class, :locals ] , :Module => [:name , :instance_methods , :super_class , :meta_class ] } end diff --git a/lib/virtual/method_source.rb b/lib/virtual/method_source.rb index fde7c74e..5813d811 100644 --- a/lib/virtual/method_source.rb +++ b/lib/virtual/method_source.rb @@ -117,12 +117,6 @@ module Virtual return new_b end - def get_tmp - name = "__tmp__#{@tmps.length}" - @tmps << name - Ast::NameExpression.new(name) - end - # sugar to create instructions easily. # any method will be passed on to the RegisterMachine and the result added to the insertion block # With this trick we can write what looks like assembler, diff --git a/lib/virtual/passes/enter_implementation.rb b/lib/virtual/passes/enter_implementation.rb index 378cd006..d3b93d65 100644 --- a/lib/virtual/passes/enter_implementation.rb +++ b/lib/virtual/passes/enter_implementation.rb @@ -8,7 +8,7 @@ module Virtual # save return register to the message at instance return_address new_codes << Register.save_return(code, :message , :return_address) # and create a new frame if needed - unless code.method.locals.empty? and code.method.tmps.empty? + unless code.method.locals.empty? new_codes << Virtual::NewFrame.new end block.replace(code , new_codes )