Mercurial > hg > truffle
comparison src/share/vm/opto/bytecodeInfo.cpp @ 1579:e9ff18c4ace7
Merge
author | jrose |
---|---|
date | Wed, 02 Jun 2010 22:45:42 -0700 |
parents | c18cbe5936b8 ab102d5d923e |
children | d5d065957597 |
comparison
equal
deleted
inserted
replaced
1562:dfe27f03244a | 1579:e9ff18c4ace7 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 1998, 2010, 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. |
186 } | 186 } |
187 | 187 |
188 return NULL; | 188 return NULL; |
189 } | 189 } |
190 | 190 |
191 // Always inline MethodHandle methods. | 191 // Always inline MethodHandle methods and generated MethodHandle adapters. |
192 if (callee_method->is_method_handle_invoke()) | 192 if (callee_method->is_method_handle_invoke() || callee_method->is_method_handle_adapter()) |
193 return NULL; | 193 return NULL; |
194 | 194 |
195 // First check all inlining restrictions which are required for correctness | 195 // First check all inlining restrictions which are required for correctness |
196 if (callee_method->is_abstract()) return "abstract method"; | 196 if (callee_method->is_abstract()) return "abstract method"; |
197 // note: we allow ik->is_abstract() | 197 // note: we allow ik->is_abstract() |
338 ciBytecodeStream iter(caller_method); | 338 ciBytecodeStream iter(caller_method); |
339 iter.force_bci(caller_bci); | 339 iter.force_bci(caller_bci); |
340 Bytecodes::Code call_bc = iter.cur_bc(); | 340 Bytecodes::Code call_bc = iter.cur_bc(); |
341 // An invokedynamic instruction does not have a klass. | 341 // An invokedynamic instruction does not have a klass. |
342 if (call_bc != Bytecodes::_invokedynamic) { | 342 if (call_bc != Bytecodes::_invokedynamic) { |
343 int index = iter.get_index_int(); | 343 int index = iter.get_index_u2_cpcache(); |
344 if (!caller_method->is_klass_loaded(index, true)) { | 344 if (!caller_method->is_klass_loaded(index, true)) { |
345 return false; | 345 return false; |
346 } | 346 } |
347 // Try to do constant pool resolution if running Xcomp | 347 // Try to do constant pool resolution if running Xcomp |
348 if( !caller_method->check_call(index, call_bc == Bytecodes::_invokestatic) ) { | 348 if( !caller_method->check_call(index, call_bc == Bytecodes::_invokestatic) ) { |