[Coke] =-[p0 01:15
07:11 kjs_ joined
timotimo i don't know that emoticn 07:12
emoticon*
07:18 Ven joined 07:19 FROGGS joined 07:20 lizmat joined 07:27 zakharyas joined 07:43 dalek joined 07:46 FROGGS joined 07:53 kjs_ joined
timotimo how do we feel about the interp having checks for REPRs built-in vs the functions that get called from the interpreter doing REPR checks? 08:11
i can probably build a function "emit reprcheck" that throws an exception just like thet interpreter would 08:14
for the jit, that is
brrt, do you think it'd be terrible to implement lt_s, gt_s, le_s, ge_s and cmp_s as "append_call_c + append_primitive" and having the == 1/>= 0/== -1/<= 0/NOP part in emit.dasc with a comment saying "the actual comparison was already handled by a call to C"? 08:26
the terrible part being "there's an implementation of gt_s in the .dasc file that doesn't do anything with strings! wtf!" 08:27
i think that'd be okay 08:28
08:38 kjs_ joined 09:01 FROGGS[mobile] joined 09:02 FROGGS[mobile]2 joined, lizmat joined
dalek arVM: 667b7b5 | jnthn++ | src/ (3 files):
Ensure thread ID is available after termination.

This has never worked properly, but a recent change in join/GC meant that the Rakudo spectests uncovered it.
09:28
arVM: fd1ed2e | jnthn++ | src/main.c:
Add MVM_CROSS_THREAD_WRITE_LOG to usage message.
09:35
Heuristic branch merge: pushed 81 commits to MoarVM/x64-dynamic-registers by bdw 09:40
arVM: 227c556 | jnthn++ | src/instrument/crossthreadwrite.c:
Don't accidentally the newline to STDOUT.
09:42 brrt joined
brrt i'm somewhat cautiously optimistic i've fixed the RSP/R12 encoding issues 09:42
09:43 zakharyas joined
timotimo sounds good! :) 09:45
jnthn brrt++ # nice
x64 instruction encoding sounds...hairy
brrt it is
and brittle
actually, it'd be ok without this exception 09:46
timotimo in addition to gt_s and friends, i'll also add the sc related ops
brrt: how do you suggest it'd be easiest to handle ops that have a repr check + exception throw in their interp.c block?
brrt for some reason though, github doesn't seem to propagate my push
(do (when (ne (^repr_id obj) (const (&QUOTE MY_EXPECTED_REPR_ID) ptr_sz)) (^throw_adhoc (&MSG not the right repr))) (call (^repr_func blabla) etc) 09:48
yes, that's the world's worst LISP :-P 09:49
timotimo oh
i was thinking of the old jit at this point :)
dalek arVM: 1cf0479 | jnthn++ | src/core/interp.c:
Try to get PC on valid instruction in CTW logging.
timotimo unless of course you think the new jit will be up soon enough :D
brrt well, i hope at least 09:51
ok, clearly doesn't quite kick it yet 09:52
i'm not terribly surprised as it is quite brittle code
too bad, i was too eager yet 09:53
jnthn Ouch ouch ouch ouch damn 10:05
I just discovered where a bunch of our thready crashes come from 10:06
FROGGS ?
jnthn We have a race condition around following ->outer chains 10:07
FROGGS uhh
that would explain some of the error messages, yeah
jnthn And it just got more noticable
Because yesterday I fixed a code-gen bug that meant we takeclosure'd loads of things we should not have
timotimo oh! 10:08
jnthn Which meant the frames lived until the next GC run
Rather than dying immediately 10:09
And so hid the races
JimmyZ we have a 'takeclosure' roadmap on moarvm.org :P
jnthn JimmyZ: That's mostly about teaching spesh to understand it; this is something else
brrt ouch, that hurts 10:10
timotimo well, i'm glad i showed you the way to this sillyness in our codegen :)
JimmyZ oh, I thought it's about the api itself.
jnthn timotimo: Yes, that was a good hint and helped us get Text::CSV down to better than before we merged glr :)
timotimo yup <3 10:11
jnthn I'm glad to have this issue uncovered and caught nicely in the debugger, 'cus it will have been a source of much more occasional instability
But yeah, how to fix it is...interesting
Or how to fix it *well* is, anyway 10:12
ohh, I wonder if... 10:13
timotimo i wonder why 10:14
yesterday you told me 'bout the blue, blue sky
dalek arVM/even-moar-jit: 491c1c9 | brrt++ | src/jit/x64/tiles.dasc:
Offset is a 32 bit integer
arVM/even-moar-jit: e863e0d | brrt++ | 3rdparty/dynasm:
Update DynASM to deal with r12/rsp irregularity

RSP and R12 registers are encoded 'specially' because in legacy x86 RSP would have a special access mode.
timotimo oh, look, the push came through
brrt yeah
we still aren't fully correct though
but we at least don't SIGSEGV in a silly way 10:15
ok, we're not out of the woods yet 10:17
:-)
mov r8,QWORD PTR [rbp-0x30] 10:20
to the tune of the ting tings: that's not my code 10:21
jnthn
.oO( that code is totally over-r8-ed )
brrt i don't emit negative offsets, and certainly not from rbp 10:23
y does this happen to me :-(
gdb can tell fortunately
timotimo so another bit of wrong codegen, i suppose? 10:39
or ... code coding?
jnthn Darn, the crash vanishes under valgrind... :( 10:40
10:50 Ven joined
timotimo valgrind prevents the memory from being overwritten by bogus data? 10:50
jnthn Or slows things down too much to race 10:52
timotimo ah 10:54
yeah, that sounds likely, indeed
my jit addendae don't cause spectest fallout 11:13
jnthn Aha 11:15
The interesting race is actually in the invocation sequence it seems
timotimo rather than returning? interesting 11:16
jnthn Yeah, we read the outer to invoke with 11:17
But don't increment it at that point
Increment its refcount that is
That happens later
By which time it may already have been killed
Then we try to re-use it 11:18
dalek arVM: 9f140d8 | timotimo++ | src/ (3 files):
jit continuationreset and continuationcontrol

these ops have to be set "invokish" for this to work
jnthn Brining a dead frame back to life
dalek arVM: 9f038d4 | timotimo++ | src/jit/ (2 files):
jit string comparison ops
timotimo so how come the solution isn't to just put the increment a bit earlier?
jnthn Question is if we can without creating a data race 11:19
Well, without *retaining* it 11:20
timotimo mhm, we really don't want to go atomic or even worse take a lock for invocations 11:21
jnthn But making it rarer
Right :) 11:22
Anyway, now I understand what's going on, at least.
It explains quite a bit.
Anyway, lunch, and got a few other bits to do this afternoon. 11:23
Will have to ponder this one a bit
timotimo idly wonders about having bitwise reference counts rather than numeric 11:24
perhaps a little spinlock could be less than terrible 11:26
perhaps with a little spinlock we can also get rid of the atomic inc and dec for the refcount
huh, where'd my "skip unshift_n and push_n because they're wonky" change to? 11:29
go*
JimmyZ timotimo: demin.ws/blog/english/2012/05/05/at...ock-mutex/ 11:31
timotimo oh, wow 11:32
the mutex has so much overhead?
amazing
11:49 tadzik joined
dalek arVM: 00b3dfd | timotimo++ | src/jit/graph.c:
don't devirt push_n or unshift_n for now

because of a strange bug resulting in "expected num register"
11:52
arVM: 0c250b1 | timotimo++ | src/jit/graph.c:
remove a solitary trailing whitespace
11:54 kjs_ joined
timotimo brrt got an idea what kind of speedup we can expect for not so tight loops from exprtree jit? 12:11
12:35 brrt joined
timotimo i only recall the very old estimate from hand crafted asm 12:48
but i also don't remember what the factor was 12:50
brrt no, i have no idea. hand crafted asm did really well. on a high level, i kind of know how we could get there
timotimo istr 6x?
brrt 5x versus the current jit, iirc
timotimo mhm 12:51
brrt but i cannot overemphasisze that we are really, really, really far from there
timotimo can we expect 2x as soon as the code gen runs?
you have seenbthe asm it generatesbalready
mhhh
if we do not regress, we can at least flip the switch on graph.c 12:52
brrt no, we can't expect 2x 12:53
we might expect 0.95x, more likely
timotimo when the rough code generation problems have gone, maybe i can look into implementing missing bits here or there
ugh
brrt hmmm
timotimo oj afk for a big bit
brrt i'm not sure this was a codegen bug after all
i see i do emit rbp-relative code
see you! 12:54
(i've though ahead on how to implement the optimizer)
fwiw, using lispy code fragments like i said earlier is not what i'm going to do 12:55
has any of you tried gdb mode within emacs? it works quite well actually 12:58
FROGGS I'm not an emacser...
brrt well, what do you use? 12:59
emacs is actually turning more IDE-like as you go along 13:00
if you want it, at least
FROGGS I use SciTE 13:03
I've seen lightning talks about emacs... though, I don't feel like changing my editor :o) 13:04
jnthn I keep meaning to give Visual Studio Code a try given it supports Perl 6 :) 13:05
brrt it what 13:31
visual studio code supports perl 6 ? :-o :-o
jnthn It claims to have syntax highlighting for Perl 6
brrt awesome 13:32
JimmyZ url? 13:35
found it
[Coke] url? I haven't found it. :) 13:55
JimmyZ blogs.perl.org/users/andrew_shitov/...ditor.html 13:59
[Coke] tries out visualstudio for os x... wonder if I can build moarvm here... 14:28
this feels a lot like atom. 14:29
jnthn I'm not surprised. ;)
It's based on Electron too iirc 14:30
tadzik everything HTML5 is the same :P
FROGGS I bet they use the Perl 6 syntax highlighting hoelzro++ did 14:31
JimmyZ adobe has a editor to, it is on github
[Coke] ... I am lost. jnthn, do you use the studio to build, or command line tools?
JimmyZ *too 14:32
jnthn [Coke]: command line tools
14:34 dalek joined
btyler_ hi folks. just want to check in before I go filing more PRs like this: github.com/MoarVM/MoarVM/pull/258 -- is this a useful thing, or would you rather I just file issues with crashing P6 snippets? 14:41
JimmyZ Didn't we fix it already? 14:43
btyler_ we fixed write,close 14:44
this is close,close and close,write
JimmyZ oh 14:45
btyler_: PRs are wellcome, but it'd be nice to have some test in roast too :P 14:47
14:48 dalek joined
btyler_ oh, cool, thanks for reminding me -- yes, that makes lots of sense 14:49
FROGGS jnthn: VSC is awesome! i.imgur.com/T7AcHpv.png
jnthn: it shows the modified line (compared to git) with a blue bar and the branch I am on (at the buttom) 14:50
jnthn FROGGS: Is it actually doing Perl 6 highlighting there or Perl 5? :)
[Coke] based on the snapshot, that's perl5 14:51
it would say "Perl 6" in the corner.
did seem to work on .p6 files, anyway. 14:52
FROGGS ohh
JimmyZ you need use v6! 14:53
FROGGS even when I select Perl 6, it gets colonpairs wrong for example 14:57
but it is okay 14:58
ohh nice, it also shows changed lines (compared to git) on the scrollbar
that's quite handy 14:59
hoelzro btyler_++ # fixes
dalek arVM: 8fd8663 | (Francois Perrad)++ | src/ (3 files):
fix indentation
15:05
arVM: 383de34 | (Francois Perrad)++ | src/jit/graph.c:
remove useless &
arVM: 0607cb2 | (Francois Perrad)++ | src/6model/reprs/CUnion.c:
remove unless header file
arVM: ea3d8a1 | (Francois Perrad)++ | src/ (3 files):
include with angle

math.h & sys/wait.h are part of standard libraries
MoarVM: 9099796 | paultcochrane++ | build/Makefile.in: 15:09
MoarVM: Remove more config and generated files in distclean target
MoarVM:
MoarVM: As mentioned in GH #139, the `realclean` target doesn't clean everything up.
MoarVM: Actually, it seems that the `distclean` target is the one which is supposed
MoarVM: to clean up the configuration and generated files (at least in MoarVM).
MoarVM: This wasn't happening completely and the current commit removes all files
MoarVM: still needing to be cleaned.
MoarVM:
MoarVM: The file `src/jit/emit_posix_x64.c` is force-removed since it might not
MoarVM: exist on non-POSIX systems. The `config.log` and `config.status` files
MoarVM: within the atomic ops library are also removed, although they really should
MoarVM: 9b805c3 | (Ben Tyler)++ | src/io/asyncsocket.c:
MoarVM: Async sockets: handle close,close and close,write.
MoarVM:
MoarVM: This avoids a segfault in case of Perl 6 code like this:
MoarVM:
15:10 dalek joined 15:57 kjs__ joined 16:54 tadzik joined 17:25 tokuhiro_ joined 17:29 brrt joined 17:58 brrt joined 18:22 FROGGS joined 18:26 tokuhiro_ joined
FROGGS o/ 18:27
japhb o/ 18:30
timotimo o/ 18:33
brrt \o 19:06
i ++ the removal of src/jit/emit_posix_x64.c, which i also do in the even-moar-jit branch 19:07
so i suppose that's paultcochrane++ :-)
dalek Heuristic branch merge: pushed 22 commits to MoarVM/even-moar-jit by bdw 19:54
19:57 ggoebel joined 20:28 tokuhiro_ joined 22:23 tokuhiro_ joined 23:12 lizmat joined 23:39 dalek joined