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
@@ -11,6 +11,7 @@
11
11
  #include "mruby/irep.h"
12
12
  #include "mruby/variable.h"
13
13
  #include "mruby/debug.h"
14
+ #include "mruby/string.h"
14
15
 
15
16
  void mrb_init_heap(mrb_state*);
16
17
  void mrb_init_core(mrb_state*);
@@ -41,6 +42,11 @@ mrb_open_allocf(mrb_allocf f, void *ud)
41
42
  mrb->allocf = f;
42
43
  mrb->current_white_part = MRB_GC_WHITE_A;
43
44
 
45
+ #ifndef MRB_GC_FIXED_ARENA
46
+ mrb->arena = (struct RBasic**)mrb_malloc(mrb, sizeof(struct RBasic*)*MRB_GC_ARENA_SIZE);
47
+ mrb->arena_capa = MRB_GC_ARENA_SIZE;
48
+ #endif
49
+
44
50
  mrb_init_heap(mrb);
45
51
  mrb->c = (struct mrb_context*)mrb_malloc(mrb, sizeof(struct mrb_context));
46
52
  *mrb->c = mrb_context_zero;
@@ -107,18 +113,72 @@ void mrb_free_symtbl(mrb_state *mrb);
107
113
  void mrb_free_heap(mrb_state *mrb);
108
114
 
109
115
  void
110
- mrb_irep_free(mrb_state *mrb, struct mrb_irep *irep)
116
+ mrb_irep_incref(mrb_state *mrb, mrb_irep *irep)
111
117
  {
118
+ irep->refcnt++;
119
+ }
120
+
121
+ void
122
+ mrb_irep_decref(mrb_state *mrb, mrb_irep *irep)
123
+ {
124
+ irep->refcnt--;
125
+ if (irep->refcnt == 0) {
126
+ mrb_irep_free(mrb, irep);
127
+ }
128
+ }
129
+
130
+ void
131
+ mrb_irep_free(mrb_state *mrb, mrb_irep *irep)
132
+ {
133
+ size_t i;
134
+
112
135
  if (!(irep->flags & MRB_ISEQ_NO_FREE))
113
136
  mrb_free(mrb, irep->iseq);
137
+ for (i=0; i<irep->plen; i++) {
138
+ if (mrb_type(irep->pool[i]) == MRB_TT_STRING) {
139
+ mrb_free(mrb, mrb_str_ptr(irep->pool[i])->ptr);
140
+ mrb_free(mrb, mrb_obj_ptr(irep->pool[i]));
141
+ }
142
+ #ifdef MRB_WORD_BOXING
143
+ else if (mrb_type(irep->pool[i]) == MRB_TT_FLOAT) {
144
+ mrb_free(mrb, mrb_obj_ptr(irep->pool[i]));
145
+ }
146
+ #endif
147
+ }
114
148
  mrb_free(mrb, irep->pool);
115
149
  mrb_free(mrb, irep->syms);
150
+ for (i=0; i<irep->rlen; i++) {
151
+ mrb_irep_decref(mrb, irep->reps[i]);
152
+ }
153
+ mrb_free(mrb, irep->reps);
116
154
  mrb_free(mrb, (void *)irep->filename);
117
155
  mrb_free(mrb, irep->lines);
118
156
  mrb_debug_info_free(mrb, irep->debug_info);
119
157
  mrb_free(mrb, irep);
120
158
  }
121
159
 
160
+ mrb_value
161
+ mrb_str_pool(mrb_state *mrb, mrb_value str)
162
+ {
163
+ struct RString *s = mrb_str_ptr(str);
164
+ struct RString *ns;
165
+ mrb_int len;
166
+
167
+ ns = (struct RString *)mrb_malloc(mrb, sizeof(struct RString));
168
+ ns->tt = MRB_TT_STRING;
169
+ ns->c = mrb->string_class;
170
+
171
+ len = s->len;
172
+ ns->len = len;
173
+ ns->ptr = (char *)mrb_malloc(mrb, (size_t)len+1);
174
+ if (s->ptr) {
175
+ memcpy(ns->ptr, s->ptr, len);
176
+ }
177
+ ns->ptr[len] = '\0';
178
+
179
+ return mrb_obj_value(ns);
180
+ }
181
+
122
182
  void
123
183
  mrb_free_context(mrb_state *mrb, struct mrb_context *c)
124
184
  {
@@ -133,20 +193,17 @@ mrb_free_context(mrb_state *mrb, struct mrb_context *c)
133
193
  void
134
194
  mrb_close(mrb_state *mrb)
135
195
  {
136
- size_t i;
137
-
138
196
  mrb_final_core(mrb);
139
197
 
140
198
  /* free */
141
199
  mrb_gc_free_gv(mrb);
142
- for (i=0; i<mrb->irep_len; i++) {
143
- mrb_irep_free(mrb, mrb->irep[i]);
144
- }
145
- mrb_free(mrb, mrb->irep);
146
200
  mrb_free_context(mrb, mrb->root_c);
147
201
  mrb_free_symtbl(mrb);
148
202
  mrb_free_heap(mrb);
149
203
  mrb_alloca_free(mrb);
204
+ #ifndef MRB_GC_FIXED_ARENA
205
+ mrb_free(mrb, mrb->arena);
206
+ #endif
150
207
  mrb_free(mrb, mrb);
151
208
  }
152
209
 
@@ -160,28 +217,9 @@ mrb_add_irep(mrb_state *mrb)
160
217
  static const mrb_irep mrb_irep_zero = { 0 };
161
218
  mrb_irep *irep;
162
219
 
163
- if (!mrb->irep) {
164
- size_t max = MRB_IREP_ARRAY_INIT_SIZE;
165
-
166
- if (mrb->irep_len > max) max = mrb->irep_len+1;
167
- mrb->irep = (mrb_irep **)mrb_calloc(mrb, max, sizeof(mrb_irep*));
168
- mrb->irep_capa = max;
169
- }
170
- else if (mrb->irep_capa <= mrb->irep_len) {
171
- size_t i;
172
- size_t old_capa = mrb->irep_capa;
173
- while (mrb->irep_capa <= mrb->irep_len) {
174
- mrb->irep_capa *= 2;
175
- }
176
- mrb->irep = (mrb_irep **)mrb_realloc(mrb, mrb->irep, sizeof(mrb_irep*)*mrb->irep_capa);
177
- for (i = old_capa; i < mrb->irep_capa; i++) {
178
- mrb->irep[i] = NULL;
179
- }
180
- }
181
220
  irep = (mrb_irep *)mrb_malloc(mrb, sizeof(mrb_irep));
182
221
  *irep = mrb_irep_zero;
183
- mrb->irep[mrb->irep_len] = irep;
184
- irep->idx = mrb->irep_len++;
222
+ irep->refcnt = 1;
185
223
 
186
224
  return irep;
187
225
  }
@@ -331,34 +331,6 @@ str_make_shared(mrb_state *mrb, struct RString *s)
331
331
  }
332
332
  }
333
333
 
334
- /*
335
- * call-seq: (Caution! string literal)
336
- * String.new(str="") => new_str
337
- *
338
- * Returns a new string object containing a copy of <i>str</i>.
339
- */
340
-
341
- mrb_value
342
- mrb_str_literal(mrb_state *mrb, mrb_value str)
343
- {
344
- struct RString *s, *orig;
345
- mrb_shared_string *shared;
346
-
347
- s = mrb_obj_alloc_string(mrb);
348
- orig = mrb_str_ptr(str);
349
- if (!(orig->flags & MRB_STR_SHARED)) {
350
- str_make_shared(mrb, orig);
351
- }
352
- shared = orig->aux.shared;
353
- shared->refcnt++;
354
- s->ptr = shared->ptr;
355
- s->len = shared->len;
356
- s->aux.shared = shared;
357
- s->flags |= MRB_STR_SHARED;
358
-
359
- return mrb_obj_value(s);
360
- }
361
-
362
334
  /*
363
335
  * call-seq:
364
336
  * char* str = String("abcd"), len=strlen("abcd")
@@ -574,10 +546,10 @@ mrb_str_cmp_m(mrb_state *mrb, mrb_value str1)
574
546
 
575
547
  mrb_get_args(mrb, "o", &str2);
576
548
  if (!mrb_string_p(str2)) {
577
- if (!mrb_respond_to(mrb, str2, mrb_intern2(mrb, "to_s", 4))) {
549
+ if (!mrb_respond_to(mrb, str2, mrb_intern_lit(mrb, "to_s"))) {
578
550
  return mrb_nil_value();
579
551
  }
580
- else if (!mrb_respond_to(mrb, str2, mrb_intern2(mrb, "<=>", 3))) {
552
+ else if (!mrb_respond_to(mrb, str2, mrb_intern_lit(mrb, "<=>"))) {
581
553
  return mrb_nil_value();
582
554
  }
583
555
  else {
@@ -613,7 +585,7 @@ mrb_str_equal(mrb_state *mrb, mrb_value str1, mrb_value str2)
613
585
  if (mrb_obj_equal(mrb, str1, str2)) return TRUE;
614
586
  if (!mrb_string_p(str2)) {
615
587
  if (mrb_nil_p(str2)) return FALSE;
616
- if (!mrb_respond_to(mrb, str2, mrb_intern2(mrb, "to_str", 6))) {
588
+ if (!mrb_respond_to(mrb, str2, mrb_intern_lit(mrb, "to_str"))) {
617
589
  return FALSE;
618
590
  }
619
591
  str2 = mrb_funcall(mrb, str2, "to_str", 0);
@@ -35,7 +35,7 @@ KHASH_DECLARE(n2s, symbol_name, mrb_sym, 1)
35
35
  KHASH_DEFINE (n2s, symbol_name, mrb_sym, 1, sym_hash_func, sym_hash_equal)
36
36
  /* ------------------------------------------------------ */
37
37
  mrb_sym
38
- mrb_intern2(mrb_state *mrb, const char *name, size_t len)
38
+ mrb_intern(mrb_state *mrb, const char *name, size_t len)
39
39
  {
40
40
  khash_t(n2s) *h = mrb->name2sym;
41
41
  symbol_name sname;
@@ -63,13 +63,13 @@ mrb_intern2(mrb_state *mrb, const char *name, size_t len)
63
63
  mrb_sym
64
64
  mrb_intern_cstr(mrb_state *mrb, const char *name)
65
65
  {
66
- return mrb_intern2(mrb, name, strlen(name));
66
+ return mrb_intern(mrb, name, strlen(name));
67
67
  }
68
68
 
69
69
  mrb_sym
70
70
  mrb_intern_str(mrb_state *mrb, mrb_value str)
71
71
  {
72
- return mrb_intern2(mrb, RSTRING_PTR(str), RSTRING_LEN(str));
72
+ return mrb_intern(mrb, RSTRING_PTR(str), RSTRING_LEN(str));
73
73
  }
74
74
 
75
75
  mrb_value
@@ -563,6 +563,7 @@ inspect_i(mrb_state *mrb, mrb_sym sym, mrb_value v, void *p)
563
563
  mrb_value str = *(mrb_value*)p;
564
564
  const char *s;
565
565
  size_t len;
566
+ mrb_value ins;
566
567
 
567
568
  /* need not to show internal data */
568
569
  if (RSTRING_PTR(str)[0] == '-') { /* first element */
@@ -575,7 +576,13 @@ inspect_i(mrb_state *mrb, mrb_sym sym, mrb_value v, void *p)
575
576
  s = mrb_sym2name_len(mrb, sym, &len);
576
577
  mrb_str_cat(mrb, str, s, len);
577
578
  mrb_str_cat(mrb, str, "=", 1);
578
- mrb_str_append(mrb, str, mrb_inspect(mrb, v));
579
+ if (mrb_type(v) == MRB_TT_OBJECT) {
580
+ ins = mrb_any_to_s(mrb, v);
581
+ }
582
+ else {
583
+ ins = mrb_inspect(mrb, v);
584
+ }
585
+ mrb_str_append(mrb, str, ins);
579
586
  return 0;
580
587
  }
581
588
 
@@ -884,7 +891,7 @@ L_RETRY:
884
891
  goto L_RETRY;
885
892
  }
886
893
  name = mrb_symbol_value(sym);
887
- return mrb_funcall_argv(mrb, mrb_obj_value(base), mrb_intern2(mrb, "const_missing", 13), 1, &name);
894
+ return mrb_funcall_argv(mrb, mrb_obj_value(base), mrb_intern_lit(mrb, "const_missing"), 1, &name);
888
895
  }
889
896
 
890
897
  mrb_value
@@ -963,7 +970,7 @@ const_i(mrb_state *mrb, mrb_sym sym, mrb_value v, void *p)
963
970
 
964
971
  ary = *(mrb_value*)p;
965
972
  s = mrb_sym2name_len(mrb, sym, &len);
966
- if (len > 1 && ISUPPER(s[0])) {
973
+ if (len >= 1 && ISUPPER(s[0])) {
967
974
  mrb_ary_push(mrb, ary, mrb_symbol_value(sym));
968
975
  }
969
976
  return 0;
@@ -1064,7 +1071,7 @@ mrb_f_global_variables(mrb_state *mrb, mrb_value self)
1064
1071
  buf[2] = 0;
1065
1072
  for (i = 1; i <= 9; ++i) {
1066
1073
  buf[1] = (char)(i + '0');
1067
- mrb_ary_push(mrb, ary, mrb_symbol_value(mrb_intern2(mrb, buf, 2)));
1074
+ mrb_ary_push(mrb, ary, mrb_symbol_value(mrb_intern_lit(mrb, buf)));
1068
1075
  }
1069
1076
  return ary;
1070
1077
  }
@@ -1127,7 +1134,7 @@ mrb_class_sym(mrb_state *mrb, struct RClass *c, struct RClass *outer)
1127
1134
  {
1128
1135
  mrb_value name;
1129
1136
 
1130
- name = mrb_obj_iv_get(mrb, (struct RObject*)c, mrb_intern2(mrb, "__classid__", 11));
1137
+ name = mrb_obj_iv_get(mrb, (struct RObject*)c, mrb_intern_lit(mrb, "__classid__"));
1131
1138
  if (mrb_nil_p(name)) {
1132
1139
 
1133
1140
  if (!outer) return 0;