timotimo jnthn: i think you forgot to push the commit that fixes the i32/i64 problem 00:09
01:25 jnap joined 02:14 colomon joined 02:26 jnap joined 02:44 colomon joined 03:27 jnap joined
dalek arVM: 2890baa | diakopter++ | build/test.txt:
updated test message

arVM: fe79f4c | diakopter++ | / (72 files):
Merge branch 'master' of github.com:MoarVM/MoarVM

finished sentence in comment
I think I got it right -- review welcome, though.
diakopter gah.
03:54 dalek joined 04:27 jnap joined 05:28 jnap joined 06:17 ssutch joined 06:29 jnap joined 07:30 jnap joined 08:30 jnap joined 08:52 _ilbot joined
[Coke] moar: "total", 17247, 10877, 285, 790, 28855, 28494? 09:43
timotimo wowza
[Coke] feather.perl6.nl/~coke/moar.out 09:44
several todo passed. 09:45
timotimo what kind? we still have the missing support for continuations/proper coroutines 09:46
[Coke] go to that url, search for "todo passed" 09:47
I'm back to sleepin'.
timotimo most of them are probably false positive
FROGGS [Coke]: sleep well! 09:48
timotimo: yeah, I think so too 09:49
nqp-m: say("abc" ~~ /./)
camelia nqp-moarvm: OUTPUT«a␤»
FROGGS hmmm, I expected to see "abc" here too 09:50
nqp-m: say("abc" ~~ /^./)
camelia nqp-moarvm: OUTPUT«a␤»
FROGGS weird
masak diakopter: you can easily avoid that kind of merge commit by doing 'git pull --rebase' 10:36
oops, stale backlog.
the kind like fe79f4c.
hm, 3rdparty/dyncall shows up as being modified in 'git status' all the time, without me having touched it. 11:11
something wrong there with .gitignore settings? 11:12
oh, it's in a submodule.
FROGGS I have that too but I have no idea what might be wrong 11:13
masak masak enjoys doing small janitorial stuff
11:33 jnap joined 11:51 rurban joined
masak this comment doesn't seem to agree with the code: github.com/MoarVM/MoarVM/blob/mast...tion.c#L46 11:55
I might be wrong, but I expected to see a line of code that zeroes the memory that is returned. 11:56
FROGGS hmmm, I can build and install nqp-m 12:09
arnsholt masak: Yeah, I agree 12:26
12:33 jnap joined
masak masak submits a moarvmissue 12:57
I have this plan where I want to build a subset of MoarVM -- just the allocation and GC parts -- and instrument them from the outside. 13:03
basically sending in commands like "allocate an object in the nursery", "create a refernce between object X and object Y", "sever all references to object Y", "force a GC run". 13:04
my C is not so strong, so I don't know how far I will get. but I look forward to trying. 13:05
arnsholt That sounds interesting. And then we could make a MoarVM torture chamber of sorts, seeing how weird workloads perform and so on
masak arnsholt: are you familiar with QuickCheck? 13:06
arnsholt: I want to implement a simple model of the GC in Perl 6, and then run them alongside, looking for discrepancies. 13:07
jnthn: I love how you have C macros to emulate closures in Moar! :) 13:08
arnsholt Oooooh, that's even cleverer! 13:10
I used QuickCheck for a tiny Haskell project I did half a year ago or something 13:11
That was truly neat
diakopter masak: actually the memory is guaranteed already zeroed 13:12
by the last GC run
masak diakopter: interesting. 13:14
diakopter: then why do we have two functions for that? 13:15
can't we just kill off the zeroed one?
oh, and by the way, why does the GC waste time zeroing memory as part of freeing it?
diakopter jnthn said he added those originally to match parot, but then left them in case we noticed that zeroing optionally saves efficiency
masak also, what about allocation before any GC run? are things still guaranteed to be zeroed? 13:16
diakopter it zeroes as part of freeing currently to help catch errors of referring to poniters in the old space
masak yes, I understand. 13:17
is the memory guaranteed to be zeroed before any GC run?
(and if not, does that matter?)
diakopter yes, I think the first malloc is either calloc or memset 0
masak ok.
masak closes issue
no, wait. 13:18
I still think the comment is *wrong*.
and needs to be changed.
so I'll keep the issue open.
(put pasting this discussion into it)
diakopter well, you could change the issue to "look into whether zeroing can be made optional, once we're bug-free-ish"
masak oki
diakopter and the comment could refer to the issue :) 13:19
masak masak makes it so 13:21
dalek arVM: 90713bd | masak++ | src/gc/allocation.c:
refer to issue from comment

13:34 jnap joined
masak when I was younger, I used to strongly dislike all kinds of reference cycles. 13:58
diakopter I LIKE TREES
masak nowadays, I find them quite OK. I'm just making sure they don't escape beyond some established boundary.
diakopter .. and then you liked trains instead..
masak :) 13:59
jnthn The comment could convey it better, but the overall idea is that there's one way to get a piece of memory that promises to be zeroed, and another way to get a piece of memory when you don't care what it's state is, 'cus you're going to populate it all anyway. 14:40
FROGGS hi jnthn 14:41
jnthn At present, allocation happens in nursery tospace, which is pre-zeroed. That did make debugging a bunch easier in the earlier days *but* is less cache friendly, so I can imagine us moving the memset to allocation time once we're happy with overall stability.
masak jnthn: understood. 14:55
jnthn: for someone reading the source code, it was confusing coming across a comment that said the function did something different, when in fact it didn't.
jnthn Well, it *does* give back zeroed memory :)
But yeah, it could be stated much better.
masak anyone, feel free to re-jigger the comment some more. 14:56
dalek arVM: bebea27 | jonathan++ | src/gc/allocation.c:
Comment tweak to better explain current situation.

arVM: ad694b6 | jonathan++ | src/gc/wb.h:
Correct another comment.

nwc10 jnthn: what is supposed to update tc->cur_frame->params.args[0].o when the GC moves it? 15:02
jnthn nwc10: iirc, that just points into the caller's arg buffer 15:03
nwc10 because this line in box_s can trigger a GC run, and that pointer isn't being updated:
MVMObject *box = REPR(type)->allocate(tc, STABLE(type));
15:04 ssutch joined
jnthn as such, it is meant to be updated by roots.c:287 15:04
Hmm...it really should be being caught by the thing I just mentioned...unless flattening took place, in whcih case the code at line 312 should do it. 15:05
nwc10 that's adding frame->args
jnthn Right, but params.args points to the frame->args of the caller unless flattening took place.
nwc10 the naughty pointer is in frame->params.args
jnthn And we should certainly walk our way to the caller frame. 15:06
Does frame->caller->args point to the same location as frame->params.args? 15:07
nwc10 yes
jnthn And is frame->cur_args_callsite non-null? 15:08
nwc10 NULL
jnthn oh, ouchy.
argh, I think I see what it may be. 15:09
The calls set up by the CPS mechanism...
15:20 colomon joined 15:36 jnap joined 15:40 colomon joined
jnthn nwc10: Testing a fix here. 15:53
nwc10 cool 15:54
dalek arVM: 80a4be0 | jonathan++ | src/ (6 files):
Factor out C -> interp call; fix callsite mark bug

This will hopefully deal with a fail-to-mark issue found by nwc10++, and factors out some repeated logic.
jnthn nwc10: Hopefully that helps. Lemme know if not. 16:02
nwc10: What nursery size are we down to now? :)
nwc10 oh, 1K built in not-sure-how-long 16:03
but most of a day
jnthn NQP, or Rakudo too?
nwc10 NQP
this was a hacked-about MoarVM trying to build Rakudo
nursery size 64K, IIRC, but 256 nursery collections before gen2 16:04
and 256 * 64K allocated, but all but 64K mapped as no read, no write
so was starting to torture the Rakudo build 16:05
jnthn :)
nwc10 1K was 17 hours 16:06
jnthn Wow 16:07
nwc10 All tests successful.Files=85, Tests=1909, 3453 wallclock secs ( 0.73 usr 0.22 sys + 10694.21 cusr 19.74 csys = 10714.90 CPU)
gah, terminal eats newlines :-(
FROGGS newyears, newlines, whatever
jnthn Well, the inter-generational roots list must get huge with such a small nursery... 16:11
FROGGS jnthn: btw, here are some absurdities I've hit... gist.github.com/FROGGS/cbdcd4054a450d0faa22 16:24
I tried to hunt them down but without luck so far
16:37 jnap joined
[Coke] FROGGS: here's another one: 17:10
r-m: my $a is dynamic; say $a.VAR.dynamic;
(that one segfaults) 17:11
the say isn't needed, but the last .dynamic is. 17:12
jnthn Yeah, got some progress on that one here. 17:13
[Coke] jnthn++
jnthn Arrgh...why does building latest NQP give me "Unhandled exception: Missing or wrong version of dependency 'gen\moar\stage1\QRegex.nqp'"? 17:17
[Coke] here's another segfault: 'Any.exists("a")' 17:19
moritz jnthn: missing dependency, afaict
jnthn: a 'make clean'
jnthn I did make clean...
moritz huh.
or maybe you need to clean the install location too 17:20
jnthn Reverting 41debf4170 fixes it for me
[Coke] Another segfault: $/.VAR.default 17:22
jnthn FROGGS: Removing my installed version helped 17:25
FROGGS: But then building after another make install breaks the build again. 17:26
FROGGS: Yeah, just adding that path in unconditionally during the bootstrap will bust it. :( 17:28
[Coke] Another segfault: +Mu 17:32
FROGGS huh? 17:35
jnthn FROGGS: It relies on falling back to --libpath=... 17:36
FROGGS: Whcih no longer happens.
FROGGS did you reconfigure?
jnthn Yes.
I dont find commit 41debf4170 btw... which repo is that?
jnthn NQP 17:37
oh, I did get it right
commit 41debf41705d3979edaeffb47b804c1d15a1015e
Author: Tobias Leich [email@hidden.address]
Date: Tue Dec 31 12:41:18 2013 +0100
add nqp language diretory to search path
FROGGS I meant reconfigure in rakudo... 17:38
why does it work for me? ó.ò
jnthn 'cus you don't have an existing install, maybe?
FROGGS I have... like always 17:39
jnthn OK, then...I dunno 17:40
I'm surprised you don't get breakage too
for me, a make install of NQP, then make clean, then make, and it blows up after a bit
FROGGS I'll check in a bit 17:47
diakopter hi 18:05
18:38 jnap joined 18:53 colomon joined 19:53 cognominal joined 20:03 [Coke]_ joined 20:05 FROGGS_ joined 20:07 cognominal__ joined 20:09 sorear_ joined 20:40 jnap joined 20:56 harrow joined
dalek arVM: 560c0b4 | jonathan++ | src/ (2 files):
Clean up bogus container-related code.

21:28 jnap joined 21:29 jnap1 joined
dalek arVM: 2568495 | jonathan++ | src/core/ (2 files):
Bring getlexrel in line with expected behavior.

Fixes PseudoStash.exists_key in some cases, and thus the spectests that depend on it.
arVM: 99cc82d | jonathan++ | src/core/args.h:
Expose MVM_args_setup_thunk.

22:53 arnsholt joined 23:01 jnap joined
grondilu grondilu tries to compile moarkudo 23:55
Unhandled exception: While looking for 'ModuleLoader.moarvm': no such file or directory
^what am I missing?
timotimo that's why froggs has been working on supplying multiple --libpath commandline args 23:56
FROGGS_ grondilu: just make sure you pulled MoarVM, nqp and rakudo 23:57
and reconfigure, to get proper makefiles
timotimo i'm almost finished getting my p6sort for moarvm finished 23:58
FROGGS_ very cool
grondilu I ran 'perl Configure.pl --gen-nqp --backends=moar --gen-moar', shouldn't that pull everything?
timotimo tomorrow, i may implement timsort instead of mergesort
afaict, that's the "state of the art" for merge-sort-like sorting 23:59
FROGGS_ grondilu: perl Configure.pl --gen-nqp=master --backends=moar --gen-moar=master