ixje
|
7ec0c1155c
|
vm: expose Context slots, hide Set/ClearRefs on Slot, deprecate Dump*Slot methods
Signed-off-by: ixje <erik@coz.io>
|
2024-11-15 11:05:42 +01:00 |
|
Roman Khimov
|
ae2395f55f
|
vm: simplify (slot).Set code
Refcounter handles nil items just fine.
|
2022-05-17 16:26:22 +03:00 |
|
Roman Khimov
|
0d93b353e6
|
vm: count initial Null slot variables as well
Match C# behavior. Thanks to @ixje for finding this.
|
2022-05-16 17:42:57 +03:00 |
|
Elizaveta Chichindaeva
|
28908aa3cf
|
[#2442] English Check
Signed-off-by: Elizaveta Chichindaeva <elizaveta@nspcc.ru>
|
2022-05-04 19:48:27 +03:00 |
|
Roman Khimov
|
ee05f73b6f
|
vm: simplify slot and make it private
Hiding refcounter inside a slot is actually a good idea, but it makes the
structure somewhat bigger, especially given that the refcounter is the same
and belongs more to VM or Context. New structure is a bit more efficient:
name old time/op new time/op delta
ScriptFibonacci-8 672µs ± 2% 644µs ± 0% -4.15% (p=0.008 n=5+5)
ScriptNestedRefCount-8 1.08ms ± 1% 1.05ms ± 2% -2.56% (p=0.008 n=5+5)
ScriptPushPop/4-8 1.52µs ± 1% 1.47µs ± 1% -3.14% (p=0.008 n=5+5)
ScriptPushPop/16-8 3.66µs ± 1% 3.54µs ± 1% -3.24% (p=0.008 n=5+5)
ScriptPushPop/128-8 24.7µs ± 1% 23.2µs ± 1% -6.14% (p=0.008 n=5+5)
ScriptPushPop/1024-8 183µs ± 1% 173µs ± 1% -5.01% (p=0.008 n=5+5)
name old alloc/op new alloc/op delta
ScriptFibonacci-8 114kB ± 0% 114kB ± 0% ~ (p=0.079 n=4+5)
ScriptNestedRefCount-8 241kB ± 0% 241kB ± 0% ~ (p=0.333 n=5+4)
ScriptPushPop/4-8 160B ± 0% 160B ± 0% ~ (all equal)
ScriptPushPop/16-8 640B ± 0% 640B ± 0% ~ (all equal)
ScriptPushPop/128-8 8.70kB ± 0% 8.70kB ± 0% ~ (all equal)
ScriptPushPop/1024-8 73.2kB ± 0% 73.2kB ± 0% ~ (all equal)
name old allocs/op new allocs/op delta
ScriptFibonacci-8 3.17k ± 0% 3.17k ± 0% -0.03% (p=0.008 n=5+5)
ScriptNestedRefCount-8 10.7k ± 0% 10.7k ± 0% ~ (all equal)
ScriptPushPop/4-8 8.00 ± 0% 8.00 ± 0% ~ (all equal)
ScriptPushPop/16-8 32.0 ± 0% 32.0 ± 0% ~ (all equal)
ScriptPushPop/128-8 259 ± 0% 259 ± 0% ~ (all equal)
ScriptPushPop/1024-8 2.05k ± 0% 2.05k ± 0% ~ (all equal)
It'd be especially nice to internalize static slot, but as we can't compare
slices it's not possible.
|
2021-12-01 21:36:25 +03:00 |
|
Anna Shaleva
|
6da458365d
|
vm CLI: allow to dump slots
|
2021-09-09 13:45:10 +03:00 |
|
Roman Khimov
|
ff7d594bef
|
vm: store refcounter directly in VM
VM always has it, so allocating yet another object makes no sense.
|
2021-08-11 13:25:58 +03:00 |
|
Evgenii Stratonikov
|
6ecd1ae437
|
vm: allow to initialize static slot in method
|
2020-07-27 13:00:35 +03:00 |
|
Evgenii Stratonikov
|
c0d7b9d234
|
vm: clear references on context unload
Remove argument and local references from the reference counter when
returning from function.
|
2020-07-24 10:41:40 +03:00 |
|
Anna Shaleva
|
783f5ecb01
|
vm: move StackItem to a separate package
closes #912
|
2020-06-08 13:27:08 +03:00 |
|
Evgenii Stratonikov
|
2cec088f08
|
vm: add reference counter to slots
|
2020-05-12 16:15:14 +03:00 |
|
Evgenii Stratonikov
|
81cbf183af
|
vm: implement storage slots
|
2020-05-12 16:15:14 +03:00 |
|