           if clobbered[d]
             unless replacements[d]
               replacements[d] = @new_temp()
-              rv.push new Move replacements[d], d
+              rv.push new Assignment replacements[d], d
             return replacements[d]
           traverse d
           d


  arraylength: { compile: (b) ->
    t = b.new_temp()
    b.add_stmt new Move t, new Expr "rs.check_null($0).array.length", b.pop()
    b.push t
  }

  getstatic: { compile: (b) ->
    t = b.new_temp()
    b.add_stmt new Move t, "rs.static_get(#{JSON.stringify @field_spec})"
    if @field_spec.type in ['J','D'] then b.push2 t else b.push t
  }

  'new': { compile: (b) ->
    t = b.new_temp()
    b.add_stmt new Move t, "rs.init_object(#{JSON.stringify @class})"
    b.push t
  }


      temp = b.new_temp()

      if method.return_type.toString() in ['D', 'J']
        b.add_stmt new Assignment temp, "rs.pop2()"
        b.push2 temp
      else
        b.add_stmt new Assignment temp, "rs.pop()"
        b.push temp

compile_obj_handlers = {
