02:57
ilbot3 joined
08:53
dogbert11 joined
|
|||
Geth | MoarVM: 7abf248f3e | cygx++ (committed using GitHub Web editor) | src/spesh/manipulate.h Make MVM_spesh_manipulate_remove_handler_successors() public Rakudo commit baa1393 uses it in src/vm/moar/ops/container.c |
09:00 | |
MoarVM: e15db944bc | niner++ (committed using GitHub Web editor) | src/spesh/manipulate.h Merge pull request #789 from cygx/patch-2 Make MVM_spesh_manipulate_remove_handler_successors() public |
|||
09:07
statisfiable6 joined
09:23
greppable6 joined
09:28
reportable6 joined,
bisectable6 joined,
unicodable6 joined
11:35
quotable6 joined
11:42
quotable6 joined
12:14
quotable6 joined
13:19
p6lert joined
14:55
Ven`` joined
16:32
domidumont joined
16:38
evalable6 joined,
domidumont joined
16:40
zakharyas joined
17:19
wictory[m] joined
|
|||
wictory[m] | How is memory alignment of gc allocated objects handled in moarvm? | 17:23 | |
timotimo | objects are created in a push-the-pointer area and move at most once into a size-segregated memory pool | 17:28 | |
no, sorry, at most twice | |||
once from nursery to nursery (semi-space copying garbage collector for the nursery) and another time to the "old generation" | |||
wictory[m] | ok, when I read the code I got the impression that the nursery basically does not guarantee any alignment. If we start by assuming that nursery memory area is "well aligned" from the beginning. Then the sizes of the objects pushed before an object of interest decides on whether the object will be aligned. Have I understood this correctly? | 17:32 | |
17:33
zakharyas joined
|
|||
wictory[m] | this is a place where is happens: github.com/MoarVM/MoarVM/blob/e15d...tion.c#L37 | 17:38 | |
so if `tc->nursery_alloc` unaligned, the allocated object will be unaligned. `tc->nursery_alloc` becomes unaligned when an object with an "unaligned" size is allocated. | 17:41 | ||
This is another place where it happens: github.com/MoarVM/MoarVM/blob/e15d...ect.c#L313 | 17:42 | ||
timotimo | how about putting a printf in there that triggers if an unaligned address gets in there and see if it actually does happen? | ||
wictory[m] | And for reference, here is a piece of code that relies on the fact that the objects are tight together github.com/MoarVM/MoarVM/blob/e15d...ect.c#L618 | 17:44 | |
when I install rakudo from openbsd ports, I get an unaligned access assertion from libatomic_ops when I `use` the openssl module. | 17:47 | ||
I managed to minimize the test that triggered this to something like: load a module A with a NativeCall Sub in, then load module B. Unfortunately I don't have the code here right now. | 17:48 | ||
The native sub is a `Sub+Something` which has an unaligned size. After that a Lock is created, and when someone tries to access the Lock, I get the assertion | 17:49 | ||
timotimo | ah, access to atomic variables is likely a bunch more picky | ||
if you're in gdb, you can "call MVM_dump_backtrace(tc)" (just go up a few frames to get a tc) | 17:50 | ||
wictory[m] | yeah, so I also hacked toghether a fix which tries to keep `tc->nursery_alloc` aligned. I'm able to run the test suites of nqp and rakudo with it. however, I'm not sure if that is the right way to solve it. | 17:51 | |
`MVM_dump_backtrace(tc)` sounds like a useful routine :) I will try that later. | 17:52 | ||
I could open up an issue or PR on github about this later, maybe that the best thing to do here. | 17:53 | ||
timotimo | cool | 18:01 | |
18:09
domidumont joined
18:16
zakharyas joined,
domidumont1 joined
19:35
greppable6 joined
20:36
Kaiepi joined
21:14
colomon joined,
MasterDuke joined
|
|||
MasterDuke | Has anybody had a chance to look at github.com/MoarVM/MoarVM/pull/788 ? Any comments? | 21:15 | |
timotimo | i don't see a reason to keep it unmerged | 21:28 | |
Geth | MoarVM/master: 8 commits pushed by MasterDuke17++ | 21:29 | |
timotimo | so there we go | ||
mst | the S-expr format for the templates makes me irrationally happy | 21:31 | |
timotimo | you surely saw damian conway's talk that has quicksort written in basically-lisp-but-actually-perl6? :) | 21:32 | |
mst | I think that one was first thing in the morning, ergo "no" | 21:37 | |
timotimo | i'm not sure if it's the "shoulders of giants" talk or another | 21:38 | |
but i do believe there's recordings available | |||
21:41
Zoffix joined
|
|||
Zoffix | I tried to do the bumps to bring those commits in, but the build died with "failed to load library 'dynext/libperl6_ops_moar.so'" | 21:41 | |
yoleaux | 15:51Z <TimToady> Zoffix: removing that hack is probably fine, since my lack of nqp understanding at that point was primarily syntactic | ||
timotimo | Zoffix: you may need a "make clean"? | ||
lizmat | timotimo: make clean where ? | 21:42 | |
timotimo | rakudo | ||
lizmat | done that, doesn't fetch the new Moar :-( | ||
timotimo | "fetch"? | ||
Zoffix | k, lemme try that | 21:43 | |
lizmat | perl Configure.pl --gen-moar --gen-nqp --backends=moar --make-install | ||
with a locally bumped NQP_VERSION | |||
timotimo | huh | ||
lizmat | aaah... | 21:44 | |
oops | |||
my bad | |||
I had only added the new version, not removed the previous one :-( | 21:45 | ||
timotimo | oh, you mean the file had two lines? | ||
Zoffix | Ah, lizmat++ already bumped nqp. Never mind me then. | ||
21:45
MasterDuke joined
|
|||
lizmat | timotimo: yeah | 21:46 | |
and it took the first I guess | |||
timotimo | that could be made to explode | ||
lizmat | yeah... well, perhaps... | ||
MasterDuke | timotimo: cool, thanks | 21:47 | |
timotimo | no, thank *you* | ||
MasterDuke | There are still a couple missing that had a lot of hits when building rakudo | 21:48 | |
timotimo | cool, which are those? | ||
MasterDuke | But they were a bit more complicated | 21:49 | |
Zoffix | Yeah, make realclean in all repos made the thing compile | ||
MasterDuke | I’m on my phone, don’t remember exactly | ||
timotimo | it'd be interesting to compare counts of how big the lines "making tree out of [blah, blah, blah"]" get | ||
MasterDuke | Maybe I can find them… | ||
timotimo | don't worry, i'll be afk soon, but i could check myself | ||
MasterDuke | Getattr and bindattr were two I remember | 21:51 | |
_i variant I think | 21:53 | ||
21:58
MasterDuke joined
|
|||
Zoffix | Oh, the place where it worked (I think) was my local box. Still fails with the same error on my VM :/ | 22:03 | |
nm, wrong commands | 22:04 | ||
22:13
Zoffix left
23:09
Ven`` joined,
dalek joined,
synopsebot joined,
Geth joined,
p6lert joined
23:11
Ven`` joined
23:30
Util joined
23:54
colomon joined
|