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) ) {