github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
timotimo gist.github.com/timo/d84b2ea40ac0e...b4c01c8a44 - has an example of decont now 00:14
00:15 sena_kun joined 00:16 Altai-man_ left 01:17 Altai-man_ joined 01:19 sena_kun left 02:50 squashable6 left 02:53 squashable6 joined 03:17 sena_kun joined 03:20 Altai-man_ left 03:26 lucasb left 04:19 Altai-man_ joined 04:21 sena_kun left 05:03 sena_kun joined 05:05 Altai-man_ left 05:41 Altai-man_ joined 05:43 sena_kun left 06:16 sena_kun joined 06:18 Altai-man_ left 06:24 Altai-man_ joined 06:26 sena_kun left 06:58 sena_kun joined 06:59 Altai-man_ left
nwc10 good *, #moarvm 07:14
07:15 leont joined 07:25 Altai-man_ joined 07:27 sena_kun left 07:58 sena_kun joined 08:00 Altai-man_ left 08:24 Altai-man_ joined 08:26 sena_kun left 09:44 MasterDuke joined 10:25 sena_kun joined 10:27 Altai-man_ left 10:43 Kaiepi left, Kaiepi joined 10:53 patrickb joined 10:54 Kaiepi left 11:12 Kaiepi joined 11:23 MasterDuke left 11:43 patrickb left, MasterDuke joined 12:25 zakharyas joined, Altai-man_ joined 12:27 sena_kun left 13:44 MasterDuke left 14:11 lucasb joined
Geth MoarVM: c0ed9e32b4 | (Timo Paulssen)++ | 2 files
make extop marks reachable again in MVM_op_get_mark
14:24
MoarVM: 7a2881a85b | (Timo Paulssen)++ | src/debug/debugserver.c
debugserver: implement simplest decont operation

only when no code has to be run (like for Proxy)
14:27 sena_kun joined 14:28 Altai-man_ left 14:55 Altai-man_ joined 14:58 sena_kun left 15:01 [Coke] left 15:11 [Coke] joined 15:12 sena_kun joined 15:14 Altai-man_ left 15:17 patrickb joined 15:49 Altai-man_ joined 15:52 sena_kun left 15:57 MasterDuke joined 16:11 patrickb left 16:25 sena_kun joined 16:26 Altai-man_ left 16:30 Altai-man_ joined 16:33 sena_kun left 16:48 sena_kun joined 16:49 Altai-man_ left 17:12 Altai-man_ joined 17:14 sena_kun left 17:42 MasterDuke left 17:49 squashable6 left, sena_kun joined 17:52 Altai-man_ left, squashable6 joined 18:11 zakharyas left 18:18 Ven`` joined 19:40 lucasb left 19:49 Altai-man_ joined 19:51 sena_kun left 20:02 MasterDuke joined 20:09 patrickb joined 20:23 sena_kun joined 20:24 Altai-man_ left 20:33 Ven`` left 21:17 Altai-man_ joined 21:19 sena_kun left 22:07 patrickb left 22:31 leont left
timotimo there's one single op in moarvm that has "all" 8 operands 22:59
that's asyncwritebytesto
there's a few others, but all of them are DEPRECATED_* ops 23:00
the MVM_op_infos blob is like 29 kbytes big
shaving one operand off of every op would free up 922 bytes 23:01
MasterDuke heh. looks like between nqp and rakudo it's used exactly once 23:02
timotimo once we have dispatch, we could turn at least this one op into a dispatcher 23:03
now, which ops have 7 operands?
aha a couple more 23:04
sp_add_I, sp_sub_I, sp_mul_I, nativecallbuild, and asynclisten
and asyncudp 23:05
i assume @values in MAST/Ops.nqp is the operand values 23:13
and there are plenty above 128, so it's definitely using all 8 bits in there
m: say 1656 R- 3735 23:16
camelia 2079
timotimo m: say (1656 R- 3735) / 824
camelia 2.523058
timotimo ^- the average op uses 2.5 operands
m: say 824 * 8 - (1656 R- 3735) 23:17
camelia 4513
timotimo m: say 824 * 8
camelia 6592
timotimo that's not the right way around 23:18
m: say 824 * 8 R- (1656 R- 3735)
camelia -4513
23:18 sena_kun joined
timotimo could save 4 kbytes if the operands were var-len, though then they'd have to live in a separate array and have an index into that in the op info itself 23:18
m: say 1656 R- 3735 23:19
camelia 2079
23:19 Altai-man_ left
timotimo it'd have to be 16 bit at least, so as big as 2 operands still 23:19
m: 4513 - 824 * 2
camelia WARNINGS for <tmp>:
Useless use of "-" in expression "4513 - 824 *" in sink context (line 1)
timotimo m: say 4513 - 824 * 2
camelia 2865
timotimo so actually only 2.5 kbytes saved after all 23:20
i'm looking at this mostly because bytecode validation costs quite a few cycles during startup 23:21
and that has to go through the op info and grab some things out
oh? there's a 6 bytes big hole between opcode and op name 23:26
22128 bytes big now 23:29
that's significantly better!
so i ran nqp-m -e '' three times with callgrind and got a sum of 236_895_057 Ir 23:31
MVM_validate_static_frame was 75_439_617 of that 23:32
now it's 237_461_358 in total, interesting! 23:33
so that looks kind of like it got worse
76_055_621 Ir on MVM_validate_static_frame, too