Mercurial > hg > truffle
comparison src/cpu/sparc/vm/sharedRuntime_sparc.cpp @ 16307:2395c0fc5a19
Added lookup for Gaals JavaThread::graal_alternate_call_target_offset() in the i2c.
author | Stefan Anzinger <stefan.anzinger@gmail.com> |
---|---|
date | Thu, 24 Apr 2014 07:41:56 +0200 |
parents | 4062efea018b |
children | 51f392557124 |
comparison
equal
deleted
inserted
replaced
16306:21c3c233e81a | 16307:2395c0fc5a19 |
---|---|
988 } | 988 } |
989 } | 989 } |
990 | 990 |
991 // Jump to the compiled code just as if compiled code was doing it. | 991 // Jump to the compiled code just as if compiled code was doing it. |
992 __ ld_ptr(G5_method, in_bytes(Method::from_compiled_offset()), G3); | 992 __ ld_ptr(G5_method, in_bytes(Method::from_compiled_offset()), G3); |
993 #ifdef GRAAL | |
994 // check if this call should be routed towards a specific entry point | |
995 __ ld(Address(G2_thread, in_bytes(JavaThread::graal_alternate_call_target_offset())), G1); | |
996 __ cmp(G0, G1); | |
997 Label no_alternative_target; | |
998 __ br(Assembler::equal, false, Assembler::pn, no_alternative_target); | |
999 __ delayed()->nop(); | |
1000 | |
1001 __ ld_ptr(G2_thread, in_bytes(JavaThread::graal_alternate_call_target_offset()), G3); | |
1002 __ st(G0, Address(G2_thread, in_bytes(JavaThread::graal_alternate_call_target_offset()))); | |
1003 | |
1004 __ bind(no_alternative_target); | |
1005 #endif | |
993 | 1006 |
994 // 6243940 We might end up in handle_wrong_method if | 1007 // 6243940 We might end up in handle_wrong_method if |
995 // the callee is deoptimized as we race thru here. If that | 1008 // the callee is deoptimized as we race thru here. If that |
996 // happens we don't want to take a safepoint because the | 1009 // happens we don't want to take a safepoint because the |
997 // caller frame will look interpreted and arguments are now | 1010 // caller frame will look interpreted and arguments are now |