Yukihiro "Matz" Matsumoto
a06adb176f
mrb_str_cat: capa should be bigger than total.
2017-08-18 23:42:33 +09:00
Yukihiro "Matz" Matsumoto
8b5be554c7
ARY_CAPA handles capacity for embedded arrays by itself.
2017-08-18 23:42:33 +09:00
Yukihiro "Matz" Matsumoto
8fbc4bef55
Reduce signed/unsigned comparison warnings; ref #3785
2017-08-18 22:54:59 +09:00
Yukihiro "Matz" Matsumoto
f1767fd079
Separate mrb_str_buf_new and mrb_str_new_capa.
...
`mrb_str_buf_new` is an old function that ensures capacity size of
`MRB_STR_BUF_MIN_SIZE` minimum. Usually one need to use
`mrb_str_new_capa` instead.
2017-08-18 22:17:48 +09:00
Yukihiro "Matz" Matsumoto
722d123b87
Remove code duplication in mrb_str_concat.
2017-08-18 22:17:48 +09:00
Yukihiro "Matz" Matsumoto
4c25738ac7
Merge str_buf_cat and mrb_str_cat.
2017-08-18 22:17:47 +09:00
Yukihiro "Matz" Matsumoto
2adb0c201e
Merge pull request #3786 from christopheraue/3784_fix
...
Reset ci in OP_SUPER after potential realloc
2017-08-18 22:17:33 +09:00
Yukihiro "Matz" Matsumoto
f229ed917e
Merge pull request #3785 from miura1729/original
...
Improve Array structure
2017-08-18 20:37:31 +09:00
Miura Hideki
75ec86ed00
Improve Array structure
2017-08-18 20:12:00 +09:00
Christopher Aue
6b0860ce61
Reset ci in OP_SUPER after potential realloc
2017-08-18 13:11:08 +02:00
Christopher Aue
d5ac785b31
Reintroduced not storing converted proc directly in the stack
2017-08-12 23:59:40 +02:00
Christopher Aue
198df61039
Removed unneeded ci->nregs checks in OP_SEND and OP_SUPER
...
Because of #3504 `ci->nregs = bidx+1` was introduced in b64f08784c .
This led to the follow up error #3551 whose fix introduced the `if (bidx >= ci->nregs)`
check in 071164b799 and the `stack_extend(mrb, ci->nregs)`
in 93d802987e .
Then, the code causing #3504 reappeared again in #3590 . The fix for it moved the code
dealing with the block in OP_SUPER from below the `cipush` to above the `cipush`
in d9fb8b69b0 . The `if (bidx >= ci->nregs) { ... }` from
then on works with the original callinfo and not the pushed one. `ci->nregs` needed to
be modified for the pushed one because it is initialized to 0. But for the original ci
it is propertly set and a check is not needed.
2017-08-12 23:27:17 +02:00
Christopher Aue
f2d4640998
Extended stack always based on ci->nregs
2017-08-12 14:47:22 +02:00
Christopher Aue
3f591d71c6
Refactored variable usage in OP_SEND and OP_SUPER
2017-08-12 14:31:18 +02:00
Yukihiro "Matz" Matsumoto
8bf492f127
Reduce integer type mismatch warnings in VC.
2017-08-12 09:35:35 +09:00
Yukihiro "Matz" Matsumoto
baa5d2e3f7
Remove some empty lines; ref #3778
2017-08-11 22:39:31 +09:00
Christopher Aue
58f5115b22
Refactored OP_SEND and OP_SUPER and calculate argc right at the top
2017-08-11 13:42:06 +02:00
Yukihiro "Matz" Matsumoto
96d4c2d385
Remove an unused argument from each_backtrace_func.
2017-08-11 13:52:24 +09:00
Yukihiro "Matz" Matsumoto
ab39ed4f82
Defer mid update after unshift; ref #3776
2017-08-11 13:15:50 +09:00
Yukihiro "Matz" Matsumoto
9feb069124
Merge branch 'super_method_missing_fix' of https://github.com/christopheraue/mruby into christopheraue-super_method_missing_fix
2017-08-11 13:14:32 +09:00
Yukihiro "Matz" Matsumoto
0ff28c9e60
Silence integer type conversion warnings.
2017-08-11 13:10:31 +09:00
Yukihiro "Matz" Matsumoto
ef0b239704
Remove unnecessary inline function ary_elt.
...
And the function does not conform the naming convention anyway.
2017-08-11 12:57:37 +09:00
Yukihiro "Matz" Matsumoto
4e2f4f4280
Avoid possible data loss by using ptrdiff_t.
2017-08-11 12:12:11 +09:00
Yukihiro "Matz" Matsumoto
3e075a7b6c
Should not call to_str in mrb_vformat; fix #3773
2017-08-11 09:21:47 +09:00
Christopher Aue
2249551c63
Fixed calling missing method through super with 126 args
2017-08-10 23:26:39 +02:00
Yukihiro "Matz" Matsumoto
a7462a7f42
Remove redundant flo_hash function.
...
`flo_hash` implemented `15.2.8.3.18` but `Kernel#hash` (15.3.1.3.15)
now works for numbers.
2017-08-10 08:47:01 +09:00
Yukihiro "Matz" Matsumoto
3d288ef0d8
Use standard hash functions in mrb_hash_ht_hash_func.
2017-08-10 08:47:01 +09:00
Yukihiro "Matz" Matsumoto
78be0172f7
Normalize float numbers before calculating a hash value.
2017-08-10 08:36:09 +09:00
Christopher Aue
2fadddcd20
Replaced tabs with spaces
2017-08-09 21:56:27 +02:00
Yukihiro "Matz" Matsumoto
f9c3ebd29d
Wrong blkargs pos for vararg; ref #3768
2017-08-09 15:23:20 +09:00
Yukihiro "Matz" Matsumoto
0a61df1c34
The block argument offset saved in the env was wrong; fix #3768
...
When the method takes variable number of argument (`argc = -1`),
the block argument offset should be `-1` not `0`.
2017-08-09 12:57:55 +09:00
Yukihiro "Matz" Matsumoto
66e2928bd4
Float values divided by zero should honor signs; fix #3766
...
It also fixes unexpected resurrection of #3745 by #3752
2017-08-08 02:13:11 +09:00
Yukihiro "Matz" Matsumoto
8494557006
Set the current pc as the error position in OP_ERR; ref #3765
2017-08-08 01:55:46 +09:00
Yukihiro "Matz" Matsumoto
e910cf6169
Check if ptr is NULL before calling memset; fix #3765
2017-08-08 01:54:43 +09:00
Christopher Aue
ec7475d88b
Prevented resizing just created hashes in specific size ranges
2017-08-05 20:59:26 +02:00
Christopher Aue
0e5c3c4ebd
Improved speed of creating new hash tables
2017-08-04 22:08:29 +02:00
Yukihiro "Matz" Matsumoto
1b9c4855a3
proc->body.irep may be NULL; fix #3761
2017-08-05 01:28:11 +09:00
Yukihiro "Matz" Matsumoto
006661394d
Fixed heap buffer overflow in mrb_ary_unshift_m; fix #3760
2017-08-05 01:18:52 +09:00
Yukihiro "Matz" Matsumoto
7b88c1a8e5
Now local_variables works when for closures; fix #3710
2017-08-02 07:44:58 +09:00
Yukihiro "Matz" Matsumoto
da24af34b9
Better class name management.
...
The change removes several internal instance variables used by
class name management. The variables `__classid__` and `__classpath__`
are no longer available. `__outer__` is used only for unnamed outer
classes/modules (and will be removed after they are named).
[Important note]
Along with this change we removed several public functions.
- mrb_class_outer_module()
- mrb_class_sym()
We believe no one have used those functions, but if you do, please
ask us for the workaround.
2017-08-01 22:25:49 +09:00
Yukihiro "Matz" Matsumoto
2170fad406
Cosmetic changes (removing spaces before * in return types).
2017-08-01 16:31:18 +09:00
Yukihiro "Matz" Matsumoto
648e9ea51b
Move naming unnamed classes/modules
...
From `mrb_mod_const_set` to `mrb_const_set`.
2017-08-01 16:25:09 +09:00
Yukihiro "Matz" Matsumoto
3f6a098626
Reimplement constant look-up rule to follow lexical scoping.
...
This update fix CRuby scoping incompatibility; close #600 ; close #3200
2017-08-01 15:57:32 +09:00
Yukihiro "Matz" Matsumoto
9e10afe1d0
Implements `Module::nesting' (15.2.2.3.2); ref #600 , #3200
2017-08-01 15:37:21 +09:00
Christopher Aue
f937af5745
Extended Module#const_get to support class paths
2017-07-28 23:19:49 +02:00
Christopher Aue
c7018ea962
Added mrb_str_index to the mrb API
2017-07-28 21:07:20 +02:00
Yukihiro "Matz" Matsumoto
4696093673
Rename MRB_SEGMENT_SIZE to MRB_IV_SEGMENT_SIZE.
2017-07-27 16:14:03 +09:00
Yukihiro "Matz" Matsumoto
1e41026b28
Always use MRB_USE_IV_SEGLIST.
2017-07-27 16:14:03 +09:00
Yukihiro "Matz" Matsumoto
f26d00d9e8
Embed small size array elements in the heap.
...
It reduces the memory consumption and sometimes improve the
performance as well. For example, the consumed memory size
of `bench/bm_ao_render.rb` is reduced from 1.2GB to 1GB, and
its total execution time become 18.795 sec from 22.229 sec.
2017-07-27 16:13:06 +09:00
Yukihiro "Matz" Matsumoto
5d44f8582e
Remove loop from OP_POPERR.
2017-07-27 10:30:43 +09:00