comparison src/share/vm/opto/output.cpp @ 1204:18a389214829

6921352: JSR 292 needs its own deopt handler Summary: We need to introduce a new MH deopt handler so we can easily determine if the deopt happened at a MH call site or not. Reviewed-by: never, jrose
author twisti
date Mon, 01 Feb 2010 19:29:46 +0100
parents 5f24d0319e54
children f70b0d9ab095
comparison
equal deleted inserted replaced
1203:844a9d73ec22 1204:18a389214829
1 /* 1 /*
2 * Copyright 1998-2009 Sun Microsystems, Inc. All Rights Reserved. 2 * Copyright 1998-2010 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
1428 if (_method) { 1428 if (_method) {
1429 // Emit the exception handler code. 1429 // Emit the exception handler code.
1430 _code_offsets.set_value(CodeOffsets::Exceptions, emit_exception_handler(*cb)); 1430 _code_offsets.set_value(CodeOffsets::Exceptions, emit_exception_handler(*cb));
1431 // Emit the deopt handler code. 1431 // Emit the deopt handler code.
1432 _code_offsets.set_value(CodeOffsets::Deopt, emit_deopt_handler(*cb)); 1432 _code_offsets.set_value(CodeOffsets::Deopt, emit_deopt_handler(*cb));
1433 // Emit the MethodHandle deopt handler code. We can use the same
1434 // code as for the normal deopt handler, we just need a different
1435 // entry point address.
1436 _code_offsets.set_value(CodeOffsets::DeoptMH, emit_deopt_handler(*cb));
1433 } 1437 }
1434 1438
1435 // One last check for failed CodeBuffer::expand: 1439 // One last check for failed CodeBuffer::expand:
1436 if ((cb->blob() == NULL) || (!CompileBroker::should_compile_new_jobs())) { 1440 if ((cb->blob() == NULL) || (!CompileBroker::should_compile_new_jobs())) {
1437 turn_off_compiler(this); 1441 turn_off_compiler(this);