[pypy-commit] pypy call-via-pyobj: fix translation (arigato)
mattip
pypy.commits at gmail.com
Sat Jul 2 16:27:52 EDT 2016
Author: Matti Picus <matti.picus at gmail.com>
Branch: call-via-pyobj
Changeset: r85520:192a002624b0
Date: 2016-07-02 22:34 +0300
http://bitbucket.org/pypy/pypy/changeset/192a002624b0/
Log: fix translation (arigato)
diff --git a/pypy/module/cpyext/methodobject.py b/pypy/module/cpyext/methodobject.py
--- a/pypy/module/cpyext/methodobject.py
+++ b/pypy/module/cpyext/methodobject.py
@@ -1,4 +1,4 @@
-from rpython.rtyper.lltypesystem import lltype, rffi
+from rpython.rtyper.lltypesystem import lltype, rffi, llmemory
from pypy.interpreter.baseobjspace import W_Root
from pypy.interpreter.error import OperationError, oefmt
@@ -176,22 +176,14 @@
self.method_name)
func_to_call = self.func
if self.offset:
- ptr = as_pyobj(space, self.w_objclass)
+ pto = as_pyobj(space, self.w_objclass)
# make ptr the equivalent of this, using the offsets
#func_to_call = rffi.cast(rffi.VOIDP, ptr.c_tp_as_number.c_nb_multiply)
- if not ptr is rffi.VOIDP:
- ptr = rffi.cast(rffi.VOIDP, ptr)
+ if pto:
+ ptr = llmemory.cast_ptr_to_adr(pto)
for o in self.offset:
- if not ptr:
- break
- ptr_as_int = lltype.cast_ptr_to_int(ptr)
- pptr = rffi.cast(rffi.VOIDPP, ptr_as_int + o)
- if not pptr:
- break
- ptr = pptr[0]
- ptr = rffi.cast(rffi.VOIDP, ptr)
- if ptr:
- func_to_call = ptr
+ ptr = (ptr + o).address[0]
+ func_to_call = llmemory.cast_adr_to_ptr(ptr, rffi.VOIDP)
assert func_to_call
return self.wrapper_func(space, w_self, w_args, func_to_call)
More information about the pypy-commit
mailing list