[pypy-commit] pypy reflex-support: temp levels for CINT

wlav noreply at buildbot.pypy.org
Tue Jun 19 02:39:14 CEST 2012


Author: Wim Lavrijsen <WLavrijsen at lbl.gov>
Branch: reflex-support
Changeset: r55707:4d9e469c1d67
Date: 2012-06-15 16:09 -0700
http://bitbucket.org/pypy/pypy/changeset/4d9e469c1d67/

Log:	temp levels for CINT

diff --git a/pypy/module/cppyy/src/cintcwrapper.cxx b/pypy/module/cppyy/src/cintcwrapper.cxx
--- a/pypy/module/cppyy/src/cintcwrapper.cxx
+++ b/pypy/module/cppyy/src/cintcwrapper.cxx
@@ -39,20 +39,18 @@
 #define G__SETMEMFUNCENV      (long)0x7fff0035
 #define G__NOP                (long)0x7fff00ff
 
-
-/* ROOT meta internals ---------------------------------------------------- */
 namespace {
 
 class Cppyy_OpenedTClass : public TDictionary {
 public:
-   mutable TObjArray *fStreamerInfo;    //Array of TVirtualStreamerInfo
-   mutable std::map<std::string, TObjArray*> *fConversionStreamerInfo; //Array of the streamer infos derived from another class.
-   TList             *fRealData;        //linked list for persistent members including base classes
-   TList             *fBase;            //linked list for base classes
-   TList             *fData;            //linked list for data members
-   TList             *fMethod;          //linked list for methods
-   TList             *fAllPubData;      //all public data members (including from base classes)
-   TList             *fAllPubMethod;    //all public methods (including from base classes)
+    mutable TObjArray* fStreamerInfo;    //Array of TVirtualStreamerInfo
+    mutable std::map<std::string, TObjArray*>* fConversionStreamerInfo; //Array of the streamer infos derived from another class.
+    TList*             fRealData;       //linked list for persistent members including base classes
+    TList*             fBase;           //linked list for base classes
+    TList*             fData;           //linked list for data members
+    TList*             fMethod;         //linked list for methods
+    TList*             fAllPubData;     //all public data members (including from base classes)
+    TList*             fAllPubMethod;   //all public methods (including from base classes)
 };
 
 } // unnamed namespace
@@ -291,7 +289,9 @@
     G__value result;
     G__setnull(&result);
 
-    G__LockCriticalSection();      // is recursive lock
+    G__LockCriticalSection();      // CINT-level lock, is recursive
+    G__settemplevel(1);
+
     long index = (long)&method;
     G__CurrentCall(G__SETMEMFUNCENV, 0, &index);
     
@@ -301,7 +301,6 @@
         G__store_struct_offset = (long)self;
 
     meth(&result, 0, libp, 0);
-
     if (self)
         G__store_struct_offset = store_struct_offset;
 
@@ -309,6 +308,7 @@
         G__security_recover(0);    // 0 ensures silence
 
     G__CurrentCall(G__NOP, 0, 0);
+    G__settemplevel(-1);
     G__UnlockCriticalSection();
 
     return result;


More information about the pypy-commit mailing list