Yukihiro "Matz" Matsumoto
2256bb07b0
Remove MRB_METHOD_TABLE_INLINE.
...
`MRB_METHOD_TABLE_INLINE` was fragile. It requires `-falign-functions=n`.
On platform that uses higher bits of function pointers, you can use new
`MRB_METHOD_T_STRUCT` configuration macro.
2019-09-16 11:14:13 +09:00
Yukihiro "Matz" Matsumoto
30f3787248
Raise ArgumentError by aspec check; ref #4688
...
This is partial `aspec` check that only checks `MRB_ARGS_NONE()`.
2019-09-16 10:50:31 +09:00
Yukihiro "Matz" Matsumoto
2764fdf9f0
Share common definition of MRB_METHOD_FUNC_FL.
2019-09-16 10:10:09 +09:00
Yukihiro "Matz" Matsumoto
0eb9355acd
Use bit shifting to pack function pointers to mrb_method_t.
...
So you don't need `-falign-functions=2` anymore. Instead your platform
must not use higher bits of the pointer (true for most platforms).
If not, you have to use `struct mrb_method_t` version.
2019-09-16 10:10:09 +09:00
Yukihiro "Matz" Matsumoto
743d480fba
Refactor mrb_method_t.
2019-09-16 10:10:09 +09:00
KOBAYASHI Shuji
7fcda585bc
Refactor mrb_type in include/mruby/boxing_word.h
2019-09-15 18:11:16 +09:00
Yukihiro "Matz" Matsumoto
28bbd3e7d9
Add argument names to C function prototypes.
2019-09-14 23:21:44 +09:00
Yukihiro "Matz" Matsumoto
57d7fe94a9
Add a macro mrb_frozen_p that points to MRB_FROZEN_P.
2019-09-14 23:21:44 +09:00
Yukihiro "Matz" Matsumoto
76f1aa7de5
Remove mrb_funcall from <=> operations.
2019-09-14 09:05:32 +09:00
KOBAYASHI Shuji
d47bd0a2cd
Optimize mrb_bool() with MRB_WORD_BOXING
2019-09-08 12:17:25 +09:00
KOBAYASHI Shuji
17c53040ab
Increase symbol bit size on 32-bit mode with MRB_WORD_BOXING
...
This change increases the max length of lower inline symbols to 5 bytes.
2019-09-07 21:38:11 +09:00
KOBAYASHI Shuji
19e2cc187b
Avoid bit fields in mrb_value; ref b2c3d88f
...
The changes at b2c3d88f were inappropriate because the memory layout of bit
fields are implementation defined. Therefor, I fixed it not to use bit
fields.
2019-09-06 13:24:35 +09:00
Yukihiro "Matz" Matsumoto
5cd52d2d69
Fix an error in refactoring; fix #4682
2019-09-02 08:41:44 +09:00
Yukihiro "Matz" Matsumoto
1a4ea94bc7
Fix mrb_immediate_p(MRB_TT_FREE) to return false; ref #4679
2019-08-31 23:19:08 +09:00
Yukihiro "Matz" Matsumoto
d48a2190bf
Refactor #4662 with different names.
2019-08-31 22:14:25 +09:00
KOBAYASHI Shuji
b2c3d88fbf
Implement mrb_immediate_p macro for MRB_WORD_BOXING
...
The default implementation of `mrb_immediate_p` uses `mrb_type`. However,
in `MRB_WORD_BOXING`, `mrb_type` has many branches and is inefficient, so
provide an implementation that does not use `mrb_type`.
2019-08-31 16:55:57 +09:00
David Siaw
6375639917
fix lots of warnings and make logo not so big
2019-08-26 02:08:33 +09:00
David Siaw
e1e96c0cf4
change doc directory and reduce warnings
2019-08-26 00:23:28 +09:00
KOBAYASHI Shuji
be78b5d8f7
Fix RBreak exceeding 6 words on 32-bit mode w/o boxing and MRB_USE_FLOAT
...
ref: https://github.com/mruby/mruby/pull/4483#issuecomment-498001736
In this configuration, `tt` of `RBreak::val` is set into `RBreak::flags`.
2019-08-23 22:15:42 +09:00
Yukihiro "Matz" Matsumoto
4c001673b6
Avoid C++ strict aliasing warning.
...
Based on code proposed by @dearblue to avoid the warning:
`dereferencing type-punned pointer will break strict-aliasing rules`.
2019-08-20 22:50:21 +09:00
KOBAYASHI Shuji
8157672a29
Use RBasic padding for embedded string on 64-bit CPU
...
On 64-bit CPU, there is padding in `RBasic`, so reorder the fields and use
it as buffer of embedded string. This change allows 4 more bytes to be
embedded on 64-bit CPU.
However, an incompatibility will occur if `RString::as::ary` is accessed
directly because `RString` structure has changed.
2019-08-20 18:49:55 +09:00
Ryan Lopopolo
b5662c87c8
Allow external definition of MRB_API macro
...
When building WebAssembly targets with clang (e.g. wasm32-unknown-unknown), all
symbols are hidden by default. To export a symbol, it must be marked with
__attribute__((visibility(default)))
Rather than detecting this exotic target in mruby, allow MRB_API to be defined
externally.
2019-08-18 19:40:12 -07:00
Yukihiro "Matz" Matsumoto
b5e2d208b9
Merge pull request #4636 from davidsiaw/doxygen
...
Generate doxygen docs for mruby
2019-08-19 07:29:46 +09:00
David Siaw
b5299b1c58
fix up documentation for values
2019-08-18 20:12:44 +09:00
dearblue
279c21b816
Prohibit changes to iseq in principle
2019-08-18 15:00:32 +09:00
David Siaw
2c86895468
fix up markdown display in doxygen
2019-08-18 13:59:29 +09:00
David Siaw
8d70a9b1b5
first bit of doc generation
2019-08-18 13:07:24 +09:00
Yukihiro "Matz" Matsumoto
83dab1ee0d
Merge pull request #4634 from shuujii/refactor-set-unset-string-type-flags
...
Refactor set/unset string type flags
2019-08-17 23:41:52 +09:00
KOBAYASHI Shuji
caba5fef27
Refactor set/unset string type flags
...
Introduce `RSTR_SET_TYPE_FLAG` macro to set the specified string type flag and
clear the others.
2019-08-17 21:24:08 +09:00
Yukihiro "Matz" Matsumoto
b55e72b2d6
Resolve conflict between #4582 and C++ warning.
2019-08-17 15:47:14 +09:00
Yukihiro "Matz" Matsumoto
c1a0a99309
Update struct RArray union to silence C++ warning.
2019-08-16 22:51:07 +09:00
Yukihiro "Matz" Matsumoto
9f6328d499
Remove MRB_API from functions only called from vm.c.
...
* `mrb_vm_define_class`
* `mrb_vm_define_module`
Only functions called from user code requires `MRB_API`.
2019-08-14 09:33:23 +09:00
KOBAYASHI Shuji
450684ab33
mrb_str_modify_keep_ascii can embed one more byte
...
The condition to make an embedded string was incorrect. Because there were
several similar codes, extracted into `RSTR_EMBEDDABLE_P` macro.
2019-08-11 20:48:37 +09:00
Yukihiro "Matz" Matsumoto
b377b7d580
Update mrb_to_str and related functions.
...
Contrary to the name, `mrb_to_str` just checks type, no conversion.
2019-08-07 16:20:40 +09:00
Yukihiro "Matz" Matsumoto
98fc887cb3
Reorganize mrb_string_value_cstr and related functions.
...
`mrb_string_value_cstr` and `mrb_string_value_len`: obsolete
`mrb_string_cstr`: new function to retrieve NULL terminated C string
`RSTRING_CSTR`: wrapper macro of `mrb_string_cstr`
2019-08-07 15:52:10 +09:00
dearblue
eb86340139
Add constants for floating point number
2019-08-04 18:34:46 +09:00
Yukihiro "Matz" Matsumoto
6f67fddb87
Fix FIXABLE_FLOAT() on MRB_INT64; ref #4566
...
Normal `TYPED_FIXABLE(f,mrb_float)` does not work on 64bit int from
casting problems. The new approach works well, but assumes two's
complement and IEEE-754 floating point numbers.
2019-07-22 13:23:53 +09:00
Yukihiro "Matz" Matsumoto
b22bde6596
Avoid MRB_INLINE for mrb_str_modify(); ref #4579
...
Functions that are called infrequently need not to be inline.
2019-07-17 10:36:10 +09:00
Yukihiro "Matz" Matsumoto
8e10a026e6
Merge pull request #4580 from shuujii/unify-type-of-line-number-to-uint16_t
...
Unify type of line number to `uint16_t`
2019-07-16 06:36:47 +09:00
KOBAYASHI Shuji
acad9567c1
Unify type of line number to uint16_t
2019-07-15 23:03:41 +09:00
KOBAYASHI Shuji
9093f3403f
Add MRB_API to mrb_str_modify_keep_ascii()
2019-07-15 07:43:46 +09:00
KOBAYASHI Shuji
380805ece2
Keep MRB_STR_ASCII flag in some methods of String
2019-07-14 19:13:19 +09:00
KOBAYASHI Shuji
f9bf2d9d8e
Read/write MRB_STR_ASCII flag only when MRB_UTF8_STRING is defined
2019-07-05 22:19:31 +09:00
Yukihiro "Matz" Matsumoto
991bdd4ed7
Rename MRB_STR_NO_UTF to 'MRB_STR_ASCII`; close #4550
...
In #4550 , @shuuji proposed the name name `MRB_STR_NO_MULTI_BYTE` for
more precise description. Although I agree that the name name is
correct, but the flag means the string does not contain multi byte UTF-8
characters, i.e. all characters fit in the range of ASCII.
2019-07-04 23:07:18 +09:00
KOBAYASHI Shuji
d915261590
Refine document to mrb_get_args()` [ci skip]
2019-07-03 20:41:30 +09:00
Yukihiro "Matz" Matsumoto
84779f0170
Merge pull request #4532 from shuujii/fix-String-byteslice-with-MRB_UTF8_STRING-and-some-edge-cases
...
Fix `String#byteslice` with `MRB_UTF8_STRING` and some edge cases
2019-06-26 12:41:56 +09:00
KOBAYASHI Shuji
75df13a973
Fix String#byteslice with MRB_UTF8_STRING and some edge cases
...
Example:
$ bin/mruby -e '
p "あa".byteslice(1)
p "bar".byteslice(3)
p "bar".byteslice(4..0)
'
Before this patch:
"a"
""
RangeError (4..0 out of range)
After this patch (same as Ruby):
"\x81"
nil
nil
2019-06-25 23:09:23 +09:00
Yukihiro "Matz" Matsumoto
f268ecaf0d
Merge pull request #4516 from shuujii/fix-struct-RRange-overflow-on-32-bit-CPU-with-MRB_NAN_BOXING
...
Fix `struct RRange` overflow on 32-bit CPU with `MRB_NAN_BOXING`
2019-06-25 22:44:31 +09:00
KOBAYASHI Shuji
4d9d6faf0d
Remove unneeded statement in SET_OBJ_VALUE with boxing_word.h
...
`(r).value.bp` and `v` have the same value due to assignment of the line
preceding the removed line.
2019-06-19 17:50:20 +09:00
KOBAYASHI Shuji
81828f8b08
Fix struct RRange overflow on 32-bit CPU with MRB_NAN_BOXING
2019-06-18 18:17:03 +09:00