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 | ||
paste.scsys.co.uk/404629 | |||
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. |
09:33 | |
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 | |
arnsholt++ | |||
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? | ||
hmmm | |||
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 | |
you* | |||
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. |
14:38 | |
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!" ) |
15:07 | ||
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 | |
ehm..... | |||
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 | ||
OpaquePointer<0x7f9e8db8fda0> | |||
OpaquePointer<NULL> | |||
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 | ||
eeks | |||
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 | |
FROGGS | okay | ||
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. |
20:43 | |
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
|