equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2019, 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. |
587 vframeArrayElement* elem = element(index); // caller |
587 vframeArrayElement* elem = element(index); // caller |
588 int callee_parameters, callee_locals; |
588 int callee_parameters, callee_locals; |
589 if (index == 0) { |
589 if (index == 0) { |
590 callee_parameters = callee_locals = 0; |
590 callee_parameters = callee_locals = 0; |
591 } else { |
591 } else { |
592 methodHandle caller = elem->method(); |
592 methodHandle caller(THREAD, elem->method()); |
593 methodHandle callee = element(index - 1)->method(); |
593 methodHandle callee(THREAD, element(index - 1)->method()); |
594 Bytecode_invoke inv(caller, elem->bci()); |
594 Bytecode_invoke inv(caller, elem->bci()); |
595 // invokedynamic instructions don't have a class but obviously don't have a MemberName appendix. |
595 // invokedynamic instructions don't have a class but obviously don't have a MemberName appendix. |
596 // NOTE: Use machinery here that avoids resolving of any kind. |
596 // NOTE: Use machinery here that avoids resolving of any kind. |
597 const bool has_member_arg = |
597 const bool has_member_arg = |
598 !inv.is_invokedynamic() && MethodHandles::has_member_arg(inv.klass(), inv.name()); |
598 !inv.is_invokedynamic() && MethodHandles::has_member_arg(inv.klass(), inv.name()); |