Mercurial > hg > graal-jvmci-8
comparison src/cpu/x86/vm/stubGenerator_x86_32.cpp @ 1368:93767e6a2dfd
6941529: SharedRuntime::raw_exception_handler_for_return_address must reset thread MethodHandle flag
Summary: During testing a bug was hit when an exception returned to the interpreter and the SP was wrong.
Reviewed-by: kvn, never
author | twisti |
---|---|
date | Thu, 08 Apr 2010 10:55:40 +0200 |
parents | 6476042f815c |
children | 2338d41fbd81 |
comparison
equal
deleted
inserted
replaced
1367:9e321dcfa5b7 | 1368:93767e6a2dfd |
---|---|
428 | 428 |
429 // Verify that there is really a valid exception in RAX. | 429 // Verify that there is really a valid exception in RAX. |
430 __ verify_oop(exception_oop); | 430 __ verify_oop(exception_oop); |
431 | 431 |
432 // Restore SP from BP if the exception PC is a MethodHandle call site. | 432 // Restore SP from BP if the exception PC is a MethodHandle call site. |
433 __ cmpl(Address(thread, JavaThread::is_method_handle_exception_offset()), 0); | 433 __ cmpl(Address(thread, JavaThread::is_method_handle_return_offset()), 0); |
434 __ cmovptr(Assembler::notEqual, rsp, rbp); | 434 __ cmovptr(Assembler::notEqual, rsp, rbp); |
435 | 435 |
436 // continue at exception handler (return address removed) | 436 // continue at exception handler (return address removed) |
437 // rax: exception | 437 // rax: exception |
438 // rbx: exception handler | 438 // rbx: exception handler |