OSDN Git Service

Merge "Undecoded jobject leaking in through attachThread"
[android-x86/dalvik.git] / vm / Globals.h
index 1c9ca7a..6ba6d5a 100644 (file)
@@ -91,6 +91,9 @@ struct DvmGlobals {
     int         jdwpPort;
     bool        jdwpSuspend;
 
+    /* use wall clock as method profiler clock source? */
+    bool        profilerWallClock;
+
     /*
      * Lock profiling threshold value in milliseconds.  Acquires that
      * exceed threshold are logged.  Acquires within the threshold are
@@ -104,6 +107,7 @@ struct DvmGlobals {
     void        (*abortHook)(void);
 
     int         jniGrefLimit;       // 0 means no limit
+    char*       jniTrace;
     bool        reduceSignals;
     bool        noQuitHandler;
     bool        verifyDexChecksum;
@@ -114,11 +118,12 @@ struct DvmGlobals {
     DexOptimizerMode    dexOptMode;
     DexClassVerifyMode  classVerifyMode;
 
+    bool        dexOptForSmp;
+
     /*
      * GC option flags.
      */
     bool        preciseGc;
-    bool        overwriteFree;
     bool        preVerify;
     bool        postVerify;
     bool        generateRegisterMaps;
@@ -177,8 +182,16 @@ struct DvmGlobals {
     /*
      * Interned strings.
      */
+
+    /* A mutex that guards access to the interned string tables. */
+    pthread_mutex_t internLock;
+
+    /* Hash table of strings interned by the user. */
     HashTable*  internedStrings;
 
+    /* Hash table of strings interned by the class loader. */
+    HashTable*  literalStrings;
+
     /*
      * Quick lookups for popular classes used internally.
      */
@@ -288,7 +301,7 @@ struct DvmGlobals {
     //int         offJavaNioDirectByteBufferImpl_pointer;
 
     /* method pointers - java.security.AccessController */
-    volatile bool javaSecurityAccessControllerReady;
+    volatile int javaSecurityAccessControllerReady;
     Method*     methJavaSecurityAccessController_doPrivileged[4];
 
     /* constructor method pointers; no vtable involved, so use Method* */
@@ -590,7 +603,6 @@ struct DvmGlobals {
     enum { kDPOff=0, kDPWarn, kDPErr, kDPAbort } deadlockPredictMode;
 #endif
 
-#ifdef WITH_PROFILER
     /*
      * When a profiler is enabled, this is incremented.  Distinct profilers
      * include "dmtrace" method tracing, emulator method tracing, and
@@ -620,7 +632,8 @@ struct DvmGlobals {
     /*
      * Pointers to the original methods for things that have been inlined.
      * This makes it easy for us to output method entry/exit records for
-     * the method calls we're not actually making.
+     * the method calls we're not actually making.  (Used by method
+     * profiling.)
      */
     Method**    inlinedMethods;
 
@@ -629,7 +642,6 @@ struct DvmGlobals {
      */
     int*        executedInstrCounts;
     bool        instructionCountEnableCount;
-#endif
 
     /*
      * Signal catcher thread (for SIGQUIT).
@@ -831,6 +843,10 @@ struct DvmJitGlobals {
     int                invokeMonomorphic;
     int                invokePolymorphic;
     int                invokeNative;
+    int                invokeMonoGetterInlined;
+    int                invokeMonoSetterInlined;
+    int                invokePolyGetterInlined;
+    int                invokePolySetterInlined;
     int                returnOp;
     int                icPatchInit;
     int                icPatchLockFree;