Yukihiro "Matz" Matsumoto
695ad6ea95
gc.c (incremental_sweep_phase): freed need not to be smaller than page size
2023-06-26 17:14:43 +09:00
Yukihiro "Matz" Matsumoto
a3365d8b3f
gc.c (obj_free): need not to unshare env object when freeing fibers
...
Since when env objects reference the context, we no longer need to
unshare (stack reallocate) env objects. Currently all env objects
referenced from fibers are already recycled, so we removed unnecessary
code altogether.
2023-06-23 23:06:15 +09:00
Yukihiro "Matz" Matsumoto
849963b81e
variable.c (mrb_obj_iv_inspect): support recursion detection
2023-06-21 23:36:59 +09:00
Yukihiro "Matz" Matsumoto
113565a1c5
hash.c (mrb_hash_to_s): add recursive inspect check to Hash#inspect
2023-06-20 11:18:38 +09:00
Yukihiro "Matz" Matsumoto
5cb0c7463b
array.c (mrb_ary_to_s): add recursive check to Array#inspect
2023-06-20 07:06:33 +09:00
Yukihiro "Matz" Matsumoto
e2bbf75d58
kernel.c: prepare for new recursive inspect check
...
Like previous recursive `<=>` check, scan call stack to detect recursive
`inspect` calls. We no longer need incomplete `_inspect` hack to pass
around a hash table to record objects currently inspecting.
2023-06-20 07:04:28 +09:00
Yukihiro "Matz" Matsumoto
75c8ffddf5
object.c (mrb_equal) move mrb_equal() back to object.c
2023-06-20 06:45:05 +09:00
Yukihiro "Matz" Matsumoto
20552fe176
hash.c (mrb_hash_foreach): wrap function call with h_check_modified
...
If the iterating hash is modified in the function, h_each loop may
crash accessing modified (and probably deallocated) internal data.
2023-06-17 10:55:55 +09:00
Yukihiro "Matz" Matsumoto
e502fd88b9
kernel.c (mrb_cmp_m): check recursive <=> calls
...
If previous `<=>` method invocation with same arguments is detected in
the stack trace, this `<=>` call must be recursive and can cause stack
overflow.
2023-06-17 09:18:55 +09:00
Yukihiro "Matz" Matsumoto
7c9cb0901c
kernel.c (mrb_equal): simplify the code
2023-06-16 13:45:58 +09:00
Yukihiro "Matz" Matsumoto
5e4cecf766
internal.h: add mrb_obj_equal_m to internal.h
2023-06-15 23:36:27 +09:00
Yukihiro "Matz" Matsumoto
a04d18bb6d
kernel.c (mrb_eqq_m): rename function equal -> eqq
...
This function implements `Kernel#===` and it's usually abbreviated to
`eqq` not `equal`.
2023-06-15 23:32:41 +09:00
Yukihiro "Matz" Matsumoto
359c630d73
kernel.c (mrb_equal): move mrb_equal() from object.c
2023-06-15 23:31:45 +09:00
Yukihiro "Matz" Matsumoto
2be7cba8f5
kernel.c (obj_respond_to): refactoring
...
- skip basic_obj_respond_to(); call mrb_respond_to() directly
- narrower scope for `mrb_sym rtm_id`
- use mrb_func_basic_p() to detect override
- use mrb_funcall_id() to avoid local mrb_value array
2023-06-14 11:41:21 +09:00
Yukihiro "Matz" Matsumoto
347586e400
kernel.c: define respond_to_missing? method
2023-06-14 11:31:55 +09:00
Yukihiro "Matz" Matsumoto
17720c9b7b
variable.c (const_get): avoid mrb_funcall if possible
...
Directly call mrb_const_missing() if const_missing is not overridden.
2023-06-12 23:47:35 +09:00
Yukihiro "Matz" Matsumoto
89f7bb1056
use more lightweight mrb_funcall_argv instead of mrb_funcall_id
2023-06-12 14:22:04 +09:00
Yukihiro "Matz" Matsumoto
a867fb0703
class.c: remove methID from the example and codespell dict
2023-06-09 17:56:21 +09:00
Yukihiro "Matz" Matsumoto
727a2ec793
gc.c (obj_free): use simpler is_dead()
...
`mrb_object_dead_p()` is heavier if the pointer is (or used to be) an
object in the heaps.
2023-06-07 17:03:32 +09:00
Yukihiro "Matz" Matsumoto
336b7efb41
gc.c (mrb_incremental_gc): clarify the if-condition
2023-06-06 11:29:48 +09:00
Yukihiro "Matz" Matsumoto
8b8e186688
gc.h: rename majorgc_old_threashold to oldgen_threashold
...
This field means that if you have more old generation objects than
this value, major GC mode will be turned on.
2023-06-06 11:26:35 +09:00
Yukihiro "Matz" Matsumoto
b47c8b738a
gc.c (clear_all_old): fix a generational GC bug
...
This issue was caused by 375d22b that introduced a serious mark
leakage in the generational GC mode.
2023-06-06 07:29:41 +09:00
Yukihiro "Matz" Matsumoto
0bb08718b8
gc.c (incremental_marking_phase): clear gcnext for debugging
2023-06-05 23:31:36 +09:00
Yukihiro "Matz" Matsumoto
6958368daa
gc.c (gc_mark_children): declare a loop variable in the for-statement
2023-06-05 23:30:33 +09:00
Yukihiro "Matz" Matsumoto
623cda5521
gc.c: make color macros literals for debugging clarity
2023-06-05 16:00:04 +09:00
Yukihiro "Matz" Matsumoto
93648fc954
gc.c (mrb_env_unshare): fix a write barrier bug
2023-06-02 11:00:13 +09:00
Yukihiro "Matz" Matsumoto
9369679e36
vm.c: reduce local variables
2023-06-01 09:14:39 +09:00
Yukihiro "Matz" Matsumoto
5b61407414
class.c (prepare_singleton_class): defer method table allocation
2023-06-01 09:13:44 +09:00
Yukihiro "Matz" Matsumoto
0d8545e01b
error.c (frozen_error): change specifier from %t to %T
...
- `%t` prints type (class) of the argument
- `%T` prints real class of the argument, skipping TT_ICLASS, etc.
2023-05-31 08:35:54 +09:00
Yukihiro "Matz" Matsumoto
e6c89ef1f9
mruby.h: make mrb_check_frozen to a normal function from inline one
2023-05-31 08:33:58 +09:00
Yukihiro "Matz" Matsumoto
ccdf75c1c2
error.c: a new function mrb_check_frozen_value()
2023-05-31 08:31:13 +09:00
Yukihiro "Matz" Matsumoto
8b39a7825d
Reduce unnecessary mrb_obj_ptr() to mrb_check_frozen()
2023-05-31 08:29:12 +09:00
Yukihiro "Matz" Matsumoto
8873229312
codedump.c: fix indentation of OP_SCLASS
2023-05-30 16:08:38 +09:00
Yukihiro "Matz" Matsumoto
6eedf1065d
numeric.c (flo_idiv): add mrb_check_num_exact
2023-05-30 08:54:44 +09:00
Yukihiro "Matz" Matsumoto
e84060a900
string.c: rename function str_check_too_big -> str_check_length
2023-05-30 08:40:16 +09:00
Yukihiro "Matz" Matsumoto
f813b5d1d8
string.c (str_new): add string length check
2023-05-29 23:18:44 +09:00
Yukihiro "Matz" Matsumoto
aecaaf011f
string.c (mrb_str_resize): refactor string length check
2023-05-29 23:18:19 +09:00
Yukihiro "Matz" Matsumoto
0a6e1c0ffe
class.c (copy_class): copy source flags as well (except frozen flag)
2023-05-29 22:59:05 +09:00
Yukihiro "Matz" Matsumoto
c0c4219b25
class.c (copy_class): avoid copying method table in some cases
...
To prevent memory leaks
2023-05-29 22:57:59 +09:00
Yukihiro "Matz" Matsumoto
e4e3740688
class.c (init_copy): add an assertion
2023-05-29 09:26:45 +09:00
Yukihiro "Matz" Matsumoto
a02894afa3
small cosmetic changes
2023-05-29 09:26:45 +09:00
Yukihiro "Matz" Matsumoto
0ffe9b987a
class.c (mrb_prepend_module): c should not be MRB_TT_ICLASS
2023-05-29 09:26:44 +09:00
Yukihiro "Matz" Matsumoto
7f887f1928
class.c (mrb_class_initialize): check duplicated initialization
2023-05-26 12:48:34 +09:00
Yukihiro "Matz" Matsumoto
2ad3f0e34b
vm.c (mrb_yield_with_class): keep mid of the callee
...
Otherwise `super` from within blocks may call wrong methods.
2023-05-26 11:17:51 +09:00
Yukihiro "Matz" Matsumoto
9040baa270
vm.c (mrb_yield_with_class): avoid redundant initialization of mid
2023-05-26 11:14:58 +09:00
Yukihiro "Matz" Matsumoto
8f745b7728
vm.c (OP_ENTER): fix issues by unreferenced kdict and blk
...
There's short a period where kdict and blk are not pointed from the stack.
2023-05-23 14:54:36 +09:00
Yukihiro "Matz" Matsumoto
2f7f797473
remove extra spaces before ;
2023-05-22 12:05:35 +09:00
Yukihiro "Matz" Matsumoto
f1a3cfbd3b
add a space between if and (
2023-05-22 11:55:21 +09:00
Yukihiro "Matz" Matsumoto
c32f7915fb
reformat else clause indentation style
2023-05-20 00:21:01 +09:00
Yukihiro "Matz" Matsumoto
eea72ec84a
fix spaces in the type cast expressions (cosmetic changes)
2023-05-18 23:29:16 +09:00