Author: Armin Rigo <[email protected]>
Branch: 
Changeset: r79686:3b890eadde77
Date: 2015-09-18 16:03 +0200
http://bitbucket.org/pypy/pypy/changeset/3b890eadde77/

Log:    check_correct_type() should also be true in getfield_gc_x.

diff --git a/rpython/jit/backend/llsupport/llmodel.py 
b/rpython/jit/backend/llsupport/llmodel.py
--- a/rpython/jit/backend/llsupport/llmodel.py
+++ b/rpython/jit/backend/llsupport/llmodel.py
@@ -600,16 +600,22 @@
     @specialize.argtype(1)
     def bh_getfield_gc_i(self, struct, fielddescr):
         ofs, size, sign = self.unpack_fielddescr_size(fielddescr)
+        if isinstance(lltype.typeOf(struct), lltype.Ptr):
+            fielddescr.check_correct_type(struct)
         return self.read_int_at_mem(struct, ofs, size, sign)
 
     @specialize.argtype(1)
     def bh_getfield_gc_r(self, struct, fielddescr):
         ofs = self.unpack_fielddescr(fielddescr)
+        if isinstance(lltype.typeOf(struct), lltype.Ptr):
+            fielddescr.check_correct_type(struct)
         return self.read_ref_at_mem(struct, ofs)
 
     @specialize.argtype(1)
     def bh_getfield_gc_f(self, struct, fielddescr):
         ofs = self.unpack_fielddescr(fielddescr)
+        if isinstance(lltype.typeOf(struct), lltype.Ptr):
+            fielddescr.check_correct_type(struct)
         return self.read_float_at_mem(struct, ofs)
 
     bh_getfield_raw_i = bh_getfield_gc_i
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to