| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2017-03-19 | Should not check/call `to_str` for immediate objects; ref #3515 | Yukihiro "Matz" Matsumoto | |
| 2017-03-19 | `super class error` formats the superclass by `inspect`; rerf #3515 | Yukihiro "Matz" Matsumoto | |
| 2017-03-19 | Use MRB_PRId instead of "%d"; fix #3515 | Yukihiro "Matz" Matsumoto | |
| 2017-03-19 | Fixed OP_RESCUE code generation bug; fix #3519 | Yukihiro "Matz" Matsumoto | |
| 916b8e let code executed with mrb->exc set, and may cause a crash like #3519. Instead modified OP_RESCUE again. To retrieve the exception object, we use `OP_RESCUE R(A), 0, 0` (old behavior). To compare the exception object and the class, we use `OP_RESCUE R(A), R(B), 1`. The reason we use OP_RESCUE for two instruction switched by operand C is to save the instruction space. As a result, the following code: ```ruby begin raise "a" rescue TypeError p 1 rescue RuntimeError p 2 end ``` will be compiled as: ``` irep 0x55cd1f565cb0 nregs=4 nlocals=1 pools=1 syms=4 reps=0 file: - 2 000 OP_ONERR 005 2 001 OP_LOADSELF R1 2 002 OP_STRING R2 L(0) ; "a" 2 003 OP_SEND R1 :raise 1 2 004 OP_JMP 023 2 005 OP_RESCUE R1 3 006 OP_GETCONST R2 :TypeError 3 007 OP_RESCUE R1 R2 cont 3 008 OP_JMPIF R2 010 3 009 OP_JMP 014 4 010 OP_LOADSELF R1 4 011 OP_LOADI R2 1 4 012 OP_SEND R1 :p 1 4 013 OP_JMP 024 5 014 OP_GETCONST R2 :RuntimeError 5 015 OP_RESCUE R1 R2 cont 5 016 OP_JMPIF R2 018 5 017 OP_JMP 022 6 018 OP_LOADSELF R1 6 019 OP_LOADI R2 2 6 020 OP_SEND R1 :p 1 6 021 OP_JMP 024 6 022 OP_RAISE R1 6 023 OP_POPERR 1 6 024 OP_STOP ``` | |||
| 2017-03-19 | OP_RESCUE refactored; ref #3519 | Yukihiro "Matz" Matsumoto | |
| 2017-03-19 | Remove cname duplication from exc_inspect(). | Yukihiro "Matz" Matsumoto | |
| 2017-03-19 | Avoid possible infinite recursion in mrb_print_error(); ref #3517 | Yukihiro "Matz" Matsumoto | |
| 2017-03-19 | Check call depth when mrb_yield_class() is called; ref #3521 | Yukihiro "Matz" Matsumoto | |
| 2017-03-19 | Update stack only when callinfo is popped; fix #3521 | Yukihiro "Matz" Matsumoto | |
| 2017-03-19 | Need not to call mrb_obj_as_string() is sep is nil. | Yukihiro "Matz" Matsumoto | |
| 2017-03-18 | Merge pull request #3526 from ksss/sprintf | Yukihiro "Matz" Matsumoto | |
| sprintf: Should use mrb_int for any object | |||
| 2017-03-18 | Should use mrb_int for any object | ksss | |
| o=Object.new def o.to_int 1 end p "%*d" % [o, 1] | |||
| 2017-03-18 | Need to setup singleton_class chain; fix #3509 | Yukihiro "Matz" Matsumoto | |
| 2017-03-18 | Small cosmetic change ("* " -> "*"). | Yukihiro "Matz" Matsumoto | |
| 2017-03-18 | Save/restore GC arena index to avoid arena overflow error. | Yukihiro "Matz" Matsumoto | |
| 2017-03-18 | Fixed access of uninitialized C local variable; fix #3525 | Yukihiro "Matz" Matsumoto | |
| 2017-03-18 | Avoid mrb_check_string_type() in raising exception; fix #3506 | Yukihiro "Matz" Matsumoto | |
| The change may reduce flexibility, but I believe no one wants that level of flexibility here. | |||
| 2017-03-17 | Merge pull request #3524 from ksss/timestamp | Yukihiro "Matz" Matsumoto | |
| MiniRake::Task#timestamp should use Time.now only | |||
| 2017-03-17 | Avoid trampoline when #eval is called from mrb_funcall(); fix #3522 | Yukihiro "Matz" Matsumoto | |
| 2017-03-17 | MiniRake::Task#timestamp should use Time.now only | ksss | |
| 2017-03-16 | Merge pull request #3510 from ksss/string-each_line | Yukihiro "Matz" Matsumoto | |
| Some update for `String#each_line` | |||
| 2017-03-16 | Singleton classes do not have outer class set; fix #3505 | Yukihiro "Matz" Matsumoto | |
| 2017-03-16 | Protect stack region before calling mrb_convert_type(); fix #3504 | Yukihiro "Matz" Matsumoto | |
| 2017-03-15 | Support to return enumerator when no block given | ksss | |
| 2017-03-15 | Suuport custom separator | ksss | |
| 2017-03-15 | Use duplicated object for block args | ksss | |
| 2017-03-15 | `instance_eval` method does not introduce C function boundary; fix #3508 | Yukihiro "Matz" Matsumoto | |
| 2017-03-14 | Merge pull request #3503 from nobu/bug/sprintf-oob | Yukihiro "Matz" Matsumoto | |
| Fix out-of-bound access | |||
| 2017-03-13 | Fix out-of-bound access | Nobuyoshi Nakada | |
| Get rid of out-of-bound access when single % at the end. | |||
| 2017-03-13 | Need to copy argv since it may be reallocated; fix #3500 | Yukihiro "Matz" Matsumoto | |
| The argv for `mrb_yield_with_class()` should not be on mruby stack. Note the result from `mrb_get_args("*")` is on the stack. | |||
| 2017-03-13 | OP_BLKPUSH is invalid outside of methods; fix #3501 | Yukihiro "Matz" Matsumoto | |
| 2017-03-12 | Generate new OP_RESCUE; fix #3487 | Yukihiro "Matz" Matsumoto | |
| The old OP_RESCUE took one operand A, which specifies a class to match with the exception. The new OP_RESCUE takes tree operands: A: the register to hold exception B: the matching exception; the match result will be stored here. C: the continuation; if C is zero, the exception will be stored to R(A) otherwise, the value from R(A) is used as a exception. Thus, ```ruby begin raise "a" rescue TypeError p 1 rescue RuntimeError p 2 end ``` will be compiled as ``` irep 0x557a06667aa0 nregs=4 nlocals=1 pools=1 syms=4 reps=0 file: /tmp/e.rb 2 000 OP_ONERR 005 2 001 OP_LOADSELF R1 2 002 OP_STRING R2 L(0) ; "a" 2 003 OP_SEND R1 :raise 1 2 004 OP_JMP 022 3 005 OP_GETCONST R2 :TypeError 3 006 OP_RESCUE R1 R2 3 007 OP_JMPIF R2 009 3 008 OP_JMP 013 4 009 OP_LOADSELF R1 4 010 OP_LOADI R2 1 4 011 OP_SEND R1 :p 1 4 012 OP_JMP 023 5 013 OP_GETCONST R2 :RuntimeError 5 014 OP_RESCUE R1 R2 cont 5 015 OP_JMPIF R2 017 5 016 OP_JMP 021 6 017 OP_LOADSELF R1 6 018 OP_LOADI R2 2 6 019 OP_SEND R1 :p 1 6 020 OP_JMP 023 6 021 OP_RAISE R1 6 022 OP_POPERR 1 6 023 OP_STOP ``` The new VM can accept old OP_RESCUE. The mruby compatible VM (namely mruby/c) should be updated to support the new OP_RESCUE behavior. | |||
| 2017-03-12 | Update VM to support new OP_RESCUE behavior; ref #3487 | Yukihiro "Matz" Matsumoto | |
| 2017-03-12 | Enhance OP_RESCUE to take B operand fas matching exception; ref #3487 | Yukihiro "Matz" Matsumoto | |
| 2017-03-11 | OP_RETRUN to take B as matching exception; ref #3487 | Yukihiro "Matz" Matsumoto | |
| 2017-03-11 | Revert 642ab8e; ref #3422 | Yukihiro "Matz" Matsumoto | |
| Also fix #3499. The issue was solved by #3462. | |||
| 2017-03-11 | The width printf specifier may be negative; fix #3498 | Yukihiro "Matz" Matsumoto | |
| 2017-03-11 | fixup! Check return value from snprintf(); ref #3498 | Yukihiro "Matz" Matsumoto | |
| 2017-03-11 | Check return value from snprintf(); ref #3498 | Yukihiro "Matz" Matsumoto | |
| 2017-03-11 | Merge pull request #3496 from ksss/string-gsub | Yukihiro "Matz" Matsumoto | |
| Avoid infinity loop when empty string pattern | |||
| 2017-03-11 | Merge branch 'master' into string-gsub | Yukihiro "Matz" Matsumoto | |
| 2017-03-11 | Merge pull request #3497 from ksss/subreplace | Yukihiro "Matz" Matsumoto | |
| \1 sequences as empty strings | |||
| 2017-03-10 | \1 sequences as empty strings | ksss | |
| 2017-03-10 | Avoid infinity loop when empty string pattern | ksss | |
| 2017-03-10 | Update ci->mid according to surrounding scope; fix #3490 | Yukihiro "Matz" Matsumoto | |
| 2017-03-10 | Simplify expression; ref #3490 | Yukihiro "Matz" Matsumoto | |
| 2017-03-10 | Raise special Exception when exception class is redefined; fix #3493 | Yukihiro "Matz" Matsumoto | |
| 2017-03-10 | Use string#upto() if available; fix #3489 | Yukihiro "Matz" Matsumoto | |
| Terminate loop if the value is longer than the last otherwise. | |||
| 2017-03-10 | Terminate loop if generated string longer than the last; ref #3489 | Yukihiro "Matz" Matsumoto | |
| 2017-03-07 | `__FILE__` should not update `p->filename`; fix #3485 | Yukihiro "Matz" Matsumoto | |
