webruby 0.2.2 → 0.2.4

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 (245) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webruby/config.rb +4 -9
  3. data/lib/webruby/rake/files.rake +2 -2
  4. data/modules/emscripten/AUTHORS +9 -1
  5. data/modules/emscripten/CONTRIBUTING.markdown +5 -0
  6. data/modules/emscripten/ChangeLog +435 -0
  7. data/modules/emscripten/cmake/Modules/FindOpenAL.cmake +26 -0
  8. data/modules/emscripten/cmake/Platform/Emscripten.cmake +9 -2
  9. data/modules/emscripten/em++ +0 -2
  10. data/modules/emscripten/emcc +92 -32
  11. data/modules/emscripten/emlink.py +16 -13
  12. data/modules/emscripten/emmake +1 -1
  13. data/modules/emscripten/emrun +918 -0
  14. data/modules/emscripten/emrun.bat +2 -0
  15. data/modules/emscripten/emscripten.py +545 -20
  16. data/modules/emscripten/src/analyzer.js +6 -1
  17. data/modules/emscripten/src/compiler.js +25 -16
  18. data/modules/emscripten/src/emrun_postjs.js +20 -0
  19. data/modules/emscripten/{tests → src}/hello_world.js +0 -0
  20. data/modules/emscripten/src/intertyper.js +45 -16
  21. data/modules/emscripten/src/jsifier.js +78 -48
  22. data/modules/emscripten/src/library.js +381 -96
  23. data/modules/emscripten/src/library_browser.js +50 -53
  24. data/modules/emscripten/src/library_egl.js +66 -24
  25. data/modules/emscripten/src/library_fs.js +122 -90
  26. data/modules/emscripten/src/library_gl.js +739 -353
  27. data/modules/emscripten/src/library_glfw.js +9 -3
  28. data/modules/emscripten/src/library_glut.js +10 -5
  29. data/modules/emscripten/src/library_idbfs.js +14 -14
  30. data/modules/emscripten/src/library_memfs.js +65 -41
  31. data/modules/emscripten/src/library_nodefs.js +61 -9
  32. data/modules/emscripten/src/library_openal.js +4 -4
  33. data/modules/emscripten/src/library_path.js +9 -13
  34. data/modules/emscripten/src/library_sdl.js +301 -64
  35. data/modules/emscripten/src/library_sockfs.js +7 -5
  36. data/modules/emscripten/src/modules.js +62 -22
  37. data/modules/emscripten/src/parseTools.js +135 -102
  38. data/modules/emscripten/src/postamble.js +3 -4
  39. data/modules/emscripten/src/preamble.js +49 -29
  40. data/modules/emscripten/src/proxyClient.js +1 -1
  41. data/modules/emscripten/src/proxyWorker.js +10 -10
  42. data/modules/emscripten/src/relooper/Relooper.cpp +15 -4
  43. data/modules/emscripten/src/runtime.js +32 -8
  44. data/modules/emscripten/src/settings.js +25 -8
  45. data/modules/emscripten/src/shell.html +6 -3
  46. data/modules/emscripten/src/shell.js +13 -11
  47. data/modules/emscripten/src/simd.js +602 -432
  48. data/modules/emscripten/src/struct_info.json +22 -2
  49. data/modules/emscripten/src/utility.js +32 -17
  50. data/modules/emscripten/system/include/SDL/SDL_events.h +1 -0
  51. data/modules/emscripten/system/include/compat/ctype.h +17 -0
  52. data/modules/emscripten/system/include/compat/wchar.h +23 -0
  53. data/modules/emscripten/system/include/compat/wctype.h +23 -0
  54. data/modules/emscripten/system/include/emscripten/emmintrin.h +87 -0
  55. data/modules/emscripten/system/include/emscripten/emscripten.h +30 -4
  56. data/modules/emscripten/system/include/emscripten/vector.h +29 -1
  57. data/modules/emscripten/system/include/emscripten/xmmintrin.h +131 -0
  58. data/modules/emscripten/system/include/libcxx/CREDITS.TXT +9 -1
  59. data/modules/emscripten/system/include/libcxx/__bit_reference +8 -8
  60. data/modules/emscripten/system/include/libcxx/__config +95 -17
  61. data/modules/emscripten/system/include/libcxx/__debug +25 -4
  62. data/modules/emscripten/system/include/libcxx/__functional_03 +7 -7
  63. data/modules/emscripten/system/include/libcxx/__functional_base +169 -9
  64. data/modules/emscripten/system/include/libcxx/__functional_base_03 +1 -1
  65. data/modules/emscripten/system/include/libcxx/__hash_table +25 -25
  66. data/modules/emscripten/system/include/libcxx/__locale +21 -19
  67. data/modules/emscripten/system/include/libcxx/__mutex_base +2 -33
  68. data/modules/emscripten/system/include/libcxx/__split_buffer +9 -9
  69. data/modules/emscripten/system/include/libcxx/__std_stream +14 -0
  70. data/modules/emscripten/system/include/libcxx/__tree +35 -26
  71. data/modules/emscripten/system/include/libcxx/__tuple +15 -15
  72. data/modules/emscripten/system/include/libcxx/__tuple_03 +2 -2
  73. data/modules/emscripten/system/include/libcxx/__undef_min_max +8 -0
  74. data/modules/emscripten/system/include/libcxx/algorithm +121 -110
  75. data/modules/emscripten/system/include/libcxx/array +15 -15
  76. data/modules/emscripten/system/include/libcxx/bitset +4 -4
  77. data/modules/emscripten/system/include/libcxx/chrono +51 -17
  78. data/modules/emscripten/system/include/libcxx/cmath +25 -23
  79. data/modules/emscripten/system/include/libcxx/codecvt +21 -18
  80. data/modules/emscripten/system/include/libcxx/complex +48 -7
  81. data/modules/emscripten/system/include/libcxx/cstddef +1 -1
  82. data/modules/emscripten/system/include/libcxx/cstdio +8 -1
  83. data/modules/emscripten/system/include/libcxx/cstdlib +1 -1
  84. data/modules/emscripten/system/include/libcxx/cwchar +1 -1
  85. data/modules/emscripten/system/include/libcxx/deque +26 -12
  86. data/modules/emscripten/system/include/libcxx/dynarray +311 -0
  87. data/modules/emscripten/system/include/libcxx/exception +4 -4
  88. data/modules/emscripten/system/include/libcxx/ext/__hash +3 -3
  89. data/modules/emscripten/system/include/libcxx/ext/hash_map +19 -15
  90. data/modules/emscripten/system/include/libcxx/ext/hash_set +7 -3
  91. data/modules/emscripten/system/include/libcxx/forward_list +33 -7
  92. data/modules/emscripten/system/include/libcxx/fstream +4 -4
  93. data/modules/emscripten/system/include/libcxx/functional +200 -170
  94. data/modules/emscripten/system/include/libcxx/future +83 -39
  95. data/modules/emscripten/system/include/libcxx/initializer_list +24 -11
  96. data/modules/emscripten/system/include/libcxx/iomanip +147 -0
  97. data/modules/emscripten/system/include/libcxx/ios +24 -16
  98. data/modules/emscripten/system/include/libcxx/iosfwd +19 -19
  99. data/modules/emscripten/system/include/libcxx/istream +13 -8
  100. data/modules/emscripten/system/include/libcxx/iterator +108 -417
  101. data/modules/emscripten/system/include/libcxx/limits +8 -4
  102. data/modules/emscripten/system/include/libcxx/list +28 -8
  103. data/modules/emscripten/system/include/libcxx/locale +153 -390
  104. data/modules/emscripten/system/include/libcxx/map +280 -100
  105. data/modules/emscripten/system/include/libcxx/memory +49 -97
  106. data/modules/emscripten/system/include/libcxx/mutex +2 -2
  107. data/modules/emscripten/system/include/libcxx/new +43 -14
  108. data/modules/emscripten/system/include/libcxx/numeric +2 -2
  109. data/modules/emscripten/system/include/libcxx/optional +697 -0
  110. data/modules/emscripten/system/include/libcxx/ostream +17 -8
  111. data/modules/emscripten/system/include/libcxx/queue +5 -5
  112. data/modules/emscripten/system/include/libcxx/random +53 -51
  113. data/modules/emscripten/system/include/libcxx/ratio +11 -11
  114. data/modules/emscripten/system/include/libcxx/readme.txt +1 -1
  115. data/modules/emscripten/system/include/libcxx/regex +23 -20
  116. data/modules/emscripten/system/include/libcxx/scoped_allocator +1 -1
  117. data/modules/emscripten/system/include/libcxx/set +166 -2
  118. data/modules/emscripten/system/include/libcxx/shared_mutex +419 -0
  119. data/modules/emscripten/system/include/libcxx/sstream +4 -4
  120. data/modules/emscripten/system/include/libcxx/stack +3 -3
  121. data/modules/emscripten/system/include/libcxx/streambuf +5 -5
  122. data/modules/emscripten/system/include/libcxx/string +372 -324
  123. data/modules/emscripten/system/include/libcxx/support/ibm/limits.h +99 -0
  124. data/modules/emscripten/system/include/libcxx/support/ibm/support.h +54 -0
  125. data/modules/emscripten/system/include/libcxx/support/ibm/xlocale.h +326 -0
  126. data/modules/emscripten/system/include/libcxx/support/win32/limits_win32.h +6 -6
  127. data/modules/emscripten/system/include/libcxx/support/win32/locale_win32.h +15 -15
  128. data/modules/emscripten/system/include/libcxx/support/win32/math_win32.h +2 -0
  129. data/modules/emscripten/system/include/libcxx/support/win32/support.h +6 -1
  130. data/modules/emscripten/system/include/libcxx/system_error +14 -8
  131. data/modules/emscripten/system/include/libcxx/thread +7 -8
  132. data/modules/emscripten/system/include/libcxx/tuple +29 -88
  133. data/modules/emscripten/system/include/libcxx/type_traits +253 -209
  134. data/modules/emscripten/system/include/libcxx/typeindex +3 -3
  135. data/modules/emscripten/system/include/libcxx/unordered_map +162 -101
  136. data/modules/emscripten/system/include/libcxx/unordered_set +79 -2
  137. data/modules/emscripten/system/include/libcxx/utility +20 -20
  138. data/modules/emscripten/system/include/libcxx/valarray +23 -23
  139. data/modules/emscripten/system/include/libcxx/vector +114 -91
  140. data/modules/emscripten/system/lib/libc/musl/src/regex/regcomp.c +3352 -0
  141. data/modules/emscripten/system/lib/libc/musl/src/regex/regerror.c +35 -0
  142. data/modules/emscripten/system/lib/libc/musl/src/regex/regexec.c +1011 -0
  143. data/modules/emscripten/system/lib/libc/musl/src/regex/tre-mem.c +158 -0
  144. data/modules/emscripten/system/lib/libc/musl/src/regex/tre.h +231 -0
  145. data/modules/emscripten/system/lib/libcextra.symbols +7 -0
  146. data/modules/emscripten/system/lib/libcxx/CREDITS.TXT +9 -1
  147. data/modules/emscripten/system/lib/libcxx/algorithm.cpp +1 -0
  148. data/modules/emscripten/system/lib/libcxx/debug.cpp +66 -42
  149. data/modules/emscripten/system/lib/libcxx/exception.cpp +88 -16
  150. data/modules/emscripten/system/lib/libcxx/future.cpp +6 -0
  151. data/modules/emscripten/system/lib/libcxx/ios.cpp +7 -2
  152. data/modules/emscripten/system/lib/libcxx/iostream.cpp +8 -8
  153. data/modules/emscripten/system/lib/libcxx/locale.cpp +38 -11
  154. data/modules/emscripten/system/lib/libcxx/mutex.cpp +3 -0
  155. data/modules/emscripten/system/lib/libcxx/new.cpp +44 -10
  156. data/modules/emscripten/system/lib/libcxx/optional.cpp +25 -0
  157. data/modules/emscripten/system/lib/libcxx/random.cpp +26 -0
  158. data/modules/emscripten/system/lib/libcxx/readme.txt +1 -1
  159. data/modules/emscripten/system/lib/libcxx/shared_mutex.cpp +101 -0
  160. data/modules/emscripten/system/lib/libcxx/stdexcept.cpp +11 -7
  161. data/modules/emscripten/system/lib/libcxx/string.cpp +3 -1
  162. data/modules/emscripten/system/lib/libcxx/strstream.cpp +7 -7
  163. data/modules/emscripten/system/lib/libcxx/support/win32/locale_win32.cpp +12 -13
  164. data/modules/emscripten/system/lib/libcxx/support/win32/support.cpp +33 -36
  165. data/modules/emscripten/system/lib/libcxx/symbols +187 -168
  166. data/modules/emscripten/system/lib/libcxx/system_error.cpp +1 -0
  167. data/modules/emscripten/system/lib/libcxx/thread.cpp +7 -3
  168. data/modules/emscripten/system/lib/libcxx/typeinfo.cpp +9 -6
  169. data/modules/emscripten/system/lib/libcxx/valarray.cpp +2 -0
  170. data/modules/emscripten/third_party/lzma.js/doit.bat +4 -0
  171. data/modules/emscripten/third_party/lzma.js/doit.sh +9 -2
  172. data/modules/emscripten/tools/cache.py +5 -7
  173. data/modules/emscripten/tools/cache.pyc +0 -0
  174. data/modules/emscripten/tools/eliminator/asm-eliminator-test-output.js +7 -0
  175. data/modules/emscripten/tools/eliminator/asm-eliminator-test.js +9 -1
  176. data/modules/emscripten/tools/eliminator/eliminator-test-output.js +3 -0
  177. data/modules/emscripten/tools/eliminator/eliminator-test.js +9 -1
  178. data/modules/emscripten/tools/file_packager.py +93 -50
  179. data/modules/emscripten/tools/js-optimizer.js +98 -48
  180. data/modules/emscripten/tools/js_optimizer.py +4 -4
  181. data/modules/emscripten/tools/js_optimizer.pyc +0 -0
  182. data/modules/emscripten/tools/jsrun.py +1 -1
  183. data/modules/emscripten/tools/jsrun.pyc +0 -0
  184. data/modules/emscripten/tools/response_file.py +6 -0
  185. data/modules/emscripten/tools/response_file.pyc +0 -0
  186. data/modules/emscripten/tools/settings_template_readonly.py +2 -0
  187. data/modules/emscripten/tools/shared.py +88 -34
  188. data/modules/emscripten/tools/shared.pyc +0 -0
  189. data/modules/emscripten/tools/split.py +21 -13
  190. data/modules/mruby/build_config.rb +7 -1
  191. data/modules/mruby/doc/compile/README.md +5 -9
  192. data/modules/mruby/include/mrbconf.h +5 -2
  193. data/modules/mruby/include/mruby/array.h +1 -0
  194. data/modules/mruby/include/mruby/compile.h +2 -4
  195. data/modules/mruby/include/mruby/dump.h +7 -16
  196. data/modules/mruby/include/mruby/hash.h +1 -1
  197. data/modules/mruby/include/mruby/irep.h +14 -2
  198. data/modules/mruby/include/mruby/khash.h +8 -7
  199. data/modules/mruby/include/mruby/string.h +1 -0
  200. data/modules/mruby/include/mruby/value.h +5 -2
  201. data/modules/mruby/include/mruby.h +12 -13
  202. data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +16 -6
  203. data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +18 -30
  204. data/modules/mruby/mrbgems/mruby-fiber/src/fiber.c +21 -0
  205. data/modules/mruby/mrbgems/mruby-math/src/math.c +1 -1
  206. data/modules/mruby/mrbgems/mruby-random/src/random.c +144 -47
  207. data/modules/mruby/mrbgems/mruby-random/test/random.rb +44 -0
  208. data/modules/mruby/mrbgems/mruby-struct/src/struct.c +5 -5
  209. data/modules/mruby/mrblib/numeric.rb +99 -33
  210. data/modules/mruby/src/array.c +11 -4
  211. data/modules/mruby/src/backtrace.c +2 -2
  212. data/modules/mruby/src/class.c +49 -30
  213. data/modules/mruby/src/codegen.c +131 -79
  214. data/modules/mruby/src/debug.c +1 -1
  215. data/modules/mruby/src/dump.c +213 -163
  216. data/modules/mruby/src/error.c +17 -17
  217. data/modules/mruby/src/error.h +1 -1
  218. data/modules/mruby/src/etc.c +10 -0
  219. data/modules/mruby/src/gc.c +35 -17
  220. data/modules/mruby/src/hash.c +5 -5
  221. data/modules/mruby/src/kernel.c +36 -14
  222. data/modules/mruby/src/load.c +238 -296
  223. data/modules/mruby/src/numeric.c +18 -98
  224. data/modules/mruby/src/object.c +3 -5
  225. data/modules/mruby/src/parse.y +63 -56
  226. data/modules/mruby/src/proc.c +8 -5
  227. data/modules/mruby/src/re.h +0 -1
  228. data/modules/mruby/src/state.c +65 -27
  229. data/modules/mruby/src/string.c +3 -31
  230. data/modules/mruby/src/symbol.c +3 -3
  231. data/modules/mruby/src/variable.c +12 -5
  232. data/modules/mruby/src/vm.c +90 -72
  233. data/modules/mruby/tasks/mruby_build.rake +10 -1
  234. data/modules/mruby/tasks/toolchains/gcc.rake +12 -2
  235. data/modules/mruby/tasks/toolchains/{vs2012.rake → visualcpp.rake} +1 -1
  236. data/modules/mruby/test/driver.c +3 -3
  237. data/modules/mruby/test/t/array.rb +5 -5
  238. data/modules/mruby/test/t/class.rb +14 -1
  239. data/modules/mruby/test/t/kernel.rb +4 -0
  240. data/modules/mruby/test/t/module.rb +4 -4
  241. data/modules/mruby/test/t/nameerror.rb +1 -1
  242. data/modules/mruby/tools/mrbc/mrbc.c +23 -17
  243. data/modules/mruby/travis_config.rb +10 -1
  244. metadata +28 -5
  245. data/modules/mruby/tasks/toolchains/vs2010.rake +0 -3
@@ -41,38 +41,6 @@ mrb_to_flo(mrb_state *mrb, mrb_value val)
41
41
  return mrb_float(val);
42
42
  }
43
43
 
44
- /*
45
- * call-seq:
46
- * +num -> num
47
- *
48
- * Unary Plus---Returns the receiver's value.
49
- */
50
-
51
- static mrb_value
52
- num_uplus(mrb_state *mrb, mrb_value num)
53
- {
54
- return num;
55
- }
56
-
57
- /*
58
- * call-seq:
59
- * -num -> numeric
60
- *
61
- * Unary Minus---Returns the receiver's value, negated.
62
- */
63
-
64
- static mrb_value
65
- num_uminus(mrb_state *mrb, mrb_value num)
66
- {
67
- return mrb_float_value(mrb, (mrb_float)0 - mrb_to_flo(mrb, num));
68
- }
69
-
70
- static mrb_value
71
- fix_uminus(mrb_state *mrb, mrb_value num)
72
- {
73
- return mrb_fixnum_value(0 - mrb_fixnum(num));
74
- }
75
-
76
44
  /*
77
45
  * call-seq:
78
46
  *
@@ -131,27 +99,6 @@ num_div(mrb_state *mrb, mrb_value x)
131
99
  return mrb_float_value(mrb, mrb_to_flo(mrb, x) / y);
132
100
  }
133
101
 
134
- /*
135
- * call-seq:
136
- * num.abs -> numeric
137
- * num.magnitude -> numeric
138
- *
139
- * Returns the absolute value of <i>num</i>.
140
- *
141
- * 12.abs #=> 12
142
- * (-34.56).abs #=> 34.56
143
- * -34.56.abs #=> 34.56
144
- */
145
-
146
- static mrb_value
147
- num_abs(mrb_state *mrb, mrb_value num)
148
- {
149
- if (mrb_to_flo(mrb, num) < 0) {
150
- return num_uminus(mrb, num);
151
- }
152
- return num;
153
- }
154
-
155
102
  /********************************************************************
156
103
  *
157
104
  * Document-class: Float
@@ -695,42 +642,6 @@ int_to_i(mrb_state *mrb, mrb_value num)
695
642
  return num;
696
643
  }
697
644
 
698
- /* 15.2.8.3.21 */
699
- /*
700
- * call-seq:
701
- * fixnum.next -> integer
702
- * fixnum.succ -> integer
703
- *
704
- * Returns the <code>Integer</code> equal to <i>int</i> + 1.
705
- *
706
- * 1.next #=> 2
707
- * (-1).next #=> 0
708
- */
709
-
710
- static mrb_value
711
- fix_succ(mrb_state *mrb, mrb_value num)
712
- {
713
- return mrb_fixnum_value(mrb_fixnum(num)+1);
714
- }
715
-
716
- /* 15.2.8.3.19 */
717
- /*
718
- * call-seq:
719
- * int.next -> integer
720
- * int.succ -> integer
721
- *
722
- * Returns the <code>Integer</code> equal to <i>int</i> + 1.
723
- *
724
- * 1.next #=> 2
725
- * (-1).next #=> 0
726
- */
727
- static mrb_value
728
- int_succ(mrb_state *mrb, mrb_value num)
729
- {
730
- if (mrb_fixnum_p(num)) return fix_succ(mrb, num);
731
- return mrb_funcall(mrb, num, "+", 1, mrb_fixnum_value(1));
732
- }
733
-
734
645
  #define SQRT_INT_MAX ((mrb_int)1<<((sizeof(mrb_int)*CHAR_BIT-1)/2))
735
646
  /*tests if N*N would overflow*/
736
647
  #define FIT_SQRT_INT(n) (((n)<SQRT_INT_MAX)&&((n)>=-SQRT_INT_MAX))
@@ -873,6 +784,21 @@ fix_divmod(mrb_state *mrb, mrb_value x)
873
784
  }
874
785
  }
875
786
 
787
+ static mrb_value
788
+ flo_divmod(mrb_state *mrb, mrb_value x)
789
+ {
790
+ mrb_value y;
791
+ mrb_float div, mod;
792
+ mrb_value a, b;
793
+
794
+ mrb_get_args(mrb, "o", &y);
795
+
796
+ flodivmod(mrb, mrb_float(x), mrb_to_flo(mrb, y), &div, &mod);
797
+ a = mrb_float_value(mrb, (mrb_int)div);
798
+ b = mrb_float_value(mrb, mod);
799
+ return mrb_assoc_new(mrb, a, b);
800
+ }
801
+
876
802
  /* 15.2.8.3.7 */
877
803
  /*
878
804
  * call-seq:
@@ -1145,7 +1071,7 @@ mrb_flo_to_fixnum(mrb_state *mrb, mrb_value x)
1145
1071
 
1146
1072
  if (mrb_float_p(x)) {
1147
1073
  mrb_raise(mrb, E_TYPE_ERROR, "non float value");
1148
- z = 0; /* not reached. just supress warnings. */
1074
+ z = 0; /* not reached. just suppress warnings. */
1149
1075
  }
1150
1076
  else {
1151
1077
  mrb_float d = mrb_float(x);
@@ -1359,14 +1285,10 @@ mrb_init_numeric(mrb_state *mrb)
1359
1285
 
1360
1286
  /* Numeric Class */
1361
1287
  numeric = mrb_define_class(mrb, "Numeric", mrb->object_class);
1362
- mrb_include_module(mrb, numeric, mrb_class_get(mrb, "Comparable"));
1363
1288
 
1364
- mrb_define_method(mrb, numeric, "+@", num_uplus, MRB_ARGS_REQ(1)); /* 15.2.7.4.1 */
1365
- mrb_define_method(mrb, numeric, "-@", num_uminus, MRB_ARGS_REQ(1)); /* 15.2.7.4.2 */
1366
1289
  mrb_define_method(mrb, numeric, "**", num_pow, MRB_ARGS_REQ(1));
1367
1290
  mrb_define_method(mrb, numeric, "/", num_div, MRB_ARGS_REQ(1)); /* 15.2.8.3.4 */
1368
1291
  mrb_define_method(mrb, numeric, "quo", num_div, MRB_ARGS_REQ(1)); /* 15.2.7.4.5 (x) */
1369
- mrb_define_method(mrb, numeric, "abs", num_abs, MRB_ARGS_NONE()); /* 15.2.7.4.3 */
1370
1292
  mrb_define_method(mrb, numeric, "<=>", num_cmp, MRB_ARGS_REQ(1)); /* 15.2.9.3.6 */
1371
1293
 
1372
1294
  /* Integer Class */
@@ -1374,11 +1296,10 @@ mrb_init_numeric(mrb_state *mrb)
1374
1296
  mrb_undef_class_method(mrb, integer, "new");
1375
1297
  mrb_define_method(mrb, integer, "to_i", int_to_i, MRB_ARGS_NONE()); /* 15.2.8.3.24 */
1376
1298
  mrb_define_method(mrb, integer, "to_int", int_to_i, MRB_ARGS_NONE());
1377
- fixnum = mrb->fixnum_class = mrb_define_class(mrb, "Fixnum", integer);
1378
1299
 
1300
+ fixnum = mrb->fixnum_class = mrb_define_class(mrb, "Fixnum", integer);
1379
1301
  mrb_define_method(mrb, fixnum, "+", fix_plus, MRB_ARGS_REQ(1)); /* 15.2.8.3.1 */
1380
1302
  mrb_define_method(mrb, fixnum, "-", fix_minus, MRB_ARGS_REQ(1)); /* 15.2.8.3.2 */
1381
- mrb_define_method(mrb, fixnum, "-@", fix_uminus, MRB_ARGS_REQ(1)); /* 15.2.7.4.2 */
1382
1303
  mrb_define_method(mrb, fixnum, "*", fix_mul, MRB_ARGS_REQ(1)); /* 15.2.8.3.3 */
1383
1304
  mrb_define_method(mrb, fixnum, "%", fix_mod, MRB_ARGS_REQ(1)); /* 15.2.8.3.5 */
1384
1305
  mrb_define_method(mrb, fixnum, "==", fix_equal, MRB_ARGS_REQ(1)); /* 15.2.8.3.7 */
@@ -1390,8 +1311,6 @@ mrb_init_numeric(mrb_state *mrb)
1390
1311
  mrb_define_method(mrb, fixnum, ">>", fix_rshift, MRB_ARGS_REQ(1)); /* 15.2.8.3.13 */
1391
1312
  mrb_define_method(mrb, fixnum, "eql?", num_eql, MRB_ARGS_REQ(1)); /* 15.2.8.3.16 */
1392
1313
  mrb_define_method(mrb, fixnum, "hash", flo_hash, MRB_ARGS_NONE()); /* 15.2.8.3.18 */
1393
- mrb_define_method(mrb, fixnum, "next", int_succ, MRB_ARGS_NONE()); /* 15.2.8.3.19 */
1394
- mrb_define_method(mrb, fixnum, "succ", fix_succ, MRB_ARGS_NONE()); /* 15.2.8.3.21 */
1395
1314
  mrb_define_method(mrb, fixnum, "to_f", fix_to_f, MRB_ARGS_NONE()); /* 15.2.8.3.23 */
1396
1315
  mrb_define_method(mrb, fixnum, "to_s", fix_to_s, MRB_ARGS_NONE()); /* 15.2.8.3.25 */
1397
1316
  mrb_define_method(mrb, fixnum, "inspect", fix_to_s, MRB_ARGS_NONE());
@@ -1414,6 +1333,7 @@ mrb_init_numeric(mrb_state *mrb)
1414
1333
  mrb_define_method(mrb, fl, "to_i", flo_truncate, MRB_ARGS_NONE()); /* 15.2.9.3.14 */
1415
1334
  mrb_define_method(mrb, fl, "to_int", flo_truncate, MRB_ARGS_NONE());
1416
1335
  mrb_define_method(mrb, fl, "truncate", flo_truncate, MRB_ARGS_NONE()); /* 15.2.9.3.15 */
1336
+ mrb_define_method(mrb, fl, "divmod", flo_divmod, MRB_ARGS_REQ(1));
1417
1337
 
1418
1338
  mrb_define_method(mrb, fl, "to_s", flo_to_s, MRB_ARGS_NONE()); /* 15.2.9.3.16(x) */
1419
1339
  mrb_define_method(mrb, fl, "inspect", flo_to_s, MRB_ARGS_NONE());
@@ -532,16 +532,14 @@ mrb_convert_to_integer(mrb_state *mrb, mrb_value val, int base)
532
532
  if (base != 0) goto arg_error;
533
533
  return val;
534
534
 
535
- case MRB_TT_STRING:
536
- string_conv:
537
- return mrb_str_to_inum(mrb, val, base, TRUE);
538
-
539
535
  default:
540
536
  break;
541
537
  }
542
538
  if (base != 0) {
543
539
  tmp = mrb_check_string_type(mrb, val);
544
- if (!mrb_nil_p(tmp)) goto string_conv;
540
+ if (!mrb_nil_p(tmp)) {
541
+ return mrb_str_to_inum(mrb, val, base, TRUE);
542
+ }
545
543
  arg_error:
546
544
  mrb_raise(mrb, E_ARGUMENT_ERROR, "base specified for non string value");
547
545
  }
@@ -37,6 +37,7 @@ static void yyerror(parser_state *p, const char *s);
37
37
  static void yywarn(parser_state *p, const char *s);
38
38
  static void yywarning(parser_state *p, const char *s);
39
39
  static void backref_error(parser_state *p, node *n);
40
+ static void tokadd(parser_state *p, int c);
40
41
 
41
42
  #ifndef isascii
42
43
  #define isascii(c) (((c) & ~0x7f) == 0)
@@ -65,23 +66,23 @@ typedef unsigned int stack_type;
65
66
  #define nsym(x) ((node*)(intptr_t)(x))
66
67
 
67
68
  static inline mrb_sym
68
- intern_gen(parser_state *p, const char *s)
69
+ intern_cstr_gen(parser_state *p, const char *s)
69
70
  {
70
71
  return mrb_intern_cstr(p->mrb, s);
71
72
  }
72
- #define intern(s) intern_gen(p,(s))
73
+ #define intern_cstr(s) intern_cstr_gen(p,(s))
73
74
 
74
75
  static inline mrb_sym
75
- intern_gen2(parser_state *p, const char *s, size_t len)
76
+ intern_gen(parser_state *p, const char *s, size_t len)
76
77
  {
77
- return mrb_intern2(p->mrb, s, len);
78
+ return mrb_intern(p->mrb, s, len);
78
79
  }
79
- #define intern2(s,len) intern_gen2(p,(s),(len))
80
+ #define intern(s,len) intern_gen(p,(s),(len))
80
81
 
81
82
  static inline mrb_sym
82
83
  intern_gen_c(parser_state *p, const char c)
83
84
  {
84
- return mrb_intern2(p->mrb, &c, 1);
85
+ return mrb_intern(p->mrb, &c, 1);
85
86
  }
86
87
  #define intern_c(c) intern_gen_c(p,(c))
87
88
 
@@ -537,7 +538,7 @@ new_strsym(parser_state *p, node* str)
537
538
  const char *s = (const char*)str->cdr->car;
538
539
  size_t len = (size_t)str->cdr->cdr;
539
540
 
540
- return mrb_intern2(p->mrb, s, len);
541
+ return mrb_intern(p->mrb, s, len);
541
542
  }
542
543
 
543
544
  // (:lvar . a)
@@ -799,14 +800,14 @@ new_symbols(parser_state *p, node *a)
799
800
  static node*
800
801
  call_uni_op(parser_state *p, node *recv, char *m)
801
802
  {
802
- return new_call(p, recv, intern(m), 0);
803
+ return new_call(p, recv, intern_cstr(m), 0);
803
804
  }
804
805
 
805
806
  // (:call a op b)
806
807
  static node*
807
808
  call_bin_op(parser_state *p, node *recv, char *m, node *arg1)
808
809
  {
809
- return new_call(p, recv, intern(m), list1(list1(arg1)));
810
+ return new_call(p, recv, intern_cstr(m), list1(list1(arg1)));
810
811
  }
811
812
 
812
813
  static void
@@ -1283,7 +1284,7 @@ stmt : keyword_alias fsym {p->lstate = EXPR_FNAME;} fsym
1283
1284
  }
1284
1285
  | primary_value '[' opt_call_args rbracket tOP_ASGN command_call
1285
1286
  {
1286
- $$ = new_op_asgn(p, new_call(p, $1, intern2("[]",2), $3), $5, $6);
1287
+ $$ = new_op_asgn(p, new_call(p, $1, intern("[]",2), $3), $5, $6);
1287
1288
  }
1288
1289
  | primary_value '.' tIDENTIFIER tOP_ASGN command_call
1289
1290
  {
@@ -1522,7 +1523,7 @@ mlhs_node : variable
1522
1523
  }
1523
1524
  | primary_value '[' opt_call_args rbracket
1524
1525
  {
1525
- $$ = new_call(p, $1, intern2("[]",2), $3);
1526
+ $$ = new_call(p, $1, intern("[]",2), $3);
1526
1527
  }
1527
1528
  | primary_value '.' tIDENTIFIER
1528
1529
  {
@@ -1561,7 +1562,7 @@ lhs : variable
1561
1562
  }
1562
1563
  | primary_value '[' opt_call_args rbracket
1563
1564
  {
1564
- $$ = new_call(p, $1, intern2("[]",2), $3);
1565
+ $$ = new_call(p, $1, intern("[]",2), $3);
1565
1566
  }
1566
1567
  | primary_value '.' tIDENTIFIER
1567
1568
  {
@@ -1647,31 +1648,31 @@ undef_list : fsym
1647
1648
  op : '|' { $$ = intern_c('|'); }
1648
1649
  | '^' { $$ = intern_c('^'); }
1649
1650
  | '&' { $$ = intern_c('&'); }
1650
- | tCMP { $$ = intern2("<=>",3); }
1651
- | tEQ { $$ = intern2("==",2); }
1652
- | tEQQ { $$ = intern2("===",3); }
1653
- | tMATCH { $$ = intern2("=~",2); }
1654
- | tNMATCH { $$ = intern2("!~",2); }
1651
+ | tCMP { $$ = intern("<=>",3); }
1652
+ | tEQ { $$ = intern("==",2); }
1653
+ | tEQQ { $$ = intern("===",3); }
1654
+ | tMATCH { $$ = intern("=~",2); }
1655
+ | tNMATCH { $$ = intern("!~",2); }
1655
1656
  | '>' { $$ = intern_c('>'); }
1656
- | tGEQ { $$ = intern2(">=",2); }
1657
+ | tGEQ { $$ = intern(">=",2); }
1657
1658
  | '<' { $$ = intern_c('<'); }
1658
- | tLEQ { $$ = intern2("<=",2); }
1659
- | tNEQ { $$ = intern2("!=",2); }
1660
- | tLSHFT { $$ = intern2("<<",2); }
1661
- | tRSHFT { $$ = intern2(">>",2); }
1659
+ | tLEQ { $$ = intern("<=",2); }
1660
+ | tNEQ { $$ = intern("!=",2); }
1661
+ | tLSHFT { $$ = intern("<<",2); }
1662
+ | tRSHFT { $$ = intern(">>",2); }
1662
1663
  | '+' { $$ = intern_c('+'); }
1663
1664
  | '-' { $$ = intern_c('-'); }
1664
1665
  | '*' { $$ = intern_c('*'); }
1665
1666
  | tSTAR { $$ = intern_c('*'); }
1666
1667
  | '/' { $$ = intern_c('/'); }
1667
1668
  | '%' { $$ = intern_c('%'); }
1668
- | tPOW { $$ = intern2("**",2); }
1669
+ | tPOW { $$ = intern("**",2); }
1669
1670
  | '!' { $$ = intern_c('!'); }
1670
1671
  | '~' { $$ = intern_c('~'); }
1671
- | tUPLUS { $$ = intern2("+@",2); }
1672
- | tUMINUS { $$ = intern2("-@",2); }
1673
- | tAREF { $$ = intern2("[]",2); }
1674
- | tASET { $$ = intern2("[]=",3); }
1672
+ | tUPLUS { $$ = intern("+@",2); }
1673
+ | tUMINUS { $$ = intern("-@",2); }
1674
+ | tAREF { $$ = intern("[]",2); }
1675
+ | tASET { $$ = intern("[]=",3); }
1675
1676
  | '`' { $$ = intern_c('`'); }
1676
1677
  ;
1677
1678
 
@@ -1707,7 +1708,7 @@ arg : lhs '=' arg
1707
1708
  }
1708
1709
  | primary_value '[' opt_call_args rbracket tOP_ASGN arg
1709
1710
  {
1710
- $$ = new_op_asgn(p, new_call(p, $1, intern2("[]",2), $3), $5, $6);
1711
+ $$ = new_op_asgn(p, new_call(p, $1, intern("[]",2), $3), $5, $6);
1711
1712
  }
1712
1713
  | primary_value '.' tIDENTIFIER tOP_ASGN arg
1713
1714
  {
@@ -2519,11 +2520,11 @@ method_call : operation paren_args
2519
2520
  }
2520
2521
  | primary_value '.' paren_args
2521
2522
  {
2522
- $$ = new_call(p, $1, intern2("call",4), $3);
2523
+ $$ = new_call(p, $1, intern("call",4), $3);
2523
2524
  }
2524
2525
  | primary_value tCOLON2 paren_args
2525
2526
  {
2526
- $$ = new_call(p, $1, intern2("call",4), $3);
2527
+ $$ = new_call(p, $1, intern("call",4), $3);
2527
2528
  }
2528
2529
  | keyword_super paren_args
2529
2530
  {
@@ -2535,7 +2536,7 @@ method_call : operation paren_args
2535
2536
  }
2536
2537
  | primary_value '[' opt_call_args rbracket
2537
2538
  {
2538
- $$ = new_call(p, $1, intern2("[]",2), $3);
2539
+ $$ = new_call(p, $1, intern("[]",2), $3);
2539
2540
  }
2540
2541
  ;
2541
2542
 
@@ -3315,14 +3316,14 @@ nextc(parser_state *p)
3315
3316
  else {
3316
3317
  #ifdef ENABLE_STDIO
3317
3318
  if (p->f) {
3318
- if (feof(p->f)) goto end_retry;
3319
+ if (feof(p->f)) goto eof;
3319
3320
  c = fgetc(p->f);
3320
- if (c == EOF) goto end_retry;
3321
+ if (c == EOF) goto eof;
3321
3322
  }
3322
3323
  else
3323
3324
  #endif
3324
3325
  if (!p->s || p->s >= p->send) {
3325
- goto end_retry;
3326
+ goto eof;
3326
3327
  }
3327
3328
  else {
3328
3329
  c = (unsigned char)*p->s++;
@@ -3331,14 +3332,14 @@ nextc(parser_state *p)
3331
3332
  p->column++;
3332
3333
  return c;
3333
3334
 
3334
- end_retry:
3335
+ eof:
3335
3336
  if (!p->cxt) return -1;
3336
3337
  else {
3337
3338
  mrbc_context *cxt = p->cxt;
3338
3339
 
3339
3340
  if (cxt->partial_hook(p) < 0) return -1;
3340
- p->cxt = NULL;
3341
- c = nextc(p);
3341
+ c = '\n';
3342
+ p->lineno = 1;
3342
3343
  p->cxt = cxt;
3343
3344
  return c;
3344
3345
  }
@@ -3866,6 +3867,9 @@ heredoc_identifier(parser_state *p)
3866
3867
  return 0;
3867
3868
  }
3868
3869
  } else {
3870
+ if (c == -1) {
3871
+ return 0; /* missing here document identifier */
3872
+ }
3869
3873
  if (! identchar(c)) {
3870
3874
  pushback(p, c);
3871
3875
  if (indent) pushback(p, '-');
@@ -3929,7 +3933,10 @@ parser_yylex(parser_state *p)
3929
3933
  case '\0': /* NUL */
3930
3934
  case '\004': /* ^D */
3931
3935
  case '\032': /* ^Z */
3936
+ return 0;
3932
3937
  case -1: /* end of script. */
3938
+ if (p->heredocs_from_nextline)
3939
+ goto maybe_heredoc;
3933
3940
  return 0;
3934
3941
 
3935
3942
  /* white spaces */
@@ -3942,6 +3949,7 @@ parser_yylex(parser_state *p)
3942
3949
  skip(p, '\n');
3943
3950
  /* fall through */
3944
3951
  case '\n':
3952
+ maybe_heredoc:
3945
3953
  heredoc_treat_nextline(p);
3946
3954
  switch (p->lstate) {
3947
3955
  case EXPR_BEG:
@@ -3988,7 +3996,7 @@ parser_yylex(parser_state *p)
3988
3996
  case '*':
3989
3997
  if ((c = nextc(p)) == '*') {
3990
3998
  if ((c = nextc(p)) == '=') {
3991
- yylval.id = intern2("**",2);
3999
+ yylval.id = intern("**",2);
3992
4000
  p->lstate = EXPR_BEG;
3993
4001
  return tOP_ASGN;
3994
4002
  }
@@ -4097,7 +4105,7 @@ parser_yylex(parser_state *p)
4097
4105
  }
4098
4106
  if (c == '<') {
4099
4107
  if ((c = nextc(p)) == '=') {
4100
- yylval.id = intern2("<<",2);
4108
+ yylval.id = intern("<<",2);
4101
4109
  p->lstate = EXPR_BEG;
4102
4110
  return tOP_ASGN;
4103
4111
  }
@@ -4118,7 +4126,7 @@ parser_yylex(parser_state *p)
4118
4126
  }
4119
4127
  if (c == '>') {
4120
4128
  if ((c = nextc(p)) == '=') {
4121
- yylval.id = intern2(">>",2);
4129
+ yylval.id = intern(">>",2);
4122
4130
  p->lstate = EXPR_BEG;
4123
4131
  return tOP_ASGN;
4124
4132
  }
@@ -4232,7 +4240,7 @@ parser_yylex(parser_state *p)
4232
4240
  if ((c = nextc(p)) == '&') {
4233
4241
  p->lstate = EXPR_BEG;
4234
4242
  if ((c = nextc(p)) == '=') {
4235
- yylval.id = intern2("&&",2);
4243
+ yylval.id = intern("&&",2);
4236
4244
  p->lstate = EXPR_BEG;
4237
4245
  return tOP_ASGN;
4238
4246
  }
@@ -4266,7 +4274,7 @@ parser_yylex(parser_state *p)
4266
4274
  if ((c = nextc(p)) == '|') {
4267
4275
  p->lstate = EXPR_BEG;
4268
4276
  if ((c = nextc(p)) == '=') {
4269
- yylval.id = intern2("||",2);
4277
+ yylval.id = intern("||",2);
4270
4278
  p->lstate = EXPR_BEG;
4271
4279
  return tOP_ASGN;
4272
4280
  }
@@ -4870,7 +4878,7 @@ parser_yylex(parser_state *p)
4870
4878
  tokadd(p, '$');
4871
4879
  tokadd(p, c);
4872
4880
  tokfix(p);
4873
- yylval.id = intern(tok(p));
4881
+ yylval.id = intern_cstr(tok(p));
4874
4882
  return tGVAR;
4875
4883
 
4876
4884
  case '-':
@@ -4880,7 +4888,7 @@ parser_yylex(parser_state *p)
4880
4888
  pushback(p, c);
4881
4889
  gvar:
4882
4890
  tokfix(p);
4883
- yylval.id = intern(tok(p));
4891
+ yylval.id = intern_cstr(tok(p));
4884
4892
  return tGVAR;
4885
4893
 
4886
4894
  case '&': /* $&: last match */
@@ -5032,7 +5040,7 @@ parser_yylex(parser_state *p)
5032
5040
  p->lstate = EXPR_BEG;
5033
5041
  nextc(p);
5034
5042
  tokfix(p);
5035
- yylval.id = intern(tok(p));
5043
+ yylval.id = intern_cstr(tok(p));
5036
5044
  return tLABEL;
5037
5045
  }
5038
5046
  }
@@ -5045,7 +5053,7 @@ parser_yylex(parser_state *p)
5045
5053
  enum mrb_lex_state_enum state = p->lstate;
5046
5054
  p->lstate = kw->state;
5047
5055
  if (state == EXPR_FNAME) {
5048
- yylval.id = intern(kw->name);
5056
+ yylval.id = intern_cstr(kw->name);
5049
5057
  return kw->id[0];
5050
5058
  }
5051
5059
  if (p->lstate == EXPR_BEG) {
@@ -5090,7 +5098,7 @@ parser_yylex(parser_state *p)
5090
5098
  }
5091
5099
  }
5092
5100
  {
5093
- mrb_sym ident = intern(tok(p));
5101
+ mrb_sym ident = intern_cstr(tok(p));
5094
5102
 
5095
5103
  yylval.id = ident;
5096
5104
  #if 0
@@ -5154,7 +5162,7 @@ parser_update_cxt(parser_state *p, mrbc_context *cxt)
5154
5162
  }
5155
5163
  }
5156
5164
 
5157
- void codedump_all(mrb_state*, int);
5165
+ void codedump_all(mrb_state*, struct RProc*);
5158
5166
  void parser_dump(mrb_state *mrb, node *tree, int offset);
5159
5167
 
5160
5168
  void
@@ -5345,7 +5353,6 @@ load_exec(mrb_state *mrb, parser_state *p, mrbc_context *c)
5345
5353
  {
5346
5354
  struct RClass *target = mrb->object_class;
5347
5355
  struct RProc *proc;
5348
- int n;
5349
5356
  mrb_value v;
5350
5357
 
5351
5358
  if (!p) {
@@ -5354,6 +5361,7 @@ load_exec(mrb_state *mrb, parser_state *p, mrbc_context *c)
5354
5361
  if (!p->tree || p->nerr) {
5355
5362
  if (p->capture_errors) {
5356
5363
  char buf[256];
5364
+ int n;
5357
5365
 
5358
5366
  n = snprintf(buf, sizeof(buf), "line %d: %s\n",
5359
5367
  p->error_buffer[0].lineno, p->error_buffer[0].message);
@@ -5368,26 +5376,25 @@ load_exec(mrb_state *mrb, parser_state *p, mrbc_context *c)
5368
5376
  return mrb_undef_value();
5369
5377
  }
5370
5378
  }
5371
- n = mrb_generate_code(mrb, p);
5379
+ proc = mrb_generate_code(mrb, p);
5372
5380
  mrb_parser_free(p);
5373
- if (n < 0) {
5381
+ if (proc == NULL) {
5374
5382
  static const char msg[] = "codegen error";
5375
5383
  mrb->exc = mrb_obj_ptr(mrb_exc_new(mrb, E_SCRIPT_ERROR, msg, sizeof(msg) - 1));
5376
- return mrb_nil_value();
5384
+ return mrb_undef_value();
5377
5385
  }
5378
5386
  if (c) {
5379
- if (c->dump_result) codedump_all(mrb, n);
5380
- if (c->no_exec) return mrb_fixnum_value(n);
5387
+ if (c->dump_result) codedump_all(mrb, proc);
5388
+ if (c->no_exec) return mrb_obj_value(proc);
5381
5389
  if (c->target_class) {
5382
5390
  target = c->target_class;
5383
5391
  }
5384
5392
  }
5385
- proc = mrb_proc_new(mrb, mrb->irep[n]);
5386
5393
  proc->target_class = target;
5387
5394
  if (mrb->c->ci) {
5388
5395
  mrb->c->ci->target_class = target;
5389
5396
  }
5390
- v = mrb_run(mrb, proc, mrb_top_self(mrb));
5397
+ v = mrb_context_run(mrb, proc, mrb_top_self(mrb), 0);
5391
5398
  if (mrb->exc) return mrb_nil_value();
5392
5399
  return v;
5393
5400
  }
@@ -22,6 +22,7 @@ mrb_proc_new(mrb_state *mrb, mrb_irep *irep)
22
22
  p->target_class = (mrb->c->ci) ? mrb->c->ci->target_class : 0;
23
23
  p->body.irep = irep;
24
24
  p->env = 0;
25
+ mrb_irep_incref(mrb, irep);
25
26
 
26
27
  return p;
27
28
  }
@@ -80,6 +81,9 @@ mrb_proc_copy(struct RProc *a, struct RProc *b)
80
81
  {
81
82
  a->flags = b->flags;
82
83
  a->body = b->body;
84
+ if (!MRB_PROC_CFUNC_P(a)) {
85
+ a->body.irep->refcnt++;
86
+ };
83
87
  a->target_class = b->target_class;
84
88
  a->env = b->env;
85
89
  }
@@ -181,15 +185,14 @@ void
181
185
  mrb_init_proc(mrb_state *mrb)
182
186
  {
183
187
  struct RProc *m;
184
- mrb_irep *call_irep = (mrb_irep *)mrb_alloca(mrb, sizeof(mrb_irep));
188
+ mrb_irep *call_irep = (mrb_irep *)mrb_malloc(mrb, sizeof(mrb_irep));
185
189
  static const mrb_irep mrb_irep_zero = { 0 };
186
190
 
187
- if ( call_iseq == NULL || call_irep == NULL )
191
+ if (call_irep == NULL)
188
192
  return;
189
193
 
190
194
  *call_irep = mrb_irep_zero;
191
195
  call_irep->flags = MRB_ISEQ_NO_FREE;
192
- call_irep->idx = -1;
193
196
  call_irep->iseq = call_iseq;
194
197
  call_irep->ilen = 1;
195
198
 
@@ -201,8 +204,8 @@ mrb_init_proc(mrb_state *mrb)
201
204
  mrb_define_method(mrb, mrb->proc_class, "arity", mrb_proc_arity, MRB_ARGS_NONE());
202
205
 
203
206
  m = mrb_proc_new(mrb, call_irep);
204
- mrb_define_method_raw(mrb, mrb->proc_class, mrb_intern2(mrb, "call", 4), m);
205
- mrb_define_method_raw(mrb, mrb->proc_class, mrb_intern2(mrb, "[]", 2), m);
207
+ mrb_define_method_raw(mrb, mrb->proc_class, mrb_intern_lit(mrb, "call"), m);
208
+ mrb_define_method_raw(mrb, mrb->proc_class, mrb_intern_lit(mrb, "[]"), m);
206
209
 
207
210
  mrb_define_class_method(mrb, mrb->kernel_module, "lambda", proc_lambda, MRB_ARGS_NONE()); /* 15.3.1.2.6 */
208
211
  mrb_define_method(mrb, mrb->kernel_module, "lambda", proc_lambda, MRB_ARGS_NONE()); /* 15.3.1.3.27 */
@@ -8,6 +8,5 @@
8
8
  #define RE_H
9
9
 
10
10
  #define REGEXP_CLASS "Regexp"
11
- #define REGEXP_CLASS_CSTR_LEN 6
12
11
 
13
12
  #endif