KOBAYASHI Shuji
da2bc9e678
Use mrb_sym2str in implementation of Symbol#to_s
2019-03-28 19:56:51 +09:00
Yukihiro "Matz" Matsumoto
21b8d20d7e
Fixed mistakes in 92dce05
...
* rename `sym2name` to `sym2name_len`.
* `MRB_API` -> `static`
2019-03-28 07:06:44 +09:00
Yukihiro "Matz" Matsumoto
92dce053ad
Fix another bug related to #4342
...
For short symbols with alpha numeric characters, `mrb_sym2name_len()`
returns the same buffer `mrb->symbuf`. Some occasion, we forget the fact
that the second call could overwrite the result of first call of the
function.
We have prepared the static function `sym2name()` which specifies the
buffer region for inline packed symbols and use the function in
`mrb_sym_to_s`.
2019-03-27 17:38:06 +09:00
Yukihiro "Matz" Matsumoto
b8f00e439d
Avoid using 'mrb_str_new_static` if a symbol is packed; fix #4342
2019-03-27 12:53:24 +09:00
KOBAYASHI Shuji
b489ddcbd1
Remove implementation of Symbol#===
...
For reducing program size.
2019-03-25 21:39:11 +09:00
Yukihiro "Matz" Matsumoto
33a9840e4a
Need to check length before packing a symbol; fix #4340
2019-03-25 20:28:21 +09:00
Yukihiro "Matz" Matsumoto
9215c85450
Parenthesize expression to suppress warning; ref #4278
2019-02-18 17:25:01 +09:00
Yukihiro "Matz" Matsumoto
3e0d29b7be
Merge pull request #4279 from dearblue/fix-inline-packed-symbols
...
Fix destroyed "inline packed symbols" on 32 bit mode with `MRB_WORD_BOXING`
2019-02-17 22:13:22 +09:00
dearblue
5067a5cd58
Use const int instead of enum
2019-02-16 22:13:16 +09:00
dearblue
81cbc92513
Fix inline packed symbols on 32 bit mode with MRB_WORD_BOXING
2019-02-16 21:26:45 +09:00
KOBAYASHI Shuji
2c8af128f4
Add length argument for sym_inline_unpack()
...
`sym_inline_unpack_with_bit()` is moved inside of `sym_inline_unpack()`
because this is used only one place.
2019-02-16 20:48:33 +09:00
KOBAYASHI Shuji
5b10439f6f
Extract code fragment for unpacking into method in sym_inline_unpack()
2019-02-15 19:48:00 +09:00
Yukihiro "Matz" Matsumoto
cc94c8bf9d
Merge pull request #4276 from shuujii/use-assert-for-checking-sym-in-sym_inline_unpack
...
Use `mrb_assert()` for checking `sym` in `sym_inline_unpack()`
2019-02-15 16:34:18 +09:00
KOBAYASHI Shuji
921af6923d
Use mrb_assert() for checking sym in sym_inline_unpack()
2019-02-14 18:48:41 +09:00
KOBAYASHI Shuji
bedd672571
Add const to pack_table to src/symbol.c
2019-02-14 18:44:00 +09:00
Yukihiro "Matz" Matsumoto
37bc343e0a
Disable Symbol.all_symbols.
2019-02-12 17:30:34 +09:00
Yukihiro "Matz" Matsumoto
06ba5905f0
Implement inline packed symbols.
...
Small symbols with all alphanumeric characters (<5) are packed in 32bit
symbol integer a la base64. This means those small symbols are not
listed in `Symbol.all_symbols`.
2019-02-12 17:30:34 +09:00
Yukihiro "Matz" Matsumoto
d52f46da45
Implement symbol hash table to boost find_symbol.
...
In 4174e02, we removed the symbol hash table from `mrb_state` but
`find_symbol` was too slow with linear search. My performance estimation
was wrong. So we implemented a new compact hash table for symbols.
2019-02-06 22:07:11 +09:00
Yukihiro "Matz" Matsumoto
02fbb2c211
Remove symbol hash table from mrb_state structure.
...
Use linear search instead. Number of symbols is usually small (<1K), so
we don't need performance boost from hash tables. In our benchmark
measurement, hash tables consumes 790KB for `build/full-debug/mrbtest`.
2019-02-06 22:07:11 +09:00
KOBAYASHI Shuji
5ef1e479da
Remove old comment for mrb_sym2name_len() [ci skip]
2019-02-05 19:16:23 +09:00
Yukihiro "Matz" Matsumoto
d9e2532552
Remove reserved symbols for now.
...
It should be done by planned embedded symbols.
2018-11-02 22:58:12 +09:00
take-cheeze
e022080390
Define null symbol
2018-10-29 19:22:53 +09:00
take-cheeze
3248de83b6
Reduce instruction size
2018-10-29 19:17:05 +09:00
dearblue
1595e8368a
Fix indent
2018-09-07 22:32:34 +09:00
YAMAMOTO Masaya
679dfd75a8
Use division expression instead of some floating point literals
2017-10-11 17:58:11 +09:00
Yukihiro "Matz" Matsumoto
2bb47addad
Prohibit instantiation of immediate objects
2016-11-30 10:36:17 +09:00
ksss
af21b365d2
symname_p support !~
2016-01-06 11:59:09 +09:00
Yukihiro "Matz" Matsumoto
5c405dea3d
include changed from by quotes ("") to by brackets (<>); close #3032
2015-11-27 17:48:23 +09:00
Seba Gamboa
e871b77f41
Increasing docs coverage
2015-10-20 12:16:46 -03:00
cremno
2ee84eb3df
remove unnecessary including of <ctype.h>
...
Not needed anymore since 85075bef75
2015-05-28 10:44:20 +02:00
Hiroshi Mimaki
ed15477c74
Pacify MSVC warnings for numeric.c, proc.c, and symbol.c
2014-10-02 13:37:49 +09:00
Yukihiro "Matz" Matsumoto
b72e94fa6b
mrbconf.h option MRB_USE_ETEXT_EDATA to reduce memory.
...
on platforms with _etext and _edata, mruby can distinguish string literals so that it avoids memory allocation to copy them.
for example, on my Linux box (x86 32bit), memory consumed by mrbtest decreased from 8,168,203 to 8,078,848 (reduced 88KB).
2014-09-30 23:48:57 +09:00
Yukihiro "Matz" Matsumoto
bbf24b8463
mrb_sym2name_len() should initialize lenp even when proper symbol does not exist
2014-09-30 22:46:19 +09:00
Yukihiro "Matz" Matsumoto
7a7dcd12e5
remove unnecessary trailing comma to remove pre C99 declaration error with -Wdeclaration-after-statement
2014-09-30 22:40:55 +09:00
Yukihiro "Matz" Matsumoto
4a55b42984
O(1) mrb_sym2name_len(); close #2591
...
instead of adding sym->name hash table, linear symbol table is added, and reduced name->sym hash table size.
2014-09-30 20:15:27 +09:00
Yukihiro "Matz" Matsumoto
6057b2e378
change mrb_sym type from uint16_t to uint32_t
2014-09-15 01:48:08 +09:00
Yukihiro "Matz" Matsumoto
9b4ec380d2
use uint16_t instead of short; ref #2568
2014-09-05 00:47:22 +09:00
cremno
c219c2a15e
use RITE_LV_NULL_MARK for better readability
...
The comment didn't say why the length is reserved.
Using RITE_LV_NULL_MARK makes things a bit clearer.
2014-08-29 15:53:52 +02:00
cremno
0e28f4b973
add sym_validate_len() to validate symbol length
...
This also fixes an off-by-one in mrb_check_intern().
2014-08-29 15:53:51 +02:00
cremno
89b27648dd
add symbol table overflow check
...
Since raising an error might intern a few new strings, some symbols need
to be reserved. 8 should be sufficient.
If the real limit has been reached, mrb_bug() is called.
2014-08-27 12:51:10 +02:00
Yukihiro "Matz" Matsumoto
206f89e209
add MRB_API modifiers to mruby API functions
2014-08-04 00:47:08 +09:00
Jun Hiroe
18d8f9d124
Refactor sym_equal() in symbol.c
2014-07-27 15:56:21 +09:00
Yukihiro "Matz" Matsumoto
c4268f67d0
UINT16_MAX as symbol length is reserved; ref #2294
2014-05-19 18:43:32 +09:00
kyab
1405f3a514
Fix MSVC warning for symbol.c
2014-04-29 13:00:11 +09:00
Yukihiro "Matz" Matsumoto
48f36d3f0e
better integer size assertion suggested by usak
2014-04-25 04:33:08 +09:00
Yukihiro "Matz" Matsumoto
320f0711f0
remove -Wsign-compare warnings
2014-04-25 02:33:33 +09:00
Yukihiro "Matz" Matsumoto
5138f62d6b
resolve conflict
2014-04-15 10:55:46 +09:00
Yukihiro "Matz" Matsumoto
10db9e62b6
fixed wrong use of pointer reference found by @tsahara; ref #2059
2014-04-14 16:48:23 +09:00
cremno
649081661a
reduce RSTRING_PTR usage
2014-04-14 00:58:34 +02:00
Yukihiro "Matz" Matsumoto
18ee842bea
replace memcpy() with a magic number by two assignments as suggested by @cremno; close #2048
2014-04-12 14:28:43 +09:00