26 #define SHARE_VM_OPTO_CALLGENERATOR_HPP
27
28 #include "compiler/compileBroker.hpp"
29 #include "opto/callnode.hpp"
30 #include "opto/compile.hpp"
31 #include "opto/type.hpp"
32 #include "runtime/deoptimization.hpp"
33
34 //---------------------------CallGenerator-------------------------------------
35 // The subclasses of this class handle generation of ideal nodes for
36 // call sites and method entry points.
37
38 class CallGenerator : public ResourceObj {
39 public:
40 enum {
41 xxxunusedxxx
42 };
43
44 private:
45 ciMethod* _method; // The method being called.
46
47 protected:
48 CallGenerator(ciMethod* method) : _method(method) {}
49
50 public:
51 // Accessors
52 ciMethod* method() const { return _method; }
53
54 // is_inline: At least some code implementing the method is copied here.
55 virtual bool is_inline() const { return false; }
56 // is_intrinsic: There's a method-specific way of generating the inline code.
57 virtual bool is_intrinsic() const { return false; }
58 // is_parse: Bytecodes implementing the specific method are copied here.
59 virtual bool is_parse() const { return false; }
60 // is_virtual: The call uses the receiver type to select or check the method.
61 virtual bool is_virtual() const { return false; }
62 // is_deferred: The decision whether to inline or not is deferred.
63 virtual bool is_deferred() const { return false; }
64 // is_predicated: Uses an explicit check (predicate).
65 virtual bool is_predicated() const { return false; }
66 virtual int predicates_count() const { return 0; }
67 // is_trap: Does not return to the caller. (E.g., uncommon trap.)
68 virtual bool is_trap() const { return false; }
69 // does_virtual_dispatch: Should try inlining as normal method first.
70 virtual bool does_virtual_dispatch() const { return false; }
71
72 // is_late_inline: supports conversion of call into an inline
|
26 #define SHARE_VM_OPTO_CALLGENERATOR_HPP
27
28 #include "compiler/compileBroker.hpp"
29 #include "opto/callnode.hpp"
30 #include "opto/compile.hpp"
31 #include "opto/type.hpp"
32 #include "runtime/deoptimization.hpp"
33
34 //---------------------------CallGenerator-------------------------------------
35 // The subclasses of this class handle generation of ideal nodes for
36 // call sites and method entry points.
37
38 class CallGenerator : public ResourceObj {
39 public:
40 enum {
41 xxxunusedxxx
42 };
43
44 private:
45 ciMethod* _method; // The method being called.
46 bool _override_symbolic_info;
47
48 protected:
49 CallGenerator(ciMethod* method) : _method(method), _override_symbolic_info(false) {}
50
51 public:
52 // Accessors
53 ciMethod* method() const { return _method; }
54 void set_override_symbolic_info(bool x) { _override_symbolic_info = x; }
55 bool override_symbolic_info() const { return _override_symbolic_info; }
56
57
58 // is_inline: At least some code implementing the method is copied here.
59 virtual bool is_inline() const { return false; }
60 // is_intrinsic: There's a method-specific way of generating the inline code.
61 virtual bool is_intrinsic() const { return false; }
62 // is_parse: Bytecodes implementing the specific method are copied here.
63 virtual bool is_parse() const { return false; }
64 // is_virtual: The call uses the receiver type to select or check the method.
65 virtual bool is_virtual() const { return false; }
66 // is_deferred: The decision whether to inline or not is deferred.
67 virtual bool is_deferred() const { return false; }
68 // is_predicated: Uses an explicit check (predicate).
69 virtual bool is_predicated() const { return false; }
70 virtual int predicates_count() const { return 0; }
71 // is_trap: Does not return to the caller. (E.g., uncommon trap.)
72 virtual bool is_trap() const { return false; }
73 // does_virtual_dispatch: Should try inlining as normal method first.
74 virtual bool does_virtual_dispatch() const { return false; }
75
76 // is_late_inline: supports conversion of call into an inline
|