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
void (*abortHook)(void);
int jniGrefLimit; // 0 means no limit
+ char* jniTrace;
bool reduceSignals;
bool noQuitHandler;
bool verifyDexChecksum;
DexOptimizerMode dexOptMode;
DexClassVerifyMode classVerifyMode;
+ bool dexOptForSmp;
+
/*
* GC option flags.
*/
bool preciseGc;
- bool overwriteFree;
bool preVerify;
bool postVerify;
bool generateRegisterMaps;
+ bool concurrentMarkSweep;
+ bool verifyCardTable;
int assertionCtrlCount;
AssertionControl* assertionCtrl;
/*
* 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.
*/
int offJavaLangRefReference_referent;
int offJavaLangRefReference_queue;
int offJavaLangRefReference_queueNext;
+ int offJavaLangRefReference_pendingNext;
/* method pointers - java.lang.ref.Reference */
Method* methJavaLangRefReference_enqueueInternal;
//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* */
*/
pthread_mutex_t gcHeapLock;
+ /*
+ * Condition variable to queue threads waiting to retry an
+ * allocation. Signaled after a concurrent GC is completed.
+ */
+ pthread_cond_t gcHeapCond;
+
/* Opaque pointer representing the heap. */
GcHeap* gcHeap;
+ /* The card table base, modified as needed for marking cards. */
+ u1* biasedCardTableBase;
+
/*
* Pre-allocated throwables.
*/
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
/*
* 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;
*/
int* executedInstrCounts;
bool instructionCountEnableCount;
-#endif
/*
* Signal catcher thread (for SIGQUIT).
int invokeMonomorphic;
int invokePolymorphic;
int invokeNative;
+ int invokeMonoGetterInlined;
+ int invokeMonoSetterInlined;
+ int invokePolyGetterInlined;
+ int invokePolySetterInlined;
int returnOp;
int icPatchInit;
int icPatchLockFree;