Mercurial > hg > truffle
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"); |