| IRC logs at
Set by AlexDaniel on 12 June 2018.
00:39 Kaiepi left 00:42 Kaiepi joined 03:56 evalable6 left, linkable6 left, linkable6 joined 03:57 evalable6 joined 06:13 coverable6 left, releasable6 left, reportable6 left, committable6 left, statisfiable6 left, notable6 left, squashable6 left, quotable6 left 06:15 coverable6 joined, releasable6 joined, reportable6 joined, committable6 joined, statisfiable6 joined, notable6 joined, squashable6 joined, quotable6 joined
nwc10 good *, #moarvm 08:30
MasterDuke aloha 09:30
09:32 Altai-man_ joined
MasterDuke C question. i have a function that returns MVMint64. but i want a way to indicate it doesn't have a valid value to return. if i return `(MVMint64)NULL`, can i safely `if (some_func() == NULL)` ? 09:33
hm, i think that was not a smart question 09:42
nine Usually 0 is a very valid integer :) 10:03
MasterDuke: what are you working on?
MasterDuke nine: trying to do correctly 10:22
though timotimo pointed out it may be moot anyway if all optional parameter jitting is going to be reworked 10:23
but i'm not sure if it's possible to change the return value of MVM_args_get_optional_pos_int to MVMint64 since checking the .exists will have to happen there 10:24
10:26 Altai-man_ left, sena_kun joined
nine MasterDuke: looks like I already suggested a proper fix? 10:29
MasterDuke oh. ha. 10:30
hm, i guess then MVM_args_get_optional_pos_int needs to return some boolean value to make the cur_op decision 10:33
or will it be a constant value? i've never really learned how cur_op works 10:38
nine Yes and that will complicate doing it in the JIT 10:39
Yes for needing to return a bool because of that cur_op decision
Basically param_op_* are conditionals causing jumps 10:40
10:47 hankache joined 10:59 hankache left 11:14 Altai-man_ joined 11:17 sena_kun left
MasterDuke nine: can i just repeat the cur_op logic in emit.dasc with get_cur_op? 12:06
12:26 Kaiepi left 12:27 Kaiepi joined 12:28 Kaiepi left
nine MasterDuke: no, it will be closer to if_i 12:56
Handling of optional arguments is a branching operation, i.e. it changes control flow. Now control flow is handled via cur_op in the interpreter, while the JIT uses jumps and labels. 12:58
This also means that we have to take deoptimization into account. For this there may be existing infrastructure that can just be used. Or it may be something that needs handling on a case-by-case basis. I don't know. 13:00
13:15 sena_kun joined 13:16 Altai-man_ left
jnthn I'm still unconvinced by trying to JIT the param_* ops. 14:15
They mostly get specialized away, and I'd rather we fix the causes of them not being.
MasterDuke it's turning out to be a little more complicated than i'd anticipated. and yes, the original code that was bailing doesn't have any bails anymore (from param_op_* ops) because of spesh 14:17
i'm just going to close
jnthn: but while you're here. should i try to re-invogorate and ? or just close them also 14:18
jnthn is potentially a step towards making them not segfault on multi-threaded bause... 14:19
14:20 Kaiepi joined
MasterDuke yeah, that's also the simpler one to update and/or expand 14:20
jnthn Does the string one show a decent speedup in benchmarks? 14:21
MasterDuke it's been to long, i don't remember
i can try to update it enough to get some benchmarks 14:22
sounds like there's enough of an interest in them to at least get their branches rebased to master 14:24
nine Btw. the commits don't mention why the change is a good idea. As a reviewer I wouldn't know why using the FSA is better 14:26
timotimo i was wondering how we can have a repr-defined flag if we also have inlined object bodies in p6opaque 14:48
since for that we'll only have one header withh flags for multiple things
or is that not applicable to VMArray anyway?
jnthn I'd think they're only usable on things that are exclusively reference types 15:00
15:14 Altai-man_ joined 15:16 sena_kun left
timotimo OK, if we keep that limitation in mind, that should be fine 15:17
MasterDuke is it safe to memmove stuff that's been allocated by the fsa? 16:02
jnthn MasterDuke: Should be, it's just a safer memcpy 16:07
timotimo it's memcpy but allows for from and to to overlap, right? 16:08
jnthn Yeah, iirc 16:09
MasterDuke ok, good 16:10
hm. if the vmarray uses the FSA, what would/should unmanaged_size return? 16:19
timotimo the same as before, IMO 16:23
it'll just be more accurate because the FSA has less per-item overhead and we don'- count the overhead of whatever malloc impl we have 16:24
MasterDuke good, i'm liking these answers (expect that i still don't know why i now get a `free(): invalid pointer` in slice, when i didn't before) 16:25
i've rebased my use_fsa_for_vmarray branch 16:30
16:48 zakharyas joined
nine So, I've worked some more on my gcc plugin for detecting GC issues and when run on this file: it prints: 16:49
Missing root for `param` in test-checker.c:47
Missing root for `bar` in test-checker.c:57
Missing root for `param` in test-checker.c:57
Missing root for `bar` in test-checker.c:54
16:50 zakharyas1 joined 16:53 zakharyas left 17:15 sena_kun joined 17:17 Altai-man_ left 17:27 MasterDuke left 17:44 MasterDuke joined
Geth MoarVM/gc_measurement_debughelper: c22047356e | (Timo Paulssen)++ | 3 files
add a layer of indirection between call graph and types/sf
19:14 Altai-man_ joined 19:17 sena_kun left
[Coke] pmurias; can you throw a bit of documentation for the opcode into docs/op*? that will make it vanish from my sight. :) 19:22
20:02 zakharyas1 left 20:47 zakharyas joined 21:12 zakharyas left 21:15 sena_kun joined 21:17 Altai-man_ left
Geth MoarVM/gc_measurement_debughelper: 0d8fae3a00 | (Timo Paulssen)++ | 2 files
use FSA for alloc and dealloc counts
23:14 Altai-man_ joined 23:17 sena_kun left