Mercurial > hg > truffle
diff src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp @ 1201:24128c2ffa87
6921339: backout 6917766
Reviewed-by: mr
author | twisti |
---|---|
date | Fri, 29 Jan 2010 08:33:24 -0800 |
parents | ba263cfb7611 |
children | 18a389214829 |
line wrap: on
line diff
--- a/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp Fri Jan 29 12:13:05 2010 +0100 +++ b/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp Fri Jan 29 08:33:24 2010 -0800 @@ -1,5 +1,5 @@ /* - * Copyright 2000-2010 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -357,7 +357,7 @@ } -int LIR_Assembler::emit_exception_handler() { +void LIR_Assembler::emit_exception_handler() { // if the last instruction is a call (typically to do a throw which // is coming at the end after block reordering) the return address // must still point into the code area in order to avoid assertion @@ -373,10 +373,13 @@ if (handler_base == NULL) { // not enough space left for the handler bailout("exception handler overflow"); - return -1; + return; } - +#ifdef ASSERT int offset = code_offset(); +#endif // ASSERT + compilation()->offsets()->set_value(CodeOffsets::Exceptions, code_offset()); + if (compilation()->has_exception_handlers() || compilation()->env()->jvmti_can_post_exceptions()) { __ call(Runtime1::entry_for(Runtime1::handle_exception_id), relocInfo::runtime_call_type); @@ -387,13 +390,11 @@ __ delayed()->nop(); debug_only(__ stop("should have gone to the caller");) assert(code_offset() - offset <= exception_handler_size, "overflow"); + __ end_a_stub(); - - return offset; } - -int LIR_Assembler::emit_deopt_handler() { +void LIR_Assembler::emit_deopt_handler() { // if the last instruction is a call (typically to do a throw which // is coming at the end after block reordering) the return address // must still point into the code area in order to avoid assertion @@ -407,18 +408,23 @@ if (handler_base == NULL) { // not enough space left for the handler bailout("deopt handler overflow"); - return -1; + return; } - +#ifdef ASSERT int offset = code_offset(); +#endif // ASSERT + compilation()->offsets()->set_value(CodeOffsets::Deopt, code_offset()); + AddressLiteral deopt_blob(SharedRuntime::deopt_blob()->unpack()); + __ JUMP(deopt_blob, G3_scratch, 0); // sethi;jmp __ delayed()->nop(); + assert(code_offset() - offset <= deopt_handler_size, "overflow"); + debug_only(__ stop("should have gone to the caller");) + __ end_a_stub(); - - return offset; }