Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2014-06-17

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:09 jnap joined #moarvm
01:10 FROGGS__ joined #moarvm
01:55 btyler joined #moarvm
04:11 dalek joined #moarvm
06:50 FROGGS__ joined #moarvm
07:16 zakharyas joined #moarvm
08:20 odc joined #moarvm
08:20 woolfy joined #moarvm
08:20 camelia joined #moarvm
08:20 hoelzro joined #moarvm
08:20 retupmoca joined #moarvm
08:20 TimToady joined #moarvm
08:21 japhb_ joined #moarvm
08:21 ashleydev joined #moarvm
08:21 harrow joined #moarvm
08:21 rurban_ joined #moarvm
08:21 timotimo joined #moarvm
08:21 flussence joined #moarvm
08:21 tokuhirom joined #moarvm
08:44 odc joined #moarvm
08:44 woolfy joined #moarvm
08:44 hoelzro joined #moarvm
08:44 retupmoca joined #moarvm
08:44 TimToady joined #moarvm
08:44 camelia joined #moarvm
08:49 brrt joined #moarvm
08:49 brrt \o #moarvm
08:58 jnthn o/ brrrt
08:58 jnthn oops, over-r
09:02 brrt :-)
09:02 * brrt figured out that... phi nodes are just skipped during codegen?
09:02 jnthn Sure
09:02 jnthn They don't mean anything.
09:03 jnthn They represent join points in the SSA graph
09:03 brrt i had thought they'd be needed to re-assign local registers
09:03 jnthn But SSA numbers things reg[i]
09:03 brrt or some such
09:03 brrt but that's not necessary at all :-)
09:04 jnthn No, a PHI always looks like r[o] = PHI(r[1], ..., r[n]), where r is the same register :)
09:05 brrt hmm.. i guess they represent an 'end point' of some algorithms, i.e. you can't analyze the value of a register further than the phi node
09:05 brrt interesting
09:06 jnthn Well, we dont' do it yet, but we can do fact merging at teh PHIs
09:06 jnthn That is, if we look at all the incoming things and they all agree on the known type, then we can propagate that known type to r[o]'s facts too
09:07 jnthn Whereas if they disagree then we can't
09:07 jnthn So they have a role in type info propagation.
09:07 brrt i understand
09:07 brrt nice
09:07 brrt but, for codegen, they can be ignored
09:08 brrt (for now)
09:08 jnthn riht
09:08 jnthn *right, even
09:08 brrt how long is this summer again?
09:08 brrt too short i think
09:08 jnthn oh, a few years, I think :P
09:08 brrt :-D
09:08 * brrt is reminded of the steve yegge post that said that building a compiler was a 'lifetime of work'
09:09 brrt and mine/ours isn't even finished yet
09:09 jnthn No, my lifetime seems to be continuing...
09:09 brrt :o)
09:19 jnthn Anyway, we need to tend to mid-term evils between 23rd and 27th
09:21 brrt thats ages
09:21 jnthn Of June :)
09:21 brrt that is ages from now, is what i mean :-)
09:21 brrt :-)
09:21 jnthn It's...10 days away for the deadline for those :)
09:21 jnthn Then 18th Aug is when summer ends :)
09:21 brrt by then we'll have conditionals i should think and hopefully loops?
09:22 jnthn I hope so :)
09:22 nwc10 "Hello To Our Friends And Fans In Domestic Surveillance"
09:22 jnthn Your next task is labels and gotos/branches, I guess?
09:22 brrt yes, i'm actually working on that now
09:23 brrt i had ints for labels, if you can recall?
09:23 jnthn \o/
09:23 nwc10 It's far more important to actually complete the mid term eval by the deadline than what the detail is
09:23 brrt thats not good enough, it seems
09:23 jnthn ah
09:24 brrt you mean, fill in a form? :-p
09:24 brrt nwc10 - its funny how google lost nearly all of the good nerd vibe they had going with the NSA business
09:24 nwc10 don't worry about not having X to show for the mid term eval - I don't think that anyone is going to read the actual detail. As long as it says "student is doing work and is not just scamming us for the money" it's useful
09:24 brrt i'm worried about progress nevertheless :-)
09:25 nwc10 yes, OK, to be fair, the mentors are going to read the detail, but it won't be news to them.
09:25 timotimo i wonder if anyone really thinks it's a good idea to try to scam *google* :P
09:25 nwc10 you're not going to be kicked off the programme for submitting a report with insufficient progress
09:25 brrt lots of people think so timotimo :-)
09:25 nwc10 you *would* be kicked off for not submitting the report
09:25 nwc10 (as I understand it)
09:25 jnthn aye
09:26 brrt fair point :-)
09:26 jnthn I think it'd be nice if by midterm sub foo() { my int $i := 0; while $i < 1000000 { $i++ }; say($i) } can be jat.
09:26 brrt my guess is that if i'd fill in a report and never let anybody hear anything of me that would be noticed too, right?
09:26 jnthn uh, jitted :)
09:26 brrt that... should be doable, yes
09:27 nwc10 yes, that would be noticed. Probably fairly quickly :-)
09:27 brrt say($i) is cource_is or something?
09:27 nwc10 this isn't a course or exam that you can fail by not making the pass mark
09:27 jnthn brrt: Yeah.
09:28 nwc10 as best I can tell, from the admin side it's all about effort, and not about acchievement. Did the student actually try?
09:28 jnthn Indeed.
09:28 nwc10 at least for getting payment
09:28 nwc10 for Google's (later) recruiting purposes, acchievement will also matter
09:28 jnthn Given we actually have something very simple being JITted already, I think it's quite clear the student is trying :)
09:28 jnthn brrt++
09:29 nwc10 but again, that's not absolute. That's "from starting point, how much changed"
09:29 jnthn ok, taking studnets to lunch &
09:29 timotimo stud .. net? :)
09:29 brrt see you
09:29 nwc10 yes, thanks for simplifying my point. You have something JITted. That's evidence
09:29 * brrt used to work for studenten.net
09:31 brrt also lunch & :-)
09:38 FROGGS__ uhh
09:38 FROGGS__ ==> Testing HTTP::Message
09:38 FROGGS__ t/01-basic.t .. ===SORRY!===
09:38 FROGGS__ No STable at index 8
09:38 FROGGS__ ó.ò
09:39 FROGGS__ ohh, hmmm, it works when I install it via panda, rather then rebootstrapping panda
09:39 FROGGS__ ohh no, now this:
09:39 FROGGS__ ==> Testing HTTP::Message
09:39 FROGGS__ t/01-basic.t .. ===SORRY!===
09:39 FROGGS__ No STable at index 8
09:39 tadzik that's the same
09:39 tadzik except this time it didn't print "ó.ò"
09:40 tadzik :>
09:40 timotimo %)
09:40 FROGGS__ *g*
09:40 FROGGS__ but it really should print that when being so sorry
09:41 FROGGS__ when were you the last time so sorry that your shouted it?
09:41 tadzik :D
09:41 FROGGS__ you*
09:41 tadzik OKAY FINE I'M SORRY ARGLEBARGLE
09:41 timotimo tadzik: when i'm at the point where GTK::Simple will let you start animations that get rendered with cairo from a callback with a correct frame timer, will you try to build something game-like? :3
09:42 tadzik timotimo: hm, I don't see why not :)
09:42 tadzik but: what advantage will that give me over Steroids, other than having Gtk available?
09:42 tadzik or I may just put Steroids on top of Cairo/Gtk
09:43 timotimo with steroids you can't do any vector graphics
09:43 timotimo not yet anyway
09:43 tadzik troo
09:43 timotimo though it wouldn't be hard to put cairo directly on top of sdl2
09:43 tadzik I need to catch up on Steroids, but I'm all deep in my bachelor's thingy
09:43 tadzik (and Civ5 recently)
09:43 timotimo aye, that's fine
09:44 timotimo the last time i thought i was close to the milestone of being able to put cairo drawing into a gtk callback, i stumbled upon about 200 methods and objects i should bind in order to get there ...
10:08 brrt joined #moarvm
10:27 brrt left #moarvm
11:46 FROGGS joined #moarvm
12:15 jnap joined #moarvm
12:59 brrt joined #moarvm
13:59 btyler joined #moarvm
14:00 brrt joined #moarvm
14:49 * brrt had never considered you could just pass a va_list to another function
14:49 nwc10 see also va_copy and va_end
14:50 nwc10 for proper portability.
14:50 * brrt will check those out
14:56 woolfy joined #moarvm
15:00 * brrt wonders if msvc has va_copy since it is defined in C99
15:01 donaldh_ joined #moarvm
15:11 nwc10 if it isn't defined, it probably isn't needed for that platform.
15:11 nwc10 but you may not need to copy the pesky little things
15:11 nwc10 I think that it's because on some platforms it's malloc()d data, so if you don't va_end, you leak
15:12 nwc10 and if you don't va_copy but you do va_end (twice) you double free.
15:15 brrt i see
15:20 donaldh_ joined #moarvm
15:28 brrt left #moarvm
15:30 brrt joined #moarvm
15:34 brrt joined #moarvm
15:35 brrt left #moarvm
15:42 japhb A positive note for you guys -- as of my tests last night, nqp-moarvm/master was faster than perl5/v5.20.0 at rc-man-or-boy-test; perl5 was about 30% slower than nqp-m, as a matter of fact.  :-)
15:44 btyler woah
15:44 japhb Sadly r-m is still about 6.1x slower than nqp-m on that test, but I'll take the nqp-m win over perl5 any day.  :-)
15:44 jnap joined #moarvm
16:18 FROGGS joined #moarvm
16:24 timotimo that's nice to hear :)
16:28 rurban_ And moar is about 2x faster than parrot on the nqp tests
16:30 timotimo rurban_: you got a target to catch up to :)
16:30 FROGGS but a moving target :o)
16:31 FROGGS it was easy to pass parrot when it was sleeping
16:33 rurban_ I don't think I can catch up. Let's see what the parrot jit will bring. But there's still the horrible PCC with ext_call and IMCC string encoding quirksand all the sprintf varargs mess to improve.
16:34 jnthn evening, #perl6
16:34 jnthn uh
16:34 jnthn #moarvm :)
16:34 jnthn Well, that summarizes how exhaust I am :P
16:34 timotimo o/
16:34 timotimo jnthn: so no OSR today? :P
16:35 jnthn :P
16:35 jnthn We're meant to be tidying up for release, not doing dangerous stuff :P
16:35 timotimo troo
17:08 lizmat joined #moarvm
17:29 jnap joined #moarvm
17:30 [Coke] moar is currently failing 3 spectests.
17:30 [Coke] S02-types/deprecations.rakudo.moar 30 - deprecation $*OS
17:30 [Coke] S02-types/deprecations.rakudo.moar 31 - deprecation $*OSVER
17:30 [Coke] S32-io/IO-Socket-Async.t 4 - Echo server
17:31 lizmat S02 ones are mine
17:31 [Coke] lizmat++
17:32 timotimo the async socket server fails seem to be spurious
17:33 FROGGS jnthn: I have this in star for lwp-simple that might trigger the problem:
17:33 FROGGS -Subproject commit 267ac05bbf2534005f95ab39a0d62ec71ccc014a
17:33 FROGGS +Subproject commit d11d5a17f9588ccc535d010ef5f706baa6ed6135
17:34 FROGGS though, it makes no sense from looking at that commit
17:35 [Coke] niecza is failing 1200 tests even. :|
17:35 [Coke] ww.
18:05 btyler joined #moarvm
18:30 rurban_ [Coke]: same for parrot. https://github.com/rurban/roast/commit/c0d2692c49552ad7a55cda5a28db5e3104f03573
18:31 [Coke] rurban_: lizmat is fixing those.
18:31 rurban_ Yes, just saw.
18:31 [Coke] not going to bother fudging them. (Does explain why jvm isn't failing them, though)
18:37 rurban_ jvm is skipping them also
18:37 rurban_ #?rakudo.jvm skip 'tracebacks in deprecations'
18:43 brrt joined #moarvm
19:14 jnthn wtf, skellefteaa has no station, but my hotel is on stationsgatan... :P
19:14 jnthn uh, ww
19:17 moritz jnthn: station has been closed since the road has been named? :-)
19:25 jnthn I don't think the train ever went there :)
19:33 * brrt wonders if google street view went there
19:33 brrt and.. it did
19:39 jnthn Where hasn't it been... :)
19:44 japhb jnthn: That's classified.  ;-)
19:45 brrt ugh, constant folding :-(
19:47 * brrt wonders if simple argument passsing works yet
19:47 jnthn brrt: CF where?
19:48 brrt its not actually constant folding what i mean, buf if(1) { foo(); } else { bar(); } is compiled - by whom? - to { foo(); }
19:48 brrt which i need it not to do :-)
19:49 jnthn haha
19:49 jnthn probably spesh :)
19:51 brrt we seem to have conditionals
19:53 brrt of, and arguments, if they're known to be ints :o)
19:54 jnthn :)
19:58 dalek MoarVM/moar-jit: b0ed6c9 | (Bart Wiegmans)++ | src/jit/emit_ (3 files):
19:58 dalek MoarVM/moar-jit: Very minor cleanup
19:58 dalek MoarVM/moar-jit: review: https://github.com/MoarVM/MoarVM/commit/b0ed6c93cf
19:58 dalek MoarVM/moar-jit: 952e534 | (Bart Wiegmans)++ | / (7 files):
19:58 dalek MoarVM/moar-jit: Branches (based on integers) now seem to work.
19:58 dalek MoarVM/moar-jit:
19:58 dalek MoarVM/moar-jit: Loops should work too, but I haven't checked.
19:58 dalek MoarVM/moar-jit: review: https://github.com/MoarVM/MoarVM/commit/952e534c04
19:58 * brrt is going to see if loops work now
20:05 brrt any idea why $i++ needs hllboxtype?
20:06 jnthn Did you declare it my int $i
20:06 jnthn ?
20:06 brrt yep, i did
20:06 brrt its passed as an int, too, by spesh
20:07 jnthn Sure, well, that won't be changed by spesh... :)
20:07 jnthn Hmm
20:07 jnthn What code have you got?
20:07 jnthn Is the loop in void context?
20:08 brrt i'll post it in a bit
20:10 brrt (wow, github recognises perl6, that is awesome)
20:10 jnthn :)
20:11 brrt https://gist.github.com/bdw/bcbe6e478413d9dfe96d nqp compiler adds hllboxtype_i
20:12 brrt and - converts it to numeric, too
20:12 brrt and back
20:13 brrt so it seems.. loops work now?
20:13 cognominal joined #moarvm
20:13 * brrt is going to calculate fibonacci series in jitted code, just because he can
20:19 jnthn brrt: uh, wtf is doing on with that code-gen...
20:19 brrt i have /no/ idea
20:19 brrt but somehow somebody seems to think we're dealing with objects, then we should deal with floats, then with integers again
20:19 brrt where somebody == the compiler :-)
20:20 odc joined #moarvm
20:20 camelia joined #moarvm
20:20 TimToady joined #moarvm
20:20 retupmoca joined #moarvm
20:20 hoelzro joined #moarvm
20:20 brrt maybe somewhere type tags are added wrongly?
20:20 dalek MoarVM/moar-jit: 2167243 | (Bart Wiegmans)++ | foo.nqp:
20:20 dalek MoarVM/moar-jit: A version of fibonacci that is completely jitted :-D
20:20 dalek MoarVM/moar-jit: review: https://github.com/MoarVM/MoarVM/commit/216724387c
20:22 jnthn brrt: Yeah, I can see what's going on. It's the postinc thingy which is optimizer-opaque, it seems
20:23 jnthn Also I see that the opt is missing a trick in some of the p6bench things too :)
20:26 brrt ok. i have no idea about the internals of nqp :-)
20:36 FROGGS joined #moarvm
20:48 cognominal joined #moarvm
20:52 dalek MoarVM/moar-jit: 4af25c4 | (Bart Wiegmans)++ | / (3 files):
20:52 dalek MoarVM/moar-jit: Add MacOSX recognition to jit Configure.pl
20:52 dalek MoarVM/moar-jit:
20:52 dalek MoarVM/moar-jit: btyler++ for helping to find the right configuration
20:52 dalek MoarVM/moar-jit: paramter. Also added some documentation to help people
20:52 dalek MoarVM/moar-jit: find the right options :-)
20:52 dalek MoarVM/moar-jit: review: https://github.com/MoarVM/MoarVM/commit/4af25c44b7
20:53 dalek MoarVM: 674fe7c | jnthn++ | docs/ChangeLog:
20:53 dalek MoarVM: Add 2014.06 ChangeLog entries.
20:53 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/674fe7cf9b
20:55 timotimo ++ Specializer can optimize optimize named args
20:55 timotimo optimize optimize go!
20:56 * brrt is very happy with the whole spesh thing
20:57 hoelzro go go gadget optimizer?
20:57 timotimo aye, it's cool stuff
20:57 lizmat joined #moarvm
20:57 jnthn haha, thanks
20:57 brrt ok, hmm, i haven't thought on how to do next what i want to do next, next
20:58 brrt i know what i want to do, though, want to know and help me out?
20:58 dalek MoarVM: f7532c8 | jnthn++ | docs/ChangeLog:
20:58 dalek MoarVM: Fix fix a double word; timotimo++.
20:58 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/f7532c84c7
20:58 jnthn brrt: Did you, ooc, do any timing of it against the interpreted version? :)
20:59 brrt no, did not
20:59 brrt i should
20:59 jnthn OK
20:59 jnthn And yes, let's talk about what you want to do next.
20:59 jnthn Actually would be good to plot a few days ahead.
20:59 timotimo brrt: did you try a measurement of jitted fib vs regular fib? :)
21:00 jnthn I'm about tomorrow, while teaching, and in the evening
21:00 brrt i know what i want to do :-), i want to somehow do something with return values
21:01 jnthn But will be about rather less on Thu (travel), Fri (DDDX conf), Sat (visiting UK friends), and Sun (travel)...
21:01 brrt problem is that sometimes i need to store them in a register, and sometimes i need to dereference and store, sometimes i need to store a value there
21:01 brrt ok, i'll be busy too, i have hospital-styled appointments again :-)
21:01 brrt (tomorrow, that is)
21:03 FROGGS time perl -E '`../foo.nqp` for 0.50'
21:03 FROGGS real0m4.010s
21:03 FROGGS same timings for with and without inline
21:03 FROGGS but... it perhaps just measures startup time
21:04 jnthn What's in foo.nqp?
21:04 jnthn brrt: Hope hospital-styled appointments go fine.
21:04 jnthn brrt: Can you give some examples of the return value problem?
21:04 brrt https://gist.github.com/bdw/a519663b655ac0ae25ba
21:05 brrt FROGGS
21:05 brrt ^
21:05 brrt jnthn, i expect so (re: hospital) :-) just checks and stuff
21:05 brrt ehm, yes, let me checkout master and point you at some lines
21:08 brrt interp.c line 2221 (getlex_ni)
21:08 brrt basically, that is
21:08 brrt call a function
21:08 brrt get a pointer
21:08 brrt dereference pointer
21:08 brrt copy pointer to register
21:08 brrt eh, copy value to register
21:08 jnthn Copy deref...right.
21:09 brrt that isn't the tricky one, though
21:09 jnthn Isn't "dereference a pointer" a single instruction?
21:09 brrt yes
21:10 brrt i don't have a way to represent 'dereference a pointer stored in a cpu register' yet
21:10 brrt that would need special casing
21:11 brrt thats possible (all is equally possible), but do i really want to add a big and perhaps complex 'do-stuff-with-return-value' node?
21:11 brrt (i'm guessing the answer is yes, though :-))
21:12 jnthn How many different ways are there, really?
21:12 brrt i have no idea
21:12 brrt on cpu level, not so much :-)
21:12 brrt on moarvm level? well, at least three
21:13 brrt i don't think it ever happens we copy a return value to a lexical (i hope)
21:13 brrt so as long as all return values eventually read or store from work registers, the combinations seem manageable
21:14 jnthn No, we don't
21:14 jnthn Oh
21:14 jnthn Well, auto-viv of an object lexical may
21:14 timotimo since we already have inlining, we could get around return values a bunch of times in jitting :P
21:14 jnthn But you might just call a function to do that.
21:14 brrt to auto-vivify a lexical? yes, i guess we could do that, too
21:15 jnthn It's lazy allocation of scalars, really
21:15 jnthn Worth it from a perf perpsective
21:15 jnthn 'cus $/, $!, and $_ are declared everywhere, but rarely used
21:17 brrt hmm
21:19 brrt ok, beer napkin calculations
21:19 brrt i have two address modes for destination operands - register and memory
21:20 brrt i have 3 address modes for source operands, namely literal, register, memory
21:20 brrt memory-memory is impossible
21:20 brrt (we might as well assume that it is impossible for all systems)
21:21 brrt (memory is always register + offset, by the way)
21:21 brrt memory-64 bits literal is also impossible
21:23 brrt that gives me? register-register, register-memory, register-literal, register-literal64, memory-register, memory-literal
21:23 brrt memory-literal64 can be faked by two ops
21:23 brrt memory-memory too
21:24 brrt basically, as long as i can represent a node that says 'take this data and store it there' then i'm golden whatever the requirements of moarvm ops may be
21:25 brrt i /want/ that
21:25 brrt (the copy node idea, that is)
21:25 brrt what do you think? i can reduce it to 6 options :-)
21:25 jnthn Do we get good code from the 6 options?
21:25 brrt hmmm
21:26 brrt i'm not sure how to answer that
21:26 jnthn (memory-literal64 being faked by 2 ops wsa the one that sounded odd to me)
21:26 brrt we get ... reasonable code, as the little benchmark above showed
21:26 brrt i.e. a 2x speedup, and thats pretty nice imho
21:27 brrt you have to emit a special opcode to load 64 bit literals from the bytecode as the normal 'mov' opcode takes 32 bit numbers maximum
21:27 FROGGS brrt: my timing: 6.45s for disabled jit, and 2.2s with jit enabled
21:27 FROGGS brrt: I like it :o)
21:27 jnthn Note that the loop outside the foo() call is not JITted
21:27 brrt no, it isn't :-)
21:28 jnthn Or even spesh'd
21:28 brrt thats a goal for OSR, isn't it?
21:28 jnthn Right :)
21:28 FROGGS can I recompile rakudo with jit?
21:28 brrt otherwise you can never 'get' at the frame
21:29 * FROGGS tries
21:29 brrt basically, i think you get reasonable code that way, but you move quite a bit of complexity up too the graph constuctor
21:30 jnthn *nod*
21:30 jnthn But the graph constructor having it means it simplifies getting, say, x86 or ARM working with JIT later :)
21:30 brrt which is kind-of where we want it, but we ( i ) am not sure if that complexity should include which register has what, which kind of leaks there
21:30 brrt agreed
21:31 FROGGS okay, looks like I can still build rakudo
21:31 brrt i'd hope so :-) i'd be /extremely/ surprised if you could JIT anything in there
21:31 jnthn :)
21:31 jnthn The JIT will grow in skills :)
21:32 donaldh joined #moarvm
21:32 brrt i'm quite optimistic :-)
21:32 FROGGS stage parse was 45s, which is in the usual range for my box :o)
21:32 brrt i'm not sure if the branch of master i merged moar-jit with was quite recent enough (i.e. i think there have been reports of segv's fixed :-))
21:33 jnthn yeah, was a couple
21:34 jnthn brrt: Beyond that, what kind of ops are you plotting to work on next?
21:35 brrt i still need to do some integer arithmetic, which is easy (but requires careful doc reading)
21:35 brrt i'll need to do floating-points
21:36 brrt thats basically the 'basic easy stuff', that doesn't require much architecture / thinking / setup
21:37 jnthn *nod*
21:37 brrt the 'invoke' tail call stuff, that needs to be done, is - i think - pretty well worked out in theory, but will probably give some challenges
21:37 jnthn Yes.
21:37 jnthn Do you have all the sp_getarg_* in?
21:37 brrt sp_getarg_i
21:38 brrt no others, they should be simple though, they're just copies afaik
21:38 brrt (it would be a matter of adding case statements :-)
21:38 brrt i think i even have param_rp_i ?
21:42 brrt nope, don't have param_rp_i yet
21:46 brrt so, in short
21:46 brrt next day, i want to start on return value handling
21:46 brrt that /may/ include creating a copy node
21:47 brrt or, it may not, i'm not sure which is simple
21:47 brrt (i may also decide not to do the copy node until i've augmented dynasm, thats possible too)
21:48 brrt when i've got eturn values, there is a boatload of ops i can jit
21:49 brrt and when thats done, i want to work on invoke(_.)? ops
21:50 brrt when that is done, this week may be over, but i think we should take a look at deopt then
21:50 brrt i.e. sp_guard* and the like
21:52 jnthn Yes
21:52 jnthn And sp_fastcreate
21:52 jnthn And sp_p6oget...
21:52 jnthn And sp_p6bind...
21:54 * brrt looks at those ops cus' he hasn't seem them yet
21:55 jnthn They're optimized forms of object allocation and get/bind attr
21:55 jnthn Which mostly boil down to pointer operations.
21:59 dalek MoarVM/moar-jit: 543226c | (Bart Wiegmans)++ | / (5 files):
21:59 dalek MoarVM/moar-jit: Added support for other sp_getargs_. ops
21:59 dalek MoarVM/moar-jit: review: https://github.com/MoarVM/MoarVM/commit/543226c424
21:59 brrt ok
21:59 brrt pointer operations i can handle
21:59 jnthn :)
22:00 jnthn As for deopt_one, which the guards need, I suggest that we just write functions in deopt.c that, instead of searching for an index, can take one.
22:00 jnthn And we JIT code that just passes the deopt index
22:02 jnthn And since the register frames are already in the right shape, it's then mostly just a case of the JITted code doing a return.
22:02 jnthn And letting the interp take over.
22:05 brrt hmm.. yes, agreed
22:05 brrt do we know at codegen time what that deopt index is?
22:05 jnthn Yeah
22:05 jnthn it's really easy
22:05 brrt (ooh gnome3 zoom feature follows cursor these days. haven't had that since zoomtext :-D)
22:05 jnthn You just take the spesh node that will deopt and look at ->annotations, and follow the linked list until you hit a deopt_one annotation
22:06 jnthn And then read deopt_idx :)
22:06 brrt ok, thats pretty simple
22:06 jnthn yeah :)
22:06 * brrt writes that down
22:06 jnthn :)
22:07 jnthn OK, I need to rest soon...getting very sleepy...
22:07 brrt sleep well
22:07 jnthn thanks
22:07 jnthn 'night
22:07 brrt in .. elfeketallaa or what it was called :-)
22:07 brrt 'night :-)
22:08 jnthn Oh, I'm just at home right now
22:08 jnthn Not going there until Sunday :)
22:08 brrt ok, better yet
22:08 jnthn :)
22:08 brrt no sleep like home
22:08 jnthn aye
22:08 jnthn 'night
22:08 brrt 'night
22:14 * TimToady thinks looping and indexing into arrays of natives will be one of the biggest wins for jitting, eventually
22:15 * lizmat hopes JITting will also work on NFG
22:15 TimToady I just said that, basically :)
22:15 brrt what is nfg?
22:16 TimToady our eventual form for representing unicode strings on a grapheme-by-grapheme basis, even when unicode doesn't define precomposed graphemes
22:16 tadzik woot. Awesomeness
22:16 tadzik brrt++
22:16 brrt oh, normalized form g :-)
22:16 lizmat S15:82
22:16 synopsebot Link: http://perlcabal.org/syn/S15.html#line_82
22:16 TimToady but on a jit level, we're talking arrays of signed ints, probably
22:16 brrt lizmat: 404 :-(
22:17 FROGGS the html file of S15 is not up
22:17 lizmat https://raw.githubusercontent.com/perl6/specs/master/S15-unicode.pod
22:17 * brrt sees no reason why that shouldn't work
22:17 brrt again, pointer arithmetic is easy :-)
22:18 brrt give me pointers and addition and substraction and i'll be a happy hacker
22:18 brrt give me lots of c calls to call, weird ABI's / function call requirements, and i'm.. less happy
22:20 brrt did you know (any of you :-)), by the way, that x86 has instructions for a): string opeations and b); array bounds checking?
22:21 FROGGS and amd64 lacks these?
22:22 brrt no, has them too
22:22 brrt i don't know what they do, though
22:22 brrt and also special ops for looping
22:22 brrt amd64 is just a superset, i meant to say that :-)
22:23 FROGGS that is what I always thought :o)
22:26 * lizmat remembers the time she would put X86 code in hex into a buffer and then call that buffer
22:27 lizmat but that's 20+ years ago
22:27 brrt in a hex buffer? :-o
22:28 * brrt can't read x86 hex let alone write it
22:30 lizmat this was another language (TenCORE if you must know)
22:30 lizmat foo,2048  would define a buffer of 2K
22:31 lizmat foo <= xCEDE00FA....
22:31 lizmat would assign it (<= was actually a special character)
22:31 lizmat ah, the memories  :-)
22:31 tadzik heh, I remember writing code for MCUs in binary and running it, and that was like 3 years ago
22:32 tadzik but that was "crazy university stuff"
22:32 brrt whut
22:32 tadzik imagine a drill sergeant saying "after tonight, you're gonna be real army men!"
22:32 brrt and to be a real army man, you had to program an MCU in binary?
22:33 tadzik yeah
22:33 tadzik nothing was ever too "low level" anymore
22:33 brrt i thought real army man used x-ray guns to switch their bits by hand
22:33 brrt s/man/men/
22:34 tadzik I must've skipped that class :(
22:34 brrt anyway, i've only recently come to appreciate how little the basic interpreter for commodore 64 (my first programming language) actually did
22:34 lizmat I remember the days I had to flip bits with huge magnets :-)
22:35 brrt i feel cheated
22:35 brrt you did?
22:35 brrt :-o
22:35 tadzik but I remember how amazed I was when the teacher was operating on 4-ish switches simultaneously (?), counting in binary in a pace of like 4 numbers per second :)
22:35 * brrt was already amazed with the display of a _real_ pdp8 in the psychological experiment lab @university
22:35 lizmat well, let me put it this way: my first floppy was a 96K single sided singe density floppy
22:35 tadzik lizmat: wow, that's amazing :)
22:36 lizmat and a sewing machine sized luggable Osborne-1
22:36 lizmat featuring CP-M and Wordstar
22:37 lizmat and the screen the size of a nowadays phablet
22:37 brrt http://en.wikipedia.org/wiki/Floptical
22:37 lizmat with a resulotion of 80 x 25 characters
22:38 tadzik I think GRRM still uses Wordstar to write his books
22:39 brrt GRRM?
22:39 brrt oh, i see
22:39 tadzik George Martin, the Game of Thrones guy
22:39 tadzik I think it's time to sleep & G'night #moarvm
22:40 brrt 'night
22:42 brrt left #moarvm
22:43 lizmat gnight tadzik
22:47 woolfy joined #moarvm
23:12 hoelzro brother: I just saw this: http://www.freelists.org/post/luajit/DynASM-documentation
23:12 hoelzro thought you might find it handy!
23:12 hoelzro er
23:13 hoelzro that was meant for brrt
23:13 hoelzro .seen brrt
23:13 FROGGS 33mins ago
23:19 hoelzro thanks FROGGS =P
23:20 jnap joined #moarvm

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary