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