jnthn has had his image resize/upload script he went through in his YAPC::EU talk happily churning away much of the day :) | 00:01 | ||
r-m concurrency stuff definitely has some work to go, but this thing is running very nicely :) | 00:02 | ||
Time for sleep & | 00:03 | ||
01:15
camelia joined
01:56
camelia joined
04:03
camelia joined
04:45
ggoebel11111112 joined
06:32
avuserow joined
06:48
FROGGS joined
06:56
avuserow joined
07:14
zakharyas joined
08:03
cognome joined
08:15
avuserow joined
08:20
kjs_ joined
08:38
zakharyas joined
|
|||
timotimo | HC Hammer, eh? | 08:44 | |
jnthn | Hammer Controller | 08:48 | |
timotimo | ah | 08:56 | |
10:00
camelia joined
10:31
flaviusb joined
|
|||
carlin | *MC Hammer | 10:46 | |
(typo correction ~12 hours later) | 10:47 | ||
12:33
camelia joined
|
|||
timotimo | what was the reason we went for dynasm instead of llvm, btw? | 13:29 | |
moritz | llvm is huge in comparison | 13:36 | |
and... uhm, I think brrt++ blogged about it | |||
timotimo | yeah, but it also gives us everything | ||
lots of platforms, for example | |||
moritz | i think one pain point is integrating the LLVM JIT with our own runloop | 13:38 | |
timotimo | i'd like to prototype a tiny quasi-register-allocator for our jit, but it'd have to know stuff about roots then :\ | 13:49 | |
except ... if just removing the load-from-memory operations if we still have a register around that holds the value is already a big help, that could Just Workā¢ | 13:50 | ||
so if i keep the stores around, but kick the loads, maybe that'll be noticable | 13:54 | ||
and in fact, it'd be doable before we get dynasm's fully realized register selection thingie magic | 13:55 | ||
13:55
JimmyZ joined
|
|||
JimmyZ | good evening | 13:55 | |
timotimo | hey JimmyZ :) | 13:56 | |
nwc10 | good UGT heresy, JimmyZ | ||
JimmyZ | hello timotimo, nwc10 | 13:57 | |
timotimo: looks like the post of brrt++ had said it | |||
timotimo | yes | ||
JimmyZ | another reason about llvm is that llvm is written in C++ :P | 13:58 | |
timotimo | oh well. | ||
JimmyZ | about removing the jit code of loading and storeing result in Moarvm's regs, I wanted to ask brrt++ about it, but I didn't | 14:00 | |
:P | |||
timotimo | heh. | 14:01 | |
do you have a better idea than me? | |||
nwc10 | beer? :-) | 14:02 | |
(It is Friday, after all) | |||
timotimo | i was going to carry around a little struct that you'd tell the addresses (index of local) of things you want to get and then let it emit the proper mov operations | ||
or something like that | |||
and after an op is done, you set the new values of the registers or invalidate them if necessary (because you wrote over them in your code) | 14:03 | ||
now that i spell it out, that sounds pretty terrible %) | |||
JimmyZ | how does luajit do it? | ||
timotimo | no clue | ||
JimmyZ | brrt-to-the-future.blogspot.com/201...ssons.html # I think there are some good roadmap for MoarVM :P | 14:16 | |
timotimo | yeah | ||
the iterator thing he mentions near the end is already implemented | |||
JimmyZ | oh, is it in the repo now? | 14:17 | |
timotimo | i believe so. gimme a second | ||
oh, hm. | 14:18 | ||
indeed | |||
github.com/MoarVM/MoarVM/blob/mast....dasc#L909 | 14:19 | ||
spesh/optimize.c emits these | |||
JimmyZ | I thought it didn't | 14:22 | |
:P | |||
15:16
kjs_ joined
15:55
camelia joined
16:23
FROGGS joined
19:43
flussence joined
|
|||
dalek | MoarVM/sepsh: 0cfae6d | (Tobias Leich)++ | src/ (13 files): | 20:07 | |
MoarVM/sepsh: [WIP] implement multi-char input line separators | |||
MoarVM/sepsh: | |||
MoarVM/sepsh: This implemements line seps on a grapheme level that are not just one character long. | |||
MoarVM/sepsh: These separators are used when cutting lines from an already filled buffer, but they | |||
MoarVM/sepsh: are also used to fill a buffer by requesting more data from a stream until we find a | |||
MoarVM/sepsh: separator. | |||
MoarVM/sepsh: Parts of this code already handle multiple separators, others do not. Also, when we | |||
MoarVM/sepsh: have more than one separator we usually want to prefer the longest matching separator. | |||
MoarVM/sepsh: To achieve that we keep a list of possible remainders that need get chopped off the | |||
MoarVM/sepsh: next line, in case we have separators that start with the same chars. Like \n would be | |||
MoarVM/sepsh: a remainder for the separators [ \r\n | \r ], when we only hit \r yet. | |||
MoarVM/sepsh: We also need an op that takes a list_s, since nqp::setinputlinesep() only takes one | |||
MoarVM/sepsh: string. | |||
hoelzro | ahoy #moarvm | 20:08 | |
FROGGS | MoarVM/sepsh: Note that this patch still leaks as hell, e.g. the list of input separators and | ||
hoelzro | aside from the source, are there any docs on how Moar handles serialization? | ||
FROGGS | MoarVM/sepsh: remainders. Though it spectests fine, which is always nice. | ||
hi hoelzro | |||
hoelzro | o/ FROGGS | ||
FROGGS | hoelzro: unlike | ||
unlikely* | 20:09 | ||
hoelzro | =( | ||
I'm just wondering how if I have two definitions of a module in separate units, how they are stored in the .moarvm files such that Moar knows they should be the same object in memory | |||
ex. module Example::A {} in A.pm, module Example::B {} in B.pm | 20:10 | ||
how does Moar know that the Example in both compunits are supposed to be the same in memory? | |||
FROGGS | hoelzro: because it is just a placeholder | ||
so it cannot conflict with another placeholder | 20:11 | ||
like you can declare a stub several times and it will never complain about it | |||
hoelzro | my knowledge of how it works it pretty vague, but as far I understand, the format refers to an object with a 32-bit ID, right? | 20:12 | |
and there's a table of IDs -> contents in a compunit | |||
[Coke] | today's daily run will finally include java again. | ||
ww | |||
hoelzro | but I'm wondering how the identifier in A.pm.moarvm and B.pm.moarvm end up pointing to the same object in memory | 20:13 | |
FROGGS | hoelzro: when objects get serialized, they get a serialization context id, aye | ||
they get merged when you load the two | |||
hoelzro | is the same ID used for Example in each .moarvm file, then? | 20:14 | |
FROGGS | no | 20:16 | |
look at rakudo/src/Perl6/ModuleLoader.nqp:244 | |||
the Example will be merged when you import the two into *your* code | |||
only then there will be an Example that has both an A and a B | |||
hoelzro | interesting | 20:17 | |
well, that code will provide for some interesting debugging insight when I look later =) | |||
hoelzro would like to try and fix rt.perl.org/Public/Bug/Display.html?id=122773 | |||
timotimo | FROGGS: and when we start speshing multi-char input line separators, that'll be MoarVM/spesh-sepsh? :) | ||
hoelzro .oO( insepshtion? ) | 20:18 | ||
FROGGS | hoelzro: also read rakudo/src/Perl6/World.nqp:399 | ||
timotimo: *g* | |||
timotimo: or spepsh | |||
hoelzro | thanks for the insight FROGGS | 20:21 | |
FROGGS | hoelzro: you're welcome | ||
(and when I finally see the RT page I tell if I can tackle it) | 20:22 | ||
ahh, that one... | 20:24 | ||
hoelzro: yes, I can try | |||
hoelzro | I spent some time on it last night, but my Moar knowledge is so limited it's hard to tell what exactly I'm looking at | 20:25 | |
the reason I suspect Moar is that I can undo 7a722dc4018ce1b99bbd4abea198e242d7da0157 and it works fine | 20:31 | ||
(well, with the appropriate checkouts of Rakudo and NQP) | |||
jnthn | hoelzro: The package conflict resolution is implemented in src/Perl6/ModuleLoader.nqp iirc | 20:34 | |
hoelzro: It's got resolve in the name, iirc | |||
timotimo | jnthn: how do you feel about the my Num $foo = 1; thing? | 20:35 | |
hoelzro | jnthn: that makes sense, but it's so weird that just changing Moar fixes/breaks it | ||
timotimo | should the assign op get made a bit slower to also try to unbox other types or something like that? | ||
jnthn | timotimo: my Num $foo = 1 is a straight type error | ||
timotimo | oh | ||
well, in that case it's a bug that parrot allows it i suppose :) | |||
jnthn | You declared Num, but tried to assign an Int. | ||
And Int isn't a Num | |||
hoelzro: I'm wondering if that patch made something happen too lazily... | 20:36 | ||
hoelzro | that's what I'm thinking | ||
jnthn | hoelzro: Could instrument the resolution stuff with some logging | 20:37 | |
And then compare what happens with and without the patch | |||
hoelzro | I noticed that deserialize_object and deserialize_stable didn't change; I'm wondering if they needed to | ||
jnthn | Though this case may end up being just a case of merge_globals... | ||
Those two are the "just one object/stable" iirc | |||
Note that the whole repossession thing may play into this somewhere too | 20:38 | ||
hoelzro | this will be fun to fix =/ | ||
jnthn | I *think* there's some notes on that stuff in the NQP course | ||
timotimo | JFTR: i'm positively surprised by our Complex type's performance :) | ||
hoelzro | I'm a moar newb | ||
I think so, yes | |||
20:56
cognome joined
21:57
cognome joined
22:33
camelia joined
22:39
kjs_ joined
23:10
flussenc1 joined
|