| nebuchadnezzar | good night | 00:02 | |
| timotimo | turns out i lied | ||
| dalek | arVM/merge_facts_at_phi: f82b223 | timotimo++ | src/spesh/dump.c: highlight registers that are written to by PHI nodes |
00:03 | |
| arVM/merge_facts_at_phi: 9f69201 | timotimo++ | src/spesh/facts.c: fix a sort of bad thinko in iter_facts |
|||
| arVM/merge_facts_at_phi: cf6f7ae | timotimo++ | src/spesh/ (2 files): "use"ing facts from guards now works even for merged facts |
|||
| arVM/merge_facts_at_phi: 083d766 | timotimo++ | src/spesh/optimize.c: fix comment |
00:08 | ||
| timotimo | cool, spec tests are also clean with this | 00:12 | |
| could someone do me a favor and smoke the ecosystem with that branch applied to moarvm? | |||
| one annoying thing is that the ecosystem isn't clean :( | 00:20 | ||
|
02:02
zakharyas joined
04:02
FROGGS_ joined
05:53
camelia joined
06:17
camelia joined
06:21
camelia joined
|
|||
| FROGGS_ | nebuchadnezzar: ohh | 08:04 | |
| I'll fix that | 08:05 | ||
| nebuchadnezzar | FROGGS_: I made a pull request | 08:06 | |
| dalek | arVM: 309561c | (Daniel Dehennin)++ | Configure.pl: Use CPPFLAGS is @cflags instead of @ldflags |
08:09 | |
| arVM: c1cd8c6 | FROGGS++ | Configure.pl: Merge pull request #188 from baby-gnu/fix/CPPFLAGS-in-cflags-instead-of-ldflags Use CPPFLAGS is @cflags instead of @ldflags |
|||
| FROGGS_ | nebuchadnezzar++ | ||
|
08:10
Ven joined
08:15
rurban joined
08:44
Ven joined
08:52
donaldh joined
|
|||
| dalek | arVM: a623b72 | FROGGS++ | src/io/procops.c: remove slash->backslash conversion mess |
10:02 | |
|
11:57
Ven joined
|
|||
| timotimo | FROGGS_: do you think i should store an "is a tty" flag inside SyncStreamData? | 13:09 | |
| FROGGS_ | why do we want to store such a flag? | 13:10 | |
| dont we want to just map "foo".IO.isatty to an nqp::isatty op? | 13:11 | ||
| though I guess the method would be called more like isa-tty or is-a-tty or just tty | 13:14 | ||
| nwc10 | arguably one also wants "is a socket?" "is a pipe?" (might not be a difference) "is char special?" "is block special?" and "is a symlink?" at the same level | 13:15 | |
| so, possible op explosion | |||
| and probably some stuff I've forgotten, including "doors" on Solaris. | |||
| timotimo | hum. | 13:17 | |
| we have an op that gives us the underlying file no of a socket, does that also work for other MVMOSHandle repr'd objects? | 13:18 | ||
| then we could nativecall to isatty | |||
| nwc10 | I don't think one wants to nativecall this. I think it feels better as C code that can be platform specific | ||
| but I was more meanig, I don't know for sure if this wants to be one op that is "isatty" | 13:19 | ||
| the interface to the C might be better as a "WTF is this then?" op | |||
| particularly as one wants to ask this question of both filenames and file handles. | |||
| FROGGS_ | nwc10: we already have "foo".IO.l return true if that thing is a symlink | 13:28 | |
| timotimo | that's for a file on the file system, not for an open handle, like stdin and stdout | 13:29 | |
| FROGGS_ | and I would not mind adding ten more methods to that | ||
| .IO gives you a handle, no? | |||
| timotimo | m: say $*IN.l | ||
| camelia | rakudo-moar 412559: OUTPUTĀ«Falseā¤Ā» | ||
| FROGGS_ | at least something similarish | ||
| timotimo | huh | 13:30 | |
| FROGGS_ | m: say $*IN.r | ||
| camelia | rakudo-moar 412559: OUTPUTĀ«Falseā¤Ā» | ||
| timotimo | well, that's a bit problematic :D | 13:33 | |
| non-readable stdin? | |||
|
13:37
Ven joined
|
|||
| lizmat | I would be very much in favour of a nqp::isatty function | 13:48 | |
| the other stuff we can look at later, but not having IO.t working, is a pain | |||
|
13:52
zakharyas joined
|
|||
| FROGGS_ | lizmat: t is for tty? | 14:01 | |
| lizmat | yup | ||
| m: $*IN.t | |||
| camelia | rakudo-moar 412559: OUTPUTĀ«Cannot find method 'isatty': no method cache and no .^find_method⤠in method t at src/gen/m-CORE.setting:17825⤠in block <unit> at /tmp/3nrO_SWlie:1ā¤ā¤Ā» | ||
| FROGGS_ | :o) | ||
| nwc10 | lizmat: I'd like to wait until at least this evening, to see if jnthn has an opinion. | 14:03 | |
| lizmat | sure, no pb, it's been a problem for quite some time already :-) | 14:04 | |
| moritz | w 13 | 14:12 | |
| sorry | |||
| timotimo | gist.github.com/timo/2514267f199a9...tfile1-txt - this is how spesh fares in the benchmark that sets all of an array's slots to 1 | 14:23 | |
| timotimo AFK | |||
| maybe someone else wants to impl isatty in the mean time? | |||
|
14:43
dalek joined
17:44
lizmat joined
|
|||
| timotimo | jnthn: bindpos and atpos as well as bindkey and atkey ought to be optimized via the repr's spesh method, right? | 18:00 | |
| jnthn | timotimo: Well, but what into? :) | 18:07 | |
| timotimo: It's more that we can JIT them as a direct call to the REPR func | 18:08 | ||
| timotimo | then we'll still have the switch for the slot type and the check for the incoming argument to be of the right type | ||
| ah, i hadn't thought of the fact that we'll also have to do resizing for the writing ones | 18:09 | ||
| jnthn | Well, I have been thinking of changing how we lay out VMArray a bit | 18:10 | |
| To ease threading issues | |||
| But yeah, we can de-virtualize the REPR calls for now in the JIT | 18:11 | ||
| timotimo | mhh, fair enough | ||
| the signatures for repr ops are all fixed, right? | 18:12 | ||
| jnthn | aye | ||
| So you just need a known type | |||
| timotimo | good, i'll have a quick look at implementing that | 18:15 | |
| nwc10 | jnthn: it looks like "isatty" functionality belongs at the NQP OP level, but it's not clear to me that "isatty" (alone) should be an op | 18:16 | |
| (there was more explanation in backscroll) | 18:17 | ||
| in that, there are more things than just TTYs that we'd probably like to test for, and having one op for each *I think* feels like too many ops | |||
| but you're the designer. | |||
| jnthn | dinner now, will ponder | 18:22 | |
| & | |||
| (but yes, would rather not op explosion) | |||
| timotimo | shouldn't we rigorously put REG_VAL_F all over the ops that handle _n? | 18:27 | |
| bindattr_n and bindattrs_n, for example, currently use REG_VAL for the value | 18:28 | ||
| why did i say i could have "a quick look" at implementing this m) | 18:35 | ||
| would i introduce a new MVM_JIT_* type to refer to an object's body, for example? or actually do a bit of memory calculation in the graph.c stage? | 18:45 | ||
| at least for ®ister we have a type already | 18:46 | ||
| .o( and won't we need to put a _F mode on the return values of some _n ops, too?) | 18:47 | ||
| dalek | arVM: f2937f5 | ugexe++ | build/probe.pm: better armv6 and v7 detection A Linux kernel reports an $arch of `armv7` when a NetBSD kernel on the same machine reports the appropriate $arch as `earmv7hf` testers.p6c.org/reports/32564.html |
18:48 | |
| arVM: 51b90f0 | FROGGS++ | build/probe.pm: Merge pull request #190 from ugexe/patch-1 better armv6 and v7 detection |
|||
| timotimo | yeah, i could do it like that, an extra kind that'll just define a little offset | 18:50 | |
| hoelzro | is there something one should keep in mind when *removing* an op? | 19:05 | |
| ex. readline_intfh? | |||
| FROGGS_ | an op needs to be turned into an noop but needs to stay | 19:07 | |
| hoelzro | gaaaah | ||
| FROGGS_ | because otherwise we might break nqp's stage0 | ||
| timotimo | aye, the numbers must remain intact | ||
| hoelzro | that's what I figured | 19:08 | |
| ='( | |||
| timotimo | we have 16bit space for ops :) | 19:09 | |
| hoelzro | still feels off =/ | 19:10 | |
| FROGGS_ | if it is not used by stage0 (which has to be the case) we could replace it with a new op | 19:22 | |
| but well, we don't have to (yet) | |||
| hoelzro | FROGGS_: ok, I'll keep that in mind | 19:25 | |
| timotimo | well, we've got some slots that used to be occupied long ago | 19:29 | |
|
19:44
tgt joined
|
|||
| timotimo is attempting to compile the new devirtualized reprop call implementation for the first time | 19:48 | ||
| FROGGS_ | O.o | 19:49 | |
| sounds interesting | |||
| timotimo | welp, doesn't compile nqp any more | 19:51 | |
| halp | 20:03 | ||
| i must be doing something wrong here | |||
| dalek | arVM/jit_devirtualize_reprops: 1330eef | timotimo++ | src/jit/ (3 files): WIP on devirtualizing repr op functions instead of using the convenience functions defined in reprconv.c we go through a type argument's known type to its REPR, REPROps and find the function pointer to call. Unfortunately, something seems to be wrong with argument passing OSLT. |
20:07 | |
| timotimo | how do i get a disassembly of a .bin file that MoarVM's jit outputs? | 21:04 | |
| objdump -D -b binary -m i8086 seems to give me ... something | 21:06 | ||
| but -m x86-64 doesn't work at all | 21:08 | ||
| ah, found it in the clogs | |||
| objdump -D -b binary -m i386:x86-64 -M intel | |||
| gist.github.com/timo/066bf4ff0981e4ae016e | 21:12 | ||
| so my thinking was: i'll dereference the pointer to the object (rbx+0x18 seems to be that pointer), then add the offset in the struct to the result to get the struct's member | 21:13 | ||
| first the STable, then the object itself, then the object's body | |||
| at offsets 0x10, 0 and 0x18 respectively | 21:14 | ||
| is that wrong? | |||
| am i implementing OBJECT_DATA wrong? | 21:16 | ||
| FROGGS_ | the offsets sound reasonable | ||
| timotimo | well, FWIW, in the debugger the "data" pointer, when decreased by 0x18, gives me a very valid looking MVMArray struct | 21:17 | |
| and of course the other values are optimized out >:( | 21:18 | ||
| but repr_data is 0x8, which is, i would assume, the offset that comes from here: MVMArrayREPRData *repr_data = (MVMArrayREPRData *)st->REPR_data; | 21:23 | ||
| so st must be 0, but how can that be? | |||
| do i perhaps have to add another dereference in some place? | 21:24 | ||
| maybe now i have a pointer to the pointer of the STable? | |||
| i must somehow be significantly brainfarted or something | 21:41 | ||
| i don't think i'll figure this out this evening | |||
| i may just get some early rest so i can drive home safely and comfortably early tomorrow | 21:42 | ||
| FROGGS_ | yeah, that might be a better choice than a walk :o) | 21:44 | |
|
21:54
kjs_ joined
|
|||
| hoelzro | I'm guessing if I want to remove linenoise, I can't remove the interactive member of MVMIOOps, can I? | 21:55 | |
|
22:00
camelia joined
|
|||
| dalek | arVM/jit_devirtualize_reprops: 496c74c | brrt++ | src/jit/ (2 files): Take value of rather than pointer to object stable This would cause a SEGV in JITting direct calls to REPR ops. |
22:44 | |
|
22:45
brrt joined
|
|||
| brrt | btw, very much timotimo++ for coming so far | 22:46 | |
| my lazy bum hadn't started yet :-) | |||
| timotimo | thank you so much for fixing it | ||
| brrt | nqp tests pass, as does rakudo tests, spectest running as we speak | ||
| timotimo | now is my bedtime, though | ||
| well, it's only a single repr op so far | |||
| brrt | also, try --optimize=0 :-) | 22:47 | |
| timotimo | tomorrow i'll be spending alot of day driving | ||
| brrt | if you have the stomach to wait for moarvm like it's 2014 | ||
| timotimo | haha | ||
| brrt | oh, well, you should sleep well then | ||
| timotimo | i have --optimize=1 and --asan :) | ||
| brrt | our bus factor is low enough as it is | ||
| --asan is also a real killer yes | 22:48 | ||
| but --optimize=0 makes gdb more useful | |||
| or lldb, i guess, if you're into that | |||
| timotimo | i ought to be able to make more repr ops devirtualized | ||
| many, many more | |||
| brrt | i think so too | 22:49 | |
| timotimo | like, without too much more thinking or assistance | ||
| brrt | i had basically stopped at the point 'but you can optimize the accesses to the single repr op variable' but in reality it isn't very important | ||
| like that's something the exprcomp will do eventually | |||
| timotimo | hm? | ||
| single repr op variable? | |||
| brrt | the object to which the repr op function is dispatched | 22:50 | |
| timotimo | btw, if you're interested in a little benchmark, you can have a look at gist.github.com/timo/2514267f199a91ce1940 | ||
| brrt | what's up with that? | ||
| timotimo | the file at the far bottom explains it | 22:51 | |
| brrt | i read | ||
| timotimo | i had put that file up first, but the big diff bubbled up to the top :( | ||
| or if you want to do something else, there's a branch that allows the QASTCompilerMAST to access localref decl'd vars as local and local decl'd vars as localref | 22:52 | ||
| brrt | hmm | ||
| timotimo | it's not working properly, as in: tests fail | ||
| brrt | i'll see if i can take a look, but tuits are scarce :-( | 22:53 | |
| timotimo | OK :) | 22:54 | |
| i don't want to steal too many of your tuits | |||
| jnthn already said he could have a look at that branch, too | |||
| brrt | :-) | 22:55 | |
| jnthn | (korean food)++ | ||
| timotimo: oh no, I agreed to what? :) | |||
| Oh, the localref. I should have time tomorrow evening. | 22:56 | ||
| timotimo | :D | ||
| cool | |||
| brrt just fixed my thinko WRT jitting objbody and stable references to objects in registers | |||
| so now we have a single repr op devirtualized | |||
| jnthn | ah, cool :) | ||
| timotimo | atpos_* | ||
| jnthn | Does it make much difference? :) | ||
| timotimo | didn't test yet | ||
| i'm en route to bedtimes :) | 22:57 | ||
| brrt | that one could, for arrays, even be jitted directly, but i don't want to do an emit-explosion yet | ||
| jnthn | yeah | ||
| I may tweak array stuff to make it more safely jittable too :) | |||
| timotimo | jnthn warned there may be a change to the layout of MVMArray in the future | ||
| brrt | if we have the exprcomp then it'll be easier to for reprs to jit ops by creating an expression tree | ||
| timotimo | <3 | ||
| jnthn | brrt: Indeed | ||
| brrt | i had not considered that before | 22:58 | |
| that solves something | |||
| timotimo | no, it solves EVERYTHING | ||
| er, sorry, carry on | |||
| brrt | :-D | ||
| i should sleep too | |||
| see you! | |||
| jnthn | brrt: Might be worth pondering the set of things you want to work on with JIT in the summer, and start getting a grant app together for summer. :) | ||
| But yes, sleep first. :) | 22:59 | ||
| brrt | yes, thanks :-) | ||
| timotimo | i'm glad he still answers to the Bart Signal whenever i'm in dire need of his help :) | 23:00 | |
| jnthn | :D | 23:01 | |
| hoelzro: (remove interactive member of MVMIOOps) you should get away with that at this point | |||