00:33 jnap joined 00:57 vendethiel joined 01:48 colomon joined 01:59 camelia joined 02:01 xiaomiao joined 02:08 xiaomiao joined 02:20 vendethiel-- joined 04:22 cognominal joined, japhb_ joined, TimToady joined, ggoebel111116 joined 06:14 lizmat joined 07:01 ingy joined 07:03 FROGGS joined
FROGGS o/ 07:06
tadzik o/ 07:07
07:11 zakharyas joined
sergot o/ 07:15
timotimo ohai 08:08
08:21 brrt joined
brrt \o 08:21
08:22 donaldh joined
jnthn o/ 08:31
nwc10 \o 08:32
timotimo o 08:33
nwc10 jnthn: t/spec/S32-list/roll.t is still pavement pizza
jnthn nwc10: Was that the one with the spesh_slots failure? 08:34
nwc10 I think so
offhand can't remember if that's a different backtrace
t/spec/S32-list/pick.rakudo.moar now passes 08:35
jnthn Nope, same one.
nwc10 I thought that those two had been failing in the same way
jnthn Darn. That means my attempted fix for it dodn't work.
nwc10 I can't promise you that I'm awake
jnthn *didn't
08:40 dalek joined
dalek arVM/moar-jit: 4ca7c7c | (Bart Wiegmans)++ | / (13 files):
Split the C parts of the JIT

This gives us three 'parts': graph construction, graph compilation, and logging / bytecode dumps.
brrt dalek works again
jnthn zo/
uh, \o/
brrt i'm wondering if splitting the 'emit' parts into architecture-specific directories is worth the trouble 09:34
jnthn Not until we have more than one arch, I guess ;) 09:35
brrt no, but i mean, split the 'emit' part into stuff like arithmetic, entry / exit, branches, comparison, etc 09:36
which would necessarily be in a directory rather than in files because each architecture would have different ones 09:38
jnthn oh
But that causes build pain, I thought, as they need to be one .dasc file? 09:39
brrt build pain is my tradeoff too 09:40
jnthn interp.c works out as a big file, mostly 'cus you can search quite easily for op names in it.
I suspect one big file here will also have that property..
brrt fair enough
hmm.. you're right, you can't link dasc files 09:41
they construct different 'action lists'
you may be able to .include them, but i wonder if it's worth the trouble 09:43
jnthn Probably not 09:45
brrt that settles that, then :-) 09:48
bbal 09:57
09:57 brrt left 10:03 tadzik joined
nwc10 jnthn: if I disable the fixed size allocator, t/spec/integration/advent2010-day11.t also fails: paste.scsys.co.uk/404678 10:24
sergot I have a question, how can I obtain the memory address that is stored inside the MVMObject(OpaquePointer in this case)? 11:10
like here: MoarVM/src/6model/reprs/CPointer.c:28: dest_body->ptr = src_body->ptr;
jnthn Don't think we expose that at all so far. 11:14
Well, and you have to know it's a CPointer REPR to do it.
Wait, do you mean at a C level? 11:15
'cus I meant we don't have an nqp::nativewhere op...
FROGGS in C 11:17
jnthn Oh, then you just check REPR(obj)->ID is the right thing, and then cast :)
FROGGS not like this? 11:20
body = (MVMCPointerBody *)REPR(obj)->box_funcs.get_boxed_ref(tc, STABLE(obj), obj, OBJECT_BODY(obj), MVM_REPR_ID_MVMCPointer)
oh, perhaps not
it has no box_funcs
so it really is just a cast, when the ->ID fits... nice! 11:21
sergot: so I think: if (REPR(obj)->ID == MVM_REPR_ID_MVMCPointer) cpointer_body = (MVMCPointerBody *)OBJECT_BODY(obj) 11:22
and then you can use cpointer_body->ptr
sergot FROGGS++ jnthn++ thanks, I'll give it a try 11:23
11:27 vendethiel joined 11:30 brrt joined
brrt \o #moarvm 11:30
wingolog pointed me to: www.cs.umb.edu/~offner/files/flow_graph.pdf
may be fun for us
FROGGS hi brrt
brrt hi froggs :-)
FROGGS I think I fell in love with the native call implementation in moar btw :o) 11:31
brrt what is it that makes you like it so much? :-) 11:32
FROGGS it is very readable, and I think it makes it easy to extend way more than I though would be possible
brrt has to check it out, then 11:33
FROGGS like compared to what you can do by hand in P5's XS
brrt: the memory-to-P6-class unpacking caught my eye for example 11:34
jnthn Curiously, the moar nativecall code was a fairly direct port of the Parrot code, with a ton of cleanups made possible 'cus Moar actually knows 6model natively. 11:36
Well, "Parrot code" as in "code in the NQP repo largely built by arnsholt" :)
FROGGS I guess everything looks better when you got rid of Parrot's 'ops' language 11:39
jnthn PIR? :) 11:40
brrt winxed was doable..... 11:41
FROGGS jnthn: no, like in nqp_bigint.ops
jnthn In Moar I found a neat way to sidestep the issue: don't have an assembly language :)
FROGGS the C like stuff
jnthn FROGGS: oh, right :)
FROGGS which will the be translated to C
jnthn Yeah, we code-gen fairly little in Moar too
FROGGS I like PIR though :o) 11:42
jnthn src/core/oplist generating op meta-data being the obvious example.
brrt ot: 'the ict team manages nearly 500 workstations and 120 (virtual) servers' 11:44
120 servers for 500 people!
FROGGS brrt: we have almost as many here for 500ppl 11:45
jnthn Well, or they could be providing services to the outside world too? :)
brrt unlikely, this is about a corporate it team :-) 11:47
how do you manage so many servers then, how do you get to that?
jnthn "Virtual" is probably the key 11:49
brrt i suppose they do a server-per-application type of setup
jnthn And lots of automation.
FROGGS it is often server-per-application, but also a few servers are needed per office 11:51
and when you have like >10 offices...
then you already have >30 servers
brrt hmm, i suppose so
why servers per office?
brrt sometimes feels he doesn't understand IT at all
FROGGS 1x active directory (slave), 1x file and printing, 1x software package distribution 11:52
brrt jnthn: what are your thoughts on using size_t?
jnthn brrt: No objections to it 11:53
brrt ok, great :-)
i like using it because it is always correct for sizes
jnthn Well, presuming you're using it as sizes of stuff you pass to malloc, realloc, calloc, etc.
brrt mmap, in this case :-)
11:54 LLamaRider joined
jnthn or that :) 11:55
FROGGS jnthn: ops shall be added before sp_*, right? what about osrpoint? 11:58
jnthn osrpoint is a normal op 11:59
So add after that
But before sp_
FROGGS thanks :o)
12:19 jnap joined
timotimo osrpoint ops are thrown out by the specializer when they would be relevant to jit etc, right? 12:37
jnthn ?
They're always removed from specialized code
By the time we get to JITting, their role is done 12:38
timotimo right 12:41
12:41 vendethiel joined 13:04 brrt joined
brrt hmm, new commits trigger bugs 13:21
oh, wait 13:22
i know what is wrong
jnthn Insufficient cowbell? 13:27
brrt cowbell? :-) 13:28
no, i changed passing the current frame to passing the cu because it's more useful
jnthn knowyourmeme.com/memes/needs-more-cowbell 13:29
brrt :-) 13:33
13:47 btyler joined 13:51 woolfy joined 14:06 vendethiel joined
sergot How can I get the value of a MVMObject (which is int32 in p6)? 14:06
or just the value, Str, Rat, whatever 14:08
In C :) 14:09
FROGGS you can ask for its storage spec, this tells you what it can store
and how many bits it can store for sized ints 14:10
look at MoarVM/src/core/coerce.c:274
sergot FROGGS++ thanks 14:11
FROGGS ss.bits will tell you the bits, when you know it is an integer or numeric thingy 14:12
14:17 carlin joined
FROGGS sergot: also, spec.is_unsigned is interesting for your 14:23
sergot ok, thanks FROGGS++ 14:28
dalek arVM/moar-jit: ad5044c | (Bart Wiegmans)++ | src/ (13 files):
Create MVMJitCode structure

This is a single structure that contains the function pointer as well as the size of the fragment, the number of locals, and the 'magic bytecode' which is now constant.
arVM/moar-jit: 420671c | (Bart Wiegmans)++ | src/jit/emit_ (3 files):
Use special register for CU

CU is actually used more often than the frame pointer or the envionment (because the latter is often a lookup
  'higher up' in the frame hierarchy). So it makes more
sense to store it directly rather than look it up through 2834d7c | (Bart Wiegmans)++ | src/jit/log.c: Dump JIT code in separate files
We use the CUID as well as the name of the static frame to determine the name of the file.
brrt dalek didn't die, did it?
nwc10 not this time 14:40
brrt :-) 14:41
brrt thinks its becoming time for dinner 14:58
jnthn Will it be sugary? :P 15:02
brrt hmmm... macaroni, salami, cheese, tomatoes 15:03
so starchy, not so much sugay
oh wait
melon after
hey, can i ask for a bit of advice, unrelated to actual programming? 15:04
jnthn Sure 15:06
.oO( hope it's not a cooking question :) )
.oO( "yes, deep-frying the melon sounds great!" )
brrt lol
are you scottish?
jnthn No
brrt i'm pondering whether i should continue for my masters degree, or not
moritz has studied 9 months in Scotland
jnthn Born near to Birmingham, to English parents. Grew up in Yorkshire. :)
brrt full blooded english then :-) 15:08
moritz did you mean "full bloody english?" :-)
jnthn moritz: That's what we call breakfast :P 15:09
brrt lol
moritz brrt: I'm sure nobody can give you advise on that without much more context
(but I'm afk soon anyway; will backlog) 15:10
jnthn brrt: What are your motivators for continuing, and what are the reasons not to?
jnthn vaguely knows this sort of pondering, since he was encouraged a decent bit by his uni to stay on for a PhD program :) 15:12
brrt good question :-) 15:14
i'm not sure yet myself :-$
i think... the most obvious demotivating factor is that i'm afraid i won't do anything with it
moritz - many people give advice with quite a bit less context :-) 15:15
i.e. with my studying
i mean here i am, having fun hacking on a jit compiler
it's kind of likely that after getting a masters degree in biology my best bet at employment will still be IT 15:16
the most important motivating factor is that i'd like to do work that has some net positive impact, and i suspect that will be easier / more doable with a longer education 15:17
(another demotivating factor is that i frankly have no more money left, but in the netherlands, such things can often be arranged)
jnthn Personally, I'd not dwell hugely on the "not do anything with it" thing. So far as finding work goes, a degree vs a masters degree probably won't make a huge difference (having a degree vs not having one at all does, but beyond there it's often not a huge factor). 15:20
Unless the goal is within research/academia, of course. 15:21
But if that was a clear goal then I suspect you'd not be asking whether you'd do anything with it, since it's probably critical path if staying in the academic world for the long haul is a goal :) 15:22
I realized when I was pondering the PhD that career wise it wasn't going to matter hugely for me. So the question was more about whether I wanted to spend 3-4 years of my life on that journey. 15:23
Which I guess is how I see these things: getting a first degree is fairly critical-path career wise since it's used as a filter for various interesting jobs. Beyond there, it's probably more about the journey than the qualification at the end of it all. 15:24
brrt hmm, i see 15:26
i should note, though, that a bachelors' degree at university level is - somewhat justifiably - not seen as 'academic' or sufficient in the netherlands 15:27
but, i'll be making dinner now for real ;-)
jnthn Hmm, OK :)
brrt thanks
15:27 brrt left 16:01 FROGGS joined 16:40 brrt joined 17:00 brrt left 17:20 vendethiel joined 17:21 jnap left 17:28 jnap joined 18:05 brrt joined
brrt thinks that the amd x64 documentation is really better than the intel documentation 18:13
rurban yes 18:15
18:15 lizmat joined
brrt one time in the future, i want to implement linking for moarvm jit 18:49
i.e., serialize the blob, and during deserialization, lookup all the stuff we are calling
FROGGS jnthn: how is your mood today? 19:12
do mind more grey hair? /o\
I'd like to apply this: gist.github.com/FROGGS/a027fecd527c2871b2b6
which would make an OpaquePointer gistify to this: 19:13
and it would let you create a new one like OpaquePointer.new( $old-pointer + 4 )
and then could have your .cast-to method there, or perhaps we could call it .coerce 19:14
this would be a powerful setup me thinks
jnthn lemme look (between stirring my curry :)) 19:15
FROGGS hehe, yeah
man, sometimes I wish I could just walk by and taste your curry :o) 19:16
brrt nqp-m: sub cur(str $a) { sub ry(str $b) { nqp::say($a ~ $b); }; }; cur("foo")("bar"); 19:19
camelia nqp-moarvm: OUTPUT«foobar␤»
brrt curry :-)
FROGGS more awesome would be OpaquePointer<0x7f9e8db8fda0>(reachable) and OpaquePointer<0x7f9e8db8fda0>(out out bounds), but that's up to a distant future :o)
yeah, I wanna have that now too :/
brrt hmm.... 19:20
FROGGS stupid germans do not have curry usually
brrt really?
germans do have curry ketchup :-)
FROGGS well, not that often compared to guys from the island at least
sort of
brrt sauerkraut with a sausage on a bun with curry ketchup is a recognized dish in some parts of the netherlands :-) 19:21
what would you mean with 'reachable'? does-not-throw-a-segfault? 19:22
brrt wonders if he can find - on x64 - how to determine if something is accessible 19:23
FROGGS yes, that it is 'ours' 19:24
brrt nobody in stackoverflow land seems to know how 19:25
but there /must/ be some kind of interrupt , and we ought to be able to catch it
FROGGS yeah, I thought it might be hard to get that information 19:26
brrt signal catching is what people usually do
but - iirc - that has thread problems 19:27
FROGGS yeah, all ppl say it is impossible... okay, idea scratched :o) 19:29
brrt all ppl don't typically have a dynamic assembler in their toolkit 19:30
what was i doing? 19:32
oh yes, return value handling
FROGGS hehe 19:35
sorry for the distraction :P
jnthn FROGGS: curry is ready... \o/ will review after I nom :) 19:38
FROGGS happy nomming :o)
brrt has much need for a 'nqp-m-debug' type of script 19:48
.... pointers aren't typically returned in floating point registers, are they? 20:00
FROGGS that's not what I would expect at least 20:01
brrt well, they aren't :-) 20:02
i should've added a smiley
jnthn mmm...that's the nicest thing I've cooked in a while :) 20:04
FROGGS: I'm a tiny bit uneasy about treating a pointer as just a kind of boxed integer... :) 20:07
FROGGS good, that will make your mind open for new things :P
jnthn But I guess that's kinda what it is :)
FROGGS we do that kind of cast in many places
nqp::where for example 20:08
dalek arVM/moar-jit: 366e0f8 | (Bart Wiegmans)++ | src/jit/ (7 files):
Merge return-value handling into c-call
FROGGS sad that our nativecast does not handle Str yet, otherwise I would substr(1,...) by moving the pointer
brrt shares the uneasiness, but mostly because of sign-and-conversion errors 20:09
i.e. pointers tend to be handled much more rigidly than integers in c
FROGGS jnthn: do you have suggestions about how to make nativecast available once it is done? should it be a method on OpaquePointer?
brrt i'm off to watch belgium-usa 20:10
:-) see you tomorrow!
jnthn brrt: ooh, who are you rooting for? :)
brrt belgium :-)
jnthn :)
Go Europeans :) 20:11
brrt not the underdog here, i think
but still
good night :-)
jnthn Hope it's better than the Switzerland - Argentina game :)
FROGGS brrt: see you!
jnthn o/
20:11 brrt left
jnthn FROGGS: No, I think it's gonna have to be a sub 20:12
jnthn FROGGS: 'cus you want to be able to do it to your own pointer types too
FROGGS yeah, probably
I mean, it could be both to provide some sugary way of casting that pointer... 20:13
btw, that pointer fiddling and manual casting would help with the problems [Sno] pointed at a while back
that one lib returned a list of structures, so we could walk that list now 20:14
(it returned the pointer to the first)
jnthn ah, true
FROGGS but... we'd perhaps need a way to query the sizeof a Perl 6 class as it looks like in C land to do that perhaps 20:15
okay, I'll prepare the commit in a bit and also the NativeCall PR 20:16
dinner first though
dalek arVM: 6b458f7 | (Tobias Leich)++ | src/6model/reprs/CPointer.c:
allow pointer math using CPointer repr

This means that NativeCall's OpaquePointer type can be gistified as OpaquePointer<0x7f9e8db8fda0>, which will be helpful for debugging when making bindings to C libraries. This also allows us to do basic pointer arithmethic so that we can iterate over the bytes of a CStr by incrementing the memory address.
timotimo yay for pointer arithmetic ... 21:23
FROGGS yes, that's pretty awesome in a way... 21:31
timotimo: wait for nativecast
it is worth mentioning next monday
timotimo that'll be nice to have indeed 21:32
FROGGS only sized ints/nums are missing AFAIK
and after that we will probably try to make function pointers work 21:33
we'll see if we really need them for openssl
timotimo ah, we're doing this for sergots gsoc among other things? 21:37
FROGGS yes, that's the main motivation
22:20 donaldh joined 22:46 lizmat joined
jnthn sleep & 22:46
FROGGS sleep well 22:48
lizmat is home and goes to bed as well 22:50
FROGGS gnight lizmat
23:10 jnap1 joined