mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 19:14:38 +02:00
7010913: JSR 292 ciMethodHandle does not handle MethodHandleCompiler exceptions properly
Reviewed-by: kvn, never
This commit is contained in:
parent
b2f607fcb6
commit
595eda12a4
2 changed files with 6 additions and 6 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -38,11 +38,12 @@
|
||||||
// Return an adapter for this MethodHandle.
|
// Return an adapter for this MethodHandle.
|
||||||
ciMethod* ciMethodHandle::get_adapter(bool is_invokedynamic) const {
|
ciMethod* ciMethodHandle::get_adapter(bool is_invokedynamic) const {
|
||||||
VM_ENTRY_MARK;
|
VM_ENTRY_MARK;
|
||||||
|
|
||||||
Handle h(get_oop());
|
Handle h(get_oop());
|
||||||
methodHandle callee(_callee->get_methodOop());
|
methodHandle callee(_callee->get_methodOop());
|
||||||
MethodHandleCompiler mhc(h, callee, is_invokedynamic, THREAD);
|
// We catch all exceptions here that could happen in the method
|
||||||
methodHandle m = mhc.compile(CHECK_NULL);
|
// handle compiler and stop the VM.
|
||||||
|
MethodHandleCompiler mhc(h, callee, is_invokedynamic, CATCH);
|
||||||
|
methodHandle m = mhc.compile(CATCH);
|
||||||
return CURRENT_ENV->get_object(m())->as_method();
|
return CURRENT_ENV->get_object(m())->as_method();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -137,7 +137,6 @@ BasicType MethodHandleChain::compute_bound_arg_type(oop target, methodOop m, int
|
||||||
|
|
||||||
|
|
||||||
void MethodHandleChain::lose(const char* msg, TRAPS) {
|
void MethodHandleChain::lose(const char* msg, TRAPS) {
|
||||||
assert(false, "lose");
|
|
||||||
_lose_message = msg;
|
_lose_message = msg;
|
||||||
if (!THREAD->is_Java_thread() || ((JavaThread*)THREAD)->thread_state() != _thread_in_vm) {
|
if (!THREAD->is_Java_thread() || ((JavaThread*)THREAD)->thread_state() != _thread_in_vm) {
|
||||||
// throw a preallocated exception
|
// throw a preallocated exception
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue