01:32
FROGGS_ joined
|
|||
sergot | morning o/ | 06:12 | |
06:47
FROGGS joined
07:06
zakharyas joined
|
|||
jnthn | o/ | 08:57 | |
09:04
moritz joined
|
|||
timotimo | morning | 09:17 | |
moritz | moarning | 09:19 | |
09:27
lizmat joined
|
|||
jnthn | moaning | 09:28 | |
09:29
nebuchad` joined
10:08
FROGGS joined
|
|||
timotimo | did brrt say he'd have a 4-day-weekend? | 10:20 | |
jnthn | Not that I remember. Well, he was about here on Friday at least. :) | 10:22 | |
11:28
brrt joined
|
|||
brrt | \o | 11:28 | |
jnthn | o/ brrt | 11:30 | |
brrt | wow, timotimo++ 's been busy | ||
do you happen to know if pop_o and pop_s etc... are invokish? | 11:31 | ||
jnthn | No, they're not | 11:32 | |
REPR ops can never invoke | |||
brrt | ok, awesome | ||
jnthn | That's a 6model design rule for a long time :) | ||
(Which serves us nicely :)) | 11:33 | ||
brrt | yes, it does, certainly here | 11:34 | |
brrt is trying to renember which ops were in fact invokish | |||
smrt_*ify at least | |||
jnthn | if_o, unless_o, smrt_*, istrue, isfalse, decont, assign, assignunchecked | 11:36 | |
brrt | only these? | ||
jnthn | Well, those stand out to me glacning oplist | 11:37 | |
*but* | |||
A bunch of ops can also throw exceptions. | |||
timotimo | brrt: i've got beginnings of a getattr_s patch, but i don't have a way to express "pass the nth literal string from the current compunit's literal table" | ||
it'd be nice if i could just dereference the address of that string at jit time, because i *think* that table cannot move | |||
brrt | hmm | ||
jnthn | And exceptions will need some pondering. | 11:38 | |
brrt | /if/ it cannot move, you can just pass the pointer in a literal | ||
otherwise, i might need / want to add options to callarg | |||
brrt nods wrt to exceptions | |||
timotimo | how do i properly pass that pointer? | ||
when i said i'd just use the litearl int64 argument type, diakopter warned that some architectures have different sized pointers | 11:39 | ||
brrt | i think the callarg structure is a union of { ptr, num64, int64 } | ||
timotimo | so it'd be good if the jit had a way to differentiate numbers from addresses on that stage | ||
brrt | true | ||
it hasn't a pointer value in there, if you like you can just add a void * in the struct | 11:40 | ||
the emitter will handle eventual differences | |||
hmm wait, i may have a better idea | |||
jnthn | shop/lunch; bbiab | 11:42 | |
timotimo | preparing for departure first | 11:43 | |
brrt: do you want my patch so you can massage it into a workable state? | |||
in my newest assessment, ifnonnull turned up as the second most bail-causing op, following getattr_s | 11:44 | ||
we'll probably see an "explosion of diversity" once those two are done :) | |||
which may be a good thing ("we attempt to compile a whole bunch more diverse frames!") or a bad thing ("oh no, look at all these low-worth ops we'll have to take care of!") | |||
oh, btw, it'd be fantastic for logging purposes if the "call a C function" nodes could be annotated with the original opcode and if that could be printed in the log | 11:45 | ||
so that we can get proper "emitted opcodes" statistics from the log | |||
brrt agrees | 11:46 | ||
timotimo | and rather than using a perl6 script, i suggest the use of grep "emit" | sort | uniq -c | sort -n | ||
brrt | oh, you can send a patch, yes | ||
brrt had considered that, too :-) | |||
timotimo | gist.github.com/timo/84d595f301354393bdc0 | 11:47 | |
it'd probably also be nice to merge master into moar-jit again, as we've recently got some decont -> sp_p6oget_o transformations in spesh done | 11:49 | ||
i've been running a non-pushed merge of master into moar-jit locally and it still builds rakudo fine at least | |||
AFK now :) | |||
brrt | ok, will do :-) thanks a lot | 11:50 | |
bbiab | 12:03 | ||
12:09
zakharyas joined
12:28
jnap joined
13:32
carlin joined
|
|||
timotimo | brrt, i'd also be interested in a before/after master-merge comparison of decont bails | 13:37 | |
or rather: decont count in general | |||
(for setting compilation or something like that) | |||
13:42
brrt joined
|
|||
brrt | that's a prety good idea, yes | 13:44 | |
dalek | arVM/moar-jit: 83a6629 | (Bart Wiegmans)++ | src/jit/ (4 files): Add pointer values as literals in call args |
14:14 | |
arVM/moar-jit: 4d50b38 | (Bart Wiegmans)++ | src/ (7 files): Add support for getattr_s Based on timotimo++'s patch. Also added direct support for calling args with the a string based on the string index. |
|||
timotimo | yay | 14:20 | |
14:30
colomon joined
14:40
woolfy left
14:41
woolfy joined
|
|||
brrt | :-) | 15:06 | |
timotimo | for the weekly it would be fantastic to have an updated bail log for the core setting :\ | 15:33 | |
i suppose i'll have an outlet on the train and can compile and run stuff there no-problem | |||
new most-bailing op: flattenropes | 15:40 | ||
followed by ifnonnull, which i'm hoping brrt can implement very soon :) | 15:41 | ||
dalek | arVM/strref: f6b3ea8 | jnthn++ | src/strings/ops.c: Fix variable names in asserts. |
15:49 | |
arVM/strref: c4cfd75 | jnthn++ | src/strings/ops.c: Toss debug code. |
15:50 | ||
timotimo | how did that even build? :) | 15:57 | |
should i point out that the string refactor branch still breaks at least one benchmark? | |||
or are you about to fix that? | 15:58 | ||
nwc10 | on jnthn.net/perl6/bench/2014-07-13.html some of those HEAD benchmarks seem to be within a factor of 8 or even 4 of Perl 5 | ||
timotimo | nwc10: wasn't that only the microbenchmarks, though? | 15:59 | |
nwc10 | possi bly | ||
jnthn | There's some where we even beat Perl 5... | 16:00 | |
nwc10 | I'm not aware, I'm on a poor connection (and I've closed the page) and $more excuses | ||
yes, I forgot to say. Some are already ahead | |||
need some concurrency benchmarks :-) | |||
We have a very dirty floor, thanks to 2 dogs, and so some concurenncy benchmarks would be very useful :-) | 16:01 | ||
[maybe too subtle] | |||
16:01
klaas-janstol joined
|
|||
timotimo | nwc10: you want to wipe the floor with perl5? :) | 16:04 | |
nwc10 | aye. | ||
timotimo | sufficiently unsubtle :) | ||
nwc10 | more, I want the floor wiped. And I'd prefer an automated solution. | 16:05 | |
[Coke] | nwc10++ for coming to the dark side. | ||
nwc10 | I'm playing both sides. :-) | ||
timotimo | :D | 16:06 | |
japhb_ | I can't wait to see the benchmarks after strref merges. And my perl6-bench fixes from last night should cut out a lot of the noise in the data, too. | 16:07 | |
timotimo | japhb_: er .. you're seeing the benchmarks after the strref merges there :) | 16:08 | |
japhb_ | nwc10: I welcome a moving target for perl5 performance, as long as it's moving in the "faster" direction. :-) | 16:09 | |
timotimo: His stuff was from the branch, not after the merge. I've got a bunch of versions timed, so I want to be able to add the merged results into my histories and see how it looks. | 16:10 | ||
jnthn | Still need to decide whether to merge strref before or after 2014.07 release... | 16:11 | |
japhb_ | Certainly after perl6-bench fixes, the history shows a much more reasonable improvement curve. | ||
timotimo | ah, of course. | ||
jnthn | I don't want a bunch of module regressions blocking a * | ||
timotimo | japhb_: is there a good explanation for why the lines on the left are exactly the same steepness? | ||
japhb_ | jnthn: if it can pass the spectests and the benchmarks, I'd love to be able to merge it. The improvements for end users will be huge. | ||
Yeah, agreed about module regressions. :-( | 16:12 | ||
jnthn | japhb_: Well, release is on Thu | ||
So it's not a long wait | |||
japhb_ | timotimo: explain? | ||
jnthn: I meant I'd rather not have the users stuck waiting for mid-late August. | 16:13 | ||
(Those of us actually working on it are probably all running a current build) | 16:14 | ||
timotimo: Before my fixes last night, it was relatively common to have a couple of compilers whose run times on the left side of the graph were in the noise, and being pinned to the minimum run time (after subtracting startup/compile time). Thus when calculating rates, they ended up colinear. That's part of what I was trying to fix. | 16:16 | ||
It should be much rarer now to see that. More likely you'll see plot lines missing the left end, or having fewer data points on the left end. | |||
Damn plugged ears. Sudafed is NOT DOING ITS JOB. :-/ | 16:18 | ||
timotimo | ah, pinned to the minimum run time, that'd explain why they look the same | ||
japhb_ | timotimo: The initial version of the code was trying to avoid divide-by-zero. The current version is attempting to avoid lies. | 16:19 | |
timotimo | that's an improvement | ||
i still kind of wish our html output had a way to make all graphs have the same scale | |||
japhb_ | It can probably still be tuned a bit, but I wanted to see how other people's benchmarks looked before tuning further. | ||
16:19
nebuchadnezzar joined
|
|||
timotimo | but i suppose our history comparison view is going to be much less problematic | 16:20 | |
japhb_ | Some of the tests have VASTLY different scales. | ||
Yes, history should help that a lot. | |||
timotimo | that's true :\ | ||
japhb_ | Bus stop coming soon, bbiab. | ||
timotimo | in about 15 minutes i'll reach the next train station, too | ||
so ... what do i do until then? :) | |||
i think flattenropes looks like a quite simple thing to do | 16:21 | ||
dalek | arVM/moar-jit: ce5cf76 | (Timo Paulssen)++ | src/jit/graph.c: implement flattenropes in the JIT. pretty much every bail that was flattenropes is now a bail caused by graphs_s ... |
16:29 | |
timotimo | jnthn: if the implementation of s_graphs is GET_REG(...).s->body.graphs, i should be able to turn it into a p6oget_s with offsetof( MVMString, body.graphs ), right? | 16:31 | |
jnthn | timotimo: hmm | 16:34 | |
But that's changed in strref... | |||
But yeah, that appraoch would work | |||
It's called num_graphs now :) | |||
japhb_ | BTW jnthn, I'd like to see what the current version of perl6-bench run on Windows produces for plots ... I'm curious whether the tuning I did for my system (fast linux workstation) does the right thing on a Windows laptop as well. | 16:37 | |
Also, if any of your Windows fixes for perl6-bench are immediately commitable, please do -- I'd like to keep the "hand-managed" part minimized, for any other Windows users who might be interested. | 16:38 | ||
16:45
brrt joined
|
|||
kjs2 | Hello all. Quick question - just cloned moarvm, trying to compile, but getting this error: src/moar.h:20:10: fatal error: 'uv.h' file not found | 16:50 | |
#include <uv.h> | |||
perl Configure.pl completed successfully, Mac OSX platform. Just wondering if it’s just me. | 16:51 | ||
… but compilation of the latest release (2014.06) worked well. | 16:54 | ||
japhb_ | kjs2: Have you run Configure? | 16:56 | |
kjs2 | japhb_: Yes, success | ||
brrt | that's... odd | ||
japhb_ | (I'm guessing you don't have the git submodules checked out) | ||
brrt | Configure.pl ought to do that | ||
kjs2 | that’s what confused me. As said, when just “download”ing the latest release, it works well | ||
brrt | maybe run it again? | ||
kjs2 | i took the latest version from github. Maybe I should jsut stick with releases :-) | 16:57 | |
brrt | i'm checking if the latest checkout of master Just Works as it ought to | 16:58 | |
ok, i'm waiting a pretty long time for 'Updating submodules' | 16:59 | ||
timotimo | kjs2: did you get it from the "releases" tab? | ||
brrt | but, i'm getting them after all | ||
kjs2 | timotimo: I downloaded the .zip file on github | 17:00 | |
timotimo | yes | ||
that's wrong | |||
kjs2 | that one failed (complaining about no uv.h) | ||
timotimo | i think we don't know how to turn that feature off | ||
kjs2 | but I realized it was easier for me to download it from moarvm.org | ||
timotimo | those are proper | ||
kjs2 | and that one works. | ||
timotimo | my seat is b0rken ;( | ||
ah, just misconfigured | 17:01 | ||
running Configure.pl again fixed it | |||
17:41
brrt joined
17:43
brrt left,
brrt joined
18:21
FROGGS joined
18:25
teodozjan joined
|
|||
nwc10 | jnthn: *only* spectest difference from MoarVM master appears to be t/spec/S16-filehandles/io.t | 18:29 | |
ok 81 - the bytes decode into the right Str | |||
vs on branch | |||
not ok 81 - the bytes decode into the right Str | 18:30 | ||
# got: 'f??' | |||
# expected: 'föö' | |||
timotimo | oops | ||
nwc10 | yes. needs more cowbell, er metal dots | ||
18:32
carlin joined
|
|||
timotimo | p6oget_i isn't the right op at all to handle MVMString struct access, because it's for p6o's and not for MVMStrings %) | 18:34 | |
silly me | |||
but using sp_get_i gives me trouble | 18:35 | ||
but i did remove the offsetof MVMObjectStooge, data | |||
[Coke] | integration/99problems-51-to-60.t aborted 13 test(s) | ||
timotimo | remove the subtraction | ||
nwc10 | jnthn++ # pretty bloody good | ||
timotimo | i can only reach the Internet from my phone now | 18:36 | |
dalek | arVM/moar-jit: a798a17 | (Bart Wiegmans)++ | src/jit/emit_x64.dasc: Remove debug instruction |
||
timotimo | otherwise I would upload a patch | ||
brrt! \o/ | 18:37 | ||
brrt | :-) that was a really simple patch | ||
[Coke] | started failing Mon Jul 7 18:33:12 2014 | ||
timotimo | it's amazing how good networkmanager has gotten. | 18:38 | |
gist.github.com/timo/9369c4f53eecd40d60b4 - ideas? | 18:39 | ||
brrt almost wanted to turn timotimo's appraisal of current networkmanager into cynical terms | 18:40 | ||
timotimo | how so? | ||
i plugged in my UMTS stick, "edit connections" "new connection" "mobile broadband" "germany" "vodafone" "default" done | 18:41 | ||
i plug in my phone, select "usb tethering" and five secodns later it's already connected and working | |||
brrt | i agrees | ||
the cynical terms were about how bad it used to be | |||
timotimo | except now i'm inside a tunnel | ||
and the connection has no right of working | |||
why am i connected? o_O | 18:42 | ||
maybe this tunnel has an antenna put into its roof or something | |||
brrt | that happens these days | ||
what i'm very happy about is the large-font support on gnome these days | 18:43 | ||
timotimo - you're trying to optimise graphs_s for spesh so it'll be jitted? | |||
you can do that, but it seems better imho to add an 'accessor node' to the jit | |||
that is to say, i don't expect a speed benefit by emitting a sp_p6oget_i or anything like that for an op like graphs_s, codes_s, etc | 18:44 | ||
better to have the JIT say 'here's how to make a node that copies N bytes from the object pointed at in this or that register' etc | 18:45 | ||
also note that sp_p6oget_ ops assume p6opaque structs, which have a perhaps little-known feature (namely, field indirection); the 'data' vector (which would normally be adjacant to the header) can be 'replaced' and be redirected | 18:46 | ||
timotimo | left the tunnel and the reception goes to hell | 18:48 | |
wtf %) | |||
well, i did notice the thing about p6o_ ops | |||
and the indirection | |||
because it segfaulted in get_real_data :) | |||
with "big font" you mean "HiDPI", right? | |||
brrt | no, i mean the little 'accessibility' button | 18:49 | |
timotimo | it's fine to create a jit node for accessors | ||
18:49
carlin joined
|
|||
brrt had expected as much | 18:49 | ||
just that some accessors are conditional (of the type foo ? foo : bar, or something like that) | 18:50 | ||
timotimo | i want multipath TCP now | ||
brrt | i'll get to that | ||
time to fix networkmanager then :-p | |||
timotimo | i have to switch between vodafone and eplus every few minutes | ||
i didn't implement a node for the jit because i have no idea how to work dasm | |||
are you going to build ifnonnull soon? :3 | 18:51 | ||
brrt | ehm... i /think/ jnthn said ifnonnull was invokish | 18:52 | |
and i'm working on the frame register refactor, which is kind of a prelude to the invokish ops | |||
and, i'll be blogging about how to use dasm really soon :-) | 18:53 | ||
timotimo | ifnonnull is not invokish | 18:54 | |
it checks if the object pointer is a null pointer and if not if it's == VMNull | |||
need to detrain in a few, then somehow get to the hackspace and get a jacket ... | |||
ttyl :) | 18:55 | ||
brrt | oh, if that's so, i can do it swiftly | 18:57 | |
jnthn | nwc10: Thanks. I can reproduce that one here. | 19:00 | |
nwc10 | t/spec/S22-package-format/local.t fails on master in the same way. | ||
jnthn | timotimo: I think sp_get_i doesn't want th eheader subtracting, fwiw. | 19:01 | |
brrt: It's if_o and unless_o and istrue and isfalse that are the boolean-invokeys. | 19:03 | ||
nwc10: Yeah, lizmat++ is actively hacking in that area, so guess it's some churn from that. | |||
brrt: BTW, it occurs to me that we might want to mark ops as :invokey and :throwy in oplist and programatically deal with the issue | 19:12 | ||
brrt concurs | |||
throwy can jump arround frames too? | 19:13 | ||
jnthn | I've added various such things in the past; just git log update_ops.p6 | ||
brrt | i see | ||
jnthn | Depends what you mean by "jump around frames" | 19:14 | |
In many ways it's worse than invokey | |||
'cus it can jump within a frame also | |||
FROGGS .oO( I've added various such things in the qast... ) | |||
dalek | arVM/moar-jit: fe1315b | (Bart Wiegmans)++ | src/jit/emit_ (3 files): Moved frame variable to callee-save register The frame variable is accessed often, so it is a good candidate for a callee-save register (as this saves loads whenever it is used). Moreover, in invokish operators this will allow us to compare the cur_frame with the jit_frame so as to check if they really invoked. |
19:27 | |
brrt | hmm i see | ||
basically, that's what handlers are for, aren't they? | 19:28 | ||
offsets into the bytecode stream | |||
jnthn | yeah | ||
I expect spesh will be able to turn *some* local handlers in a frame into gotos... | |||
But don't know that we want to rely on that. | 19:29 | ||
One good news is that handlers always are new basic block starts... ) | |||
brrt | that is good news | 19:30 | |
basic block starts are always labels in the JIT | 19:31 | ||
(not sure how it could be otherwise, by definition of the idea 'basic block') | |||
which means that if you know the handler the JIT knows the label and you /can/ translate it into goto's | |||
of a sort | |||
(and if you can lookup the handler at runtime, better yet!) | |||
dalek | arVM/moar-jit: bc4bb42 | jnthn++ | src/spesh/facts. (2 files): Cope with cross-deopt-point usage analysis. If a register gets used after a deopt point, give its usage an extra bump. This means we won't kill a write to it when doing dead code 0e15cb6 | (Bart Wiegmans)++ | src/ (6 files): Added frame ArgProcContext as C call interp var This should fix checkarity, which it seems never worked because op_to_func return the function pointer to the regular non-jit version. |
19:35 | |
brrt | (please dalek, it's a merge) | ||
19:36
dalek joined
|
|||
timotimo | jnthn: i already removed the header subtraction from sp_get_i | 19:44 | |
jnthn | timotimo: Did that fix it? | 19:46 | |
timotimo | no | 19:47 | |
Unable to parse expression in method_def; couldn't find final ')' at line 16, near ") {\n " | |||
ah, brrt merged master, good. | 19:53 | ||
brrt | rakudo built fast :-o | ||
i mean, what's a good time for stage mast to build these days? | 19:54 | ||
jnthn | Lowest I've seen is around the 13s mark | ||
brrt | well, i've just hit 13.377 | 19:55 | |
(a number which i'm not kidding about in the least) | |||
timotimo | cute :) | ||
brrt | i suppose the spesh helped | ||
timotimo | it would be nice if it did | 19:56 | |
btw, only graphs_s and codes_s are amendable to being turned into an access node | |||
lizmat | jnthn, nwc10: wrt to S22 errors: they only happen when run under make, not when just executing with "perl6" | ||
brrt | afaik, there are more :-), it's just that most of these tend to be access from the compunit or threadcontext or similar | 19:57 | |
lizmat | it appears that trying to execute perll6-m in a shell (which is what the S22 when running under make does) | ||
gives the error: Unhandled exception: failed to load library 'dynext/libperl6_ops_moar.dylib' | 19:58 | ||
at <unknown>:1 (/Users/liz/Github/rakudo.moar/perl6.moarvm::303) | |||
timotimo | so it's not that useful to build a very generalised solution | ||
brrt | not yet, i agree | 19:59 | |
jnthn | elems on a VMArray and VMHash also can happen that way | ||
Though I think they already spesh to sp_get_i | |||
timotimo | ah, but only if they are nqp::list_i, right? | ||
i don't think we have nqp::hash_i at all | 20:00 | ||
brrt | the advantage of 'access nodes' - eventually - is that you can do common-subexpression-elimination for them, and compile code that has fewer loads | ||
timotimo | i'm looking forward to eliminating repeated boxing/unboxing with escape analysis | ||
like $foo++ will turn into an inc instruction even if $foo is a container'd thingie | 20:01 | ||
well, that doesn't sound like a good idea, as boxed ints are immutable | |||
but if we just new'd that int, we can fuddle around with that ... actually we can delay the new-ing until after the calculations | |||
forget what i said | |||
brrt | hmm... smallish issue | 20:14 | |
can we call GC_SYNC_POINT /before/ branching away? | 20:15 | ||
would that make a lot of difference? | |||
jnthn | Can you get a little more specific? | 20:16 | |
Like, is there soemthing in interp.c you're looking at? | |||
timotimo | we don't have to call gc_sync_point | ||
unless we have an infinite loop that allocates | |||
jnthn wonders if brrt is talking about this: | |||
OP(goto): | |||
cur_op = bytecode_start + GET_UI32(cur_op, 0); | |||
GC_SYNC_POINT(tc); | |||
goto NEXT; | |||
brrt | for example, yes | ||
jnthn | In which case no, it's not significant that we set cur_op before we call GC_SYNC_POINT | 20:17 | |
brrt | why | ||
:-) | |||
jnthn | You could swap the two around. | ||
e.g. it could also be | |||
OP(goto): | |||
GC_SYNC_POINT(tc); | |||
cur_op = bytecode_start + GET_UI32(cur_op, 0); | |||
goto NEXT; | 20:18 | ||
And work just as well. | |||
The GC doesn't actually use the program counter | |||
timotimo | gc_sync_point is "this is probably a good spot to see if other threads have decided to gc" | ||
iirc | |||
brrt | oh, i read 'it's not /in/significant', which is why i'd expect a dramatic conclusion | ||
jnthn | oh :) | ||
brrt | ok, then i'll move it to the front | ||
jnthn | Yeah, that'd kinda make it weird :) | ||
brrt | because otherwise i'll have to JIT a weird dispatch thing arround it | 20:19 | |
jnthn | Anyway, timotimo was right about the point of it: making sure non-allocating tight loops don't go wild. | ||
And prevent other threads GCing. | |||
If you wanted to further optimize it, you could only emit it on backbranches. | |||
timotimo | right, we rely on another thread being marked as "blocked" or reaching a gc sync point soon enough | 20:20 | |
but we can't pretend a piece of jitted code "blocks" a thread except if it is absolutely certain that it won't allocate | |||
jnthn | (Since no backbranch = no loop) | ||
timotimo | and then it must not leave the jitted code without checking for simultaneous gc runs | ||
jnthn puts aside $dayjob-stuff for the day | 20:21 | ||
...and wanted to take a stroll but...rain. :( | |||
brrt | what are umbrella's for :-) | 20:22 | |
brrt ponders the backbranch stuff... i'm not sure i can guarantee that bb's are numbered in a linear-consecutive fashion, or in other words, i can't prove bb's from a loop yet | |||
hmm | |||
what would be the sizeof of A0_t in x64 | |||
jnthn | 64 bits | 20:24 | |
brrt | indeed :-) that's good news for me | 20:25 | |
jnthn | Where do you find the AO_t, ooc? | ||
timotimo | is that related to atomicness with regards to certain operations? | ||
brrt | gc_status | ||
jnthn | yeah | ||
Ah... | |||
brrt | tc->gc_status is A0_t | ||
jnthn | Right | ||
brrt | which means i must cmp it but know the size | ||
jnthn | GC_SYNC_POINT does not, thankfully, look at it atomically :) | 20:26 | |
timotimo | aye, it's okay to accidentally miss a beat | 20:27 | |
brrt | thankfully, indeed | 20:32 | |
hmm... that's weird | 20:35 | ||
if i add ifnonnull as an op, i get lots of 'use of unitiialized value of type Nil in numeric context' errors | |||
timotimo | in that case your ifnonnull is the wrong way around :) | 20:38 | |
brrt | that could well be | ||
timotimo | :) | 20:41 | |
arVM/moar-jit: d23c9a0 | (Bart Wiegmans)++ | src/jit/ (4 files): Add support for ifnonnull This also adds the GC_SYNC_POINT to branches |
|||
brrt | timotimo++ for telling me what to look for | ||
jnthn | ah, the rain stopped :) | ||
bbi10-15 | 20:47 | ||
brrt | see you tomorrow! | 20:48 | |
20:48
brrt left
20:49
woolfy1 joined
|
|||
timotimo makes a new bail statistic thingie | 20:57 | ||
yeah, a whole bunch of graphs_s failures still | 21:01 | ||
then comes atkey_o and then param_rp_o | |||
but atkey_o should be implementable as a simple function now | 21:03 | ||
will we never ever support may-invoke-opcodes in the jit? | 21:06 | ||
well, would you look at that | 21:08 | ||
decont is back on the top spot | |||
followed by graphs_s by about 15 bails | |||
jnthn | timotimo: Oh, we'll certainly support may-invoke; brrt++ and I have been discussing that :) | 21:12 | |
timotimo | cool | ||
otherwise we'll never be able to tackle decont :) | |||
actually ... how come we don't have guarded almost all deconts with a "the type of container has always been the same"? | 21:13 | ||
since the only container we cannot turn into a p6oget_o is the code-based one and i don't think it's used that often ... ? | 21:16 | ||
jnthn | Dunno. There must be places we're not sure; in may cases, perhaps we can be more sure :) | 21:17 | |
May be worth checking if box_i and friends introduce "known not a container" things in facts.c for example | 21:18 | ||
Otherwise I'd just look at spesh log and see if remaining deconts come in some kind of pattern. | |||
m: say "föö".encode("ISO-8859-1").perl | 21:22 | ||
camelia | rakudo-moar b25b86: OUTPUT«Blob[uint8].new(102, 246, 246)» | ||
timotimo | create_facts is responsible for box_i and friends, it checks the type for known_value (is that right? wouldn't known_type be enough?) and if it's got a null container_spec and then sets FACT_DECONTED | 21:24 | |
jnthn | Well, the type almost always is suppleid as a wval | 21:25 | |
But yeah, technically known_type is enough. Not sure if it'll nail many more cases, but quite possibly | |||
timotimo | OK, i'll add a printf in that branch | 21:27 | |
dalek | arVM/strref: bab734b | jnthn++ | src/strings/latin1.c: Fix copy-pasto when updating latin-1 encoding. |
||
jnthn | There's the one nwc10++ reported | ||
timotimo | in the first piece of the function we check the type for known_type, in the second piece we check for known_value | 21:28 | |
21:28
japhb joined
|
|||
timotimo | interesting. | 21:28 | |
that triggers really often | 21:29 | ||
jnthn | Whcih "that"? :) | ||
timotimo | both branches are hit, actually | ||
jnthn | Are there cases where type is and value ain't? | 21:30 | |
timotimo | let me see. | ||
er. yes. | 21:31 |
|