--- a/hotspot/src/share/vm/oops/method.cpp Tue Mar 10 19:56:19 2015 -0700
+++ b/hotspot/src/share/vm/oops/method.cpp Fri Mar 13 12:40:39 2015 -0400
@@ -1970,9 +1970,10 @@
// on stack means some method referring to it is also on the stack.
constants()->set_on_stack(value);
- bool succeeded = _access_flags.set_on_stack(value);
- if (value && succeeded) {
- MetadataOnStackMark::record(this, Thread::current());
+ bool already_set = on_stack();
+ _access_flags.set_on_stack(value);
+ if (value && !already_set) {
+ MetadataOnStackMark::record(this);
}
}