Yukihiro "Matz" Matsumoto
0ac917e228
Revert "mrbgems/mruby-struct/src/struct.c: use direct array access"
...
This reverts commit 159ff5b28d .
Fix #6066
2023-09-28 07:40:31 +09:00
Yukihiro "Matz" Matsumoto
159ff5b28d
mrbgems/mruby-struct/src/struct.c: use direct array access
...
Unless we need boundary check, we don't need to use mrb_ary_ref().
2023-09-05 23:29:23 +09:00
Yukihiro "Matz" Matsumoto
6ae6b63aaf
mruby-struct: add recursive inspect check instead of _inspect hack
2023-06-22 12:53:51 +09:00
Yukihiro "Matz" Matsumoto
de69190df5
mruby-struct/struct.c: need to copy the argument array
...
Just in case for stack reallocations.
2023-05-25 09:05:02 +09:00
Yukihiro "Matz" Matsumoto
e05ac91217
mruby-struct/struct.c: update the behavior when actual size differs
...
Assertions may be false and terminate the whole process when actual size
for struct objects are different.
2023-05-25 09:05:02 +09:00
Yukihiro "Matz" Matsumoto
f50e40f291
mruby-struct/struct.c: use mrb_ary_set to simplify the code
...
We don't need to do `mrb_struct_modify()` and calling write barriers by
ourselves for the small performance issue.
2023-05-25 09:05:02 +09:00
Yukihiro "Matz" Matsumoto
0295e6a688
mruby-struct/struct.c (struct_aref_int): update index check
...
Check should use the number of members, not the actual size of the
struct object, which may be smaller than the declared size.
2023-05-25 08:40:46 +09:00
Yukihiro "Matz" Matsumoto
ed5fbb5d63
mruby-struct.c (mrb_struct_s_def): check duplicate members
2023-05-24 22:43:09 +09:00
Yukihiro "Matz" Matsumoto
f80192e8ac
mruby-struct/struct.c (struct_s_member): avoid break
...
Direct `return` is more readable, IMO.
2023-05-24 17:59:32 +09:00
Yukihiro "Matz" Matsumoto
c2f3f103bb
mruby-struct/struct.c (mrb_struct_ref): update the function
...
- use `num_members`
- ensure the function takes no argument
- avoid out-of-bound access when struct is failed to initialize
2023-05-24 17:53:41 +09:00
Yukihiro "Matz" Matsumoto
69d33de527
mruby-struct/struct.c (num_members): simplify the code by new argument
2023-05-24 17:51:44 +09:00
Yukihiro "Matz" Matsumoto
52fb2f59d8
mruby-struct/struct.c (struct_aref_sym): simplify the logic
2023-05-24 17:51:03 +09:00
Yukihiro "Matz" Matsumoto
7b7ea70b84
mruby-struct/struct.c (mrb_struct_to_h): RSTRUCT_PTR() may be NULL
...
Especially when you define a member named `initialize`.
2023-05-24 17:48:51 +09:00
Yukihiro "Matz" Matsumoto
eea72ec84a
fix spaces in the type cast expressions (cosmetic changes)
2023-05-18 23:29:16 +09:00
Yukihiro "Matz" Matsumoto
4f125a3f19
mruby-struct/struct.c: allow struct size differ from members
...
The situation may be caused by `Struct.new(...).alloc` etc.
2023-04-13 07:39:05 +09:00
Yukihiro "Matz" Matsumoto
8af45425d0
mruby-struct/struct.c: Struct.new should take 1+ arguments
2023-04-13 07:39:05 +09:00
Yukihiro "Matz" Matsumoto
bb7b4b67ae
mruby-struct/struct.c (struct_corrupted): fix error message
2023-04-13 07:39:05 +09:00
Yukihiro "Matz" Matsumoto
a7c96edf6f
mruby-struct/struct.c: prohibit Struct.allocate; ref #5979
2023-04-13 07:39:05 +09:00
Yukihiro "Matz" Matsumoto
7327ca898c
mruby-struct: fix uninitialized variable error
2023-03-13 08:08:30 +09:00
Yukihiro "Matz" Matsumoto
c212edec5f
mruby-struct/struct.c: allow empty Struct when a name is not given
2023-03-10 08:52:06 +09:00
Yukihiro "Matz" Matsumoto
38c50b3094
mruby-struct (struct_index): avoid direct array indexing
...
Caused crash probably due to the combination of C++ UB & optimizer.
2022-12-10 08:00:31 +09:00
Yukihiro "Matz" Matsumoto
a7e304a51c
mruby-struct (struct_index): unify indexing access code
2022-12-08 08:01:53 +09:00
Yukihiro "Matz" Matsumoto
de0ed25fbf
mruby-struct (struct_corrupted): unify error raising code
2022-12-07 17:07:33 +09:00
Yukihiro "Matz" Matsumoto
16ed467266
mruby-struct: avoid using mrb_bug(); ref #5852
...
Use mrb_assert() instead.
2022-11-25 16:17:29 +09:00
Yukihiro "Matz" Matsumoto
9c5dc42e59
small cosmetic changes.
...
I prefer `i++` style unless absolutely necessary.
This commit is an addition to 41e4148.
2022-11-19 17:11:56 +09:00
Yukihiro "Matz" Matsumoto
d84daa56fa
mruby-struct/struct.c (mrb_struct_modify): remove the write barrier.
...
Instead of calling write barriers (mrb_write_barrier) in the function,
call field write barriers (mrb_field_write_barrier_value) from the
individual functions.
2022-10-14 15:54:09 +09:00
Yukihiro "Matz" Matsumoto
6c40d64327
mruby-struct/struct.c: refactoring.
2022-10-13 23:12:53 +09:00
Yukihiro "Matz" Matsumoto
af9ce1f64c
mruby-struct/struct.c: adjust spaces.
2022-10-12 22:02:21 +09:00
Yukihiro "Matz" Matsumoto
37a3252ed3
mruby-struct/struct.c: need to use MRB_TT_STRUCT.
2022-10-11 23:24:19 +09:00
dearblue
366185a54d
Corrected document directive to "call-seq"
2022-10-06 21:56:38 +09:00
Yukihiro "Matz" Matsumoto
c6daaa8c07
struct.c (make_struct): use preallocated symbols.
2022-08-22 16:12:59 +09:00
Yukihiro "Matz" Matsumoto
b99c389ec3
internal.h: aggregate internal functions.
...
Internal functions can only be called from within the library.
Functions listed in `mruby/internal.h` can be called from:
* core (src/*.c)
* gems (mrbgems/**/*.c)
But not from the application linked with `libmruby`.
2022-04-02 18:25:13 +09:00
Yukihiro "Matz" Matsumoto
bb3cd69aff
value.h: introduce MRB_TT_STRUCT for mruby-struct.
2021-09-30 12:46:45 +09:00
Yukihiro "Matz" Matsumoto
2c41739b66
mruby.h: obsolete mrb_to_str().
...
Replace them by `mrb_ensure_string_type()`.
2021-09-01 07:00:55 +09:00
Yukihiro "Matz" Matsumoto
5eebbd7df2
Global renaming regarding integer and float.
...
Consistent number conversion function names:
* `mrb_value` to immediate (C) value
* `mrb_int()` -> `mrb_as_int()`
* `mrb_to_flo()` -> `mrb_as_float()`
* `mrb_value` to `mrb_value` (converted)
* `mrb_to_int()'
* `mrb_Integer()` - removed
* `mrb_Float()` -> `mrb_to_float`
Consistent function name (avoid `_flo` suffix):
* `mrb_div_flo()` -> `mrb_div_float`
2021-05-17 15:07:05 +09:00
Yukihiro "Matz" Matsumoto
17ecf14511
Revert "Minimize the changes in #5277 "
...
This reverts commit dc51d89ac2 .
2021-01-26 10:57:07 +09:00
Yukihiro "Matz" Matsumoto
dc51d89ac2
Minimize the changes in #5277
...
Instead of including `mruby/presym.h` everywhere, we provided the
fallback `mruby/presym.inc` under `include/mruby` directory, and specify
`-I<build-dir>/include` before `-I<top-dir>/include` in `presym.rake`.
So even when someone drops `-I<build-dir>/include` in compiler options,
it just compiles without failure.
2021-01-22 18:38:53 +09:00
KOBAYASHI Shuji
90b53f4c29
Avoid including presym.inc in existing header files
...
Addressed an issue where existing programs linking `libmruby.a` could only
be built by adding `<build-dir>/include` to compiler's include path.
2021-01-11 09:21:07 +09:00
dearblue
f0a64329b1
Prohibit array changes by "a"/"*" specifier of mrb_get_args()
...
The "a"/"*" specifier of the `mrb_get_args()` function will now return `const mrb_value *`.
This is because it is difficult for the caller to check if it is an array object and write-barrier if necessary.
And it requires calling `mrb_ary_modify()` on the unmodified array object, which is also difficult (this is similar to #5087 ).
2020-10-22 22:55:35 +09:00
Yukihiro "Matz" Matsumoto
2b188ed8a1
Reorganize Integer system.
...
- Integrate `Fixnum` and `Integer`
- Remove `Integral`
- `int / int -> int`
- Replace `mrb_fixnum()` to `mrb_int()`
- Replace `mrb_fixnum_value()` to `mrb_int_value()`.
- Use `mrb_integer_p()` instead of `mrb_fixnum_p()`
2020-10-12 18:19:54 +09:00
Yukihiro "Matz" Matsumoto
a4302524d0
Avoid using mrb_check_intern_str().
...
We call `mrb_intern_str()` later anyway, so there's no need to avoid
defining a new symbol here.
2020-10-12 16:21:49 +09:00
dearblue
80fe9838d2
Integrate Fixnum class into Integer class
...
* The `Fixnum` constant is now an alias for the `Integer` class.
* Remove `struct mrb_state::fixnum_class` member.
If necessary, use `struct mrb_state::integer_class` instead.
2020-10-12 16:21:44 +09:00
Yukihiro "Matz" Matsumoto
2a366ffba8
Use functions that take symbols to reduce string litrals in C.
2020-10-12 16:20:59 +09:00
Yukihiro "Matz" Matsumoto
eddd324979
Add MRB_SYM() for inline symbols.
2020-10-12 16:20:41 +09:00
Yukihiro "Matz" Matsumoto
49ae2a69f2
Add mrb_get_arg1() that retrieves single (and only) argument.
...
`mrb_get_arg1()` raises `ArgumentError` if the method does not receive one
argument.
And replaces all `mrb_get_args(mrb, "o", &arg)` by the new function.
2020-06-20 12:49:46 +09:00
Yukihiro "Matz" Matsumoto
9174b18f34
Rename mrb_num_args_error to mrb_argnum_error; ref #4863
2020-01-01 22:37:14 +09:00
KOBAYASHI Shuji
81de1f159c
Add mrb_num_args_error() for "wrong number of arguments" error
...
To unify the style of messages.
2019-12-12 11:45:58 +09:00
Yukihiro "Matz" Matsumoto
a365f9a67d
Rename symbol-to-string functions; close #4684
...
* mrb_sym2name -> mrb_sym_name
* mrb_sym2name_len -> mrb_sym_name_len
* mrb_sym2str -> mrb_sym_str
2019-09-25 23:52:00 +09:00
KOBAYASHI Shuji
334afb167c
Use new specifiers/modifiers of mrb_vfromat()
...
The binary sizes (gems are only `mruby-bin-mruby`) are reduced slightly in
my environment than before the introduction of new specifiers/modifiers
(5116789a ) with this change.
------------+-------------------+-------------------+--------
BINARY | BEFORE (5116789a ) | AFTER (This PR) | RATIO
------------+-------------------+-------------------+--------
mruby | 593416 bytes | 593208 bytes | -0.04%
libmruby.a | 769048 bytes | 767264 bytes | -0.23%
------------+-------------------+-------------------+--------
BTW, I accidentally changed `tasks/toolchains/visualcpp.rake` at #4613 ,
so I put it back.
2019-08-05 13:18:50 +09:00
Yukihiro "Matz" Matsumoto
ace0c76a69
Renamed stacked to onstack; ref #4523
2019-06-25 18:07:48 +09:00