comparison src/share/vm/adlc/output_c.cpp @ 17791:ad3b94907eed

8030863: PPC64: (part 220): ConstantTableBase for calls between args and jvms Summary: Add ConstantTableBase node edge after parameters and before jvms. Adapt jvms offsets. Reviewed-by: kvn
author goetz
date Fri, 20 Dec 2013 13:51:14 +0100
parents 492e67693373
children abec000618bf a9becfeecd1b
comparison
equal deleted inserted replaced
17790:5da8bb64b370 17791:ad3b94907eed
1840 // If the node is a MachConstantNode, insert the MachConstantBaseNode edge. 1840 // If the node is a MachConstantNode, insert the MachConstantBaseNode edge.
1841 // NOTE: this edge must be the last input (see MachConstantNode::mach_constant_base_node_input). 1841 // NOTE: this edge must be the last input (see MachConstantNode::mach_constant_base_node_input).
1842 // There are nodes that don't use $constantablebase, but still require that it 1842 // There are nodes that don't use $constantablebase, but still require that it
1843 // is an input to the node. Example: divF_reg_immN, Repl32B_imm on x86_64. 1843 // is an input to the node. Example: divF_reg_immN, Repl32B_imm on x86_64.
1844 if (node->is_mach_constant() || node->needs_constant_base()) { 1844 if (node->is_mach_constant() || node->needs_constant_base()) {
1845 fprintf(fp," add_req(C->mach_constant_base_node());\n"); 1845 if (node->is_ideal_call() != Form::invalid_type &&
1846 } 1846 node->is_ideal_call() != Form::JAVA_LEAF) {
1847 1847 fprintf(fp, " // MachConstantBaseNode added in matcher.\n");
1848 fprintf(fp,"\n"); 1848 _needs_clone_jvms = true;
1849 if( node->expands() ) { 1849 } else {
1850 fprintf(fp," return result;\n"); 1850 fprintf(fp, " add_req(C->mach_constant_base_node());\n");
1851 }
1852 }
1853
1854 fprintf(fp, "\n");
1855 if (node->expands()) {
1856 fprintf(fp, " return result;\n");
1851 } else { 1857 } else {
1852 fprintf(fp," return this;\n"); 1858 fprintf(fp, " return this;\n");
1853 } 1859 }
1854 fprintf(fp,"}\n"); 1860 fprintf(fp, "}\n");
1855 fprintf(fp,"\n"); 1861 fprintf(fp, "\n");
1856 } 1862 }
1857 1863
1858 1864
1859 //------------------------------Emit Routines---------------------------------- 1865 //------------------------------Emit Routines----------------------------------
1860 // Special classes and routines for defining node emit routines which output 1866 // Special classes and routines for defining node emit routines which output
3640 else callconv = 'Z'; 3646 else callconv = 'Z';
3641 3647
3642 return callconv; 3648 return callconv;
3643 } 3649 }
3644 3650
3651 void ArchDesc::generate_needs_clone_jvms(FILE *fp_cpp) {
3652 fprintf(fp_cpp, "bool Compile::needs_clone_jvms() { return %s; }\n\n",
3653 _needs_clone_jvms ? "true" : "false");
3654 }
3655
3645 //---------------------------generate_assertion_checks------------------- 3656 //---------------------------generate_assertion_checks-------------------
3646 void ArchDesc::generate_adlc_verification(FILE *fp_cpp) { 3657 void ArchDesc::generate_adlc_verification(FILE *fp_cpp) {
3647 fprintf(fp_cpp, "\n"); 3658 fprintf(fp_cpp, "\n");
3648 3659
3649 fprintf(fp_cpp, "#ifndef PRODUCT\n"); 3660 fprintf(fp_cpp, "#ifndef PRODUCT\n");