|
00:09
jnap joined
01:10
FROGGS__ joined
01:55
btyler joined
04:11
dalek joined
06:50
FROGGS__ joined
07:16
zakharyas joined
08:20
odc joined,
woolfy joined,
camelia joined,
hoelzro joined,
retupmoca joined,
TimToady joined
08:21
japhb_ joined,
ashleydev joined,
harrow joined,
rurban_ joined,
timotimo joined,
flussence joined,
tokuhirom joined
08:44
odc joined,
woolfy joined,
hoelzro joined,
retupmoca joined,
TimToady joined,
camelia joined
08:49
brrt joined
|
|||
| brrt | \o #moarvm | 08:49 | |
| jnthn | o/ brrrt | 08:58 | |
| oops, over-r | |||
| brrt | :-) | 09:02 | |
| brrt figured out that... phi nodes are just skipped during codegen? | |||
| jnthn | Sure | ||
| They don't mean anything. | |||
| They represent join points in the SSA graph | 09:03 | ||
| brrt | i had thought they'd be needed to re-assign local registers | ||
| jnthn | But SSA numbers things reg[i] | ||
| brrt | or some such | ||
| but that's not necessary at all :-) | |||
| jnthn | No, a PHI always looks like r[o] = PHI(r[1], ..., r[n]), where r is the same register :) | 09:04 | |
| brrt | hmm.. i guess they represent an 'end point' of some algorithms, i.e. you can't analyze the value of a register further than the phi node | 09:05 | |
| interesting | |||
| jnthn | Well, we dont' do it yet, but we can do fact merging at teh PHIs | 09:06 | |
| That is, if we look at all the incoming things and they all agree on the known type, then we can propagate that known type to r[o]'s facts too | |||
| Whereas if they disagree then we can't | 09:07 | ||
| So they have a role in type info propagation. | |||
| brrt | i understand | ||
| nice | |||
| but, for codegen, they can be ignored | |||
| (for now) | 09:08 | ||
| jnthn | riht | ||
| *right, even | |||
| brrt | how long is this summer again? | ||
| too short i think | |||
| jnthn | oh, a few years, I think :P | ||
| brrt | :-D | ||
| brrt is reminded of the steve yegge post that said that building a compiler was a 'lifetime of work' | |||
| and mine/ours isn't even finished yet | 09:09 | ||
| jnthn | No, my lifetime seems to be continuing... | ||
| brrt | :o) | ||
| jnthn | Anyway, we need to tend to mid-term evils between 23rd and 27th | 09:19 | |
| brrt | thats ages | 09:21 | |
| jnthn | Of June :) | ||
| brrt | that is ages from now, is what i mean :-) | ||
| :-) | |||
| jnthn | It's...10 days away for the deadline for those :) | ||
| Then 18th Aug is when summer ends :) | |||
| brrt | by then we'll have conditionals i should think and hopefully loops? | ||
| jnthn | I hope so :) | 09:22 | |
| nwc10 | "Hello To Our Friends And Fans In Domestic Surveillance" | ||
| jnthn | Your next task is labels and gotos/branches, I guess? | ||
| brrt | yes, i'm actually working on that now | ||
| i had ints for labels, if you can recall? | 09:23 | ||
| jnthn | \o/ | ||
| nwc10 | It's far more important to actually complete the mid term eval by the deadline than what the detail is | ||
| brrt | thats not good enough, it seems | ||
| jnthn | ah | ||
| brrt | you mean, fill in a form? :-p | 09:24 | |
| nwc10 - its funny how google lost nearly all of the good nerd vibe they had going with the NSA business | |||
| nwc10 | don't worry about not having X to show for the mid term eval - I don't think that anyone is going to read the actual detail. As long as it says "student is doing work and is not just scamming us for the money" it's useful | ||
| brrt | i'm worried about progress nevertheless :-) | ||
| nwc10 | yes, OK, to be fair, the mentors are going to read the detail, but it won't be news to them. | 09:25 | |
| timotimo | i wonder if anyone really thinks it's a good idea to try to scam *google* :P | ||
| nwc10 | you're not going to be kicked off the programme for submitting a report with insufficient progress | ||
| brrt | lots of people think so timotimo :-) | ||
| nwc10 | you *would* be kicked off for not submitting the report | ||
| (as I understand it) | |||
| jnthn | aye | ||
| brrt | fair point :-) | 09:26 | |
| jnthn | I think it'd be nice if by midterm sub foo() { my int $i := 0; while $i < 1000000 { $i++ }; say($i) } can be jat. | ||
| brrt | my guess is that if i'd fill in a report and never let anybody hear anything of me that would be noticed too, right? | ||
| jnthn | uh, jitted :) | ||
| brrt | that... should be doable, yes | ||
| nwc10 | yes, that would be noticed. Probably fairly quickly :-) | 09:27 | |
| brrt | say($i) is cource_is or something? | ||
| nwc10 | this isn't a course or exam that you can fail by not making the pass mark | ||
| jnthn | brrt: Yeah. | ||
| nwc10 | as best I can tell, from the admin side it's all about effort, and not about acchievement. Did the student actually try? | 09:28 | |
| jnthn | Indeed. | ||
| nwc10 | at least for getting payment | ||
| for Google's (later) recruiting purposes, acchievement will also matter | |||
| jnthn | Given we actually have something very simple being JITted already, I think it's quite clear the student is trying :) | ||
| brrt++ | |||
| nwc10 | but again, that's not absolute. That's "from starting point, how much changed" | 09:29 | |
| jnthn | ok, taking studnets to lunch & | ||
| timotimo | stud .. net? :) | ||
| brrt | see you | ||
| nwc10 | yes, thanks for simplifying my point. You have something JITted. That's evidence | ||
| brrt used to work for studenten.net | |||
| also lunch & :-) | 09:31 | ||
| FROGGS__ | uhh | 09:38 | |
| ==> Testing HTTP::Message | |||
| t/01-basic.t .. ===SORRY!=== | |||
| No STable at index 8 | |||
| ó.ò | |||
| ohh, hmmm, it works when I install it via panda, rather then rebootstrapping panda | 09:39 | ||
| ohh no, now this: | |||
| ==> Testing HTTP::Message | |||
| t/01-basic.t .. ===SORRY!=== | |||
| No STable at index 8 | |||
| tadzik | that's the same | ||
| except this time it didn't print "ó.ò" | |||
| :> | 09:40 | ||
| timotimo | %) | ||
| FROGGS__ | *g* | ||
| but it really should print that when being so sorry | |||
| when were you the last time so sorry that your shouted it? | 09:41 | ||
| tadzik | :D | ||
| FROGGS__ | you* | ||
| tadzik | OKAY FINE I'M SORRY ARGLEBARGLE | ||
| timotimo | tadzik: when i'm at the point where GTK::Simple will let you start animations that get rendered with cairo from a callback with a correct frame timer, will you try to build something game-like? :3 | ||
| tadzik | timotimo: hm, I don't see why not :) | 09:42 | |
| but: what advantage will that give me over Steroids, other than having Gtk available? | |||
| or I may just put Steroids on top of Cairo/Gtk | |||
| timotimo | with steroids you can't do any vector graphics | 09:43 | |
| not yet anyway | |||
| tadzik | troo | ||
| timotimo | though it wouldn't be hard to put cairo directly on top of sdl2 | ||
| tadzik | I need to catch up on Steroids, but I'm all deep in my bachelor's thingy | ||
| (and Civ5 recently) | |||
| timotimo | aye, that's fine | ||
| the last time i thought i was close to the milestone of being able to put cairo drawing into a gtk callback, i stumbled upon about 200 methods and objects i should bind in order to get there ... | 09:44 | ||
|
10:08
brrt joined
10:27
brrt left
11:46
FROGGS joined
12:15
jnap joined
12:59
brrt joined
13:59
btyler joined
14:00
brrt joined
|
|||
| brrt had never considered you could just pass a va_list to another function | 14:49 | ||
| nwc10 | see also va_copy and va_end | ||
| for proper portability. | 14:50 | ||
| brrt will check those out | |||
|
14:56
woolfy joined
|
|||
| brrt wonders if msvc has va_copy since it is defined in C99 | 15:00 | ||
|
15:01
donaldh_ joined
|
|||
| nwc10 | if it isn't defined, it probably isn't needed for that platform. | 15:11 | |
| but you may not need to copy the pesky little things | |||
| I think that it's because on some platforms it's malloc()d data, so if you don't va_end, you leak | |||
| and if you don't va_copy but you do va_end (twice) you double free. | 15:12 | ||
| brrt | i see | 15:15 | |
|
15:20
donaldh_ joined
15:28
brrt left
15:30
brrt joined
15:34
brrt joined
15:35
brrt left
|
|||
| japhb | A positive note for you guys -- as of my tests last night, nqp-moarvm/master was faster than perl5/v5.20.0 at rc-man-or-boy-test; perl5 was about 30% slower than nqp-m, as a matter of fact. :-) | 15:42 | |
| btyler | woah | 15:44 | |
| japhb | Sadly r-m is still about 6.1x slower than nqp-m on that test, but I'll take the nqp-m win over perl5 any day. :-) | ||
|
15:44
jnap joined
16:18
FROGGS joined
|
|||
| timotimo | that's nice to hear :) | 16:24 | |
| rurban_ | And moar is about 2x faster than parrot on the nqp tests | 16:28 | |
| timotimo | rurban_: you got a target to catch up to :) | 16:30 | |
| FROGGS | but a moving target :o) | ||
| it was easy to pass parrot when it was sleeping | 16:31 | ||
| rurban_ | I don't think I can catch up. Let's see what the parrot jit will bring. But there's still the horrible PCC with ext_call and IMCC string encoding quirksand all the sprintf varargs mess to improve. | 16:33 | |
| jnthn | evening, #perl6 | 16:34 | |
| uh | |||
| #moarvm :) | |||
| Well, that summarizes how exhaust I am :P | |||
| timotimo | o/ | ||
| jnthn: so no OSR today? :P | |||
| jnthn | :P | 16:35 | |
| We're meant to be tidying up for release, not doing dangerous stuff :P | |||
| timotimo | troo | ||
|
17:08
lizmat joined
17:29
jnap joined
|
|||
| [Coke] | moar is currently failing 3 spectests. | 17:30 | |
| S02-types/deprecations.rakudo.moar 30 - deprecation $*OS | |||
| S02-types/deprecations.rakudo.moar 31 - deprecation $*OSVER | |||
| S32-io/IO-Socket-Async.t 4 - Echo server | |||
| lizmat | S02 ones are mine | 17:31 | |
| [Coke] | lizmat++ | ||
| timotimo | the async socket server fails seem to be spurious | 17:32 | |
| FROGGS | jnthn: I have this in star for lwp-simple that might trigger the problem: | 17:33 | |
| -Subproject commit 267ac05bbf2534005f95ab39a0d62ec71ccc014a | |||
| +Subproject commit d11d5a17f9588ccc535d010ef5f706baa6ed6135 | |||
| though, it makes no sense from looking at that commit | 17:34 | ||
| [Coke] | niecza is failing 1200 tests even. :| | 17:35 | |
| ww. | |||
|
18:05
btyler joined
|
|||
| rurban_ | [Coke]: same for parrot. github.com/rurban/roast/commit/c0d...3104f03573 | 18:30 | |
| [Coke] | rurban_: lizmat is fixing those. | 18:31 | |
| rurban_ | Yes, just saw. | ||
| [Coke] | not going to bother fudging them. (Does explain why jvm isn't failing them, though) | ||
| rurban_ | jvm is skipping them also | 18:37 | |
| #?rakudo.jvm skip 'tracebacks in deprecations' | |||
|
18:43
brrt joined
|
|||
| jnthn | wtf, skellefteaa has no station, but my hotel is on stationsgatan... :P | 19:14 | |
| uh, ww | |||
| moritz | jnthn: station has been closed since the road has been named? :-) | 19:17 | |
| jnthn | I don't think the train ever went there :) | 19:25 | |
| brrt wonders if google street view went there | 19:33 | ||
| and.. it did | |||
| jnthn | Where hasn't it been... :) | 19:39 | |
| japhb | jnthn: That's classified. ;-) | 19:44 | |
| brrt | ugh, constant folding :-( | 19:45 | |
| brrt wonders if simple argument passsing works yet | 19:47 | ||
| jnthn | brrt: CF where? | ||
| brrt | its not actually constant folding what i mean, buf if(1) { foo(); } else { bar(); } is compiled - by whom? - to { foo(); } | 19:48 | |
| which i need it not to do :-) | |||
| jnthn | haha | 19:49 | |
| probably spesh :) | |||
| brrt | we seem to have conditionals | 19:51 | |
| of, and arguments, if they're known to be ints :o) | 19:53 | ||
| jnthn | :) | 19:54 | |
| dalek | arVM/moar-jit: b0ed6c9 | (Bart Wiegmans)++ | src/jit/emit_ (3 files): Very minor cleanup |
19:58 | |
| arVM/moar-jit: 952e534 | (Bart Wiegmans)++ | / (7 files): Branches (based on integers) now seem to work. Loops should work too, but I haven't checked. |
|||
| brrt is going to see if loops work now | |||
| any idea why $i++ needs hllboxtype? | 20:05 | ||
| jnthn | Did you declare it my int $i | 20:06 | |
| ? | |||
| brrt | yep, i did | ||
| its passed as an int, too, by spesh | |||
| jnthn | Sure, well, that won't be changed by spesh... :) | 20:07 | |
| Hmm | |||
| What code have you got? | |||
| Is the loop in void context? | |||
| brrt | i'll post it in a bit | 20:08 | |
| (wow, github recognises perl6, that is awesome) | 20:10 | ||
| jnthn | :) | ||
| brrt | gist.github.com/bdw/bcbe6e478413d9dfe96d nqp compiler adds hllboxtype_i | 20:11 | |
| and - converts it to numeric, too | 20:12 | ||
| and back | |||
| so it seems.. loops work now? | 20:13 | ||
|
20:13
cognominal joined
|
|||
| brrt is going to calculate fibonacci series in jitted code, just because he can | 20:13 | ||
| jnthn | brrt: uh, wtf is doing on with that code-gen... | 20:19 | |
| brrt | i have /no/ idea | ||
| but somehow somebody seems to think we're dealing with objects, then we should deal with floats, then with integers again | |||
| where somebody == the compiler :-) | |||
|
20:20
odc joined,
camelia joined,
TimToady joined,
retupmoca joined,
hoelzro joined
|
|||
| brrt | maybe somewhere type tags are added wrongly? | 20:20 | |
| dalek | arVM/moar-jit: 2167243 | (Bart Wiegmans)++ | foo.nqp: A version of fibonacci that is completely jitted :-D |
||
| jnthn | brrt: Yeah, I can see what's going on. It's the postinc thingy which is optimizer-opaque, it seems | 20:22 | |
| Also I see that the opt is missing a trick in some of the p6bench things too :) | 20:23 | ||
| brrt | ok. i have no idea about the internals of nqp :-) | 20:26 | |
|
20:36
FROGGS joined
20:48
cognominal joined
|
|||
| dalek | arVM/moar-jit: 4af25c4 | (Bart Wiegmans)++ | / (3 files): Add MacOSX recognition to jit Configure.pl btyler++ for helping to find the right configuration paramter. Also added some documentation to help people find the right options :-) |
20:52 | |
| arVM: 674fe7c | jnthn++ | docs/ChangeLog: Add 2014.06 ChangeLog entries. |
20:53 | ||
| timotimo | ++ Specializer can optimize optimize named args | 20:55 | |
| optimize optimize go! | |||
| brrt is very happy with the whole spesh thing | 20:56 | ||
| hoelzro | go go gadget optimizer? | 20:57 | |
| timotimo | aye, it's cool stuff | ||
|
20:57
lizmat joined
|
|||
| jnthn | haha, thanks | 20:57 | |
| brrt | ok, hmm, i haven't thought on how to do next what i want to do next, next | ||
| i know what i want to do, though, want to know and help me out? | 20:58 | ||
| dalek | arVM: f7532c8 | jnthn++ | docs/ChangeLog: Fix fix a double word; timotimo++. |
||
| jnthn | brrt: Did you, ooc, do any timing of it against the interpreted version? :) | ||
| brrt | no, did not | 20:59 | |
| i should | |||
| jnthn | OK | ||
| And yes, let's talk about what you want to do next. | |||
| Actually would be good to plot a few days ahead. | |||
| timotimo | brrt: did you try a measurement of jitted fib vs regular fib? :) | ||
| jnthn | I'm about tomorrow, while teaching, and in the evening | 21:00 | |
| brrt | i know what i want to do :-), i want to somehow do something with return values | ||
| jnthn | But will be about rather less on Thu (travel), Fri (DDDX conf), Sat (visiting UK friends), and Sun (travel)... | 21:01 | |
| brrt | problem is that sometimes i need to store them in a register, and sometimes i need to dereference and store, sometimes i need to store a value there | ||
| ok, i'll be busy too, i have hospital-styled appointments again :-) | |||
| (tomorrow, that is) | |||
| FROGGS | time perl -E '`../foo.nqp` for 0.50' | 21:03 | |
| real0m4.010s | |||
| same timings for with and without inline | |||
| but... it perhaps just measures startup time | |||
| jnthn | What's in foo.nqp? | 21:04 | |
| brrt: Hope hospital-styled appointments go fine. | |||
| brrt: Can you give some examples of the return value problem? | |||
| brrt | gist.github.com/bdw/a519663b655ac0ae25ba | ||
| FROGGS | 21:05 | ||
| ^ | |||
| jnthn, i expect so (re: hospital) :-) just checks and stuff | |||
| ehm, yes, let me checkout master and point you at some lines | |||
| interp.c line 2221 (getlex_ni) | 21:08 | ||
| basically, that is | |||
| call a function | |||
| get a pointer | |||
| dereference pointer | |||
| copy pointer to register | |||
| eh, copy value to register | |||
| jnthn | Copy deref...right. | ||
| brrt | that isn't the tricky one, though | 21:09 | |
| jnthn | Isn't "dereference a pointer" a single instruction? | ||
| brrt | yes | ||
| i don't have a way to represent 'dereference a pointer stored in a cpu register' yet | 21:10 | ||
| that would need special casing | |||
| thats possible (all is equally possible), but do i really want to add a big and perhaps complex 'do-stuff-with-return-value' node? | 21:11 | ||
| (i'm guessing the answer is yes, though :-)) | |||
| jnthn | How many different ways are there, really? | 21:12 | |
| brrt | i have no idea | ||
| on cpu level, not so much :-) | |||
| on moarvm level? well, at least three | |||
| i don't think it ever happens we copy a return value to a lexical (i hope) | 21:13 | ||
| so as long as all return values eventually read or store from work registers, the combinations seem manageable | |||
| jnthn | No, we don't | 21:14 | |
| Oh | |||
| Well, auto-viv of an object lexical may | |||
| timotimo | since we already have inlining, we could get around return values a bunch of times in jitting :P | ||
| jnthn | But you might just call a function to do that. | ||
| brrt | to auto-vivify a lexical? yes, i guess we could do that, too | ||
| jnthn | It's lazy allocation of scalars, really | 21:15 | |
| Worth it from a perf perpsective | |||
| 'cus $/, $!, and $_ are declared everywhere, but rarely used | |||
| brrt | hmm | 21:17 | |
| ok, beer napkin calculations | 21:19 | ||
| i have two address modes for destination operands - register and memory | |||
| i have 3 address modes for source operands, namely literal, register, memory | 21:20 | ||
| memory-memory is impossible | |||
| (we might as well assume that it is impossible for all systems) | |||
| (memory is always register + offset, by the way) | 21:21 | ||
| memory-64 bits literal is also impossible | |||
| that gives me? register-register, register-memory, register-literal, register-literal64, memory-register, memory-literal | 21:23 | ||
| memory-literal64 can be faked by two ops | |||
| memory-memory too | |||
| basically, as long as i can represent a node that says 'take this data and store it there' then i'm golden whatever the requirements of moarvm ops may be | 21:24 | ||
| i /want/ that | 21:25 | ||
| (the copy node idea, that is) | |||
| what do you think? i can reduce it to 6 options :-) | |||
| jnthn | Do we get good code from the 6 options? | ||
| brrt | hmmm | ||
| i'm not sure how to answer that | 21:26 | ||
| jnthn | (memory-literal64 being faked by 2 ops wsa the one that sounded odd to me) | ||
| brrt | we get ... reasonable code, as the little benchmark above showed | ||
| i.e. a 2x speedup, and thats pretty nice imho | |||
| you have to emit a special opcode to load 64 bit literals from the bytecode as the normal 'mov' opcode takes 32 bit numbers maximum | 21:27 | ||
| FROGGS | brrt: my timing: 6.45s for disabled jit, and 2.2s with jit enabled | ||
| brrt: I like it :o) | |||
| jnthn | Note that the loop outside the foo() call is not JITted | ||
| brrt | no, it isn't :-) | ||
| jnthn | Or even spesh'd | 21:28 | |
| brrt | thats a goal for OSR, isn't it? | ||
| jnthn | Right :) | ||
| FROGGS | can I recompile rakudo with jit? | ||
| brrt | otherwise you can never 'get' at the frame | ||
| FROGGS tries | 21:29 | ||
| brrt | basically, i think you get reasonable code that way, but you move quite a bit of complexity up too the graph constuctor | ||
| jnthn | *nod* | 21:30 | |
| But the graph constructor having it means it simplifies getting, say, x86 or ARM working with JIT later :) | |||
| brrt | which is kind-of where we want it, but we ( i ) am not sure if that complexity should include which register has what, which kind of leaks there | ||
| agreed | |||
| FROGGS | okay, looks like I can still build rakudo | 21:31 | |
| brrt | i'd hope so :-) i'd be /extremely/ surprised if you could JIT anything in there | ||
| jnthn | :) | ||
| The JIT will grow in skills :) | |||
|
21:32
donaldh joined
|
|||
| brrt | i'm quite optimistic :-) | 21:32 | |
| FROGGS | stage parse was 45s, which is in the usual range for my box :o) | ||
| brrt | i'm not sure if the branch of master i merged moar-jit with was quite recent enough (i.e. i think there have been reports of segv's fixed :-)) | ||
| jnthn | yeah, was a couple | 21:33 | |
| brrt: Beyond that, what kind of ops are you plotting to work on next? | 21:34 | ||
| brrt | i still need to do some integer arithmetic, which is easy (but requires careful doc reading) | 21:35 | |
| i'll need to do floating-points | |||
| thats basically the 'basic easy stuff', that doesn't require much architecture / thinking / setup | 21:36 | ||
| jnthn | *nod* | 21:37 | |
| brrt | the 'invoke' tail call stuff, that needs to be done, is - i think - pretty well worked out in theory, but will probably give some challenges | ||
| jnthn | Yes. | ||
| Do you have all the sp_getarg_* in? | |||
| brrt | sp_getarg_i | ||
| no others, they should be simple though, they're just copies afaik | 21:38 | ||
| (it would be a matter of adding case statements :-) | |||
| i think i even have param_rp_i ? | |||
| nope, don't have param_rp_i yet | 21:42 | ||
| so, in short | 21:46 | ||
| next day, i want to start on return value handling | |||
| that /may/ include creating a copy node | |||
| or, it may not, i'm not sure which is simple | 21:47 | ||
| (i may also decide not to do the copy node until i've augmented dynasm, thats possible too) | |||
| when i've got eturn values, there is a boatload of ops i can jit | 21:48 | ||
| and when thats done, i want to work on invoke(_.)? ops | 21:49 | ||
| when that is done, this week may be over, but i think we should take a look at deopt then | 21:50 | ||
| i.e. sp_guard* and the like | |||
| jnthn | Yes | 21:52 | |
| And sp_fastcreate | |||
| And sp_p6oget... | |||
| And sp_p6bind... | |||
| brrt looks at those ops cus' he hasn't seem them yet | 21:54 | ||
| jnthn | They're optimized forms of object allocation and get/bind attr | 21:55 | |
| Which mostly boil down to pointer operations. | |||
| dalek | arVM/moar-jit: 543226c | (Bart Wiegmans)++ | / (5 files): Added support for other sp_getargs_. ops |
21:59 | |
| brrt | ok | ||
| pointer operations i can handle | |||
| jnthn | :) | ||
| As for deopt_one, which the guards need, I suggest that we just write functions in deopt.c that, instead of searching for an index, can take one. | 22:00 | ||
| And we JIT code that just passes the deopt index | |||
| And since the register frames are already in the right shape, it's then mostly just a case of the JITted code doing a return. | 22:02 | ||
| And letting the interp take over. | |||
| brrt | hmm.. yes, agreed | 22:05 | |
| do we know at codegen time what that deopt index is? | |||
| jnthn | Yeah | ||
| it's really easy | |||
| brrt | (ooh gnome3 zoom feature follows cursor these days. haven't had that since zoomtext :-D) | ||
| jnthn | You just take the spesh node that will deopt and look at ->annotations, and follow the linked list until you hit a deopt_one annotation | ||
| And then read deopt_idx :) | 22:06 | ||
| brrt | ok, thats pretty simple | ||
| jnthn | yeah :) | ||
| brrt writes that down | |||
| jnthn | :) | ||
| OK, I need to rest soon...getting very sleepy... | 22:07 | ||
| brrt | sleep well | ||
| jnthn | thanks | ||
| 'night | |||
| brrt | in .. elfeketallaa or what it was called :-) | ||
| 'night :-) | |||
| jnthn | Oh, I'm just at home right now | 22:08 | |
| Not going there until Sunday :) | |||
| brrt | ok, better yet | ||
| jnthn | :) | ||
| brrt | no sleep like home | ||
| jnthn | aye | ||
| 'night | |||
| brrt | 'night | ||
| TimToady thinks looping and indexing into arrays of natives will be one of the biggest wins for jitting, eventually | 22:14 | ||
| lizmat hopes JITting will also work on NFG | 22:15 | ||
| TimToady | I just said that, basically :) | ||
| brrt | what is nfg? | ||
| TimToady | our eventual form for representing unicode strings on a grapheme-by-grapheme basis, even when unicode doesn't define precomposed graphemes | 22:16 | |
| tadzik | woot. Awesomeness | ||
| brrt++ | |||
| brrt | oh, normalized form g :-) | ||
| lizmat | S15:82 | ||
| synopsebot | Link: perlcabal.org/syn/S15.html#line_82 | ||
| TimToady | but on a jit level, we're talking arrays of signed ints, probably | ||
| brrt | lizmat: 404 :-( | ||
| FROGGS | the html file of S15 is not up | 22:17 | |
| lizmat | raw.githubusercontent.com/perl6/sp...nicode.pod | ||
| brrt sees no reason why that shouldn't work | |||
| again, pointer arithmetic is easy :-) | |||
| give me pointers and addition and substraction and i'll be a happy hacker | 22:18 | ||
| give me lots of c calls to call, weird ABI's / function call requirements, and i'm.. less happy | |||
| did you know (any of you :-)), by the way, that x86 has instructions for a): string opeations and b); array bounds checking? | 22:20 | ||
| FROGGS | and amd64 lacks these? | 22:21 | |
| brrt | no, has them too | 22:22 | |
| i don't know what they do, though | |||
| and also special ops for looping | |||
| amd64 is just a superset, i meant to say that :-) | |||
| FROGGS | that is what I always thought :o) | 22:23 | |
| lizmat remembers the time she would put X86 code in hex into a buffer and then call that buffer | 22:26 | ||
| but that's 20+ years ago | 22:27 | ||
| brrt | in a hex buffer? :-o | ||
| brrt can't read x86 hex let alone write it | 22:28 | ||
| lizmat | this was another language (TenCORE if you must know) | 22:30 | |
| foo,2048 would define a buffer of 2K | |||
| foo <= xCEDE00FA.... | 22:31 | ||
| would assign it (<= was actually a special character) | |||
| ah, the memories :-) | |||
| tadzik | heh, I remember writing code for MCUs in binary and running it, and that was like 3 years ago | ||
| but that was "crazy university stuff" | 22:32 | ||
| brrt | whut | ||
| tadzik | imagine a drill sergeant saying "after tonight, you're gonna be real army men!" | ||
| brrt | and to be a real army man, you had to program an MCU in binary? | ||
| tadzik | yeah | 22:33 | |
| nothing was ever too "low level" anymore | |||
| brrt | i thought real army man used x-ray guns to switch their bits by hand | ||
| s/man/men/ | |||
| tadzik | I must've skipped that class :( | 22:34 | |
| brrt | anyway, i've only recently come to appreciate how little the basic interpreter for commodore 64 (my first programming language) actually did | ||
| lizmat | I remember the days I had to flip bits with huge magnets :-) | ||
| brrt | i feel cheated | 22:35 | |
| you did? | |||
| :-o | |||
| tadzik | but I remember how amazed I was when the teacher was operating on 4-ish switches simultaneously (?), counting in binary in a pace of like 4 numbers per second :) | ||
| brrt was already amazed with the display of a _real_ pdp8 in the psychological experiment lab @university | |||
| lizmat | well, let me put it this way: my first floppy was a 96K single sided singe density floppy | ||
| tadzik | lizmat: wow, that's amazing :) | ||
| lizmat | and a sewing machine sized luggable Osborne-1 | 22:36 | |
| featuring CP-M and Wordstar | |||
| and the screen the size of a nowadays phablet | 22:37 | ||
| brrt | en.wikipedia.org/wiki/Floptical | ||
| lizmat | with a resulotion of 80 x 25 characters | ||
| tadzik | I think GRRM still uses Wordstar to write his books | 22:38 | |
| brrt | GRRM? | 22:39 | |
| oh, i see | |||
| tadzik | George Martin, the Game of Thrones guy | ||
| I think it's time to sleep & G'night #moarvm | |||
| brrt | 'night | 22:40 | |
|
22:42
brrt left
|
|||
| lizmat | gnight tadzik | 22:43 | |
|
22:47
woolfy joined
|
|||
| hoelzro | brother: I just saw this: www.freelists.org/post/luajit/DynAS...umentation | 23:12 | |
| thought you might find it handy! | |||
| er | |||
| that was meant for brrt | 23:13 | ||
| .seen brrt | |||
| FROGGS | 33mins ago | ||
| hoelzro | thanks FROGGS =P | 23:19 | |
|
23:20
jnap joined
|
|||