home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1998 #4 / amigaacscoverdisc1998-041998.iso / utilities / shareware / dev / ppcsmalleiffel / source.lha / bin_c / compile_to_jvm28.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-01-16  |  6.6 KB  |  209 lines

  1. /*
  2. -- ANSI C code generated by :
  3. -- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.82)      --
  4. -- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
  5. -- Dominique COLNET and Suzanne COLLIN -    colnet@loria.fr     --
  6. --                 http://www.loria.fr/SmallEiffel              --
  7. */
  8. #include "compile_to_jvm.h"
  9. T0* r534to_runnable(T534* C,T0* a1){
  10. T0* R=NULL;
  11. T0* _tla=NULL;
  12. T0* _a=NULL;
  13. /*IF*/if (((((T534*)C))->_current_type/*8*/)==((void*)(NULL))) {
  14. r534to_runnable_0(C,a1);
  15. _a=r431to_runnable(((T431*)((((T534*)C))->_arguments/*24*/)),a1);
  16. /*IF*/if ((_a)==((void*)(NULL))) {
  17. r534error(X662start_position(/*(IRF4.6arg1*/r431first(((T431*)((((T534*)C))->_arguments/*24*/)))/*)*/),((T0*)ms55_470));
  18. }
  19. else {
  20. C->_arguments=_a;
  21. }
  22. /*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
  23. r431match_with(((T431*)((((T534*)C))->_arguments/*24*/)),(((T534*)C))->_run_feature/*16*/);
  24. }
  25. /*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
  26. _tla=(((T534*)C))->_result_type/*20*/;
  27. if(NULL!=(_tla))switch(((T0*)_tla)->id) {
  28. case 239: 
  29. break;
  30. default:
  31. _tla=NULL;
  32. };/*IF*/if ((_tla)!=((void*)(NULL))) {
  33. C->_result_type=X291run_type(X662result_type(/*(IRF4.6arg1*/r431first(((T431*)((((T534*)C))->_arguments/*24*/)))/*)*/));
  34. }
  35. /*FI*/}
  36. /*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
  37. R=(T0*)C;
  38. }
  39. /*FI*/}
  40. else {
  41. R=r534twin(C);
  42. /*[IRF3.3set_current_type*/((((T534*)(((T534*)R))))->_current_type)=(NULL);
  43. /*]*/
  44. R=r534to_runnable(((T534*)R),a1);
  45. }
  46. /*FI*/return R;
  47. }
  48. /*No:CALL_INFIX_FREEOP.result_type*/
  49. /*No:CALL_INFIX_FREEOP.is_result*/
  50. T0* r534twin(T534* C){
  51. T0* R=NULL;
  52. R=malloc(sizeof(*C));
  53. *((T534*)R)=*C;
  54. return R;
  55. }
  56. /*No:CALL_INFIX_FREEOP.set_current_type*/
  57. /*No:CALL_INFIX_FREEOP.is_static*/
  58. void r534standard_compile_target_to_jvm(T534* C){
  59. /*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T534* C1=C;
  60. r228b_put_cpc(((T228*)(oBC364jvm)),(T0*)C1);
  61. }/*]*/
  62. /*]*/
  63. X291jvm_check_class_invariant((((T534*)C))->_result_type/*20*/);
  64. }
  65. int r534compile_to_jvm_into(T534* C,T0* a1){
  66. int R=0;
  67. R=r534standard_compile_to_jvm_into(C,a1);
  68. return R;
  69. }
  70. /*No:CALL_INFIX_FREEOP.compile_target_to_jvm*/
  71. int r534call_is_static(T534* C){
  72. int R=0;
  73. T0* _rf=NULL;
  74. T0* _running=NULL;
  75. T0* _rc=NULL;
  76. /*IF*/if (((((T534*)C))->_run_feature/*16*/)!=((void*)(NULL))) {
  77. _rc=X496run_class((((T534*)C))->_run_feature/*16*/);
  78. /*IF*/if ((_rc)!=((void*)(NULL))) {
  79. _running=(((T355*)((T355*)_rc)))->_running/*12*/;
  80. /*IF*/if (((_running)!=((void*)(NULL)))&&((r396count(((T396*)_running)))==(1))) {
  81. _rf=r355dynamic(((T355*)(r396first(((T396*)_running)))),(((T534*)C))->_run_feature/*16*/);
  82. /*IF*/if (X496is_static(_rf)) {
  83. C->_static_value_mem=X496static_value_mem(_rf);
  84. R=1;
  85. }
  86. /*FI*/}
  87. /*FI*/}
  88. /*FI*/}
  89. /*FI*/return R;
  90. }
  91. /*No:CALL_INFIX_FREEOP.fz_07*/
  92. /*No:CALL_INFIX_FREEOP.can_be_dropped*/
  93. /*No:CALL_INFIX_FREEOP.current_type*/
  94. /*No:CALL_INFIX_FREEOP.jvm_assign*/
  95. /*No:CALL_INFIX_FREEOP.static_value_mem*/
  96. void r534make_call_1(T534* C,T0* a1,T0* a2,T0* a3){
  97. C->_target=a1;
  98. C->_feature_name=a2;
  99. C->_arguments=a3;
  100. }
  101. /*No:CALL_INFIX_FREEOP.is_manifest_string*/
  102. /*No:CALL_INFIX_FREEOP.is_void*/
  103. int r534jvm_standard_branch_if_false(T534* C){
  104. int R=0;
  105. /*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T534* C1=C;
  106. r228b_put_cpc(((T228*)(oBC364jvm)),(T0*)C1);
  107. }/*]*/
  108. /*]*/
  109. R=r256opcode_ifeq(((T256*)(oBC364code_attribute)));
  110. return R;
  111. }
  112. /*No:CALL_INFIX_FREEOP.compile_to_jvm*/
  113. void r534to_runnable_0(T534* C,T0* a1){
  114. C->_current_type=a1;
  115. r534cpc_to_runnable(C,a1);
  116. C->_result_type=/*X496*/((T0*)(((T832*)((T832*)((((T534*)C))->_run_feature/*16*/))))->_result_type/*24*/);
  117. /*IF*/if (((((T534*)C))->_result_type/*20*/)==((void*)(NULL))) {
  118. r683add_position(X496start_position((((T534*)C))->_run_feature/*16*/));
  119. r534error((((T454*)((T454*)((((T534*)C))->_feature_name/*28*/))))->_start_position/*8*/,((T0*)ms1_295));
  120. }
  121.  else if (X291is_like_current((((T534*)C))->_result_type/*20*/)) {
  122. C->_result_type=X662result_type((((T534*)C))->_target/*12*/);
  123. }
  124. /*FI*/}
  125. /*No:CALL_INFIX_FREEOP.is_pre_computable*/
  126. int r534jvm_standard_branch_if_true(T534* C){
  127. int R=0;
  128. /*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T534* C1=C;
  129. r228b_put_cpc(((T228*)(oBC364jvm)),(T0*)C1);
  130. }/*]*/
  131. /*]*/
  132. R=r256opcode_ifne(((T256*)(oBC364code_attribute)));
  133. return R;
  134. }
  135. int r534use_current(T534* C){
  136. int R=0;
  137. /*IF*/{/*AT*/R=r431use_current(((T431*)((((T534*)C))->_arguments/*24*/)));
  138. }
  139. /*FI*//*IF*/if (R) {
  140. }
  141.  else if (X662is_current((((T534*)C))->_target/*12*/)) {
  142. R=X496use_current((((T534*)C))->_run_feature/*16*/);
  143. }
  144. else {
  145. R=X662use_current((((T534*)C))->_target/*12*/);
  146. }
  147. /*FI*/return R;
  148. }
  149. void r534cpc_to_runnable(T534* C,T0* a1){
  150. T0* _rc=NULL;
  151. T0* _t=NULL;
  152. _t=X662to_runnable((((T534*)C))->_target/*12*/,a1);
  153. /*IF*/if ((_t)==((void*)(NULL))) {
  154. r683add_position(X662start_position((((T534*)C))->_target/*12*/));
  155. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms2_135);
  156. r683fatal_error(((T683*)(oBC364eh)),b1);
  157. }/*]*/
  158. }
  159. /*FI*/C->_target=_t;
  160. _rc=X291run_class(X662result_type((((T534*)C))->_target/*12*/));
  161. C->_run_feature=r355get_rf(((T355*)_rc),(T0*)C);
  162. r576update((((T534*)C))->_target/*12*/,(((T534*)C))->_run_feature/*16*/);
  163. }
  164. void r534error(T0* a1,T0* a2){
  165. r683add_position(a1);
  166. r683error(((T683*)(oBC364eh)),a2);
  167. }
  168. /*No:CALL_INFIX_FREEOP.isa_dca_inline_argument*/
  169. /*No:CALL_INFIX_FREEOP.fatal_error*/
  170. /*No:CALL_INFIX_FREEOP.fz_bad_argument*/
  171. /*No:CALL_INFIX_FREEOP.arg1*/
  172. int r534standard_compile_to_jvm_into(T534* C,T0* a1){
  173. int R=0;
  174. /*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T534* C1=C;
  175. r228b_put_cpc(((T228*)(oBC364jvm)),(T0*)C1);
  176. }/*]*/
  177. /*]*/
  178. R=X291jvm_convert_to(X291run_type((((T534*)C))->_result_type/*20*/),a1);
  179. return R;
  180. }
  181. /*No:CALL_INFIX_FREEOP.call_proc_call_c2jvm*/
  182. void r534afd_check(T534* C){
  183. T0* _running=NULL;
  184. T0* _rc=NULL;
  185. _rc=X291run_class(X662result_type((((T534*)C))->_target/*12*/));
  186. _running=(((T355*)((T355*)_rc)))->_running/*12*/;
  187. /*IF*/if ((_running)==((void*)(NULL))) {
  188. r683add_position(X662start_position((((T534*)C))->_target/*12*/));
  189. /*[IRF3.6append*/{T0* b1=((T0*)ms1_135);
  190. r7append(((T7*)(oBC683explanation)),b1);
  191. }/*]*/
  192. /*[IRF3.6append*/{T0* b1=X291run_time_mark((((T355*)((T355*)_rc)))->_current_type/*0*/);
  193. r7append(((T7*)(oBC683explanation)),b1);
  194. }/*]*/
  195. /*[IRF3.6append*/{T0* b1=((T0*)ms141_470);
  196. r7append(((T7*)(oBC683explanation)),b1);
  197. }/*]*/
  198. r683print_as_warning(((T683*)(oBC364eh)));
  199. r355set_at_run_time(((T355*)_rc));
  200. }
  201.  else if ((r396count(((T396*)_running)))>(0)) {
  202. r576update((((T534*)C))->_target/*12*/,(((T534*)C))->_run_feature/*16*/);
  203. }
  204. /*FI*/X662afd_check((((T534*)C))->_target/*12*/);
  205. /*IF*/{/*AT*/r431afd_check(((T431*)((((T534*)C))->_arguments/*24*/)));
  206. }
  207. /*FI*/}
  208.  
  209.