Author: Remi Meier <[email protected]>
Branch: stmgc-c7
Changeset: r73268:db94b14e4f34
Date: 2014-09-01 12:43 +0200
http://bitbucket.org/pypy/pypy/changeset/db94b14e4f34/

Log:    add pypy_stmcb_obj_supports_cards

diff --git a/rpython/memory/gctransform/stmframework.py 
b/rpython/memory/gctransform/stmframework.py
--- a/rpython/memory/gctransform/stmframework.py
+++ b/rpython/memory/gctransform/stmframework.py
@@ -33,6 +33,14 @@
                                      llannotation.SomePtr(GCClass.VISIT_FPTR)],
                   annmodel.s_None))
         #
+        def pypy_stmcb_obj_supports_cards(obj):
+            typeid = gc.get_type_id(obj)
+            return gc.is_varsize(typeid)
+        pypy_stmcb_obj_supports_cards.c_name = "pypy_stmcb_obj_supports_cards"
+        self.autoregister_ptrs.append(
+            getfn(pypy_stmcb_obj_supports_cards, [llannotation.SomeAddress()],
+                  annmodel.SomeInteger()))
+        #
         def pypy_stmcb_trace_cards(obj, visit_fn, start, stop):
             typeid = gc.get_type_id(obj)
             if not gc.has_gcptr_in_varsize(typeid):
diff --git a/rpython/translator/stm/src_stm/stmgcintf.c 
b/rpython/translator/stm/src_stm/stmgcintf.c
--- a/rpython/translator/stm/src_stm/stmgcintf.c
+++ b/rpython/translator/stm/src_stm/stmgcintf.c
@@ -13,6 +13,7 @@
 extern void pypy_stmcb_get_card_base_itemsize(void*, uintptr_t[]);
 extern void pypy_stmcb_trace(void*, void(*)(void*));
 extern void pypy_stmcb_trace_cards(void*, void(*)(void*), uintptr_t, 
uintptr_t);
+extern Signed pypy_stmcb_obj_supports_cards(void*);
 
 inline ssize_t stmcb_size_rounded_up(struct object_s *obj) {
     ssize_t result = pypy_stmcb_size_rounded_up(obj);
@@ -30,6 +31,10 @@
     pypy_stmcb_trace(obj, (void(*)(void*))visit);
 }
 
+inline long stmcb_obj_supports_cards(struct object_s *obj) {
+    return pypy_stmcb_obj_supports_cards(obj);
+}
+
 inline void stmcb_trace_cards(struct object_s *obj, void visit(object_t **),
                               uintptr_t start, uintptr_t stop) {
     pypy_stmcb_trace_cards(obj, (void(*)(void*))visit, start, stop);
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to