src/hotspot/share/runtime/vframeArray.cpp
changeset 59056 15936b142f86
parent 54786 ebf733a324d4
equal deleted inserted replaced
59055:57ad70bcf06c 59056:15936b142f86
     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());