/*
-- 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"


void r282used_as_reference(T282* C){
T0* _rf=NULL;
T0* _rc=NULL;
T0* _type_bit_ref=NULL;
/*[IF*/
if(r48fast_has((T48*)(oBC281mem_ref_nb),(C)->_nb/*20*/)){
}
else{
r48add_last((T48*)(oBC281mem_ref_nb),(C)->_nb/*20*/);
{T380*n=malloc(sizeof(*n));
*n=M380;
r380make(n,(T0*)C);
_type_bit_ref=(T0*)n;
}
r381add_last((T381*)(oBC281mem_type_bit_ref),_type_bit_ref);
_rc=r380run_class(((T380*)_type_bit_ref));
r23set_at_run_time(((T23*)_rc));
_rf=r23get_feature_with(((T23*)_rc),((T0*)ms14_2695));
}
/*FI]*/
}
/*No:TYPE_BIT_2.us_put_1*/
/*No:TYPE_BIT_2.is_user_expanded*/


T2 r282id(T282* C){
T2 R=0;
R=((T23*)(r282run_class(C)))->_id/*4*/;
return R;
}
/*No:TYPE_BIT_2.is_pointer*/
/*No:TYPE_BIT_2.jvm_check_class_invariant*/


T0* r282to_runnable(T282* C,T0* a1){
T0* R=NULL;
T0* _ic=NULL;
T0* _rf8=NULL;
T0* _rf1=NULL;
T0* _rf=NULL;
/*[IF*/
if(((C)->_run_time_mark/*12*/)==((void*)(NULL))){
_rf=r151run_feature((T151*)((C)->_n/*16*/),a1);
/*[IF*/
if((_rf)==((void*)(NULL))){
r21add_position(((T151*)((C)->_n/*16*/))->_start_position/*8*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_9790);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
else{
_rf1=_rf;
if(NULL!=(_rf1))switch(((T0*)_rf1)->id) {
case 372: 
break;
default:
_rf1=NULL;
};_rf8=_rf;
if(NULL!=(_rf8))switch(((T0*)_rf8)->id) {
case 386: 
break;
default:
_rf8=NULL;
};/*[IF*/
if((_rf1)!=((void*)(NULL))){
_ic=X204value((((T372*)_rf1))->_base_feature/*32*/,1);
if(NULL!=(_ic))switch(((T0*)_ic)->id) {
case 178: 
break;
default:
_ic=NULL;
};/*[IF*/
if((_ic)==((void*)(NULL))){
r21add_position(((T151*)((C)->_n/*16*/))->_start_position/*8*/);
r21add_position(r372start_position(((T372*)_rf1)));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_45846);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
C->_nb=(((T178*)_ic))->_value/*8*/;
/*[IF*/
if(((C)->_nb/*20*/)<(0)){
r21add_position(((T151*)((C)->_n/*16*/))->_start_position/*8*/);
r21add_position(r372start_position(((T372*)_rf1)));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms282_46278);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
}
 else if((_rf8)!=((void*)(NULL))){
C->_nb=r386integer_value(((T386*)_rf8),((T151*)((C)->_n/*16*/))->_start_position/*8*/);
}
else{
r21add_position(((T151*)((C)->_n/*16*/))->_start_position/*8*/);
r21add_position(X27start_position(_rf));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_45846);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
r282set_run_time_mark(C);
R=(T0*)C;
r282to_runnable_1_2(C);
}
/*FI]*/
}
else{
{T282*n=malloc(sizeof(*n));
*n=M282;
r282make(n,(C)->_start_position/*4*/,(C)->_n/*16*/);
R=(T0*)n;
}
R=r282to_runnable(((T282*)R),a1);
}
/*FI]*/
return R;
}
/*No:TYPE_BIT_2.nb*/


void r282set_run_time_mark(T282* C){
r7copy((T7*)(((T0*)ms52_785024)),((T0*)ms13_1060));
r7append((T7*)(((T0*)ms52_785024)),r2to_string((C)->_nb/*20*/));
C->_run_time_mark=r86item(((T0*)ms52_785024));
}


T0* r282run_class(T282* C){
T0* R=NULL;
R=r22run_class((T0*)C);
return R;
}
/*No:TYPE_BIT_2.is_like_current*/
/*No:TYPE_BIT_2.is_bit*/


T0* r282smallest_ancestor(T282* C,T0* a1){
T0* R=NULL;
T0* _other_bit=NULL;
_other_bit=X52run_type(a1);
if(NULL!=(_other_bit))switch(((T0*)_other_bit)->id) {
case 280: case 282: 
break;
default:
_other_bit=NULL;
};/*[IF*/
if((_other_bit)!=((void*)(NULL))){
/*[IF*/
if(((C)->_nb/*20*/)<(X281nb(_other_bit))){
R=(T0*)C;
}
else{
R=_other_bit;
}
/*FI]*/
}
else{
R=r282type_any();
}
/*FI]*/
return R;
}


void r282jvm_write_local(T2 a1){
T0* _ca=NULL;
_ca=oBC12code_attribute;
r28opcode_bitset_clone(((T28*)_ca));
r28opcode_astore(((T28*)_ca),a1);
}
/*No:TYPE_BIT_2.fz_a0*/
/*No:TYPE_BIT_2.fatal_error*/
/*No:TYPE_BIT_2.fz_a1*/
/*No:TYPE_BIT_2.fz_a2*/
/*No:TYPE_BIT_2.fz_a3*/
/*No:TYPE_BIT_2.run_time_mark*/
/*No:TYPE_BIT_2.fz_a4*/
/*No:TYPE_BIT_2.n*/
/*No:TYPE_BIT_2.is_expanded*/


T2 r282jvm_if_x_eq(void){
T2 R=0;
T0* _cp=NULL;
T0* _ca=NULL;
T2 _idx=0;
_ca=oBC12code_attribute;
_cp=oBC12constant_pool;
_idx=r29idx_methodref3(((T29*)_cp),((T0*)ms13_37376a),((T0*)ms13_7446),((T0*)ms13_49182));
r28opcode_invokevirtual(((T28*)_ca),_idx,0);
R=r28opcode_ifne(((T28*)_ca));
return R;
}
/*No:TYPE_BIT_2.jvm_xnewarray*/
/*No:TYPE_BIT_2.fz_a8*/
/*No:TYPE_BIT_2.fz_a9*/
/*No:TYPE_BIT_2.jvm_push_local*/
/*No:TYPE_BIT_2.is_like_feature*/
/*No:TYPE_BIT_2.fz_dot*/


T6 r282is_a(T282* C,T0* a1){
T6 R=0;
T0* _other_bit=NULL;
/*[IF*/
if(X52is_bit(a1)){
_other_bit=X52run_type(a1);
if(NULL!=(_other_bit))switch(((T0*)_other_bit)->id) {
case 280: case 282: 
break;
default:
_other_bit=NULL;
};/*[IF*/
if(((C)->_nb/*20*/)<=(X281nb(_other_bit))){
R=1;
}
else{
r21add_type((T0*)C,((T0*)ms13_17730));
r21add_type(a1,((T0*)ms281_7780));
}
/*FI]*/
}
 else if(r63is_subclass_of((T63*)(r282base_class(C)),X52base_class(a1))){
R=1;
r282used_as_reference(C);
}
else{
r21add_type((T0*)C,((T0*)ms13_17730));
r21add_type(a1,((T0*)ms13_47));
}
/*FI]*/
return R;
}
/*No:TYPE_BIT_2.is_character*/
/*No:TYPE_BIT_2.written_mark*/


T2 r282jvm_convert_to(T282* C,T0* a1){
T2 R=0;
T0* _cp=NULL;
T0* _ca=NULL;
T0* _other_bit=NULL;
T2 _point3=0;
T2 _point2=0;
T2 _point1=0;
T2 _loc2=0;
T2 _loc1=0;
T2 _idx=0;
T2 _space=0;
R=1;
/*[IF*/
if(X52is_reference(a1)){
r282jvm_to_reference(C);
}
else{
_ca=oBC12code_attribute;
_cp=oBC12constant_pool;
_other_bit=a1;
if(NULL!=(_other_bit))switch(((T0*)_other_bit)->id) {
case 280: case 282: 
break;
default:
_other_bit=NULL;
};_space=X281jvm_push_default(_other_bit);
/*[IRF3.4opcode_swap*/r28opcode(((T28*)_ca),95,0);
/*]*/
_loc1=r28extra_local_size1(((T28*)_ca));
r28opcode_push_integer(((T28*)_ca),X281nb(_other_bit));
r28opcode_istore(((T28*)_ca),_loc1);
_loc2=r28extra_local_size1(((T28*)_ca));
r28opcode_push_integer(((T28*)_ca),(C)->_nb/*20*/);
r28opcode_istore(((T28*)_ca),_loc2);
r28opcode_iload(((T28*)_ca),_loc2);
_point1=/*(IRF4.9program_counter*//*(IRF4.6count*/(((T48*)(oBC28code))->_upper/*8*/)+(1)/*)*//*)*/;
_point2=r28opcode_ifeq(((T28*)_ca));
r28opcode_iinc(((T28*)_ca),_loc1,255);
r28opcode_iinc(((T28*)_ca),_loc2,255);
/*[IRF3.4opcode_dup2*/r28opcode(((T28*)_ca),92,2);
/*]*/
r28opcode_iload(((T28*)_ca),_loc2);
_idx=r29idx_methodref3(((T29*)_cp),((T0*)ms13_37376a),((T0*)ms13_978),((T0*)ms13_1016));
r28opcode_invokevirtual(((T28*)_ca),_idx,0);
_point3=r28opcode_ifne(((T28*)_ca));
/*[IRF3.4opcode_pop*/r28opcode(((T28*)_ca),87,-(1));
/*]*/
r28opcode_iload(((T28*)_ca),_loc2);
r28opcode_goto_backward(((T28*)_ca),_point1);
r28resolve_u2_branch(_point3);
r28opcode_iload(((T28*)_ca),_loc1);
_idx=r29idx_methodref3(((T29*)_cp),((T0*)ms13_37376a),((T0*)ms13_1014),((T0*)ms13_1000));
r28opcode_invokevirtual(((T28*)_ca),_idx,0);
r28opcode_iload(((T28*)_ca),_loc2);
r28opcode_goto_backward(((T28*)_ca),_point1);
r28resolve_u2_branch(_point2);
/*[IRF3.4opcode_pop*/r28opcode(((T28*)_ca),87,-(1));
/*]*/
}
/*FI]*/
return R;
}


void r282make(T282* C,T0* a1,T0* a2){
r7copy((T7*)(((T0*)ms52_785024)),((T0*)ms13_1060));
r7append((T7*)(((T0*)ms52_785024)),(((T151*)a2))->_to_string/*4*/);
C->_written_mark=r86item(((T0*)ms52_785024));
C->_start_position=a1;
C->_n=a2;
}
/*No:TYPE_BIT_2.is_array*/


void r282fatal_error_generic_list(T282* C){
r21add_type((T0*)C,((T0*)ms52_29184));
r21print_as_fatal_error((T21*)(oBC12eh));
}


T2 r282jvm_push_default(T282* C){
T2 R=0;
T0* _cp=NULL;
T0* _ca=NULL;
T2 _idx=0;
_ca=oBC12code_attribute;
_cp=oBC12constant_pool;
_idx=r29idx_class2(((T29*)_cp),((T0*)ms13_37376a));
r28opcode_new(((T28*)_ca),_idx);
/*[IRF3.4opcode_dup*/r28opcode(((T28*)_ca),89,1);
/*]*/
r28opcode_push_integer(((T28*)_ca),(C)->_nb/*20*/);
_idx=r29idx_methodref3(((T29*)_cp),((T0*)ms13_37376a),((T0*)ms13_5298),((T0*)ms13_1000));
r28opcode_invokespecial(((T28*)_ca),_idx,0);
return R;
}
/*No:TYPE_BIT_2.tmp_string*/
/*No:TYPE_BIT_2.is_dummy_expanded*/


void r282to_runnable_1_2(T282* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rc=r282run_class(C);
_rf=r23get_feature_with(((T23*)_rc),((T0*)ms14_2515));
_rf=r23get_feature_with(((T23*)_rc),((T0*)ms14_2520));
}


T0* r282generic_list(T282* C){
T0* R=NULL;
r282fatal_error_generic_list(C);
return R;
}


T0* r282base_class(T282* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=r282base_class_name();
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r70base_class(((T70*)_bcn));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms52_37098);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21add_type((T0*)C,((T0*)ms13_47));
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*FI]*/
return R;
}


T2 r282jvm_if_x_ne(void){
T2 R=0;
T0* _cp=NULL;
T0* _ca=NULL;
T2 _idx=0;
_ca=oBC12code_attribute;
_cp=oBC12constant_pool;
_idx=r29idx_methodref3(((T29*)_cp),((T0*)ms13_37376a),((T0*)ms13_7446),((T0*)ms13_49182));
r28opcode_invokevirtual(((T28*)_ca),_idx,0);
R=r28opcode_ifeq(((T28*)_ca));
return R;
}
int fBC281base_class_name=0;
T0*oBC281base_class_name=NULL;


T0* r282base_class_name(void){
if(fBC281base_class_name==0){
fBC281base_class_name=1;
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,((T0*)ms14_2055),NULL);
oBC281base_class_name=(T0*)n;
}
}
return oBC281base_class_name;}


void r282jvm_standard_is_equal(T282* C){
T0* _wa=NULL;
T0* _rc=NULL;
_rc=r282run_class(C);
_wa=r23writable_attributes(((T23*)_rc));
r24std_is_equal(_rc,_wa);
}
/*No:TYPE_BIT_2.is_formal_generic*/


T6 r282is_a_in(T282* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if(((C)->_written_mark/*8*/)==((void*)(X52written_mark(a1)))){
R=1;
}
else{
_ct=(((T23*)a2))->_current_type/*0*/;
_t1=r282to_runnable(C,_ct);
_t2=X52to_runnable(a1,_ct);
/*[IF*/
if((X52run_time_mark(_t1))==((void*)(X52run_time_mark(_t2)))){
R=1;
}
else{
R=X52is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r282look_up_for(T282* C,T0* a1,T0* a2){
T0* R=NULL;
R=r63look_up_for((T63*)(r282base_class(C)),a1,a2);
return R;
}


void r282jvm_to_reference(T282* C){
T0* _ca=NULL;
T0* _type_bit_ref=NULL;
T2 _idx=0;
T0* _rc=NULL;
_ca=oBC12code_attribute;
_idx=r48fast_index_of((T48*)(oBC281mem_ref_nb),(C)->_nb/*20*/);
_type_bit_ref=/*(IRF4.6item*/(((T381*)(oBC281mem_type_bit_ref))->_storage/*4*/)[_idx]/*)*/;
_rc=r380run_class(((T380*)_type_bit_ref));
r23jvm_basic_new(((T23*)_rc));
/*[IRF3.4opcode_dup_x1*/r28opcode(((T28*)_ca),90,1);
/*]*/
/*[IRF3.4opcode_swap*/r28opcode(((T28*)_ca),95,0);
/*]*/
_idx=r23jvm_constant_pool_index(((T23*)_rc));
_idx=r29idx_fieldref4((T29*)(oBC12constant_pool),_idx,((T0*)ms14_2695),((T0*)ms13_28278));
r28opcode_putfield(((T28*)_ca),_idx,-(2));
}
/*No:TYPE_BIT_2.fz_iinaiv*/
/*No:TYPE_BIT_2.run_type*/
/*No:TYPE_BIT_2.expanded_initializer*/
/*No:TYPE_BIT_2.has_creation*/
T0*oBC281mem_ref_nb=NULL;
/*No:TYPE_BIT_2.jvm_method_flags*/
/*No:TYPE_BIT_2.is_boolean*/
/*No:TYPE_BIT_2.us_bit_n*/
/*No:TYPE_BIT_2.is_generic*/
/*No:TYPE_BIT_2.jvm_xaload*/
/*No:TYPE_BIT_2.fz_35*/
T0*oBC281mem_type_bit_ref=NULL;
/*No:TYPE_BIT_2.fz_27*/
/*No:TYPE_BIT_2.is_real*/
/*No:TYPE_BIT_2.is_any*/
/*No:TYPE_BIT_2.is_basic_eiffel_expanded*/
/*No:TYPE_BIT_2.jvm_descriptor_in*/
int fBC12type_any=0;
T0*oBC12type_any=NULL;


T0* r282type_any(void){
if(fBC12type_any==0){
fBC12type_any=1;
{T263*n=malloc(sizeof(*n));
*n=M263;
r263make(n,NULL);
oBC12type_any=(T0*)n;
}
}
return oBC12type_any;}
/*No:TYPE_BIT_2.fz_not_found*/
/*No:TYPE_BIT_2.is_string*/


T6 r282is_native_array(T282* C){
T6 R=0;
T0* _tna=NULL;
_tna=(T0*)C;
if(NULL!=(_tna))switch(((T0*)_tna)->id) {
case 267: 
break;
default:
_tna=NULL;
};R=(_tna)!=((void*)(NULL));
return R;
}
/*No:TYPE_BIT_2.is_integer*/
/*No:TYPE_BIT_2.fz_bit_foo*/
/*No:TYPE_BIT_2.is_anchored*/
/*No:TYPE_BIT_2.is_run_type*/
/*No:TYPE_BIT_2.us_put_0*/
/*No:TYPE_BIT_2.is_reference*/
/*No:TYPE_BIT_2.is_none*/
/*No:TYPE_BIT_2.jvm_return_code*/
/*No:TYPE_BIT_2.jvm_target_descriptor_in*/
/*No:TYPE_BIT_2.fz_inako*/
/*No:TYPE_BIT_2.jvm_xastore*/
/*No:TYPE_BIT_2.is_like_argument*/
/*No:TYPE_BIT_2.us_bitn*/


T2 r282jvm_stack_space(void){
T2 R=0;
/*[IF*/
/*AF*//*AE*/
R=1;
/*FI]*/
return R;
}
/*No:TYPE_BIT_2.is_double*/


T2 r282jvm_expanded_from_reference(T0* a1){
T2 R=0;
return R;
}

