666 CallJavaNode(const TypeFunc* tf , address addr, ciMethod* method, int bci) 667 : CallNode(tf, addr, TypePtr::BOTTOM), 668 _optimized_virtual(false), 669 _method_handle_invoke(false), 670 _override_symbolic_info(false), 671 _method(method), _bci(bci) 672 { 673 init_class_id(Class_CallJava); 674 } 675 676 virtual int Opcode() const; 677 ciMethod* method() const { return _method; } 678 void set_method(ciMethod *m) { _method = m; } 679 void set_optimized_virtual(bool f) { _optimized_virtual = f; } 680 bool is_optimized_virtual() const { return _optimized_virtual; } 681 void set_method_handle_invoke(bool f) { _method_handle_invoke = f; } 682 bool is_method_handle_invoke() const { return _method_handle_invoke; } 683 void set_override_symbolic_info(bool f) { _override_symbolic_info = f; } 684 bool override_symbolic_info() const { return _override_symbolic_info; } 685 686 #ifndef PRODUCT 687 virtual void dump_spec(outputStream *st) const; 688 virtual void dump_compact_spec(outputStream *st) const; 689 #endif 690 }; 691 692 //------------------------------CallStaticJavaNode----------------------------- 693 // Make a direct subroutine call using Java calling convention (for static 694 // calls and optimized virtual calls, plus calls to wrappers for run-time 695 // routines); generates static stub. 696 class CallStaticJavaNode : public CallJavaNode { 697 virtual uint cmp( const Node &n ) const; 698 virtual uint size_of() const; // Size is bigger 699 public: 700 CallStaticJavaNode(Compile* C, const TypeFunc* tf, address addr, ciMethod* method, int bci) 701 : CallJavaNode(tf, addr, method, bci) { 702 init_class_id(Class_CallStaticJava); 703 if (C->eliminate_boxing() && (method != NULL) && method->is_boxing_method()) { 704 init_flags(Flag_is_macro); 705 C->add_macro_node(this); | 666 CallJavaNode(const TypeFunc* tf , address addr, ciMethod* method, int bci) 667 : CallNode(tf, addr, TypePtr::BOTTOM), 668 _optimized_virtual(false), 669 _method_handle_invoke(false), 670 _override_symbolic_info(false), 671 _method(method), _bci(bci) 672 { 673 init_class_id(Class_CallJava); 674 } 675 676 virtual int Opcode() const; 677 ciMethod* method() const { return _method; } 678 void set_method(ciMethod *m) { _method = m; } 679 void set_optimized_virtual(bool f) { _optimized_virtual = f; } 680 bool is_optimized_virtual() const { return _optimized_virtual; } 681 void set_method_handle_invoke(bool f) { _method_handle_invoke = f; } 682 bool is_method_handle_invoke() const { return _method_handle_invoke; } 683 void set_override_symbolic_info(bool f) { _override_symbolic_info = f; } 684 bool override_symbolic_info() const { return _override_symbolic_info; } 685 686 DEBUG_ONLY( bool validate_symbolic_info() const; ) 687 688 #ifndef PRODUCT 689 virtual void dump_spec(outputStream *st) const; 690 virtual void dump_compact_spec(outputStream *st) const; 691 #endif 692 }; 693 694 //------------------------------CallStaticJavaNode----------------------------- 695 // Make a direct subroutine call using Java calling convention (for static 696 // calls and optimized virtual calls, plus calls to wrappers for run-time 697 // routines); generates static stub. 698 class CallStaticJavaNode : public CallJavaNode { 699 virtual uint cmp( const Node &n ) const; 700 virtual uint size_of() const; // Size is bigger 701 public: 702 CallStaticJavaNode(Compile* C, const TypeFunc* tf, address addr, ciMethod* method, int bci) 703 : CallJavaNode(tf, addr, method, bci) { 704 init_class_id(Class_CallStaticJava); 705 if (C->eliminate_boxing() && (method != NULL) && method->is_boxing_method()) { 706 init_flags(Flag_is_macro); 707 C->add_macro_node(this); |