1 /* |
1 /* |
2 * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. 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. |
988 ShouldNotReachHere(); |
988 ShouldNotReachHere(); |
989 } |
989 } |
990 BLOCK_COMMENT("} move_return_value"); |
990 BLOCK_COMMENT("} move_return_value"); |
991 } |
991 } |
992 |
992 |
|
993 #ifdef ASSERT |
|
994 #define DESCRIBE_RICOCHET_OFFSET(rf, name) \ |
|
995 values.describe(frame_no, (intptr_t *) (((uintptr_t)rf) + MethodHandles::RicochetFrame::name##_offset_in_bytes()), #name) |
|
996 |
|
997 void MethodHandles::RicochetFrame::describe(const frame* fr, FrameValues& values, int frame_no) { |
|
998 address bp = (address) fr->fp(); |
|
999 RicochetFrame* rf = (RicochetFrame*)(bp - sender_link_offset_in_bytes()); |
|
1000 |
|
1001 // ricochet slots |
|
1002 DESCRIBE_RICOCHET_OFFSET(rf, exact_sender_sp); |
|
1003 DESCRIBE_RICOCHET_OFFSET(rf, conversion); |
|
1004 DESCRIBE_RICOCHET_OFFSET(rf, saved_args_base); |
|
1005 DESCRIBE_RICOCHET_OFFSET(rf, saved_args_layout); |
|
1006 DESCRIBE_RICOCHET_OFFSET(rf, saved_target); |
|
1007 DESCRIBE_RICOCHET_OFFSET(rf, continuation); |
|
1008 |
|
1009 // relevant ricochet targets (in caller frame) |
|
1010 values.describe(-1, rf->saved_args_base(), err_msg("*saved_args_base for #%d", frame_no)); |
|
1011 } |
|
1012 #endif // ASSERT |
993 |
1013 |
994 #ifndef PRODUCT |
1014 #ifndef PRODUCT |
995 extern "C" void print_method_handle(oop mh); |
1015 extern "C" void print_method_handle(oop mh); |
996 void trace_method_handle_stub(const char* adaptername, |
1016 void trace_method_handle_stub(const char* adaptername, |
997 oop mh, |
1017 oop mh, |