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"); |