esruby 0.0.0 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (385) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +6 -6
  3. data/bin/esruby +9 -0
  4. data/lib/esruby.rb +8 -0
  5. data/resources/mruby/build_config.rb +0 -1
  6. data/resources/mruby/mrbgems/mruby-print/mrblib/print.rb +1 -1
  7. data/resources/project_template/app/app.rb +2 -0
  8. data/resources/project_template/config.rb +35 -0
  9. data/resources/project_template/www/index.html +17 -0
  10. metadata +6 -377
  11. data/resources/mruby/bin/mirb +0 -0
  12. data/resources/mruby/bin/mrbc +0 -0
  13. data/resources/mruby/bin/mruby +0 -0
  14. data/resources/mruby/bin/mruby-strip +0 -0
  15. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/README.md +0 -82
  16. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/mrbgem.rake +0 -63
  17. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/mrblib/regexp_pcre.rb +0 -232
  18. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/mrblib/string_pcre.rb +0 -333
  19. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/132html +0 -313
  20. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/AUTHORS +0 -45
  21. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/CMakeLists.txt +0 -959
  22. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/COPYING +0 -5
  23. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/ChangeLog +0 -4981
  24. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/CheckMan +0 -67
  25. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/CleanTxt +0 -113
  26. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/Detrail +0 -35
  27. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/HACKING +0 -473
  28. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/INSTALL +0 -370
  29. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/LICENCE +0 -92
  30. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/Makefile.am +0 -877
  31. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/Makefile.in +0 -2917
  32. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/NEWS +0 -611
  33. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/NON-AUTOTOOLS-BUILD +0 -639
  34. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/NON-UNIX-USE +0 -7
  35. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/PrepareRelease +0 -253
  36. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/README +0 -935
  37. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/RunGrepTest +0 -551
  38. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/RunTest +0 -1015
  39. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/RunTest.bat +0 -616
  40. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/aclocal.m4 +0 -1230
  41. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/output.0 +0 -21280
  42. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/output.1 +0 -21280
  43. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/requests +0 -273
  44. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/traces.0 +0 -2421
  45. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/traces.1 +0 -1144
  46. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/COPYING-CMAKE-SCRIPTS +0 -22
  47. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/FindEditline.cmake +0 -17
  48. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/FindPackageHandleStandardArgs.cmake +0 -58
  49. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/FindReadline.cmake +0 -29
  50. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/compile +0 -343
  51. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config-cmake.h.in +0 -54
  52. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.guess +0 -1552
  53. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.h +0 -392
  54. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.h.generic +0 -392
  55. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.h.in +0 -343
  56. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.sub +0 -1804
  57. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/configure +0 -21280
  58. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/configure.ac +0 -1082
  59. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/depcomp +0 -708
  60. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/dftables.c +0 -212
  61. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/index.html +0 -180
  62. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre-config.html +0 -109
  63. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre.html +0 -204
  64. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre16.html +0 -383
  65. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_assign_jit_stack.html +0 -76
  66. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_compile.html +0 -108
  67. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_compile2.html +0 -112
  68. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_config.html +0 -91
  69. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_copy_named_substring.html +0 -65
  70. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_copy_substring.html +0 -61
  71. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_dfa_exec.html +0 -128
  72. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_exec.html +0 -110
  73. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_free_study.html +0 -46
  74. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_free_substring.html +0 -46
  75. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_free_substring_list.html +0 -46
  76. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_fullinfo.html +0 -108
  77. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_named_substring.html +0 -68
  78. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_stringnumber.html +0 -57
  79. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_stringtable_entries.html +0 -60
  80. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_substring.html +0 -64
  81. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_substring_list.html +0 -61
  82. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_jit_exec.html +0 -108
  83. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_jit_stack_alloc.html +0 -55
  84. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_jit_stack_free.html +0 -48
  85. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_maketables.html +0 -48
  86. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_pattern_to_host_byte_order.html +0 -58
  87. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_refcount.html +0 -51
  88. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_study.html +0 -68
  89. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_utf16_to_host_byte_order.html +0 -57
  90. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_version.html +0 -46
  91. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreapi.html +0 -2786
  92. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrebuild.html +0 -517
  93. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrecallout.html +0 -243
  94. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrecompat.html +0 -216
  95. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrecpp.html +0 -368
  96. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcredemo.html +0 -426
  97. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcregrep.html +0 -757
  98. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrejit.html +0 -458
  99. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrelimits.html +0 -86
  100. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrematching.html +0 -233
  101. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrepartial.html +0 -474
  102. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrepattern.html +0 -2953
  103. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreperform.html +0 -195
  104. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreposix.html +0 -292
  105. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreprecompile.html +0 -158
  106. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcresample.html +0 -110
  107. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrestack.html +0 -225
  108. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcresyntax.html +0 -521
  109. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcretest.html +0 -1082
  110. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreunicode.html +0 -270
  111. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/index.html.src +0 -180
  112. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre-config.1 +0 -92
  113. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre-config.txt +0 -86
  114. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre.3 +0 -202
  115. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre.txt +0 -9909
  116. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre16.3 +0 -390
  117. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre32.3 +0 -389
  118. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_assign_jit_stack.3 +0 -61
  119. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_compile.3 +0 -98
  120. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_compile2.3 +0 -106
  121. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_config.3 +0 -76
  122. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_copy_named_substring.3 +0 -59
  123. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_copy_substring.3 +0 -52
  124. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_dfa_exec.3 +0 -125
  125. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_exec.3 +0 -103
  126. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_free_study.3 +0 -31
  127. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_free_substring.3 +0 -31
  128. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_free_substring_list.3 +0 -31
  129. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_fullinfo.3 +0 -95
  130. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_named_substring.3 +0 -62
  131. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_stringnumber.3 +0 -45
  132. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_stringtable_entries.3 +0 -48
  133. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_substring.3 +0 -55
  134. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_substring_list.3 +0 -49
  135. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_jit_exec.3 +0 -104
  136. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_jit_stack_alloc.3 +0 -45
  137. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_jit_stack_free.3 +0 -35
  138. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_maketables.3 +0 -33
  139. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_pattern_to_host_byte_order.3 +0 -46
  140. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_refcount.3 +0 -36
  141. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_study.3 +0 -56
  142. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_utf16_to_host_byte_order.3 +0 -46
  143. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_utf32_to_host_byte_order.3 +0 -46
  144. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_version.3 +0 -31
  145. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreapi.3 +0 -2823
  146. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrebuild.3 +0 -520
  147. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrecallout.3 +0 -214
  148. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrecompat.3 +0 -185
  149. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrecpp.3 +0 -348
  150. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcregrep.1 +0 -679
  151. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcregrep.txt +0 -740
  152. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrejit.3 +0 -437
  153. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrelimits.3 +0 -67
  154. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrematching.3 +0 -206
  155. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrepartial.3 +0 -445
  156. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrepattern.3 +0 -2983
  157. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreperform.3 +0 -177
  158. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreposix.3 +0 -270
  159. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreprecompile.3 +0 -151
  160. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcresample.3 +0 -99
  161. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrestack.3 +0 -215
  162. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcresyntax.3 +0 -496
  163. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcretest.1 +0 -1079
  164. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcretest.txt +0 -1012
  165. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreunicode.3 +0 -255
  166. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/perltest.txt +0 -42
  167. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/install-sh +0 -527
  168. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcre.pc.in +0 -12
  169. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcre16.pc.in +0 -12
  170. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcre32.pc.in +0 -12
  171. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcrecpp.pc.in +0 -12
  172. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcreposix.pc.in +0 -13
  173. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/ltmain.sh +0 -9636
  174. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ax_pthread.m4 +0 -309
  175. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/libtool.m4 +0 -7844
  176. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ltoptions.m4 +0 -369
  177. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ltsugar.m4 +0 -123
  178. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ltversion.m4 +0 -23
  179. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/lt~obsolete.m4 +0 -98
  180. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/pcre_visibility.m4 +0 -89
  181. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/makevp.bat +0 -66
  182. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/makevp_c.txt +0 -20
  183. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/makevp_l.txt +0 -20
  184. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/missing +0 -331
  185. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre-config.in +0 -133
  186. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre.h +0 -653
  187. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre.h.generic +0 -653
  188. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre.h.in +0 -653
  189. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_byte_order.c +0 -45
  190. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_chartables.c +0 -45
  191. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_compile.c +0 -45
  192. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_config.c +0 -45
  193. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_dfa_exec.c +0 -45
  194. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_exec.c +0 -45
  195. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_fullinfo.c +0 -45
  196. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_get.c +0 -45
  197. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_globals.c +0 -45
  198. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_jit_compile.c +0 -45
  199. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_maketables.c +0 -45
  200. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_newline.c +0 -45
  201. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_ord2utf16.c +0 -90
  202. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_printint.c +0 -45
  203. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_refcount.c +0 -45
  204. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_string_utils.c +0 -45
  205. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_study.c +0 -45
  206. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_tables.c +0 -45
  207. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_ucd.c +0 -45
  208. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_utf16_utils.c +0 -130
  209. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_valid_utf16.c +0 -156
  210. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_version.c +0 -45
  211. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_xclass.c +0 -45
  212. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_byte_order.c +0 -45
  213. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_chartables.c +0 -45
  214. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_compile.c +0 -45
  215. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_config.c +0 -45
  216. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_dfa_exec.c +0 -45
  217. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_exec.c +0 -45
  218. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_fullinfo.c +0 -45
  219. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_get.c +0 -45
  220. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_globals.c +0 -45
  221. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_jit_compile.c +0 -45
  222. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_maketables.c +0 -45
  223. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_newline.c +0 -45
  224. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_ord2utf32.c +0 -82
  225. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_printint.c +0 -45
  226. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_refcount.c +0 -45
  227. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_string_utils.c +0 -45
  228. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_study.c +0 -45
  229. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_tables.c +0 -45
  230. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_ucd.c +0 -45
  231. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_utf32_utils.c +0 -141
  232. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_valid_utf32.c +0 -131
  233. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_version.c +0 -45
  234. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_xclass.c +0 -45
  235. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_byte_order.c +0 -318
  236. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_chartables.c +0 -198
  237. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_chartables.c.dist +0 -198
  238. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_compile.c +0 -8386
  239. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_config.c +0 -186
  240. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_dfa_exec.c +0 -3582
  241. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_exec.c +0 -7049
  242. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_fullinfo.c +0 -231
  243. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_get.c +0 -662
  244. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_globals.c +0 -84
  245. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_internal.h +0 -2744
  246. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_jit_compile.c +0 -8560
  247. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_jit_test.c +0 -1614
  248. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_maketables.c +0 -151
  249. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_newline.c +0 -210
  250. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_ord2utf8.c +0 -94
  251. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_printint.c +0 -766
  252. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_refcount.c +0 -92
  253. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_scanner.cc +0 -199
  254. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_scanner.h +0 -172
  255. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_scanner_unittest.cc +0 -159
  256. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_string_utils.c +0 -211
  257. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_stringpiece.cc +0 -43
  258. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_stringpiece.h.in +0 -179
  259. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_stringpiece_unittest.cc +0 -150
  260. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_study.c +0 -1562
  261. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_tables.c +0 -655
  262. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_ucd.c +0 -3298
  263. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_valid_utf8.c +0 -312
  264. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_version.c +0 -98
  265. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_xclass.c +0 -198
  266. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp.cc +0 -922
  267. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp.h +0 -710
  268. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp_internal.h +0 -71
  269. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp_unittest.cc +0 -1291
  270. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpparg.h.in +0 -174
  271. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcredemo.c +0 -406
  272. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcregexp.pas +0 -845
  273. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcregrep.c +0 -3180
  274. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcreposix.c +0 -419
  275. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcreposix.h +0 -146
  276. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcretest.c +0 -5488
  277. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/perltest.pl +0 -237
  278. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitConfig.h +0 -110
  279. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitConfigInternal.h +0 -484
  280. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitExecAllocator.c +0 -289
  281. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitLir.c +0 -1766
  282. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitLir.h +0 -985
  283. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeARM_Thumb2.c +0 -2008
  284. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeARM_v5.c +0 -2515
  285. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeMIPS_32.c +0 -404
  286. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeMIPS_common.c +0 -1881
  287. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativePPC_32.c +0 -269
  288. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativePPC_64.c +0 -421
  289. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativePPC_common.c +0 -2014
  290. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeSPARC_32.c +0 -164
  291. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeSPARC_common.c +0 -1348
  292. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeX86_32.c +0 -547
  293. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeX86_64.c +0 -810
  294. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeX86_common.c +0 -2836
  295. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitUtils.c +0 -332
  296. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepbinary +0 -0
  297. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepfilelist +0 -3
  298. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinput +0 -611
  299. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinput3 +0 -15
  300. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinput8 +0 -11
  301. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinputv +0 -4
  302. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinputx +0 -43
  303. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/greplist +0 -7
  304. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepoutput +0 -707
  305. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepoutput8 +0 -12
  306. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepoutputN +0 -17
  307. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/greppatN4 +0 -2
  308. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16 +0 -0
  309. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16BE-1 +0 -0
  310. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16BE-2 +0 -0
  311. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16LE-1 +0 -0
  312. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16LE-2 +0 -0
  313. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32 +0 -0
  314. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32BE-1 +0 -0
  315. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32BE-2 +0 -0
  316. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32LE-1 +0 -0
  317. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32LE-2 +0 -0
  318. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved8 +0 -0
  319. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput1 +0 -5306
  320. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput10 +0 -1337
  321. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput11 +0 -135
  322. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput12 +0 -89
  323. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput13 +0 -9
  324. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput14 +0 -329
  325. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput15 +0 -430
  326. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput16 +0 -35
  327. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput17 +0 -296
  328. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput18 +0 -296
  329. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput19 +0 -22
  330. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput2 +0 -3813
  331. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput20 +0 -19
  332. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput21 +0 -16
  333. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput22 +0 -13
  334. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput23 +0 -16
  335. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput24 +0 -77
  336. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput25 +0 -32
  337. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput26 +0 -80
  338. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput3 +0 -95
  339. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput4 +0 -624
  340. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput5 +0 -772
  341. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput6 +0 -1319
  342. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput7 +0 -672
  343. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput8 +0 -4801
  344. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput9 +0 -717
  345. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinputEBC +0 -121
  346. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput1 +0 -8798
  347. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput10 +0 -2726
  348. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput11-16 +0 -713
  349. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput11-32 +0 -713
  350. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput11-8 +0 -713
  351. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput12 +0 -181
  352. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput13 +0 -21
  353. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput14 +0 -476
  354. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput15 +0 -1269
  355. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput16 +0 -121
  356. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput17 +0 -505
  357. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput18-16 +0 -1022
  358. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput18-32 +0 -1019
  359. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput19 +0 -88
  360. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput2 +0 -12484
  361. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput20 +0 -27
  362. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput21-16 +0 -90
  363. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput21-32 +0 -90
  364. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput22-16 +0 -71
  365. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput22-32 +0 -71
  366. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput23 +0 -42
  367. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput24 +0 -145
  368. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput25 +0 -79
  369. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput26 +0 -148
  370. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput3 +0 -169
  371. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput4 +0 -1094
  372. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput5 +0 -1849
  373. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput6 +0 -2137
  374. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput7 +0 -1473
  375. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput8 +0 -8019
  376. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput9 +0 -1371
  377. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutputEBC +0 -182
  378. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/wintestinput3 +0 -91
  379. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/wintestoutput3 +0 -166
  380. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/ucp.h +0 -197
  381. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/run_test.rb +0 -23
  382. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/src/mruby_regexp_pcre.c +0 -364
  383. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/test/matchdata.rb +0 -94
  384. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/test/regexp.rb +0 -264
  385. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/test/string.rb +0 -201
@@ -1,289 +0,0 @@
1
- /*
2
- * Stack-less Just-In-Time compiler
3
- *
4
- * Copyright 2009-2012 Zoltan Herczeg (hzmester@freemail.hu). All rights reserved.
5
- *
6
- * Redistribution and use in source and binary forms, with or without modification, are
7
- * permitted provided that the following conditions are met:
8
- *
9
- * 1. Redistributions of source code must retain the above copyright notice, this list of
10
- * conditions and the following disclaimer.
11
- *
12
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
13
- * of conditions and the following disclaimer in the documentation and/or other materials
14
- * provided with the distribution.
15
- *
16
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND CONTRIBUTORS ``AS IS'' AND ANY
17
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
19
- * SHALL THE COPYRIGHT HOLDER(S) OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
21
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
22
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
24
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
- */
26
-
27
- /*
28
- This file contains a simple executable memory allocator
29
-
30
- It is assumed, that executable code blocks are usually medium (or sometimes
31
- large) memory blocks, and the allocator is not too frequently called (less
32
- optimized than other allocators). Thus, using it as a generic allocator is
33
- not suggested.
34
-
35
- How does it work:
36
- Memory is allocated in continuous memory areas called chunks by alloc_chunk()
37
- Chunk format:
38
- [ block ][ block ] ... [ block ][ block terminator ]
39
-
40
- All blocks and the block terminator is started with block_header. The block
41
- header contains the size of the previous and the next block. These sizes
42
- can also contain special values.
43
- Block size:
44
- 0 - The block is a free_block, with a different size member.
45
- 1 - The block is a block terminator.
46
- n - The block is used at the moment, and the value contains its size.
47
- Previous block size:
48
- 0 - This is the first block of the memory chunk.
49
- n - The size of the previous block.
50
-
51
- Using these size values we can go forward or backward on the block chain.
52
- The unused blocks are stored in a chain list pointed by free_blocks. This
53
- list is useful if we need to find a suitable memory area when the allocator
54
- is called.
55
-
56
- When a block is freed, the new free block is connected to its adjacent free
57
- blocks if possible.
58
-
59
- [ free block ][ used block ][ free block ]
60
- and "used block" is freed, the three blocks are connected together:
61
- [ one big free block ]
62
- */
63
-
64
- /* --------------------------------------------------------------------- */
65
- /* System (OS) functions */
66
- /* --------------------------------------------------------------------- */
67
-
68
- /* 64 KByte. */
69
- #define CHUNK_SIZE 0x10000
70
-
71
- /*
72
- alloc_chunk / free_chunk :
73
- * allocate executable system memory chunks
74
- * the size is always divisible by CHUNK_SIZE
75
- allocator_grab_lock / allocator_release_lock :
76
- * make the allocator thread safe
77
- * can be empty if the OS (or the application) does not support threading
78
- * only the allocator requires this lock, sljit is fully thread safe
79
- as it only uses local variables
80
- */
81
-
82
- #ifdef _WIN32
83
-
84
- static SLJIT_INLINE void* alloc_chunk(sljit_uw size)
85
- {
86
- return VirtualAlloc(NULL, size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
87
- }
88
-
89
- static SLJIT_INLINE void free_chunk(void* chunk, sljit_uw size)
90
- {
91
- SLJIT_UNUSED_ARG(size);
92
- VirtualFree(chunk, 0, MEM_RELEASE);
93
- }
94
-
95
- #else
96
-
97
- static SLJIT_INLINE void* alloc_chunk(sljit_uw size)
98
- {
99
- void* retval;
100
-
101
- #ifdef MAP_ANON
102
- retval = mmap(NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANON, -1, 0);
103
- #else
104
- if (dev_zero < 0) {
105
- if (open_dev_zero())
106
- return NULL;
107
- }
108
- retval = mmap(NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE, dev_zero, 0);
109
- #endif
110
-
111
- return (retval != MAP_FAILED) ? retval : NULL;
112
- }
113
-
114
- static SLJIT_INLINE void free_chunk(void* chunk, sljit_uw size)
115
- {
116
- munmap(chunk, size);
117
- }
118
-
119
- #endif
120
-
121
- /* --------------------------------------------------------------------- */
122
- /* Common functions */
123
- /* --------------------------------------------------------------------- */
124
-
125
- #define CHUNK_MASK (~(CHUNK_SIZE - 1))
126
-
127
- struct block_header {
128
- sljit_uw size;
129
- sljit_uw prev_size;
130
- };
131
-
132
- struct free_block {
133
- struct block_header header;
134
- struct free_block *next;
135
- struct free_block *prev;
136
- sljit_uw size;
137
- };
138
-
139
- #define AS_BLOCK_HEADER(base, offset) \
140
- ((struct block_header*)(((sljit_ub*)base) + offset))
141
- #define AS_FREE_BLOCK(base, offset) \
142
- ((struct free_block*)(((sljit_ub*)base) + offset))
143
- #define MEM_START(base) ((void*)(((sljit_ub*)base) + sizeof(struct block_header)))
144
- #define ALIGN_SIZE(size) (((size) + sizeof(struct block_header) + 7) & ~7)
145
-
146
- static struct free_block* free_blocks;
147
- static sljit_uw allocated_size;
148
- static sljit_uw total_size;
149
-
150
- static SLJIT_INLINE void sljit_insert_free_block(struct free_block *free_block, sljit_uw size)
151
- {
152
- free_block->header.size = 0;
153
- free_block->size = size;
154
-
155
- free_block->next = free_blocks;
156
- free_block->prev = 0;
157
- if (free_blocks)
158
- free_blocks->prev = free_block;
159
- free_blocks = free_block;
160
- }
161
-
162
- static SLJIT_INLINE void sljit_remove_free_block(struct free_block *free_block)
163
- {
164
- if (free_block->next)
165
- free_block->next->prev = free_block->prev;
166
-
167
- if (free_block->prev)
168
- free_block->prev->next = free_block->next;
169
- else {
170
- SLJIT_ASSERT(free_blocks == free_block);
171
- free_blocks = free_block->next;
172
- }
173
- }
174
-
175
- SLJIT_API_FUNC_ATTRIBUTE void* sljit_malloc_exec(sljit_uw size)
176
- {
177
- struct block_header *header;
178
- struct block_header *next_header;
179
- struct free_block *free_block;
180
- sljit_uw chunk_size;
181
-
182
- allocator_grab_lock();
183
- if (size < sizeof(struct free_block))
184
- size = sizeof(struct free_block);
185
- size = ALIGN_SIZE(size);
186
-
187
- free_block = free_blocks;
188
- while (free_block) {
189
- if (free_block->size >= size) {
190
- chunk_size = free_block->size;
191
- if (chunk_size > size + 64) {
192
- /* We just cut a block from the end of the free block. */
193
- chunk_size -= size;
194
- free_block->size = chunk_size;
195
- header = AS_BLOCK_HEADER(free_block, chunk_size);
196
- header->prev_size = chunk_size;
197
- AS_BLOCK_HEADER(header, size)->prev_size = size;
198
- }
199
- else {
200
- sljit_remove_free_block(free_block);
201
- header = (struct block_header*)free_block;
202
- size = chunk_size;
203
- }
204
- allocated_size += size;
205
- header->size = size;
206
- allocator_release_lock();
207
- return MEM_START(header);
208
- }
209
- free_block = free_block->next;
210
- }
211
-
212
- chunk_size = (size + sizeof(struct block_header) + CHUNK_SIZE - 1) & CHUNK_MASK;
213
- header = (struct block_header*)alloc_chunk(chunk_size);
214
- if (!header) {
215
- allocator_release_lock();
216
- return NULL;
217
- }
218
-
219
- chunk_size -= sizeof(struct block_header);
220
- total_size += chunk_size;
221
-
222
- header->prev_size = 0;
223
- if (chunk_size > size + 64) {
224
- /* Cut the allocated space into a free and a used block. */
225
- allocated_size += size;
226
- header->size = size;
227
- chunk_size -= size;
228
-
229
- free_block = AS_FREE_BLOCK(header, size);
230
- free_block->header.prev_size = size;
231
- sljit_insert_free_block(free_block, chunk_size);
232
- next_header = AS_BLOCK_HEADER(free_block, chunk_size);
233
- }
234
- else {
235
- /* All space belongs to this allocation. */
236
- allocated_size += chunk_size;
237
- header->size = chunk_size;
238
- next_header = AS_BLOCK_HEADER(header, chunk_size);
239
- }
240
- next_header->size = 1;
241
- next_header->prev_size = chunk_size;
242
- allocator_release_lock();
243
- return MEM_START(header);
244
- }
245
-
246
- SLJIT_API_FUNC_ATTRIBUTE void sljit_free_exec(void* ptr)
247
- {
248
- struct block_header *header;
249
- struct free_block* free_block;
250
-
251
- allocator_grab_lock();
252
- header = AS_BLOCK_HEADER(ptr, -(sljit_sw)sizeof(struct block_header));
253
- allocated_size -= header->size;
254
-
255
- /* Connecting free blocks together if possible. */
256
-
257
- /* If header->prev_size == 0, free_block will equal to header.
258
- In this case, free_block->header.size will be > 0. */
259
- free_block = AS_FREE_BLOCK(header, -(sljit_sw)header->prev_size);
260
- if (SLJIT_UNLIKELY(!free_block->header.size)) {
261
- free_block->size += header->size;
262
- header = AS_BLOCK_HEADER(free_block, free_block->size);
263
- header->prev_size = free_block->size;
264
- }
265
- else {
266
- free_block = (struct free_block*)header;
267
- sljit_insert_free_block(free_block, header->size);
268
- }
269
-
270
- header = AS_BLOCK_HEADER(free_block, free_block->size);
271
- if (SLJIT_UNLIKELY(!header->size)) {
272
- free_block->size += ((struct free_block*)header)->size;
273
- sljit_remove_free_block((struct free_block*)header);
274
- header = AS_BLOCK_HEADER(free_block, free_block->size);
275
- header->prev_size = free_block->size;
276
- }
277
-
278
- /* The whole chunk is free. */
279
- if (SLJIT_UNLIKELY(!free_block->header.prev_size && header->size == 1)) {
280
- /* If this block is freed, we still have (allocated_size / 2) free space. */
281
- if (total_size - free_block->size > (allocated_size * 3 / 2)) {
282
- total_size -= free_block->size;
283
- sljit_remove_free_block(free_block);
284
- free_chunk(free_block, free_block->size + sizeof(struct block_header));
285
- }
286
- }
287
-
288
- allocator_release_lock();
289
- }
@@ -1,1766 +0,0 @@
1
- /*
2
- * Stack-less Just-In-Time compiler
3
- *
4
- * Copyright 2009-2012 Zoltan Herczeg (hzmester@freemail.hu). All rights reserved.
5
- *
6
- * Redistribution and use in source and binary forms, with or without modification, are
7
- * permitted provided that the following conditions are met:
8
- *
9
- * 1. Redistributions of source code must retain the above copyright notice, this list of
10
- * conditions and the following disclaimer.
11
- *
12
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
13
- * of conditions and the following disclaimer in the documentation and/or other materials
14
- * provided with the distribution.
15
- *
16
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND CONTRIBUTORS ``AS IS'' AND ANY
17
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
19
- * SHALL THE COPYRIGHT HOLDER(S) OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
21
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
22
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
24
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
- */
26
-
27
- #include "sljitLir.h"
28
-
29
- #define CHECK_ERROR() \
30
- do { \
31
- if (SLJIT_UNLIKELY(compiler->error)) \
32
- return compiler->error; \
33
- } while (0)
34
-
35
- #define CHECK_ERROR_PTR() \
36
- do { \
37
- if (SLJIT_UNLIKELY(compiler->error)) \
38
- return NULL; \
39
- } while (0)
40
-
41
- #define CHECK_ERROR_VOID() \
42
- do { \
43
- if (SLJIT_UNLIKELY(compiler->error)) \
44
- return; \
45
- } while (0)
46
-
47
- #define FAIL_IF(expr) \
48
- do { \
49
- if (SLJIT_UNLIKELY(expr)) \
50
- return compiler->error; \
51
- } while (0)
52
-
53
- #define PTR_FAIL_IF(expr) \
54
- do { \
55
- if (SLJIT_UNLIKELY(expr)) \
56
- return NULL; \
57
- } while (0)
58
-
59
- #define FAIL_IF_NULL(ptr) \
60
- do { \
61
- if (SLJIT_UNLIKELY(!(ptr))) { \
62
- compiler->error = SLJIT_ERR_ALLOC_FAILED; \
63
- return SLJIT_ERR_ALLOC_FAILED; \
64
- } \
65
- } while (0)
66
-
67
- #define PTR_FAIL_IF_NULL(ptr) \
68
- do { \
69
- if (SLJIT_UNLIKELY(!(ptr))) { \
70
- compiler->error = SLJIT_ERR_ALLOC_FAILED; \
71
- return NULL; \
72
- } \
73
- } while (0)
74
-
75
- #define PTR_FAIL_WITH_EXEC_IF(ptr) \
76
- do { \
77
- if (SLJIT_UNLIKELY(!(ptr))) { \
78
- compiler->error = SLJIT_ERR_EX_ALLOC_FAILED; \
79
- return NULL; \
80
- } \
81
- } while (0)
82
-
83
- #if !(defined SLJIT_CONFIG_UNSUPPORTED && SLJIT_CONFIG_UNSUPPORTED)
84
-
85
- #define GET_OPCODE(op) \
86
- ((op) & ~(SLJIT_INT_OP | SLJIT_SET_E | SLJIT_SET_S | SLJIT_SET_U | SLJIT_SET_O | SLJIT_SET_C | SLJIT_KEEP_FLAGS))
87
-
88
- #define GET_FLAGS(op) \
89
- ((op) & (SLJIT_SET_E | SLJIT_SET_S | SLJIT_SET_U | SLJIT_SET_O | SLJIT_SET_C))
90
-
91
- #define GET_ALL_FLAGS(op) \
92
- ((op) & (SLJIT_INT_OP | SLJIT_SET_E | SLJIT_SET_S | SLJIT_SET_U | SLJIT_SET_O | SLJIT_SET_C | SLJIT_KEEP_FLAGS))
93
-
94
- #define TYPE_CAST_NEEDED(op) \
95
- (((op) >= SLJIT_MOV_UB && (op) <= SLJIT_MOV_SH) || ((op) >= SLJIT_MOVU_UB && (op) <= SLJIT_MOVU_SH))
96
-
97
- #define BUF_SIZE 4096
98
-
99
- #if (defined SLJIT_32BIT_ARCHITECTURE && SLJIT_32BIT_ARCHITECTURE)
100
- #define ABUF_SIZE 2048
101
- #else
102
- #define ABUF_SIZE 4096
103
- #endif
104
-
105
- /* Jump flags. */
106
- #define JUMP_LABEL 0x1
107
- #define JUMP_ADDR 0x2
108
- /* SLJIT_REWRITABLE_JUMP is 0x1000. */
109
-
110
- #if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) || (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)
111
- # define PATCH_MB 0x4
112
- # define PATCH_MW 0x8
113
- #if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)
114
- # define PATCH_MD 0x10
115
- #endif
116
- #endif
117
-
118
- #if (defined SLJIT_CONFIG_ARM_V5 && SLJIT_CONFIG_ARM_V5) || (defined SLJIT_CONFIG_ARM_V7 && SLJIT_CONFIG_ARM_V7)
119
- # define IS_BL 0x4
120
- # define PATCH_B 0x8
121
- #endif
122
-
123
- #if (defined SLJIT_CONFIG_ARM_V5 && SLJIT_CONFIG_ARM_V5)
124
- # define CPOOL_SIZE 512
125
- #endif
126
-
127
- #if (defined SLJIT_CONFIG_ARM_THUMB2 && SLJIT_CONFIG_ARM_THUMB2)
128
- # define IS_COND 0x04
129
- # define IS_BL 0x08
130
- /* cannot be encoded as branch */
131
- # define B_TYPE0 0x00
132
- /* conditional + imm8 */
133
- # define B_TYPE1 0x10
134
- /* conditional + imm20 */
135
- # define B_TYPE2 0x20
136
- /* IT + imm24 */
137
- # define B_TYPE3 0x30
138
- /* imm11 */
139
- # define B_TYPE4 0x40
140
- /* imm24 */
141
- # define B_TYPE5 0x50
142
- /* BL + imm24 */
143
- # define BL_TYPE6 0x60
144
- /* 0xf00 cc code for branches */
145
- #endif
146
-
147
- #if (defined SLJIT_CONFIG_PPC_32 && SLJIT_CONFIG_PPC_32) || (defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64)
148
- # define UNCOND_B 0x04
149
- # define PATCH_B 0x08
150
- # define ABSOLUTE_B 0x10
151
- #endif
152
-
153
- #if (defined SLJIT_CONFIG_MIPS_32 && SLJIT_CONFIG_MIPS_32)
154
- # define IS_MOVABLE 0x04
155
- # define IS_JAL 0x08
156
- # define IS_BIT26_COND 0x10
157
- # define IS_BIT16_COND 0x20
158
-
159
- # define IS_COND (IS_BIT26_COND | IS_BIT16_COND)
160
-
161
- # define PATCH_B 0x40
162
- # define PATCH_J 0x80
163
-
164
- /* instruction types */
165
- # define MOVABLE_INS 0
166
- /* 1 - 31 last destination register */
167
- /* no destination (i.e: store) */
168
- # define UNMOVABLE_INS 32
169
- /* FPU status register */
170
- # define FCSR_FCC 33
171
- #endif
172
-
173
- #if (defined SLJIT_CONFIG_SPARC_32 && SLJIT_CONFIG_SPARC_32)
174
- # define IS_MOVABLE 0x04
175
- # define IS_COND 0x08
176
- # define IS_CALL 0x10
177
-
178
- # define PATCH_B 0x20
179
- # define PATCH_CALL 0x40
180
-
181
- /* instruction types */
182
- # define MOVABLE_INS 0
183
- /* 1 - 31 last destination register */
184
- /* no destination (i.e: store) */
185
- # define UNMOVABLE_INS 32
186
-
187
- # define DST_INS_MASK 0xff
188
-
189
- /* ICC_SET is the same as SET_FLAGS. */
190
- # define ICC_IS_SET (1 << 23)
191
- # define FCC_IS_SET (1 << 24)
192
- #endif
193
-
194
- #if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32)
195
- #define SLJIT_HAS_VARIABLE_LOCALS_OFFSET 1
196
- #if !(defined SLJIT_X86_32_FASTCALL && SLJIT_X86_32_FASTCALL)
197
- #define FIXED_LOCALS_OFFSET (3 * sizeof(sljit_sw))
198
- #endif
199
- #endif
200
-
201
- #if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)
202
- #define SLJIT_HAS_FIXED_LOCALS_OFFSET 1
203
- #ifdef _WIN64
204
- #define FIXED_LOCALS_OFFSET ((4 + 2) * sizeof(sljit_sw))
205
- #else
206
- #define FIXED_LOCALS_OFFSET (sizeof(sljit_sw))
207
- #endif
208
- #endif
209
-
210
- #if (defined SLJIT_CONFIG_PPC_32 && SLJIT_CONFIG_PPC_32)
211
- #define SLJIT_HAS_FIXED_LOCALS_OFFSET 1
212
- #if (defined SLJIT_INDIRECT_CALL && SLJIT_INDIRECT_CALL)
213
- #define FIXED_LOCALS_OFFSET ((6 + 8) * sizeof(sljit_sw))
214
- #else
215
- #define FIXED_LOCALS_OFFSET (2 * sizeof(sljit_sw))
216
- #endif
217
- #endif
218
-
219
- #if (defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64)
220
- #define SLJIT_HAS_FIXED_LOCALS_OFFSET 1
221
- #define FIXED_LOCALS_OFFSET ((6 + 8) * sizeof(sljit_sw))
222
- #endif
223
-
224
- #if (defined SLJIT_CONFIG_MIPS_32 && SLJIT_CONFIG_MIPS_32)
225
- #define SLJIT_HAS_FIXED_LOCALS_OFFSET 1
226
- #define FIXED_LOCALS_OFFSET (4 * sizeof(sljit_sw))
227
- #endif
228
-
229
- #if (defined SLJIT_CONFIG_SPARC_32 && SLJIT_CONFIG_SPARC_32)
230
- #define SLJIT_HAS_FIXED_LOCALS_OFFSET 1
231
- #define FIXED_LOCALS_OFFSET (23 * sizeof(sljit_sw))
232
- #endif
233
-
234
- #if (defined SLJIT_HAS_VARIABLE_LOCALS_OFFSET && SLJIT_HAS_VARIABLE_LOCALS_OFFSET)
235
-
236
- #define ADJUST_LOCAL_OFFSET(p, i) \
237
- if ((p) == (SLJIT_MEM1(SLJIT_LOCALS_REG))) \
238
- (i) += compiler->locals_offset;
239
-
240
- #elif (defined SLJIT_HAS_FIXED_LOCALS_OFFSET && SLJIT_HAS_FIXED_LOCALS_OFFSET)
241
-
242
- #define ADJUST_LOCAL_OFFSET(p, i) \
243
- if ((p) == (SLJIT_MEM1(SLJIT_LOCALS_REG))) \
244
- (i) += FIXED_LOCALS_OFFSET;
245
-
246
- #else
247
-
248
- #define ADJUST_LOCAL_OFFSET(p, i)
249
-
250
- #endif
251
-
252
- #endif /* !(defined SLJIT_CONFIG_UNSUPPORTED && SLJIT_CONFIG_UNSUPPORTED) */
253
-
254
- /* Utils can still be used even if SLJIT_CONFIG_UNSUPPORTED is set. */
255
- #include "sljitUtils.c"
256
-
257
- #if !(defined SLJIT_CONFIG_UNSUPPORTED && SLJIT_CONFIG_UNSUPPORTED)
258
-
259
- #if (defined SLJIT_EXECUTABLE_ALLOCATOR && SLJIT_EXECUTABLE_ALLOCATOR)
260
- #include "sljitExecAllocator.c"
261
- #endif
262
-
263
- #if (defined SLJIT_SSE2_AUTO && SLJIT_SSE2_AUTO) && !(defined SLJIT_SSE2 && SLJIT_SSE2)
264
- #error SLJIT_SSE2_AUTO cannot be enabled without SLJIT_SSE2
265
- #endif
266
-
267
- /* --------------------------------------------------------------------- */
268
- /* Public functions */
269
- /* --------------------------------------------------------------------- */
270
-
271
- #if (defined SLJIT_CONFIG_ARM_V5 && SLJIT_CONFIG_ARM_V5) || ((defined SLJIT_SSE2 && SLJIT_SSE2) && ((defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) || (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)))
272
- #define SLJIT_NEEDS_COMPILER_INIT 1
273
- static sljit_si compiler_initialized = 0;
274
- /* A thread safe initialization. */
275
- static void init_compiler(void);
276
- #endif
277
-
278
- SLJIT_API_FUNC_ATTRIBUTE struct sljit_compiler* sljit_create_compiler(void)
279
- {
280
- struct sljit_compiler *compiler = (struct sljit_compiler*)SLJIT_MALLOC(sizeof(struct sljit_compiler));
281
- if (!compiler)
282
- return NULL;
283
- SLJIT_ZEROMEM(compiler, sizeof(struct sljit_compiler));
284
-
285
- SLJIT_COMPILE_ASSERT(
286
- sizeof(sljit_sb) == 1 && sizeof(sljit_ub) == 1
287
- && sizeof(sljit_sh) == 2 && sizeof(sljit_uh) == 2
288
- && sizeof(sljit_si) == 4 && sizeof(sljit_ui) == 4
289
- && (sizeof(sljit_p) == 4 || sizeof(sljit_p) == 8)
290
- && sizeof(sljit_p) <= sizeof(sljit_sw)
291
- && (sizeof(sljit_sw) == 4 || sizeof(sljit_sw) == 8)
292
- && (sizeof(sljit_uw) == 4 || sizeof(sljit_uw) == 8),
293
- invalid_integer_types);
294
- SLJIT_COMPILE_ASSERT(SLJIT_INT_OP == SLJIT_SINGLE_OP,
295
- int_op_and_single_op_must_be_the_same);
296
- SLJIT_COMPILE_ASSERT(SLJIT_REWRITABLE_JUMP != SLJIT_SINGLE_OP,
297
- rewritable_jump_and_single_op_must_not_be_the_same);
298
-
299
- /* Only the non-zero members must be set. */
300
- compiler->error = SLJIT_SUCCESS;
301
-
302
- compiler->buf = (struct sljit_memory_fragment*)SLJIT_MALLOC(BUF_SIZE);
303
- compiler->abuf = (struct sljit_memory_fragment*)SLJIT_MALLOC(ABUF_SIZE);
304
-
305
- if (!compiler->buf || !compiler->abuf) {
306
- if (compiler->buf)
307
- SLJIT_FREE(compiler->buf);
308
- if (compiler->abuf)
309
- SLJIT_FREE(compiler->abuf);
310
- SLJIT_FREE(compiler);
311
- return NULL;
312
- }
313
-
314
- compiler->buf->next = NULL;
315
- compiler->buf->used_size = 0;
316
- compiler->abuf->next = NULL;
317
- compiler->abuf->used_size = 0;
318
-
319
- compiler->scratches = -1;
320
- compiler->saveds = -1;
321
-
322
- #if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32)
323
- compiler->args = -1;
324
- #endif
325
-
326
- #if (defined SLJIT_CONFIG_ARM_V5 && SLJIT_CONFIG_ARM_V5)
327
- compiler->cpool = (sljit_uw*)SLJIT_MALLOC(CPOOL_SIZE * sizeof(sljit_uw) + CPOOL_SIZE * sizeof(sljit_ub));
328
- if (!compiler->cpool) {
329
- SLJIT_FREE(compiler->buf);
330
- SLJIT_FREE(compiler->abuf);
331
- SLJIT_FREE(compiler);
332
- return NULL;
333
- }
334
- compiler->cpool_unique = (sljit_ub*)(compiler->cpool + CPOOL_SIZE);
335
- compiler->cpool_diff = 0xffffffff;
336
- #endif
337
-
338
- #if (defined SLJIT_CONFIG_MIPS_32 && SLJIT_CONFIG_MIPS_32)
339
- compiler->delay_slot = UNMOVABLE_INS;
340
- #endif
341
-
342
- #if (defined SLJIT_CONFIG_SPARC_32 && SLJIT_CONFIG_SPARC_32)
343
- compiler->delay_slot = UNMOVABLE_INS;
344
- #endif
345
-
346
- #if (defined SLJIT_NEEDS_COMPILER_INIT && SLJIT_NEEDS_COMPILER_INIT)
347
- if (!compiler_initialized) {
348
- init_compiler();
349
- compiler_initialized = 1;
350
- }
351
- #endif
352
-
353
- return compiler;
354
- }
355
-
356
- SLJIT_API_FUNC_ATTRIBUTE void sljit_free_compiler(struct sljit_compiler *compiler)
357
- {
358
- struct sljit_memory_fragment *buf;
359
- struct sljit_memory_fragment *curr;
360
-
361
- buf = compiler->buf;
362
- while (buf) {
363
- curr = buf;
364
- buf = buf->next;
365
- SLJIT_FREE(curr);
366
- }
367
-
368
- buf = compiler->abuf;
369
- while (buf) {
370
- curr = buf;
371
- buf = buf->next;
372
- SLJIT_FREE(curr);
373
- }
374
-
375
- #if (defined SLJIT_CONFIG_ARM_V5 && SLJIT_CONFIG_ARM_V5)
376
- SLJIT_FREE(compiler->cpool);
377
- #endif
378
- SLJIT_FREE(compiler);
379
- }
380
-
381
- #if (defined SLJIT_CONFIG_ARM_THUMB2 && SLJIT_CONFIG_ARM_THUMB2)
382
- SLJIT_API_FUNC_ATTRIBUTE void sljit_free_code(void* code)
383
- {
384
- /* Remove thumb mode flag. */
385
- SLJIT_FREE_EXEC((void*)((sljit_uw)code & ~0x1));
386
- }
387
- #elif (defined SLJIT_INDIRECT_CALL && SLJIT_INDIRECT_CALL)
388
- SLJIT_API_FUNC_ATTRIBUTE void sljit_free_code(void* code)
389
- {
390
- /* Resolve indirection. */
391
- code = (void*)(*(sljit_uw*)code);
392
- SLJIT_FREE_EXEC(code);
393
- }
394
- #else
395
- SLJIT_API_FUNC_ATTRIBUTE void sljit_free_code(void* code)
396
- {
397
- SLJIT_FREE_EXEC(code);
398
- }
399
- #endif
400
-
401
- SLJIT_API_FUNC_ATTRIBUTE void sljit_set_label(struct sljit_jump *jump, struct sljit_label* label)
402
- {
403
- if (SLJIT_LIKELY(!!jump) && SLJIT_LIKELY(!!label)) {
404
- jump->flags &= ~JUMP_ADDR;
405
- jump->flags |= JUMP_LABEL;
406
- jump->u.label = label;
407
- }
408
- }
409
-
410
- SLJIT_API_FUNC_ATTRIBUTE void sljit_set_target(struct sljit_jump *jump, sljit_uw target)
411
- {
412
- if (SLJIT_LIKELY(!!jump)) {
413
- SLJIT_ASSERT(jump->flags & SLJIT_REWRITABLE_JUMP);
414
-
415
- jump->flags &= ~JUMP_LABEL;
416
- jump->flags |= JUMP_ADDR;
417
- jump->u.target = target;
418
- }
419
- }
420
-
421
- /* --------------------------------------------------------------------- */
422
- /* Private functions */
423
- /* --------------------------------------------------------------------- */
424
-
425
- static void* ensure_buf(struct sljit_compiler *compiler, sljit_uw size)
426
- {
427
- sljit_ub *ret;
428
- struct sljit_memory_fragment *new_frag;
429
-
430
- SLJIT_ASSERT(size <= 256);
431
- if (compiler->buf->used_size + size <= (BUF_SIZE - (sljit_uw)SLJIT_OFFSETOF(struct sljit_memory_fragment, memory))) {
432
- ret = compiler->buf->memory + compiler->buf->used_size;
433
- compiler->buf->used_size += size;
434
- return ret;
435
- }
436
- new_frag = (struct sljit_memory_fragment*)SLJIT_MALLOC(BUF_SIZE);
437
- PTR_FAIL_IF_NULL(new_frag);
438
- new_frag->next = compiler->buf;
439
- compiler->buf = new_frag;
440
- new_frag->used_size = size;
441
- return new_frag->memory;
442
- }
443
-
444
- static void* ensure_abuf(struct sljit_compiler *compiler, sljit_uw size)
445
- {
446
- sljit_ub *ret;
447
- struct sljit_memory_fragment *new_frag;
448
-
449
- SLJIT_ASSERT(size <= 256);
450
- if (compiler->abuf->used_size + size <= (ABUF_SIZE - (sljit_uw)SLJIT_OFFSETOF(struct sljit_memory_fragment, memory))) {
451
- ret = compiler->abuf->memory + compiler->abuf->used_size;
452
- compiler->abuf->used_size += size;
453
- return ret;
454
- }
455
- new_frag = (struct sljit_memory_fragment*)SLJIT_MALLOC(ABUF_SIZE);
456
- PTR_FAIL_IF_NULL(new_frag);
457
- new_frag->next = compiler->abuf;
458
- compiler->abuf = new_frag;
459
- new_frag->used_size = size;
460
- return new_frag->memory;
461
- }
462
-
463
- SLJIT_API_FUNC_ATTRIBUTE void* sljit_alloc_memory(struct sljit_compiler *compiler, sljit_si size)
464
- {
465
- CHECK_ERROR_PTR();
466
-
467
- #if (defined SLJIT_64BIT_ARCHITECTURE && SLJIT_64BIT_ARCHITECTURE)
468
- if (size <= 0 || size > 128)
469
- return NULL;
470
- size = (size + 7) & ~7;
471
- #else
472
- if (size <= 0 || size > 64)
473
- return NULL;
474
- size = (size + 3) & ~3;
475
- #endif
476
- return ensure_abuf(compiler, size);
477
- }
478
-
479
- static SLJIT_INLINE void reverse_buf(struct sljit_compiler *compiler)
480
- {
481
- struct sljit_memory_fragment *buf = compiler->buf;
482
- struct sljit_memory_fragment *prev = NULL;
483
- struct sljit_memory_fragment *tmp;
484
-
485
- do {
486
- tmp = buf->next;
487
- buf->next = prev;
488
- prev = buf;
489
- buf = tmp;
490
- } while (buf != NULL);
491
-
492
- compiler->buf = prev;
493
- }
494
-
495
- static SLJIT_INLINE void set_label(struct sljit_label *label, struct sljit_compiler *compiler)
496
- {
497
- label->next = NULL;
498
- label->size = compiler->size;
499
- if (compiler->last_label)
500
- compiler->last_label->next = label;
501
- else
502
- compiler->labels = label;
503
- compiler->last_label = label;
504
- }
505
-
506
- static SLJIT_INLINE void set_jump(struct sljit_jump *jump, struct sljit_compiler *compiler, sljit_si flags)
507
- {
508
- jump->next = NULL;
509
- jump->flags = flags;
510
- if (compiler->last_jump)
511
- compiler->last_jump->next = jump;
512
- else
513
- compiler->jumps = jump;
514
- compiler->last_jump = jump;
515
- }
516
-
517
- static SLJIT_INLINE void set_const(struct sljit_const *const_, struct sljit_compiler *compiler)
518
- {
519
- const_->next = NULL;
520
- const_->addr = compiler->size;
521
- if (compiler->last_const)
522
- compiler->last_const->next = const_;
523
- else
524
- compiler->consts = const_;
525
- compiler->last_const = const_;
526
- }
527
-
528
- #define ADDRESSING_DEPENDS_ON(exp, reg) \
529
- (((exp) & SLJIT_MEM) && (((exp) & 0xf) == reg || (((exp) >> 4) & 0xf) == reg))
530
-
531
- #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
532
- #define FUNCTION_CHECK_OP() \
533
- SLJIT_ASSERT(!GET_FLAGS(op) || !(op & SLJIT_KEEP_FLAGS)); \
534
- switch (GET_OPCODE(op)) { \
535
- case SLJIT_NOT: \
536
- case SLJIT_CLZ: \
537
- case SLJIT_AND: \
538
- case SLJIT_OR: \
539
- case SLJIT_XOR: \
540
- case SLJIT_SHL: \
541
- case SLJIT_LSHR: \
542
- case SLJIT_ASHR: \
543
- SLJIT_ASSERT(!(op & (SLJIT_SET_S | SLJIT_SET_U | SLJIT_SET_O | SLJIT_SET_C))); \
544
- break; \
545
- case SLJIT_NEG: \
546
- SLJIT_ASSERT(!(op & (SLJIT_SET_S | SLJIT_SET_U | SLJIT_SET_C))); \
547
- break; \
548
- case SLJIT_MUL: \
549
- SLJIT_ASSERT(!(op & (SLJIT_SET_E | SLJIT_SET_S | SLJIT_SET_U | SLJIT_SET_C))); \
550
- break; \
551
- case SLJIT_CMPD: \
552
- SLJIT_ASSERT(!(op & (SLJIT_SET_U | SLJIT_SET_O | SLJIT_SET_C | SLJIT_KEEP_FLAGS))); \
553
- SLJIT_ASSERT((op & (SLJIT_SET_E | SLJIT_SET_S))); \
554
- break; \
555
- case SLJIT_ADD: \
556
- SLJIT_ASSERT(!(op & (SLJIT_SET_S | SLJIT_SET_U))); \
557
- break; \
558
- case SLJIT_SUB: \
559
- break; \
560
- case SLJIT_ADDC: \
561
- case SLJIT_SUBC: \
562
- SLJIT_ASSERT(!(op & (SLJIT_SET_E | SLJIT_SET_S | SLJIT_SET_U | SLJIT_SET_O))); \
563
- break; \
564
- case SLJIT_BREAKPOINT: \
565
- case SLJIT_NOP: \
566
- case SLJIT_UMUL: \
567
- case SLJIT_SMUL: \
568
- case SLJIT_MOV: \
569
- case SLJIT_MOV_P: \
570
- case SLJIT_MOVU: \
571
- case SLJIT_MOVU_P: \
572
- /* Nothing allowed */ \
573
- SLJIT_ASSERT(!(op & (SLJIT_INT_OP | SLJIT_SET_E | SLJIT_SET_S | SLJIT_SET_U | SLJIT_SET_O | SLJIT_SET_C | SLJIT_KEEP_FLAGS))); \
574
- break; \
575
- default: \
576
- /* Only SLJIT_INT_OP or SLJIT_SINGLE_OP is allowed. */ \
577
- SLJIT_ASSERT(!(op & (SLJIT_SET_E | SLJIT_SET_S | SLJIT_SET_U | SLJIT_SET_O | SLJIT_SET_C | SLJIT_KEEP_FLAGS))); \
578
- break; \
579
- }
580
-
581
- #define FUNCTION_CHECK_IS_REG(r) \
582
- ((r) == SLJIT_UNUSED || \
583
- ((r) >= SLJIT_SCRATCH_REG1 && (r) <= SLJIT_SCRATCH_REG1 - 1 + compiler->scratches) || \
584
- ((r) >= SLJIT_SAVED_REG1 && (r) <= SLJIT_SAVED_REG1 - 1 + compiler->saveds))
585
-
586
- #define FUNCTION_CHECK_SRC(p, i) \
587
- SLJIT_ASSERT(compiler->scratches != -1 && compiler->saveds != -1); \
588
- if (FUNCTION_CHECK_IS_REG(p)) \
589
- SLJIT_ASSERT((i) == 0 && (p) != SLJIT_UNUSED); \
590
- else if ((p) == SLJIT_IMM) \
591
- ; \
592
- else if ((p) == (SLJIT_MEM1(SLJIT_LOCALS_REG))) \
593
- SLJIT_ASSERT((i) >= 0 && (i) < compiler->logical_local_size); \
594
- else if ((p) & SLJIT_MEM) { \
595
- SLJIT_ASSERT(FUNCTION_CHECK_IS_REG((p) & 0xf)); \
596
- if ((p) & 0xf0) { \
597
- SLJIT_ASSERT(FUNCTION_CHECK_IS_REG(((p) >> 4) & 0xf)); \
598
- SLJIT_ASSERT(!((i) & ~0x3)); \
599
- } \
600
- SLJIT_ASSERT(((p) >> 9) == 0); \
601
- } \
602
- else \
603
- SLJIT_ASSERT_STOP();
604
-
605
- #define FUNCTION_CHECK_DST(p, i) \
606
- SLJIT_ASSERT(compiler->scratches != -1 && compiler->saveds != -1); \
607
- if (FUNCTION_CHECK_IS_REG(p)) \
608
- SLJIT_ASSERT((i) == 0); \
609
- else if ((p) == (SLJIT_MEM1(SLJIT_LOCALS_REG))) \
610
- SLJIT_ASSERT((i) >= 0 && (i) < compiler->logical_local_size); \
611
- else if ((p) & SLJIT_MEM) { \
612
- SLJIT_ASSERT(FUNCTION_CHECK_IS_REG((p) & 0xf)); \
613
- if ((p) & 0xf0) { \
614
- SLJIT_ASSERT(FUNCTION_CHECK_IS_REG(((p) >> 4) & 0xf)); \
615
- SLJIT_ASSERT(!((i) & ~0x3)); \
616
- } \
617
- SLJIT_ASSERT(((p) >> 9) == 0); \
618
- } \
619
- else \
620
- SLJIT_ASSERT_STOP();
621
-
622
- #define FUNCTION_FCHECK(p, i) \
623
- if ((p) >= SLJIT_FLOAT_REG1 && (p) <= SLJIT_FLOAT_REG6) \
624
- SLJIT_ASSERT(i == 0); \
625
- else if ((p) & SLJIT_MEM) { \
626
- SLJIT_ASSERT(FUNCTION_CHECK_IS_REG((p) & 0xf)); \
627
- if ((p) & 0xf0) { \
628
- SLJIT_ASSERT(FUNCTION_CHECK_IS_REG(((p) >> 4) & 0xf)); \
629
- SLJIT_ASSERT(((p) & 0xf0) != (SLJIT_LOCALS_REG << 4) && !(i & ~0x3)); \
630
- } else \
631
- SLJIT_ASSERT((((p) >> 4) & 0xf) == 0); \
632
- SLJIT_ASSERT(((p) >> 9) == 0); \
633
- } \
634
- else \
635
- SLJIT_ASSERT_STOP();
636
-
637
- #define FUNCTION_CHECK_OP1() \
638
- if (GET_OPCODE(op) >= SLJIT_MOVU && GET_OPCODE(op) <= SLJIT_MOVU_P) { \
639
- SLJIT_ASSERT(!(src & SLJIT_MEM) || (src & 0xf) != SLJIT_LOCALS_REG); \
640
- SLJIT_ASSERT(!(dst & SLJIT_MEM) || (dst & 0xf) != SLJIT_LOCALS_REG); \
641
- if ((src & SLJIT_MEM) && (src & 0xf)) \
642
- SLJIT_ASSERT((dst & 0xf) != (src & 0xf) && ((dst >> 4) & 0xf) != (src & 0xf)); \
643
- }
644
-
645
- #endif
646
-
647
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
648
-
649
- SLJIT_API_FUNC_ATTRIBUTE void sljit_compiler_verbose(struct sljit_compiler *compiler, FILE* verbose)
650
- {
651
- compiler->verbose = verbose;
652
- }
653
-
654
- static char* reg_names[] = {
655
- (char*)"<noreg>", (char*)"t1", (char*)"t2", (char*)"t3",
656
- (char*)"te1", (char*)"te2", (char*)"s1", (char*)"s2",
657
- (char*)"s3", (char*)"se1", (char*)"se2", (char*)"lcr"
658
- };
659
-
660
- static char* freg_names[] = {
661
- (char*)"<noreg>", (char*)"float_r1", (char*)"float_r2", (char*)"float_r3",
662
- (char*)"float_r4", (char*)"float_r5", (char*)"float_r6"
663
- };
664
-
665
- #if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) || (defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64)
666
- #ifdef _WIN64
667
- # define SLJIT_PRINT_D "I64"
668
- #else
669
- # define SLJIT_PRINT_D "l"
670
- #endif
671
- #else
672
- # define SLJIT_PRINT_D ""
673
- #endif
674
-
675
- #define sljit_verbose_param(p, i) \
676
- if ((p) & SLJIT_IMM) \
677
- fprintf(compiler->verbose, "#%" SLJIT_PRINT_D "d", (i)); \
678
- else if ((p) & SLJIT_MEM) { \
679
- if ((p) & 0xf) { \
680
- if (i) { \
681
- if (((p) >> 4) & 0xf) \
682
- fprintf(compiler->verbose, "[%s + %s * %d]", reg_names[(p) & 0xF], reg_names[((p) >> 4)& 0xF], 1 << (i)); \
683
- else \
684
- fprintf(compiler->verbose, "[%s + #%" SLJIT_PRINT_D "d]", reg_names[(p) & 0xF], (i)); \
685
- } \
686
- else { \
687
- if (((p) >> 4) & 0xf) \
688
- fprintf(compiler->verbose, "[%s + %s]", reg_names[(p) & 0xF], reg_names[((p) >> 4)& 0xF]); \
689
- else \
690
- fprintf(compiler->verbose, "[%s]", reg_names[(p) & 0xF]); \
691
- } \
692
- } \
693
- else \
694
- fprintf(compiler->verbose, "[#%" SLJIT_PRINT_D "d]", (i)); \
695
- } else \
696
- fprintf(compiler->verbose, "%s", reg_names[p]);
697
- #define sljit_verbose_fparam(p, i) \
698
- if ((p) & SLJIT_MEM) { \
699
- if ((p) & 0xf) { \
700
- if (i) { \
701
- if (((p) >> 4) & 0xf) \
702
- fprintf(compiler->verbose, "[%s + %s * %d]", reg_names[(p) & 0xF], reg_names[((p) >> 4)& 0xF], 1 << (i)); \
703
- else \
704
- fprintf(compiler->verbose, "[%s + #%" SLJIT_PRINT_D "d]", reg_names[(p) & 0xF], (i)); \
705
- } \
706
- else { \
707
- if (((p) >> 4) & 0xF) \
708
- fprintf(compiler->verbose, "[%s + %s]", reg_names[(p) & 0xF], reg_names[((p) >> 4)& 0xF]); \
709
- else \
710
- fprintf(compiler->verbose, "[%s]", reg_names[(p) & 0xF]); \
711
- } \
712
- } \
713
- else \
714
- fprintf(compiler->verbose, "[#%" SLJIT_PRINT_D "d]", (i)); \
715
- } else \
716
- fprintf(compiler->verbose, "%s", freg_names[p]);
717
-
718
- static SLJIT_CONST char* op_names[] = {
719
- /* op0 */
720
- (char*)"breakpoint", (char*)"nop",
721
- (char*)"umul", (char*)"smul", (char*)"udiv", (char*)"sdiv",
722
- /* op1 */
723
- (char*)"mov", (char*)"mov.ub", (char*)"mov.sb", (char*)"mov.uh",
724
- (char*)"mov.sh", (char*)"mov.ui", (char*)"mov.si", (char*)"mov.p",
725
- (char*)"movu", (char*)"movu.ub", (char*)"movu.sb", (char*)"movu.uh",
726
- (char*)"movu.sh", (char*)"movu.ui", (char*)"movu.si", (char*)"movu.p",
727
- (char*)"not", (char*)"neg", (char*)"clz",
728
- /* op2 */
729
- (char*)"add", (char*)"addc", (char*)"sub", (char*)"subc",
730
- (char*)"mul", (char*)"and", (char*)"or", (char*)"xor",
731
- (char*)"shl", (char*)"lshr", (char*)"ashr",
732
- /* fop1 */
733
- (char*)"cmp", (char*)"mov", (char*)"neg", (char*)"abs",
734
- /* fop2 */
735
- (char*)"add", (char*)"sub", (char*)"mul", (char*)"div"
736
- };
737
-
738
- static char* jump_names[] = {
739
- (char*)"c_equal", (char*)"c_not_equal",
740
- (char*)"c_less", (char*)"c_greater_equal",
741
- (char*)"c_greater", (char*)"c_less_equal",
742
- (char*)"c_sig_less", (char*)"c_sig_greater_equal",
743
- (char*)"c_sig_greater", (char*)"c_sig_less_equal",
744
- (char*)"c_overflow", (char*)"c_not_overflow",
745
- (char*)"c_mul_overflow", (char*)"c_mul_not_overflow",
746
- (char*)"c_float_equal", (char*)"c_float_not_equal",
747
- (char*)"c_float_less", (char*)"c_float_greater_equal",
748
- (char*)"c_float_greater", (char*)"c_float_less_equal",
749
- (char*)"c_float_unordered", (char*)"c_float_ordered",
750
- (char*)"jump", (char*)"fast_call",
751
- (char*)"call0", (char*)"call1", (char*)"call2", (char*)"call3"
752
- };
753
-
754
- #endif
755
-
756
- /* --------------------------------------------------------------------- */
757
- /* Arch dependent */
758
- /* --------------------------------------------------------------------- */
759
-
760
- static SLJIT_INLINE void check_sljit_generate_code(struct sljit_compiler *compiler)
761
- {
762
- #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
763
- struct sljit_jump *jump;
764
- #endif
765
- /* If debug and verbose are disabled, all arguments are unused. */
766
- SLJIT_UNUSED_ARG(compiler);
767
-
768
- SLJIT_ASSERT(compiler->size > 0);
769
- #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
770
- jump = compiler->jumps;
771
- while (jump) {
772
- /* All jumps have target. */
773
- SLJIT_ASSERT(jump->flags & (JUMP_LABEL | JUMP_ADDR));
774
- jump = jump->next;
775
- }
776
- #endif
777
- }
778
-
779
- static SLJIT_INLINE void check_sljit_emit_enter(struct sljit_compiler *compiler, sljit_si args, sljit_si scratches, sljit_si saveds, sljit_si local_size)
780
- {
781
- /* If debug and verbose are disabled, all arguments are unused. */
782
- SLJIT_UNUSED_ARG(compiler);
783
- SLJIT_UNUSED_ARG(args);
784
- SLJIT_UNUSED_ARG(scratches);
785
- SLJIT_UNUSED_ARG(saveds);
786
- SLJIT_UNUSED_ARG(local_size);
787
-
788
- SLJIT_ASSERT(args >= 0 && args <= 3);
789
- SLJIT_ASSERT(scratches >= 0 && scratches <= SLJIT_NO_TMP_REGISTERS);
790
- SLJIT_ASSERT(saveds >= 0 && saveds <= SLJIT_NO_GEN_REGISTERS);
791
- SLJIT_ASSERT(args <= saveds);
792
- SLJIT_ASSERT(local_size >= 0 && local_size <= SLJIT_MAX_LOCAL_SIZE);
793
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
794
- if (SLJIT_UNLIKELY(!!compiler->verbose))
795
- fprintf(compiler->verbose, " enter args=%d scratches=%d saveds=%d local_size=%d\n", args, scratches, saveds, local_size);
796
- #endif
797
- }
798
-
799
- static SLJIT_INLINE void check_sljit_set_context(struct sljit_compiler *compiler, sljit_si args, sljit_si scratches, sljit_si saveds, sljit_si local_size)
800
- {
801
- /* If debug and verbose are disabled, all arguments are unused. */
802
- SLJIT_UNUSED_ARG(compiler);
803
- SLJIT_UNUSED_ARG(args);
804
- SLJIT_UNUSED_ARG(scratches);
805
- SLJIT_UNUSED_ARG(saveds);
806
- SLJIT_UNUSED_ARG(local_size);
807
-
808
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) || (defined SLJIT_DEBUG && SLJIT_DEBUG)
809
- if (SLJIT_UNLIKELY(compiler->skip_checks)) {
810
- compiler->skip_checks = 0;
811
- return;
812
- }
813
- #endif
814
-
815
- SLJIT_ASSERT(args >= 0 && args <= 3);
816
- SLJIT_ASSERT(scratches >= 0 && scratches <= SLJIT_NO_TMP_REGISTERS);
817
- SLJIT_ASSERT(saveds >= 0 && saveds <= SLJIT_NO_GEN_REGISTERS);
818
- SLJIT_ASSERT(args <= saveds);
819
- SLJIT_ASSERT(local_size >= 0 && local_size <= SLJIT_MAX_LOCAL_SIZE);
820
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
821
- if (SLJIT_UNLIKELY(!!compiler->verbose))
822
- fprintf(compiler->verbose, " set_context args=%d scratches=%d saveds=%d local_size=%d\n", args, scratches, saveds, local_size);
823
- #endif
824
- }
825
-
826
- static SLJIT_INLINE void check_sljit_emit_return(struct sljit_compiler *compiler, sljit_si op, sljit_si src, sljit_sw srcw)
827
- {
828
- /* If debug and verbose are disabled, all arguments are unused. */
829
- SLJIT_UNUSED_ARG(compiler);
830
- SLJIT_UNUSED_ARG(op);
831
- SLJIT_UNUSED_ARG(src);
832
- SLJIT_UNUSED_ARG(srcw);
833
-
834
- #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
835
- if (op != SLJIT_UNUSED) {
836
- SLJIT_ASSERT(op >= SLJIT_MOV && op <= SLJIT_MOV_P);
837
- FUNCTION_CHECK_SRC(src, srcw);
838
- }
839
- else
840
- SLJIT_ASSERT(src == 0 && srcw == 0);
841
- #endif
842
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
843
- if (SLJIT_UNLIKELY(!!compiler->verbose)) {
844
- if (op == SLJIT_UNUSED)
845
- fprintf(compiler->verbose, " return\n");
846
- else {
847
- fprintf(compiler->verbose, " return %s ", op_names[op]);
848
- sljit_verbose_param(src, srcw);
849
- fprintf(compiler->verbose, "\n");
850
- }
851
- }
852
- #endif
853
- }
854
-
855
- static SLJIT_INLINE void check_sljit_emit_fast_enter(struct sljit_compiler *compiler, sljit_si dst, sljit_sw dstw)
856
- {
857
- /* If debug and verbose are disabled, all arguments are unused. */
858
- SLJIT_UNUSED_ARG(compiler);
859
- SLJIT_UNUSED_ARG(dst);
860
- SLJIT_UNUSED_ARG(dstw);
861
-
862
- #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
863
- FUNCTION_CHECK_DST(dst, dstw);
864
- #endif
865
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
866
- if (SLJIT_UNLIKELY(!!compiler->verbose)) {
867
- fprintf(compiler->verbose, " fast_enter ");
868
- sljit_verbose_param(dst, dstw);
869
- fprintf(compiler->verbose, "\n");
870
- }
871
- #endif
872
- }
873
-
874
- static SLJIT_INLINE void check_sljit_emit_fast_return(struct sljit_compiler *compiler, sljit_si src, sljit_sw srcw)
875
- {
876
- /* If debug and verbose are disabled, all arguments are unused. */
877
- SLJIT_UNUSED_ARG(compiler);
878
- SLJIT_UNUSED_ARG(src);
879
- SLJIT_UNUSED_ARG(srcw);
880
-
881
- #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
882
- FUNCTION_CHECK_SRC(src, srcw);
883
- #endif
884
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
885
- if (SLJIT_UNLIKELY(!!compiler->verbose)) {
886
- fprintf(compiler->verbose, " fast_return ");
887
- sljit_verbose_param(src, srcw);
888
- fprintf(compiler->verbose, "\n");
889
- }
890
- #endif
891
- }
892
-
893
- static SLJIT_INLINE void check_sljit_emit_op0(struct sljit_compiler *compiler, sljit_si op)
894
- {
895
- /* If debug and verbose are disabled, all arguments are unused. */
896
- SLJIT_UNUSED_ARG(compiler);
897
- SLJIT_UNUSED_ARG(op);
898
-
899
- SLJIT_ASSERT((op >= SLJIT_BREAKPOINT && op <= SLJIT_SMUL)
900
- || ((op & ~SLJIT_INT_OP) >= SLJIT_UDIV && (op & ~SLJIT_INT_OP) <= SLJIT_SDIV));
901
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
902
- if (SLJIT_UNLIKELY(!!compiler->verbose))
903
- fprintf(compiler->verbose, " %s%s\n", !(op & SLJIT_INT_OP) ? "" : "i", op_names[GET_OPCODE(op)]);
904
- #endif
905
- }
906
-
907
- static SLJIT_INLINE void check_sljit_emit_op1(struct sljit_compiler *compiler, sljit_si op,
908
- sljit_si dst, sljit_sw dstw,
909
- sljit_si src, sljit_sw srcw)
910
- {
911
- /* If debug and verbose are disabled, all arguments are unused. */
912
- SLJIT_UNUSED_ARG(compiler);
913
- SLJIT_UNUSED_ARG(op);
914
- SLJIT_UNUSED_ARG(dst);
915
- SLJIT_UNUSED_ARG(dstw);
916
- SLJIT_UNUSED_ARG(src);
917
- SLJIT_UNUSED_ARG(srcw);
918
-
919
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) || (defined SLJIT_DEBUG && SLJIT_DEBUG)
920
- if (SLJIT_UNLIKELY(compiler->skip_checks)) {
921
- compiler->skip_checks = 0;
922
- return;
923
- }
924
- #endif
925
-
926
- SLJIT_ASSERT(GET_OPCODE(op) >= SLJIT_MOV && GET_OPCODE(op) <= SLJIT_CLZ);
927
- #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
928
- FUNCTION_CHECK_OP();
929
- FUNCTION_CHECK_SRC(src, srcw);
930
- FUNCTION_CHECK_DST(dst, dstw);
931
- FUNCTION_CHECK_OP1();
932
- #endif
933
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
934
- if (SLJIT_UNLIKELY(!!compiler->verbose)) {
935
- fprintf(compiler->verbose, " %s%s%s%s%s%s%s%s ", !(op & SLJIT_INT_OP) ? "" : "i", op_names[GET_OPCODE(op)],
936
- !(op & SLJIT_SET_E) ? "" : ".e", !(op & SLJIT_SET_S) ? "" : ".s", !(op & SLJIT_SET_U) ? "" : ".u",
937
- !(op & SLJIT_SET_O) ? "" : ".o", !(op & SLJIT_SET_C) ? "" : ".c", !(op & SLJIT_KEEP_FLAGS) ? "" : ".k");
938
- sljit_verbose_param(dst, dstw);
939
- fprintf(compiler->verbose, ", ");
940
- sljit_verbose_param(src, srcw);
941
- fprintf(compiler->verbose, "\n");
942
- }
943
- #endif
944
- }
945
-
946
- static SLJIT_INLINE void check_sljit_emit_op2(struct sljit_compiler *compiler, sljit_si op,
947
- sljit_si dst, sljit_sw dstw,
948
- sljit_si src1, sljit_sw src1w,
949
- sljit_si src2, sljit_sw src2w)
950
- {
951
- /* If debug and verbose are disabled, all arguments are unused. */
952
- SLJIT_UNUSED_ARG(compiler);
953
- SLJIT_UNUSED_ARG(op);
954
- SLJIT_UNUSED_ARG(dst);
955
- SLJIT_UNUSED_ARG(dstw);
956
- SLJIT_UNUSED_ARG(src1);
957
- SLJIT_UNUSED_ARG(src1w);
958
- SLJIT_UNUSED_ARG(src2);
959
- SLJIT_UNUSED_ARG(src2w);
960
-
961
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) || (defined SLJIT_DEBUG && SLJIT_DEBUG)
962
- if (SLJIT_UNLIKELY(compiler->skip_checks)) {
963
- compiler->skip_checks = 0;
964
- return;
965
- }
966
- #endif
967
-
968
- SLJIT_ASSERT(GET_OPCODE(op) >= SLJIT_ADD && GET_OPCODE(op) <= SLJIT_ASHR);
969
- #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
970
- FUNCTION_CHECK_OP();
971
- FUNCTION_CHECK_SRC(src1, src1w);
972
- FUNCTION_CHECK_SRC(src2, src2w);
973
- FUNCTION_CHECK_DST(dst, dstw);
974
- #endif
975
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
976
- if (SLJIT_UNLIKELY(!!compiler->verbose)) {
977
- fprintf(compiler->verbose, " %s%s%s%s%s%s%s%s ", !(op & SLJIT_INT_OP) ? "" : "i", op_names[GET_OPCODE(op)],
978
- !(op & SLJIT_SET_E) ? "" : ".e", !(op & SLJIT_SET_S) ? "" : ".s", !(op & SLJIT_SET_U) ? "" : ".u",
979
- !(op & SLJIT_SET_O) ? "" : ".o", !(op & SLJIT_SET_C) ? "" : ".c", !(op & SLJIT_KEEP_FLAGS) ? "" : ".k");
980
- sljit_verbose_param(dst, dstw);
981
- fprintf(compiler->verbose, ", ");
982
- sljit_verbose_param(src1, src1w);
983
- fprintf(compiler->verbose, ", ");
984
- sljit_verbose_param(src2, src2w);
985
- fprintf(compiler->verbose, "\n");
986
- }
987
- #endif
988
- }
989
-
990
- static SLJIT_INLINE void check_sljit_get_register_index(sljit_si reg)
991
- {
992
- SLJIT_UNUSED_ARG(reg);
993
- SLJIT_ASSERT(reg > 0 && reg <= SLJIT_NO_REGISTERS);
994
- }
995
-
996
- static SLJIT_INLINE void check_sljit_emit_op_custom(struct sljit_compiler *compiler,
997
- void *instruction, sljit_si size)
998
- {
999
- SLJIT_UNUSED_ARG(compiler);
1000
- SLJIT_UNUSED_ARG(instruction);
1001
- SLJIT_UNUSED_ARG(size);
1002
- SLJIT_ASSERT(instruction);
1003
- }
1004
-
1005
- static SLJIT_INLINE void check_sljit_emit_fop1(struct sljit_compiler *compiler, sljit_si op,
1006
- sljit_si dst, sljit_sw dstw,
1007
- sljit_si src, sljit_sw srcw)
1008
- {
1009
- /* If debug and verbose are disabled, all arguments are unused. */
1010
- SLJIT_UNUSED_ARG(compiler);
1011
- SLJIT_UNUSED_ARG(op);
1012
- SLJIT_UNUSED_ARG(dst);
1013
- SLJIT_UNUSED_ARG(dstw);
1014
- SLJIT_UNUSED_ARG(src);
1015
- SLJIT_UNUSED_ARG(srcw);
1016
-
1017
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) || (defined SLJIT_DEBUG && SLJIT_DEBUG)
1018
- if (SLJIT_UNLIKELY(compiler->skip_checks)) {
1019
- compiler->skip_checks = 0;
1020
- return;
1021
- }
1022
- #endif
1023
-
1024
- SLJIT_ASSERT(sljit_is_fpu_available());
1025
- SLJIT_ASSERT(GET_OPCODE(op) >= SLJIT_CMPD && GET_OPCODE(op) <= SLJIT_ABSD);
1026
- #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
1027
- FUNCTION_CHECK_OP();
1028
- FUNCTION_FCHECK(src, srcw);
1029
- FUNCTION_FCHECK(dst, dstw);
1030
- #endif
1031
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
1032
- if (SLJIT_UNLIKELY(!!compiler->verbose)) {
1033
- fprintf(compiler->verbose, " %s%s%s%s ", op_names[GET_OPCODE(op)], (op & SLJIT_SINGLE_OP) ? "s" : "d",
1034
- !(op & SLJIT_SET_E) ? "" : ".e", !(op & SLJIT_SET_S) ? "" : ".s");
1035
- sljit_verbose_fparam(dst, dstw);
1036
- fprintf(compiler->verbose, ", ");
1037
- sljit_verbose_fparam(src, srcw);
1038
- fprintf(compiler->verbose, "\n");
1039
- }
1040
- #endif
1041
- }
1042
-
1043
- static SLJIT_INLINE void check_sljit_emit_fop2(struct sljit_compiler *compiler, sljit_si op,
1044
- sljit_si dst, sljit_sw dstw,
1045
- sljit_si src1, sljit_sw src1w,
1046
- sljit_si src2, sljit_sw src2w)
1047
- {
1048
- /* If debug and verbose are disabled, all arguments are unused. */
1049
- SLJIT_UNUSED_ARG(compiler);
1050
- SLJIT_UNUSED_ARG(op);
1051
- SLJIT_UNUSED_ARG(dst);
1052
- SLJIT_UNUSED_ARG(dstw);
1053
- SLJIT_UNUSED_ARG(src1);
1054
- SLJIT_UNUSED_ARG(src1w);
1055
- SLJIT_UNUSED_ARG(src2);
1056
- SLJIT_UNUSED_ARG(src2w);
1057
-
1058
- SLJIT_ASSERT(sljit_is_fpu_available());
1059
- SLJIT_ASSERT(GET_OPCODE(op) >= SLJIT_ADDD && GET_OPCODE(op) <= SLJIT_DIVD);
1060
- #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
1061
- FUNCTION_CHECK_OP();
1062
- FUNCTION_FCHECK(src1, src1w);
1063
- FUNCTION_FCHECK(src2, src2w);
1064
- FUNCTION_FCHECK(dst, dstw);
1065
- #endif
1066
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
1067
- if (SLJIT_UNLIKELY(!!compiler->verbose)) {
1068
- fprintf(compiler->verbose, " %s%s ", op_names[GET_OPCODE(op)], (op & SLJIT_SINGLE_OP) ? "s" : "d");
1069
- sljit_verbose_fparam(dst, dstw);
1070
- fprintf(compiler->verbose, ", ");
1071
- sljit_verbose_fparam(src1, src1w);
1072
- fprintf(compiler->verbose, ", ");
1073
- sljit_verbose_fparam(src2, src2w);
1074
- fprintf(compiler->verbose, "\n");
1075
- }
1076
- #endif
1077
- }
1078
-
1079
- static SLJIT_INLINE void check_sljit_emit_label(struct sljit_compiler *compiler)
1080
- {
1081
- /* If debug and verbose are disabled, all arguments are unused. */
1082
- SLJIT_UNUSED_ARG(compiler);
1083
-
1084
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
1085
- if (SLJIT_UNLIKELY(!!compiler->verbose))
1086
- fprintf(compiler->verbose, "label:\n");
1087
- #endif
1088
- }
1089
-
1090
- static SLJIT_INLINE void check_sljit_emit_jump(struct sljit_compiler *compiler, sljit_si type)
1091
- {
1092
- /* If debug and verbose are disabled, all arguments are unused. */
1093
- SLJIT_UNUSED_ARG(compiler);
1094
- SLJIT_UNUSED_ARG(type);
1095
-
1096
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) || (defined SLJIT_DEBUG && SLJIT_DEBUG)
1097
- if (SLJIT_UNLIKELY(compiler->skip_checks)) {
1098
- compiler->skip_checks = 0;
1099
- return;
1100
- }
1101
- #endif
1102
-
1103
- SLJIT_ASSERT(!(type & ~(0xff | SLJIT_REWRITABLE_JUMP)));
1104
- SLJIT_ASSERT((type & 0xff) >= SLJIT_C_EQUAL && (type & 0xff) <= SLJIT_CALL3);
1105
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
1106
- if (SLJIT_UNLIKELY(!!compiler->verbose))
1107
- fprintf(compiler->verbose, " jump%s<%s>\n", !(type & SLJIT_REWRITABLE_JUMP) ? "" : ".r", jump_names[type & 0xff]);
1108
- #endif
1109
- }
1110
-
1111
- static SLJIT_INLINE void check_sljit_emit_cmp(struct sljit_compiler *compiler, sljit_si type,
1112
- sljit_si src1, sljit_sw src1w,
1113
- sljit_si src2, sljit_sw src2w)
1114
- {
1115
- SLJIT_UNUSED_ARG(compiler);
1116
- SLJIT_UNUSED_ARG(type);
1117
- SLJIT_UNUSED_ARG(src1);
1118
- SLJIT_UNUSED_ARG(src1w);
1119
- SLJIT_UNUSED_ARG(src2);
1120
- SLJIT_UNUSED_ARG(src2w);
1121
-
1122
- SLJIT_ASSERT(!(type & ~(0xff | SLJIT_REWRITABLE_JUMP | SLJIT_INT_OP)));
1123
- SLJIT_ASSERT((type & 0xff) >= SLJIT_C_EQUAL && (type & 0xff) <= SLJIT_C_SIG_LESS_EQUAL);
1124
- #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
1125
- FUNCTION_CHECK_SRC(src1, src1w);
1126
- FUNCTION_CHECK_SRC(src2, src2w);
1127
- #endif
1128
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
1129
- if (SLJIT_UNLIKELY(!!compiler->verbose)) {
1130
- fprintf(compiler->verbose, " %scmp%s<%s> ", !(type & SLJIT_INT_OP) ? "" : "i", !(type & SLJIT_REWRITABLE_JUMP) ? "" : ".r", jump_names[type & 0xff]);
1131
- sljit_verbose_param(src1, src1w);
1132
- fprintf(compiler->verbose, ", ");
1133
- sljit_verbose_param(src2, src2w);
1134
- fprintf(compiler->verbose, "\n");
1135
- }
1136
- #endif
1137
- }
1138
-
1139
- static SLJIT_INLINE void check_sljit_emit_fcmp(struct sljit_compiler *compiler, sljit_si type,
1140
- sljit_si src1, sljit_sw src1w,
1141
- sljit_si src2, sljit_sw src2w)
1142
- {
1143
- SLJIT_UNUSED_ARG(compiler);
1144
- SLJIT_UNUSED_ARG(type);
1145
- SLJIT_UNUSED_ARG(src1);
1146
- SLJIT_UNUSED_ARG(src1w);
1147
- SLJIT_UNUSED_ARG(src2);
1148
- SLJIT_UNUSED_ARG(src2w);
1149
-
1150
- SLJIT_ASSERT(sljit_is_fpu_available());
1151
- SLJIT_ASSERT(!(type & ~(0xff | SLJIT_REWRITABLE_JUMP | SLJIT_SINGLE_OP)));
1152
- SLJIT_ASSERT((type & 0xff) >= SLJIT_C_FLOAT_EQUAL && (type & 0xff) <= SLJIT_C_FLOAT_ORDERED);
1153
- #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
1154
- FUNCTION_FCHECK(src1, src1w);
1155
- FUNCTION_FCHECK(src2, src2w);
1156
- #endif
1157
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
1158
- if (SLJIT_UNLIKELY(!!compiler->verbose)) {
1159
- fprintf(compiler->verbose, " %scmp%s<%s> ", (type & SLJIT_SINGLE_OP) ? "s" : "d",
1160
- !(type & SLJIT_REWRITABLE_JUMP) ? "" : ".r", jump_names[type & 0xff]);
1161
- sljit_verbose_fparam(src1, src1w);
1162
- fprintf(compiler->verbose, ", ");
1163
- sljit_verbose_fparam(src2, src2w);
1164
- fprintf(compiler->verbose, "\n");
1165
- }
1166
- #endif
1167
- }
1168
-
1169
- static SLJIT_INLINE void check_sljit_emit_ijump(struct sljit_compiler *compiler, sljit_si type, sljit_si src, sljit_sw srcw)
1170
- {
1171
- /* If debug and verbose are disabled, all arguments are unused. */
1172
- SLJIT_UNUSED_ARG(compiler);
1173
- SLJIT_UNUSED_ARG(type);
1174
- SLJIT_UNUSED_ARG(src);
1175
- SLJIT_UNUSED_ARG(srcw);
1176
-
1177
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) || (defined SLJIT_DEBUG && SLJIT_DEBUG)
1178
- if (SLJIT_UNLIKELY(compiler->skip_checks)) {
1179
- compiler->skip_checks = 0;
1180
- return;
1181
- }
1182
- #endif
1183
-
1184
- SLJIT_ASSERT(type >= SLJIT_JUMP && type <= SLJIT_CALL3);
1185
- #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
1186
- FUNCTION_CHECK_SRC(src, srcw);
1187
- #endif
1188
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
1189
- if (SLJIT_UNLIKELY(!!compiler->verbose)) {
1190
- fprintf(compiler->verbose, " ijump<%s> ", jump_names[type]);
1191
- sljit_verbose_param(src, srcw);
1192
- fprintf(compiler->verbose, "\n");
1193
- }
1194
- #endif
1195
- }
1196
-
1197
- static SLJIT_INLINE void check_sljit_emit_op_flags(struct sljit_compiler *compiler, sljit_si op,
1198
- sljit_si dst, sljit_sw dstw,
1199
- sljit_si src, sljit_sw srcw,
1200
- sljit_si type)
1201
- {
1202
- /* If debug and verbose are disabled, all arguments are unused. */
1203
- SLJIT_UNUSED_ARG(compiler);
1204
- SLJIT_UNUSED_ARG(op);
1205
- SLJIT_UNUSED_ARG(dst);
1206
- SLJIT_UNUSED_ARG(dstw);
1207
- SLJIT_UNUSED_ARG(src);
1208
- SLJIT_UNUSED_ARG(srcw);
1209
- SLJIT_UNUSED_ARG(type);
1210
-
1211
- SLJIT_ASSERT(type >= SLJIT_C_EQUAL && type < SLJIT_JUMP);
1212
- SLJIT_ASSERT(op == SLJIT_MOV || GET_OPCODE(op) == SLJIT_MOV_UI || GET_OPCODE(op) == SLJIT_MOV_SI
1213
- || (GET_OPCODE(op) >= SLJIT_AND && GET_OPCODE(op) <= SLJIT_XOR));
1214
- SLJIT_ASSERT((op & (SLJIT_SET_S | SLJIT_SET_U | SLJIT_SET_O | SLJIT_SET_C)) == 0);
1215
- SLJIT_ASSERT((op & (SLJIT_SET_E | SLJIT_KEEP_FLAGS)) != (SLJIT_SET_E | SLJIT_KEEP_FLAGS));
1216
- #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
1217
- if (GET_OPCODE(op) < SLJIT_ADD) {
1218
- SLJIT_ASSERT(src == SLJIT_UNUSED && srcw == 0);
1219
- } else {
1220
- SLJIT_ASSERT(src == dst && srcw == dstw);
1221
- }
1222
- FUNCTION_CHECK_DST(dst, dstw);
1223
- #endif
1224
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
1225
- if (SLJIT_UNLIKELY(!!compiler->verbose)) {
1226
- fprintf(compiler->verbose, " op_flags<%s%s%s%s> ", !(op & SLJIT_INT_OP) ? "" : "i",
1227
- op_names[GET_OPCODE(op)], !(op & SLJIT_SET_E) ? "" : ".e", !(op & SLJIT_KEEP_FLAGS) ? "" : ".k");
1228
- sljit_verbose_param(dst, dstw);
1229
- if (src != SLJIT_UNUSED) {
1230
- fprintf(compiler->verbose, ", ");
1231
- sljit_verbose_param(src, srcw);
1232
- }
1233
- fprintf(compiler->verbose, ", <%s>\n", jump_names[type]);
1234
- }
1235
- #endif
1236
- }
1237
-
1238
- static SLJIT_INLINE void check_sljit_get_local_base(struct sljit_compiler *compiler, sljit_si dst, sljit_sw dstw, sljit_sw offset)
1239
- {
1240
- SLJIT_UNUSED_ARG(compiler);
1241
- SLJIT_UNUSED_ARG(dst);
1242
- SLJIT_UNUSED_ARG(dstw);
1243
- SLJIT_UNUSED_ARG(offset);
1244
-
1245
- #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
1246
- FUNCTION_CHECK_DST(dst, dstw);
1247
- #endif
1248
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
1249
- if (SLJIT_UNLIKELY(!!compiler->verbose)) {
1250
- fprintf(compiler->verbose, " local_base ");
1251
- sljit_verbose_param(dst, dstw);
1252
- fprintf(compiler->verbose, ", #%" SLJIT_PRINT_D "d\n", offset);
1253
- }
1254
- #endif
1255
- }
1256
-
1257
- static SLJIT_INLINE void check_sljit_emit_const(struct sljit_compiler *compiler, sljit_si dst, sljit_sw dstw, sljit_sw init_value)
1258
- {
1259
- /* If debug and verbose are disabled, all arguments are unused. */
1260
- SLJIT_UNUSED_ARG(compiler);
1261
- SLJIT_UNUSED_ARG(dst);
1262
- SLJIT_UNUSED_ARG(dstw);
1263
- SLJIT_UNUSED_ARG(init_value);
1264
-
1265
- #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
1266
- FUNCTION_CHECK_DST(dst, dstw);
1267
- #endif
1268
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
1269
- if (SLJIT_UNLIKELY(!!compiler->verbose)) {
1270
- fprintf(compiler->verbose, " const ");
1271
- sljit_verbose_param(dst, dstw);
1272
- fprintf(compiler->verbose, ", #%" SLJIT_PRINT_D "d\n", init_value);
1273
- }
1274
- #endif
1275
- }
1276
-
1277
- static SLJIT_INLINE sljit_si emit_mov_before_return(struct sljit_compiler *compiler, sljit_si op, sljit_si src, sljit_sw srcw)
1278
- {
1279
- /* Return if don't need to do anything. */
1280
- if (op == SLJIT_UNUSED)
1281
- return SLJIT_SUCCESS;
1282
-
1283
- #if (defined SLJIT_64BIT_ARCHITECTURE && SLJIT_64BIT_ARCHITECTURE)
1284
- /* At the moment the pointer size is always equal to sljit_sw. May be changed in the future. */
1285
- if (src == SLJIT_RETURN_REG && (op == SLJIT_MOV || op == SLJIT_MOV_P))
1286
- return SLJIT_SUCCESS;
1287
- #else
1288
- if (src == SLJIT_RETURN_REG && (op == SLJIT_MOV || op == SLJIT_MOV_UI || op == SLJIT_MOV_SI || op == SLJIT_MOV_P))
1289
- return SLJIT_SUCCESS;
1290
- #endif
1291
-
1292
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) || (defined SLJIT_DEBUG && SLJIT_DEBUG)
1293
- compiler->skip_checks = 1;
1294
- #endif
1295
- return sljit_emit_op1(compiler, op, SLJIT_RETURN_REG, 0, src, srcw);
1296
- }
1297
-
1298
- /* CPU description section */
1299
-
1300
- #if (defined SLJIT_32BIT_ARCHITECTURE && SLJIT_32BIT_ARCHITECTURE)
1301
- #define SLJIT_CPUINFO_PART1 " 32bit ("
1302
- #elif (defined SLJIT_64BIT_ARCHITECTURE && SLJIT_64BIT_ARCHITECTURE)
1303
- #define SLJIT_CPUINFO_PART1 " 64bit ("
1304
- #else
1305
- #error "Internal error: CPU type info missing"
1306
- #endif
1307
-
1308
- #if (defined SLJIT_LITTLE_ENDIAN && SLJIT_LITTLE_ENDIAN)
1309
- #define SLJIT_CPUINFO_PART2 "little endian + "
1310
- #elif (defined SLJIT_BIG_ENDIAN && SLJIT_BIG_ENDIAN)
1311
- #define SLJIT_CPUINFO_PART2 "big endian + "
1312
- #else
1313
- #error "Internal error: CPU type info missing"
1314
- #endif
1315
-
1316
- #if (defined SLJIT_UNALIGNED && SLJIT_UNALIGNED)
1317
- #define SLJIT_CPUINFO_PART3 "unaligned)"
1318
- #else
1319
- #define SLJIT_CPUINFO_PART3 "aligned)"
1320
- #endif
1321
-
1322
- #define SLJIT_CPUINFO SLJIT_CPUINFO_PART1 SLJIT_CPUINFO_PART2 SLJIT_CPUINFO_PART3
1323
-
1324
- #if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32)
1325
- # include "sljitNativeX86_common.c"
1326
- #elif (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)
1327
- # include "sljitNativeX86_common.c"
1328
- #elif (defined SLJIT_CONFIG_ARM_V5 && SLJIT_CONFIG_ARM_V5)
1329
- # include "sljitNativeARM_v5.c"
1330
- #elif (defined SLJIT_CONFIG_ARM_V7 && SLJIT_CONFIG_ARM_V7)
1331
- # include "sljitNativeARM_v5.c"
1332
- #elif (defined SLJIT_CONFIG_ARM_THUMB2 && SLJIT_CONFIG_ARM_THUMB2)
1333
- # include "sljitNativeARM_Thumb2.c"
1334
- #elif (defined SLJIT_CONFIG_PPC_32 && SLJIT_CONFIG_PPC_32)
1335
- # include "sljitNativePPC_common.c"
1336
- #elif (defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64)
1337
- # include "sljitNativePPC_common.c"
1338
- #elif (defined SLJIT_CONFIG_MIPS_32 && SLJIT_CONFIG_MIPS_32)
1339
- # include "sljitNativeMIPS_common.c"
1340
- #elif (defined SLJIT_CONFIG_SPARC_32 && SLJIT_CONFIG_SPARC_32)
1341
- # include "sljitNativeSPARC_common.c"
1342
- #endif
1343
-
1344
- #if !(defined SLJIT_CONFIG_MIPS_32 && SLJIT_CONFIG_MIPS_32)
1345
-
1346
- SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump* sljit_emit_cmp(struct sljit_compiler *compiler, sljit_si type,
1347
- sljit_si src1, sljit_sw src1w,
1348
- sljit_si src2, sljit_sw src2w)
1349
- {
1350
- /* Default compare for most architectures. */
1351
- sljit_si flags, tmp_src, condition;
1352
- sljit_sw tmp_srcw;
1353
-
1354
- CHECK_ERROR_PTR();
1355
- check_sljit_emit_cmp(compiler, type, src1, src1w, src2, src2w);
1356
-
1357
- condition = type & 0xff;
1358
- if (SLJIT_UNLIKELY((src1 & SLJIT_IMM) && !(src2 & SLJIT_IMM))) {
1359
- /* Immediate is prefered as second argument by most architectures. */
1360
- switch (condition) {
1361
- case SLJIT_C_LESS:
1362
- condition = SLJIT_C_GREATER;
1363
- break;
1364
- case SLJIT_C_GREATER_EQUAL:
1365
- condition = SLJIT_C_LESS_EQUAL;
1366
- break;
1367
- case SLJIT_C_GREATER:
1368
- condition = SLJIT_C_LESS;
1369
- break;
1370
- case SLJIT_C_LESS_EQUAL:
1371
- condition = SLJIT_C_GREATER_EQUAL;
1372
- break;
1373
- case SLJIT_C_SIG_LESS:
1374
- condition = SLJIT_C_SIG_GREATER;
1375
- break;
1376
- case SLJIT_C_SIG_GREATER_EQUAL:
1377
- condition = SLJIT_C_SIG_LESS_EQUAL;
1378
- break;
1379
- case SLJIT_C_SIG_GREATER:
1380
- condition = SLJIT_C_SIG_LESS;
1381
- break;
1382
- case SLJIT_C_SIG_LESS_EQUAL:
1383
- condition = SLJIT_C_SIG_GREATER_EQUAL;
1384
- break;
1385
- }
1386
- type = condition | (type & (SLJIT_INT_OP | SLJIT_REWRITABLE_JUMP));
1387
- tmp_src = src1;
1388
- src1 = src2;
1389
- src2 = tmp_src;
1390
- tmp_srcw = src1w;
1391
- src1w = src2w;
1392
- src2w = tmp_srcw;
1393
- }
1394
-
1395
- if (condition <= SLJIT_C_NOT_ZERO)
1396
- flags = SLJIT_SET_E;
1397
- else if (condition <= SLJIT_C_LESS_EQUAL)
1398
- flags = SLJIT_SET_U;
1399
- else
1400
- flags = SLJIT_SET_S;
1401
-
1402
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) || (defined SLJIT_DEBUG && SLJIT_DEBUG)
1403
- compiler->skip_checks = 1;
1404
- #endif
1405
- PTR_FAIL_IF(sljit_emit_op2(compiler, SLJIT_SUB | flags | (type & SLJIT_INT_OP),
1406
- SLJIT_UNUSED, 0, src1, src1w, src2, src2w));
1407
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) || (defined SLJIT_DEBUG && SLJIT_DEBUG)
1408
- compiler->skip_checks = 1;
1409
- #endif
1410
- return sljit_emit_jump(compiler, condition | (type & SLJIT_REWRITABLE_JUMP));
1411
- }
1412
-
1413
- SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump* sljit_emit_fcmp(struct sljit_compiler *compiler, sljit_si type,
1414
- sljit_si src1, sljit_sw src1w,
1415
- sljit_si src2, sljit_sw src2w)
1416
- {
1417
- sljit_si flags, condition;
1418
-
1419
- check_sljit_emit_fcmp(compiler, type, src1, src1w, src2, src2w);
1420
-
1421
- condition = type & 0xff;
1422
- flags = (condition <= SLJIT_C_FLOAT_NOT_EQUAL) ? SLJIT_SET_E : SLJIT_SET_S;
1423
- if (type & SLJIT_SINGLE_OP)
1424
- flags |= SLJIT_SINGLE_OP;
1425
-
1426
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) || (defined SLJIT_DEBUG && SLJIT_DEBUG)
1427
- compiler->skip_checks = 1;
1428
- #endif
1429
- sljit_emit_fop1(compiler, SLJIT_CMPD | flags, src1, src1w, src2, src2w);
1430
-
1431
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) || (defined SLJIT_DEBUG && SLJIT_DEBUG)
1432
- compiler->skip_checks = 1;
1433
- #endif
1434
- return sljit_emit_jump(compiler, condition | (type & SLJIT_REWRITABLE_JUMP));
1435
- }
1436
-
1437
- #endif
1438
-
1439
- #if !(defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) && !(defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)
1440
-
1441
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_get_local_base(struct sljit_compiler *compiler, sljit_si dst, sljit_sw dstw, sljit_sw offset)
1442
- {
1443
- CHECK_ERROR();
1444
- check_sljit_get_local_base(compiler, dst, dstw, offset);
1445
-
1446
- ADJUST_LOCAL_OFFSET(SLJIT_MEM1(SLJIT_LOCALS_REG), offset);
1447
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) || (defined SLJIT_DEBUG && SLJIT_DEBUG)
1448
- compiler->skip_checks = 1;
1449
- #endif
1450
- if (offset != 0)
1451
- return sljit_emit_op2(compiler, SLJIT_ADD | SLJIT_KEEP_FLAGS, dst, dstw, SLJIT_LOCALS_REG, 0, SLJIT_IMM, offset);
1452
- return sljit_emit_op1(compiler, SLJIT_MOV, dst, dstw, SLJIT_LOCALS_REG, 0);
1453
- }
1454
-
1455
- #endif
1456
-
1457
- #else /* SLJIT_CONFIG_UNSUPPORTED */
1458
-
1459
- /* Empty function bodies for those machines, which are not (yet) supported. */
1460
-
1461
- SLJIT_API_FUNC_ATTRIBUTE SLJIT_CONST char* sljit_get_platform_name(void)
1462
- {
1463
- return "unsupported";
1464
- }
1465
-
1466
- SLJIT_API_FUNC_ATTRIBUTE struct sljit_compiler* sljit_create_compiler(void)
1467
- {
1468
- SLJIT_ASSERT_STOP();
1469
- return NULL;
1470
- }
1471
-
1472
- SLJIT_API_FUNC_ATTRIBUTE void sljit_free_compiler(struct sljit_compiler *compiler)
1473
- {
1474
- SLJIT_UNUSED_ARG(compiler);
1475
- SLJIT_ASSERT_STOP();
1476
- }
1477
-
1478
- SLJIT_API_FUNC_ATTRIBUTE void* sljit_alloc_memory(struct sljit_compiler *compiler, sljit_si size)
1479
- {
1480
- SLJIT_UNUSED_ARG(compiler);
1481
- SLJIT_UNUSED_ARG(size);
1482
- SLJIT_ASSERT_STOP();
1483
- return NULL;
1484
- }
1485
-
1486
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
1487
- SLJIT_API_FUNC_ATTRIBUTE void sljit_compiler_verbose(struct sljit_compiler *compiler, FILE* verbose)
1488
- {
1489
- SLJIT_UNUSED_ARG(compiler);
1490
- SLJIT_UNUSED_ARG(verbose);
1491
- SLJIT_ASSERT_STOP();
1492
- }
1493
- #endif
1494
-
1495
- SLJIT_API_FUNC_ATTRIBUTE void* sljit_generate_code(struct sljit_compiler *compiler)
1496
- {
1497
- SLJIT_UNUSED_ARG(compiler);
1498
- SLJIT_ASSERT_STOP();
1499
- return NULL;
1500
- }
1501
-
1502
- SLJIT_API_FUNC_ATTRIBUTE void sljit_free_code(void* code)
1503
- {
1504
- SLJIT_UNUSED_ARG(code);
1505
- SLJIT_ASSERT_STOP();
1506
- }
1507
-
1508
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_enter(struct sljit_compiler *compiler, sljit_si args, sljit_si scratches, sljit_si saveds, sljit_si local_size)
1509
- {
1510
- SLJIT_UNUSED_ARG(compiler);
1511
- SLJIT_UNUSED_ARG(args);
1512
- SLJIT_UNUSED_ARG(scratches);
1513
- SLJIT_UNUSED_ARG(saveds);
1514
- SLJIT_UNUSED_ARG(local_size);
1515
- SLJIT_ASSERT_STOP();
1516
- return SLJIT_ERR_UNSUPPORTED;
1517
- }
1518
-
1519
- SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler, sljit_si args, sljit_si scratches, sljit_si saveds, sljit_si local_size)
1520
- {
1521
- SLJIT_UNUSED_ARG(compiler);
1522
- SLJIT_UNUSED_ARG(args);
1523
- SLJIT_UNUSED_ARG(scratches);
1524
- SLJIT_UNUSED_ARG(saveds);
1525
- SLJIT_UNUSED_ARG(local_size);
1526
- SLJIT_ASSERT_STOP();
1527
- }
1528
-
1529
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_return(struct sljit_compiler *compiler, sljit_si op, sljit_si src, sljit_sw srcw)
1530
- {
1531
- SLJIT_UNUSED_ARG(compiler);
1532
- SLJIT_UNUSED_ARG(op);
1533
- SLJIT_UNUSED_ARG(src);
1534
- SLJIT_UNUSED_ARG(srcw);
1535
- SLJIT_ASSERT_STOP();
1536
- return SLJIT_ERR_UNSUPPORTED;
1537
- }
1538
-
1539
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_fast_enter(struct sljit_compiler *compiler, sljit_si dst, sljit_sw dstw)
1540
- {
1541
- SLJIT_UNUSED_ARG(compiler);
1542
- SLJIT_UNUSED_ARG(dst);
1543
- SLJIT_UNUSED_ARG(dstw);
1544
- SLJIT_ASSERT_STOP();
1545
- return SLJIT_ERR_UNSUPPORTED;
1546
- }
1547
-
1548
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_fast_return(struct sljit_compiler *compiler, sljit_si src, sljit_sw srcw)
1549
- {
1550
- SLJIT_UNUSED_ARG(compiler);
1551
- SLJIT_UNUSED_ARG(src);
1552
- SLJIT_UNUSED_ARG(srcw);
1553
- SLJIT_ASSERT_STOP();
1554
- return SLJIT_ERR_UNSUPPORTED;
1555
- }
1556
-
1557
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_op0(struct sljit_compiler *compiler, sljit_si op)
1558
- {
1559
- SLJIT_UNUSED_ARG(compiler);
1560
- SLJIT_UNUSED_ARG(op);
1561
- SLJIT_ASSERT_STOP();
1562
- return SLJIT_ERR_UNSUPPORTED;
1563
- }
1564
-
1565
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_op1(struct sljit_compiler *compiler, sljit_si op,
1566
- sljit_si dst, sljit_sw dstw,
1567
- sljit_si src, sljit_sw srcw)
1568
- {
1569
- SLJIT_UNUSED_ARG(compiler);
1570
- SLJIT_UNUSED_ARG(op);
1571
- SLJIT_UNUSED_ARG(dst);
1572
- SLJIT_UNUSED_ARG(dstw);
1573
- SLJIT_UNUSED_ARG(src);
1574
- SLJIT_UNUSED_ARG(srcw);
1575
- SLJIT_ASSERT_STOP();
1576
- return SLJIT_ERR_UNSUPPORTED;
1577
- }
1578
-
1579
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_op2(struct sljit_compiler *compiler, sljit_si op,
1580
- sljit_si dst, sljit_sw dstw,
1581
- sljit_si src1, sljit_sw src1w,
1582
- sljit_si src2, sljit_sw src2w)
1583
- {
1584
- SLJIT_UNUSED_ARG(compiler);
1585
- SLJIT_UNUSED_ARG(op);
1586
- SLJIT_UNUSED_ARG(dst);
1587
- SLJIT_UNUSED_ARG(dstw);
1588
- SLJIT_UNUSED_ARG(src1);
1589
- SLJIT_UNUSED_ARG(src1w);
1590
- SLJIT_UNUSED_ARG(src2);
1591
- SLJIT_UNUSED_ARG(src2w);
1592
- SLJIT_ASSERT_STOP();
1593
- return SLJIT_ERR_UNSUPPORTED;
1594
- }
1595
-
1596
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_get_register_index(sljit_si reg)
1597
- {
1598
- SLJIT_ASSERT_STOP();
1599
- return reg;
1600
- }
1601
-
1602
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_op_custom(struct sljit_compiler *compiler,
1603
- void *instruction, sljit_si size)
1604
- {
1605
- SLJIT_UNUSED_ARG(compiler);
1606
- SLJIT_UNUSED_ARG(instruction);
1607
- SLJIT_UNUSED_ARG(size);
1608
- SLJIT_ASSERT_STOP();
1609
- return SLJIT_ERR_UNSUPPORTED;
1610
- }
1611
-
1612
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_is_fpu_available(void)
1613
- {
1614
- SLJIT_ASSERT_STOP();
1615
- return 0;
1616
- }
1617
-
1618
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_fop1(struct sljit_compiler *compiler, sljit_si op,
1619
- sljit_si dst, sljit_sw dstw,
1620
- sljit_si src, sljit_sw srcw)
1621
- {
1622
- SLJIT_UNUSED_ARG(compiler);
1623
- SLJIT_UNUSED_ARG(op);
1624
- SLJIT_UNUSED_ARG(dst);
1625
- SLJIT_UNUSED_ARG(dstw);
1626
- SLJIT_UNUSED_ARG(src);
1627
- SLJIT_UNUSED_ARG(srcw);
1628
- SLJIT_ASSERT_STOP();
1629
- return SLJIT_ERR_UNSUPPORTED;
1630
- }
1631
-
1632
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_fop2(struct sljit_compiler *compiler, sljit_si op,
1633
- sljit_si dst, sljit_sw dstw,
1634
- sljit_si src1, sljit_sw src1w,
1635
- sljit_si src2, sljit_sw src2w)
1636
- {
1637
- SLJIT_UNUSED_ARG(compiler);
1638
- SLJIT_UNUSED_ARG(op);
1639
- SLJIT_UNUSED_ARG(dst);
1640
- SLJIT_UNUSED_ARG(dstw);
1641
- SLJIT_UNUSED_ARG(src1);
1642
- SLJIT_UNUSED_ARG(src1w);
1643
- SLJIT_UNUSED_ARG(src2);
1644
- SLJIT_UNUSED_ARG(src2w);
1645
- SLJIT_ASSERT_STOP();
1646
- return SLJIT_ERR_UNSUPPORTED;
1647
- }
1648
-
1649
- SLJIT_API_FUNC_ATTRIBUTE struct sljit_label* sljit_emit_label(struct sljit_compiler *compiler)
1650
- {
1651
- SLJIT_UNUSED_ARG(compiler);
1652
- SLJIT_ASSERT_STOP();
1653
- return NULL;
1654
- }
1655
-
1656
- SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump* sljit_emit_jump(struct sljit_compiler *compiler, sljit_si type)
1657
- {
1658
- SLJIT_UNUSED_ARG(compiler);
1659
- SLJIT_UNUSED_ARG(type);
1660
- SLJIT_ASSERT_STOP();
1661
- return NULL;
1662
- }
1663
-
1664
- SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump* sljit_emit_cmp(struct sljit_compiler *compiler, sljit_si type,
1665
- sljit_si src1, sljit_sw src1w,
1666
- sljit_si src2, sljit_sw src2w)
1667
- {
1668
- SLJIT_UNUSED_ARG(compiler);
1669
- SLJIT_UNUSED_ARG(type);
1670
- SLJIT_UNUSED_ARG(src1);
1671
- SLJIT_UNUSED_ARG(src1w);
1672
- SLJIT_UNUSED_ARG(src2);
1673
- SLJIT_UNUSED_ARG(src2w);
1674
- SLJIT_ASSERT_STOP();
1675
- return NULL;
1676
- }
1677
-
1678
- SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump* sljit_emit_fcmp(struct sljit_compiler *compiler, sljit_si type,
1679
- sljit_si src1, sljit_sw src1w,
1680
- sljit_si src2, sljit_sw src2w)
1681
- {
1682
- SLJIT_UNUSED_ARG(compiler);
1683
- SLJIT_UNUSED_ARG(type);
1684
- SLJIT_UNUSED_ARG(src1);
1685
- SLJIT_UNUSED_ARG(src1w);
1686
- SLJIT_UNUSED_ARG(src2);
1687
- SLJIT_UNUSED_ARG(src2w);
1688
- SLJIT_ASSERT_STOP();
1689
- return NULL;
1690
- }
1691
-
1692
- SLJIT_API_FUNC_ATTRIBUTE void sljit_set_label(struct sljit_jump *jump, struct sljit_label* label)
1693
- {
1694
- SLJIT_UNUSED_ARG(jump);
1695
- SLJIT_UNUSED_ARG(label);
1696
- SLJIT_ASSERT_STOP();
1697
- }
1698
-
1699
- SLJIT_API_FUNC_ATTRIBUTE void sljit_set_target(struct sljit_jump *jump, sljit_uw target)
1700
- {
1701
- SLJIT_UNUSED_ARG(jump);
1702
- SLJIT_UNUSED_ARG(target);
1703
- SLJIT_ASSERT_STOP();
1704
- }
1705
-
1706
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_ijump(struct sljit_compiler *compiler, sljit_si type, sljit_si src, sljit_sw srcw)
1707
- {
1708
- SLJIT_UNUSED_ARG(compiler);
1709
- SLJIT_UNUSED_ARG(type);
1710
- SLJIT_UNUSED_ARG(src);
1711
- SLJIT_UNUSED_ARG(srcw);
1712
- SLJIT_ASSERT_STOP();
1713
- return SLJIT_ERR_UNSUPPORTED;
1714
- }
1715
-
1716
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_op_flags(struct sljit_compiler *compiler, sljit_si op,
1717
- sljit_si dst, sljit_sw dstw,
1718
- sljit_si src, sljit_sw srcw,
1719
- sljit_si type)
1720
- {
1721
- SLJIT_UNUSED_ARG(compiler);
1722
- SLJIT_UNUSED_ARG(op);
1723
- SLJIT_UNUSED_ARG(dst);
1724
- SLJIT_UNUSED_ARG(dstw);
1725
- SLJIT_UNUSED_ARG(src);
1726
- SLJIT_UNUSED_ARG(srcw);
1727
- SLJIT_UNUSED_ARG(type);
1728
- SLJIT_ASSERT_STOP();
1729
- return SLJIT_ERR_UNSUPPORTED;
1730
- }
1731
-
1732
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_get_local_base(struct sljit_compiler *compiler, sljit_si dst, sljit_sw dstw, sljit_sw offset)
1733
- {
1734
- SLJIT_UNUSED_ARG(compiler);
1735
- SLJIT_UNUSED_ARG(dst);
1736
- SLJIT_UNUSED_ARG(dstw);
1737
- SLJIT_UNUSED_ARG(offset);
1738
- SLJIT_ASSERT_STOP();
1739
- return SLJIT_ERR_UNSUPPORTED;
1740
- }
1741
-
1742
- SLJIT_API_FUNC_ATTRIBUTE struct sljit_const* sljit_emit_const(struct sljit_compiler *compiler, sljit_si dst, sljit_sw dstw, sljit_sw initval)
1743
- {
1744
- SLJIT_UNUSED_ARG(compiler);
1745
- SLJIT_UNUSED_ARG(dst);
1746
- SLJIT_UNUSED_ARG(dstw);
1747
- SLJIT_UNUSED_ARG(initval);
1748
- SLJIT_ASSERT_STOP();
1749
- return NULL;
1750
- }
1751
-
1752
- SLJIT_API_FUNC_ATTRIBUTE void sljit_set_jump_addr(sljit_uw addr, sljit_uw new_addr)
1753
- {
1754
- SLJIT_UNUSED_ARG(addr);
1755
- SLJIT_UNUSED_ARG(new_addr);
1756
- SLJIT_ASSERT_STOP();
1757
- }
1758
-
1759
- SLJIT_API_FUNC_ATTRIBUTE void sljit_set_const(sljit_uw addr, sljit_sw new_constant)
1760
- {
1761
- SLJIT_UNUSED_ARG(addr);
1762
- SLJIT_UNUSED_ARG(new_constant);
1763
- SLJIT_ASSERT_STOP();
1764
- }
1765
-
1766
- #endif