提交 8df4c2b0 编写于 作者: A amurillo

Merge

...@@ -46,6 +46,11 @@ public abstract class ActionManager ...@@ -46,6 +46,11 @@ public abstract class ActionManager
return manager; return manager;
} }
protected static void setInstance(ActionManager m)
{
manager = m;
}
protected abstract void addActions(); protected abstract void addActions();
protected void addAction(String cmdname, Action action) protected void addAction(String cmdname, Action action)
...@@ -90,6 +95,6 @@ public abstract class ActionManager ...@@ -90,6 +95,6 @@ public abstract class ActionManager
private HashMap actions; private HashMap actions;
private static ActionUtilities utilities = new ActionUtilities(); private static ActionUtilities utilities = new ActionUtilities();
protected static ActionManager manager; private static ActionManager manager;
} }
...@@ -32,10 +32,12 @@ import com.sun.java.swing.action.ActionManager; ...@@ -32,10 +32,12 @@ import com.sun.java.swing.action.ActionManager;
public class HSDBActionManager extends ActionManager { public class HSDBActionManager extends ActionManager {
public static ActionManager getInstance() { public static ActionManager getInstance() {
if (manager == null) { ActionManager m = ActionManager.getInstance();
manager = new HSDBActionManager(); if (m == null) {
m = new HSDBActionManager();
ActionManager.setInstance(m);
} }
return manager; return m;
} }
protected void addActions() { protected void addActions() {
......
...@@ -35,7 +35,7 @@ HOTSPOT_VM_COPYRIGHT=Copyright 2015 ...@@ -35,7 +35,7 @@ HOTSPOT_VM_COPYRIGHT=Copyright 2015
HS_MAJOR_VER=25 HS_MAJOR_VER=25
HS_MINOR_VER=60 HS_MINOR_VER=60
HS_BUILD_NUMBER=09 HS_BUILD_NUMBER=10
JDK_MAJOR_VER=1 JDK_MAJOR_VER=1
JDK_MINOR_VER=8 JDK_MINOR_VER=8
......
...@@ -730,7 +730,7 @@ InterpreterFrame *InterpreterFrame::build(Method* const method, TRAPS) { ...@@ -730,7 +730,7 @@ InterpreterFrame *InterpreterFrame::build(Method* const method, TRAPS) {
if (method->is_static()) if (method->is_static())
object = method->constants()->pool_holder()->java_mirror(); object = method->constants()->pool_holder()->java_mirror();
else else
object = (oop) locals[0]; object = (oop) (void*)locals[0];
monitor->set_obj(object); monitor->set_obj(object);
} }
......
...@@ -26,6 +26,8 @@ ...@@ -26,6 +26,8 @@
#ifndef CPU_ZERO_VM_FRAME_ZERO_INLINE_HPP #ifndef CPU_ZERO_VM_FRAME_ZERO_INLINE_HPP
#define CPU_ZERO_VM_FRAME_ZERO_INLINE_HPP #define CPU_ZERO_VM_FRAME_ZERO_INLINE_HPP
#include "code/codeCache.hpp"
// Constructors // Constructors
inline frame::frame() { inline frame::frame() {
......
...@@ -6017,56 +6017,68 @@ void G1CollectedHeap::check_bitmaps(const char* caller) { ...@@ -6017,56 +6017,68 @@ void G1CollectedHeap::check_bitmaps(const char* caller) {
guarantee(!cl.failures(), "bitmap verification"); guarantee(!cl.failures(), "bitmap verification");
} }
bool G1CollectedHeap::check_cset_fast_test() { class G1CheckCSetFastTableClosure : public HeapRegionClosure {
bool failures = false; private:
for (uint i = 0; i < _hrm.length(); i += 1) { bool _failures;
HeapRegion* hr = _hrm.at(i); public:
InCSetState cset_state = (InCSetState) _in_cset_fast_test.get_by_index((uint) i); G1CheckCSetFastTableClosure() : HeapRegionClosure(), _failures(false) { }
virtual bool doHeapRegion(HeapRegion* hr) {
uint i = hr->hrm_index();
InCSetState cset_state = (InCSetState) G1CollectedHeap::heap()->_in_cset_fast_test.get_by_index(i);
if (hr->isHumongous()) { if (hr->isHumongous()) {
if (hr->in_collection_set()) { if (hr->in_collection_set()) {
gclog_or_tty->print_cr("\n## humongous region %u in CSet", i); gclog_or_tty->print_cr("\n## humongous region %u in CSet", i);
failures = true; _failures = true;
break; return true;
} }
if (cset_state.is_in_cset()) { if (cset_state.is_in_cset()) {
gclog_or_tty->print_cr("\n## inconsistent cset state %d for humongous region %u", cset_state.value(), i); gclog_or_tty->print_cr("\n## inconsistent cset state %d for humongous region %u", cset_state.value(), i);
failures = true; _failures = true;
break; return true;
} }
if (hr->continuesHumongous() && cset_state.is_humongous()) { if (hr->continuesHumongous() && cset_state.is_humongous()) {
gclog_or_tty->print_cr("\n## inconsistent cset state %d for continues humongous region %u", cset_state.value(), i); gclog_or_tty->print_cr("\n## inconsistent cset state %d for continues humongous region %u", cset_state.value(), i);
failures = true; _failures = true;
break; return true;
} }
} else { } else {
if (cset_state.is_humongous()) { if (cset_state.is_humongous()) {
gclog_or_tty->print_cr("\n## inconsistent cset state %d for non-humongous region %u", cset_state.value(), i); gclog_or_tty->print_cr("\n## inconsistent cset state %d for non-humongous region %u", cset_state.value(), i);
failures = true; _failures = true;
break; return true;
} }
if (hr->in_collection_set() != cset_state.is_in_cset()) { if (hr->in_collection_set() != cset_state.is_in_cset()) {
gclog_or_tty->print_cr("\n## in CSet %d / cset state %d inconsistency for region %u", gclog_or_tty->print_cr("\n## in CSet %d / cset state %d inconsistency for region %u",
hr->in_collection_set(), cset_state.value(), i); hr->in_collection_set(), cset_state.value(), i);
failures = true; _failures = true;
break; return true;
} }
if (cset_state.is_in_cset()) { if (cset_state.is_in_cset()) {
if (hr->is_young() != (cset_state.is_young())) { if (hr->is_young() != (cset_state.is_young())) {
gclog_or_tty->print_cr("\n## is_young %d / cset state %d inconsistency for region %u", gclog_or_tty->print_cr("\n## is_young %d / cset state %d inconsistency for region %u",
hr->is_young(), cset_state.value(), i); hr->is_young(), cset_state.value(), i);
failures = true; _failures = true;
break; return true;
} }
if (hr->is_old() != (cset_state.is_old())) { if (hr->is_old() != (cset_state.is_old())) {
gclog_or_tty->print_cr("\n## is_old %d / cset state %d inconsistency for region %u", gclog_or_tty->print_cr("\n## is_old %d / cset state %d inconsistency for region %u",
hr->is_old(), cset_state.value(), i); hr->is_old(), cset_state.value(), i);
failures = true; _failures = true;
break; return true;
} }
} }
} }
return false;
} }
return !failures;
bool failures() const { return _failures; }
};
bool G1CollectedHeap::check_cset_fast_test() {
G1CheckCSetFastTableClosure cl;
_hrm.iterate(&cl);
return !cl.failures();
} }
#endif // PRODUCT #endif // PRODUCT
......
...@@ -213,6 +213,9 @@ class G1CollectedHeap : public SharedHeap { ...@@ -213,6 +213,9 @@ class G1CollectedHeap : public SharedHeap {
// Other related classes. // Other related classes.
friend class G1MarkSweep; friend class G1MarkSweep;
// Testing classes.
friend class G1CheckCSetFastTableClosure;
private: private:
// The one and only G1CollectedHeap, so static functions can find it. // The one and only G1CollectedHeap, so static functions can find it.
static G1CollectedHeap* _g1h; static G1CollectedHeap* _g1h;
......
...@@ -3432,7 +3432,7 @@ BytecodeInterpreter::print() { ...@@ -3432,7 +3432,7 @@ BytecodeInterpreter::print() {
tty->print_cr("osr._osr_buf: " INTPTR_FORMAT, (uintptr_t) this->_result._osr._osr_buf); 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("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("prev_link: " INTPTR_FORMAT, (uintptr_t) this->_prev_link);
tty->print_cr("native_mirror: " INTPTR_FORMAT, (uintptr_t) this->_oop_temp); tty->print_cr("native_mirror: " INTPTR_FORMAT, (uintptr_t) p2i(this->_oop_temp));
tty->print_cr("stack_base: " INTPTR_FORMAT, (uintptr_t) this->_stack_base); 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("stack_limit: " INTPTR_FORMAT, (uintptr_t) this->_stack_limit);
tty->print_cr("monitor_base: " INTPTR_FORMAT, (uintptr_t) this->_monitor_base); tty->print_cr("monitor_base: " INTPTR_FORMAT, (uintptr_t) this->_monitor_base);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册