Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2014-06-04

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

All times shown according to UTC.

Time Nick Message
00:04 woolfy joined #moarvm
01:36 FROGGS_ joined #moarvm
01:48 btyler joined #moarvm
06:45 woolfy left #moarvm
06:58 FROGGS joined #moarvm
07:07 zakharyas joined #moarvm
08:49 lue joined #moarvm
08:49 woosley joined #moarvm
08:52 cognominal joined #moarvm
09:06 donaldh joined #moarvm
10:32 donaldh joined #moarvm
10:35 cognominal__ joined #moarvm
10:55 cognominal__ joined #moarvm
11:50 cognominal__ joined #moarvm
12:00 FROGGS joined #moarvm
12:05 brrt joined #moarvm
12:22 brrt left #moarvm
12:26 brrt joined #moarvm
12:42 jnap joined #moarvm
13:34 btyler joined #moarvm
17:37 FROGGS[mobile] joined #moarvm
17:50 zakharyas joined #moarvm
18:25 dalek MoarVM/spesh_nameds: 6efc152 | jnthn++ | src/spesh/args.c:
18:25 dalek MoarVM/spesh_nameds: Collect, rather than bail on, named param ops.
18:25 dalek MoarVM/spesh_nameds:
18:25 dalek MoarVM/spesh_nameds: Currently don't do anything much with them, but this does allow us to
18:25 dalek MoarVM/spesh_nameds: spesh the other params.
18:25 dalek MoarVM/spesh_nameds: review: https://github.com/MoarVM/MoarVM/commit/6efc152b61
19:34 brrt joined #moarvm
19:53 brrt \o #moarvm
19:55 FROGGS hi brother
19:55 FROGGS hi brrt
19:55 FROGGS -.-
20:01 dalek MoarVM/spesh_nameds: 3c2f0a0 | jnthn++ | / (6 files):
20:01 dalek MoarVM/spesh_nameds: Add spesh op for marking a named arg used.
20:01 dalek MoarVM/spesh_nameds: review: https://github.com/MoarVM/MoarVM/commit/3c2f0a0d05
20:01 dalek MoarVM/spesh_nameds: 42f3e23 | jnthn++ | src/spesh/args.c:
20:01 dalek MoarVM/spesh_nameds: Turn some named args into indexed lookups.
20:01 dalek MoarVM/spesh_nameds:
20:01 dalek MoarVM/spesh_nameds: This avoids checking string names match up. Only done for provided
20:01 dalek MoarVM/spesh_nameds: required named args where types match so far.
20:01 dalek MoarVM/spesh_nameds: review: https://github.com/MoarVM/MoarVM/commit/42f3e23acd
20:01 jnthn o/ brrt
20:01 jnthn brrt: More distractions, or quiet JIT hacking today? :)
20:03 brrt a bit of both :-)
20:03 jnthn :)
20:03 brrt i've been reading the 'compilers' book again
20:03 brrt on codegen
20:10 brrt does anybody use MVM_platform_alloc_pages?
20:13 jnthn brrt: not afaik; I didn't even know it existed :)
20:13 jnthn brrt: Somebody musta been thinking ahead... :)
20:18 brrt i'm ambivalent about it
20:18 brrt on one hand, it probably works (and it might not)
20:18 brrt an on the other hand, it almost does what i want - that is, i need memory to be writable or executable, not both
20:19 jnthn brrt: Since nothing else is using it and it was probably put in speculatively, just change it into what you need.
20:19 brrt on the third hand, i can change it into what i need
20:19 brrt :-D
20:19 brrt ok, its time i make subgoals here
20:20 brrt what i want to reach, optimally, this week: JIT compile 'hello world'
20:21 * jnthn would settle for "add two numbers" this week :)
20:21 jnthn But "hello world" is a fine goal too )
20:22 brrt i would settle for that too, but one has to keep ambitious goals :-)
20:22 jnthn I'm not sure one is harder than the other; both would seem to need some basic register operations and basic ability to JIT calls to C functions :)
20:23 brrt adding numbers doesn't need the calling c functions
20:23 jnthn return_i does :P
20:23 jnthn Well, naively anyway.
20:23 brrt really? oh.. that is ok i guess
20:24 jnthn Anyway, yes, subgoals sound good.
20:41 jnthn bbi10
20:48 brrt http://brrt-to-the-future.blogspot.nl/2014/06/goals-and-subgoals.html - ok, see you then
20:50 brrt oh, i've forgotten quite a few subgoals
20:50 brrt - attach jitted code to MVMStaticFrame
20:54 * jnthn back
20:55 dalek MoarVM/spesh_nameds: 8c8f5cb | jnthn++ | src/spesh/args.c:
20:55 dalek MoarVM/spesh_nameds: Handle optional named args in spesh also.
20:55 dalek MoarVM/spesh_nameds: review: https://github.com/MoarVM/MoarVM/commit/8c8f5cba23
20:56 jnthn brrt: MVM_can_jit_graph(MVMSpeshGraph*)
20:56 jnthn brrt: Note that we pass tc to pretty much everything...
20:57 brrt yes, i wanted to ask about that
20:57 brrt hmm
20:57 brrt i guess it won't hurt :-)
20:57 jnthn You need it for all kinds.
20:58 brrt why not just put it into a global variable? :-p
20:58 jnthn Anyway, convention is to always pass it as first arg.
20:58 jnthn Because it's per thread.
20:58 brrt i was kidding
20:58 jnthn :P
20:59 jnthn (Also, the MVMInstance thing at the top is *meant* to mean we can have multiple MoarVMs in one process...)
20:59 brrt i'm ambivalent on whether we should put MVM_can_jit_graph in the arch-specific files or not
20:59 jnthn That's more a question of "can we make it into a JIT tree"...
20:59 brrt something embedders of all types will be happy to have
20:59 brrt hmm
20:59 jnthn In fact...
20:59 brrt i can imagine a state  wherein we can compile some things for x86_64 but not for arm
21:00 jnthn MVM_jit_try_make_jit_tree that returns NULL if it fails is perhaps even better
21:00 jnthn If you see something you can't JIT, bail out
21:00 jnthn Then it removes a pass over the graph.
21:00 jnthn Yeah, true.
21:00 brrt i'm not worried about doing a one-pass algorithm right now
21:00 brrt i'll worry about that in due time
21:00 brrt :-)
21:01 jnthn True, but you might want to worry about writing less code :)
21:01 brrt that is true
21:01 brrt ok i'll go with that suggestion (MVM_jit_try_make_jit_tree)
21:01 jnthn And a thing that tries then bails is less code than a thing that sees what is possible and then another that does it and explodes if it disagrees with the first.
21:01 brrt that is also true
21:01 jnthn The potential for disagreement being the longer-term bug source...
21:02 brrt oh, i know another thing i've forgotten
21:02 brrt split out mvm_spesh_alloc
21:02 jnthn ah, yes
21:02 brrt that said, where should it go? in core?
21:02 brrt doesn't seem very core-ish to me
21:04 jnthn Add a src/util/ perhaps, if many things will use it
21:05 brrt i'm somewhat inclined against 'util' directories as the question is - useful to whom? and why can't these things get proper names?
21:06 jnthn Yeah...
21:06 jnthn Well, so far I've tended to not share stuff much across subsystems :)
21:06 jnthn Could just stay in spesh...
21:07 brrt that seems fair enough for me now
21:07 brrt it is always possible to refactor
21:10 * [Coke] introduces brrt to his codebases at work!
21:12 brrt well, it's always possible to refactor, unless there's a manager arround
21:14 jnthn Some code bases are just actively hostile to it.
21:14 brrt i know, i can't quite explain why
21:15 [Coke] mine have few tests; hard to know you're not breaking anything. :(
21:30 brrt thats part of it i guess
21:31 dalek MoarVM/spesh_nameds: cdf5c71 | jnthn++ | src/spesh/args.c:
21:31 dalek MoarVM/spesh_nameds: Add guards/facts for named object args.
21:31 dalek MoarVM/spesh_nameds: review: https://github.com/MoarVM/MoarVM/commit/cdf5c7177f
21:34 jnthn And le branch hurts no spectests or NQP tests, so merge time I think :)
21:35 timotimo yays
21:35 timotimo that ought to lead to much more run time of the spesh_diff tool :\
21:35 timotimo we need to get moarvm a bunch faster again :P
21:35 timotimo to keep up, i mean
21:43 brrt moarvm is going to fly as far as i'm concerned
21:44 timotimo well, let's hope so :)
21:44 * jnthn hopes so :)
21:44 jnthn Next tasks for me: guard check elimination when we know exactly what we're calling.
21:44 jnthn This is also a precursor to inlining.
21:45 brrt hmm... interesting
21:45 jnthn Which I plan to look at over the weekend.
21:45 dalek MoarVM: d9ad0cf | (Timo Paulssen)++ | docs/bytecode.markdown:
21:45 dalek MoarVM: Spec callsites storing named argument names.
21:45 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/d9ad0cf391
21:45 dalek MoarVM: acf754b | jnthn++ | src/core/callsite.h:
21:45 dalek MoarVM: Prepare MVMCallsite for storing named arg names.
21:45 jnthn oh noahs...
21:45 timotimo noah's flood?
21:45 FROGGS You killed dalek!
21:45 jnthn ;)
21:45 brrt lol
21:45 dalek joined #moarvm
21:48 jnthn Anyway, will work on the check elimination tomorrow, along with some async stuff :)
21:48 timotimo that does sound nice
21:49 brrt yes
21:49 timotimo we're doing a bunch of guards that just run into nothingness, afaict
21:49 timotimo can we somehow annotate that we rely on something to be concrete etc etc?
21:49 jnthn "run into nothingness"?
21:49 jnthn As in, aren't depended on?
21:49 timotimo well, is a guardconc needed
21:49 timotimo for example
21:49 timotimo yes
21:49 jnthn Yeah, that's a remaining todo.
21:50 timotimo good to know :)
21:50 timotimo i'm going to have
21:50 timotimo some dinner now :)
21:50 jnthn I've realized a few things about the way I did spesh_log that I don't like much, though...
21:50 timotimo happy hacking and/or sleeping
21:50 jnthn So will address that before dealing with the guard use tracking as it'll simplify it.
21:51 timotimo care to elaborate a tiny bit?
21:53 jnthn It may be possible to structure things so the interp always records and thus eliminate the log insertion phase.
21:53 jnthn Though not entirely sure that's wise yet.
21:55 jnthn Anyway, that may be an overkill thing to change.
21:56 timotimo always records? o_O
21:56 timotimo that's no performance hit?
21:56 donaldh joined #moarvm
21:59 jnthn timotimo: May be less of one than what we do today; remember that everything hot is either specialized into stuff that doesn't hit the recording versions of things.
21:59 jnthn ...or JITted (in the future :))
22:00 timotimo oh
22:00 timotimo well, or it's inside somthing the spesh is rejecting, perhaps?
22:01 timotimo brrt: you still have MVM_can_jit_graph in there
22:01 timotimo in your blog post that is
22:01 timotimo and also i don't understand what the MAST is doing in the middle of that - or rather: so close to the end
22:02 brrt well... good question
22:03 brrt i need a specific sequence of MoarVM codes to know i can compile them
22:03 brrt right
22:03 brrt so if i take an nqp program - any nqp program - the complexity of that mast tree is much greater than minimal
22:04 brrt which means that i spend much more time getting all the operations to compile /before/ i can prove the principle
22:04 brrt thus, i need to build a simple test that makes a very simple mast tree and forces jit compilation on it
22:05 timotimo ah!
22:05 timotimo it looked like you were trying to turn the spesh graph into a mast tree and then into machine code from that
22:05 timotimo gotta go now :)
22:05 brrt sleep well :-)
22:06 jnthn o/ timotimo
22:07 sergot joined #moarvm
22:14 timotimo i'll be back after noms
22:15 brrt oh, ok :-)
22:15 brrt nom well, then
22:18 brrt i'll be off now
22:18 brrt left #moarvm
22:25 dalek MoarVM/moar-jit: e91b799 | (Bart Wiegmans)++ | src/ (5 files):
22:25 dalek MoarVM/moar-jit: Intermediate work, doesn't do anything useful, just thinking out
22:25 dalek MoarVM/moar-jit: how code will look. It compiles, though :-).
22:25 dalek MoarVM/moar-jit: review: https://github.com/MoarVM/MoarVM/commit/e91b799eca
22:29 jnthn Heading off also
22:29 jnthn 'night
22:29 FROGGS gnight
22:44 woolfy joined #moarvm
22:44 lizmat joined #moarvm
22:51 lizmat joined #moarvm
23:32 jnap joined #moarvm

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