github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
Geth MoarVM/nqp-mbc: 25d12cdec6 | (Stefan Seifert)++ | 2 files
Seed the deserialization string heap for getting correct indexes

Originally there were two pieces of code for collecting the string heap: the data serialization (nqp::serialize) and the MAST compiler. The strings collected during serialization were used as seed for the MAST compiler's string heap. MVM_serialization_serialize assumed that it was passed an empty string heap to fill. Since we now assemble bytecode (and the string heap) before serializing data, we have to flip this. Serialization's string heap is now seeded with the bytecode compiler's.
09:55
MoarVM/nqp-mbc: da09a981a6 | (Stefan Seifert)++ | tools/update_ops.p6
Use unbox_u to get at MAST::Local's $!index to avoid the coercion dance
ItchyPlant Hello 12:16
So I'm still trying to compile MoarVM on AIX 7.1...
After I added the "-bnoquiet" to Makefile's LDFLAGS and tried "make" again, I got this: 12:17
ld: 0711-318 ERROR: Undefined symbols were found.
The following symbols are in error:
Symbol Inpndx TY CL Source-File(Object-File) OR Import-File{Shared-object}
RLD: Address Section Rld-type Referencing Symbol
----------------------------------------------------------------------------------------------
.uv__hrtime [10] ER PR 3rdparty/libuv/src/unix/loop.c(3rdparty/libuv/libuv.a[loop.o])
0000009c .text R_RBR [834] .uv_loop_init
.uv__hrtime [90] ER PR 3rdparty/libuv/src/unix/thread.c(3rdparty/libuv/libuv.a[thread.o])
00000cb0 .text R_RBR [1224] .uv_cond_timedwait
.uv__hrtime [92] ER PR 3rdparty/libuv/src/unix/core.c(3rdparty/libuv/libuv.a[core.o])
00000010 .text R_RBR [1004] .uv_hrtime
00000620 .text R_RBR [1133] .uv_run
00000934 .text R_RBR [1133] .uv_run
000009c8 .text R_RBR [1133] .uv_run
00000a38 .text R_RBR [1350] .uv_update_time
.uv__hrtime [32] ER PR 3rdparty/libuv/src/unix/aix.c(3rdparty/libuv/libuv.a[aix.o])
000004c4 .text R_RBR [1417] .uv__io_poll
.uv_free_cpu_info [4] ER PR src/platform/sys.c(src/platform/sys.o)
00000024 .text R_RBR [1466] .MVM_platform_cpu_count
ER: The return code is 8. 12:18
ld: 0711-317 ERROR: Undefined symbol: .uv__hrtime
ld: 0711-317 ERROR: Undefined symbol: .uv_free_cpu_info
collect2: error: ld returned 8 exit status
make: *** [Makefile:602: libmoar.so] Error 1
...and yes, the "uv__hrtime" definition is missing from "3rdparty/libuv/src/unix/loop.c"
it should fit with requiement defined in this header: 12:19
3rdparty/libuv/src/unix/internal.h:242:10: note: declared here
uint64_t uv__hrtime(uv_clocktype_t type);
Do you know what should I add to 3rdparty/libuv/src/unix/loop.c about "uv__hrtime"? :) 12:20
ugexe hrtime is intermittedly busted on libuv 12:26
and AIX
github.com/libuv/libuv/issues/2041
ItchyPlant yes, it is something, and it is kind of a known issue... but hard to get (for me) what to do, what to include or to remove from MoarVM's sources :/ 12:33
ugexe any guesses what reini urban meant when he said "Same for the new jit template idea, which does not scale. At all."? as in -- does anyone know what compromise may have been made that he does not agree with? Something resulting in high register pressure? 15:57
jnthn The claim feels to vague to say anything sensible about. 16:00
Doesn't scale in what sense?
jnthn *too vague 16:01
Time complexity when compiling larger pieces of code? Portability to new architectures? Number of people who can contribute? 16:02
jnthn I'd be surprised if the first is true, given it largely implements published algorithms from well-regarded academic papers. The second doesn't feel true to me either, given the design allows re-use of much of the code in such an effort. And the last one we have contributor data to suggest isn't the case. 16:04
ugexe there was a back-and-forth between you, reini, and brrt in comments of the JIT branch before it was merged. i think he actually supplied some reasons there, but i cannot find the conversation now 16:07
jnthn Hmm, I don't recall the conversation either (but that may well be because I'm largely dismissive towards reini's views by this point; maybe there's occasionally signal, but most of it feels like noise to me) 16:08
ugexe found it: github.com/MoarVM/MoarVM/pull/625#...t-22390798 16:19
well, one of them 16:20
timotimo if we create or fastcreate an object, shouldn't we be able to say "it's a p6opaque that's freshly created, and if it were to get a mixin, we'd deopt, so we can turn all p6oget and p6obind into get and bind"? 16:22
jnthn Yes, that's possible 16:23
Though again, it's not clear that PEA won't just rip out all those cases anyway
We normally can lower to a fastcreate 16:24
timotimo right, i'm of course looking at the post optimize output, so at that point perhaps it's really still a getattr 16:25
hm, but it'll have to understand fastbox, too. that shouldn't be hard, though 16:26
jnthn timotimo: I think it'd be better to wait and see if PEA does nail those cases. Optimizations cost something; if we can get the same effect from one of them, that's better. 16:27
timotimo OK 16:28
the "split nativeref decont into decont_* and box_*" op is ifne to go into master after the release, then? 16:29
opt* fine* 16:30
jnthn Yes
That'll help already and is good for the EA
resting, eating, etc. & 16:31
timotimo rebased and cleaned up the branch 16:32
Geth MoarVM/nativeref_decont_split: d6316e7f0c | (Timo Paulssen)++ | src/spesh/optimize.c
decont on nativeref shall become decont_* + box_*

this way we should later be able to use the deconted value directly without boxing it first, and then more easily get rid of a native ref taking instruction.
MoarVM/nativeref_decont_split: 3114764ca3 | (Timo Paulssen)++ | src/spesh/optimize.c
set flags & known type on spesh slot

unblocks optimizing the box_* into a fastbox, in the case of box_i it will even go through the int cache.
timotimo jnthn: have a good rest and noms :)
timotimo man, this really itches in my fingers ... Range's elems method has getattrref_i, decont_i, fastbox_i, bool_I 16:52
oh, and then immediately unless_i on the result of bool_I, too 16:54
nine timotimo: I won't keep you from improving this :) 19:06
timotimo we'll probably want to first get the other optimizations in to see what actually needs its own optimization 19:25
dogbert17 hmm, a SEGV which disappears when the JIT is turned off 19:49
dogbert17 more specifically when the EXPR JIT is turned off 19:57
dogbert17 MVM_SPESH_NODELAY=1 MVM_SPESH_BLOCKING=1 ./perl6 t/spec/S32-io/IO-Socket-Async.t 19:59
timotimo hm, the jit bisector assumes that turning off the expr jit at the right moment makes things work 20:49