Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2015-07-03

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

All times shown according to UTC.

Time Nick Message
00:06 japhb joined #moarvm
00:26 vendethiel joined #moarvm
01:48 ilbot3 joined #moarvm
01:48 Topic for #moarvm is now https://github.com/moarvm/moarvm | IRC logs at  http://irclog.perlgeek.de/moarvm/today
02:28 vendethiel joined #moarvm
03:28 vendethiel joined #moarvm
03:56 vendethiel joined #moarvm
05:33 vendethiel joined #moarvm
07:35 zakharyas joined #moarvm
08:22 rurban joined #moarvm
09:53 brrt joined #moarvm
09:57 brrt \o
10:29 jnthn o/ brrt
10:32 dalek MoarVM/even-moar-jit: be79d75 | brrt++ | / (2 files):
10:32 dalek MoarVM/even-moar-jit: Add generic macro facility to tree expr builder
10:32 dalek MoarVM/even-moar-jit:
10:32 dalek MoarVM/even-moar-jit: Use any (constant) macro expression inline in the template, not
10:32 dalek MoarVM/even-moar-jit: just offsetof and sizeof. The use of a macro is signaled by the
10:32 dalek MoarVM/even-moar-jit: '&' prefix (like (&offsetof MVMException body.category)).
10:32 dalek MoarVM/even-moar-jit: review: https://github.com/MoarVM/MoarVM/commit/be79d75e02
10:33 brrt blog post is almost done
10:33 brrt ehm, i was wondering
10:33 brrt should i also keep a report on how much hours i've worked in a given time? or is that specific to your arrangment with tpf?
10:41 jnthn No, your grant is goal-based
10:42 jnthn Mine is time-based, which is why I keep a time report
10:59 brrt very well :-)
11:13 brrt phew, published
11:13 jnthn yay, lunchtime reading for me :)
11:13 brrt http://brrt-to-the-future.blogspot.nl/2015/07/intermediate-progress-on-intermediate.html i hope it makes sense at all
11:13 brrt i'll also be having lunch
11:17 timotimo aah good old s-exprs
11:17 timotimo good for everything, basically
11:21 brrt right :-)
11:22 timotimo ", they are also compact they represent trees without any ambiguity" this grammar has breaken
11:23 timotimo "Next week I plan finish" also
11:23 brrt yes
11:23 brrt many broke
11:23 brrt fortunately
11:23 timotimo i'm looking forward to more progress :)
11:23 brrt there is an edit button
11:23 timotimo i don't see it :P
11:23 timotimo also, blogspot is quite insistent on giving me the dutch interface
11:24 brrt fixedit
11:24 brrt hmm that's weird
11:24 brrt i get the american interface
11:24 timotimo haha
11:24 timotimo that's fantastic
11:25 timotimo hm, is const_i16 actually a thing? or did you mean const_i64_16 (in exprlist)
11:25 brrt well, i have to deal with it
11:25 brrt hmmmm
11:25 brrt that is a good question
11:25 brrt that should've died if it isn't
11:25 brrt but it didn't die
11:26 brrt actually, const_i16 is the thing
11:26 timotimo OK
11:26 timotimo i think const_i16 is just not implemented in moar
11:26 brrt aha
11:27 jnthn brrt++ # post
11:27 jnthn And JIT work :)
11:27 brrt :-) thanks
11:27 jnthn brrt: I'd quite curious to see what the API for REPRs/ext-ops to plug in to this will be :)
11:29 brrt well, i think the simplest thing would be something in the terms of the spesh repr extension
11:29 brrt ehm, i mean something like that
11:30 timotimo would we be exposing the exprlist parser to "users" of moarvm?
11:30 brrt so a function void (*jit)(MVMThreadContext *tc, MVMSpeshIns *ins, MVMJitCompiler *jc) - or more parameters as needed
11:31 brrt and the exprlist parser could then be used to generate a repr-specific template mapping
11:31 timotimo and the exprlist parser would generate a .c or .h file that just gets its data linked with the extop library?
11:31 brrt aye
11:32 brrt remind me to add that to the Makefile
11:36 dalek MoarVM/even-moar-jit: 7ada44a | brrt++ | / (3 files):
11:36 dalek MoarVM/even-moar-jit: Add exprlist compilation to makefile
11:36 dalek MoarVM/even-moar-jit: review: https://github.com/MoarVM/MoarVM/commit/7ada44aa8d
11:36 brrt now i'm really going to have lunch
11:36 brrt bbl :-)
11:37 jnthn Have a good lunch!
11:38 * jnthn ate lunch and feels less crappy now
11:38 jnthn (woke up with a clogged nose, unhappy eyes and ears, etc...)
11:40 timotimo do you also get that symptom where it feels like the roof of your mouth is itchy?
11:41 jnthn Not so much that
11:41 jnthn I mostly feel like my whole head is clogged up
11:41 timotimo ugh
11:42 jnthn Kinda like a head ache, but not really ache.
11:42 jnthn Though today I don't have that bit so much
11:49 jnthn Righty, back to the multi-dim stuff
11:50 jnthn Hopefully my brain isn't too dim to work on it today... ))
11:51 timotimo hm, it's kinda hard to weigh the cost/benefit to working on something a bit easier when your head is clogged like that
11:52 timotimo jnthn: how would you like an addition to the profiler that measures how many objects something allocates die young vs go into the old generation?
11:53 jnthn This morning I mostly hid in bed and prepared for tomorrow's travel... This afternoon my head's a decent bit clearer
11:53 jnthn But I did the design work for this stuff earlier in the week, so by now I mostly need to "just" write correct tests and C code :)
11:53 jnthn timotimo: I'm not sure if we have the data to do that?
11:54 jnthn Uh, or can easily have...
11:54 timotimo i'd have to build it
11:54 timotimo i imagine i'd have a list of pointers to things allocated in the nursery recently that the "log allocation" op would fill up
11:55 jnthn Hmm
11:55 timotimo then when the nursery gets collected another step would go through all of these objects and check if they were blessed with a forwarder or not
11:55 timotimo i've got a piece of code right now that surprised me by pretty much linearly increasing its memory usage
11:56 timotimo having an overview of what objects make it to the old generation might help zone in on what gets allocated but not destroyed
11:56 jnthn One other thing I wish we had is a heap blame
11:57 timotimo fwiw, i wouldn't track objects into the old gen to find out if they die before the process ends; i think the administrative overhead may be way too much
11:57 jnthn So we can set an option where at each GC, it spits out what objects are still alive
11:57 jnthn And where they were allocated
11:57 jnthn Well, I think we can build things like it, but I don't think it should be on by default
11:57 timotimo correct
11:57 jnthn In fact, it could be an entirely different kind of profile
11:58 timotimo does that refer only to heap blame or also to my life-expectancy-tracking?
11:58 jnthn Depends how expensive the latter is
11:58 jnthn One thing people like about the profiler today is that the overhead of using it is quite small
11:58 jnthn And I think that's a good default
11:59 timotimo agreed
11:59 jnthn The other problem is that the more things you track, the more it distorts the measurements
12:00 timotimo the other day the thought crossed my mind that perhaps the jit could emit better code for logging instructions, but they are quite likely way too complex to improve very much
12:00 jnthn aye
12:00 timotimo i think we want to have the "kind of profile" configurable anyway; people have been wishing for a coverage report and probably also a line-based rather than block-based profile
12:00 jnthn For example, allocation logging means that allocations are more costly, so the timings get a little distorted for things that allocate
12:01 jnthn Yeah
12:01 jnthn My eventual goal is to have a more general instrumentation framework
12:01 timotimo i was quite annoyed when i built the gdb heap analyzer that accessing stuff through gdb via the python api was so darned slow
12:01 timotimo i was considering building a slim C function that iterates through the nursery and collects things like sizes of objects and REPRs
12:02 jnthn That lets you set up "hooks" at NQP level
12:02 jnthn Or even Perl 6 level
12:02 timotimo oh yeah, that'd be amazing
12:02 jnthn It'd be near useless for profiling due to overhead, but for coverage it'd be neat.
12:02 timotimo definitely
12:02 timotimo and for crazy optimization experiments
12:02 jnthn Yeah, I was pondering building it as a surprise for YAPC...oh wait... :P
12:02 timotimo that means you've already got an almost working prototype? ;)
12:02 jnthn heh, no :P
12:02 timotimo isn't yapc soon? no, wait, wasn't it recently?
12:03 jnthn YAPC::EU
12:03 jnthn The Granada one
12:03 timotimo mhm
12:03 jnthn Damn am I finding an air-con'd hotel for that...
12:03 timotimo thoughts of "how do we run the user supplied code without accidentally recursing infinitely" run across my mind
12:03 jnthn Yeah, that's an issue ;)
12:03 timotimo it could be a per-thread thing
12:04 timotimo in order to not have nested runloops, it'd probably best have its own thread anyway
12:04 timotimo hm, but one good thing about spesh and profiling is that we allocate the stuff needed for spesh in the same thread that has its code improved upon
12:05 timotimo ... but when we run into the user-supplied instrumentation thing, that thread necessarily blocks anyway
12:07 timotimo i was about to suggest using nativecall rather than ops to communicate with the API moarvm offers for instrumentation, but there's the ThreadContext thing ... :\
12:07 timotimo on the other hand, building an op that offers the MVMThreadContext to user code could be a whole lot of fun :D
12:07 timotimo the kind of fun where you break things
12:07 timotimo all the time
12:08 timotimo anyway, this may be for another time
12:08 timotimo good luck with multidim packed arrays
12:08 timotimo looking forward to it :)
12:49 dalek MoarVM: 08ed06b | jnthn++ | / (6 files):
12:49 dalek MoarVM: Stub in MultiDimArray REPR.
12:49 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/08ed06b328
13:01 jnthn Note how the number of dimensions is part of the type, to aid efficient code generation.
13:02 jnthn (The JIT can know how many dimensions there are, and just emit multiplications)
13:14 brrt joined #moarvm
13:49 * timotimo digs into the lifetime tracking for profiling a little bit
13:55 brrt ooh, i like that, dim arrays with known dimensions
13:58 brrt although you immediately find me at a disadvantage
13:59 timotimo hm?
13:59 timotimo because you have to make the jit aware of that soon?
13:59 brrt no, not soon
14:00 brrt but if you have n dimensions you'll typically need n multiplications to find the index
14:00 brrt which means you need a repeating construct
14:00 brrt in generating the code
14:01 brrt i haven't built that in and am not intending to
14:01 jnthn brrt: No, no
14:01 brrt because complex
14:01 jnthn We *statically* know how many dimensions there will be
14:01 brrt getlex needs it too, btw
14:01 jnthn At JIT time
14:01 jnthn At least, for specialized code
14:02 brrt yes :-) but my simple fill-in scheme isn't prepared to deal with that, is what i'm saying
14:02 jnthn Oh
14:02 brrt it's no big deal
14:02 jnthn We can't just produce a list of multiplications?
14:02 brrt for these cases we can do it by hand
14:02 brrt yes, of course, i'm just saying  it'll need special-casing :-)
14:03 brrt anyone know of a good accessiblity-aware editor for linux?
14:03 brrt as in, in emacs zoom doesn't follow my cursor
14:03 brrt it does in other apps
14:04 timotimo i wonder if the several Qt-based code editors (Kate, Qt Creator, ...) are better at this
14:06 brrt hmm
14:06 brrt gedit works
14:06 brrt haven't used that for ages
14:07 dalek MoarVM: e6bcc65 | jnthn++ | src/ (2 files):
14:07 dalek MoarVM: Fix name-o.
14:07 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/e6bcc65355
14:07 dalek MoarVM: 4528932 | jnthn++ | src/ (3 files):
14:07 dalek MoarVM: Implement MultiDimArray REPR compose and allocate.
14:07 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/4528932f6a
14:08 timotimo gedit is all right
14:08 timotimo MoarVMVM :)
14:12 brrt yes, gedit is quite acceptable, now that i've turned tabs to 4 spaces :-)
14:13 timotimo last time i looked, geany seemed quite good
14:27 timotimo jnthn: do you think the very end of MVM_gc_collect would be a good place to analyze the nursery's contents for dead/promoted objects?
14:30 jnthn timotimo: Sorta kinda but...
14:30 jnthn Look carefully in orchestrate.c
14:30 jnthn We actually make multiple calls to that
14:30 jnthn It's a parallel GC and it's not until a certain point you have "consensus" about what is actually going away
14:30 timotimo mhh, right
14:31 jnthn It does work passing between threads
14:31 timotimo i saw that; i was hoping it'd be enough to put the code below the "pass any leftover work to other threads"
14:31 timotimo point
14:35 timotimo hm. the contents of the old nursery get kept around somewhat long, no?
14:35 jnthn After consensus
14:35 timotimo perhaps i ought to put the analysis code right at the end of the enter_from_* subs?
14:35 jnthn Actually just before the MVM_gc_collect_free_nursery_uncopied calls is probably your best bet
14:36 jnthn Then in the parallel case you'll potentially be doing the analysis in parallel too... :)
14:37 timotimo ah, that's after "finish_gc"
14:37 timotimo that's the position you mean, right? outside the for loop that goes through the gc_work_count'ed list
14:37 jnthn Correct
14:38 jnthn If you imagine Moar's collector was a mark and sweep (which it's not, but it holds up here) then we stop the world to mark (in parallel), but the threads are then freed to go their own way in sweeping
14:39 timotimo hum, actually, i may have to do it in that loop so i get all threads' ptds, but the profiler dies in multithreaded code anyway
14:39 jnthn Oh?
14:39 jnthn I never tested it
14:39 timotimo ah, so run_gc is run on every thread?
14:39 jnthn I designed it so we could get there
14:39 jnthn Yeah
14:39 timotimo OK, that means i'll do it outside the for loop
14:40 jnthn No on, you want it in the for loop
14:40 jnthn Right before the call to MVM_gc_collect_free_nursery_uncopied
14:40 timotimo right, i was about to complain that i don't get it ;)
14:40 jnthn I'm just saying that at that point, we're not in "stop the world" mode any more
14:40 jnthn And the data you're looking at is stable
14:40 timotimo OK
14:40 jnthn So it's a good time.
14:41 timotimo checking for prof_data to be NULL is the right indication for "are we profiling"? or would i look in instance somewhere?
14:41 timotimo yeah, instance has a flag for it
14:41 timotimo that'll be better
14:41 jnthn I think there's a function for it even
14:43 timotimo well, ack spits out a whole lot of if(tc->instance->profiling) { ... }
14:43 timotimo so if there's a convenience function for it, we don't use it consistently yet
14:43 dalek MoarVM: 5652ca5 | jnthn++ | src/6model/reprs/MultiDimArray.c:
14:43 dalek MoarVM: Fill out GC bits of MultiDimArray REPR.
14:43 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/5652ca5769
14:44 jnthn *nod*
14:44 jnthn There probably ain't one yet though
14:44 jnthn *then
14:44 jnthn If we add one it'd want to be an MVM_STATIC_INLINE
14:44 timotimo yup
14:46 timotimo oh, now it gets funny
14:46 timotimo since i ought to track objects through more than one nursery, the list of objects to track can get fragmented
14:46 timotimo i may have to build a free list for it, which wouldn't just work with pointers, as it gets realloc'd frequently
14:47 timotimo so a linear scan may be necessary, but ... ugh
14:47 timotimo or a compaction after the scan
14:47 timotimo i don't yet have a clue how many objects would end up getting tracked
14:58 dalek MoarVM: 1077907 | jnthn++ | src/6model/reprs/MultiDimArray.c:
14:58 dalek MoarVM: Implement introspective bits of MultiDimArray.
14:58 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/1077907818
14:59 brrt jnthn: what is operandd type mask
14:59 jnthn brrt: Context?
14:59 timotimo masks the flags for whether it's a lexical, literal, register, ...
14:59 jnthn Other than "a typo for operand"
14:59 timotimo because the flags also have write/read flags
14:59 brrt aha
14:59 brrt nm
15:00 timotimo you can check the big piece of spesh dump that dumps operands
15:00 brrt it's the mask for the operand type field
15:00 timotimo spesh dump code
15:00 timotimo thingie
15:00 jnthn Oh, in interp.h...
15:00 brrt yes, there
15:00 brrt :-)
15:00 * brrt was wondering what a mask type would be
15:01 timotimo and what kind of person would wear that kind of mask
15:01 jnthn Yeah, the lower 3 bits used for literal/lexical/register read/write
15:01 jnthn And the next 5 bits for what type of register it is
15:04 jnthn Short break; bbs
15:05 timotimo oh, damn. i'm refering to the MVMProfileAllocationCount by pointer, but that's an address into a region tthat gets realloc'd
15:06 brrt well
15:06 brrt why do you to that then :-P
15:06 timotimo now i have to schlepp around one more field ... this may be the moment where it'd be worth building a struct rather than having the arrays "flat" in the struct :\
15:09 vendethiel joined #moarvm
15:12 timotimo i'm just doing a PoC at the moment anyway
15:12 timotimo at least it feels like that
15:25 jnthn Darn this hot weather. plz can haz winter now?
15:26 brrt insufficent winter available
15:26 timotimo people are locking away important cold in their fridges
15:26 timotimo if only everybody could open up their fridge, the world could be saved from global warming
15:26 lizmat Must. Keep. Breathing.
15:27 brrt nice timo :-P
15:27 lizmat our neighbour has a new airco, with the exhaust hanging from an half opened window pointing downward
15:27 brrt who has an airco in nl
15:27 brrt seriously
15:27 brrt who does that
15:28 brrt that makes no sense
15:28 lizmat more and more people, with the odds of a heatwave going up to once every 3 years
15:28 brrt for the one week in which it is warm in the year
15:28 brrt well, that's... true-ish, i guess
15:28 brrt 400 ppm and counting, folks
15:29 jnthn My wife was asking if our place here in Prague has aircon. I showed her the climate chart for here, at which point she agreed it's probably useful for a handful of times a year. :)
15:30 jnthn (The hottest months are July and August, and the average daily high is only 23C)
15:30 nwc10 jnthn: how thick are the walls? (how old is the building?)
15:31 TimToady and which floor are you on?
15:31 jnthn 3rd floor (or 2nd the British way)
15:31 jnthn nwc10: Given I don't hear a peep from neighbors, or much from outside if I close the windows, I figure fairly thick. :)
15:31 jnthn It *is* south-facing, however.
15:32 timotimo oh lord ... could it be my ProfileCallNodes are moving from below me because profile_log_enter reallocs its succ array >_<
15:33 nwc10 if it's altbau (and dates back to the Austro-Hungrian emptire times) then I suspect that the walls are thick enough to ignore summer
15:33 nwc10 I can haz internetz (2.0) sort off
15:33 nwc10 sort of
15:34 vendethiel joined #moarvm
15:34 jnthn Today is the first day that it's actually Just Too Hot in here, and it's more than 10C above the average daily high today.
15:34 nwc10 in that, rather than my laptop on the USB dongle, I now have the Pi doing it, and NAT
15:34 jnthn (WU claims currently 34.7C)
15:35 lizmat "only" 33.7 here
15:35 jnthn Still very urgh
15:35 timotimo is the only thing i can do to not lose my sanity to give a PCN a list of things that point to it or alternatively turn its succ array into an array of pointers instead? >_<
15:36 * jnthn hopes the claims of aircon where he's spending the next week actually hold up :)
15:36 timotimo we have above 35 here according to the weather station website thingie
15:36 timotimo http://wetterstationen.meteomedia.de/?station=107260&amp;wahl=vorhersage
15:36 timotimo and that's going to stay for tomorrow and the day after that apparentlty
15:37 jnthn Righty, let's try and crank out a bit more of this multi-dim impl
15:37 jnthn Darn. Now I have to do multiplication rather than just pointer shuffling...
15:37 timotimo alternatively decouple the measurements from the individual call nodes to get just a global overview of how many objects of what type were "killed" in any given gc run
15:38 timotimo jnthn: it could prove valuable to be able to supply different "strides" for arrays somehow
15:38 timotimo is that part of the current design?
15:38 jnthn timotimo: Considered keeping a "shadow nursery" per thread?
15:38 jnthn timotimo: No, I'm just going with C layout semantics, which is what S09 talks about
15:38 timotimo hmm
15:38 brrt what is internet 2.0
15:38 timotimo i'm not sure if a shadow nursery would help me here
15:39 jnthn (by shadow nursery I mean that you keep a copy of the allocations "in order", and then you can go thorugh the real nursery and compact the shadow one as you analyze it)
15:39 timotimo brrt: it's basically identical to "web 2.0", but it also shows that you have no idea that the internet has more services than just HTTP on port 80
15:39 jnthn Then you're linear-scanning the two
15:39 timotimo the problem i'm struggling with here is how to attribute a given dead object to the process call node it was allocated in
15:40 timotimo scanning the objects i have is no big problem; my current implementation is somewhat like a shadow nursery already
15:40 jnthn Oh, and call nodes can move, or?
15:40 timotimo but it only contains things that were allocated together with a given log allocation instruction
15:40 timotimo yeah, log_enter can realloc the succ array of child nodes and i take a pointer to a PCN :(
15:41 timotimo more exactly: the succ array is just all pcns in order, rather than a list of pointers to the pcn objects
15:41 jnthn Really?
15:41 jnthn /* Successor nodes so far. */
15:41 jnthn MVMProfileCallNode **succ;
15:41 jnthn It doesn't look that way, that's a **
15:41 jnthn Also if we did that surely this bit doesn't end well:
15:41 jnthn /* The node in the profiling call graph that we came from. */
15:41 jnthn MVMProfileCallNode *pred;
15:42 timotimo huh
15:42 timotimo weird, i must hav emisread
15:42 jnthn And the realloc I see is certainly about the pointer array
15:42 jnthn pred->succ = MVM_realloc(pred->succ,
15:42 jnthn pred->alloc_succ * sizeof(MVMProfileCallNode *));
15:42 jnthn That sizeof is size of a pointer
15:42 timotimo yeah, i did misread
15:42 jnthn So you're safe :)
15:42 timotimo so let's see what i'm still doing wrong
15:43 timotimo ah, oops
15:44 timotimo copy-pasted the realloc line and forgot to update the first parameter
15:45 timotimo now it runs %)
15:51 timotimo um ... huh? here's an instance where "dead_before_gen2" ends up a very, very big number, but the actual number allocated is 5
15:52 timotimo m: say 8590065665.base(16)
15:52 camelia rakudo-moar add282: OUTPUT«200020001␤»
15:53 timotimo m: say 8590065665.base(2)
15:53 camelia rakudo-moar add282: OUTPUT«1000000000000000100000000000000001␤»
15:54 timotimo multiple occurences of that stuff not going so well
15:54 timotimo ah, i forgot to check if things got moved to the old gen
15:55 timotimo that may cause things to get counted a whole bunch of times
16:02 timotimo damn, fixing that didn't get rid of the bogus values yet :(
16:04 jnthn I guess it's not simply forgetting to obtain zeroed memory?
16:05 timotimo oh, huh
16:05 timotimo it *could* be i have to manually null that
16:05 timotimo i thought i saw calloc be used for that
16:06 timotimo oh, i put the code in a bogus location, too :)
16:06 dalek MoarVM: a24501f | jnthn++ | src/6model/reprs/MultiDimArray.c:
16:06 dalek MoarVM: Implement MultiDimArray setting dimensions.
16:06 dalek MoarVM:
16:06 dalek MoarVM: This is also where the memory allocation takes place. Take some care
16:06 dalek MoarVM: to be memory-safe in the face of multi-threaded abuse.
16:06 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/a24501f2ad
16:07 timotimo the code above my code looked so weird, now  iknow why %)
16:08 * timotimo puts a goto into the code and hopes no velociraptor comes to nom him
16:08 timotimo don't even need it
16:10 timotimo cool, seems to work now
16:10 timotimo on to the HTML portion
16:30 dalek MoarVM/even-moar-jit: b5155eb | brrt++ | / (5 files):
16:30 dalek MoarVM/even-moar-jit: Nearly complete template-based building
16:30 dalek MoarVM/even-moar-jit:
16:30 dalek MoarVM/even-moar-jit: Added very minimal IR definitions; likely needed to expand quite
16:30 dalek MoarVM/even-moar-jit: a bit in the future. Also tied exprlist compilation into expr.c
16:30 dalek MoarVM/even-moar-jit: building.
16:30 dalek MoarVM/even-moar-jit: review: https://github.com/MoarVM/MoarVM/commit/b5155eb556
16:30 brrt up next: roots
16:31 jnthn brrt++ # progress :)
16:31 brrt :-)
16:32 brrt i'm perosnally very happy with the fact that the template application routine is as simple as it is
16:33 brrt and... roots needs a merge operation
16:35 brrt oh, and i guess i've forgotten about adding stores, too
16:35 brrt hmm
16:36 brrt if i'm doing that, roots merging is a lot simpler, methinks
16:36 brrt no
16:36 brrt i'm wrong
16:36 brrt but i need to have dinner anyway :-)
16:36 jnthn :)
16:38 brrt bbl
16:49 timotimo higher order macros?!
16:53 vendethiel joined #moarvm
17:02 dalek MoarVM: 9422c59 | jnthn++ | src/6model/reprs/MultiDimArray.c:
17:02 dalek MoarVM: Implement read/write to multi-dim array.
17:02 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/9422c59d3a
17:05 jnthn Didn't write the test coverage yet, but this should also work for packed multi-dimension integer arrays
17:05 timotimo something i'd love to use in my current script :)
17:05 jnthn Yeah, once I get the VM level nailed there'll still be the Perl 6 level to do :)
17:05 timotimo exposing that to perl6 code will take a bit yet, though
17:05 timotimo yeah
17:06 jnthn anyway, shopping for nom, eating nom, etc.
17:06 timotimo yup :)
17:06 timotimo bonne nom
18:30 zakharyas joined #moarvm
18:33 * jnthn nam :)
18:35 * jnthn figures he'll do his packing now, in hope that lower temperatures into the evening will make hacking on stuff a bit more easier :)
19:07 dalek MoarVM/early_death_percentage: 6ea2e55 | timotimo++ | src/ (4 files):
19:07 dalek MoarVM/early_death_percentage: track freshly allocated objects to see how early they die
19:07 dalek MoarVM/early_death_percentage: review: https://github.com/MoarVM/MoarVM/commit/6ea2e55738
19:31 jnthn Righty, let's write some more code...
19:49 dalek MoarVM: c3de73a | jnthn++ | src/6model/reprs/MultiDimArray.c:
19:49 dalek MoarVM: Fix a silly thinko in index calculation.
19:49 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/c3de73aedb
20:03 dalek MoarVM/even-moar-jit: 8a6a6c7 | brrt++ | src/jit/expr.c:
20:03 dalek MoarVM/even-moar-jit: Add roots and end-of-block stores
20:03 dalek MoarVM/even-moar-jit:
20:03 dalek MoarVM/even-moar-jit: Roots are the terminals of the tree. The code generator should
20:03 dalek MoarVM/even-moar-jit: evaluate each root in order. At the end of a block, values are
20:03 dalek MoarVM/even-moar-jit: spilled to memory (that is, until we implement register
20:03 dalek MoarVM/even-moar-jit: allocation). These spills also become roots. This should
20:03 dalek MoarVM/even-moar-jit: ensure that the whole basic block is eventually compiled.
20:03 dalek MoarVM/even-moar-jit: review: https://github.com/MoarVM/MoarVM/commit/8a6a6c7511
20:04 dalek MoarVM: 69aeeee | jnthn++ | src/6model/reprs/MultiDimArray.c:
20:04 dalek MoarVM: Refuse dimension-changing operations.
20:04 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/69aeeee3be
20:05 jnthn aeeee!!!
20:11 tadzik aeeee!!! https://www.youtube.com/watch?v=eh7lp9umG2I
20:30 dalek MoarVM: 14c3a50 | jnthn++ | src/6model/reprs/MultiDimArray.c:
20:30 dalek MoarVM: Make at_pos and bind_pos work on 1D MultiDimArray.
20:30 dalek MoarVM:
20:30 dalek MoarVM: This will ease usage of it when we simply want to have fixed-size 1D
20:30 dalek MoarVM: arrays.
20:30 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/14c3a508d2
20:33 timotimo that's a nice commit short-id
20:43 jnthn tadzik: I didn't last 10 hours of it :P
20:44 timotimo This video contains content from Classic Media Ltd, who has blocked it in your country on copyright grounds.
20:44 timotimo ^- god damn it
20:44 timotimo but other versions are still available
20:44 timotimo like the live-action version
20:47 dalek MoarVM: fa318d6 | jnthn++ | src/6model/reprs/MultiDimArray.c:
20:47 dalek MoarVM: Implement elems/setelems on MultiDimArray.
20:47 dalek MoarVM:
20:47 dalek MoarVM: Again, to ease use as a 1D fixed size array.
20:47 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/fa318d6428
20:48 jnthn Well, that's got that REPR filled out...
20:49 jnthn Oh, except the serialize/deserialize bits
20:56 jnthn Damn, the hot has been draining. Think I leave it there for tonight
20:57 timotimo the hot is draining me a lot, too
20:58 jnthn Already time for the next grant weekly too
20:58 jnthn Mebbe I'll work on that on the place tomorrow :)
20:58 jnthn *plane
21:09 TimToady joined #moarvm
21:16 TEttinger joined #moarvm
22:48 vendethiel joined #moarvm

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