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 // ------------------------------------------------------------------
|