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.
- checksums.yaml +4 -4
- data/lib/webruby/config.rb +4 -9
- data/lib/webruby/rake/files.rake +2 -2
- data/modules/emscripten/AUTHORS +9 -1
- data/modules/emscripten/CONTRIBUTING.markdown +5 -0
- data/modules/emscripten/ChangeLog +435 -0
- data/modules/emscripten/cmake/Modules/FindOpenAL.cmake +26 -0
- data/modules/emscripten/cmake/Platform/Emscripten.cmake +9 -2
- data/modules/emscripten/em++ +0 -2
- data/modules/emscripten/emcc +92 -32
- data/modules/emscripten/emlink.py +16 -13
- data/modules/emscripten/emmake +1 -1
- data/modules/emscripten/emrun +918 -0
- data/modules/emscripten/emrun.bat +2 -0
- data/modules/emscripten/emscripten.py +545 -20
- data/modules/emscripten/src/analyzer.js +6 -1
- data/modules/emscripten/src/compiler.js +25 -16
- data/modules/emscripten/src/emrun_postjs.js +20 -0
- data/modules/emscripten/{tests → src}/hello_world.js +0 -0
- data/modules/emscripten/src/intertyper.js +45 -16
- data/modules/emscripten/src/jsifier.js +78 -48
- data/modules/emscripten/src/library.js +381 -96
- data/modules/emscripten/src/library_browser.js +50 -53
- data/modules/emscripten/src/library_egl.js +66 -24
- data/modules/emscripten/src/library_fs.js +122 -90
- data/modules/emscripten/src/library_gl.js +739 -353
- data/modules/emscripten/src/library_glfw.js +9 -3
- data/modules/emscripten/src/library_glut.js +10 -5
- data/modules/emscripten/src/library_idbfs.js +14 -14
- data/modules/emscripten/src/library_memfs.js +65 -41
- data/modules/emscripten/src/library_nodefs.js +61 -9
- data/modules/emscripten/src/library_openal.js +4 -4
- data/modules/emscripten/src/library_path.js +9 -13
- data/modules/emscripten/src/library_sdl.js +301 -64
- data/modules/emscripten/src/library_sockfs.js +7 -5
- data/modules/emscripten/src/modules.js +62 -22
- data/modules/emscripten/src/parseTools.js +135 -102
- data/modules/emscripten/src/postamble.js +3 -4
- data/modules/emscripten/src/preamble.js +49 -29
- data/modules/emscripten/src/proxyClient.js +1 -1
- data/modules/emscripten/src/proxyWorker.js +10 -10
- data/modules/emscripten/src/relooper/Relooper.cpp +15 -4
- data/modules/emscripten/src/runtime.js +32 -8
- data/modules/emscripten/src/settings.js +25 -8
- data/modules/emscripten/src/shell.html +6 -3
- data/modules/emscripten/src/shell.js +13 -11
- data/modules/emscripten/src/simd.js +602 -432
- data/modules/emscripten/src/struct_info.json +22 -2
- data/modules/emscripten/src/utility.js +32 -17
- data/modules/emscripten/system/include/SDL/SDL_events.h +1 -0
- data/modules/emscripten/system/include/compat/ctype.h +17 -0
- data/modules/emscripten/system/include/compat/wchar.h +23 -0
- data/modules/emscripten/system/include/compat/wctype.h +23 -0
- data/modules/emscripten/system/include/emscripten/emmintrin.h +87 -0
- data/modules/emscripten/system/include/emscripten/emscripten.h +30 -4
- data/modules/emscripten/system/include/emscripten/vector.h +29 -1
- data/modules/emscripten/system/include/emscripten/xmmintrin.h +131 -0
- data/modules/emscripten/system/include/libcxx/CREDITS.TXT +9 -1
- data/modules/emscripten/system/include/libcxx/__bit_reference +8 -8
- data/modules/emscripten/system/include/libcxx/__config +95 -17
- data/modules/emscripten/system/include/libcxx/__debug +25 -4
- data/modules/emscripten/system/include/libcxx/__functional_03 +7 -7
- data/modules/emscripten/system/include/libcxx/__functional_base +169 -9
- data/modules/emscripten/system/include/libcxx/__functional_base_03 +1 -1
- data/modules/emscripten/system/include/libcxx/__hash_table +25 -25
- data/modules/emscripten/system/include/libcxx/__locale +21 -19
- data/modules/emscripten/system/include/libcxx/__mutex_base +2 -33
- data/modules/emscripten/system/include/libcxx/__split_buffer +9 -9
- data/modules/emscripten/system/include/libcxx/__std_stream +14 -0
- data/modules/emscripten/system/include/libcxx/__tree +35 -26
- data/modules/emscripten/system/include/libcxx/__tuple +15 -15
- data/modules/emscripten/system/include/libcxx/__tuple_03 +2 -2
- data/modules/emscripten/system/include/libcxx/__undef_min_max +8 -0
- data/modules/emscripten/system/include/libcxx/algorithm +121 -110
- data/modules/emscripten/system/include/libcxx/array +15 -15
- data/modules/emscripten/system/include/libcxx/bitset +4 -4
- data/modules/emscripten/system/include/libcxx/chrono +51 -17
- data/modules/emscripten/system/include/libcxx/cmath +25 -23
- data/modules/emscripten/system/include/libcxx/codecvt +21 -18
- data/modules/emscripten/system/include/libcxx/complex +48 -7
- data/modules/emscripten/system/include/libcxx/cstddef +1 -1
- data/modules/emscripten/system/include/libcxx/cstdio +8 -1
- data/modules/emscripten/system/include/libcxx/cstdlib +1 -1
- data/modules/emscripten/system/include/libcxx/cwchar +1 -1
- data/modules/emscripten/system/include/libcxx/deque +26 -12
- data/modules/emscripten/system/include/libcxx/dynarray +311 -0
- data/modules/emscripten/system/include/libcxx/exception +4 -4
- data/modules/emscripten/system/include/libcxx/ext/__hash +3 -3
- data/modules/emscripten/system/include/libcxx/ext/hash_map +19 -15
- data/modules/emscripten/system/include/libcxx/ext/hash_set +7 -3
- data/modules/emscripten/system/include/libcxx/forward_list +33 -7
- data/modules/emscripten/system/include/libcxx/fstream +4 -4
- data/modules/emscripten/system/include/libcxx/functional +200 -170
- data/modules/emscripten/system/include/libcxx/future +83 -39
- data/modules/emscripten/system/include/libcxx/initializer_list +24 -11
- data/modules/emscripten/system/include/libcxx/iomanip +147 -0
- data/modules/emscripten/system/include/libcxx/ios +24 -16
- data/modules/emscripten/system/include/libcxx/iosfwd +19 -19
- data/modules/emscripten/system/include/libcxx/istream +13 -8
- data/modules/emscripten/system/include/libcxx/iterator +108 -417
- data/modules/emscripten/system/include/libcxx/limits +8 -4
- data/modules/emscripten/system/include/libcxx/list +28 -8
- data/modules/emscripten/system/include/libcxx/locale +153 -390
- data/modules/emscripten/system/include/libcxx/map +280 -100
- data/modules/emscripten/system/include/libcxx/memory +49 -97
- data/modules/emscripten/system/include/libcxx/mutex +2 -2
- data/modules/emscripten/system/include/libcxx/new +43 -14
- data/modules/emscripten/system/include/libcxx/numeric +2 -2
- data/modules/emscripten/system/include/libcxx/optional +697 -0
- data/modules/emscripten/system/include/libcxx/ostream +17 -8
- data/modules/emscripten/system/include/libcxx/queue +5 -5
- data/modules/emscripten/system/include/libcxx/random +53 -51
- data/modules/emscripten/system/include/libcxx/ratio +11 -11
- data/modules/emscripten/system/include/libcxx/readme.txt +1 -1
- data/modules/emscripten/system/include/libcxx/regex +23 -20
- data/modules/emscripten/system/include/libcxx/scoped_allocator +1 -1
- data/modules/emscripten/system/include/libcxx/set +166 -2
- data/modules/emscripten/system/include/libcxx/shared_mutex +419 -0
- data/modules/emscripten/system/include/libcxx/sstream +4 -4
- data/modules/emscripten/system/include/libcxx/stack +3 -3
- data/modules/emscripten/system/include/libcxx/streambuf +5 -5
- data/modules/emscripten/system/include/libcxx/string +372 -324
- data/modules/emscripten/system/include/libcxx/support/ibm/limits.h +99 -0
- data/modules/emscripten/system/include/libcxx/support/ibm/support.h +54 -0
- data/modules/emscripten/system/include/libcxx/support/ibm/xlocale.h +326 -0
- data/modules/emscripten/system/include/libcxx/support/win32/limits_win32.h +6 -6
- data/modules/emscripten/system/include/libcxx/support/win32/locale_win32.h +15 -15
- data/modules/emscripten/system/include/libcxx/support/win32/math_win32.h +2 -0
- data/modules/emscripten/system/include/libcxx/support/win32/support.h +6 -1
- data/modules/emscripten/system/include/libcxx/system_error +14 -8
- data/modules/emscripten/system/include/libcxx/thread +7 -8
- data/modules/emscripten/system/include/libcxx/tuple +29 -88
- data/modules/emscripten/system/include/libcxx/type_traits +253 -209
- data/modules/emscripten/system/include/libcxx/typeindex +3 -3
- data/modules/emscripten/system/include/libcxx/unordered_map +162 -101
- data/modules/emscripten/system/include/libcxx/unordered_set +79 -2
- data/modules/emscripten/system/include/libcxx/utility +20 -20
- data/modules/emscripten/system/include/libcxx/valarray +23 -23
- data/modules/emscripten/system/include/libcxx/vector +114 -91
- data/modules/emscripten/system/lib/libc/musl/src/regex/regcomp.c +3352 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/regerror.c +35 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/regexec.c +1011 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/tre-mem.c +158 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/tre.h +231 -0
- data/modules/emscripten/system/lib/libcextra.symbols +7 -0
- data/modules/emscripten/system/lib/libcxx/CREDITS.TXT +9 -1
- data/modules/emscripten/system/lib/libcxx/algorithm.cpp +1 -0
- data/modules/emscripten/system/lib/libcxx/debug.cpp +66 -42
- data/modules/emscripten/system/lib/libcxx/exception.cpp +88 -16
- data/modules/emscripten/system/lib/libcxx/future.cpp +6 -0
- data/modules/emscripten/system/lib/libcxx/ios.cpp +7 -2
- data/modules/emscripten/system/lib/libcxx/iostream.cpp +8 -8
- data/modules/emscripten/system/lib/libcxx/locale.cpp +38 -11
- data/modules/emscripten/system/lib/libcxx/mutex.cpp +3 -0
- data/modules/emscripten/system/lib/libcxx/new.cpp +44 -10
- data/modules/emscripten/system/lib/libcxx/optional.cpp +25 -0
- data/modules/emscripten/system/lib/libcxx/random.cpp +26 -0
- data/modules/emscripten/system/lib/libcxx/readme.txt +1 -1
- data/modules/emscripten/system/lib/libcxx/shared_mutex.cpp +101 -0
- data/modules/emscripten/system/lib/libcxx/stdexcept.cpp +11 -7
- data/modules/emscripten/system/lib/libcxx/string.cpp +3 -1
- data/modules/emscripten/system/lib/libcxx/strstream.cpp +7 -7
- data/modules/emscripten/system/lib/libcxx/support/win32/locale_win32.cpp +12 -13
- data/modules/emscripten/system/lib/libcxx/support/win32/support.cpp +33 -36
- data/modules/emscripten/system/lib/libcxx/symbols +187 -168
- data/modules/emscripten/system/lib/libcxx/system_error.cpp +1 -0
- data/modules/emscripten/system/lib/libcxx/thread.cpp +7 -3
- data/modules/emscripten/system/lib/libcxx/typeinfo.cpp +9 -6
- data/modules/emscripten/system/lib/libcxx/valarray.cpp +2 -0
- data/modules/emscripten/third_party/lzma.js/doit.bat +4 -0
- data/modules/emscripten/third_party/lzma.js/doit.sh +9 -2
- data/modules/emscripten/tools/cache.py +5 -7
- data/modules/emscripten/tools/cache.pyc +0 -0
- data/modules/emscripten/tools/eliminator/asm-eliminator-test-output.js +7 -0
- data/modules/emscripten/tools/eliminator/asm-eliminator-test.js +9 -1
- data/modules/emscripten/tools/eliminator/eliminator-test-output.js +3 -0
- data/modules/emscripten/tools/eliminator/eliminator-test.js +9 -1
- data/modules/emscripten/tools/file_packager.py +93 -50
- data/modules/emscripten/tools/js-optimizer.js +98 -48
- data/modules/emscripten/tools/js_optimizer.py +4 -4
- data/modules/emscripten/tools/js_optimizer.pyc +0 -0
- data/modules/emscripten/tools/jsrun.py +1 -1
- data/modules/emscripten/tools/jsrun.pyc +0 -0
- data/modules/emscripten/tools/response_file.py +6 -0
- data/modules/emscripten/tools/response_file.pyc +0 -0
- data/modules/emscripten/tools/settings_template_readonly.py +2 -0
- data/modules/emscripten/tools/shared.py +88 -34
- data/modules/emscripten/tools/shared.pyc +0 -0
- data/modules/emscripten/tools/split.py +21 -13
- data/modules/mruby/build_config.rb +7 -1
- data/modules/mruby/doc/compile/README.md +5 -9
- data/modules/mruby/include/mrbconf.h +5 -2
- data/modules/mruby/include/mruby/array.h +1 -0
- data/modules/mruby/include/mruby/compile.h +2 -4
- data/modules/mruby/include/mruby/dump.h +7 -16
- data/modules/mruby/include/mruby/hash.h +1 -1
- data/modules/mruby/include/mruby/irep.h +14 -2
- data/modules/mruby/include/mruby/khash.h +8 -7
- data/modules/mruby/include/mruby/string.h +1 -0
- data/modules/mruby/include/mruby/value.h +5 -2
- data/modules/mruby/include/mruby.h +12 -13
- data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +16 -6
- data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +18 -30
- data/modules/mruby/mrbgems/mruby-fiber/src/fiber.c +21 -0
- data/modules/mruby/mrbgems/mruby-math/src/math.c +1 -1
- data/modules/mruby/mrbgems/mruby-random/src/random.c +144 -47
- data/modules/mruby/mrbgems/mruby-random/test/random.rb +44 -0
- data/modules/mruby/mrbgems/mruby-struct/src/struct.c +5 -5
- data/modules/mruby/mrblib/numeric.rb +99 -33
- data/modules/mruby/src/array.c +11 -4
- data/modules/mruby/src/backtrace.c +2 -2
- data/modules/mruby/src/class.c +49 -30
- data/modules/mruby/src/codegen.c +131 -79
- data/modules/mruby/src/debug.c +1 -1
- data/modules/mruby/src/dump.c +213 -163
- data/modules/mruby/src/error.c +17 -17
- data/modules/mruby/src/error.h +1 -1
- data/modules/mruby/src/etc.c +10 -0
- data/modules/mruby/src/gc.c +35 -17
- data/modules/mruby/src/hash.c +5 -5
- data/modules/mruby/src/kernel.c +36 -14
- data/modules/mruby/src/load.c +238 -296
- data/modules/mruby/src/numeric.c +18 -98
- data/modules/mruby/src/object.c +3 -5
- data/modules/mruby/src/parse.y +63 -56
- data/modules/mruby/src/proc.c +8 -5
- data/modules/mruby/src/re.h +0 -1
- data/modules/mruby/src/state.c +65 -27
- data/modules/mruby/src/string.c +3 -31
- data/modules/mruby/src/symbol.c +3 -3
- data/modules/mruby/src/variable.c +12 -5
- data/modules/mruby/src/vm.c +90 -72
- data/modules/mruby/tasks/mruby_build.rake +10 -1
- data/modules/mruby/tasks/toolchains/gcc.rake +12 -2
- data/modules/mruby/tasks/toolchains/{vs2012.rake → visualcpp.rake} +1 -1
- data/modules/mruby/test/driver.c +3 -3
- data/modules/mruby/test/t/array.rb +5 -5
- data/modules/mruby/test/t/class.rb +14 -1
- data/modules/mruby/test/t/kernel.rb +4 -0
- data/modules/mruby/test/t/module.rb +4 -4
- data/modules/mruby/test/t/nameerror.rb +1 -1
- data/modules/mruby/tools/mrbc/mrbc.c +23 -17
- data/modules/mruby/travis_config.rb +10 -1
- metadata +28 -5
- data/modules/mruby/tasks/toolchains/vs2010.rake +0 -3
data/modules/mruby/src/state.c
CHANGED
@@ -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
|
-
|
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
|
-
|
184
|
-
irep->idx = mrb->irep_len++;
|
222
|
+
irep->refcnt = 1;
|
185
223
|
|
186
224
|
return irep;
|
187
225
|
}
|
data/modules/mruby/src/string.c
CHANGED
@@ -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,
|
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,
|
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,
|
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);
|
data/modules/mruby/src/symbol.c
CHANGED
@@ -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
|
-
|
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
|
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
|
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
|
-
|
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),
|
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
|
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(
|
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,
|
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;
|