Author: David Schneider <[email protected]>
Branch: arm-backed-float
Changeset: r44288:4781dabc238c
Date: 2011-05-18 17:25 +0200
http://bitbucket.org/pypy/pypy/changeset/4781dabc238c/

Log:    (bivab, arigo) implement the fastpath of new_with_vtable

diff --git a/pypy/jit/backend/arm/regalloc.py b/pypy/jit/backend/arm/regalloc.py
--- a/pypy/jit/backend/arm/regalloc.py
+++ b/pypy/jit/backend/arm/regalloc.py
@@ -823,16 +823,19 @@
             self.assembler._emit_call(self.assembler.malloc_func_addr,
                                     arglocs, self, result=op.result)
             self.possibly_free_vars(arglocs)
-            self.possibly_free_var(op.result)
+        self.possibly_free_var(op.result)
         return []
 
     def prepare_op_new_with_vtable(self, op, fcond):
         classint = op.getarg(0).getint()
         descrsize = heaptracker.vtable2descr(self.cpu, classint)
-        callargs = self._prepare_args_for_new_op(descrsize)
-        self.assembler._emit_call(self.assembler.malloc_func_addr,
-                                    callargs, self, result=op.result)
-        self.possibly_free_vars(callargs)
+        if self.assembler.cpu.gc_ll_descr.can_inline_malloc(descrsize):
+            self.fastpath_malloc_fixedsize(op, descrsize)
+        else:
+            callargs = self._prepare_args_for_new_op(descrsize)
+            self.assembler._emit_call(self.assembler.malloc_func_addr,
+                                        callargs, self, result=op.result)
+            self.possibly_free_vars(callargs)
         self.possibly_free_var(op.result)
         return [imm(classint)]
 
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to