3077 3078 // Construct the method called by cisc_version() to copy inputs and operands. 3079 define_fill_new_machnode(used, fp); 3080 3081 // Output the definitions for labels 3082 _instructions.reset(); 3083 while( (instr = (InstructForm*)_instructions.iter()) != NULL ) { 3084 // Ensure this is a machine-world instruction 3085 if ( instr->ideal_only() ) continue; 3086 3087 // Access the fields for operand Label 3088 int label_position = instr->label_position(); 3089 if( label_position != -1 ) { 3090 // Set the label 3091 fprintf(fp,"void %sNode::label_set( Label* label, uint block_num ) {\n", instr->_ident); 3092 fprintf(fp," labelOper* oper = (labelOper*)(opnd_array(%d));\n", 3093 label_position ); 3094 fprintf(fp," oper->_label = label;\n"); 3095 fprintf(fp," oper->_block_num = block_num;\n"); 3096 fprintf(fp,"}\n"); 3097 } 3098 } 3099 3100 // Output the definitions for methods 3101 _instructions.reset(); 3102 while( (instr = (InstructForm*)_instructions.iter()) != NULL ) { 3103 // Ensure this is a machine-world instruction 3104 if ( instr->ideal_only() ) continue; 3105 3106 // Access the fields for operand Label 3107 int method_position = instr->method_position(); 3108 if( method_position != -1 ) { 3109 // Access the method's address 3110 fprintf(fp,"void %sNode::method_set( intptr_t method ) {\n", instr->_ident); 3111 fprintf(fp," ((methodOper*)opnd_array(%d))->_method = method;\n", 3112 method_position ); 3113 fprintf(fp,"}\n"); 3114 fprintf(fp,"\n"); 3115 } 3116 } | 3077 3078 // Construct the method called by cisc_version() to copy inputs and operands. 3079 define_fill_new_machnode(used, fp); 3080 3081 // Output the definitions for labels 3082 _instructions.reset(); 3083 while( (instr = (InstructForm*)_instructions.iter()) != NULL ) { 3084 // Ensure this is a machine-world instruction 3085 if ( instr->ideal_only() ) continue; 3086 3087 // Access the fields for operand Label 3088 int label_position = instr->label_position(); 3089 if( label_position != -1 ) { 3090 // Set the label 3091 fprintf(fp,"void %sNode::label_set( Label* label, uint block_num ) {\n", instr->_ident); 3092 fprintf(fp," labelOper* oper = (labelOper*)(opnd_array(%d));\n", 3093 label_position ); 3094 fprintf(fp," oper->_label = label;\n"); 3095 fprintf(fp," oper->_block_num = block_num;\n"); 3096 fprintf(fp,"}\n"); 3097 // Save the label 3098 fprintf(fp,"void %sNode::save_label( Label** label, uint* block_num ) {\n", instr->_ident); 3099 fprintf(fp," labelOper* oper = (labelOper*)(opnd_array(%d));\n", 3100 label_position ); 3101 fprintf(fp," *label = oper->_label;\n"); 3102 fprintf(fp," *block_num = oper->_block_num;\n"); 3103 fprintf(fp,"}\n"); 3104 } 3105 } 3106 3107 // Output the definitions for methods 3108 _instructions.reset(); 3109 while( (instr = (InstructForm*)_instructions.iter()) != NULL ) { 3110 // Ensure this is a machine-world instruction 3111 if ( instr->ideal_only() ) continue; 3112 3113 // Access the fields for operand Label 3114 int method_position = instr->method_position(); 3115 if( method_position != -1 ) { 3116 // Access the method's address 3117 fprintf(fp,"void %sNode::method_set( intptr_t method ) {\n", instr->_ident); 3118 fprintf(fp," ((methodOper*)opnd_array(%d))->_method = method;\n", 3119 method_position ); 3120 fprintf(fp,"}\n"); 3121 fprintf(fp,"\n"); 3122 } 3123 } |