Merge
This commit is contained in:
commit
43c4569404
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright 2012, 2014 SAP AG. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
@ -693,7 +693,7 @@ void Assembler::test_asm() {
|
||||
// PPC 1, section 4.6.7 Floating-Point Compare Instructions
|
||||
fcmpu( CCR7, F24, F25);
|
||||
|
||||
tty->print_cr("\ntest_asm disassembly (0x%lx 0x%lx):", code()->insts_begin(), code()->insts_end());
|
||||
tty->print_cr("\ntest_asm disassembly (0x%lx 0x%lx):", p2i(code()->insts_begin()), p2i(code()->insts_end()));
|
||||
code()->decode();
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -175,7 +175,7 @@ void CompiledStaticCall::set_to_interpreted(methodHandle callee, address entry)
|
||||
if (TraceICs) {
|
||||
ResourceMark rm;
|
||||
tty->print_cr("CompiledStaticCall@" INTPTR_FORMAT ": set_to_interpreted %s",
|
||||
instruction_address(),
|
||||
p2i(instruction_address()),
|
||||
callee->name_and_sig_as_C_string());
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright 2012, 2014 SAP AG. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
@ -140,7 +140,7 @@ frame frame::sender(RegisterMap* map) const {
|
||||
void frame::patch_pc(Thread* thread, address pc) {
|
||||
if (TracePcPatching) {
|
||||
tty->print_cr("patch_pc at address " PTR_FORMAT " [" PTR_FORMAT " -> " PTR_FORMAT "]",
|
||||
&((address*) _sp)[-1], ((address*) _sp)[-1], pc);
|
||||
p2i(&((address*) _sp)[-1]), p2i(((address*) _sp)[-1]), p2i(pc));
|
||||
}
|
||||
own_abi()->lr = (uint64_t)pc;
|
||||
_cb = CodeCache::find_blob(pc);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright 2012, 2014 SAP AG. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
@ -3099,7 +3099,7 @@ const char* stop_types[] = {
|
||||
};
|
||||
|
||||
static void stop_on_request(int tp, const char* msg) {
|
||||
tty->print("PPC assembly code requires stop: (%s) %s\n", (void *)stop_types[tp%/*stop_end*/4], msg);
|
||||
tty->print("PPC assembly code requires stop: (%s) %s\n", stop_types[tp%/*stop_end*/4], msg);
|
||||
guarantee(false, err_msg("PPC assembly code requires stop: %s", msg));
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright 2012, 2014 SAP AG. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
@ -464,7 +464,7 @@ void trace_method_handle_stub(const char* adaptername,
|
||||
strstr(adaptername, "linkTo") == NULL); // static linkers don't have MH
|
||||
const char* mh_reg_name = has_mh ? "R23_method_handle" : "G23";
|
||||
tty->print_cr("MH %s %s="INTPTR_FORMAT " sp=" INTPTR_FORMAT,
|
||||
adaptername, mh_reg_name, (intptr_t) mh, entry_sp);
|
||||
adaptername, mh_reg_name, (intptr_t) mh, (intptr_t) entry_sp);
|
||||
|
||||
if (Verbose) {
|
||||
tty->print_cr("Registers:");
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright 2012, 2013 SAP AG. All rights reserved.
|
||||
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright 2012, 2014 SAP AG. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -147,9 +147,9 @@ void NativeCall::verify() {
|
||||
address addr = addr_at(0);
|
||||
|
||||
if (!NativeCall::is_call_at(addr)) {
|
||||
tty->print_cr("not a NativeCall at " PTR_FORMAT, addr);
|
||||
tty->print_cr("not a NativeCall at " PTR_FORMAT, p2i(addr));
|
||||
// TODO: PPC port: Disassembler::decode(addr - 20, addr + 20, tty);
|
||||
fatal(err_msg("not a NativeCall at " PTR_FORMAT, addr));
|
||||
fatal(err_msg("not a NativeCall at " PTR_FORMAT, p2i(addr)));
|
||||
}
|
||||
}
|
||||
#endif // ASSERT
|
||||
@ -160,9 +160,9 @@ void NativeFarCall::verify() {
|
||||
|
||||
NativeInstruction::verify();
|
||||
if (!NativeFarCall::is_far_call_at(addr)) {
|
||||
tty->print_cr("not a NativeFarCall at " PTR_FORMAT, addr);
|
||||
tty->print_cr("not a NativeFarCall at " PTR_FORMAT, p2i(addr));
|
||||
// TODO: PPC port: Disassembler::decode(addr, 20, 20, tty);
|
||||
fatal(err_msg("not a NativeFarCall at " PTR_FORMAT, addr));
|
||||
fatal(err_msg("not a NativeFarCall at " PTR_FORMAT, p2i(addr)));
|
||||
}
|
||||
}
|
||||
#endif // ASSERT
|
||||
@ -306,9 +306,9 @@ void NativeMovConstReg::verify() {
|
||||
if (! (cb != NULL && MacroAssembler::is_calculate_address_from_global_toc_at(addr, cb->content_begin())) &&
|
||||
! (cb != NULL && MacroAssembler::is_set_narrow_oop(addr, cb->content_begin())) &&
|
||||
! MacroAssembler::is_bl(*((int*) addr))) {
|
||||
tty->print_cr("not a NativeMovConstReg at " PTR_FORMAT, addr);
|
||||
tty->print_cr("not a NativeMovConstReg at " PTR_FORMAT, p2i(addr));
|
||||
// TODO: PPC port: Disassembler::decode(addr, 20, 20, tty);
|
||||
fatal(err_msg("not a NativeMovConstReg at " PTR_FORMAT, addr));
|
||||
fatal(err_msg("not a NativeMovConstReg at " PTR_FORMAT, p2i(addr)));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -344,9 +344,9 @@ void NativeJump::verify() {
|
||||
|
||||
NativeInstruction::verify();
|
||||
if (!NativeJump::is_jump_at(addr)) {
|
||||
tty->print_cr("not a NativeJump at " PTR_FORMAT, addr);
|
||||
tty->print_cr("not a NativeJump at " PTR_FORMAT, p2i(addr));
|
||||
// TODO: PPC port: Disassembler::decode(addr, 20, 20, tty);
|
||||
fatal(err_msg("not a NativeJump at " PTR_FORMAT, addr));
|
||||
fatal(err_msg("not a NativeJump at " PTR_FORMAT, p2i(addr)));
|
||||
}
|
||||
}
|
||||
#endif // ASSERT
|
||||
|
@ -1329,7 +1329,7 @@ void MachPrologNode::format(PhaseRegAlloc *ra_, outputStream *st) const {
|
||||
|
||||
if (!false /* TODO: PPC port C->is_frameless_method()*/) {
|
||||
st->print("save return pc\n\t");
|
||||
st->print("push frame %d\n\t", -framesize);
|
||||
st->print("push frame %ld\n\t", -framesize);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -352,7 +352,7 @@ void VM_Version::determine_section_size() {
|
||||
|
||||
if (PrintAssembly) {
|
||||
ttyLocker ttyl;
|
||||
tty->print_cr("Decoding section size detection stub at " INTPTR_FORMAT " before execution:", code);
|
||||
tty->print_cr("Decoding section size detection stub at " INTPTR_FORMAT " before execution:", p2i(code));
|
||||
Disassembler::decode((u_char*)code, (u_char*)code_end, tty);
|
||||
tty->print_cr("Time loop1 :%f", loop1_seconds);
|
||||
tty->print_cr("Time loop2 :%f", loop2_seconds);
|
||||
@ -435,7 +435,7 @@ void VM_Version::determine_features() {
|
||||
// Print the detection code.
|
||||
if (PrintAssembly) {
|
||||
ttyLocker ttyl;
|
||||
tty->print_cr("Decoding cpu-feature detection stub at " INTPTR_FORMAT " before execution:", code);
|
||||
tty->print_cr("Decoding cpu-feature detection stub at " INTPTR_FORMAT " before execution:", p2i(code));
|
||||
Disassembler::decode((u_char*)code, (u_char*)code_end, tty);
|
||||
}
|
||||
|
||||
@ -468,7 +468,7 @@ void VM_Version::determine_features() {
|
||||
// Print the detection code.
|
||||
if (PrintAssembly) {
|
||||
ttyLocker ttyl;
|
||||
tty->print_cr("Decoding cpu-feature detection stub at " INTPTR_FORMAT " after execution:", code);
|
||||
tty->print_cr("Decoding cpu-feature detection stub at " INTPTR_FORMAT " after execution:", p2i(code));
|
||||
Disassembler::decode((u_char*)code, (u_char*)code_end, tty);
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright 2012, 2013 SAP AG. All rights reserved.
|
||||
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright 2012, 2014 SAP AG. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -307,7 +307,7 @@ JVM_handle_linux_signal(int sig,
|
||||
// doesn't work for us. We use:
|
||||
((NativeInstruction*)pc)->is_safepoint_poll()) {
|
||||
if (TraceTraps) {
|
||||
tty->print_cr("trap: safepoint_poll at " INTPTR_FORMAT " (SIGSEGV)", pc);
|
||||
tty->print_cr("trap: safepoint_poll at " INTPTR_FORMAT " (SIGSEGV)", p2i(pc));
|
||||
}
|
||||
stub = SharedRuntime::get_poll_stub(pc);
|
||||
}
|
||||
@ -316,7 +316,7 @@ JVM_handle_linux_signal(int sig,
|
||||
else if (sig == SIGTRAP && TrapBasedICMissChecks &&
|
||||
nativeInstruction_at(pc)->is_sigtrap_ic_miss_check()) {
|
||||
if (TraceTraps) {
|
||||
tty->print_cr("trap: ic_miss_check at " INTPTR_FORMAT " (SIGTRAP)", pc);
|
||||
tty->print_cr("trap: ic_miss_check at " INTPTR_FORMAT " (SIGTRAP)", p2i(pc));
|
||||
}
|
||||
stub = SharedRuntime::get_ic_miss_stub();
|
||||
}
|
||||
@ -325,7 +325,7 @@ JVM_handle_linux_signal(int sig,
|
||||
else if (sig == SIGTRAP && TrapBasedNullChecks &&
|
||||
nativeInstruction_at(pc)->is_sigtrap_null_check()) {
|
||||
if (TraceTraps) {
|
||||
tty->print_cr("trap: null_check at " INTPTR_FORMAT " (SIGTRAP)", pc);
|
||||
tty->print_cr("trap: null_check at " INTPTR_FORMAT " (SIGTRAP)", p2i(pc));
|
||||
}
|
||||
stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);
|
||||
}
|
||||
@ -335,7 +335,7 @@ JVM_handle_linux_signal(int sig,
|
||||
CodeCache::contains((void*) pc) &&
|
||||
!MacroAssembler::needs_explicit_null_check((intptr_t) info->si_addr)) {
|
||||
if (TraceTraps) {
|
||||
tty->print_cr("trap: null_check at " INTPTR_FORMAT " (SIGSEGV)", pc);
|
||||
tty->print_cr("trap: null_check at " INTPTR_FORMAT " (SIGSEGV)", p2i(pc));
|
||||
}
|
||||
stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);
|
||||
}
|
||||
@ -345,7 +345,7 @@ JVM_handle_linux_signal(int sig,
|
||||
else if (sig == SIGTRAP && TrapBasedRangeChecks &&
|
||||
nativeInstruction_at(pc)->is_sigtrap_range_check()) {
|
||||
if (TraceTraps) {
|
||||
tty->print_cr("trap: range_check at " INTPTR_FORMAT " (SIGTRAP)", pc);
|
||||
tty->print_cr("trap: range_check at " INTPTR_FORMAT " (SIGTRAP)", p2i(pc));
|
||||
}
|
||||
stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);
|
||||
}
|
||||
@ -572,7 +572,7 @@ void os::print_context(outputStream *st, void *context) {
|
||||
st->cr();
|
||||
|
||||
intptr_t *sp = (intptr_t *)os::Linux::ucontext_get_sp(uc);
|
||||
st->print_cr("Top of Stack: (sp=" PTR_FORMAT ")", sp);
|
||||
st->print_cr("Top of Stack: (sp=" PTR_FORMAT ")", p2i(sp));
|
||||
print_hex_dump(st, (address)sp, (address)(sp + 128), sizeof(intptr_t));
|
||||
st->cr();
|
||||
|
||||
@ -580,7 +580,7 @@ void os::print_context(outputStream *st, void *context) {
|
||||
// point to garbage if entry point in an nmethod is corrupted. Leave
|
||||
// this at the end, and hope for the best.
|
||||
address pc = os::Linux::ucontext_get_pc(uc);
|
||||
st->print_cr("Instructions: (pc=" PTR_FORMAT ")", pc);
|
||||
st->print_cr("Instructions: (pc=" PTR_FORMAT ")", p2i(pc));
|
||||
print_hex_dump(st, pc - 64, pc + 64, /*instrsize=*/4);
|
||||
st->cr();
|
||||
}
|
||||
|
@ -550,6 +550,7 @@ bool ClassLoaderData::contains_klass(Klass* klass) {
|
||||
// GC root of class loader data created.
|
||||
ClassLoaderData* ClassLoaderDataGraph::_head = NULL;
|
||||
ClassLoaderData* ClassLoaderDataGraph::_unloading = NULL;
|
||||
ClassLoaderData* ClassLoaderDataGraph::_saved_unloading = NULL;
|
||||
ClassLoaderData* ClassLoaderDataGraph::_saved_head = NULL;
|
||||
|
||||
bool ClassLoaderDataGraph::_should_purge = false;
|
||||
@ -657,7 +658,9 @@ void ClassLoaderDataGraph::loaded_classes_do(KlassClosure* klass_closure) {
|
||||
|
||||
void ClassLoaderDataGraph::classes_unloading_do(void f(Klass* const)) {
|
||||
assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint!");
|
||||
for (ClassLoaderData* cld = _unloading; cld != NULL; cld = cld->next()) {
|
||||
// Only walk the head until any clds not purged from prior unloading
|
||||
// (CMS doesn't purge right away).
|
||||
for (ClassLoaderData* cld = _unloading; cld != _saved_unloading; cld = cld->next()) {
|
||||
cld->classes_do(f);
|
||||
}
|
||||
}
|
||||
@ -705,6 +708,11 @@ bool ClassLoaderDataGraph::do_unloading(BoolObjectClosure* is_alive_closure) {
|
||||
ClassLoaderData* data = _head;
|
||||
ClassLoaderData* prev = NULL;
|
||||
bool seen_dead_loader = false;
|
||||
|
||||
// Save previous _unloading pointer for CMS which may add to unloading list before
|
||||
// purging and we don't want to rewalk the previously unloaded class loader data.
|
||||
_saved_unloading = _unloading;
|
||||
|
||||
// mark metadata seen on the stack and code cache so we can delete
|
||||
// unneeded entries.
|
||||
bool has_redefined_a_class = JvmtiExport::has_redefined_a_class();
|
||||
|
@ -66,6 +66,7 @@ class ClassLoaderDataGraph : public AllStatic {
|
||||
static ClassLoaderData* _unloading;
|
||||
// CMS support.
|
||||
static ClassLoaderData* _saved_head;
|
||||
static ClassLoaderData* _saved_unloading;
|
||||
static bool _should_purge;
|
||||
|
||||
static ClassLoaderData* add(Handle class_loader, bool anonymous, TRAPS);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -2783,11 +2783,11 @@ run:
|
||||
if (TraceExceptions) {
|
||||
ttyLocker ttyl;
|
||||
ResourceMark rm;
|
||||
tty->print_cr("Exception <%s> (" INTPTR_FORMAT ")", except_oop->print_value_string(), (void*)except_oop());
|
||||
tty->print_cr("Exception <%s> (" INTPTR_FORMAT ")", except_oop->print_value_string(), p2i(except_oop()));
|
||||
tty->print_cr(" thrown in interpreter method <%s>", METHOD->print_value_string());
|
||||
tty->print_cr(" at bci %d, continuing at %d for thread " INTPTR_FORMAT,
|
||||
istate->bcp() - (intptr_t)METHOD->code_base(),
|
||||
continuation_bci, THREAD);
|
||||
(int)(istate->bcp() - METHOD->code_base()),
|
||||
(int)continuation_bci, p2i(THREAD));
|
||||
}
|
||||
// for AbortVMOnException flag
|
||||
NOT_PRODUCT(Exceptions::debug_check_abort(except_oop));
|
||||
@ -2799,11 +2799,11 @@ run:
|
||||
if (TraceExceptions) {
|
||||
ttyLocker ttyl;
|
||||
ResourceMark rm;
|
||||
tty->print_cr("Exception <%s> (" INTPTR_FORMAT ")", except_oop->print_value_string(), (void*)except_oop());
|
||||
tty->print_cr("Exception <%s> (" INTPTR_FORMAT ")", except_oop->print_value_string(), p2i(except_oop()));
|
||||
tty->print_cr(" thrown in interpreter method <%s>", METHOD->print_value_string());
|
||||
tty->print_cr(" at bci %d, unwinding for thread " INTPTR_FORMAT,
|
||||
istate->bcp() - (intptr_t)METHOD->code_base(),
|
||||
THREAD);
|
||||
(int)(istate->bcp() - METHOD->code_base()),
|
||||
p2i(THREAD));
|
||||
}
|
||||
// for AbortVMOnException flag
|
||||
NOT_PRODUCT(Exceptions::debug_check_abort(except_oop));
|
||||
@ -3402,7 +3402,7 @@ BytecodeInterpreter::print() {
|
||||
tty->print_cr("osr._osr_buf: " INTPTR_FORMAT, (uintptr_t) this->_result._osr._osr_buf);
|
||||
tty->print_cr("osr._osr_entry: " INTPTR_FORMAT, (uintptr_t) this->_result._osr._osr_entry);
|
||||
tty->print_cr("prev_link: " INTPTR_FORMAT, (uintptr_t) this->_prev_link);
|
||||
tty->print_cr("native_mirror: " INTPTR_FORMAT, (void*) this->_oop_temp);
|
||||
tty->print_cr("native_mirror: " INTPTR_FORMAT, (uintptr_t) this->_oop_temp);
|
||||
tty->print_cr("stack_base: " INTPTR_FORMAT, (uintptr_t) this->_stack_base);
|
||||
tty->print_cr("stack_limit: " INTPTR_FORMAT, (uintptr_t) this->_stack_limit);
|
||||
tty->print_cr("monitor_base: " INTPTR_FORMAT, (uintptr_t) this->_monitor_base);
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright 2012, 2013 SAP AG. All rights reserved.
|
||||
* Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright 2012, 2014 SAP AG. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -86,11 +86,11 @@
|
||||
" \t-> " PTR_FORMAT "(%d)", \
|
||||
(int) THREAD->osthread()->thread_id(), \
|
||||
BCI(), \
|
||||
MDX(), \
|
||||
p2i(MDX()), \
|
||||
(MDX() == NULL \
|
||||
? 0 \
|
||||
: istate->method()->method_data()->dp_to_di((address)MDX())), \
|
||||
mdx, \
|
||||
p2i(mdx), \
|
||||
istate->method()->method_data()->dp_to_di((address)mdx) \
|
||||
); \
|
||||
}; \
|
||||
@ -107,7 +107,7 @@
|
||||
MethodData *md = istate->method()->method_data(); \
|
||||
tty->cr(); \
|
||||
tty->print("method data at mdx " PTR_FORMAT "(0) for", \
|
||||
md->data_layout_at(md->bci_to_di(0))); \
|
||||
p2i(md->data_layout_at(md->bci_to_di(0)))); \
|
||||
istate->method()->print_short_name(tty); \
|
||||
tty->cr(); \
|
||||
if (md != NULL) { \
|
||||
@ -115,7 +115,7 @@
|
||||
address mdx = (address) MDX(); \
|
||||
if (mdx != NULL) { \
|
||||
tty->print_cr("current mdx " PTR_FORMAT "(%d)", \
|
||||
mdx, \
|
||||
p2i(mdx), \
|
||||
istate->method()->method_data()->dp_to_di(mdx)); \
|
||||
} \
|
||||
} else { \
|
||||
|
@ -1358,14 +1358,24 @@ void WatcherThread::make_startable() {
|
||||
}
|
||||
|
||||
void WatcherThread::stop() {
|
||||
{
|
||||
MutexLockerEx ml(PeriodicTask_lock, Mutex::_no_safepoint_check_flag);
|
||||
_should_terminate = true;
|
||||
OrderAccess::fence(); // ensure WatcherThread sees update in main loop
|
||||
// Get the PeriodicTask_lock if we can. If we cannot, then the
|
||||
// WatcherThread is using it and we don't want to block on that lock
|
||||
// here because that might cause a safepoint deadlock depending on
|
||||
// what the current WatcherThread tasks are doing.
|
||||
bool have_lock = PeriodicTask_lock->try_lock();
|
||||
|
||||
_should_terminate = true;
|
||||
OrderAccess::fence(); // ensure WatcherThread sees update in main loop
|
||||
|
||||
if (have_lock) {
|
||||
WatcherThread* watcher = watcher_thread();
|
||||
if (watcher != NULL)
|
||||
if (watcher != NULL) {
|
||||
// If we managed to get the lock, then we should unpark the
|
||||
// WatcherThread so that it can see we want it to stop.
|
||||
watcher->unpark();
|
||||
}
|
||||
|
||||
PeriodicTask_lock->unlock();
|
||||
}
|
||||
|
||||
// it is ok to take late safepoints here, if needed
|
||||
|
@ -98,6 +98,7 @@ Now we can use the content + data type in declaring event fields.
|
||||
<value type="SYMBOL" field="name" label="Name"/>
|
||||
<value type="SYMBOL" field="signature" label="Signature"/>
|
||||
<value type="SHORT" field="modifiers" label="Access modifiers"/>
|
||||
<value type="BOOLEAN" field="hidden" label="Hidden"/>
|
||||
</content_type>
|
||||
|
||||
<content_type id="UTFConstant" hr_name="UTF constant"
|
||||
|
@ -26,6 +26,7 @@
|
||||
##
|
||||
## @test
|
||||
## @bug 8011675
|
||||
## @ignore 8032226, 8031978
|
||||
## @summary testing of ciReplay with using generated by SA replay.txt
|
||||
## @author igor.ignatyev@oracle.com
|
||||
## @run shell TestSA.sh
|
||||
|
@ -26,6 +26,7 @@
|
||||
##
|
||||
## @test
|
||||
## @bug 8011675
|
||||
## @ignore 8031978
|
||||
## @summary testing of ciReplay with using generated by VM replay.txt
|
||||
## @author igor.ignatyev@oracle.com
|
||||
## @run shell TestVM.sh
|
||||
|
@ -26,6 +26,7 @@
|
||||
##
|
||||
## @test
|
||||
## @bug 8011675
|
||||
## @ignore 8031978
|
||||
## @summary testing of ciReplay with using generated by VM replay.txt w/o comp_level
|
||||
## @author igor.ignatyev@oracle.com
|
||||
## @run shell TestVM_no_comp_level.sh
|
||||
|
@ -43,6 +43,7 @@ public class RangeCheck {
|
||||
true,
|
||||
"-Xmx32m",
|
||||
"-XX:-TransmitErrorReport",
|
||||
"-XX:-InlineUnsafeOps", // The compiler intrinsics doesn't have the assert
|
||||
DummyClassWithMainRangeCheck.class.getName());
|
||||
|
||||
OutputAnalyzer output = new OutputAnalyzer(pb.start());
|
||||
|
Loading…
Reference in New Issue
Block a user