esruby 0.0.0 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,810 +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
- /* x86 64-bit arch dependent functions. */
28
-
29
- static sljit_si emit_load_imm64(struct sljit_compiler *compiler, sljit_si reg, sljit_sw imm)
30
- {
31
- sljit_ub *inst;
32
-
33
- inst = (sljit_ub*)ensure_buf(compiler, 1 + 2 + sizeof(sljit_sw));
34
- FAIL_IF(!inst);
35
- INC_SIZE(2 + sizeof(sljit_sw));
36
- *inst++ = REX_W | ((reg_map[reg] <= 7) ? 0 : REX_B);
37
- *inst++ = MOV_r_i32 + (reg_map[reg] & 0x7);
38
- *(sljit_sw*)inst = imm;
39
- return SLJIT_SUCCESS;
40
- }
41
-
42
- static sljit_ub* generate_far_jump_code(struct sljit_jump *jump, sljit_ub *code_ptr, sljit_si type)
43
- {
44
- if (type < SLJIT_JUMP) {
45
- /* Invert type. */
46
- *code_ptr++ = get_jump_code(type ^ 0x1) - 0x10;
47
- *code_ptr++ = 10 + 3;
48
- }
49
-
50
- SLJIT_COMPILE_ASSERT(reg_map[TMP_REG3] == 9, tmp3_is_9_first);
51
- *code_ptr++ = REX_W | REX_B;
52
- *code_ptr++ = MOV_r_i32 + 1;
53
- jump->addr = (sljit_uw)code_ptr;
54
-
55
- if (jump->flags & JUMP_LABEL)
56
- jump->flags |= PATCH_MD;
57
- else
58
- *(sljit_sw*)code_ptr = jump->u.target;
59
-
60
- code_ptr += sizeof(sljit_sw);
61
- *code_ptr++ = REX_B;
62
- *code_ptr++ = GROUP_FF;
63
- *code_ptr++ = (type >= SLJIT_FAST_CALL) ? (MOD_REG | CALL_rm | 1) : (MOD_REG | JMP_rm | 1);
64
-
65
- return code_ptr;
66
- }
67
-
68
- static sljit_ub* generate_fixed_jump(sljit_ub *code_ptr, sljit_sw addr, sljit_si type)
69
- {
70
- sljit_sw delta = addr - ((sljit_sw)code_ptr + 1 + sizeof(sljit_si));
71
-
72
- if (delta <= SLJIT_W(0x7fffffff) && delta >= SLJIT_W(-0x80000000)) {
73
- *code_ptr++ = (type == 2) ? CALL_i32 : JMP_i32;
74
- *(sljit_sw*)code_ptr = delta;
75
- }
76
- else {
77
- SLJIT_COMPILE_ASSERT(reg_map[TMP_REG3] == 9, tmp3_is_9_second);
78
- *code_ptr++ = REX_W | REX_B;
79
- *code_ptr++ = MOV_r_i32 + 1;
80
- *(sljit_sw*)code_ptr = addr;
81
- code_ptr += sizeof(sljit_sw);
82
- *code_ptr++ = REX_B;
83
- *code_ptr++ = GROUP_FF;
84
- *code_ptr++ = (type == 2) ? (MOD_REG | CALL_rm | 1) : (MOD_REG | JMP_rm | 1);
85
- }
86
-
87
- return code_ptr;
88
- }
89
-
90
- 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)
91
- {
92
- sljit_si size, pushed_size;
93
- sljit_ub *inst;
94
-
95
- CHECK_ERROR();
96
- check_sljit_emit_enter(compiler, args, scratches, saveds, local_size);
97
-
98
- compiler->scratches = scratches;
99
- compiler->saveds = saveds;
100
- compiler->flags_saved = 0;
101
- #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
102
- compiler->logical_local_size = local_size;
103
- #endif
104
-
105
- size = saveds;
106
- /* Including the return address saved by the call instruction. */
107
- pushed_size = (saveds + 1) * sizeof(sljit_sw);
108
- #ifndef _WIN64
109
- if (saveds >= 2)
110
- size += saveds - 1;
111
- #else
112
- if (saveds >= 4)
113
- size += saveds - 3;
114
- if (scratches >= 5) {
115
- size += (5 - 4) * 2;
116
- pushed_size += sizeof(sljit_sw);
117
- }
118
- #endif
119
- size += args * 3;
120
- if (size > 0) {
121
- inst = (sljit_ub*)ensure_buf(compiler, 1 + size);
122
- FAIL_IF(!inst);
123
-
124
- INC_SIZE(size);
125
- if (saveds >= 5) {
126
- SLJIT_COMPILE_ASSERT(reg_map[SLJIT_SAVED_EREG2] >= 8, saved_ereg2_is_hireg);
127
- *inst++ = REX_B;
128
- PUSH_REG(reg_lmap[SLJIT_SAVED_EREG2]);
129
- }
130
- if (saveds >= 4) {
131
- SLJIT_COMPILE_ASSERT(reg_map[SLJIT_SAVED_EREG1] >= 8, saved_ereg1_is_hireg);
132
- *inst++ = REX_B;
133
- PUSH_REG(reg_lmap[SLJIT_SAVED_EREG1]);
134
- }
135
- if (saveds >= 3) {
136
- #ifndef _WIN64
137
- SLJIT_COMPILE_ASSERT(reg_map[SLJIT_SAVED_REG3] >= 8, saved_reg3_is_hireg);
138
- *inst++ = REX_B;
139
- #else
140
- SLJIT_COMPILE_ASSERT(reg_map[SLJIT_SAVED_REG3] < 8, saved_reg3_is_loreg);
141
- #endif
142
- PUSH_REG(reg_lmap[SLJIT_SAVED_REG3]);
143
- }
144
- if (saveds >= 2) {
145
- #ifndef _WIN64
146
- SLJIT_COMPILE_ASSERT(reg_map[SLJIT_SAVED_REG2] >= 8, saved_reg2_is_hireg);
147
- *inst++ = REX_B;
148
- #else
149
- SLJIT_COMPILE_ASSERT(reg_map[SLJIT_SAVED_REG2] < 8, saved_reg2_is_loreg);
150
- #endif
151
- PUSH_REG(reg_lmap[SLJIT_SAVED_REG2]);
152
- }
153
- if (saveds >= 1) {
154
- SLJIT_COMPILE_ASSERT(reg_map[SLJIT_SAVED_REG1] < 8, saved_reg1_is_loreg);
155
- PUSH_REG(reg_lmap[SLJIT_SAVED_REG1]);
156
- }
157
- #ifdef _WIN64
158
- if (scratches >= 5) {
159
- SLJIT_COMPILE_ASSERT(reg_map[SLJIT_TEMPORARY_EREG2] >= 8, temporary_ereg2_is_hireg);
160
- *inst++ = REX_B;
161
- PUSH_REG(reg_lmap[SLJIT_TEMPORARY_EREG2]);
162
- }
163
- #endif
164
-
165
- #ifndef _WIN64
166
- if (args > 0) {
167
- *inst++ = REX_W;
168
- *inst++ = MOV_r_rm;
169
- *inst++ = MOD_REG | (reg_map[SLJIT_SAVED_REG1] << 3) | 0x7 /* rdi */;
170
- }
171
- if (args > 1) {
172
- *inst++ = REX_W | REX_R;
173
- *inst++ = MOV_r_rm;
174
- *inst++ = MOD_REG | (reg_lmap[SLJIT_SAVED_REG2] << 3) | 0x6 /* rsi */;
175
- }
176
- if (args > 2) {
177
- *inst++ = REX_W | REX_R;
178
- *inst++ = MOV_r_rm;
179
- *inst++ = MOD_REG | (reg_lmap[SLJIT_SAVED_REG3] << 3) | 0x2 /* rdx */;
180
- }
181
- #else
182
- if (args > 0) {
183
- *inst++ = REX_W;
184
- *inst++ = MOV_r_rm;
185
- *inst++ = MOD_REG | (reg_map[SLJIT_SAVED_REG1] << 3) | 0x1 /* rcx */;
186
- }
187
- if (args > 1) {
188
- *inst++ = REX_W;
189
- *inst++ = MOV_r_rm;
190
- *inst++ = MOD_REG | (reg_map[SLJIT_SAVED_REG2] << 3) | 0x2 /* rdx */;
191
- }
192
- if (args > 2) {
193
- *inst++ = REX_W | REX_B;
194
- *inst++ = MOV_r_rm;
195
- *inst++ = MOD_REG | (reg_map[SLJIT_SAVED_REG3] << 3) | 0x0 /* r8 */;
196
- }
197
- #endif
198
- }
199
-
200
- local_size = ((local_size + FIXED_LOCALS_OFFSET + pushed_size + 16 - 1) & ~(16 - 1)) - pushed_size;
201
- compiler->local_size = local_size;
202
- #ifdef _WIN64
203
- if (local_size > 1024) {
204
- /* Allocate stack for the callback, which grows the stack. */
205
- inst = (sljit_ub*)ensure_buf(compiler, 1 + 4 + (3 + sizeof(sljit_si)));
206
- FAIL_IF(!inst);
207
- INC_SIZE(4 + (3 + sizeof(sljit_si)));
208
- *inst++ = REX_W;
209
- *inst++ = GROUP_BINARY_83;
210
- *inst++ = MOD_REG | SUB | 4;
211
- /* Pushed size must be divisible by 8. */
212
- SLJIT_ASSERT(!(pushed_size & 0x7));
213
- if (pushed_size & 0x8) {
214
- *inst++ = 5 * sizeof(sljit_sw);
215
- local_size -= 5 * sizeof(sljit_sw);
216
- } else {
217
- *inst++ = 4 * sizeof(sljit_sw);
218
- local_size -= 4 * sizeof(sljit_sw);
219
- }
220
- /* Second instruction */
221
- SLJIT_COMPILE_ASSERT(reg_map[SLJIT_SCRATCH_REG1] < 8, temporary_reg1_is_loreg);
222
- *inst++ = REX_W;
223
- *inst++ = MOV_rm_i32;
224
- *inst++ = MOD_REG | reg_lmap[SLJIT_SCRATCH_REG1];
225
- *(sljit_si*)inst = local_size;
226
- #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) || (defined SLJIT_DEBUG && SLJIT_DEBUG)
227
- compiler->skip_checks = 1;
228
- #endif
229
- FAIL_IF(sljit_emit_ijump(compiler, SLJIT_CALL1, SLJIT_IMM, SLJIT_FUNC_OFFSET(sljit_grow_stack)));
230
- }
231
- #endif
232
- SLJIT_ASSERT(local_size > 0);
233
- if (local_size <= 127) {
234
- inst = (sljit_ub*)ensure_buf(compiler, 1 + 4);
235
- FAIL_IF(!inst);
236
- INC_SIZE(4);
237
- *inst++ = REX_W;
238
- *inst++ = GROUP_BINARY_83;
239
- *inst++ = MOD_REG | SUB | 4;
240
- *inst++ = local_size;
241
- }
242
- else {
243
- inst = (sljit_ub*)ensure_buf(compiler, 1 + 7);
244
- FAIL_IF(!inst);
245
- INC_SIZE(7);
246
- *inst++ = REX_W;
247
- *inst++ = GROUP_BINARY_81;
248
- *inst++ = MOD_REG | SUB | 4;
249
- *(sljit_si*)inst = local_size;
250
- inst += sizeof(sljit_si);
251
- }
252
- #ifdef _WIN64
253
- /* Save xmm6 with MOVAPS instruction. */
254
- inst = (sljit_ub*)ensure_buf(compiler, 1 + 5);
255
- FAIL_IF(!inst);
256
- INC_SIZE(5);
257
- *inst++ = GROUP_0F;
258
- *(sljit_si*)inst = 0x20247429;
259
- #endif
260
-
261
- return SLJIT_SUCCESS;
262
- }
263
-
264
- 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)
265
- {
266
- sljit_si pushed_size;
267
-
268
- CHECK_ERROR_VOID();
269
- check_sljit_set_context(compiler, args, scratches, saveds, local_size);
270
-
271
- compiler->scratches = scratches;
272
- compiler->saveds = saveds;
273
- #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
274
- compiler->logical_local_size = local_size;
275
- #endif
276
-
277
- /* Including the return address saved by the call instruction. */
278
- pushed_size = (saveds + 1) * sizeof(sljit_sw);
279
- #ifdef _WIN64
280
- if (scratches >= 5)
281
- pushed_size += sizeof(sljit_sw);
282
- #endif
283
- compiler->local_size = ((local_size + FIXED_LOCALS_OFFSET + pushed_size + 16 - 1) & ~(16 - 1)) - pushed_size;
284
- }
285
-
286
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_return(struct sljit_compiler *compiler, sljit_si op, sljit_si src, sljit_sw srcw)
287
- {
288
- sljit_si size;
289
- sljit_ub *inst;
290
-
291
- CHECK_ERROR();
292
- check_sljit_emit_return(compiler, op, src, srcw);
293
-
294
- compiler->flags_saved = 0;
295
- FAIL_IF(emit_mov_before_return(compiler, op, src, srcw));
296
-
297
- #ifdef _WIN64
298
- /* Restore xmm6 with MOVAPS instruction. */
299
- inst = (sljit_ub*)ensure_buf(compiler, 1 + 5);
300
- FAIL_IF(!inst);
301
- INC_SIZE(5);
302
- *inst++ = GROUP_0F;
303
- *(sljit_si*)inst = 0x20247428;
304
- #endif
305
- SLJIT_ASSERT(compiler->local_size > 0);
306
- if (compiler->local_size <= 127) {
307
- inst = (sljit_ub*)ensure_buf(compiler, 1 + 4);
308
- FAIL_IF(!inst);
309
- INC_SIZE(4);
310
- *inst++ = REX_W;
311
- *inst++ = GROUP_BINARY_83;
312
- *inst++ = MOD_REG | ADD | 4;
313
- *inst = compiler->local_size;
314
- }
315
- else {
316
- inst = (sljit_ub*)ensure_buf(compiler, 1 + 7);
317
- FAIL_IF(!inst);
318
- INC_SIZE(7);
319
- *inst++ = REX_W;
320
- *inst++ = GROUP_BINARY_81;
321
- *inst++ = MOD_REG | ADD | 4;
322
- *(sljit_si*)inst = compiler->local_size;
323
- }
324
-
325
- size = 1 + compiler->saveds;
326
- #ifndef _WIN64
327
- if (compiler->saveds >= 2)
328
- size += compiler->saveds - 1;
329
- #else
330
- if (compiler->saveds >= 4)
331
- size += compiler->saveds - 3;
332
- if (compiler->scratches >= 5)
333
- size += (5 - 4) * 2;
334
- #endif
335
- inst = (sljit_ub*)ensure_buf(compiler, 1 + size);
336
- FAIL_IF(!inst);
337
-
338
- INC_SIZE(size);
339
-
340
- #ifdef _WIN64
341
- if (compiler->scratches >= 5) {
342
- *inst++ = REX_B;
343
- POP_REG(reg_lmap[SLJIT_TEMPORARY_EREG2]);
344
- }
345
- #endif
346
- if (compiler->saveds >= 1)
347
- POP_REG(reg_map[SLJIT_SAVED_REG1]);
348
- if (compiler->saveds >= 2) {
349
- #ifndef _WIN64
350
- *inst++ = REX_B;
351
- #endif
352
- POP_REG(reg_lmap[SLJIT_SAVED_REG2]);
353
- }
354
- if (compiler->saveds >= 3) {
355
- #ifndef _WIN64
356
- *inst++ = REX_B;
357
- #endif
358
- POP_REG(reg_lmap[SLJIT_SAVED_REG3]);
359
- }
360
- if (compiler->saveds >= 4) {
361
- *inst++ = REX_B;
362
- POP_REG(reg_lmap[SLJIT_SAVED_EREG1]);
363
- }
364
- if (compiler->saveds >= 5) {
365
- *inst++ = REX_B;
366
- POP_REG(reg_lmap[SLJIT_SAVED_EREG2]);
367
- }
368
-
369
- RET();
370
- return SLJIT_SUCCESS;
371
- }
372
-
373
- /* --------------------------------------------------------------------- */
374
- /* Operators */
375
- /* --------------------------------------------------------------------- */
376
-
377
- static sljit_si emit_do_imm32(struct sljit_compiler *compiler, sljit_ub rex, sljit_ub opcode, sljit_sw imm)
378
- {
379
- sljit_ub *inst;
380
- sljit_si length = 1 + (rex ? 1 : 0) + sizeof(sljit_si);
381
-
382
- inst = (sljit_ub*)ensure_buf(compiler, 1 + length);
383
- FAIL_IF(!inst);
384
- INC_SIZE(length);
385
- if (rex)
386
- *inst++ = rex;
387
- *inst++ = opcode;
388
- *(sljit_si*)inst = imm;
389
- return SLJIT_SUCCESS;
390
- }
391
-
392
- static sljit_ub* emit_x86_instruction(struct sljit_compiler *compiler, sljit_si size,
393
- /* The register or immediate operand. */
394
- sljit_si a, sljit_sw imma,
395
- /* The general operand (not immediate). */
396
- sljit_si b, sljit_sw immb)
397
- {
398
- sljit_ub *inst;
399
- sljit_ub *buf_ptr;
400
- sljit_ub rex = 0;
401
- sljit_si flags = size & ~0xf;
402
- sljit_si inst_size;
403
-
404
- /* The immediate operand must be 32 bit. */
405
- SLJIT_ASSERT(!(a & SLJIT_IMM) || compiler->mode32 || IS_HALFWORD(imma));
406
- /* Both cannot be switched on. */
407
- SLJIT_ASSERT((flags & (EX86_BIN_INS | EX86_SHIFT_INS)) != (EX86_BIN_INS | EX86_SHIFT_INS));
408
- /* Size flags not allowed for typed instructions. */
409
- SLJIT_ASSERT(!(flags & (EX86_BIN_INS | EX86_SHIFT_INS)) || (flags & (EX86_BYTE_ARG | EX86_HALF_ARG)) == 0);
410
- /* Both size flags cannot be switched on. */
411
- SLJIT_ASSERT((flags & (EX86_BYTE_ARG | EX86_HALF_ARG)) != (EX86_BYTE_ARG | EX86_HALF_ARG));
412
- #if (defined SLJIT_SSE2 && SLJIT_SSE2)
413
- /* SSE2 and immediate is not possible. */
414
- SLJIT_ASSERT(!(a & SLJIT_IMM) || !(flags & EX86_SSE2));
415
- SLJIT_ASSERT((flags & (EX86_PREF_F2 | EX86_PREF_F3)) != (EX86_PREF_F2 | EX86_PREF_F3)
416
- && (flags & (EX86_PREF_F2 | EX86_PREF_66)) != (EX86_PREF_F2 | EX86_PREF_66)
417
- && (flags & (EX86_PREF_F3 | EX86_PREF_66)) != (EX86_PREF_F3 | EX86_PREF_66));
418
- #endif
419
-
420
- size &= 0xf;
421
- inst_size = size;
422
-
423
- if ((b & SLJIT_MEM) && !(b & 0xf0) && NOT_HALFWORD(immb)) {
424
- if (emit_load_imm64(compiler, TMP_REG3, immb))
425
- return NULL;
426
- immb = 0;
427
- if (b & 0xf)
428
- b |= TMP_REG3 << 4;
429
- else
430
- b |= TMP_REG3;
431
- }
432
-
433
- if (!compiler->mode32 && !(flags & EX86_NO_REXW))
434
- rex |= REX_W;
435
- else if (flags & EX86_REX)
436
- rex |= REX;
437
-
438
- #if (defined SLJIT_SSE2 && SLJIT_SSE2)
439
- if (flags & (EX86_PREF_F2 | EX86_PREF_F3))
440
- inst_size++;
441
- #endif
442
- if (flags & EX86_PREF_66)
443
- inst_size++;
444
-
445
- /* Calculate size of b. */
446
- inst_size += 1; /* mod r/m byte. */
447
- if (b & SLJIT_MEM) {
448
- if ((b & 0x0f) == SLJIT_UNUSED)
449
- inst_size += 1 + sizeof(sljit_si); /* SIB byte required to avoid RIP based addressing. */
450
- else {
451
- if (reg_map[b & 0x0f] >= 8)
452
- rex |= REX_B;
453
- if (immb != 0 && !(b & 0xf0)) {
454
- /* Immediate operand. */
455
- if (immb <= 127 && immb >= -128)
456
- inst_size += sizeof(sljit_sb);
457
- else
458
- inst_size += sizeof(sljit_si);
459
- }
460
- }
461
-
462
- if ((b & 0xf) == SLJIT_LOCALS_REG && !(b & 0xf0))
463
- b |= SLJIT_LOCALS_REG << 4;
464
-
465
- if ((b & 0xf0) != SLJIT_UNUSED) {
466
- inst_size += 1; /* SIB byte. */
467
- if (reg_map[(b >> 4) & 0x0f] >= 8)
468
- rex |= REX_X;
469
- }
470
- }
471
- #if (defined SLJIT_SSE2 && SLJIT_SSE2)
472
- else if (!(flags & EX86_SSE2) && reg_map[b] >= 8)
473
- rex |= REX_B;
474
- #else
475
- else if (reg_map[b] >= 8)
476
- rex |= REX_B;
477
- #endif
478
-
479
- if (a & SLJIT_IMM) {
480
- if (flags & EX86_BIN_INS) {
481
- if (imma <= 127 && imma >= -128) {
482
- inst_size += 1;
483
- flags |= EX86_BYTE_ARG;
484
- } else
485
- inst_size += 4;
486
- }
487
- else if (flags & EX86_SHIFT_INS) {
488
- imma &= compiler->mode32 ? 0x1f : 0x3f;
489
- if (imma != 1) {
490
- inst_size ++;
491
- flags |= EX86_BYTE_ARG;
492
- }
493
- } else if (flags & EX86_BYTE_ARG)
494
- inst_size++;
495
- else if (flags & EX86_HALF_ARG)
496
- inst_size += sizeof(short);
497
- else
498
- inst_size += sizeof(sljit_si);
499
- }
500
- else {
501
- SLJIT_ASSERT(!(flags & EX86_SHIFT_INS) || a == SLJIT_PREF_SHIFT_REG);
502
- /* reg_map[SLJIT_PREF_SHIFT_REG] is less than 8. */
503
- #if (defined SLJIT_SSE2 && SLJIT_SSE2)
504
- if (!(flags & EX86_SSE2) && reg_map[a] >= 8)
505
- rex |= REX_R;
506
- #else
507
- if (reg_map[a] >= 8)
508
- rex |= REX_R;
509
- #endif
510
- }
511
-
512
- if (rex)
513
- inst_size++;
514
-
515
- inst = (sljit_ub*)ensure_buf(compiler, 1 + inst_size);
516
- PTR_FAIL_IF(!inst);
517
-
518
- /* Encoding the byte. */
519
- INC_SIZE(inst_size);
520
- #if (defined SLJIT_SSE2 && SLJIT_SSE2)
521
- if (flags & EX86_PREF_F2)
522
- *inst++ = 0xf2;
523
- if (flags & EX86_PREF_F3)
524
- *inst++ = 0xf3;
525
- #endif
526
- if (flags & EX86_PREF_66)
527
- *inst++ = 0x66;
528
- if (rex)
529
- *inst++ = rex;
530
- buf_ptr = inst + size;
531
-
532
- /* Encode mod/rm byte. */
533
- if (!(flags & EX86_SHIFT_INS)) {
534
- if ((flags & EX86_BIN_INS) && (a & SLJIT_IMM))
535
- *inst = (flags & EX86_BYTE_ARG) ? GROUP_BINARY_83 : GROUP_BINARY_81;
536
-
537
- if ((a & SLJIT_IMM) || (a == 0))
538
- *buf_ptr = 0;
539
- #if (defined SLJIT_SSE2 && SLJIT_SSE2)
540
- else if (!(flags & EX86_SSE2))
541
- *buf_ptr = reg_lmap[a] << 3;
542
- else
543
- *buf_ptr = a << 3;
544
- #else
545
- else
546
- *buf_ptr = reg_lmap[a] << 3;
547
- #endif
548
- }
549
- else {
550
- if (a & SLJIT_IMM) {
551
- if (imma == 1)
552
- *inst = GROUP_SHIFT_1;
553
- else
554
- *inst = GROUP_SHIFT_N;
555
- } else
556
- *inst = GROUP_SHIFT_CL;
557
- *buf_ptr = 0;
558
- }
559
-
560
- if (!(b & SLJIT_MEM))
561
- #if (defined SLJIT_SSE2 && SLJIT_SSE2)
562
- *buf_ptr++ |= MOD_REG + ((!(flags & EX86_SSE2)) ? reg_lmap[b] : b);
563
- #else
564
- *buf_ptr++ |= MOD_REG + reg_lmap[b];
565
- #endif
566
- else if ((b & 0x0f) != SLJIT_UNUSED) {
567
- if ((b & 0xf0) == SLJIT_UNUSED || (b & 0xf0) == (SLJIT_LOCALS_REG << 4)) {
568
- if (immb != 0) {
569
- if (immb <= 127 && immb >= -128)
570
- *buf_ptr |= 0x40;
571
- else
572
- *buf_ptr |= 0x80;
573
- }
574
-
575
- if ((b & 0xf0) == SLJIT_UNUSED)
576
- *buf_ptr++ |= reg_lmap[b & 0x0f];
577
- else {
578
- *buf_ptr++ |= 0x04;
579
- *buf_ptr++ = reg_lmap[b & 0x0f] | (reg_lmap[(b >> 4) & 0x0f] << 3);
580
- }
581
-
582
- if (immb != 0) {
583
- if (immb <= 127 && immb >= -128)
584
- *buf_ptr++ = immb; /* 8 bit displacement. */
585
- else {
586
- *(sljit_si*)buf_ptr = immb; /* 32 bit displacement. */
587
- buf_ptr += sizeof(sljit_si);
588
- }
589
- }
590
- }
591
- else {
592
- *buf_ptr++ |= 0x04;
593
- *buf_ptr++ = reg_lmap[b & 0x0f] | (reg_lmap[(b >> 4) & 0x0f] << 3) | (immb << 6);
594
- }
595
- }
596
- else {
597
- *buf_ptr++ |= 0x04;
598
- *buf_ptr++ = 0x25;
599
- *(sljit_si*)buf_ptr = immb; /* 32 bit displacement. */
600
- buf_ptr += sizeof(sljit_si);
601
- }
602
-
603
- if (a & SLJIT_IMM) {
604
- if (flags & EX86_BYTE_ARG)
605
- *buf_ptr = imma;
606
- else if (flags & EX86_HALF_ARG)
607
- *(short*)buf_ptr = imma;
608
- else if (!(flags & EX86_SHIFT_INS))
609
- *(sljit_si*)buf_ptr = imma;
610
- }
611
-
612
- return !(flags & EX86_SHIFT_INS) ? inst : (inst + 1);
613
- }
614
-
615
- /* --------------------------------------------------------------------- */
616
- /* Call / return instructions */
617
- /* --------------------------------------------------------------------- */
618
-
619
- static SLJIT_INLINE sljit_si call_with_args(struct sljit_compiler *compiler, sljit_si type)
620
- {
621
- sljit_ub *inst;
622
-
623
- #ifndef _WIN64
624
- SLJIT_COMPILE_ASSERT(reg_map[SLJIT_SCRATCH_REG2] == 6 && reg_map[SLJIT_SCRATCH_REG1] < 8 && reg_map[SLJIT_SCRATCH_REG3] < 8, args_registers);
625
-
626
- inst = (sljit_ub*)ensure_buf(compiler, 1 + ((type < SLJIT_CALL3) ? 3 : 6));
627
- FAIL_IF(!inst);
628
- INC_SIZE((type < SLJIT_CALL3) ? 3 : 6);
629
- if (type >= SLJIT_CALL3) {
630
- *inst++ = REX_W;
631
- *inst++ = MOV_r_rm;
632
- *inst++ = MOD_REG | (0x2 /* rdx */ << 3) | reg_lmap[SLJIT_SCRATCH_REG3];
633
- }
634
- *inst++ = REX_W;
635
- *inst++ = MOV_r_rm;
636
- *inst++ = MOD_REG | (0x7 /* rdi */ << 3) | reg_lmap[SLJIT_SCRATCH_REG1];
637
- #else
638
- SLJIT_COMPILE_ASSERT(reg_map[SLJIT_SCRATCH_REG2] == 2 && reg_map[SLJIT_SCRATCH_REG1] < 8 && reg_map[SLJIT_SCRATCH_REG3] < 8, args_registers);
639
-
640
- inst = (sljit_ub*)ensure_buf(compiler, 1 + ((type < SLJIT_CALL3) ? 3 : 6));
641
- FAIL_IF(!inst);
642
- INC_SIZE((type < SLJIT_CALL3) ? 3 : 6);
643
- if (type >= SLJIT_CALL3) {
644
- *inst++ = REX_W | REX_R;
645
- *inst++ = MOV_r_rm;
646
- *inst++ = MOD_REG | (0x0 /* r8 */ << 3) | reg_lmap[SLJIT_SCRATCH_REG3];
647
- }
648
- *inst++ = REX_W;
649
- *inst++ = MOV_r_rm;
650
- *inst++ = MOD_REG | (0x1 /* rcx */ << 3) | reg_lmap[SLJIT_SCRATCH_REG1];
651
- #endif
652
- return SLJIT_SUCCESS;
653
- }
654
-
655
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_fast_enter(struct sljit_compiler *compiler, sljit_si dst, sljit_sw dstw)
656
- {
657
- sljit_ub *inst;
658
-
659
- CHECK_ERROR();
660
- check_sljit_emit_fast_enter(compiler, dst, dstw);
661
- ADJUST_LOCAL_OFFSET(dst, dstw);
662
-
663
- /* For UNUSED dst. Uncommon, but possible. */
664
- if (dst == SLJIT_UNUSED)
665
- dst = TMP_REGISTER;
666
-
667
- if (dst <= TMP_REGISTER) {
668
- if (reg_map[dst] < 8) {
669
- inst = (sljit_ub*)ensure_buf(compiler, 1 + 1);
670
- FAIL_IF(!inst);
671
- INC_SIZE(1);
672
- POP_REG(reg_lmap[dst]);
673
- return SLJIT_SUCCESS;
674
- }
675
-
676
- inst = (sljit_ub*)ensure_buf(compiler, 1 + 2);
677
- FAIL_IF(!inst);
678
- INC_SIZE(2);
679
- *inst++ = REX_B;
680
- POP_REG(reg_lmap[dst]);
681
- return SLJIT_SUCCESS;
682
- }
683
-
684
- /* REX_W is not necessary (src is not immediate). */
685
- compiler->mode32 = 1;
686
- inst = emit_x86_instruction(compiler, 1, 0, 0, dst, dstw);
687
- FAIL_IF(!inst);
688
- *inst++ = POP_rm;
689
- return SLJIT_SUCCESS;
690
- }
691
-
692
- SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_fast_return(struct sljit_compiler *compiler, sljit_si src, sljit_sw srcw)
693
- {
694
- sljit_ub *inst;
695
-
696
- CHECK_ERROR();
697
- check_sljit_emit_fast_return(compiler, src, srcw);
698
- ADJUST_LOCAL_OFFSET(src, srcw);
699
-
700
- if ((src & SLJIT_IMM) && NOT_HALFWORD(srcw)) {
701
- FAIL_IF(emit_load_imm64(compiler, TMP_REGISTER, srcw));
702
- src = TMP_REGISTER;
703
- }
704
-
705
- if (src <= TMP_REGISTER) {
706
- if (reg_map[src] < 8) {
707
- inst = (sljit_ub*)ensure_buf(compiler, 1 + 1 + 1);
708
- FAIL_IF(!inst);
709
-
710
- INC_SIZE(1 + 1);
711
- PUSH_REG(reg_lmap[src]);
712
- }
713
- else {
714
- inst = (sljit_ub*)ensure_buf(compiler, 1 + 2 + 1);
715
- FAIL_IF(!inst);
716
-
717
- INC_SIZE(2 + 1);
718
- *inst++ = REX_B;
719
- PUSH_REG(reg_lmap[src]);
720
- }
721
- }
722
- else if (src & SLJIT_MEM) {
723
- /* REX_W is not necessary (src is not immediate). */
724
- compiler->mode32 = 1;
725
- inst = emit_x86_instruction(compiler, 1, 0, 0, src, srcw);
726
- FAIL_IF(!inst);
727
- *inst++ = GROUP_FF;
728
- *inst |= PUSH_rm;
729
-
730
- inst = (sljit_ub*)ensure_buf(compiler, 1 + 1);
731
- FAIL_IF(!inst);
732
- INC_SIZE(1);
733
- }
734
- else {
735
- SLJIT_ASSERT(IS_HALFWORD(srcw));
736
- /* SLJIT_IMM. */
737
- inst = (sljit_ub*)ensure_buf(compiler, 1 + 5 + 1);
738
- FAIL_IF(!inst);
739
-
740
- INC_SIZE(5 + 1);
741
- *inst++ = PUSH_i32;
742
- *(sljit_si*)inst = srcw;
743
- inst += sizeof(sljit_si);
744
- }
745
-
746
- RET();
747
- return SLJIT_SUCCESS;
748
- }
749
-
750
-
751
- /* --------------------------------------------------------------------- */
752
- /* Extend input */
753
- /* --------------------------------------------------------------------- */
754
-
755
- static sljit_si emit_mov_int(struct sljit_compiler *compiler, sljit_si sign,
756
- sljit_si dst, sljit_sw dstw,
757
- sljit_si src, sljit_sw srcw)
758
- {
759
- sljit_ub* inst;
760
- sljit_si dst_r;
761
-
762
- compiler->mode32 = 0;
763
-
764
- if (dst == SLJIT_UNUSED && !(src & SLJIT_MEM))
765
- return SLJIT_SUCCESS; /* Empty instruction. */
766
-
767
- if (src & SLJIT_IMM) {
768
- if (dst <= TMP_REGISTER) {
769
- if (sign || ((sljit_uw)srcw <= 0x7fffffff)) {
770
- inst = emit_x86_instruction(compiler, 1, SLJIT_IMM, (sljit_sw)(sljit_si)srcw, dst, dstw);
771
- FAIL_IF(!inst);
772
- *inst = MOV_rm_i32;
773
- return SLJIT_SUCCESS;
774
- }
775
- return emit_load_imm64(compiler, dst, srcw);
776
- }
777
- compiler->mode32 = 1;
778
- inst = emit_x86_instruction(compiler, 1, SLJIT_IMM, (sljit_sw)(sljit_si)srcw, dst, dstw);
779
- FAIL_IF(!inst);
780
- *inst = MOV_rm_i32;
781
- compiler->mode32 = 0;
782
- return SLJIT_SUCCESS;
783
- }
784
-
785
- dst_r = (dst <= TMP_REGISTER) ? dst : TMP_REGISTER;
786
-
787
- if ((dst & SLJIT_MEM) && (src <= TMP_REGISTER))
788
- dst_r = src;
789
- else {
790
- if (sign) {
791
- inst = emit_x86_instruction(compiler, 1, dst_r, 0, src, srcw);
792
- FAIL_IF(!inst);
793
- *inst++ = MOVSXD_r_rm;
794
- } else {
795
- compiler->mode32 = 1;
796
- FAIL_IF(emit_mov(compiler, dst_r, 0, src, srcw));
797
- compiler->mode32 = 0;
798
- }
799
- }
800
-
801
- if (dst & SLJIT_MEM) {
802
- compiler->mode32 = 1;
803
- inst = emit_x86_instruction(compiler, 1, dst_r, 0, dst, dstw);
804
- FAIL_IF(!inst);
805
- *inst = MOV_rm_r;
806
- compiler->mode32 = 0;
807
- }
808
-
809
- return SLJIT_SUCCESS;
810
- }