1/*
2 * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
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
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25#include "precompiled.hpp"
26#include "classfile/metadataOnStackMark.hpp"
27#include "classfile/systemDictionary.hpp"
28#include "code/codeCache.hpp"
29#include "code/debugInfoRec.hpp"
30#include "gc/shared/collectedHeap.inline.hpp"
31#include "gc/shared/gcLocker.hpp"
32#include "gc/shared/generation.hpp"
33#include "interpreter/bytecodeStream.hpp"
34#include "interpreter/bytecodeTracer.hpp"
35#include "interpreter/bytecodes.hpp"
36#include "interpreter/interpreter.hpp"
37#include "interpreter/oopMapCache.hpp"
38#include "memory/heapInspection.hpp"
39#include "memory/metadataFactory.hpp"
40#include "memory/metaspaceClosure.hpp"
41#include "memory/metaspaceShared.hpp"
42#include "memory/oopFactory.hpp"
43#include "memory/resourceArea.hpp"
44#include "oops/constMethod.hpp"
45#include "oops/method.hpp"
46#include "oops/methodData.hpp"
47#include "oops/objArrayOop.inline.hpp"
48#include "oops/oop.inline.hpp"
49#include "oops/symbol.hpp"
50#include "prims/jvmtiExport.hpp"
51#include "prims/methodHandles.hpp"
52#include "prims/nativeLookup.hpp"
53#include "runtime/arguments.hpp"
54#include "runtime/compilationPolicy.hpp"
55#include "runtime/frame.inline.hpp"
56#include "runtime/handles.inline.hpp"
57#include "runtime/init.hpp"
58#include "runtime/orderAccess.inline.hpp"
59#include "runtime/relocator.hpp"
60#include "runtime/sharedRuntime.hpp"
61#include "runtime/signature.hpp"
62#include "utilities/align.hpp"
63#include "utilities/quickSort.hpp"
64#include "utilities/vmError.hpp"
65#include "utilities/xmlstream.hpp"
66
67// Implementation of Method
68
69Method* Method::allocate(ClassLoaderData* loader_data,
70                         int byte_code_size,
71                         AccessFlags access_flags,
72                         InlineTableSizes* sizes,
73                         ConstMethod::MethodType method_type,
74                         TRAPS) {
75  assert(!access_flags.is_native() || byte_code_size == 0,
76         "native methods should not contain byte codes");
77  ConstMethod* cm = ConstMethod::allocate(loader_data,
78                                          byte_code_size,
79                                          sizes,
80                                          method_type,
81                                          CHECK_NULL);
82  int size = Method::size(access_flags.is_native());
83  return new (loader_data, size, MetaspaceObj::MethodType, THREAD) Method(cm, access_flags);
84}
85
86Method::Method(ConstMethod* xconst, AccessFlags access_flags) {
87  NoSafepointVerifier no_safepoint;
88  set_constMethod(xconst);
89  set_access_flags(access_flags);
90  set_intrinsic_id(vmIntrinsics::_none);
91  set_force_inline(false);
92  set_hidden(false);
93  set_dont_inline(false);
94  set_has_injected_profile(false);
95  set_method_data(NULL);
96  clear_method_counters();
97  set_vtable_index(Method::garbage_vtable_index);
98
99  // Fix and bury in Method*
100  set_interpreter_entry(NULL); // sets i2i entry and from_int
101  set_adapter_entry(NULL);
102  clear_code(false /* don't need a lock */); // from_c/from_i get set to c2i/i2i
103
104  if (access_flags.is_native()) {
105    clear_native_function();
106    set_signature_handler(NULL);
107  }
108
109  NOT_PRODUCT(set_compiled_invocation_count(0);)
110}
111
112// Release Method*.  The nmethod will be gone when we get here because
113// we've walked the code cache.
114void Method::deallocate_contents(ClassLoaderData* loader_data) {
115  MetadataFactory::free_metadata(loader_data, constMethod());
116  set_constMethod(NULL);
117  MetadataFactory::free_metadata(loader_data, method_data());
118  set_method_data(NULL);
119  MetadataFactory::free_metadata(loader_data, method_counters());
120  clear_method_counters();
121  // The nmethod will be gone when we get here.
122  if (code() != NULL) _code = NULL;
123}
124
125address Method::get_i2c_entry() {
126  assert(adapter() != NULL, "must have");
127  return adapter()->get_i2c_entry();
128}
129
130address Method::get_c2i_entry() {
131  assert(adapter() != NULL, "must have");
132  return adapter()->get_c2i_entry();
133}
134
135address Method::get_c2i_unverified_entry() {
136  assert(adapter() != NULL, "must have");
137  return adapter()->get_c2i_unverified_entry();
138}
139
140char* Method::name_and_sig_as_C_string() const {
141  return name_and_sig_as_C_string(constants()->pool_holder(), name(), signature());
142}
143
144char* Method::name_and_sig_as_C_string(char* buf, int size) const {
145  return name_and_sig_as_C_string(constants()->pool_holder(), name(), signature(), buf, size);
146}
147
148char* Method::name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol* signature) {
149  const char* klass_name = klass->external_name();
150  int klass_name_len  = (int)strlen(klass_name);
151  int method_name_len = method_name->utf8_length();
152  int len             = klass_name_len + 1 + method_name_len + signature->utf8_length();
153  char* dest          = NEW_RESOURCE_ARRAY(char, len + 1);
154  strcpy(dest, klass_name);
155  dest[klass_name_len] = '.';
156  strcpy(&dest[klass_name_len + 1], method_name->as_C_string());
157  strcpy(&dest[klass_name_len + 1 + method_name_len], signature->as_C_string());
158  dest[len] = 0;
159  return dest;
160}
161
162char* Method::name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol* signature, char* buf, int size) {
163  Symbol* klass_name = klass->name();
164  klass_name->as_klass_external_name(buf, size);
165  int len = (int)strlen(buf);
166
167  if (len < size - 1) {
168    buf[len++] = '.';
169
170    method_name->as_C_string(&(buf[len]), size - len);
171    len = (int)strlen(buf);
172
173    signature->as_C_string(&(buf[len]), size - len);
174  }
175
176  return buf;
177}
178
179int Method::fast_exception_handler_bci_for(const methodHandle& mh, Klass* ex_klass, int throw_bci, TRAPS) {
180  // exception table holds quadruple entries of the form (beg_bci, end_bci, handler_bci, klass_index)
181  // access exception table
182  ExceptionTable table(mh());
183  int length = table.length();
184  // iterate through all entries sequentially
185  constantPoolHandle pool(THREAD, mh->constants());
186  for (int i = 0; i < length; i ++) {
187    //reacquire the table in case a GC happened
188    ExceptionTable table(mh());
189    int beg_bci = table.start_pc(i);
190    int end_bci = table.end_pc(i);
191    assert(beg_bci <= end_bci, "inconsistent exception table");
192    if (beg_bci <= throw_bci && throw_bci < end_bci) {
193      // exception handler bci range covers throw_bci => investigate further
194      int handler_bci = table.handler_pc(i);
195      int klass_index = table.catch_type_index(i);
196      if (klass_index == 0) {
197        return handler_bci;
198      } else if (ex_klass == NULL) {
199        return handler_bci;
200      } else {
201        // we know the exception class => get the constraint class
202        // this may require loading of the constraint class; if verification
203        // fails or some other exception occurs, return handler_bci
204        Klass* k = pool->klass_at(klass_index, CHECK_(handler_bci));
205        assert(k != NULL, "klass not loaded");
206        if (ex_klass->is_subtype_of(k)) {
207          return handler_bci;
208        }
209      }
210    }
211  }
212
213  return -1;
214}
215
216void Method::mask_for(int bci, InterpreterOopMap* mask) {
217  methodHandle h_this(Thread::current(), this);
218  // Only GC uses the OopMapCache during thread stack root scanning
219  // any other uses generate an oopmap but do not save it in the cache.
220  if (Universe::heap()->is_gc_active()) {
221    method_holder()->mask_for(h_this, bci, mask);
222  } else {
223    OopMapCache::compute_one_oop_map(h_this, bci, mask);
224  }
225  return;
226}
227
228
229int Method::bci_from(address bcp) const {
230  if (is_native() && bcp == 0) {
231    return 0;
232  }
233#ifdef ASSERT
234  {
235    ResourceMark rm;
236    assert(is_native() && bcp == code_base() || contains(bcp) || VMError::is_error_reported(),
237           "bcp doesn't belong to this method: bcp: " INTPTR_FORMAT ", method: %s",
238           p2i(bcp), name_and_sig_as_C_string());
239  }
240#endif
241  return bcp - code_base();
242}
243
244
245int Method::validate_bci(int bci) const {
246  return (bci == 0 || bci < code_size()) ? bci : -1;
247}
248
249// Return bci if it appears to be a valid bcp
250// Return -1 otherwise.
251// Used by profiling code, when invalid data is a possibility.
252// The caller is responsible for validating the Method* itself.
253int Method::validate_bci_from_bcp(address bcp) const {
254  // keep bci as -1 if not a valid bci
255  int bci = -1;
256  if (bcp == 0 || bcp == code_base()) {
257    // code_size() may return 0 and we allow 0 here
258    // the method may be native
259    bci = 0;
260  } else if (contains(bcp)) {
261    bci = bcp - code_base();
262  }
263  // Assert that if we have dodged any asserts, bci is negative.
264  assert(bci == -1 || bci == bci_from(bcp_from(bci)), "sane bci if >=0");
265  return bci;
266}
267
268address Method::bcp_from(int bci) const {
269  assert((is_native() && bci == 0) || (!is_native() && 0 <= bci && bci < code_size()),
270         "illegal bci: %d for %s method", bci, is_native() ? "native" : "non-native");
271  address bcp = code_base() + bci;
272  assert(is_native() && bcp == code_base() || contains(bcp), "bcp doesn't belong to this method");
273  return bcp;
274}
275
276address Method::bcp_from(address bcp) const {
277  if (is_native() && bcp == NULL) {
278    return code_base();
279  } else {
280    return bcp;
281  }
282}
283
284int Method::size(bool is_native) {
285  // If native, then include pointers for native_function and signature_handler
286  int extra_bytes = (is_native) ? 2*sizeof(address*) : 0;
287  int extra_words = align_up(extra_bytes, BytesPerWord) / BytesPerWord;
288  return align_metadata_size(header_size() + extra_words);
289}
290
291
292Symbol* Method::klass_name() const {
293  return method_holder()->name();
294}
295
296
297void Method::metaspace_pointers_do(MetaspaceClosure* it) {
298  log_trace(cds)("Iter(Method): %p", this);
299
300  it->push(&_constMethod);
301  it->push(&_method_data);
302  it->push(&_method_counters);
303}
304
305// Attempt to return method oop to original state.  Clear any pointers
306// (to objects outside the shared spaces).  We won't be able to predict
307// where they should point in a new JVM.  Further initialize some
308// entries now in order allow them to be write protected later.
309
310void Method::remove_unshareable_info() {
311  unlink_method();
312}
313
314void Method::set_vtable_index(int index) {
315  if (is_shared() && !MetaspaceShared::remapped_readwrite()) {
316    // At runtime initialize_vtable is rerun as part of link_class_impl()
317    // for a shared class loaded by the non-boot loader to obtain the loader
318    // constraints based on the runtime classloaders' context.
319    return; // don't write into the shared class
320  } else {
321    _vtable_index = index;
322  }
323}
324
325void Method::set_itable_index(int index) {
326  if (is_shared() && !MetaspaceShared::remapped_readwrite()) {
327    // At runtime initialize_itable is rerun as part of link_class_impl()
328    // for a shared class loaded by the non-boot loader to obtain the loader
329    // constraints based on the runtime classloaders' context. The dumptime
330    // itable index should be the same as the runtime index.
331    assert(_vtable_index == itable_index_max - index,
332           "archived itable index is different from runtime index");
333    return; // don���t write into the shared class
334  } else {
335    _vtable_index = itable_index_max - index;
336  }
337  assert(valid_itable_index(), "");
338}
339
340
341
342bool Method::was_executed_more_than(int n) {
343  // Invocation counter is reset when the Method* is compiled.
344  // If the method has compiled code we therefore assume it has
345  // be excuted more than n times.
346  if (is_accessor() || is_empty_method() || (code() != NULL)) {
347    // interpreter doesn't bump invocation counter of trivial methods
348    // compiler does not bump invocation counter of compiled methods
349    return true;
350  }
351  else if ((method_counters() != NULL &&
352            method_counters()->invocation_counter()->carry()) ||
353           (method_data() != NULL &&
354            method_data()->invocation_counter()->carry())) {
355    // The carry bit is set when the counter overflows and causes
356    // a compilation to occur.  We don't know how many times
357    // the counter has been reset, so we simply assume it has
358    // been executed more than n times.
359    return true;
360  } else {
361    return invocation_count() > n;
362  }
363}
364
365void Method::print_invocation_count() {
366  if (is_static()) tty->print("static ");
367  if (is_final()) tty->print("final ");
368  if (is_synchronized()) tty->print("synchronized ");
369  if (is_native()) tty->print("native ");
370  tty->print("%s::", method_holder()->external_name());
371  name()->print_symbol_on(tty);
372  signature()->print_symbol_on(tty);
373
374  if (WizardMode) {
375    // dump the size of the byte codes
376    tty->print(" {%d}", code_size());
377  }
378  tty->cr();
379
380  tty->print_cr ("  interpreter_invocation_count: %8d ", interpreter_invocation_count());
381  tty->print_cr ("  invocation_counter:           %8d ", invocation_count());
382  tty->print_cr ("  backedge_counter:             %8d ", backedge_count());
383#ifndef PRODUCT
384  if (CountCompiledCalls) {
385    tty->print_cr ("  compiled_invocation_count: %8d ", compiled_invocation_count());
386  }
387#endif
388}
389
390// Build a MethodData* object to hold information about this method
391// collected in the interpreter.
392void Method::build_interpreter_method_data(const methodHandle& method, TRAPS) {
393  // Do not profile the method if metaspace has hit an OOM previously
394  // allocating profiling data. Callers clear pending exception so don't
395  // add one here.
396  if (ClassLoaderDataGraph::has_metaspace_oom()) {
397    return;
398  }
399
400  // Grab a lock here to prevent multiple
401  // MethodData*s from being created.
402  MutexLocker ml(MethodData_lock, THREAD);
403  if (method->method_data() == NULL) {
404    ClassLoaderData* loader_data = method->method_holder()->class_loader_data();
405    MethodData* method_data = MethodData::allocate(loader_data, method, THREAD);
406    if (HAS_PENDING_EXCEPTION) {
407      CompileBroker::log_metaspace_failure();
408      ClassLoaderDataGraph::set_metaspace_oom(true);
409      return;   // return the exception (which is cleared)
410    }
411
412    method->set_method_data(method_data);
413    if (PrintMethodData && (Verbose || WizardMode)) {
414      ResourceMark rm(THREAD);
415      tty->print("build_interpreter_method_data for ");
416      method->print_name(tty);
417      tty->cr();
418      // At the end of the run, the MDO, full of data, will be dumped.
419    }
420  }
421}
422
423MethodCounters* Method::build_method_counters(Method* m, TRAPS) {
424  // Do not profile the method if metaspace has hit an OOM previously
425  if (ClassLoaderDataGraph::has_metaspace_oom()) {
426    return NULL;
427  }
428
429  methodHandle mh(m);
430  MethodCounters* counters = MethodCounters::allocate(mh, THREAD);
431  if (HAS_PENDING_EXCEPTION) {
432    CompileBroker::log_metaspace_failure();
433    ClassLoaderDataGraph::set_metaspace_oom(true);
434    return NULL;   // return the exception (which is cleared)
435  }
436  if (!mh->init_method_counters(counters)) {
437    MetadataFactory::free_metadata(mh->method_holder()->class_loader_data(), counters);
438  }
439
440  if (LogTouchedMethods) {
441    mh->log_touched(CHECK_NULL);
442  }
443
444  return mh->method_counters();
445}
446
447void Method::cleanup_inline_caches() {
448  // The current system doesn't use inline caches in the interpreter
449  // => nothing to do (keep this method around for future use)
450}
451
452
453int Method::extra_stack_words() {
454  // not an inline function, to avoid a header dependency on Interpreter
455  return extra_stack_entries() * Interpreter::stackElementSize;
456}
457
458
459void Method::compute_size_of_parameters(Thread *thread) {
460  ArgumentSizeComputer asc(signature());
461  set_size_of_parameters(asc.size() + (is_static() ? 0 : 1));
462}
463
464BasicType Method::result_type() const {
465  ResultTypeFinder rtf(signature());
466  return rtf.type();
467}
468
469
470bool Method::is_empty_method() const {
471  return  code_size() == 1
472      && *code_base() == Bytecodes::_return;
473}
474
475
476bool Method::is_vanilla_constructor() const {
477  // Returns true if this method is a vanilla constructor, i.e. an "<init>" "()V" method
478  // which only calls the superclass vanilla constructor and possibly does stores of
479  // zero constants to local fields:
480  //
481  //   aload_0
482  //   invokespecial
483  //   indexbyte1
484  //   indexbyte2
485  //
486  // followed by an (optional) sequence of:
487  //
488  //   aload_0
489  //   aconst_null / iconst_0 / fconst_0 / dconst_0
490  //   putfield
491  //   indexbyte1
492  //   indexbyte2
493  //
494  // followed by:
495  //
496  //   return
497
498  assert(name() == vmSymbols::object_initializer_name(),    "Should only be called for default constructors");
499  assert(signature() == vmSymbols::void_method_signature(), "Should only be called for default constructors");
500  int size = code_size();
501  // Check if size match
502  if (size == 0 || size % 5 != 0) return false;
503  address cb = code_base();
504  int last = size - 1;
505  if (cb[0] != Bytecodes::_aload_0 || cb[1] != Bytecodes::_invokespecial || cb[last] != Bytecodes::_return) {
506    // Does not call superclass default constructor
507    return false;
508  }
509  // Check optional sequence
510  for (int i = 4; i < last; i += 5) {
511    if (cb[i] != Bytecodes::_aload_0) return false;
512    if (!Bytecodes::is_zero_const(Bytecodes::cast(cb[i+1]))) return false;
513    if (cb[i+2] != Bytecodes::_putfield) return false;
514  }
515  return true;
516}
517
518
519bool Method::compute_has_loops_flag() {
520  BytecodeStream bcs(this);
521  Bytecodes::Code bc;
522
523  while ((bc = bcs.next()) >= 0) {
524    switch( bc ) {
525      case Bytecodes::_ifeq:
526      case Bytecodes::_ifnull:
527      case Bytecodes::_iflt:
528      case Bytecodes::_ifle:
529      case Bytecodes::_ifne:
530      case Bytecodes::_ifnonnull:
531      case Bytecodes::_ifgt:
532      case Bytecodes::_ifge:
533      case Bytecodes::_if_icmpeq:
534      case Bytecodes::_if_icmpne:
535      case Bytecodes::_if_icmplt:
536      case Bytecodes::_if_icmpgt:
537      case Bytecodes::_if_icmple:
538      case Bytecodes::_if_icmpge:
539      case Bytecodes::_if_acmpeq:
540      case Bytecodes::_if_acmpne:
541      case Bytecodes::_goto:
542      case Bytecodes::_jsr:
543        if( bcs.dest() < bcs.next_bci() ) _access_flags.set_has_loops();
544        break;
545
546      case Bytecodes::_goto_w:
547      case Bytecodes::_jsr_w:
548        if( bcs.dest_w() < bcs.next_bci() ) _access_flags.set_has_loops();
549        break;
550
551      default:
552        break;
553    }
554  }
555  _access_flags.set_loops_flag_init();
556  return _access_flags.has_loops();
557}
558
559bool Method::is_final_method(AccessFlags class_access_flags) const {
560  // or "does_not_require_vtable_entry"
561  // default method or overpass can occur, is not final (reuses vtable entry)
562  // private methods in classes get vtable entries for backward class compatibility.
563  if (is_overpass() || is_default_method())  return false;
564  return is_final() || class_access_flags.is_final();
565}
566
567bool Method::is_final_method() const {
568  return is_final_method(method_holder()->access_flags());
569}
570
571bool Method::is_default_method() const {
572  if (method_holder() != NULL &&
573      method_holder()->is_interface() &&
574      !is_abstract() && !is_private()) {
575    return true;
576  } else {
577    return false;
578  }
579}
580
581bool Method::can_be_statically_bound(AccessFlags class_access_flags) const {
582  if (is_final_method(class_access_flags))  return true;
583#ifdef ASSERT
584  ResourceMark rm;
585  bool is_nonv = (vtable_index() == nonvirtual_vtable_index);
586  if (class_access_flags.is_interface()) {
587      assert(is_nonv == is_static() || is_nonv == is_private(),
588             "nonvirtual unexpected for non-static, non-private: %s",
589             name_and_sig_as_C_string());
590  }
591#endif
592  assert(valid_vtable_index() || valid_itable_index(), "method must be linked before we ask this question");
593  return vtable_index() == nonvirtual_vtable_index;
594}
595
596bool Method::can_be_statically_bound() const {
597  return can_be_statically_bound(method_holder()->access_flags());
598}
599
600bool Method::is_accessor() const {
601  return is_getter() || is_setter();
602}
603
604bool Method::is_getter() const {
605  if (code_size() != 5) return false;
606  if (size_of_parameters() != 1) return false;
607  if (java_code_at(0) != Bytecodes::_aload_0)  return false;
608  if (java_code_at(1) != Bytecodes::_getfield) return false;
609  switch (java_code_at(4)) {
610    case Bytecodes::_ireturn:
611    case Bytecodes::_lreturn:
612    case Bytecodes::_freturn:
613    case Bytecodes::_dreturn:
614    case Bytecodes::_areturn:
615      break;
616    default:
617      return false;
618  }
619  return true;
620}
621
622bool Method::is_setter() const {
623  if (code_size() != 6) return false;
624  if (java_code_at(0) != Bytecodes::_aload_0) return false;
625  switch (java_code_at(1)) {
626    case Bytecodes::_iload_1:
627    case Bytecodes::_aload_1:
628    case Bytecodes::_fload_1:
629      if (size_of_parameters() != 2) return false;
630      break;
631    case Bytecodes::_dload_1:
632    case Bytecodes::_lload_1:
633      if (size_of_parameters() != 3) return false;
634      break;
635    default:
636      return false;
637  }
638  if (java_code_at(2) != Bytecodes::_putfield) return false;
639  if (java_code_at(5) != Bytecodes::_return)   return false;
640  return true;
641}
642
643bool Method::is_constant_getter() const {
644  int last_index = code_size() - 1;
645  // Check if the first 1-3 bytecodes are a constant push
646  // and the last bytecode is a return.
647  return (2 <= code_size() && code_size() <= 4 &&
648          Bytecodes::is_const(java_code_at(0)) &&
649          Bytecodes::length_for(java_code_at(0)) == last_index &&
650          Bytecodes::is_return(java_code_at(last_index)));
651}
652
653bool Method::is_initializer() const {
654  return is_object_initializer() || is_static_initializer();
655}
656
657bool Method::has_valid_initializer_flags() const {
658  return (is_static() ||
659          method_holder()->major_version() < 51);
660}
661
662bool Method::is_static_initializer() const {
663  // For classfiles version 51 or greater, ensure that the clinit method is
664  // static.  Non-static methods with the name "<clinit>" are not static
665  // initializers. (older classfiles exempted for backward compatibility)
666  return name() == vmSymbols::class_initializer_name() &&
667         has_valid_initializer_flags();
668}
669
670bool Method::is_object_initializer() const {
671   return name() == vmSymbols::object_initializer_name();
672}
673
674objArrayHandle Method::resolved_checked_exceptions_impl(Method* method, TRAPS) {
675  int length = method->checked_exceptions_length();
676  if (length == 0) {  // common case
677    return objArrayHandle(THREAD, Universe::the_empty_class_klass_array());
678  } else {
679    methodHandle h_this(THREAD, method);
680    objArrayOop m_oop = oopFactory::new_objArray(SystemDictionary::Class_klass(), length, CHECK_(objArrayHandle()));
681    objArrayHandle mirrors (THREAD, m_oop);
682    for (int i = 0; i < length; i++) {
683      CheckedExceptionElement* table = h_this->checked_exceptions_start(); // recompute on each iteration, not gc safe
684      Klass* k = h_this->constants()->klass_at(table[i].class_cp_index, CHECK_(objArrayHandle()));
685      assert(k->is_subclass_of(SystemDictionary::Throwable_klass()), "invalid exception class");
686      mirrors->obj_at_put(i, k->java_mirror());
687    }
688    return mirrors;
689  }
690};
691
692
693int Method::line_number_from_bci(int bci) const {
694  if (bci == SynchronizationEntryBCI) bci = 0;
695  assert(bci == 0 || 0 <= bci && bci < code_size(), "illegal bci");
696  int best_bci  =  0;
697  int best_line = -1;
698
699  if (has_linenumber_table()) {
700    // The line numbers are a short array of 2-tuples [start_pc, line_number].
701    // Not necessarily sorted and not necessarily one-to-one.
702    CompressedLineNumberReadStream stream(compressed_linenumber_table());
703    while (stream.read_pair()) {
704      if (stream.bci() == bci) {
705        // perfect match
706        return stream.line();
707      } else {
708        // update best_bci/line
709        if (stream.bci() < bci && stream.bci() >= best_bci) {
710          best_bci  = stream.bci();
711          best_line = stream.line();
712        }
713      }
714    }
715  }
716  return best_line;
717}
718
719
720bool Method::is_klass_loaded_by_klass_index(int klass_index) const {
721  if( constants()->tag_at(klass_index).is_unresolved_klass() ) {
722    Thread *thread = Thread::current();
723    Symbol* klass_name = constants()->klass_name_at(klass_index);
724    Handle loader(thread, method_holder()->class_loader());
725    Handle prot  (thread, method_holder()->protection_domain());
726    return SystemDictionary::find(klass_name, loader, prot, thread) != NULL;
727  } else {
728    return true;
729  }
730}
731
732
733bool Method::is_klass_loaded(int refinfo_index, bool must_be_resolved) const {
734  int klass_index = constants()->klass_ref_index_at(refinfo_index);
735  if (must_be_resolved) {
736    // Make sure klass is resolved in constantpool.
737    if (constants()->tag_at(klass_index).is_unresolved_klass()) return false;
738  }
739  return is_klass_loaded_by_klass_index(klass_index);
740}
741
742
743void Method::set_native_function(address function, bool post_event_flag) {
744  assert(function != NULL, "use clear_native_function to unregister natives");
745  assert(!is_method_handle_intrinsic() || function == SharedRuntime::native_method_throw_unsatisfied_link_error_entry(), "");
746  address* native_function = native_function_addr();
747
748  // We can see racers trying to place the same native function into place. Once
749  // is plenty.
750  address current = *native_function;
751  if (current == function) return;
752  if (post_event_flag && JvmtiExport::should_post_native_method_bind() &&
753      function != NULL) {
754    // native_method_throw_unsatisfied_link_error_entry() should only
755    // be passed when post_event_flag is false.
756    assert(function !=
757      SharedRuntime::native_method_throw_unsatisfied_link_error_entry(),
758      "post_event_flag mis-match");
759
760    // post the bind event, and possible change the bind function
761    JvmtiExport::post_native_method_bind(this, &function);
762  }
763  *native_function = function;
764  // This function can be called more than once. We must make sure that we always
765  // use the latest registered method -> check if a stub already has been generated.
766  // If so, we have to make it not_entrant.
767  CompiledMethod* nm = code(); // Put it into local variable to guard against concurrent updates
768  if (nm != NULL) {
769    nm->make_not_entrant();
770  }
771}
772
773
774bool Method::has_native_function() const {
775  if (is_method_handle_intrinsic())
776    return false;  // special-cased in SharedRuntime::generate_native_wrapper
777  address func = native_function();
778  return (func != NULL && func != SharedRuntime::native_method_throw_unsatisfied_link_error_entry());
779}
780
781
782void Method::clear_native_function() {
783  // Note: is_method_handle_intrinsic() is allowed here.
784  set_native_function(
785    SharedRuntime::native_method_throw_unsatisfied_link_error_entry(),
786    !native_bind_event_is_interesting);
787  clear_code();
788}
789
790address Method::critical_native_function() {
791  methodHandle mh(this);
792  return NativeLookup::lookup_critical_entry(mh);
793}
794
795
796void Method::set_signature_handler(address handler) {
797  address* signature_handler =  signature_handler_addr();
798  *signature_handler = handler;
799}
800
801
802void Method::print_made_not_compilable(int comp_level, bool is_osr, bool report, const char* reason) {
803  if (PrintCompilation && report) {
804    ttyLocker ttyl;
805    tty->print("made not %scompilable on ", is_osr ? "OSR " : "");
806    if (comp_level == CompLevel_all) {
807      tty->print("all levels ");
808    } else {
809      tty->print("levels ");
810      for (int i = (int)CompLevel_none; i <= comp_level; i++) {
811        tty->print("%d ", i);
812      }
813    }
814    this->print_short_name(tty);
815    int size = this->code_size();
816    if (size > 0) {
817      tty->print(" (%d bytes)", size);
818    }
819    if (reason != NULL) {
820      tty->print("   %s", reason);
821    }
822    tty->cr();
823  }
824  if ((TraceDeoptimization || LogCompilation) && (xtty != NULL)) {
825    ttyLocker ttyl;
826    xtty->begin_elem("make_not_compilable thread='" UINTX_FORMAT "' osr='%d' level='%d'",
827                     os::current_thread_id(), is_osr, comp_level);
828    if (reason != NULL) {
829      xtty->print(" reason=\'%s\'", reason);
830    }
831    xtty->method(this);
832    xtty->stamp();
833    xtty->end_elem();
834  }
835}
836
837bool Method::is_always_compilable() const {
838  // Generated adapters must be compiled
839  if (is_method_handle_intrinsic() && is_synthetic()) {
840    assert(!is_not_c1_compilable(), "sanity check");
841    assert(!is_not_c2_compilable(), "sanity check");
842    return true;
843  }
844
845  return false;
846}
847
848bool Method::is_not_compilable(int comp_level) const {
849  if (number_of_breakpoints() > 0)
850    return true;
851  if (is_always_compilable())
852    return false;
853  if (comp_level == CompLevel_any)
854    return is_not_c1_compilable() || is_not_c2_compilable();
855  if (is_c1_compile(comp_level))
856    return is_not_c1_compilable();
857  if (is_c2_compile(comp_level))
858    return is_not_c2_compilable();
859  return false;
860}
861
862// call this when compiler finds that this method is not compilable
863void Method::set_not_compilable(int comp_level, bool report, const char* reason) {
864  if (is_always_compilable()) {
865    // Don't mark a method which should be always compilable
866    return;
867  }
868  print_made_not_compilable(comp_level, /*is_osr*/ false, report, reason);
869  if (comp_level == CompLevel_all) {
870    set_not_c1_compilable();
871    set_not_c2_compilable();
872  } else {
873    if (is_c1_compile(comp_level))
874      set_not_c1_compilable();
875    if (is_c2_compile(comp_level))
876      set_not_c2_compilable();
877  }
878  CompilationPolicy::policy()->disable_compilation(this);
879  assert(!CompilationPolicy::can_be_compiled(this, comp_level), "sanity check");
880}
881
882bool Method::is_not_osr_compilable(int comp_level) const {
883  if (is_not_compilable(comp_level))
884    return true;
885  if (comp_level == CompLevel_any)
886    return is_not_c1_osr_compilable() || is_not_c2_osr_compilable();
887  if (is_c1_compile(comp_level))
888    return is_not_c1_osr_compilable();
889  if (is_c2_compile(comp_level))
890    return is_not_c2_osr_compilable();
891  return false;
892}
893
894void Method::set_not_osr_compilable(int comp_level, bool report, const char* reason) {
895  print_made_not_compilable(comp_level, /*is_osr*/ true, report, reason);
896  if (comp_level == CompLevel_all) {
897    set_not_c1_osr_compilable();
898    set_not_c2_osr_compilable();
899  } else {
900    if (is_c1_compile(comp_level))
901      set_not_c1_osr_compilable();
902    if (is_c2_compile(comp_level))
903      set_not_c2_osr_compilable();
904  }
905  CompilationPolicy::policy()->disable_compilation(this);
906  assert(!CompilationPolicy::can_be_osr_compiled(this, comp_level), "sanity check");
907}
908
909// Revert to using the interpreter and clear out the nmethod
910void Method::clear_code(bool acquire_lock /* = true */) {
911  MutexLockerEx pl(acquire_lock ? Patching_lock : NULL, Mutex::_no_safepoint_check_flag);
912  // this may be NULL if c2i adapters have not been made yet
913  // Only should happen at allocate time.
914  if (adapter() == NULL) {
915    _from_compiled_entry    = NULL;
916  } else {
917    _from_compiled_entry    = adapter()->get_c2i_entry();
918  }
919  OrderAccess::storestore();
920  _from_interpreted_entry = _i2i_entry;
921  OrderAccess::storestore();
922  _code = NULL;
923}
924
925#if INCLUDE_CDS
926// Called by class data sharing to remove any entry points (which are not shared)
927void Method::unlink_method() {
928  _code = NULL;
929
930  assert(DumpSharedSpaces, "dump time only");
931  // Set the values to what they should be at run time. Note that
932  // this Method can no longer be executed during dump time.
933  _i2i_entry = Interpreter::entry_for_cds_method(this);
934  _from_interpreted_entry = _i2i_entry;
935
936  if (is_native()) {
937    *native_function_addr() = NULL;
938    set_signature_handler(NULL);
939  }
940  NOT_PRODUCT(set_compiled_invocation_count(0);)
941
942  CDSAdapterHandlerEntry* cds_adapter = (CDSAdapterHandlerEntry*)adapter();
943  constMethod()->set_adapter_trampoline(cds_adapter->get_adapter_trampoline());
944  _from_compiled_entry = cds_adapter->get_c2i_entry_trampoline();
945  assert(*((int*)_from_compiled_entry) == 0, "must be NULL during dump time, to be initialized at run time");
946
947  set_method_data(NULL);
948  clear_method_counters();
949}
950#endif
951
952/****************************************************************************
953// The following illustrates how the entries work for CDS shared Methods:
954//
955// Our goal is to delay writing into a shared Method until it's compiled.
956// Hence, we want to determine the initial values for _i2i_entry,
957// _from_interpreted_entry and _from_compiled_entry during CDS dump time.
958//
959// In this example, both Methods A and B have the _i2i_entry of "zero_locals".
960// They also have similar signatures so that they will share the same
961// AdapterHandlerEntry.
962//
963// _adapter_trampoline points to a fixed location in the RW section of
964// the CDS archive. This location initially contains a NULL pointer. When the
965// first of method A or B is linked, an AdapterHandlerEntry is allocated
966// dynamically, and its c2i/i2c entries are generated.
967//
968// _i2i_entry and _from_interpreted_entry initially points to the same
969// (fixed) location in the CODE section of the CDS archive. This contains
970// an unconditional branch to the actual entry for "zero_locals", which is
971// generated at run time and may be on an arbitrary address. Thus, the
972// unconditional branch is also generated at run time to jump to the correct
973// address.
974//
975// Similarly, _from_compiled_entry points to a fixed address in the CODE
976// section. This address has enough space for an unconditional branch
977// instruction, and is initially zero-filled. After the AdapterHandlerEntry is
978// initialized, and the address for the actual c2i_entry is known, we emit a
979// branch instruction here to branch to the actual c2i_entry.
980//
981// The effect of the extra branch on the i2i and c2i entries is negligible.
982//
983// The reason for putting _adapter_trampoline in RO is many shared Methods
984// share the same AdapterHandlerEntry, so we can save space in the RW section
985// by having the extra indirection.
986
987
988[Method A: RW]
989  _constMethod ----> [ConstMethod: RO]
990                       _adapter_trampoline -----------+
991                                                      |
992  _i2i_entry              (same value as method B)    |
993  _from_interpreted_entry (same value as method B)    |
994  _from_compiled_entry    (same value as method B)    |
995                                                      |
996                                                      |
997[Method B: RW]                               +--------+
998  _constMethod ----> [ConstMethod: RO]       |
999                       _adapter_trampoline --+--->(AdapterHandlerEntry* ptr: RW)-+
1000                                                                                 |
1001                                                 +-------------------------------+
1002                                                 |
1003                                                 +----> [AdapterHandlerEntry] (allocated at run time)
1004                                                              _fingerprint
1005                                                              _c2i_entry ---------------------------------+->[c2i entry..]
1006 _i2i_entry  -------------+                                   _i2c_entry ---------------+-> [i2c entry..] |
1007 _from_interpreted_entry  |                                   _c2i_unverified_entry     |                 |
1008         |                |                                                             |                 |
1009         |                |  (_cds_entry_table: CODE)                                   |                 |
1010         |                +->[0]: jmp _entry_table[0] --> (i2i_entry_for "zero_locals") |                 |
1011         |                |                               (allocated at run time)       |                 |
1012         |                |  ...                           [asm code ...]               |                 |
1013         +-[not compiled]-+  [n]: jmp _entry_table[n]                                   |                 |
1014         |                                                                              |                 |
1015         |                                                                              |                 |
1016         +-[compiled]-------------------------------------------------------------------+                 |
1017                                                                                                          |
1018 _from_compiled_entry------------>  (_c2i_entry_trampoline: CODE)                                         |
1019                                    [jmp c2i_entry] ------------------------------------------------------+
1020
1021***/
1022
1023// Called when the method_holder is getting linked. Setup entrypoints so the method
1024// is ready to be called from interpreter, compiler, and vtables.
1025void Method::link_method(const methodHandle& h_method, TRAPS) {
1026  // If the code cache is full, we may reenter this function for the
1027  // leftover methods that weren't linked.
1028  if (is_shared()) {
1029    address entry = Interpreter::entry_for_cds_method(h_method);
1030    assert(entry != NULL && entry == _i2i_entry,
1031           "should be correctly set during dump time");
1032    if (adapter() != NULL) {
1033      return;
1034    }
1035    assert(entry == _from_interpreted_entry,
1036           "should be correctly set during dump time");
1037  } else if (_i2i_entry != NULL) {
1038    return;
1039  }
1040  assert( _code == NULL, "nothing compiled yet" );
1041
1042  // Setup interpreter entrypoint
1043  assert(this == h_method(), "wrong h_method()" );
1044
1045  if (!is_shared()) {
1046    assert(adapter() == NULL, "init'd to NULL");
1047    address entry = Interpreter::entry_for_method(h_method);
1048    assert(entry != NULL, "interpreter entry must be non-null");
1049    // Sets both _i2i_entry and _from_interpreted_entry
1050    set_interpreter_entry(entry);
1051  }
1052
1053  // Don't overwrite already registered native entries.
1054  if (is_native() && !has_native_function()) {
1055    set_native_function(
1056      SharedRuntime::native_method_throw_unsatisfied_link_error_entry(),
1057      !native_bind_event_is_interesting);
1058  }
1059
1060  // Setup compiler entrypoint.  This is made eagerly, so we do not need
1061  // special handling of vtables.  An alternative is to make adapters more
1062  // lazily by calling make_adapter() from from_compiled_entry() for the
1063  // normal calls.  For vtable calls life gets more complicated.  When a
1064  // call-site goes mega-morphic we need adapters in all methods which can be
1065  // called from the vtable.  We need adapters on such methods that get loaded
1066  // later.  Ditto for mega-morphic itable calls.  If this proves to be a
1067  // problem we'll make these lazily later.
1068  (void) make_adapters(h_method, CHECK);
1069
1070  // ONLY USE the h_method now as make_adapter may have blocked
1071
1072}
1073
1074address Method::make_adapters(const methodHandle& mh, TRAPS) {
1075  // Adapters for compiled code are made eagerly here.  They are fairly
1076  // small (generally < 100 bytes) and quick to make (and cached and shared)
1077  // so making them eagerly shouldn't be too expensive.
1078  AdapterHandlerEntry* adapter = AdapterHandlerLibrary::get_adapter(mh);
1079  if (adapter == NULL ) {
1080    if (!is_init_completed()) {
1081      // Don't throw exceptions during VM initialization because java.lang.* classes
1082      // might not have been initialized, causing problems when constructing the
1083      // Java exception object.
1084      vm_exit_during_initialization("Out of space in CodeCache for adapters");
1085    } else {
1086      THROW_MSG_NULL(vmSymbols::java_lang_VirtualMachineError(), "Out of space in CodeCache for adapters");
1087    }
1088  }
1089
1090  if (mh->is_shared()) {
1091    assert(mh->adapter() == adapter, "must be");
1092    assert(mh->_from_compiled_entry != NULL, "must be");
1093  } else {
1094    mh->set_adapter_entry(adapter);
1095    mh->_from_compiled_entry = adapter->get_c2i_entry();
1096  }
1097  return adapter->get_c2i_entry();
1098}
1099
1100void Method::restore_unshareable_info(TRAPS) {
1101  assert(is_method() && is_valid_method(), "ensure C++ vtable is restored");
1102
1103  // Since restore_unshareable_info can be called more than once for a method, don't
1104  // redo any work.
1105  if (adapter() == NULL) {
1106    methodHandle mh(THREAD, this);
1107    link_method(mh, CHECK);
1108  }
1109}
1110
1111volatile address Method::from_compiled_entry_no_trampoline() const {
1112  nmethod *code = (nmethod *)OrderAccess::load_ptr_acquire(&_code);
1113  if (code) {
1114    return code->verified_entry_point();
1115  } else {
1116    return adapter()->get_c2i_entry();
1117  }
1118}
1119
1120// The verified_code_entry() must be called when a invoke is resolved
1121// on this method.
1122
1123// It returns the compiled code entry point, after asserting not null.
1124// This function is called after potential safepoints so that nmethod
1125// or adapter that it points to is still live and valid.
1126// This function must not hit a safepoint!
1127address Method::verified_code_entry() {
1128  debug_only(NoSafepointVerifier nsv;)
1129  assert(_from_compiled_entry != NULL, "must be set");
1130  return _from_compiled_entry;
1131}
1132
1133// Check that if an nmethod ref exists, it has a backlink to this or no backlink at all
1134// (could be racing a deopt).
1135// Not inline to avoid circular ref.
1136bool Method::check_code() const {
1137  // cached in a register or local.  There's a race on the value of the field.
1138  CompiledMethod *code = (CompiledMethod *)OrderAccess::load_ptr_acquire(&_code);
1139  return code == NULL || (code->method() == NULL) || (code->method() == (Method*)this && !code->is_osr_method());
1140}
1141
1142// Install compiled code.  Instantly it can execute.
1143void Method::set_code(const methodHandle& mh, CompiledMethod *code) {
1144  MutexLockerEx pl(Patching_lock, Mutex::_no_safepoint_check_flag);
1145  assert( code, "use clear_code to remove code" );
1146  assert( mh->check_code(), "" );
1147
1148  guarantee(mh->adapter() != NULL, "Adapter blob must already exist!");
1149
1150  // These writes must happen in this order, because the interpreter will
1151  // directly jump to from_interpreted_entry which jumps to an i2c adapter
1152  // which jumps to _from_compiled_entry.
1153  mh->_code = code;             // Assign before allowing compiled code to exec
1154
1155  int comp_level = code->comp_level();
1156  // In theory there could be a race here. In practice it is unlikely
1157  // and not worth worrying about.
1158  if (comp_level > mh->highest_comp_level()) {
1159    mh->set_highest_comp_level(comp_level);
1160  }
1161
1162  OrderAccess::storestore();
1163#ifdef SHARK
1164  mh->_from_interpreted_entry = code->insts_begin();
1165#else //!SHARK
1166  mh->_from_compiled_entry = code->verified_entry_point();
1167  OrderAccess::storestore();
1168  // Instantly compiled code can execute.
1169  if (!mh->is_method_handle_intrinsic())
1170    mh->_from_interpreted_entry = mh->get_i2c_entry();
1171#endif //!SHARK
1172}
1173
1174
1175bool Method::is_overridden_in(Klass* k) const {
1176  InstanceKlass* ik = InstanceKlass::cast(k);
1177
1178  if (ik->is_interface()) return false;
1179
1180  // If method is an interface, we skip it - except if it
1181  // is a miranda method
1182  if (method_holder()->is_interface()) {
1183    // Check that method is not a miranda method
1184    if (ik->lookup_method(name(), signature()) == NULL) {
1185      // No implementation exist - so miranda method
1186      return false;
1187    }
1188    return true;
1189  }
1190
1191  assert(ik->is_subclass_of(method_holder()), "should be subklass");
1192  if (!has_vtable_index()) {
1193    return false;
1194  } else {
1195    Method* vt_m = ik->method_at_vtable(vtable_index());
1196    return vt_m != this;
1197  }
1198}
1199
1200
1201// give advice about whether this Method* should be cached or not
1202bool Method::should_not_be_cached() const {
1203  if (is_old()) {
1204    // This method has been redefined. It is either EMCP or obsolete
1205    // and we don't want to cache it because that would pin the method
1206    // down and prevent it from being collectible if and when it
1207    // finishes executing.
1208    return true;
1209  }
1210
1211  // caching this method should be just fine
1212  return false;
1213}
1214
1215
1216/**
1217 *  Returns true if this is one of the specially treated methods for
1218 *  security related stack walks (like Reflection.getCallerClass).
1219 */
1220bool Method::is_ignored_by_security_stack_walk() const {
1221  if (intrinsic_id() == vmIntrinsics::_invoke) {
1222    // This is Method.invoke() -- ignore it
1223    return true;
1224  }
1225  if (method_holder()->is_subclass_of(SystemDictionary::reflect_MethodAccessorImpl_klass())) {
1226    // This is an auxilary frame -- ignore it
1227    return true;
1228  }
1229  if (is_method_handle_intrinsic() || is_compiled_lambda_form()) {
1230    // This is an internal adapter frame for method handles -- ignore it
1231    return true;
1232  }
1233  return false;
1234}
1235
1236
1237// Constant pool structure for invoke methods:
1238enum {
1239  _imcp_invoke_name = 1,        // utf8: 'invokeExact', etc.
1240  _imcp_invoke_signature,       // utf8: (variable Symbol*)
1241  _imcp_limit
1242};
1243
1244// Test if this method is an MH adapter frame generated by Java code.
1245// Cf. java/lang/invoke/InvokerBytecodeGenerator
1246bool Method::is_compiled_lambda_form() const {
1247  return intrinsic_id() == vmIntrinsics::_compiledLambdaForm;
1248}
1249
1250// Test if this method is an internal MH primitive method.
1251bool Method::is_method_handle_intrinsic() const {
1252  vmIntrinsics::ID iid = intrinsic_id();
1253  return (MethodHandles::is_signature_polymorphic(iid) &&
1254          MethodHandles::is_signature_polymorphic_intrinsic(iid));
1255}
1256
1257bool Method::has_member_arg() const {
1258  vmIntrinsics::ID iid = intrinsic_id();
1259  return (MethodHandles::is_signature_polymorphic(iid) &&
1260          MethodHandles::has_member_arg(iid));
1261}
1262
1263// Make an instance of a signature-polymorphic internal MH primitive.
1264methodHandle Method::make_method_handle_intrinsic(vmIntrinsics::ID iid,
1265                                                         Symbol* signature,
1266                                                         TRAPS) {
1267  ResourceMark rm;
1268  methodHandle empty;
1269
1270  InstanceKlass* holder = SystemDictionary::MethodHandle_klass();
1271  Symbol* name = MethodHandles::signature_polymorphic_intrinsic_name(iid);
1272  assert(iid == MethodHandles::signature_polymorphic_name_id(name), "");
1273  if (TraceMethodHandles) {
1274    tty->print_cr("make_method_handle_intrinsic MH.%s%s", name->as_C_string(), signature->as_C_string());
1275  }
1276
1277  // invariant:   cp->symbol_at_put is preceded by a refcount increment (more usually a lookup)
1278  name->increment_refcount();
1279  signature->increment_refcount();
1280
1281  int cp_length = _imcp_limit;
1282  ClassLoaderData* loader_data = holder->class_loader_data();
1283  constantPoolHandle cp;
1284  {
1285    ConstantPool* cp_oop = ConstantPool::allocate(loader_data, cp_length, CHECK_(empty));
1286    cp = constantPoolHandle(THREAD, cp_oop);
1287  }
1288  cp->set_pool_holder(holder);
1289  cp->symbol_at_put(_imcp_invoke_name,       name);
1290  cp->symbol_at_put(_imcp_invoke_signature,  signature);
1291  cp->set_has_preresolution();
1292
1293  // decide on access bits:  public or not?
1294  int flags_bits = (JVM_ACC_NATIVE | JVM_ACC_SYNTHETIC | JVM_ACC_FINAL);
1295  bool must_be_static = MethodHandles::is_signature_polymorphic_static(iid);
1296  if (must_be_static)  flags_bits |= JVM_ACC_STATIC;
1297  assert((flags_bits & JVM_ACC_PUBLIC) == 0, "do not expose these methods");
1298
1299  methodHandle m;
1300  {
1301    InlineTableSizes sizes;
1302    Method* m_oop = Method::allocate(loader_data, 0,
1303                                     accessFlags_from(flags_bits), &sizes,
1304                                     ConstMethod::NORMAL, CHECK_(empty));
1305    m = methodHandle(THREAD, m_oop);
1306  }
1307  m->set_constants(cp());
1308  m->set_name_index(_imcp_invoke_name);
1309  m->set_signature_index(_imcp_invoke_signature);
1310  assert(MethodHandles::is_signature_polymorphic_name(m->name()), "");
1311  assert(m->signature() == signature, "");
1312  ResultTypeFinder rtf(signature);
1313  m->constMethod()->set_result_type(rtf.type());
1314  m->compute_size_of_parameters(THREAD);
1315  m->init_intrinsic_id();
1316  assert(m->is_method_handle_intrinsic(), "");
1317#ifdef ASSERT
1318  if (!MethodHandles::is_signature_polymorphic(m->intrinsic_id()))  m->print();
1319  assert(MethodHandles::is_signature_polymorphic(m->intrinsic_id()), "must be an invoker");
1320  assert(m->intrinsic_id() == iid, "correctly predicted iid");
1321#endif //ASSERT
1322
1323  // Finally, set up its entry points.
1324  assert(m->can_be_statically_bound(), "");
1325  m->set_vtable_index(Method::nonvirtual_vtable_index);
1326  m->link_method(m, CHECK_(empty));
1327
1328  if (TraceMethodHandles && (Verbose || WizardMode)) {
1329    ttyLocker ttyl;
1330    m->print_on(tty);
1331  }
1332
1333  return m;
1334}
1335
1336Klass* Method::check_non_bcp_klass(Klass* klass) {
1337  if (klass != NULL && klass->class_loader() != NULL) {
1338    if (klass->is_objArray_klass())
1339      klass = ObjArrayKlass::cast(klass)->bottom_klass();
1340    return klass;
1341  }
1342  return NULL;
1343}
1344
1345
1346methodHandle Method::clone_with_new_data(const methodHandle& m, u_char* new_code, int new_code_length,
1347                                                u_char* new_compressed_linenumber_table, int new_compressed_linenumber_size, TRAPS) {
1348  // Code below does not work for native methods - they should never get rewritten anyway
1349  assert(!m->is_native(), "cannot rewrite native methods");
1350  // Allocate new Method*
1351  AccessFlags flags = m->access_flags();
1352
1353  ConstMethod* cm = m->constMethod();
1354  int checked_exceptions_len = cm->checked_exceptions_length();
1355  int localvariable_len = cm->localvariable_table_length();
1356  int exception_table_len = cm->exception_table_length();
1357  int method_parameters_len = cm->method_parameters_length();
1358  int method_annotations_len = cm->method_annotations_length();
1359  int parameter_annotations_len = cm->parameter_annotations_length();
1360  int type_annotations_len = cm->type_annotations_length();
1361  int default_annotations_len = cm->default_annotations_length();
1362
1363  InlineTableSizes sizes(
1364      localvariable_len,
1365      new_compressed_linenumber_size,
1366      exception_table_len,
1367      checked_exceptions_len,
1368      method_parameters_len,
1369      cm->generic_signature_index(),
1370      method_annotations_len,
1371      parameter_annotations_len,
1372      type_annotations_len,
1373      default_annotations_len,
1374      0);
1375
1376  ClassLoaderData* loader_data = m->method_holder()->class_loader_data();
1377  Method* newm_oop = Method::allocate(loader_data,
1378                                      new_code_length,
1379                                      flags,
1380                                      &sizes,
1381                                      m->method_type(),
1382                                      CHECK_(methodHandle()));
1383  methodHandle newm (THREAD, newm_oop);
1384
1385  // Create a shallow copy of Method part, but be careful to preserve the new ConstMethod*
1386  ConstMethod* newcm = newm->constMethod();
1387  int new_const_method_size = newm->constMethod()->size();
1388
1389  // This works because the source and target are both Methods. Some compilers
1390  // (e.g., clang) complain that the target vtable pointer will be stomped,
1391  // so cast away newm()'s and m()'s Methodness.
1392  memcpy((void*)newm(), (void*)m(), sizeof(Method));
1393
1394  // Create shallow copy of ConstMethod.
1395  memcpy(newcm, m->constMethod(), sizeof(ConstMethod));
1396
1397  // Reset correct method/const method, method size, and parameter info
1398  newm->set_constMethod(newcm);
1399  newm->constMethod()->set_code_size(new_code_length);
1400  newm->constMethod()->set_constMethod_size(new_const_method_size);
1401  assert(newm->code_size() == new_code_length, "check");
1402  assert(newm->method_parameters_length() == method_parameters_len, "check");
1403  assert(newm->checked_exceptions_length() == checked_exceptions_len, "check");
1404  assert(newm->exception_table_length() == exception_table_len, "check");
1405  assert(newm->localvariable_table_length() == localvariable_len, "check");
1406  // Copy new byte codes
1407  memcpy(newm->code_base(), new_code, new_code_length);
1408  // Copy line number table
1409  if (new_compressed_linenumber_size > 0) {
1410    memcpy(newm->compressed_linenumber_table(),
1411           new_compressed_linenumber_table,
1412           new_compressed_linenumber_size);
1413  }
1414  // Copy method_parameters
1415  if (method_parameters_len > 0) {
1416    memcpy(newm->method_parameters_start(),
1417           m->method_parameters_start(),
1418           method_parameters_len * sizeof(MethodParametersElement));
1419  }
1420  // Copy checked_exceptions
1421  if (checked_exceptions_len > 0) {
1422    memcpy(newm->checked_exceptions_start(),
1423           m->checked_exceptions_start(),
1424           checked_exceptions_len * sizeof(CheckedExceptionElement));
1425  }
1426  // Copy exception table
1427  if (exception_table_len > 0) {
1428    memcpy(newm->exception_table_start(),
1429           m->exception_table_start(),
1430           exception_table_len * sizeof(ExceptionTableElement));
1431  }
1432  // Copy local variable number table
1433  if (localvariable_len > 0) {
1434    memcpy(newm->localvariable_table_start(),
1435           m->localvariable_table_start(),
1436           localvariable_len * sizeof(LocalVariableTableElement));
1437  }
1438  // Copy stackmap table
1439  if (m->has_stackmap_table()) {
1440    int code_attribute_length = m->stackmap_data()->length();
1441    Array<u1>* stackmap_data =
1442      MetadataFactory::new_array<u1>(loader_data, code_attribute_length, 0, CHECK_NULL);
1443    memcpy((void*)stackmap_data->adr_at(0),
1444           (void*)m->stackmap_data()->adr_at(0), code_attribute_length);
1445    newm->set_stackmap_data(stackmap_data);
1446  }
1447
1448  // copy annotations over to new method
1449  newcm->copy_annotations_from(loader_data, cm, CHECK_NULL);
1450  return newm;
1451}
1452
1453vmSymbols::SID Method::klass_id_for_intrinsics(const Klass* holder) {
1454  // if loader is not the default loader (i.e., != NULL), we can't know the intrinsics
1455  // because we are not loading from core libraries
1456  // exception: the AES intrinsics come from lib/ext/sunjce_provider.jar
1457  // which does not use the class default class loader so we check for its loader here
1458  const InstanceKlass* ik = InstanceKlass::cast(holder);
1459  if ((ik->class_loader() != NULL) && !SystemDictionary::is_platform_class_loader(ik->class_loader())) {
1460    return vmSymbols::NO_SID;   // regardless of name, no intrinsics here
1461  }
1462
1463  // see if the klass name is well-known:
1464  Symbol* klass_name = ik->name();
1465  return vmSymbols::find_sid(klass_name);
1466}
1467
1468void Method::init_intrinsic_id() {
1469  assert(_intrinsic_id == vmIntrinsics::_none, "do this just once");
1470  const uintptr_t max_id_uint = right_n_bits((int)(sizeof(_intrinsic_id) * BitsPerByte));
1471  assert((uintptr_t)vmIntrinsics::ID_LIMIT <= max_id_uint, "else fix size");
1472  assert(intrinsic_id_size_in_bytes() == sizeof(_intrinsic_id), "");
1473
1474  // the klass name is well-known:
1475  vmSymbols::SID klass_id = klass_id_for_intrinsics(method_holder());
1476  assert(klass_id != vmSymbols::NO_SID, "caller responsibility");
1477
1478  // ditto for method and signature:
1479  vmSymbols::SID  name_id = vmSymbols::find_sid(name());
1480  if (klass_id != vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_MethodHandle)
1481      && klass_id != vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_VarHandle)
1482      && name_id == vmSymbols::NO_SID) {
1483    return;
1484  }
1485  vmSymbols::SID   sig_id = vmSymbols::find_sid(signature());
1486  if (klass_id != vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_MethodHandle)
1487      && klass_id != vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_VarHandle)
1488      && sig_id == vmSymbols::NO_SID) {
1489    return;
1490  }
1491  jshort flags = access_flags().as_short();
1492
1493  vmIntrinsics::ID id = vmIntrinsics::find_id(klass_id, name_id, sig_id, flags);
1494  if (id != vmIntrinsics::_none) {
1495    set_intrinsic_id(id);
1496    if (id == vmIntrinsics::_Class_cast) {
1497      // Even if the intrinsic is rejected, we want to inline this simple method.
1498      set_force_inline(true);
1499    }
1500    return;
1501  }
1502
1503  // A few slightly irregular cases:
1504  switch (klass_id) {
1505  case vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_StrictMath):
1506    // Second chance: check in regular Math.
1507    switch (name_id) {
1508    case vmSymbols::VM_SYMBOL_ENUM_NAME(min_name):
1509    case vmSymbols::VM_SYMBOL_ENUM_NAME(max_name):
1510    case vmSymbols::VM_SYMBOL_ENUM_NAME(sqrt_name):
1511      // pretend it is the corresponding method in the non-strict class:
1512      klass_id = vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_Math);
1513      id = vmIntrinsics::find_id(klass_id, name_id, sig_id, flags);
1514      break;
1515    default:
1516      break;
1517    }
1518    break;
1519
1520  // Signature-polymorphic methods: MethodHandle.invoke*, InvokeDynamic.*., VarHandle
1521  case vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_MethodHandle):
1522  case vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_VarHandle):
1523    if (!is_native())  break;
1524    id = MethodHandles::signature_polymorphic_name_id(method_holder(), name());
1525    if (is_static() != MethodHandles::is_signature_polymorphic_static(id))
1526      id = vmIntrinsics::_none;
1527    break;
1528
1529  default:
1530    break;
1531  }
1532
1533  if (id != vmIntrinsics::_none) {
1534    // Set up its iid.  It is an alias method.
1535    set_intrinsic_id(id);
1536    return;
1537  }
1538}
1539
1540// These two methods are static since a GC may move the Method
1541bool Method::load_signature_classes(const methodHandle& m, TRAPS) {
1542  if (!THREAD->can_call_java()) {
1543    // There is nothing useful this routine can do from within the Compile thread.
1544    // Hopefully, the signature contains only well-known classes.
1545    // We could scan for this and return true/false, but the caller won't care.
1546    return false;
1547  }
1548  bool sig_is_loaded = true;
1549  Handle class_loader(THREAD, m->method_holder()->class_loader());
1550  Handle protection_domain(THREAD, m->method_holder()->protection_domain());
1551  ResourceMark rm(THREAD);
1552  Symbol*  signature = m->signature();
1553  for(SignatureStream ss(signature); !ss.is_done(); ss.next()) {
1554    if (ss.is_object()) {
1555      Symbol* sym = ss.as_symbol(CHECK_(false));
1556      Symbol*  name  = sym;
1557      Klass* klass = SystemDictionary::resolve_or_null(name, class_loader,
1558                                             protection_domain, THREAD);
1559      // We are loading classes eagerly. If a ClassNotFoundException or
1560      // a LinkageError was generated, be sure to ignore it.
1561      if (HAS_PENDING_EXCEPTION) {
1562        if (PENDING_EXCEPTION->is_a(SystemDictionary::ClassNotFoundException_klass()) ||
1563            PENDING_EXCEPTION->is_a(SystemDictionary::LinkageError_klass())) {
1564          CLEAR_PENDING_EXCEPTION;
1565        } else {
1566          return false;
1567        }
1568      }
1569      if( klass == NULL) { sig_is_loaded = false; }
1570    }
1571  }
1572  return sig_is_loaded;
1573}
1574
1575bool Method::has_unloaded_classes_in_signature(const methodHandle& m, TRAPS) {
1576  Handle class_loader(THREAD, m->method_holder()->class_loader());
1577  Handle protection_domain(THREAD, m->method_holder()->protection_domain());
1578  ResourceMark rm(THREAD);
1579  Symbol*  signature = m->signature();
1580  for(SignatureStream ss(signature); !ss.is_done(); ss.next()) {
1581    if (ss.type() == T_OBJECT) {
1582      Symbol* name = ss.as_symbol_or_null();
1583      if (name == NULL) return true;
1584      Klass* klass = SystemDictionary::find(name, class_loader, protection_domain, THREAD);
1585      if (klass == NULL) return true;
1586    }
1587  }
1588  return false;
1589}
1590
1591// Exposed so field engineers can debug VM
1592void Method::print_short_name(outputStream* st) {
1593  ResourceMark rm;
1594#ifdef PRODUCT
1595  st->print(" %s::", method_holder()->external_name());
1596#else
1597  st->print(" %s::", method_holder()->internal_name());
1598#endif
1599  name()->print_symbol_on(st);
1600  if (WizardMode) signature()->print_symbol_on(st);
1601  else if (MethodHandles::is_signature_polymorphic(intrinsic_id()))
1602    MethodHandles::print_as_basic_type_signature_on(st, signature(), true);
1603}
1604
1605// Comparer for sorting an object array containing
1606// Method*s.
1607static int method_comparator(Method* a, Method* b) {
1608  return a->name()->fast_compare(b->name());
1609}
1610
1611// This is only done during class loading, so it is OK to assume method_idnum matches the methods() array
1612// default_methods also uses this without the ordering for fast find_method
1613void Method::sort_methods(Array<Method*>* methods, bool idempotent, bool set_idnums) {
1614  int length = methods->length();
1615  if (length > 1) {
1616    {
1617      NoSafepointVerifier nsv;
1618      QuickSort::sort(methods->data(), length, method_comparator, idempotent);
1619    }
1620    // Reset method ordering
1621    if (set_idnums) {
1622      for (int i = 0; i < length; i++) {
1623        Method* m = methods->at(i);
1624        m->set_method_idnum(i);
1625        m->set_orig_method_idnum(i);
1626      }
1627    }
1628  }
1629}
1630
1631//-----------------------------------------------------------------------------------
1632// Non-product code unless JVM/TI needs it
1633
1634#if !defined(PRODUCT) || INCLUDE_JVMTI
1635class SignatureTypePrinter : public SignatureTypeNames {
1636 private:
1637  outputStream* _st;
1638  bool _use_separator;
1639
1640  void type_name(const char* name) {
1641    if (_use_separator) _st->print(", ");
1642    _st->print("%s", name);
1643    _use_separator = true;
1644  }
1645
1646 public:
1647  SignatureTypePrinter(Symbol* signature, outputStream* st) : SignatureTypeNames(signature) {
1648    _st = st;
1649    _use_separator = false;
1650  }
1651
1652  void print_parameters()              { _use_separator = false; iterate_parameters(); }
1653  void print_returntype()              { _use_separator = false; iterate_returntype(); }
1654};
1655
1656
1657void Method::print_name(outputStream* st) {
1658  Thread *thread = Thread::current();
1659  ResourceMark rm(thread);
1660  st->print("%s ", is_static() ? "static" : "virtual");
1661  if (WizardMode) {
1662    st->print("%s.", method_holder()->internal_name());
1663    name()->print_symbol_on(st);
1664    signature()->print_symbol_on(st);
1665  } else {
1666    SignatureTypePrinter sig(signature(), st);
1667    sig.print_returntype();
1668    st->print(" %s.", method_holder()->internal_name());
1669    name()->print_symbol_on(st);
1670    st->print("(");
1671    sig.print_parameters();
1672    st->print(")");
1673  }
1674}
1675#endif // !PRODUCT || INCLUDE_JVMTI
1676
1677
1678void Method::print_codes_on(outputStream* st) const {
1679  print_codes_on(0, code_size(), st);
1680}
1681
1682void Method::print_codes_on(int from, int to, outputStream* st) const {
1683  Thread *thread = Thread::current();
1684  ResourceMark rm(thread);
1685  methodHandle mh (thread, (Method*)this);
1686  BytecodeStream s(mh);
1687  s.set_interval(from, to);
1688  BytecodeTracer::set_closure(BytecodeTracer::std_closure());
1689  while (s.next() >= 0) BytecodeTracer::trace(mh, s.bcp(), st);
1690}
1691
1692
1693// Simple compression of line number tables. We use a regular compressed stream, except that we compress deltas
1694// between (bci,line) pairs since they are smaller. If (bci delta, line delta) fits in (5-bit unsigned, 3-bit unsigned)
1695// we save it as one byte, otherwise we write a 0xFF escape character and use regular compression. 0x0 is used
1696// as end-of-stream terminator.
1697
1698void CompressedLineNumberWriteStream::write_pair_regular(int bci_delta, int line_delta) {
1699  // bci and line number does not compress into single byte.
1700  // Write out escape character and use regular compression for bci and line number.
1701  write_byte((jubyte)0xFF);
1702  write_signed_int(bci_delta);
1703  write_signed_int(line_delta);
1704}
1705
1706// See comment in method.hpp which explains why this exists.
1707#if defined(_M_AMD64) && _MSC_VER >= 1400
1708#pragma optimize("", off)
1709void CompressedLineNumberWriteStream::write_pair(int bci, int line) {
1710  write_pair_inline(bci, line);
1711}
1712#pragma optimize("", on)
1713#endif
1714
1715CompressedLineNumberReadStream::CompressedLineNumberReadStream(u_char* buffer) : CompressedReadStream(buffer) {
1716  _bci = 0;
1717  _line = 0;
1718};
1719
1720
1721bool CompressedLineNumberReadStream::read_pair() {
1722  jubyte next = read_byte();
1723  // Check for terminator
1724  if (next == 0) return false;
1725  if (next == 0xFF) {
1726    // Escape character, regular compression used
1727    _bci  += read_signed_int();
1728    _line += read_signed_int();
1729  } else {
1730    // Single byte compression used
1731    _bci  += next >> 3;
1732    _line += next & 0x7;
1733  }
1734  return true;
1735}
1736
1737#if INCLUDE_JVMTI
1738
1739Bytecodes::Code Method::orig_bytecode_at(int bci) const {
1740  BreakpointInfo* bp = method_holder()->breakpoints();
1741  for (; bp != NULL; bp = bp->next()) {
1742    if (bp->match(this, bci)) {
1743      return bp->orig_bytecode();
1744    }
1745  }
1746  {
1747    ResourceMark rm;
1748    fatal("no original bytecode found in %s at bci %d", name_and_sig_as_C_string(), bci);
1749  }
1750  return Bytecodes::_shouldnotreachhere;
1751}
1752
1753void Method::set_orig_bytecode_at(int bci, Bytecodes::Code code) {
1754  assert(code != Bytecodes::_breakpoint, "cannot patch breakpoints this way");
1755  BreakpointInfo* bp = method_holder()->breakpoints();
1756  for (; bp != NULL; bp = bp->next()) {
1757    if (bp->match(this, bci)) {
1758      bp->set_orig_bytecode(code);
1759      // and continue, in case there is more than one
1760    }
1761  }
1762}
1763
1764void Method::set_breakpoint(int bci) {
1765  InstanceKlass* ik = method_holder();
1766  BreakpointInfo *bp = new BreakpointInfo(this, bci);
1767  bp->set_next(ik->breakpoints());
1768  ik->set_breakpoints(bp);
1769  // do this last:
1770  bp->set(this);
1771}
1772
1773static void clear_matches(Method* m, int bci) {
1774  InstanceKlass* ik = m->method_holder();
1775  BreakpointInfo* prev_bp = NULL;
1776  BreakpointInfo* next_bp;
1777  for (BreakpointInfo* bp = ik->breakpoints(); bp != NULL; bp = next_bp) {
1778    next_bp = bp->next();
1779    // bci value of -1 is used to delete all breakpoints in method m (ex: clear_all_breakpoint).
1780    if (bci >= 0 ? bp->match(m, bci) : bp->match(m)) {
1781      // do this first:
1782      bp->clear(m);
1783      // unhook it
1784      if (prev_bp != NULL)
1785        prev_bp->set_next(next_bp);
1786      else
1787        ik->set_breakpoints(next_bp);
1788      delete bp;
1789      // When class is redefined JVMTI sets breakpoint in all versions of EMCP methods
1790      // at same location. So we have multiple matching (method_index and bci)
1791      // BreakpointInfo nodes in BreakpointInfo list. We should just delete one
1792      // breakpoint for clear_breakpoint request and keep all other method versions
1793      // BreakpointInfo for future clear_breakpoint request.
1794      // bcivalue of -1 is used to clear all breakpoints (see clear_all_breakpoints)
1795      // which is being called when class is unloaded. We delete all the Breakpoint
1796      // information for all versions of method. We may not correctly restore the original
1797      // bytecode in all method versions, but that is ok. Because the class is being unloaded
1798      // so these methods won't be used anymore.
1799      if (bci >= 0) {
1800        break;
1801      }
1802    } else {
1803      // This one is a keeper.
1804      prev_bp = bp;
1805    }
1806  }
1807}
1808
1809void Method::clear_breakpoint(int bci) {
1810  assert(bci >= 0, "");
1811  clear_matches(this, bci);
1812}
1813
1814void Method::clear_all_breakpoints() {
1815  clear_matches(this, -1);
1816}
1817
1818#endif // INCLUDE_JVMTI
1819
1820int Method::invocation_count() {
1821  MethodCounters *mcs = method_counters();
1822  if (TieredCompilation) {
1823    MethodData* const mdo = method_data();
1824    if (((mcs != NULL) ? mcs->invocation_counter()->carry() : false) ||
1825        ((mdo != NULL) ? mdo->invocation_counter()->carry() : false)) {
1826      return InvocationCounter::count_limit;
1827    } else {
1828      return ((mcs != NULL) ? mcs->invocation_counter()->count() : 0) +
1829             ((mdo != NULL) ? mdo->invocation_counter()->count() : 0);
1830    }
1831  } else {
1832    return (mcs == NULL) ? 0 : mcs->invocation_counter()->count();
1833  }
1834}
1835
1836int Method::backedge_count() {
1837  MethodCounters *mcs = method_counters();
1838  if (TieredCompilation) {
1839    MethodData* const mdo = method_data();
1840    if (((mcs != NULL) ? mcs->backedge_counter()->carry() : false) ||
1841        ((mdo != NULL) ? mdo->backedge_counter()->carry() : false)) {
1842      return InvocationCounter::count_limit;
1843    } else {
1844      return ((mcs != NULL) ? mcs->backedge_counter()->count() : 0) +
1845             ((mdo != NULL) ? mdo->backedge_counter()->count() : 0);
1846    }
1847  } else {
1848    return (mcs == NULL) ? 0 : mcs->backedge_counter()->count();
1849  }
1850}
1851
1852int Method::highest_comp_level() const {
1853  const MethodCounters* mcs = method_counters();
1854  if (mcs != NULL) {
1855    return mcs->highest_comp_level();
1856  } else {
1857    return CompLevel_none;
1858  }
1859}
1860
1861int Method::highest_osr_comp_level() const {
1862  const MethodCounters* mcs = method_counters();
1863  if (mcs != NULL) {
1864    return mcs->highest_osr_comp_level();
1865  } else {
1866    return CompLevel_none;
1867  }
1868}
1869
1870void Method::set_highest_comp_level(int level) {
1871  MethodCounters* mcs = method_counters();
1872  if (mcs != NULL) {
1873    mcs->set_highest_comp_level(level);
1874  }
1875}
1876
1877void Method::set_highest_osr_comp_level(int level) {
1878  MethodCounters* mcs = method_counters();
1879  if (mcs != NULL) {
1880    mcs->set_highest_osr_comp_level(level);
1881  }
1882}
1883
1884#if INCLUDE_JVMTI
1885
1886BreakpointInfo::BreakpointInfo(Method* m, int bci) {
1887  _bci = bci;
1888  _name_index = m->name_index();
1889  _signature_index = m->signature_index();
1890  _orig_bytecode = (Bytecodes::Code) *m->bcp_from(_bci);
1891  if (_orig_bytecode == Bytecodes::_breakpoint)
1892    _orig_bytecode = m->orig_bytecode_at(_bci);
1893  _next = NULL;
1894}
1895
1896void BreakpointInfo::set(Method* method) {
1897#ifdef ASSERT
1898  {
1899    Bytecodes::Code code = (Bytecodes::Code) *method->bcp_from(_bci);
1900    if (code == Bytecodes::_breakpoint)
1901      code = method->orig_bytecode_at(_bci);
1902    assert(orig_bytecode() == code, "original bytecode must be the same");
1903  }
1904#endif
1905  Thread *thread = Thread::current();
1906  *method->bcp_from(_bci) = Bytecodes::_breakpoint;
1907  method->incr_number_of_breakpoints(thread);
1908  SystemDictionary::notice_modification();
1909  {
1910    // Deoptimize all dependents on this method
1911    HandleMark hm(thread);
1912    methodHandle mh(thread, method);
1913    CodeCache::flush_dependents_on_method(mh);
1914  }
1915}
1916
1917void BreakpointInfo::clear(Method* method) {
1918  *method->bcp_from(_bci) = orig_bytecode();
1919  assert(method->number_of_breakpoints() > 0, "must not go negative");
1920  method->decr_number_of_breakpoints(Thread::current());
1921}
1922
1923#endif // INCLUDE_JVMTI
1924
1925// jmethodID handling
1926
1927// This is a block allocating object, sort of like JNIHandleBlock, only a
1928// lot simpler.
1929// It's allocated on the CHeap because once we allocate a jmethodID, we can
1930// never get rid of it.
1931
1932static const int min_block_size = 8;
1933
1934class JNIMethodBlockNode : public CHeapObj<mtClass> {
1935  friend class JNIMethodBlock;
1936  Method**        _methods;
1937  int             _number_of_methods;
1938  int             _top;
1939  JNIMethodBlockNode* _next;
1940
1941 public:
1942
1943  JNIMethodBlockNode(int num_methods = min_block_size);
1944
1945  ~JNIMethodBlockNode() { FREE_C_HEAP_ARRAY(Method*, _methods); }
1946
1947  void ensure_methods(int num_addl_methods) {
1948    if (_top < _number_of_methods) {
1949      num_addl_methods -= _number_of_methods - _top;
1950      if (num_addl_methods <= 0) {
1951        return;
1952      }
1953    }
1954    if (_next == NULL) {
1955      _next = new JNIMethodBlockNode(MAX2(num_addl_methods, min_block_size));
1956    } else {
1957      _next->ensure_methods(num_addl_methods);
1958    }
1959  }
1960};
1961
1962class JNIMethodBlock : public CHeapObj<mtClass> {
1963  JNIMethodBlockNode _head;
1964  JNIMethodBlockNode *_last_free;
1965 public:
1966  static Method* const _free_method;
1967
1968  JNIMethodBlock(int initial_capacity = min_block_size)
1969      : _head(initial_capacity), _last_free(&_head) {}
1970
1971  void ensure_methods(int num_addl_methods) {
1972    _last_free->ensure_methods(num_addl_methods);
1973  }
1974
1975  Method** add_method(Method* m) {
1976    for (JNIMethodBlockNode* b = _last_free; b != NULL; b = b->_next) {
1977      if (b->_top < b->_number_of_methods) {
1978        // top points to the next free entry.
1979        int i = b->_top;
1980        b->_methods[i] = m;
1981        b->_top++;
1982        _last_free = b;
1983        return &(b->_methods[i]);
1984      } else if (b->_top == b->_number_of_methods) {
1985        // if the next free entry ran off the block see if there's a free entry
1986        for (int i = 0; i < b->_number_of_methods; i++) {
1987          if (b->_methods[i] == _free_method) {
1988            b->_methods[i] = m;
1989            _last_free = b;
1990            return &(b->_methods[i]);
1991          }
1992        }
1993        // Only check each block once for frees.  They're very unlikely.
1994        // Increment top past the end of the block.
1995        b->_top++;
1996      }
1997      // need to allocate a next block.
1998      if (b->_next == NULL) {
1999        b->_next = _last_free = new JNIMethodBlockNode();
2000      }
2001    }
2002    guarantee(false, "Should always allocate a free block");
2003    return NULL;
2004  }
2005
2006  bool contains(Method** m) {
2007    if (m == NULL) return false;
2008    for (JNIMethodBlockNode* b = &_head; b != NULL; b = b->_next) {
2009      if (b->_methods <= m && m < b->_methods + b->_number_of_methods) {
2010        // This is a bit of extra checking, for two reasons.  One is
2011        // that contains() deals with pointers that are passed in by
2012        // JNI code, so making sure that the pointer is aligned
2013        // correctly is valuable.  The other is that <= and > are
2014        // technically not defined on pointers, so the if guard can
2015        // pass spuriously; no modern compiler is likely to make that
2016        // a problem, though (and if one did, the guard could also
2017        // fail spuriously, which would be bad).
2018        ptrdiff_t idx = m - b->_methods;
2019        if (b->_methods + idx == m) {
2020          return true;
2021        }
2022      }
2023    }
2024    return false;  // not found
2025  }
2026
2027  // Doesn't really destroy it, just marks it as free so it can be reused.
2028  void destroy_method(Method** m) {
2029#ifdef ASSERT
2030    assert(contains(m), "should be a methodID");
2031#endif // ASSERT
2032    *m = _free_method;
2033  }
2034
2035  // During class unloading the methods are cleared, which is different
2036  // than freed.
2037  void clear_all_methods() {
2038    for (JNIMethodBlockNode* b = &_head; b != NULL; b = b->_next) {
2039      for (int i = 0; i< b->_number_of_methods; i++) {
2040        b->_methods[i] = NULL;
2041      }
2042    }
2043  }
2044#ifndef PRODUCT
2045  int count_methods() {
2046    // count all allocated methods
2047    int count = 0;
2048    for (JNIMethodBlockNode* b = &_head; b != NULL; b = b->_next) {
2049      for (int i = 0; i< b->_number_of_methods; i++) {
2050        if (b->_methods[i] != _free_method) count++;
2051      }
2052    }
2053    return count;
2054  }
2055#endif // PRODUCT
2056};
2057
2058// Something that can't be mistaken for an address or a markOop
2059Method* const JNIMethodBlock::_free_method = (Method*)55;
2060
2061JNIMethodBlockNode::JNIMethodBlockNode(int num_methods) : _next(NULL), _top(0) {
2062  _number_of_methods = MAX2(num_methods, min_block_size);
2063  _methods = NEW_C_HEAP_ARRAY(Method*, _number_of_methods, mtInternal);
2064  for (int i = 0; i < _number_of_methods; i++) {
2065    _methods[i] = JNIMethodBlock::_free_method;
2066  }
2067}
2068
2069void Method::ensure_jmethod_ids(ClassLoaderData* loader_data, int capacity) {
2070  ClassLoaderData* cld = loader_data;
2071  if (!SafepointSynchronize::is_at_safepoint()) {
2072    // Have to add jmethod_ids() to class loader data thread-safely.
2073    // Also have to add the method to the list safely, which the cld lock
2074    // protects as well.
2075    MutexLockerEx ml(cld->metaspace_lock(),  Mutex::_no_safepoint_check_flag);
2076    if (cld->jmethod_ids() == NULL) {
2077      cld->set_jmethod_ids(new JNIMethodBlock(capacity));
2078    } else {
2079      cld->jmethod_ids()->ensure_methods(capacity);
2080    }
2081  } else {
2082    // At safepoint, we are single threaded and can set this.
2083    if (cld->jmethod_ids() == NULL) {
2084      cld->set_jmethod_ids(new JNIMethodBlock(capacity));
2085    } else {
2086      cld->jmethod_ids()->ensure_methods(capacity);
2087    }
2088  }
2089}
2090
2091// Add a method id to the jmethod_ids
2092jmethodID Method::make_jmethod_id(ClassLoaderData* loader_data, Method* m) {
2093  ClassLoaderData* cld = loader_data;
2094
2095  if (!SafepointSynchronize::is_at_safepoint()) {
2096    // Have to add jmethod_ids() to class loader data thread-safely.
2097    // Also have to add the method to the list safely, which the cld lock
2098    // protects as well.
2099    MutexLockerEx ml(cld->metaspace_lock(),  Mutex::_no_safepoint_check_flag);
2100    if (cld->jmethod_ids() == NULL) {
2101      cld->set_jmethod_ids(new JNIMethodBlock());
2102    }
2103    // jmethodID is a pointer to Method*
2104    return (jmethodID)cld->jmethod_ids()->add_method(m);
2105  } else {
2106    // At safepoint, we are single threaded and can set this.
2107    if (cld->jmethod_ids() == NULL) {
2108      cld->set_jmethod_ids(new JNIMethodBlock());
2109    }
2110    // jmethodID is a pointer to Method*
2111    return (jmethodID)cld->jmethod_ids()->add_method(m);
2112  }
2113}
2114
2115// Mark a jmethodID as free.  This is called when there is a data race in
2116// InstanceKlass while creating the jmethodID cache.
2117void Method::destroy_jmethod_id(ClassLoaderData* loader_data, jmethodID m) {
2118  ClassLoaderData* cld = loader_data;
2119  Method** ptr = (Method**)m;
2120  assert(cld->jmethod_ids() != NULL, "should have method handles");
2121  cld->jmethod_ids()->destroy_method(ptr);
2122}
2123
2124void Method::change_method_associated_with_jmethod_id(jmethodID jmid, Method* new_method) {
2125  // Can't assert the method_holder is the same because the new method has the
2126  // scratch method holder.
2127  assert(resolve_jmethod_id(jmid)->method_holder()->class_loader()
2128           == new_method->method_holder()->class_loader(),
2129         "changing to a different class loader");
2130  // Just change the method in place, jmethodID pointer doesn't change.
2131  *((Method**)jmid) = new_method;
2132}
2133
2134bool Method::is_method_id(jmethodID mid) {
2135  Method* m = resolve_jmethod_id(mid);
2136  assert(m != NULL, "should be called with non-null method");
2137  InstanceKlass* ik = m->method_holder();
2138  ClassLoaderData* cld = ik->class_loader_data();
2139  if (cld->jmethod_ids() == NULL) return false;
2140  return (cld->jmethod_ids()->contains((Method**)mid));
2141}
2142
2143Method* Method::checked_resolve_jmethod_id(jmethodID mid) {
2144  if (mid == NULL) return NULL;
2145  Method* o = resolve_jmethod_id(mid);
2146  if (o == NULL || o == JNIMethodBlock::_free_method || !((Metadata*)o)->is_method()) {
2147    return NULL;
2148  }
2149  return o;
2150};
2151
2152void Method::set_on_stack(const bool value) {
2153  // Set both the method itself and its constant pool.  The constant pool
2154  // on stack means some method referring to it is also on the stack.
2155  constants()->set_on_stack(value);
2156
2157  bool already_set = on_stack();
2158  _access_flags.set_on_stack(value);
2159  if (value && !already_set) {
2160    MetadataOnStackMark::record(this);
2161  }
2162}
2163
2164// Called when the class loader is unloaded to make all methods weak.
2165void Method::clear_jmethod_ids(ClassLoaderData* loader_data) {
2166  loader_data->jmethod_ids()->clear_all_methods();
2167}
2168
2169bool Method::has_method_vptr(const void* ptr) {
2170  Method m;
2171  // This assumes that the vtbl pointer is the first word of a C++ object.
2172  return dereference_vptr(&m) == dereference_vptr(ptr);
2173}
2174
2175// Check that this pointer is valid by checking that the vtbl pointer matches
2176bool Method::is_valid_method() const {
2177  if (this == NULL) {
2178    return false;
2179  } else if ((intptr_t(this) & (wordSize-1)) != 0) {
2180    // Quick sanity check on pointer.
2181    return false;
2182  } else if (MetaspaceShared::is_in_shared_space(this)) {
2183    return MetaspaceShared::is_valid_shared_method(this);
2184  } else if (Metaspace::contains_non_shared(this)) {
2185    return has_method_vptr((const void*)this);
2186  } else {
2187    return false;
2188  }
2189}
2190
2191#ifndef PRODUCT
2192void Method::print_jmethod_ids(ClassLoaderData* loader_data, outputStream* out) {
2193  out->print_cr("jni_method_id count = %d", loader_data->jmethod_ids()->count_methods());
2194}
2195#endif // PRODUCT
2196
2197
2198// Printing
2199
2200#ifndef PRODUCT
2201
2202void Method::print_on(outputStream* st) const {
2203  ResourceMark rm;
2204  assert(is_method(), "must be method");
2205  st->print_cr("%s", internal_name());
2206  st->print_cr(" - this oop:          " INTPTR_FORMAT, p2i(this));
2207  st->print   (" - method holder:     "); method_holder()->print_value_on(st); st->cr();
2208  st->print   (" - constants:         " INTPTR_FORMAT " ", p2i(constants()));
2209  constants()->print_value_on(st); st->cr();
2210  st->print   (" - access:            0x%x  ", access_flags().as_int()); access_flags().print_on(st); st->cr();
2211  st->print   (" - name:              ");    name()->print_value_on(st); st->cr();
2212  st->print   (" - signature:         ");    signature()->print_value_on(st); st->cr();
2213  st->print_cr(" - max stack:         %d",   max_stack());
2214  st->print_cr(" - max locals:        %d",   max_locals());
2215  st->print_cr(" - size of params:    %d",   size_of_parameters());
2216  st->print_cr(" - method size:       %d",   method_size());
2217  if (intrinsic_id() != vmIntrinsics::_none)
2218    st->print_cr(" - intrinsic id:      %d %s", intrinsic_id(), vmIntrinsics::name_at(intrinsic_id()));
2219  if (highest_comp_level() != CompLevel_none)
2220    st->print_cr(" - highest level:     %d", highest_comp_level());
2221  st->print_cr(" - vtable index:      %d",   _vtable_index);
2222  st->print_cr(" - i2i entry:         " INTPTR_FORMAT, p2i(interpreter_entry()));
2223  st->print(   " - adapters:          ");
2224  AdapterHandlerEntry* a = ((Method*)this)->adapter();
2225  if (a == NULL)
2226    st->print_cr(INTPTR_FORMAT, p2i(a));
2227  else
2228    a->print_adapter_on(st);
2229  st->print_cr(" - compiled entry     " INTPTR_FORMAT, p2i(from_compiled_entry()));
2230  st->print_cr(" - code size:         %d",   code_size());
2231  if (code_size() != 0) {
2232    st->print_cr(" - code start:        " INTPTR_FORMAT, p2i(code_base()));
2233    st->print_cr(" - code end (excl):   " INTPTR_FORMAT, p2i(code_base() + code_size()));
2234  }
2235  if (method_data() != NULL) {
2236    st->print_cr(" - method data:       " INTPTR_FORMAT, p2i(method_data()));
2237  }
2238  st->print_cr(" - checked ex length: %d",   checked_exceptions_length());
2239  if (checked_exceptions_length() > 0) {
2240    CheckedExceptionElement* table = checked_exceptions_start();
2241    st->print_cr(" - checked ex start:  " INTPTR_FORMAT, p2i(table));
2242    if (Verbose) {
2243      for (int i = 0; i < checked_exceptions_length(); i++) {
2244        st->print_cr("   - throws %s", constants()->printable_name_at(table[i].class_cp_index));
2245      }
2246    }
2247  }
2248  if (has_linenumber_table()) {
2249    u_char* table = compressed_linenumber_table();
2250    st->print_cr(" - linenumber start:  " INTPTR_FORMAT, p2i(table));
2251    if (Verbose) {
2252      CompressedLineNumberReadStream stream(table);
2253      while (stream.read_pair()) {
2254        st->print_cr("   - line %d: %d", stream.line(), stream.bci());
2255      }
2256    }
2257  }
2258  st->print_cr(" - localvar length:   %d",   localvariable_table_length());
2259  if (localvariable_table_length() > 0) {
2260    LocalVariableTableElement* table = localvariable_table_start();
2261    st->print_cr(" - localvar start:    " INTPTR_FORMAT, p2i(table));
2262    if (Verbose) {
2263      for (int i = 0; i < localvariable_table_length(); i++) {
2264        int bci = table[i].start_bci;
2265        int len = table[i].length;
2266        const char* name = constants()->printable_name_at(table[i].name_cp_index);
2267        const char* desc = constants()->printable_name_at(table[i].descriptor_cp_index);
2268        int slot = table[i].slot;
2269        st->print_cr("   - %s %s bci=%d len=%d slot=%d", desc, name, bci, len, slot);
2270      }
2271    }
2272  }
2273  if (code() != NULL) {
2274    st->print   (" - compiled code: ");
2275    code()->print_value_on(st);
2276  }
2277  if (is_native()) {
2278    st->print_cr(" - native function:   " INTPTR_FORMAT, p2i(native_function()));
2279    st->print_cr(" - signature handler: " INTPTR_FORMAT, p2i(signature_handler()));
2280  }
2281}
2282
2283void Method::print_linkage_flags(outputStream* st) {
2284  access_flags().print_on(st);
2285  if (is_default_method()) {
2286    st->print("default ");
2287  }
2288  if (is_overpass()) {
2289    st->print("overpass ");
2290  }
2291}
2292#endif //PRODUCT
2293
2294void Method::print_value_on(outputStream* st) const {
2295  assert(is_method(), "must be method");
2296  st->print("%s", internal_name());
2297  print_address_on(st);
2298  st->print(" ");
2299  name()->print_value_on(st);
2300  st->print(" ");
2301  signature()->print_value_on(st);
2302  st->print(" in ");
2303  method_holder()->print_value_on(st);
2304  if (WizardMode) st->print("#%d", _vtable_index);
2305  if (WizardMode) st->print("[%d,%d]", size_of_parameters(), max_locals());
2306  if (WizardMode && code() != NULL) st->print(" ((nmethod*)%p)", code());
2307}
2308
2309#if INCLUDE_SERVICES
2310// Size Statistics
2311void Method::collect_statistics(KlassSizeStats *sz) const {
2312  int mysize = sz->count(this);
2313  sz->_method_bytes += mysize;
2314  sz->_method_all_bytes += mysize;
2315  sz->_rw_bytes += mysize;
2316
2317  if (constMethod()) {
2318    constMethod()->collect_statistics(sz);
2319  }
2320  if (method_data()) {
2321    method_data()->collect_statistics(sz);
2322  }
2323}
2324#endif // INCLUDE_SERVICES
2325
2326// LogTouchedMethods and PrintTouchedMethods
2327
2328// TouchedMethodRecord -- we can't use a HashtableEntry<Method*> because
2329// the Method may be garbage collected. Let's roll our own hash table.
2330class TouchedMethodRecord : CHeapObj<mtTracing> {
2331public:
2332  // It's OK to store Symbols here because they will NOT be GC'ed if
2333  // LogTouchedMethods is enabled.
2334  TouchedMethodRecord* _next;
2335  Symbol* _class_name;
2336  Symbol* _method_name;
2337  Symbol* _method_signature;
2338};
2339
2340static const int TOUCHED_METHOD_TABLE_SIZE = 20011;
2341static TouchedMethodRecord** _touched_method_table = NULL;
2342
2343void Method::log_touched(TRAPS) {
2344
2345  const int table_size = TOUCHED_METHOD_TABLE_SIZE;
2346  Symbol* my_class = klass_name();
2347  Symbol* my_name  = name();
2348  Symbol* my_sig   = signature();
2349
2350  unsigned int hash = my_class->identity_hash() +
2351                      my_name->identity_hash() +
2352                      my_sig->identity_hash();
2353  juint index = juint(hash) % table_size;
2354
2355  MutexLocker ml(TouchedMethodLog_lock, THREAD);
2356  if (_touched_method_table == NULL) {
2357    _touched_method_table = NEW_C_HEAP_ARRAY2(TouchedMethodRecord*, table_size,
2358                                              mtTracing, CURRENT_PC);
2359    memset(_touched_method_table, 0, sizeof(TouchedMethodRecord*)*table_size);
2360  }
2361
2362  TouchedMethodRecord* ptr = _touched_method_table[index];
2363  while (ptr) {
2364    if (ptr->_class_name       == my_class &&
2365        ptr->_method_name      == my_name &&
2366        ptr->_method_signature == my_sig) {
2367      return;
2368    }
2369    if (ptr->_next == NULL) break;
2370    ptr = ptr->_next;
2371  }
2372  TouchedMethodRecord* nptr = NEW_C_HEAP_OBJ(TouchedMethodRecord, mtTracing);
2373  my_class->set_permanent();  // prevent reclaimed by GC
2374  my_name->set_permanent();
2375  my_sig->set_permanent();
2376  nptr->_class_name         = my_class;
2377  nptr->_method_name        = my_name;
2378  nptr->_method_signature   = my_sig;
2379  nptr->_next               = NULL;
2380
2381  if (ptr == NULL) {
2382    // first
2383    _touched_method_table[index] = nptr;
2384  } else {
2385    ptr->_next = nptr;
2386  }
2387}
2388
2389void Method::print_touched_methods(outputStream* out) {
2390  MutexLockerEx ml(Thread::current()->is_VM_thread() ? NULL : TouchedMethodLog_lock);
2391  out->print_cr("# Method::print_touched_methods version 1");
2392  if (_touched_method_table) {
2393    for (int i = 0; i < TOUCHED_METHOD_TABLE_SIZE; i++) {
2394      TouchedMethodRecord* ptr = _touched_method_table[i];
2395      while(ptr) {
2396        ptr->_class_name->print_symbol_on(out);       out->print(".");
2397        ptr->_method_name->print_symbol_on(out);      out->print(":");
2398        ptr->_method_signature->print_symbol_on(out); out->cr();
2399        ptr = ptr->_next;
2400      }
2401    }
2402  }
2403}
2404
2405// Verification
2406
2407void Method::verify_on(outputStream* st) {
2408  guarantee(is_method(), "object must be method");
2409  guarantee(constants()->is_constantPool(), "should be constant pool");
2410  guarantee(constMethod()->is_constMethod(), "should be ConstMethod*");
2411  MethodData* md = method_data();
2412  guarantee(md == NULL ||
2413      md->is_methodData(), "should be method data");
2414}
2415