Mercurial > hg > icedtea8-forest > hotspot
changeset 9482:00b7bbd261c9 icedtea-3.4.0
8168699, PR3372: Validate special case invocations [AArch64 support]
author | aph |
---|---|
date | Tue, 18 Apr 2017 13:07:42 -0300 |
parents | d1ceb6c6cca9 |
children | d77ea5a8ca52 |
files | src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp |
diffstat | 1 files changed, 6 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp Tue Apr 04 14:59:08 2017 +0000 +++ b/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp Tue Apr 18 13:07:42 2017 -0300 @@ -1224,12 +1224,17 @@ obj.load_item(); // info for exceptions - CodeEmitInfo* info_for_exception = state_for(x); + CodeEmitInfo* info_for_exception = + (x->needs_exception_state() ? state_for(x) : + state_for(x, x->state_before(), true /*ignore_xhandler*/)); CodeStub* stub; if (x->is_incompatible_class_change_check()) { assert(patching_info == NULL, "can't patch this"); stub = new SimpleExceptionStub(Runtime1::throw_incompatible_class_change_error_id, LIR_OprFact::illegalOpr, info_for_exception); + } else if (x->is_invokespecial_receiver_check()) { + assert(patching_info == NULL, "can't patch this"); + stub = new DeoptimizeStub(info_for_exception); } else { stub = new SimpleExceptionStub(Runtime1::throw_class_cast_exception_id, obj.result(), info_for_exception); }