Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
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
  
  Include a link with my name & email   


PLEASE NOTE: JDK6 is formerly known as Project Mustang