Mercurial > hg > graal-compiler
comparison agent/src/share/classes/sun/jvm/hotspot/runtime/x86/X86Frame.java @ 6266:1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
6984705: JSR 292 method handle creation should not go through JNI
Summary: remove assembly code for JDK 7 chained method handles
Reviewed-by: jrose, twisti, kvn, mhaupt
Contributed-by: John Rose <john.r.rose@oracle.com>, Christian Thalinger <christian.thalinger@oracle.com>, Michael Haupt <michael.haupt@oracle.com>
author | twisti |
---|---|
date | Tue, 24 Jul 2012 10:51:00 -0700 |
parents | 7588156f5cf9 |
children | da91efe96a93 |
comparison
equal
deleted
inserted
replaced
6241:aba91a731143 | 6266:1d7922586cf6 |
---|---|
267 // update it accordingly | 267 // update it accordingly |
268 map.setIncludeArgumentOops(false); | 268 map.setIncludeArgumentOops(false); |
269 | 269 |
270 if (isEntryFrame()) return senderForEntryFrame(map); | 270 if (isEntryFrame()) return senderForEntryFrame(map); |
271 if (isInterpretedFrame()) return senderForInterpreterFrame(map); | 271 if (isInterpretedFrame()) return senderForInterpreterFrame(map); |
272 if (isRicochetFrame()) return senderForRicochetFrame(map); | |
273 | 272 |
274 if(cb == null) { | 273 if(cb == null) { |
275 cb = VM.getVM().getCodeCache().findBlob(getPC()); | 274 cb = VM.getVM().getCodeCache().findBlob(getPC()); |
276 } else { | 275 } else { |
277 if (Assert.ASSERTS_ENABLED) { | 276 if (Assert.ASSERTS_ENABLED) { |
284 } | 283 } |
285 | 284 |
286 // Must be native-compiled frame, i.e. the marshaling code for native | 285 // Must be native-compiled frame, i.e. the marshaling code for native |
287 // methods that exists in the core system. | 286 // methods that exists in the core system. |
288 return new X86Frame(getSenderSP(), getLink(), getSenderPC()); | 287 return new X86Frame(getSenderSP(), getLink(), getSenderPC()); |
289 } | |
290 | |
291 private Frame senderForRicochetFrame(X86RegisterMap map) { | |
292 if (DEBUG) { | |
293 System.out.println("senderForRicochetFrame"); | |
294 } | |
295 X86RicochetFrame f = X86RicochetFrame.fromFrame(this); | |
296 if (map.getUpdateMap()) | |
297 updateMapWithSavedLink(map, f.senderLinkAddress()); | |
298 return new X86Frame(f.extendedSenderSP(), f.exactSenderSP(), f.senderLink(), f.senderPC()); | |
299 } | 288 } |
300 | 289 |
301 private Frame senderForEntryFrame(X86RegisterMap map) { | 290 private Frame senderForEntryFrame(X86RegisterMap map) { |
302 if (DEBUG) { | 291 if (DEBUG) { |
303 System.out.println("senderForEntryFrame"); | 292 System.out.println("senderForEntryFrame"); |