JDK-6463133 : Deoptimization should not use code patching
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 6
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2006-08-23
  • Updated: 2010-04-02
  • Resolved: 2007-01-17
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6 JDK 7 Other
6u4Fixed 7Fixed hs10Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Description
Deoptimization is susceptible to failure because it uses cross code patching. At the moment we know of no cpu's where this fails but we may well be running out of time. Newer Intel processors have an errata which isn't planned to be fixed that hints that we could fail.

We should use a deopt scheme that uses return address patching instead. This also allows us to go to single frame deopt. a capability we lost when lazy deopt was implemented.

Comments
EVALUATION From the putback comment: This converts deoptimization to no longer do patching of code and now only patches return address. This made a rather large change to the frame object so that now a frame always carries along the codeBlob it refers to if it in fact does refer to a codeBlob. This removes lots of redundant CodeCache::find_blob calls. The testing of this fix which obviously changes the way frames look on the stack discovered that both SA and pstack support have been broken. pstack support has been been broken for years.
17-01-2007