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
@@ -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;