webruby 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/webruby/rake/mruby.rake +1 -0
- data/modules/emscripten/AUTHORS +7 -0
- data/modules/emscripten/LICENSE +26 -0
- data/modules/emscripten/emcc +58 -20
- data/modules/emscripten/emlink.py +2 -265
- data/modules/emscripten/emscripten.py +38 -18
- data/modules/emscripten/scons-tools/emscripten.py +11 -6
- data/modules/emscripten/scons-tools/llvm.py +4 -3
- data/modules/emscripten/src/analyzer.js +32 -13
- data/modules/emscripten/src/embind/embind.js +13 -13
- data/modules/emscripten/src/embind/emval.js +8 -7
- data/modules/emscripten/src/intertyper.js +10 -0
- data/modules/emscripten/src/jsifier.js +28 -6
- data/modules/emscripten/src/library.js +2949 -1322
- data/modules/emscripten/src/library_browser.js +27 -23
- data/modules/emscripten/src/library_egl.js +7 -2
- data/modules/emscripten/src/library_gl.js +15 -2
- data/modules/emscripten/src/library_glut.js +1 -1
- data/modules/emscripten/src/library_jansson.js +1 -1
- data/modules/emscripten/src/library_openal.js +464 -132
- data/modules/emscripten/src/library_path.js +134 -0
- data/modules/emscripten/src/library_sdl.js +222 -50
- data/modules/emscripten/src/modules.js +22 -5
- data/modules/emscripten/src/parseTools.js +13 -2
- data/modules/emscripten/src/postamble.js +60 -34
- data/modules/emscripten/src/preamble.js +67 -18
- data/modules/emscripten/src/relooper/Relooper.cpp +1 -1
- data/modules/emscripten/src/runtime.js +12 -2
- data/modules/emscripten/src/settings.js +869 -826
- data/modules/emscripten/src/shell.js +63 -51
- data/modules/emscripten/src/utility.js +6 -0
- data/modules/emscripten/system/include/bsd/sys/mman.h +1 -1
- data/modules/emscripten/system/include/emscripten/bind.h +28 -28
- data/modules/emscripten/system/include/libc/math.h +8 -0
- data/modules/emscripten/system/include/libc/sys/signal.h +3 -1
- data/modules/emscripten/system/include/libc/sys/stat.h +2 -1
- data/modules/emscripten/system/include/libc/sys/types.h +4 -0
- data/modules/emscripten/system/include/libcxx/CREDITS.TXT +24 -0
- data/modules/emscripten/system/include/libcxx/__bit_reference +27 -8
- data/modules/emscripten/system/include/libcxx/__config +62 -15
- data/modules/emscripten/system/include/libcxx/__debug +5 -1
- data/modules/emscripten/system/include/libcxx/__functional_03 +24 -24
- data/modules/emscripten/system/include/libcxx/__functional_base +22 -4
- data/modules/emscripten/system/include/libcxx/__hash_table +566 -54
- data/modules/emscripten/system/include/libcxx/__locale +11 -3
- data/modules/emscripten/system/include/libcxx/__split_buffer +6 -6
- data/modules/emscripten/system/include/libcxx/__std_stream +58 -30
- data/modules/emscripten/system/include/libcxx/__tree +58 -51
- data/modules/emscripten/system/include/libcxx/__tuple +9 -9
- data/modules/emscripten/system/include/libcxx/algorithm +223 -13
- data/modules/emscripten/system/include/libcxx/array +18 -17
- data/modules/emscripten/system/include/libcxx/atomic +15 -5
- data/modules/emscripten/system/include/libcxx/cctype +2 -2
- data/modules/emscripten/system/include/libcxx/chrono +131 -36
- data/modules/emscripten/system/include/libcxx/cmath +41 -36
- data/modules/emscripten/system/include/libcxx/complex +49 -49
- data/modules/emscripten/system/include/libcxx/cstdio +2 -2
- data/modules/emscripten/system/include/libcxx/cstdlib +5 -5
- data/modules/emscripten/system/include/libcxx/cstring +2 -2
- data/modules/emscripten/system/include/libcxx/cwchar +22 -13
- data/modules/emscripten/system/include/libcxx/deque +27 -14
- data/modules/emscripten/system/include/libcxx/forward_list +36 -35
- data/modules/emscripten/system/include/libcxx/fstream +16 -0
- data/modules/emscripten/system/include/libcxx/functional +348 -23
- data/modules/emscripten/system/include/libcxx/future +66 -0
- data/modules/emscripten/system/include/libcxx/ios +27 -0
- data/modules/emscripten/system/include/libcxx/istream +2 -4
- data/modules/emscripten/system/include/libcxx/iterator +17 -9
- data/modules/emscripten/system/include/libcxx/limits +2 -2
- data/modules/emscripten/system/include/libcxx/list +165 -105
- data/modules/emscripten/system/include/libcxx/locale +154 -43
- data/modules/emscripten/system/include/libcxx/map +165 -224
- data/modules/emscripten/system/include/libcxx/memory +113 -54
- data/modules/emscripten/system/include/libcxx/random +2 -29
- data/modules/emscripten/system/include/libcxx/readme.txt +1 -1
- data/modules/emscripten/system/include/libcxx/regex +60 -15
- data/modules/emscripten/system/include/libcxx/sstream +124 -40
- data/modules/emscripten/system/include/libcxx/string +345 -182
- data/modules/emscripten/system/include/libcxx/support/win32/limits_win32.h +3 -3
- data/modules/emscripten/system/include/libcxx/support/win32/locale_win32.h +15 -2
- data/modules/emscripten/system/include/libcxx/support/win32/math_win32.h +3 -3
- data/modules/emscripten/system/include/libcxx/support/win32/support.h +10 -11
- data/modules/emscripten/system/include/libcxx/thread +2 -2
- data/modules/emscripten/system/include/libcxx/tuple +134 -65
- data/modules/emscripten/system/include/libcxx/type_traits +232 -24
- data/modules/emscripten/system/include/libcxx/unordered_map +314 -161
- data/modules/emscripten/system/include/libcxx/unordered_set +160 -2
- data/modules/emscripten/system/include/libcxx/utility +225 -40
- data/modules/emscripten/system/include/libcxx/vector +52 -57
- data/modules/emscripten/system/include/net/if.h +20 -1
- data/modules/emscripten/system/include/net/netinet/in.h +69 -5
- data/modules/emscripten/system/include/netdb.h +36 -0
- data/modules/emscripten/system/include/sys/ioctl.h +55 -3
- data/modules/emscripten/system/include/sys/select.h +2 -0
- data/modules/emscripten/system/include/sys/sendfile.h +16 -0
- data/modules/emscripten/system/include/sys/socket.h +181 -35
- data/modules/emscripten/system/lib/dlmalloc.c +10 -12
- data/modules/emscripten/system/lib/libc/musl/src/stdlib/ecvt.c +19 -0
- data/modules/emscripten/system/lib/libc/musl/src/stdlib/fcvt.c +25 -0
- data/modules/emscripten/system/lib/libc/musl/src/stdlib/gcvt.c +8 -0
- data/modules/emscripten/system/lib/libcextra.symbols +3 -0
- data/modules/emscripten/system/lib/libcxx/CREDITS.TXT +24 -0
- data/modules/emscripten/system/lib/libcxx/debug.cpp +11 -9
- data/modules/emscripten/system/lib/libcxx/exception.cpp +9 -0
- data/modules/emscripten/system/lib/libcxx/hash.cpp +6 -0
- data/modules/emscripten/system/lib/libcxx/iostream.cpp +4 -4
- data/modules/emscripten/system/lib/libcxx/locale.cpp +91 -42
- data/modules/emscripten/system/lib/libcxx/readme.txt +1 -1
- data/modules/emscripten/system/lib/libcxx/stdexcept.cpp +1 -1
- data/modules/emscripten/system/lib/libcxx/string.cpp +332 -491
- data/modules/emscripten/system/lib/libcxx/support/win32/locale_win32.cpp +4 -2
- data/modules/emscripten/system/lib/libcxx/support/win32/support.cpp +140 -41
- data/modules/emscripten/system/lib/libcxx/symbols +9 -256
- data/modules/emscripten/system/lib/libcxx/system_error.cpp +3 -0
- data/modules/emscripten/system/lib/libcxx/thread.cpp +16 -3
- data/modules/emscripten/system/lib/libcxx/typeinfo.cpp +12 -2
- data/modules/emscripten/third_party/stb_image.c +4673 -0
- data/modules/emscripten/tools/asm_module.py +273 -0
- data/modules/emscripten/tools/exec_llvm.py +2 -2
- data/modules/emscripten/tools/file_packager.py +36 -16
- data/modules/emscripten/tools/find_bigfuncs.py +9 -9
- data/modules/emscripten/tools/js-optimizer.js +485 -131
- data/modules/emscripten/tools/js_optimizer.py +22 -15
- data/modules/emscripten/tools/merge_asm.py +26 -0
- data/modules/emscripten/tools/nativize_llvm.py +2 -2
- data/modules/emscripten/tools/settings_template_readonly.py +1 -1
- data/modules/emscripten/tools/shared.py +63 -20
- data/modules/emscripten/tools/split_asm.py +30 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-outline1-output.js +686 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-outline1.js +263 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-outline2-output.js +747 -0
- data/modules/emscripten/tools/{test-js-optimizer-asm-outline.js → test-js-optimizer-asm-outline2.js} +1 -1
- data/modules/emscripten/tools/test-js-optimizer-asm-outline3-output.js +28 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-outline3.js +30 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-pre-output.js +4 -4
- data/modules/mruby/AUTHORS +1 -0
- data/modules/mruby/README.md +4 -2
- data/modules/mruby/build_config.rb +6 -6
- data/modules/mruby/doc/mrbgems/README.md +4 -4
- data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/mrbgem.rake +1 -1
- data/modules/mruby/examples/mrbgems/c_extension_example/mrbgem.rake +1 -1
- data/modules/mruby/examples/mrbgems/ruby_extension_example/mrbgem.rake +1 -1
- data/modules/mruby/include/mrbconf.h +3 -0
- data/modules/mruby/include/mruby/array.h +2 -2
- data/modules/mruby/include/mruby/class.h +4 -4
- data/modules/mruby/include/mruby/compile.h +1 -0
- data/modules/mruby/include/mruby/data.h +1 -1
- data/modules/mruby/include/mruby/hash.h +2 -2
- data/modules/mruby/include/mruby/irep.h +3 -2
- data/modules/mruby/include/mruby/proc.h +1 -1
- data/modules/mruby/include/mruby/range.h +1 -1
- data/modules/mruby/include/mruby/string.h +2 -2
- data/modules/mruby/include/mruby/value.h +43 -26
- data/modules/mruby/include/mruby.h +10 -2
- data/modules/mruby/minirake +2 -2
- data/modules/mruby/mrbgems/mruby-array-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +4 -1
- data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +32 -0
- data/modules/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +13 -5
- data/modules/mruby/mrbgems/mruby-enum-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-enum-ext/test/enum.rb +10 -11
- data/modules/mruby/mrbgems/mruby-eval/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-exit/mrbgem.rake +4 -0
- data/modules/mruby/mrbgems/mruby-exit/src/mruby-exit.c +24 -0
- data/modules/mruby/mrbgems/mruby-fiber/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-fiber/src/fiber.c +4 -2
- data/modules/mruby/mrbgems/mruby-hash-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-hash-ext/test/hash.rb +5 -7
- data/modules/mruby/mrbgems/mruby-math/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-numeric-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-numeric-ext/test/numeric.rb +2 -2
- data/modules/mruby/mrbgems/mruby-object-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-object-ext/src/object.c +3 -3
- data/modules/mruby/mrbgems/mruby-object-ext/test/nil.rb +3 -3
- data/modules/mruby/mrbgems/mruby-object-ext/test/object.rb +1 -1
- data/modules/mruby/mrbgems/mruby-objectspace/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-objectspace/test/objectspace.rb +36 -37
- data/modules/mruby/mrbgems/mruby-print/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-proc-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-proc-ext/test/proc.rb +8 -8
- data/modules/mruby/mrbgems/mruby-random/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-range-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-range-ext/test/range.rb +6 -6
- data/modules/mruby/mrbgems/mruby-sprintf/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-string-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-string-ext/test/string.rb +6 -6
- data/modules/mruby/mrbgems/mruby-struct/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-symbol-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +2 -2
- data/modules/mruby/mrbgems/mruby-time/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-time/src/time.c +2 -8
- data/modules/mruby/mrbgems/mruby-toplevel-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-toplevel-ext/test/toplevel.rb +10 -10
- data/modules/mruby/mrblib/class.rb +15 -9
- data/modules/mruby/mrblib/string.rb +12 -0
- data/modules/mruby/src/array.c +4 -3
- data/modules/mruby/src/class.c +13 -8
- data/modules/mruby/src/codegen.c +9 -8
- data/modules/mruby/src/error.c +7 -5
- data/modules/mruby/src/error.h +1 -0
- data/modules/mruby/src/etc.c +1 -1
- data/modules/mruby/src/gc.c +163 -128
- data/modules/mruby/src/kernel.c +43 -15
- data/modules/mruby/src/numeric.c +9 -7
- data/modules/mruby/src/object.c +1 -1
- data/modules/mruby/src/parse.y +37 -19
- data/modules/mruby/src/range.c +10 -24
- data/modules/mruby/src/state.c +2 -6
- data/modules/mruby/src/string.c +0 -9
- data/modules/mruby/src/variable.c +2 -2
- data/modules/mruby/src/vm.c +12 -6
- data/modules/mruby/tasks/mrbgem_spec.rake +7 -0
- data/modules/mruby/tasks/mrbgems.rake +2 -1
- data/modules/mruby/tasks/mrbgems_test.rake +1 -1
- data/modules/mruby/tasks/mruby_build.rake +4 -3
- data/modules/mruby/tasks/mruby_build_commands.rake +6 -1
- data/modules/mruby/tasks/mruby_build_gem.rake +2 -2
- data/modules/mruby/tasks/toolchains/androideabi.rake +2 -0
- data/modules/mruby/test/assert.rb +2 -2
- data/modules/mruby/test/t/argumenterror.rb +3 -3
- data/modules/mruby/test/t/array.rb +55 -55
- data/modules/mruby/test/t/basicobject.rb +1 -1
- data/modules/mruby/test/t/bs_block.rb +12 -12
- data/modules/mruby/test/t/class.rb +21 -21
- data/modules/mruby/test/t/enumerable.rb +18 -18
- data/modules/mruby/test/t/exception.rb +20 -20
- data/modules/mruby/test/t/false.rb +3 -3
- data/modules/mruby/test/t/float.rb +40 -40
- data/modules/mruby/test/t/gc.rb +10 -10
- data/modules/mruby/test/t/hash.rb +41 -41
- data/modules/mruby/test/t/indexerror.rb +2 -2
- data/modules/mruby/test/t/integer.rb +41 -41
- data/modules/mruby/test/t/kernel.rb +33 -33
- data/modules/mruby/test/t/literals.rb +82 -82
- data/modules/mruby/test/t/localjumperror.rb +1 -1
- data/modules/mruby/test/t/module.rb +170 -31
- data/modules/mruby/test/t/nameerror.rb +5 -5
- data/modules/mruby/test/t/nil.rb +2 -2
- data/modules/mruby/test/t/nomethoderror.rb +1 -1
- data/modules/mruby/test/t/numeric.rb +5 -5
- data/modules/mruby/test/t/object.rb +2 -2
- data/modules/mruby/test/t/proc.rb +8 -8
- data/modules/mruby/test/t/range.rb +9 -9
- data/modules/mruby/test/t/rangeerror.rb +2 -2
- data/modules/mruby/test/t/runtimeerror.rb +1 -1
- data/modules/mruby/test/t/standarderror.rb +2 -2
- data/modules/mruby/test/t/string.rb +100 -100
- data/modules/mruby/test/t/symbol.rb +5 -5
- data/modules/mruby/test/t/syntax.rb +15 -6
- data/modules/mruby/test/t/true.rb +3 -3
- data/modules/mruby/test/t/typeerror.rb +2 -2
- data/modules/mruby/tools/mrbc/mrbc.c +10 -4
- data/modules/mruby/travis_config.rb +1 -0
- data/scripts/gen_gems_config.rb +5 -1
- metadata +19 -4
- data/modules/emscripten/tools/test-js-optimizer-asm-outline-output.js +0 -570
data/modules/mruby/src/class.c
CHANGED
@@ -311,7 +311,6 @@ mrb_define_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_func_t f
|
|
311
311
|
int ai = mrb_gc_arena_save(mrb);
|
312
312
|
|
313
313
|
p = mrb_proc_new_cfunc(mrb, func);
|
314
|
-
p->target_class = c;
|
315
314
|
mrb_define_method_raw(mrb, c, mid, p);
|
316
315
|
mrb_gc_arena_restore(mrb, ai);
|
317
316
|
}
|
@@ -495,7 +494,7 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
|
|
495
494
|
if (i < argc) {
|
496
495
|
ss = to_str(mrb, *sp++);
|
497
496
|
s = mrb_str_ptr(ss);
|
498
|
-
if (strlen(s->ptr) < s->len) {
|
497
|
+
if ((mrb_int)strlen(s->ptr) < s->len) {
|
499
498
|
mrb_raise(mrb, E_ARGUMENT_ERROR, "String contains NUL");
|
500
499
|
}
|
501
500
|
*ps = s->ptr;
|
@@ -1437,7 +1436,8 @@ undef_method(mrb_state *mrb, struct RClass *c, mrb_sym a)
|
|
1437
1436
|
|
1438
1437
|
if (!mrb_obj_respond_to(c, a)) {
|
1439
1438
|
mrb_name_error(mrb, a, "undefined method '%S' for class '%S'", mrb_sym2str(mrb, a), mrb_obj_value(c));
|
1440
|
-
}
|
1439
|
+
}
|
1440
|
+
else {
|
1441
1441
|
MRB_SET_VALUE(m, MRB_TT_PROC, value.p, 0);
|
1442
1442
|
mrb_define_method_vm(mrb, c, a, m);
|
1443
1443
|
}
|
@@ -1484,8 +1484,9 @@ mod_define_method(mrb_state *mrb, mrb_value self)
|
|
1484
1484
|
}
|
1485
1485
|
p = (struct RProc*)mrb_obj_alloc(mrb, MRB_TT_PROC, mrb->proc_class);
|
1486
1486
|
mrb_proc_copy(p, mrb_proc_ptr(blk));
|
1487
|
+
p->flags |= MRB_PROC_STRICT;
|
1487
1488
|
mrb_define_method_raw(mrb, c, mid, p);
|
1488
|
-
return
|
1489
|
+
return mrb_symbol_value(mid);
|
1489
1490
|
}
|
1490
1491
|
|
1491
1492
|
static void
|
@@ -1519,7 +1520,8 @@ get_sym_or_str_arg(mrb_state *mrb)
|
|
1519
1520
|
|
1520
1521
|
if (mrb_symbol_p(sym_or_str) || mrb_string_p(sym_or_str)) {
|
1521
1522
|
return sym_or_str;
|
1522
|
-
}
|
1523
|
+
}
|
1524
|
+
else {
|
1523
1525
|
mrb_value obj = mrb_funcall(mrb, sym_or_str, "inspect", 0);
|
1524
1526
|
mrb_raisef(mrb, E_TYPE_ERROR, "%S is not a symbol", obj);
|
1525
1527
|
return mrb_nil_value();
|
@@ -1551,7 +1553,8 @@ mrb_mod_cvar_defined(mrb_state *mrb, mrb_value mod)
|
|
1551
1553
|
if (mrb_symbol_p(id)) {
|
1552
1554
|
check_cv_name_sym(mrb, mrb_symbol(id));
|
1553
1555
|
defined_p = mrb_cv_defined(mrb, mod, mrb_symbol(id));
|
1554
|
-
}
|
1556
|
+
}
|
1557
|
+
else {
|
1555
1558
|
mrb_value sym;
|
1556
1559
|
check_cv_name_str(mrb, id);
|
1557
1560
|
sym = mrb_check_intern_str(mrb, id);
|
@@ -1703,7 +1706,8 @@ mrb_mod_method_defined(mrb_state *mrb, mrb_value mod)
|
|
1703
1706
|
id = get_sym_or_str_arg(mrb);
|
1704
1707
|
if (mrb_symbol_p(id)) {
|
1705
1708
|
method_defined_p = mrb_obj_respond_to(mrb_class_ptr(mod), mrb_symbol(id));
|
1706
|
-
}
|
1709
|
+
}
|
1710
|
+
else {
|
1707
1711
|
mrb_value sym = mrb_check_intern_str(mrb, id);
|
1708
1712
|
if (mrb_nil_p(sym)) {
|
1709
1713
|
method_defined_p = FALSE;
|
@@ -1787,7 +1791,8 @@ mrb_mod_const_defined(mrb_state *mrb, mrb_value mod)
|
|
1787
1791
|
if (mrb_type(id) == MRB_TT_SYMBOL) {
|
1788
1792
|
check_const_name_sym(mrb, mrb_symbol(id));
|
1789
1793
|
const_defined_p = mrb_const_defined(mrb, mod, mrb_symbol(id));
|
1790
|
-
}
|
1794
|
+
}
|
1795
|
+
else {
|
1791
1796
|
mrb_value sym;
|
1792
1797
|
check_const_name_str(mrb, id);
|
1793
1798
|
sym = mrb_check_intern_str(mrb, id);
|
data/modules/mruby/src/codegen.c
CHANGED
@@ -1551,7 +1551,6 @@ codegen(codegen_scope *s, node *tree, int val)
|
|
1551
1551
|
// variable rhs
|
1552
1552
|
codegen(s, t, VAL);
|
1553
1553
|
gen_vmassignment(s, tree->car, rhs, val);
|
1554
|
-
if (!val) pop();
|
1555
1554
|
}
|
1556
1555
|
}
|
1557
1556
|
break;
|
@@ -2318,7 +2317,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
|
2318
2317
|
pop();
|
2319
2318
|
genop(s, MKOP_AB(OP_METHOD, cursp(), sym));
|
2320
2319
|
if (val) {
|
2321
|
-
genop(s,
|
2320
|
+
genop(s, MKOP_ABx(OP_LOADSYM, cursp(), sym));
|
2322
2321
|
push();
|
2323
2322
|
}
|
2324
2323
|
}
|
@@ -2338,7 +2337,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
|
2338
2337
|
pop();
|
2339
2338
|
genop(s, MKOP_AB(OP_METHOD, cursp(), sym));
|
2340
2339
|
if (val) {
|
2341
|
-
genop(s,
|
2340
|
+
genop(s, MKOP_ABx(OP_LOADSYM, cursp(), sym));
|
2342
2341
|
push();
|
2343
2342
|
}
|
2344
2343
|
}
|
@@ -2842,13 +2841,15 @@ codegen_start(mrb_state *mrb, parser_state *p)
|
|
2842
2841
|
if (p->filename) {
|
2843
2842
|
scope->filename = p->filename;
|
2844
2843
|
}
|
2845
|
-
if (setjmp(scope->jmp)
|
2844
|
+
if (setjmp(scope->jmp) == 0) {
|
2845
|
+
// prepare irep
|
2846
|
+
codegen(scope, p->tree, NOVAL);
|
2847
|
+
mrb_pool_close(scope->mpool);
|
2848
|
+
return 0;
|
2849
|
+
}
|
2850
|
+
else {
|
2846
2851
|
return -1;
|
2847
2852
|
}
|
2848
|
-
// prepare irep
|
2849
|
-
codegen(scope, p->tree, NOVAL);
|
2850
|
-
mrb_pool_close(scope->mpool);
|
2851
|
-
return 0;
|
2852
2853
|
}
|
2853
2854
|
|
2854
2855
|
int
|
data/modules/mruby/src/error.c
CHANGED
@@ -5,7 +5,6 @@
|
|
5
5
|
*/
|
6
6
|
|
7
7
|
#include <errno.h>
|
8
|
-
#include <setjmp.h>
|
9
8
|
#include <stdarg.h>
|
10
9
|
#include <stdlib.h>
|
11
10
|
#include <string.h>
|
@@ -147,7 +146,8 @@ exc_inspect(mrb_state *mrb, mrb_value exc)
|
|
147
146
|
if (!mrb_nil_p(mesg) && RSTRING_LEN(mesg) > 0) {
|
148
147
|
mrb_str_cat(mrb, str, ": ", 2);
|
149
148
|
mrb_str_append(mrb, str, mesg);
|
150
|
-
}
|
149
|
+
}
|
150
|
+
else {
|
151
151
|
mrb_str_cat(mrb, str, ": ", 2);
|
152
152
|
mrb_str_cat_cstr(mrb, str, mrb_obj_classname(mrb, exc));
|
153
153
|
}
|
@@ -218,7 +218,7 @@ mrb_exc_raise(mrb_state *mrb, mrb_value exc)
|
|
218
218
|
mrb_p(mrb, exc);
|
219
219
|
abort();
|
220
220
|
}
|
221
|
-
|
221
|
+
mrb_longjmp(mrb);
|
222
222
|
}
|
223
223
|
|
224
224
|
void
|
@@ -425,10 +425,12 @@ mrb_sys_fail(mrb_state *mrb, const char *mesg)
|
|
425
425
|
sce = mrb_class_get(mrb, "SystemCallError");
|
426
426
|
if (mesg != NULL) {
|
427
427
|
mrb_funcall(mrb, mrb_obj_value(sce), "_sys_fail", 2, mrb_fixnum_value(no), mrb_str_new_cstr(mrb, mesg));
|
428
|
-
}
|
428
|
+
}
|
429
|
+
else {
|
429
430
|
mrb_funcall(mrb, mrb_obj_value(sce), "_sys_fail", 1, mrb_fixnum_value(no));
|
430
431
|
}
|
431
|
-
}
|
432
|
+
}
|
433
|
+
else {
|
432
434
|
mrb_raise(mrb, E_RUNTIME_ERROR, mesg);
|
433
435
|
}
|
434
436
|
}
|
data/modules/mruby/src/error.h
CHANGED
@@ -14,5 +14,6 @@ mrb_value make_exception(mrb_state *mrb, int argc, mrb_value *argv, int isstr);
|
|
14
14
|
mrb_value mrb_make_exception(mrb_state *mrb, int argc, mrb_value *argv);
|
15
15
|
mrb_value mrb_format(mrb_state *mrb, const char *format, ...);
|
16
16
|
void mrb_exc_print(mrb_state *mrb, struct RObject *exc);
|
17
|
+
void mrb_longjmp(mrb_state *mrb);
|
17
18
|
|
18
19
|
#endif /* MRUBY_ERROR_H */
|