github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
01:34 lucasb left 05:51 leont left 07:08 domidumont joined, p6bannerbot sets mode: +v domidumont 07:38 robertle joined 07:39 p6bannerbot sets mode: +v robertle
Geth MoarVM: 652b2f4a7e | (Stefan Seifert)++ | 5 files
Make space for BINARY_ENDIAN_(LITTLE|BIG|NATIVE) in (write|read)(u?int|num) ops

I missed the part of the specification that besides using little and big endian allowed for just using native encoding. This means a single bit is not sufficient and we need two bits for encoding endianness. Therefore we need to adjust the size values. To get around bootstrap issues we treat the size value different depending on the little endian flag being set, as all current users are missing that but are going to set it.
08:22
MoarVM: 73b079c375 | (Stefan Seifert)++ | 3 files
Support endian switching in writeu?int
08:23
MoarVM: b8ba4707c8 | (Stefan Seifert)++ | 2 files
Support endian switching in readu?int
08:33 zakharyas joined 08:34 p6bannerbot sets mode: +v zakharyas
nine robertle: the latest commits in MoarVM + nqp could be enough to get us going on big endian systems 08:37
nwc10 MoarVM panic: Internal error: zeroed target thread ID in work pass 08:39
make: *** [gen/moar/stage2/QASTNode.moarvm] Error 17
make: *** Waiting for unfinished jobs....
that was with MVM_SPESH_NODELAY=1
trying again without
OK, without, it passes tests 08:45
er, nqp *builds* and passes tests
tests pass with MVM_SPESH_NODELAY=1
ASAN makes no comment either way. Just the paninc 08:46
I can't type
09:18 lucasb joined, p6bannerbot sets mode: +v lucasb
robertle nine: I just tried moar gb8ba4707c and nqp g176960303, but still get a "Bytecode stream version too high" during nqp build 09:47
are these the right versions to try? should I use some branch?
nine those are the commits 10:06
10:57 domidumont left 11:22 leont joined 11:23 p6bannerbot sets mode: +v leont 12:20 zakharyas left 12:45 domidumont joined 12:46 p6bannerbot sets mode: +v domidumont 12:47 domidumont1 joined, p6bannerbot sets mode: +v domidumont1 12:49 domidumont left 12:53 domidumont joined 12:54 p6bannerbot sets mode: +v domidumont 12:55 robertle left, domidumont1 left 13:49 robertle joined 13:50 p6bannerbot sets mode: +v robertle 14:04 zakharyas joined 14:05 p6bannerbot sets mode: +v zakharyas
dogbert2_ isn't this test a tad unnecessary? : github.com/MoarVM/MoarVM/blob/mast...rp.c#L6239 14:16
timotimo probably is 14:18
dogbert2_ perhaps it's optimized away
timotimo probably
14:39 brrt joined 14:40 p6bannerbot sets mode: +v brrt
brrt \o 14:42
dogbert2_ hello brrt 15:02
brrt ohai dogbert2_ 15:06
timotimo brrt: look over in #perl6 for someone who seems to have a good optimization opportunity for the jit 15:08
brrt timotimo: cool 15:09
15:18 domidumont1 joined, p6bannerbot sets mode: +v domidumont1 15:20 domidumont left 15:25 moony_ joined, p6bannerbot sets mode: +v moony_
Geth MoarVM/jit-expr-float: 74a6f5addb | (Bart Wiegmans)++ | 3rdparty/dynasm
[DynASM] Take in REX encoding fix

A recent fix in the way that DynASM encodes OPTREX and MARKREX annotations for large opcodes fixes SSE2 variable register encoding.
15:35
MoarVM/jit-expr-float: 85ec95b8e2 | (Bart Wiegmans)++ | 5 files
[JIT] Use bitmap for free register set

Registers are represented as small integers. A bitmap supports all the operations we need for registers in constant time and space.
brrt next thing is to store a bitmap per register class 15:36
15:37 moony_ left
Geth MoarVM: 0d5f389c35 | (Timo Paulssen)++ | src/spesh/candidate.c
Don't Dump "Facts" in "Before" Part Of Spesh Log
15:48
nine Oh how I hate that Debian release name nonsense. "Debian Power PC images updated with Etch and Lenny". Ah, yes, that must mean that they are....some releases (or not). No idea how current whatsoever. 15:49
brrt nine: i hear you 15:51
robertle nine: where did you get that? the sentence does not seem to make much sense even from a grammar point of view 15:52
nine robertle: oh that's no direct quote, so the grammar screw up is mine alone. 15:55
robertle ah, ok then 15:58
nine I meant this: blog.aurel32.net/46 15:59
The comments' dates suggest that it's more outdated than people.debian.org/~aurel32/qemu/powerpc/, so I go with the latter
Alas Failed to fetch ftp.debian.org/debian/pool/main/g/g...owerpc.deb 404 Not Found [IP: 130.89.148.12 80] 16:00
16:03 brrt left 16:07 leont left
robertle yeah wierd, the text says "etch and lenny" and when you follow the link you get wheezy and squeeze... 16:08
nine whatever they are 16:10
16:46 Kaiepi left 16:47 Kaiepi joined 16:48 p6bannerbot sets mode: +v Kaiepi 17:08 domidumont1 left 17:12 zakharyas left 17:19 Ven`` joined 17:20 p6bannerbot sets mode: +v Ven`` 17:25 brrt joined, p6bannerbot sets mode: +v brrt 17:30 domidumont joined 17:31 p6bannerbot sets mode: +v domidumont 17:32 japhb joined 17:33 p6bannerbot sets mode: +v japhb 17:38 brrt left 17:52 japhb left 17:54 japhb joined 17:55 p6bannerbot sets mode: +v japhb 18:11 Ven`` left
lizmat interesting: github.com/MoarVM/MoarVM/issues/1016 18:12
to me, at least :-)
18:16 Ven`` joined 18:17 p6bannerbot sets mode: +v Ven`` 18:21 japhb_ left 18:27 Ven`` left 18:36 moony_ joined, p6bannerbot sets mode: +v moony_ 18:38 Ven`` joined 18:39 p6bannerbot sets mode: +v Ven``
nine lizmat: not just you :) 18:44
lizmat and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2018/12/10/...li-landed/ 18:56
18:57 moony_ left
nine Ok, I've now wasted my whole evening on the old Debian image being neither able to install software nor to upgrade to something newer, the openSUSE installer image just hanging when loading the initrd and ubuntu installing for more than an hour just to helpfully tell me at the very end that it didn't install a boot loader 19:07
At this point I think, people who are interested in running rakudo on big endian machines should just contribute the necessary support 19:08
samcv lizmat, that is quite interesting 19:14
19:18 Ven`` left 19:22 Ven`` joined, Ven`` left 19:45 domidumont left
robertle nine: I would like to help, but I am not sure what I can do. I have a BE machine that I can run code on, but I guess hardcore moarvm hacking is beyond me... 19:52
nine robertle: are the tests I wrote actually correct? 19:55
robertle not sure I understand, how do I tell?
I have moar g0d5f389c3 and nqp g176960303. make install with moar works of course, using that in a make test of nqp gives me gist.github.com/robertlemmen/8cbc0...05fa58d30f 20:01
apart from a line number being different by one or two, the stack trace looks just like the one of 2018.11 20:03
back in about 20mins 20:05
20:06 robertle left 20:41 robertle joined 20:42 p6bannerbot sets mode: +v robertle
nine robertle: I mean the tests in t/moar/13-writeint.t does that actually reflect how big endian works? 20:50
robertle but how can I run this without a nqp.moarvm? building that fails with the exception above... 20:59
nine You don't need to run. Just to read the source :) 21:14
But looking at switch_endian in serialization.c I appear to have understood it correctly. 21:16
Which leaves me baffled on how it still can fail in the same way
robertle please don't forget that I don't understand nqp/moar at all! how can I find out what the operands to 64 const value = (MVMuint64)GET_REG(cur_op, 4).i64; 21:25
MVMuint64 const flags = (MVMuint64)GET_REG(cur_op, 6).i64;
sorry
what the operands to writeuint actually mean, especially "flags"? interpreting your test it looks like its the size in power of two plus the endianness 21:26
but in interp.c the lowest order bit is just ignored, and size is 1 << (flags >> 1) which does not seem to match what the test suggests 21:27
but I am probaby reading this wrong...
nine flags is (size in power of two) left shifted by 2 + endianness. Endianness is 2 for big endian, 1 for little endian and 0 for native endian 21:50
robertle: something more productive would be for you to check if OP(writeuint) actually enters the if ((flags & 3) == MVM_SWITCHENDIAN) branch 21:54
robertle where is that even? I am looking at interp.c, but that appears to be the wrong place 21:55
nine interp.c:5412 21:56
robertle ah, got it now
and under which conditions would you expect that branch to be taken? in the case where flags argument is 1, 5, 9? 22:08
nine yes 22:12
so on a big endian system all the time during compilation
robertle oh, so the else branch should never be taken here? I can just put an assert in there... 22:13
nine correct
the only code that should trigger that else branch on a big endian system is 13-writeint.t 22:14
lizmat m: use nqp; dd nqp::const(BINARY_SIZE_8_BIT) # nine, is that correct ?
camelia ===SORRY!=== Error while compiling <tmp>
Undeclared name:
BINARY_SIZE_8_BIT used at line 1
lizmat nine: aka, are the constants as described implemented, or are we supposed to calculate that from the types we want ? 22:15
nine lizmat: I haven't added those constants yet because 1 I'm lazy and 2 constants are soooo slow in nqp
lizmat FWIW, I can live without them... as long as we describe how $flags should be constructed
nine BINARY_ENDIAN_LITTLE=1, BINARY_ENDIAN_BIG=2, BINARY_SIZE_8_BIT=0, BINARY_SIZE_16_BIT=4, BINARY_SIZE_32_BIT=8, BINARY_SIZE_64_BIT=12 22:17
lizmat nine: is there a BINARY_ENDIAN_NATIVE ? 22:20
robertle nine: I put an assert in that branch, does not trigger. I then put one in the other branch, does not trigger either. I run moar under gdb and put a breakpoint in the part before the branch, does not trigger either 22:23
are you sure writeuint is even used for this?
off to bed now 22:24
22:24 robertle left
lizmat afk& 22:25