Commit Graph

3456 Commits

Author SHA1 Message Date
Yukihiro "Matz" Matsumoto 15fba69710 Revert ae4217e81; fix #3619
Reopens #3550. Those 2 issues are exclusive.
2017-04-21 22:29:28 +09:00
Yukihiro "Matz" Matsumoto 00770e2d3d Merge pull request #3625 from take-cheeze/pool_64bit
Align pool allocator with 8 byte in 64-bit environment.
2017-04-21 22:27:33 +09:00
take_cheeze 3ce42a04e3 Add missing arg_i++ to fix bug of s! in mrb_get_args. 2017-04-21 17:52:29 +09:00
take_cheeze b2dc04393a Align pool allocator with 8 byte in 64-bit environment.
To avoid warnings from undefined sanitizer.
( https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html )
2017-04-21 17:34:31 +09:00
Yukihiro "Matz" Matsumoto 94bcdca64f VM stack may be reallocated in mrb_convert_type(); fix #3622 2017-04-21 09:11:28 +09:00
Yukihiro "Matz" Matsumoto 262fbaf566 mrb_int may overflow in bit-shifting; fix #3620 2017-04-21 08:55:19 +09:00
Yukihiro "Matz" Matsumoto 3567b26222 Bit-shifting zero should be zero; ref #3620 2017-04-21 08:36:29 +09:00
Yukihiro "Matz" Matsumoto d2cad9ac5b Disable GC during gc_each_objects(); fix #3616 2017-04-20 15:50:52 +09:00
Yukihiro "Matz" Matsumoto 62dae09bf6 Allow mrb_objspace_each_objects() to break iteration; ref #3359 2017-04-20 15:44:56 +09:00
Yukihiro "Matz" Matsumoto edd9fc6e75 Do not raise an exception for living closure; ref #3359 2017-04-20 13:14:01 +09:00
Yukihiro "Matz" Matsumoto 6a0b68f8b8 Use trampoline technique for instance_exec; ref #3359
A new function `mrb_yield_cont()` is provided. You have to call it
at the end of a C defined method, e.g. `return mrb_yield_cont()`.
2017-04-19 19:54:55 +09:00
Yukihiro "Matz" Matsumoto 77c2aa7b8a Need to raise "break from proc-closure" error; fix #3359 fix #3495
Some examples in #3359 still behave differently from CRuby.
2017-04-19 19:38:57 +09:00
Yukihiro "Matz" Matsumoto 283d145d3e Fixed a bug caused by last minute change; fix #3610
Omitted `goto L_RAISE` to raise an exception.
2017-04-19 09:28:58 +09:00
Clayton Smith de96994233 Check if sc->mt is initialized before copying it. 2017-04-18 11:18:58 -04:00
Yukihiro "Matz" Matsumoto 79e0314337 Call envadjust() before updating VM stack. 2017-04-18 16:49:43 +09:00
Yukihiro "Matz" Matsumoto ae4217e813 Fixed a wrong condition; fix #3550
Shared TT_ENV should be unshared. Reversed condition.
2017-04-18 16:49:14 +09:00
Yukihiro "Matz" Matsumoto e8dca6b034 Revert 6dd1a57; fix #3612; ref #3550
The fix was wrong. It causes a new problem #3612.
2017-04-18 16:48:50 +09:00
Yukihiro "Matz" Matsumoto a0143e148d Make mrb_codedump_all() to print type of Proc. 2017-04-18 12:40:36 +09:00
Yukihiro "Matz" Matsumoto f6c70bc6e8 super may call context switching method like send; fix #3611 2017-04-18 11:52:16 +09:00
Yukihiro "Matz" Matsumoto 05fceb5992 Call exc_debug_info() in mrb_exc_set(); ref #3610
Otherwise line number information is lacked from exceptions
raised in VM, e.g. "super called outside of method".
2017-04-18 10:28:49 +09:00
Yukihiro "Matz" Matsumoto 82ab46139e Add "no super" check to OP_ARGARY; fix #3610 2017-04-18 10:28:49 +09:00
Yukihiro "Matz" Matsumoto c3961847cf Hash#dup didn't check if internal khash is initialized; fix #3609 2017-04-18 09:55:32 +09:00
Yukihiro "Matz" Matsumoto 761493934e Mark whole root objects in final_marking_phase(); fix #3603
ref #1359 #1362
2017-04-17 16:06:18 +09:00
Yukihiro "Matz" Matsumoto 045e78c844 Proc#call needs to reserve at least 2 registers; fix #3606
One for the receiver, the other for the block.
2017-04-13 11:02:02 +09:00
Yukihiro "Matz" Matsumoto c0a4b1a0c6 Merge pull request #3604 from keizo042/fix_issue3598
Find Class/Module in nested singleton class; fix #3598
2017-04-13 00:42:26 +09:00
Kouichi Nakanishi d4205c9b20 Use while statement instead of for statement 2017-04-12 23:27:09 +09:00
Kouichi Nakanishi 4fca570a74 Find Class/Module in nested singleton class; fix #3598 2017-04-12 22:41:36 +09:00
Yukihiro "Matz" Matsumoto 4e84bdb507 Let 'mrb_vm_run()` to restore the calling fiber; ref #3537 2017-04-12 11:01:23 +09:00
Yukihiro "Matz" Matsumoto 0fb05eb55f Should not unshare env stack repeatedly; fix #3601 2017-04-12 10:41:06 +09:00
Yukihiro "Matz" Matsumoto 2a4db1a4be method_missing might have updated stack beyond boundary; fix #3599 2017-04-12 10:28:57 +09:00
Yukihiro "Matz" Matsumoto 326e043a64 Exceptions may be raised in yyparse(); fix #3600 2017-04-12 10:23:34 +09:00
Yukihiro "Matz" Matsumoto 918e7bb187 Refactor check before mrb_class_ptr(); ref #3602 2017-04-12 09:20:57 +09:00
Yukihiro "Matz" Matsumoto a25404c305 The attached object may not be a class; fix #3602 2017-04-12 09:18:44 +09:00
Yukihiro "Matz" Matsumoto 6dd1a570c2 Shared TT_ENV may need to be marked; fix #3550 2017-04-11 12:40:26 +09:00
Yukihiro "Matz" Matsumoto db47ae5de5 Fixed a bug in mrb_convert_to_integer(); fix #3581
Did not update the result from `mrb_check_string_type()` before
string-to-integer conversion.
2017-04-11 02:00:02 +09:00
Yukihiro "Matz" Matsumoto 9094415acf An object attached to a singleton class may not be a class; fix #3587
The fix for #3539 was incomplete.
2017-04-10 22:02:51 +09:00
Yukihiro "Matz" Matsumoto 0048dd118a Protect arguments from GC; fix #3597
GC may be called with OP_ENTER (especially when GC_STRESS is set).
2017-04-10 21:12:41 +09:00
Yukihiro "Matz" Matsumoto a55b237d89 Callinfo may be changed in ecall(); fix #3589 2017-04-10 20:39:49 +09:00
Yukihiro "Matz" Matsumoto ab25eaea23 Avoid clearing VM stack every time to gain performance.
VM stack is cleared by 5c114c9, 0cb501 and c063641.
2017-04-10 09:59:36 +09:00
Yukihiro "Matz" Matsumoto 5c114c91d4 Clear unused stack region that may refer freed objects; fix #3596 2017-04-10 09:46:09 +09:00
Yukihiro "Matz" Matsumoto 491d68bb30 Skip stack marking at all if c->stack is NULL. 2017-04-10 09:28:36 +09:00
Yukihiro "Matz" Matsumoto 0cb501545c Fill omitted arguments by nil for non-strict Proc. 2017-04-10 09:24:42 +09:00
Yukihiro "Matz" Matsumoto c063641ab0 Clear local (but non-argument) variables in OP_ENTER.
Otherwise, the following script prints an uninitialized value.

def f(*a)
  if false
    b = 15
  end
  p b
end
f(1,2,3)
2017-04-10 08:25:44 +09:00
Yukihiro "Matz" Matsumoto 47f181519f Avoid updating regs[] from function calls; ref #3588 2017-04-08 17:47:35 +09:00
Kouichi Nakanishi 15b55c32e9 Attach a name to embbeded value of rescue/ensure stack size 2017-04-08 11:22:41 +09:00
Kouichi Nakanishi fd0f79ca67 Get constant of parent class even if child class is defined in signleton class; fix #3575 2017-04-06 23:31:34 +09:00
Yukihiro "Matz" Matsumoto e5b61d34f6 Fixed possible SEGV in Kernel#block_given?; ref #3593 2017-04-06 10:07:53 +09:00
Yukihiro "Matz" Matsumoto 5e79bc9377 Make String#replace to check equality before modifying flags.
ref #3588
2017-04-06 08:25:25 +09:00
Yukihiro "Matz" Matsumoto a7b0ab3769 Save block argument position in e->cioff; fix #3593 2017-04-05 22:30:39 +09:00
Yukihiro "Matz" Matsumoto d9fb8b69b0 Fixed a bug in OP_SUPER block conversion; fix #3590 2017-04-05 18:22:26 +09:00