2808 new_in_regs[argcnt+1].set_bad(); 2809 argcnt++; 2810 break; 2811 default: 2812 // No conversion needed. 2813 new_in_sig_bt[argcnt] = bt; 2814 new_in_regs[argcnt] = reg; 2815 break; 2816 } 2817 } 2818 assert(argcnt == i2l_argcnt, "must match"); 2819 2820 in_regs = new_in_regs; 2821 in_sig_bt = new_in_sig_bt; 2822 in_args_count = i2l_argcnt; 2823 } else { 2824 assert(0, "This should not be needed on this platform"); 2825 } 2826 } 2827 2828 // ------------------------------------------------------------------------- 2829 // Java-Java calling convention 2830 // (what you use when Java calls Java) 2831 2832 //------------------------------name_for_receiver---------------------------------- 2833 // For a given signature, return the VMReg for parameter 0. 2834 VMReg SharedRuntime::name_for_receiver() { 2835 VMRegPair regs; 2836 BasicType sig_bt = T_OBJECT; 2837 (void) java_calling_convention(&sig_bt, ®s, 1, true); 2838 // Return argument 0 register. In the LP64 build pointers 2839 // take 2 registers, but the VM wants only the 'main' name. 2840 return regs.first(); 2841 } 2842 2843 VMRegPair *SharedRuntime::find_callee_arguments(Symbol* sig, bool has_receiver, bool has_appendix, int* arg_size) { 2844 // This method is returning a data structure allocating as a 2845 // ResourceObject, so do not put any ResourceMarks in here. 2846 char *s = sig->as_C_string(); 2847 int len = (int)strlen(s); | 2808 new_in_regs[argcnt+1].set_bad(); 2809 argcnt++; 2810 break; 2811 default: 2812 // No conversion needed. 2813 new_in_sig_bt[argcnt] = bt; 2814 new_in_regs[argcnt] = reg; 2815 break; 2816 } 2817 } 2818 assert(argcnt == i2l_argcnt, "must match"); 2819 2820 in_regs = new_in_regs; 2821 in_sig_bt = new_in_sig_bt; 2822 in_args_count = i2l_argcnt; 2823 } else { 2824 assert(0, "This should not be needed on this platform"); 2825 } 2826 } 2827 2828 JRT_LEAF(oopDesc*, SharedRuntime::pin_object(JavaThread* thread, oopDesc* obj)) 2829 assert(Universe::heap()->supports_object_pinning(), "Why we here?"); 2830 assert(obj != NULL, "Should not be null"); 2831 oop o(obj); 2832 o = Universe::heap()->pin_object(thread, o); 2833 assert(o != NULL, "Should not be null"); 2834 return o; 2835 JRT_END 2836 2837 JRT_LEAF(void, SharedRuntime::unpin_object(JavaThread* thread, oopDesc* obj)) 2838 assert(Universe::heap()->supports_object_pinning(), "Why we here?"); 2839 assert(obj != NULL, "Should not be null"); 2840 oop o(obj); 2841 Universe::heap()->unpin_object(thread, o); 2842 JRT_END 2843 2844 // ------------------------------------------------------------------------- 2845 // Java-Java calling convention 2846 // (what you use when Java calls Java) 2847 2848 //------------------------------name_for_receiver---------------------------------- 2849 // For a given signature, return the VMReg for parameter 0. 2850 VMReg SharedRuntime::name_for_receiver() { 2851 VMRegPair regs; 2852 BasicType sig_bt = T_OBJECT; 2853 (void) java_calling_convention(&sig_bt, ®s, 1, true); 2854 // Return argument 0 register. In the LP64 build pointers 2855 // take 2 registers, but the VM wants only the 'main' name. 2856 return regs.first(); 2857 } 2858 2859 VMRegPair *SharedRuntime::find_callee_arguments(Symbol* sig, bool has_receiver, bool has_appendix, int* arg_size) { 2860 // This method is returning a data structure allocating as a 2861 // ResourceObject, so do not put any ResourceMarks in here. 2862 char *s = sig->as_C_string(); 2863 int len = (int)strlen(s); |