|
Quick Lists
|
|
Bug ID:
|
6767587
|
|
Votes
|
0
|
|
Synopsis
|
missing call to make_not_entrant after deoptimizing for patching volatiles
|
|
Category
|
hotspot:compiler1
|
|
Reported Against
|
|
|
Release Fixed
|
hs14(b09),
hs11(b17) (Bug ID:2169326)
, 6u12(b01) (Bug ID:2170222)
, 7(b42) (Bug ID:2172403)
|
|
State
|
10-Fix Delivered,
bug
|
|
Priority:
|
3-Medium
|
|
Related Bugs
|
6414800
|
|
Submit Date
|
05-NOV-2008
|
|
Description
|
Hi Tom,
One question regarding deoptimization and C1: the StoreField and
LoadField code relies on deoptimization in case a load/store cannot be
determined to be volatile at compile time.
In the c1 runtime patch_code method, a VM_DeoptimizeFrame vm operation
is executed. What is puzzling me, is that when I follow the code of this
vm operation I don't find where the nmethod is made not entrant so that
the method will eventually be recompiled.
Indeed when I run this simple test:
public class TestDeopt {
static class A {
volatile int i;
}
static void m() {
A a = new A();
a.i = 0;
}
static public void main(String[] args) {
m();
m();
m();
}
}
With:
-client -Xcomp -XX:+PrintCompilation -XX:-Inline -XX:+TracePatching -XX:+TraceDeoptimization
I see the m method being compiled once but I see 3 "Deoptimizing for
patching volatile field reference" which proves that the compiled code
is not dropped.
Am I missing something?
Thanks,
Roland.
Posted Date : 2008-11-05 00:10:36.0
|
|
Work Around
|
N/A
|
|
Evaluation
|
The fix for 6414800 is missing a call to make_not_entrant
Posted Date : 2008-11-05 00:11:37.0
http://hg.openjdk.java.net/jdk7/hotspot/hotspot/rev/ac8fe14c93e4
Posted Date : 2008-12-13 09:19:19.0
|
|
Comments
|
PLEASE NOTE: JDK6 is formerly known as Project Mustang
|
|
|
 |