/*
-- ANSI C code generated by :
-- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.79)      --
-- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
-- Dominique COLNET and Suzanne COLLIN -    colnet@loria.fr     --
--                 http://www.loria.fr/SmallEiffel              --
*/
#include "compile_to_jvm.h"


T2 r26jvm_result_offset(T26* C){
T2 R=0;
R=X52jvm_stack_space((C)->_current_type/*4*/);
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
R=(R)+(r191jvm_stack_space((T191*)((C)->_arguments/*36*/)));
}
/*FI]*/
/*[IF*/
if(((C)->_local_vars/*40*/)!=((void*)(NULL))){
R=(R)+(r182jvm_stack_space((T182*)((C)->_local_vars/*40*/)));
}
/*FI]*/
return R;
}


void r26routine_update_tmp_jvm_descriptor(T26* C){
T0* _rt=NULL;
T0* _ct=NULL;
r7extend((T7*)(oBC27tmp_jvm_descriptor),'\50');
_ct=(C)->_current_type/*4*/;
X52jvm_target_descriptor_in(_ct,oBC27tmp_jvm_descriptor);
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
r191jvm_descriptor_in((T191*)((C)->_arguments/*36*/),oBC27tmp_jvm_descriptor);
}
/*FI]*/
_rt=/*(IRF4.1result_type*/NULL/*)*/;
/*[IF*/
if((_rt)==((void*)(NULL))){
r7append((T7*)(oBC27tmp_jvm_descriptor),((T0*)ms13_260));
}
else{
_rt=X52run_type(_rt);
r7extend((T7*)(oBC27tmp_jvm_descriptor),'\51');
X52jvm_descriptor_in(_rt,oBC27tmp_jvm_descriptor);
}
/*FI]*/
}
/*No:RUN_FEATURE_3.jvm_field_or_method*/
/*No:RUN_FEATURE_3.afd_check*/


T0* r26clients(T26* C){
T0* R=NULL;
T0* _bfbc=NULL;
T0* _bc=NULL;
/*[IF*/
if(((C)->_clients_memory/*8*/)==((void*)(NULL))){
_bc=X52base_class((C)->_current_type/*4*/);
_bfbc=((T307*)((C)->_base_feature/*32*/))->_base_class/*4*/;
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=((T307*)((C)->_base_feature/*32*/))->_clients/*20*/;
}
else{
R=r63clients_for(((T63*)_bc),(C)->_name/*16*/);
}
/*FI]*/
C->_clients_memory=R;
}
else{
R=(C)->_clients_memory/*8*/;
}
/*FI]*/
return R;
}


T0* r26jvm_descriptor(T26* C){
T0* R=NULL;
/*[IRF3.3clear*/((((T7*)((T7*)(oBC27tmp_jvm_descriptor))))->_count)=(0);
/*]*/
/*[IRF3.4update_tmp_jvm_descriptor*/r26routine_update_tmp_jvm_descriptor(C);
/*]*/
R=oBC27tmp_jvm_descriptor;
return R;
}
/*No:NATIVE_WITHOUT_CURRENT.jvm_define_function*/


void r301fe_c2jvm(T0* a1){
r21add_position(r24target_position((T24*)(oBC12jvm)));
r21add_position(X27start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms293_140400);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*No:NATIVE_WITHOUT_CURRENT.jvm_add_method_for_function*/
/*No:NATIVE_WITHOUT_CURRENT.use_current*/
/*No:NATIVE_WITHOUT_CURRENT.jvm_mapping_function*/
/*No:NATIVE_WITHOUT_CURRENT.jvm_add_method_for_procedure*/
/*No:NATIVE_WITHOUT_CURRENT.jvm_mapping_procedure*/
/*No:NATIVE_WITHOUT_CURRENT.jvm_define_procedure*/
/*No:NATIVE_WITHOUT_CURRENT.fatal_error*/
/*No:SIMPLE_FEATURE_NAME.static_value*/
/*No:SIMPLE_FEATURE_NAME.is_frozen*/
/*No:SIMPLE_FEATURE_NAME.is_static*/


T0* r151origin_base_class(T151* C){
T0* R=NULL;
T0* _sp=NULL;
_sp=(C)->_start_position/*8*/;
/*[IF*/
if((_sp)!=((void*)(NULL))){
R=r59base_class(((T59*)_sp));
}
/*FI]*/
return R;
}
/*No:SIMPLE_FEATURE_NAME.is_manifest_string*/
/*No:SIMPLE_FEATURE_NAME.start_position*/
/*No:SIMPLE_FEATURE_NAME.to_string*/


T0* r151add_comment(T151* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r73count(((T73*)((((T85*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T234*n=malloc(sizeof(*n));
*n=M234;
r234make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r151to_integer(T151* C){
T2 R=0;
r151error((C)->_start_position/*8*/,((T0*)ms13_45846));
return R;
}
/*No:SIMPLE_FEATURE_NAME.use_current*/


T2 r151jvm_branch_if_true(T151* C){
T2 R=0;
r151compile_to_jvm(C);
R=r28opcode_ifne((T28*)(oBC12code_attribute));
return R;
}


T0* r151to_runnable(T151* C,T0* a1){
T0* R=NULL;
T0* _rf2=NULL;
T0* _new_name=NULL;
T0* _rf=NULL;
T0* _wbc=NULL;
_wbc=r59base_class((T59*)((C)->_start_position/*8*/));
_new_name=r63new_name_of((T63*)(X52base_class(a1)),_wbc,(T0*)C);
_rf=r23get_feature((T23*)(X52run_class(a1)),_new_name);
/*[IF*/
if((_rf)==((void*)(NULL))){
r151error((C)->_start_position/*8*/,((T0*)ms151_24192));
}
else{
_rf2=_rf;
if(NULL!=(_rf2))switch(((T0*)_rf2)->id) {
case 53: 
break;
default:
_rf2=NULL;
};/*[IF*/
if((_rf2)==((void*)(NULL))){
r21add_position(X27start_position(_rf));
r151error((C)->_start_position/*8*/,((T0*)ms151_56880));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_run_feature_2/*12*/)==((void*)(NULL))){
C->_run_feature_2=_rf2;
R=(T0*)C;
}
 else if(((C)->_run_feature_2/*12*/)==((void*)(_rf))){
R=(T0*)C;
}
else{
{T151*n=malloc(sizeof(*n));
*n=M151;
r151with(n,(T0*)C,_rf2);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:SIMPLE_FEATURE_NAME.declaration_in*/


T2 r151compile_to_jvm_into(T151* C,T0* a1){
T2 R=0;
R=r151standard_compile_to_jvm_into(C,a1);
return R;
}
/*No:SIMPLE_FEATURE_NAME.is_pre_computable*/
/*No:SIMPLE_FEATURE_NAME.fz_iinaiv*/
/*No:SIMPLE_FEATURE_NAME.result_type*/


T0* r151run_feature(T151* C,T0* a1){
T0* R=NULL;
R=r23get_rf_with((T23*)(X52run_class(a1)),(T0*)C);
return R;
}


void r151compile_to_jvm_assignment(T151* C,T0* a1){
T0* _rt=NULL;
T0* _rf=NULL;
T2 _idx=0;
T2 _space=0;
_rf=(C)->_run_feature_2/*12*/;
_rt=X52run_type(X27result_type(_rf));
/*[IRF3.4opcode_aload_0*/r28opcode((T28*)(oBC12code_attribute),42,1);
/*]*/
_space=X109compile_to_jvm_into((((T287*)a1))->_right_side/*8*/,_rt);
_idx=r29idx_fieldref((T29*)(oBC12constant_pool),_rf);
_space=-((_space)+(1));
r28opcode_putfield((T28*)(oBC12code_attribute),_idx,_space);
}
/*No:SIMPLE_FEATURE_NAME.fz_jvm_error*/
/*No:SIMPLE_FEATURE_NAME.compile_to_jvm_old*/


void r151jvm_assign(T151* C){
T0* _rf=NULL;
T2 _idx=0;
T2 _space=0;
/*[IRF3.4opcode_aload_0*/r28opcode((T28*)(oBC12code_attribute),42,1);
/*]*/
/*[IRF3.4opcode_swap*/r28opcode((T28*)(oBC12code_attribute),95,0);
/*]*/
_rf=(C)->_run_feature_2/*12*/;
_idx=r29idx_fieldref((T29*)(oBC12constant_pool),_rf);
_space=-((X52jvm_stack_space(X27result_type(_rf)))+(1));
r28opcode_putfield((T28*)(oBC12code_attribute),_idx,_space);
}


T2 r151jvm_branch_if_false(T151* C){
T2 R=0;
r151compile_to_jvm(C);
R=r28opcode_ifeq((T28*)(oBC12code_attribute));
return R;
}


void r151compile_to_jvm(T151* C){
r21add_position((C)->_start_position/*8*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_63648);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*No:SIMPLE_FEATURE_NAME.run_feature_2*/


void r151with(T151* C,T0* a1,T0* a2){
C->_to_string=(((T151*)a1))->_to_string/*4*/;
C->_start_position=(((T151*)a1))->_start_position/*8*/;
C->_run_feature_2=a2;
}
/*No:SIMPLE_FEATURE_NAME.is_result*/
/*No:SIMPLE_FEATURE_NAME.fatal_error*/


void r151undefine_in(T151* C,T0* a1){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


T6 r151can_be_dropped(T151* C){
T6 R=0;
r21add_position((C)->_start_position/*8*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms151_73584);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
return R;
}


void r151compile_target_to_jvm(T151* C){
r21add_position((C)->_start_position/*8*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_63648);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*No:SIMPLE_FEATURE_NAME.to_key*/
/*No:SIMPLE_FEATURE_NAME.isa_dca_inline_argument*/


void r151error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}


void r151make(T151* C,T0* a1,T0* a2){
C->_to_string=r86item(a1);
C->_start_position=a2;
}
/*No:SIMPLE_FEATURE_NAME.is_current*/


T2 r151standard_compile_to_jvm_into(T151* C,T0* a1){
T2 R=0;
r151compile_to_jvm(C);
R=X52jvm_convert_to(X52run_type(/*(IRF4.6result_type*/(((T53*)((C)->_run_feature_2/*12*/)))->_result_type/*28*//*)*/),a1);
return R;
}
/*No:SIMPLE_FEATURE_NAME.is_void*/
/*No:SIMPLE_FEATURE_NAME.afd_check*/

