webruby 0.2.2 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
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