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");