src/share/vm/ci/ciMethod.cpp

Print this page
rev 13113 : 8182651: Add TRACE_ONLY conditional macro to support more fine-grained INCLUDE_TRACE programming
Reviewed-by:


  29 #include "ci/ciMethod.hpp"
  30 #include "ci/ciMethodBlocks.hpp"
  31 #include "ci/ciMethodData.hpp"
  32 #include "ci/ciStreams.hpp"
  33 #include "ci/ciSymbol.hpp"
  34 #include "ci/ciReplay.hpp"
  35 #include "ci/ciUtilities.hpp"
  36 #include "classfile/systemDictionary.hpp"
  37 #include "compiler/abstractCompiler.hpp"
  38 #include "compiler/methodLiveness.hpp"
  39 #include "interpreter/interpreter.hpp"
  40 #include "interpreter/linkResolver.hpp"
  41 #include "interpreter/oopMapCache.hpp"
  42 #include "memory/allocation.inline.hpp"
  43 #include "memory/resourceArea.hpp"
  44 #include "oops/generateOopMap.hpp"
  45 #include "oops/oop.inline.hpp"
  46 #include "prims/nativeLookup.hpp"
  47 #include "runtime/deoptimization.hpp"
  48 #include "utilities/bitMap.inline.hpp"

  49 #include "utilities/xmlstream.hpp"
  50 #include "trace/tracing.hpp"
  51 #ifdef COMPILER2
  52 #include "ci/bcEscapeAnalyzer.hpp"
  53 #include "ci/ciTypeFlow.hpp"
  54 #include "oops/method.hpp"
  55 #endif
  56 #ifdef SHARK
  57 #include "ci/ciTypeFlow.hpp"
  58 #include "oops/method.hpp"
  59 #endif
  60 
  61 // ciMethod
  62 //
  63 // This class represents a Method* in the HotSpot virtual
  64 // machine.
  65 
  66 
  67 // ------------------------------------------------------------------
  68 // ciMethod::ciMethod
  69 //
  70 // Loaded method.


1494       break;
1495     }
1496   }
1497   assert(target_sig->count() - rbase == linker_sig->count() - sbase - has_appendix, "argument count mismatch");
1498   int arg_count = target_sig->count() - rbase;
1499   for (int i = 0; i < arg_count; i++) {
1500     if (!basic_types_match(linker_sig->type_at(sbase + i), target_sig->type_at(rbase + i))) {
1501       return false;
1502     }
1503   }
1504   // Only check the return type if the symbolic info has non-void return type.
1505   // I.e. the return value of the resolved method can be dropped.
1506   if (!linker->return_type()->is_void() &&
1507       !basic_types_match(linker->return_type(), target->return_type())) {
1508     return false;
1509   }
1510   return true; // no mismatch found
1511 }
1512 
1513 // ------------------------------------------------------------------
1514 
1515 #if INCLUDE_TRACE
1516 TraceStructCalleeMethod ciMethod::to_trace_struct() const {
1517   TraceStructCalleeMethod result;
1518   result.set_type(holder()->name()->as_utf8());
1519   result.set_name(name()->as_utf8());
1520   result.set_descriptor(signature()->as_symbol()->as_utf8());
1521   return result;
1522 }
1523 #endif


  29 #include "ci/ciMethod.hpp"
  30 #include "ci/ciMethodBlocks.hpp"
  31 #include "ci/ciMethodData.hpp"
  32 #include "ci/ciStreams.hpp"
  33 #include "ci/ciSymbol.hpp"
  34 #include "ci/ciReplay.hpp"
  35 #include "ci/ciUtilities.hpp"
  36 #include "classfile/systemDictionary.hpp"
  37 #include "compiler/abstractCompiler.hpp"
  38 #include "compiler/methodLiveness.hpp"
  39 #include "interpreter/interpreter.hpp"
  40 #include "interpreter/linkResolver.hpp"
  41 #include "interpreter/oopMapCache.hpp"
  42 #include "memory/allocation.inline.hpp"
  43 #include "memory/resourceArea.hpp"
  44 #include "oops/generateOopMap.hpp"
  45 #include "oops/oop.inline.hpp"
  46 #include "prims/nativeLookup.hpp"
  47 #include "runtime/deoptimization.hpp"
  48 #include "utilities/bitMap.inline.hpp"
  49 #include "utilities/macros.hpp"
  50 #include "utilities/xmlstream.hpp"

  51 #ifdef COMPILER2
  52 #include "ci/bcEscapeAnalyzer.hpp"
  53 #include "ci/ciTypeFlow.hpp"
  54 #include "oops/method.hpp"
  55 #endif
  56 #ifdef SHARK
  57 #include "ci/ciTypeFlow.hpp"
  58 #include "oops/method.hpp"
  59 #endif
  60 
  61 // ciMethod
  62 //
  63 // This class represents a Method* in the HotSpot virtual
  64 // machine.
  65 
  66 
  67 // ------------------------------------------------------------------
  68 // ciMethod::ciMethod
  69 //
  70 // Loaded method.


1494       break;
1495     }
1496   }
1497   assert(target_sig->count() - rbase == linker_sig->count() - sbase - has_appendix, "argument count mismatch");
1498   int arg_count = target_sig->count() - rbase;
1499   for (int i = 0; i < arg_count; i++) {
1500     if (!basic_types_match(linker_sig->type_at(sbase + i), target_sig->type_at(rbase + i))) {
1501       return false;
1502     }
1503   }
1504   // Only check the return type if the symbolic info has non-void return type.
1505   // I.e. the return value of the resolved method can be dropped.
1506   if (!linker->return_type()->is_void() &&
1507       !basic_types_match(linker->return_type(), target->return_type())) {
1508     return false;
1509   }
1510   return true; // no mismatch found
1511 }
1512 
1513 // ------------------------------------------------------------------