00:37
jnap joined
01:54
FROGGS_ joined
03:37
cognominal joined
06:39
ingy joined
06:44
FROGGS_ joined
06:52
zakharyas joined
07:04
woolfy left
|
|||
masak | what's origin/osr ? | 08:37 | |
nwc10 | osr is "On Stack Replacement" | ||
does that start to answer your question? | |||
masak | it seems to have branched our from origin/moar-jit at some point, but then been left behind. | ||
masak tries to rebase it locally | |||
nwc10 | ah OK. that part I can't answer | ||
masak | it rebases cleanly! | 08:38 | |
nwc10 | in that, the facetious answer to your question was "it's a branch in git", and it wasn't clear what your actual question was | ||
moritz | wingolog.org/archives/2011/06/20/on...ment-in-v8 | ||
nwc10 | cool. | ||
but I'm a bit surprised that it (seems to) branch from moar-jit, as that is brrt, whereas OSR is jnthn | 08:39 | ||
masak | aye. | ||
moritz | it seems OSR is a non-trivial topic | ||
masak | there'e one commit on origin/osr, and it's jnthn's | ||
oh, origin/inline has been merged!? | 08:40 | ||
is there a reason to keep the branch after that? | 08:41 | ||
I guess so -- jnthn would probably have removed it otherwise. | |||
FROGGS | no, we love our branches, so we let them rest after merging... | 08:49 | |
jnthn | OSR got merged too; I'm sure I deleted the origin one... | 08:57 | |
Yeah, my git branch -a doesn't show it. | 08:58 | ||
masak: Needeth you to prune? :) | |||
moritz | maybe maska need to fetch with --prune ? | ||
jnthn | oh...I didn't think of doing it like that | ||
jnthn always git remote prune origin | |||
nwc10 | I count 18 remote branches | 08:59 | |
jnthn | inline I kept around in case the merge had ot be reverted 'cus we found some terrible bug. | ||
moritz | also: git config --global fetch.prune true | ||
jnthn | But that hasn't happened, so... :) | 09:00 | |
masak | ooh, fetch --prune :) | ||
jnthn, moritz: thank you. | |||
I did need that. | |||
jnthn | 'tis gone. | ||
moritz | gone to meet its maker | ||
erm... | |||
masak | jnthn: what about origin/inline ? | 09:01 | |
jnthn | ? | ||
I'd already killed the local one | |||
A week ago | |||
I just killed origin | |||
C:\consulting\MoarVM>git push origin :inline | |||
To [email@hidden.address] - [deleted] inline | |||
masak | oh! | ||
jnthn++ | |||
FROGGS: what about origin/loop_labels ? :) | 09:02 | ||
FROGGS | this can go :o) | ||
dalek | arVM/moar-jit: af60ecc | (Bart Wiegmans)++ | src/spesh/deopt.c: Take frame modification and taget finding out of deopt Currently deopt relies on finding the target by the current bytecode offset of the instruction that caused the deopt. This won't do for JIT, because it doesn't have this notion. So we need a version of deopt_one that is passed the deopt target directly. |
09:06 | |
09:07
brrt joined
09:08
avar joined
|
|||
brrt | hmm.. it occurs to me that i'll have to pass the 'optimised offset' as well as the 'target offset' to deopt because of inline | 09:10 | |
sergot | o/ | 09:17 | |
brrt | \o sergot | 09:23 | |
masak | FROGGS: "this can go" as in "delete that branch!" ? | 09:27 | |
jnthn | brrt: oh? That sounds like it should be avoidable... | 09:29 | |
brrt | i don't think so, but you know the code better than i do | 09:30 | |
uninline uses both offsets | |||
FROGGS | masak: delete that branch! | 09:31 | |
masak does so | |||
FROGGS | masak++ | ||
masak | done. | 09:32 | |
nwc10 | 16 more to go | 09:34 | |
jnthn | Nooo! Don't delete moar-jit :P | 09:39 | |
Or master :P | |||
origin/gen2-frames is probably dead | |||
nwc10 | 16 + master | ||
of which how many are current? | |||
jnthn | Probably few are current; some may contain interesting experiments. | 09:40 | |
brrt still has a copy of moar-jit :-) | 09:42 | ||
jnthn too :) | 09:49 | ||
brrt | rebless calls deopt all | 09:50 | |
hmmm | |||
ok | |||
jnthn | Hm, deopt_all is trickier, yes. | 09:53 | |
brrt | it is - fortunately - not really relevant right now | 09:55 | |
jnthn | *nod* | ||
brrt | also, i suspect it can be 'kickstarted' with the right deopt offseet :-) | ||
offseat | 09:56 | ||
09:59
woosley left,
woosley joined
|
|||
jnthn | ontable? | 10:00 | |
timotimo | are they ontable? what does it mean to be onted? | 10:27 | |
brrt feels like he has missed important part of the conversation | 10:37 | ||
jnthn | brrt: I was just punning on the typo "offseat", then timotimo punned my pun :P | 10:38 | |
brrt | i see | 10:39 | |
:-) | |||
10:57
zakharyas joined
|
|||
brrt | hmm... weird-bugs yay | 11:10 | |
brrt feels as if the newly minted guards don't work | 11:15 | ||
jnthn | I've got thyme to glance a diff, if you like... | 11:17 | |
brrt | it's a big diff | ||
more importantly | |||
it probably hangs of the 'autoviv' ops too | |||
jnthn | ah | ||
brrt | it's probably best to 'shut these off' for now | 11:18 | |
and, so it what | |||
so it was | |||
nwc10 | thyme to glance at a diff and give sage advice? | 11:19 | |
jnthn | Could be anise thing to do. | 11:20 | |
But maybe brrt++ can keep the bugs at bay without my help... | |||
nwc10 | it helps new contributors cumin to this project | ||
brrt | i appreciate the help greatly | 11:21 | |
but you'd be looking at nothing i'm afraid :-) | |||
nwc10 | and such feedback ensures existing contributors aren't just resting on their laurels | ||
[that one feels like it somehwat fails technically as a pun, given it's real laurel] | 11:22 | ||
dalek | arVM: e86162f | (Tobias Leich)++ | src/6model/reprs/CArray.c: fix typo in CArray.elems error message |
11:24 | |
brrt | ok, the lexical autoviv check seems to work | 11:28 | |
or not hmm :-( | 11:30 | ||
ok, unitialized value is non-null, but doesn't seem to be VMNull either | 11:35 | ||
jnthn | It is a sane pointer-like value? | 11:37 | |
brrt | seems-to-be | 11:38 | |
oh, this is actually an uninitialized value, great | |||
nwc10 | valgrind? | ||
brrt | (not-actually, i mean) | ||
i can try valgrind, yes :-) | 11:39 | ||
but looks sane | 11:40 | ||
jnthn wonders how valgrind's instrumentation + a JIT compiler works out together... | 11:41 | ||
brrt | i have no idea, really | ||
brrt is off for a walk | 11:42 | ||
do you happen to know if uninitialized values point to NQPMu or something like that? | 11:43 | ||
jnthn | Only if there's something there to make them do so | ||
brrt | i'll try it out | ||
jnthn | (as in, the lexical is bound to it in code) | ||
(you'd see a bindlex instruction if it's happening explicitly) | 11:44 | ||
Just a wild thought: you're not missing a deference and so confusing the register pointer with the value in the register? | |||
brrt | no, i don't think so | ||
basically, rdx holds the value of the environment 'register' | 11:45 | ||
which is then copied directly to the local register | |||
and this works for integers, but i haven't checked for objects, because | 11:46 | ||
object access caused a sp_guardconc or sp_guardtype to be emitted, and i hadn't done deopt yet | |||
how can i get the type name of an object in nqp | 11:49 | ||
jnthn | $obj.HOW.name($obj) | 11:50 | |
brrt | thanks :-) | 11:51 | |
yes, it's NQPMu | 11:52 | ||
that explains | |||
ok, then i'm confident committing for now | |||
dalek | arVM/moar-jit: 30be083 | (Bart Wiegmans)++ | / (12 files): Limited support for spesh guards. Because a bug in the 'autoviv' variants of sp_p6oget_o is visible only now, I disabled these ops so that they could be tested independently. |
11:58 | |
11:59
brrt left
12:35
jnap joined
12:36
JimmyZ joined
|
|||
JimmyZ | Hello, looks like moarvm is broken on windows, since `./try` is not supported on windows, And I dont' know get it work. | 12:38 | |
FROGGS | JimmyZ: what is './try' ? | ||
JimmyZ | probe.pm | 12:39 | |
jnthn | JimmyZ: huh, since when? It configures/builds fine for me... | 12:40 | |
12:40
brrt joined
|
|||
brrt back | 12:40 | ||
JimmyZ | I dont' know, it built for me too. and I saw it commited 5 months ago. I don't know why it dosn't build after serval weeks. | 12:41 | |
It may be my problem , I run it under VS2012 X64 cross tool | 12:44 | ||
yeah, it works under in Developer command prompt for vs2012. | 12:46 | ||
brrt af | 13:23 | ||
k | |||
13:23
brrt left
|
|||
timotimo | do we eliminate multiple bindlex that happen directly in a row, like "first bind NQPMu, then bind 1"? ISTR our optimizer does that nowadays | 13:24 | |
jnthn | I think in NQP if there is a bind right at the declaration site it skips emitting a default value for the lexical...maybe. | 13:25 | |
Doing it at VM level is way harder than just spotting one bindlex after another in the CFG | 13:26 | ||
What if an inner frame asks for the value between the two points? | |||
timotimo | fair enough | 13:29 | |
13:33
teodozjan joined
14:08
brrt joined
|
|||
brrt | hmmm... | 14:13 | |
st should not be zero for a 'real' object, should it? | |||
jnthn | No. | 14:14 | |
timotimo | i thought every object has an stable | ||
in order to be an object in the first place | |||
jnthn | If you get a zeroed ST then you're looking at bogus memory | ||
brrt | ok | 14:15 | |
good to know | |||
timotimo | at least it's a clear sign | ||
jnthn | Which *may* mean a GC bug, but that's highly unlikely these days. | ||
brrt | i'm not assuming a gc bug | ||
jnthn | Yeah, most of the time I hit such a thing these days, it's nothing to do with GC. | 14:16 | |
Just a bad pointer | |||
brrt | what is more annoying is that i don't actually know which frame this is :-( | 14:17 | |
jnthn | tc->cur_frame->static_info->body.[name|cuuid] | ||
brrt | good point | ||
FROGGS | jnthn: but now you can debug it in Perl 6 using OpaquePointer :P | ||
jnthn | Oh,a nd then find the data buffer point and look at it in...the memory window...but I guess your debugger isn't Visual Studio :) | 14:18 | |
FROGGS | I guess our OpaquePointer can be like sun.jna.Pointer but just done right | ||
brrt | my debugger is gdb and can in fact do these things :-) | 14:19 | |
jnthn | oh, I'm very sure it can, I just don't know how to ask it to :) | ||
brrt | i'm not very sure, either, but i'll manage | ||
ok, pos is fine, it seems | 14:20 | ||
on the other hand... it' possible my check_wb stuff doesn't work :-( | 14:49 | ||
14:53
ggoebel111116 joined
|
|||
brrt | no, check_wb is never even hit | 14:55 | |
15:02
ggoebel111116 joined
|
|||
brrt | ok, this is odd | 15:06 | |
sp_guardtype seems to be triggered for the wrong local | |||
oh... hmmm | 15:07 | ||
15:17
ggoebel111116 joined
15:23
vendethiel joined
|
|||
timotimo | wait, with an OpaquePointer REPR'd object you can have the address of any MVM* object and access that? | 15:24 | |
FROGGS | yes | 15:26 | |
you can dump the memory of an p6opaque to a floppy disk if you know its size in memory | |||
like: nativecast(CArray[uint8], OpaquePointer.new( $bar.WHERE )); "out".spurt: CArray[^$something] | 15:29 | ||
well, except for the stupid mistakes I did there | 15:30 | ||
brrt is off for dinner (and crying) | 15:31 | ||
stupid bugs | |||
FROGGS | ahh, your code will probably explode when $bar.WHERE is outdated before the nativecast call finishes | ||
FROGGS hugs brrt | |||
brrt | :-) | ||
15:31
brrt left
|
|||
FROGGS | just to hold you back so somebody can steal me your food :P | 15:31 | |
15:36
FROGGS[mobile] joined
|
|||
timotimo | %) | 15:47 | |
FROGGS[mobile] | but I guess it is quite possible to make an awesome JNIish thing | 15:49 | |
15:49
vendethiel joined
|
|||
FROGGS[mobile] | an even better one perhaps | 15:50 | |
because Java just sucks | |||
15:53
vendethiel joined
|
|||
timotimo | :| | 15:59 | |
perl6 will be the best language to interface with C on the JVM ... | 16:00 | ||
jnthn | dinner, beer & | 16:01 | |
rurban | Better than Clojure? Doubt it. github.com/bagucode/clj-native | 16:09 | |
timotimo | we don't have all these weird parens! :P | 16:12 | |
17:06
vendethiel joined
|
|||
FROGGS[mobile] | rurban: will look at that for sure :o) | 17:06 | |
rurban | no parens but even weirder chars, all these $@%#{}[] curses | 17:30 | |
17:40
FROGGS joined
|
|||
FROGGS | rurban: I have problems reading that clojure code... and it is hard to see what it can do what we can't | 17:43 | |
rurban | :) | ||
FROGGS | but either way, when we can satisfy [Sno], we might have the most awesome native interface :o) | ||
rurban | I have made a very old FFI comparison table once. dylan came out as best FFI | 17:44 | |
autocad.xarch.at/lisp/ffis.html | |||
But Visual Basic and Smalltalk were also excellent | 17:46 | ||
FROGGS | hmmm, looks like I have to dig way deeper into that topi | 17:47 | |
topic* | |||
looks like returning CArray[my_struct] from a NativeCall sub is borken | 18:07 | ||
why does it call ten times CArray[my_struct].at_pos(0) when I only access it once from P6? | 18:26 | ||
hmmm | 18:28 | ||
timotimo | jnthn commented on that once when lizmat got surprised how often a proxy's fetch would be called | 18:32 | |
FROGGS | at least it has a cache, so it hits the cache nine times from ten | 18:40 | |
shouldn't this behave the same? | 18:56 | ||
sub foo() returns MyStruct is native { * } | |||
sub foo() returns CArray[MyStruct] is native { * } | |||
hmmm, perhaps not | 18:57 | ||
moritz | CArray[MyStruct] would be a pointer to MyStruct | 18:58 | |
FROGGS | MyStruct** then | 18:59 | |
that would explain it | |||
we really need a sizeof() for CStructs and friends | 19:02 | ||
19:05
brrt joined
|
|||
timotimo | and alignof, too, please? | 19:10 | |
FROGGS | eww, can of worms, I tell 'ya | 19:14 | |
cognominal | gist.github.com/cognominal/f1cc48cab3ca8bed4257 # already pasted on #perl6 | 19:20 | |
19:47
carlin joined
19:55
avar joined
|
|||
brrt | ok, i can establish that the 'normal version' of sp_p6oget do in fact work normally | 19:58 | |
timotimo | the non-vivifying variant? | 19:59 | |
brrt | yes | 20:02 | |
dalek | arVM/moar-jit: e39348f | (Bart Wiegmans)++ | / (5 files): Establish that sp_p6oget_i actually works. |
20:03 | |
brrt | why the vivifying variant doesn't work, i have no idea | ||
hmm | 20:15 | ||
the guard isn't quite alright, either | |||
ok, so maybe it's a guard problem | 20:16 | ||
phew :-) | |||
so the problem seems to be in sp_guardconc | 20:19 | ||
20:19
woolfy joined,
lizmat joined
|
|||
brrt | if the problem is in sp_guardconc, that'd be awesome | 20:22 | |
but of course, it isn't that simple | 20:28 | ||
timotimo | .o( the guards are all right ) | 20:33 | |
brrt | the guards are not ok, not yet :-) | 20:37 | |
20:37
brrt left
|
|||
jnthn back | 20:43 | ||
timotimo | hey jnthn | ||
jnthn | grr...router started doing its "I'm going to drop half the things" act again | 20:46 | |
20:48
dalek joined
22:14
btyler joined
|