Mercurial > hg > truffle
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); |