< prev index next >

src/hotspot/share/runtime/objectMonitor.cpp

Print this page
rev 51780 : imported patch syncknobs-00-base

*** 2202,2293 **** #undef NEWPERFCOUNTER #undef NEWPERFVARIABLE } } - static char * kvGet(char * kvList, const char * Key) { - if (kvList == NULL) return NULL; - size_t n = strlen(Key); - char * Search; - for (Search = kvList; *Search; Search += strlen(Search) + 1) { - if (strncmp (Search, Key, n) == 0) { - if (Search[n] == '=') return Search + n + 1; - if (Search[n] == 0) return(char *) "1"; - } - } - return NULL; - } - - static int kvGetInt(char * kvList, const char * Key, int Default) { - char * v = kvGet(kvList, Key); - int rslt = v ? ::strtol(v, NULL, 0) : Default; - if (Knob_ReportSettings && v != NULL) { - tty->print_cr("INFO: SyncKnob: %s %d(%d)", Key, rslt, Default) ; - tty->flush(); - } - return rslt; - } - void ObjectMonitor::DeferredInitialize() { if (InitDone > 0) return; if (Atomic::cmpxchg (-1, &InitDone, 0) != 0) { while (InitDone != 1) /* empty */; return; } // One-shot global initialization ... // The initialization is idempotent, so we don't need locks. // In the future consider doing this via os::init_2(). - // SyncKnobs consist of <Key>=<Value> pairs in the style - // of environment variables. Start by converting ':' to NUL. - - if (SyncKnobs == NULL) SyncKnobs = ""; - - size_t sz = strlen(SyncKnobs); - char * knobs = (char *) os::malloc(sz + 2, mtInternal); - if (knobs == NULL) { - vm_exit_out_of_memory(sz + 2, OOM_MALLOC_ERROR, "Parse SyncKnobs"); - guarantee(0, "invariant"); - } - strcpy(knobs, SyncKnobs); - knobs[sz+1] = 0; - for (char * p = knobs; *p; p++) { - if (*p == ':') *p = 0; - } - - #define SETKNOB(x) { Knob_##x = kvGetInt(knobs, #x, Knob_##x); } - SETKNOB(ReportSettings); - SETKNOB(ExitRelease); - SETKNOB(InlineNotify); - SETKNOB(Verbose); - SETKNOB(VerifyInUse); - SETKNOB(VerifyMatch); - SETKNOB(FixedSpin); - SETKNOB(SpinLimit); - SETKNOB(SpinBase); - SETKNOB(SpinBackOff); - SETKNOB(CASPenalty); - SETKNOB(OXPenalty); - SETKNOB(SpinSetSucc); - SETKNOB(SuccEnabled); - SETKNOB(SuccRestrict); - SETKNOB(Penalty); - SETKNOB(Bonus); - SETKNOB(BonusB); - SETKNOB(Poverty); - SETKNOB(SpinAfterFutile); - SETKNOB(UsePause); - SETKNOB(SpinEarly); - SETKNOB(OState); - SETKNOB(MaxSpinners); - SETKNOB(PreSpin); - SETKNOB(ExitPolicy); - SETKNOB(QMode); - SETKNOB(ResetEvent); - SETKNOB(MoveNotifyee); - SETKNOB(FastHSSEC); - #undef SETKNOB if (os::is_MP()) { BackOffMask = (1 << Knob_SpinBackOff) - 1; if (Knob_ReportSettings) { tty->print_cr("INFO: BackOffMask=0x%X", BackOffMask); --- 2202,2221 ----
*** 2298,2307 **** Knob_SpinBase = 0; Knob_PreSpin = 0; Knob_FixedSpin = -1; } - os::free(knobs); OrderAccess::fence(); InitDone = 1; } --- 2226,2234 ----
< prev index next >