| hoelzro | jnthn: is there anything special I have to do to be able to remove it? when I try to build rakudo after removing it, I get a segfault =/ | 00:02 | |
| so I removed linenoise from MoarVM, but now when I try to use Linenoise.pm (which I just created), linenoise's read() returns EAGAIN; is there anything Moar may be doing that would be interfering with standard iput? | 01:27 | ||
| *input | |||
| dalek | arVM/no-moar-linenoise: e30ab31 | hoelzro++ | / (13 files): Remove linenoise/readline Now that NativeCall is included with Rakudo, instead of having linenoise/readline functionality be bundled in as a VM-level op, let's create a NativeCall-based module for this functionality |
01:52 | |
|
02:10
zakharyas joined
|
|||
| hoelzro | I'm guessing standard input is made non-blocking by MoarVM? | 02:17 | |
| that would explain what I'm seeing with linenoise | |||
|
04:40
vendethiel joined
05:21
vendethiel joined
06:26
Peter_R joined
06:32
pyrimidine joined
07:28
zakharyas joined
07:53
FROGGS joined
07:56
Ven joined
08:18
FROGGS joined
08:50
FROGGS joined
09:20
lizmat joined
09:24
kjs_ joined
09:25
Ven joined
10:30
vendethiel joined
10:34
Peter_R joined
11:19
donaldh joined
11:30
Ven joined
11:38
Ven joined
12:15
zakharyas joined
|
|||
| hoelzro | does MoarVM set STDIN to non-blocking by default? | 12:39 | |
| nwc10 | hoelzro: I fear that only jnthn really knows that, and he's $dayjob teaching on site | 12:44 | |
| hoelzro | I figured as much | 12:46 | |
| FROGGS | hoelzro: we set it to blocking by default in MVM_file_get_stdstream | 12:48 | |
| hoelzro | I see | ||
|
12:48
Ven_ joined
|
|||
| hoelzro | I'm just thinking about how that will work when using NativeCall with libraries that expect stdin to be in blocking mode | 12:49 | |
| nwc10 | presumably they would break in the same way as anyone else calling them from code using an event loop | 12:52 | |
| that's sort of "how do other VMs/thingies cope with this?" | 12:53 | ||
| hoelzro | nwc10: I'm not sure, but I'm thinking that Node.JS may be the only other environment that does this | 12:54 | |
| it's just surprising is all | |||
| took me a bit of head scratching before I figured out why linenoise was constantly returning 0 length strings =) | 12:55 | ||
| FROGGS | :o) | ||
|
12:56
Ven joined
13:03
Ven joined
|
|||
| timotimo | i'll continue work on devirtualizing repr ops now :) | 13:07 | |
| Ven | timotimo++ | 13:10 | |
|
13:27
brrt joined
|
|||
| brrt | \o | 13:27 | |
| (the Bart sign, i'm flattered :-D) | 13:28 | ||
| timotimo | :D | 13:29 | |
| wait 'til i show you your new Bart Mobile | |||
|
13:30
rurban joined
|
|||
| brrt | but yeah, timotimo++ for devirtualizing repr ops | 13:32 | |
| that's awesome work | |||
| timotimo | :) | 13:33 | |
| thank you | |||
| so brrt | 13:35 | ||
| should all _n related ops have their own piece of emit code? | 13:36 | ||
| brrt | :-) | ||
| what are the n related ops? | |||
| timotimo | because of VAL_F and RV_F? | ||
| brrt | oh | ||
| nwc10 | I can't answer that directly, but there do seem to have been a series of easy to make, hard to spot systematic errors with floating point calling conventions | 13:37 | |
| timotimo | because we had that differently a whole bunch of time | ||
| brrt | ehm.. well, yeah, unless you use checks afterwards to modify them, or conditionals like (op == foo_n ? RV_N : RV_I) | ||
| timotimo | fair enough | ||
| but it'll always be needed, eh? | |||
| brrt | but yes, that's true | ||
| nwc10 | so anything that makes it harder to screw up, without making it harder to do thing generally, is a good idea | ||
| brrt | floating points are basically always passed either on stack or in FPR, never in GPR | 13:38 | |
| timotimo | so much cleanup to do ... | ||
| brrt | (on x86 and x86-64) | ||
| the only thing that is really ambiguous as far as i know is passing structs | |||
| and returning them | |||
| timotimo | this damned huge switch statement ... so hard to have a good overview | 13:56 | |
| brrt | very true | 13:58 | |
| you can.... i'm not against making large tables | 13:59 | ||
| in a header file for example | |||
| and read from there | |||
| timotimo | a header table? | 14:00 | |
| dalek | arVM/jit_devirtualize_reprops: e04e158 | timotimo++ | src/jit/graph.c: shuffle all ops around, make sure we have all repr ops and only repr ops. at least in the consume_reprop function. |
14:28 | |
| nwc10 | timotimo: that commit isn't complete (or otherwise not working) | 14:30 | |
| src/jit/graph.c:808:65: error: āMVM_JIT_RV_STRā undeclared (first use in this function) | |||
| brrt | strs and objs are pointers | ||
| so you should use MVM_JIT_RV_PTR (iirc) | 14:31 | ||
| the rationale for using a ptr return type is that they will have different sizes per arch unlike the integer types which are defined as 64 bits | 14:34 | ||
| timotimo | nwc10: i just noticed, too, thanks :) | 14:37 | |
| i'll have a fixup commit coming soon | |||
| dalek | arVM/jit_devirtualize_reprops: 878b0b1 | timotimo++ | src/jit/graph.c: RV_STR doesn't exist ... |
14:39 | |
| arVM/jit_devirtualize_reprops: 588810e | timotimo++ | src/jit/graph.c: devirtualize bindkey and bindpos ops |
|||
| brrt | oh, timotimo, btw, if you want to use a type definition in dynasm you have to enter a .type declaration | 14:41 | |
| timotimo | i don't understand why, but i understand that i'll have to do it from now on :) | 14:42 | |
| which op to devirtualize next? | |||
| damn, i'm having trouble deciding | 14:47 | ||
| dalek | arVM/jit_devirtualize_reprops: 487eb38 | timotimo++ | src/jit/graph.c: since _o and _s can be handled the same way, we do that. |
14:49 | |
| brrt | it's so that dynasm can recognise your reference as a type declaration | ||
| rather than a variable | |||
| dynasm doesn't parse C :-) | 14:50 | ||
| timotimo | oh, i see | 14:58 | |
| srsly, what op do i do next? | 15:00 | ||
| brrt | hint; add a MVM_jit_log(tc, "emit repr op %s", op->name), and then count the number of these lines | 15:02 | |
| timotimo | my code is borked, though | 15:06 | |
| dalek | arVM/jit_devirtualize_reprops: f08bfad | timotimo++ | src/jit/graph.c: actually hook up bindkey/pos ops, now this is broken :( |
15:08 | |
|
15:09
FROGGS joined
|
|||
| dalek | arVM/jit_devirtualize_reprops: ff82dee | timotimo++ | src/jit/graph.c: more wrongness fixes |
15:14 | |
| timotimo | why is it segfaulting now :( | 15:16 | |
| brrt | lets see | 15:17 | |
| timotimo | i'll go grocery shopping in the mean time | 15:20 | |
| thanks for looking! :) | |||
| nwc10 | timotimo: valgrind won't say more than this: | 15:37 | |
| ==21675== Invalid read of size 8 | |||
| ==21675== at 0x4F656A3: MVM_interp_run (interp.c:2763) | |||
| ==21675== by 0x503A320: MVM_vm_run_file (moar.c:210) | |||
| ==21675== by 0x401250: main (main.c:189) | |||
| so straight out NULL pointer dereference. No prior undefined behaviour | |||
| timotimo | oh wait | 15:45 | |
| it seems like i've been taking the value of the register | 15:46 | ||
| dalek | arVM/jit_devirtualize_reprops: bcb2317 | timotimo++ | src/jit/graph.c: fix thinko about register addr vs value |
15:52 | |
| timotimo | should i wait until post release to merge jit_devirtualize_reprops into master? | 15:55 | |
| brrt: how do you feel about allowing %d or something like that in log filenames/env vars that'd be filled in with the pid? | 16:01 | ||
| FROGGS | timotimo: yes, please wait | 16:03 | |
| brrt | oh, i was just about to point you to the reg_addr thinko :-) | ||
| timotimo | thanks :) | 16:04 | |
| brrt | i'm ok with that, or any other filename | ||
| i had imagined the jit dump files were called MVMJitCode-$filename.bin | |||
| but that was not the case yet | 16:05 | ||
| timotimo | they do have the function name in them, though | ||
| brrt | by the way, bindpos always passed the register directly, never the floating-point-containing-the-register | 16:06 | |
| it's an approximation. it is quite difficult to correlate an mvmframe to a filename or function | |||
| timotimo | yeah | ||
| oh, so the _F is still wrong? | 16:07 | ||
| brrt | yes | ||
| you don't need it in this case | |||
| timotimo | 1689 emit repr op elems | 16:08 | |
| 291 emit repr op getattr_s | |||
| these are top 1 and 2 | |||
| for compiling the setting | |||
| brrt | when in doubt check src/core/interp.c ;-) | ||
| timotimo | 4041 repr op push_i couldn't be devirtualized: type unknown | ||
| 1827 repr op atkey_o couldn't be devirtualized: type unknown | |||
| 941 repr op getattr_i couldn't be devirtualized: type unknown | |||
| these are interesting; though getattr with a known type will often be turned into a sp_p6o... op earlier on | 16:09 | ||
| brrt | i'm going to have dinner | 16:17 | |
| see you :-) | |||
| dalek | arVM/jit_devirtualize_reprops: 4b38c6c | brrt++ | src/jit/graph.c: bindpos and bindkey take an MVMRegister argument Thus these are always passed as a regular value, never as a float. |
16:21 | |
| timotimo | 2114 emitted an atpos_* or atkey_* via jgb_consume_reprop | 16:31 | |
| 1689 emitted a elems via jgb_consume_reprop | |||
| 201 emitted a bindpos_* or bindkey_* via jgb_consume_reprop | |||
| dalek | arVM/jit_devirtualize_reprops: 9d61133 | timotimo++ | src/jit/graph.c: implement MVM_op_elems for devirtualization |
||
| timotimo | seems to give no measurable difference on my int @a; my int $i; while $i < 10000000 { @a[$i] = 1; $i = $i + 1 } | 16:44 | |
| hm | 16:48 | ||
| maybe it does | |||
| it's quite a noisy "benchmark" | |||
| ghhhhhhhhhhhhhhhrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrm | 16:49 | ||
| (that was cat) | |||
| for that benchmark, we have a few ops we could devirtualize (if they were implemented): | 16:53 | ||
| 44 emit repr op getattr_o | |||
| 22 emit repr op push_o | |||
| the rest is <10 | |||
| (however, sadly that doesn't show usage distribution) | 16:54 | ||
| well, the frame that the code spends ~100% of time in already has all potential ops devirtualized | 16:55 | ||
| so that's something | |||
| and now i'll take the rest of the evening off (but not most of the night) | 16:56 | ||
| zpƤmmmmbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbnmmmmmmmmmmmmmmmmmmmmmmmmm000000000000000000000000000000 | 16:57 | ||
| jnthn wonders if the cat will take the evening off too :P | 16:58 | ||
| timotimo | (also, i let the cat roam free all over my laptop keyboard) | ||
| he looks pretty pleased with himself, that cat | |||
| ~o/ | 16:59 | ||
| (hair blowing in the wind) | |||
|
17:03
donaldh joined
17:10
FROGGS joined
17:14
kjs_ joined
18:39
kjs_ joined
18:52
vendethiel joined
|
|||
| timotimo | can someone perhaps run benchmarks with and without that branch? maybe not the whole p6bench suite | 19:01 | |
| nwc10 can't, but ASAN didn't barf on it | |||
|
19:53
mj41 joined
20:34
colomon joined
|
|||
| nwc10 | jnthn: if you want MOAR news, I think it's reasonable to suggest that "we're building on big endian again (tested on PPC32 and PPC64)" | 21:00 | |
| dalek | arVM: 194de10 | jnthn++ | docs/ChangeLog: ChangeLog for 2015.03. |
21:04 | |
| jnthn | nwc10: Yes, that's worth a "headline" mention I guess :) | ||
| dalek | arVM: 7623778 | jnthn++ | VERSION: Bump VERSION. |
21:08 | |
| arVM: 327fc12 | jnthn++ | ports/macports/Portfile: Bump version in Portfile. |
|||
| arVM/cpp2: 75e5909 | FROGGS++ | Configure.pl: use CPPFLAGS if set, baby-gnu++ |
21:14 | ||
| MoarVM/cpp2: 309561c | (Daniel Dehennin)++ | Configure.pl: | |||
| MoarVM/cpp2: Use CPPFLAGS is @cflags instead of @ldflags | |||
|
21:14
dalek joined
21:15
dalek joined
21:20
kjs_ joined
|
|||
| nebuchadnezzar | arf, just see my typo :-/ | 21:47 | |
| FROGGS | :o) | 21:49 | |
|
21:49
colomon joined
|
|||
| japhb | OOC, does bumping version in the Portfile get picked up automatically, or does someone end up having to ping the macports team? | 21:51 | |
| jnthn | www.moarvm.org/releases/MoarVM-2015.03.tar.gz | 21:54 | |
| japhb: According to the release guide, I now have to make [Coke]++ ping the macports team. | 21:55 | ||
| japhb | Heh | ||
| FROGGS | jnthn: builds fine on linux | 21:57 | |
| jnthn | yay | 21:58 | |
| jnthn checked that too, but is glad to have a second conf :) | 21:59 | ||
| FROGGS | :o) | ||
| nebuchadnezzar | ok, I'll update the debian packaging soon | 22:11 | |
| dalek | href="https://moarvm.org:">moarvm.org: 5696465 | jnthn++ | / (3 files): Update website for 2015.03 release. |
22:16 | |
| timotimo | .o( but the new data isn't on the website yet? ) | 23:50 | |