ilmari | diakopter: I noticed some places it uses fields named _offset as the size for memcpy | 00:02 | |
I hope that's just unfortunate naming | |||
oops, the gist web ui is possibly not best suited for multimegabyte files | 00:11 | ||
anyway: gist.github.com/ilmari/3a97aa414eafc95d4553 | |||
.raw are the raw ones, .uniq are deduplicated by source location | |||
I've pushed a new ubsan branch with the serializer fixes | 00:14 | ||
src/6model/reprs/MVMStaticFrame.c has one actually detected and a few more potential ones too | 00:15 | ||
but now I have to go to bed | |||
night, * | |||
dalek | arVM: 9fd64bd | hoelzro++ | src/io/asyncsocketudp.c: Handle UDP recv with size=0 nread=0 is a valid result from recv; libuv uses it to signal empty datagrams or if a buffer is no longer in use |
02:05 | |
02:25
FROGGS_ joined
06:14
TimToady joined,
ShimmerFairy joined
07:46
cognominal joined
07:54
FROGGS joined
09:01
FROGGS joined
09:12
zakharyas joined
09:16
brrt joined
|
|||
brrt | good * #moarvm | 09:16 | |
nwc10 | good *, brrt | 09:19 | |
brrt | ohhai nwc10 | 09:58 | |
jnthn | morning o/ | 10:20 | |
brrt | morning jnthn | 10:21 | |
nwc10 | correct \o | ||
jnthn | Wow, backlog here today as well as #perl6... | ||
timotimo | good * | 10:27 | |
10:40
Peter_R joined
10:44
rurban_ joined
|
|||
ilmari | jnthn: gcc 5.2's -fsanitize=undefined (ubsan) is complaining a lot about misaligned accesses in moarvm | 10:46 | |
jnthn | ilmari: We do platform probes on that stuff | 10:48 | |
nwc10 | ilmari: I think that there's a bunch of #ifdef's or similar set up via the code called by Configure.pl based on the CPU type for "what does the CPU get away with" | ||
jnthn | Look for MVM_CAN_UNALIGNED_ | ||
nwc10 | so, I assume, that if one undefines all of those, it's possible to get a build which doesn't assume anything naughty | ||
jnthn | Should be, yeah | ||
nwc10 | and everything that remains is (hopefully) real, and not noise | ||
jnthn | Maybe if configuring a build for use with ubsan, we should set those flags. | 10:49 | |
Well, set that we *can't* do unaligned | |||
And then we will indeed catch the useful things | |||
ilmari | those defines don't cover 16bit accesses, which ubsan also complains about | 10:50 | |
nwc10 | do we have a lot of locations with 16 bit accesses? | 10:51 | |
ilmari | src/core/interp.c:1015:37: runtime error: load of misaligned address 0xdeadbeef for type 'MVMuint16', which requires 2 byte alignment | ||
nwc10 | is it viable to replace all the locations with a clean inline function, which hides the #ifdef mess for the "direct access" vs "memcpy" ? | 10:52 | |
ilmari | #define GET_REG(pc, idx) reg_base[*((MVMuint16 *)(pc + idx))] | ||
jnthn is a bit surprised we would be doing any unaligned reads in the *bytecode* | 10:53 | ||
That's meant to be 2-byte aligned everywhere | |||
nwc10 | oh, interesting. | ||
I'm slow here. | |||
jnthn | So something feels off about 2-byte issues in bytecode/validation | ||
ilmari | the validator is allocated on the stack as Validator val[1] in MVM_validate_static_frame | 11:02 | |
dalek | arVM/sized-native-fixes: 7227678 | jnthn++ | / (6 files): Ops to introspect type bits/unsignedness. |
11:04 | |
ilmari | why is that an array instead of just a scalar? | ||
jnthn has no idea | 11:05 | ||
ilmari | not that changing it changed anything about the errors | 11:07 | |
it was added by Gerhard R in 933b8105daf132e1c3256c3cb98556fc731e6133 | 11:13 | ||
timotimo | it's been a long time since i last saw gerd here :( | 11:14 | |
i mean ... not_gerd | |||
if he could see us now, would he be proud? | |||
ilmari | hang on. Validator.cur_op is an MVMuint8*, but is being dereferenced as an MVMuint16* | 11:20 | |
brrt | aye, that makes sense | 11:26 | |
a MVM op is 16 bits wide | 11:27 | ||
timotimo | perhaps it's just the offset is in bytes for some reason? | ||
brrt | but the minimum size of any argument is 2 bytes, iirc, so i'd be surprised if there was some way in which we'd get an uneven offset from the start | 11:28 | |
so either the start is not 16-bit aligned | |||
or i'm wrong in my assumption | |||
timotimo | it kind of sounds like we have a fix on our hands | 11:29 | |
jnthn | At a guess, the start is not aligned | 11:30 | |
brrt | lunch & | 11:31 | |
ilmari adds some validation of that | 11:35 | ||
*boom* | 11:36 | ||
how can I get a stacktrace from the validation failure? | |||
nwc10 | run under gdb and breakpoint on the error reporter? | 11:37 | |
I forget how - google usually knows | |||
ilmari | or just gdb and run with --crash | ||
timotimo | then you can "print MVM_dump_backtrace(tc)" | ||
ilmari | which aborts on exceptions | ||
timotimo | um ... huh? Too many positionals passed; expected 3 arguments but got 4 | 11:50 | |
at gen/moar/stage1/QAST.nqp:1852 (gen/moar/stage1/QAST.moarvm::0) | |||
oh! | 11:51 | ||
local changes | |||
11:53
virtualsue joined
11:59
virtualsue joined
|
|||
ilmari | argh, pahole doesn't show unnamed structs, e.g. typedef struct {} Foo; | 12:01 | |
nwc10 | ilmari: give up and have lunch? :-) | ||
but, yes, argh | 12:02 | ||
and also | |||
ilmari++ # using pahole | |||
jnthn | 00002 nan loc_0_num | 12:05 | |
00003 trunc_n32 loc_1_num32, loc_0_num | |||
00004 bindlex lex_Frame_1_$n_num32, loc_1_num32 | |||
Progress... | |||
stmuk | nan always makes me think of balti :/ | ||
jnthn | mmmm | ||
jnthn already finished eating all the jalfrezi he made... | 12:07 | ||
Guess it will be something simpler for lunch today | |||
Darn, now the code-gen is telling me off for various places I cheated in the past... | 12:09 | ||
timotimo | hah, the past always catches up to you, doesn't it? | 12:12 | |
dalek | arVM/sized-native-fixes: 4ee8436 | jnthn++ | / (6 files): Sized local/lexical reference taking ops. |
12:17 | |
jnthn | perl6-m -e "my num32 $n; say $n;" | 12:35 | |
NaN | |||
phew :) | 12:36 | ||
ilmari | it looks like the bytecode segment in the _file_ is misaligned | 12:40 | |
jnthn | Ouch | ||
ilmari | in ../nqp/src/vm/moar/stage0/nqp.moarvmq | 12:41 | |
bytecode_seg = 0x7ffff7f3b099 | |||
jnthn | lunch, bbiab | 12:44 | |
ilmari: If you want to look into fixing that, then src/mast/compiler.c is the place, btw | |||
ilmari | jnthn: yeah, just found it | ||
jnthn | \o/ | ||
ilmari | aha! vm->serialized_size = 301 | 13:04 | |
nwc10 | have you earned lunch yet? | 13:08 | |
diakopter | I'll say | 13:12 | |
13:14
virtualsue joined
|
|||
ilmari is confused by several places that increment foo_size by bar->baz_offset | 13:20 | ||
specifically: output_size += writer->stables_data_offset, which is 119, thus misaligning everything after that | 13:24 | ||
nwc10 | git blame might reveal the culprit, and if it's a PEBKAC level bug | 13:25 | |
ilmari | that bit has been unchanged since 2013 | 13:27 | |
github.com/moarvm/moarvm/commit/a4...e9efd2R663 | 13:28 | ||
ilmari can't see it being initialised on the writer _anywhere_ | 13:33 | ||
jnthn | ilmari: It starts off zeroed because MVMSerializationWriter is MVM_calloc'd | 13:43 | |
And is incremented through a level of indirection | |||
writer->cur_write_offset = &(writer->stables_data_offset); | |||
ilmari | yeah, I _just_ found that | 13:44 | |
jnthn | Through things like that. | ||
ilmari gives up single-stepping and sets a watchpoint | |||
diakopter | simple answer is to ensure alignment of those offsets whenever they're finalized | 13:45 | |
(doesn't address whether they shouldn't've become misaligned in the first palace though) | 13:46 | ||
ilmari | ++*(writer->cur_write_offset); | 13:47 | |
in MVM_serialization_write_ref | |||
so if there's an odd number of refs, it goes wrong | 13:49 | ||
diakopter | but what's the unit of the pointer? | 13:50 | |
ilmari | MVMuint32 *cur_write_offset; | 13:52 | |
diakopter | k | ||
(but wouldn't that still keep it aligned on 4 bytes?) | 13:54 | ||
ilmari | no, the offset is in bytes | ||
stored in an MVMuint32 | |||
diakopter | gotcha | ||
ilmari | the easiest fix for the odd alignment is to make the discriminator an MVMuint16 | 13:55 | |
diakopter | so then ++*(writer->cur_write_offset); isn't incrementing enough? | ||
oh, it's only one byte | |||
is this the only place it uses bytes? | 13:56 | ||
jnthn | ilmari: It was deliberately made smaller by nwc10 a while back to have a smaller serialization blob | 13:57 | |
If we're talking about the same discriminator, anyway | |||
ilmari | there are three places that increment cur_write_offset by one | 13:58 | |
jnthn | var_int can increment it by and odd number also, I'd expect | ||
ilmari | instead of fixing it here, we could make sure to align the sections that are going to be directly mmapped | 13:59 | |
diakopter | I'd say just bump the offset if it's odd before each time it's used in a calculation | ||
since it's used in such few places | 14:00 | ||
jnthn | ilmari: Yeah, padding the sections is probably the way to go | ||
diakopter | (is that the same as what I said?) | 14:01 | |
surely it will still warn for things it reads that aren't directly mmapped | 14:08 | ||
ilmari | I think serialization.c:concatenate_outputs just needs to align each table appropriately | 14:14 | |
because the header has the offset and size of each section | |||
diakopter | I thought there were some internal relative references, but maybe not | 14:15 | |
for pointer fixups | 14:16 | ||
or maybe that was in some imaginary branch I was working on <evil grin> | |||
ilmari | as far as I can tell (from a skim), each section is serialized independently | 14:18 | |
ilmari TIAS | |||
worst case, it'll segfault horribly | |||
do we have an align macro? | 14:19 | ||
diakopter | worst case, it will format your disk and infect your bios | ||
ilmari | that rounds a value up to the nearest multiple of some value | ||
nwc10 | there was already some "round up for alignment" code for some sections | 14:20 | |
ilmari | no mention of round or align in serialization.c | 14:21 | |
diakopter | jnthn: that last nqp commit might just speed some things up :) | 14:22 | |
jnthn: (at least I recall thinking, "I know this will be terrifically slow" when writing that line) | |||
jnthn: (the line that your commit replaced) | |||
ilmari | nwc10: there's some stuff in compiler.c, but not in in serialization.c | ||
nwc10 | ilmari: the ones I I'm thinkng of were commented "Add alignment" in src/core/bytecode.c | ||
ilmari | nwc10: the bytcode is fine, it's the VM's other serialization stuff | 14:23 | |
if the result of concatenate_outputs ends up with an odd length, everything after that in the bytecode file ends up misaligned | 14:24 | ||
so arguably compiler.c sholud safeguard against that too | 14:25 | ||
nwc10 | ah OK | ||
diakopter | gist.github.com/ilmari/3a97aa414eafc95d4553 # I'm curious to see how much this gets shortened after this fix | ||
dalek | arVM/sized-native-fixes: 6864de7 | jnthn++ | src/core/interp.c: Fill out int extend/truncate ops. |
14:31 | |
timotimo | diakopter: what nqp commit were you refering to? i don't see anything appropriate in the commit log that could speed anything up :| | 14:43 | |
diakopter | the commit immediately before my comment? in his branch? | 14:44 | |
jnthn | Any speedups are welcome, but this is mostly about correctness. :) | 14:45 | |
Our code-gen for sized types has been utterly bogus | |||
diakopter | I was thinking of github.com/perl6/nqp/commit/2884c8a651 # but now that I think about it again, mebbe not | ||
timotimo | it doesn't remove the unbox or box, it even adds more code to that | 14:46 | |
diakopter | well, the calls to coerce (which creates a runtime coercion) could be reduced | 14:47 | |
timotimo | because of the removal of $got := $MVM_reg_void; ? | 14:51 | |
ilmari | eek | ||
[75516.418439] Killed process 18537 (moar) total-vm:8560752kB, anon-rss:7249592kB, file-rss:0kB | |||
diakopter | \o/ | 14:52 | |
ilmari | guess how much memory my laptop has | ||
diakopter | (at least it killed it) | ||
41 PB | 14:53 | ||
ilmari | after a several-minute swap storm | ||
8GB | |||
timotimo | huh, what made it balloon up like that? | ||
ilmari | and 2GB swap | ||
my attempt at aligning the sections in serialization.c:concatenate_outputs | 14:54 | ||
timotimo | oops | ||
diakopter | heh maybe you made it align to 32MB instead | ||
timotimo | maybe something's incrementing and hoping to hit a limit exactly, but goes beyond it? | ||
ilmari | oh, that might be the fault of --debug | 15:02 | |
timotimo | huh? i always build with --debug=3 --optimize=3 | 15:03 | |
ilmari | is it normal for moar to grow to 2GB when building stage1? | 15:04 | |
diakopter | last I saw it, resident set was max 1 GB, even building rakudo | 15:05 | |
ilmari tries with a completely unmodified master moarvm and nqp | 15:16 | ||
--ubsan --debug=3 --optimize=3 | |||
it hit a 4GB ulimit compiling gen/moar/stage1/NQPHLL.moarvm | 15:17 | ||
diakopter | well I suppose it could be 100,000 UBsan guards? | 15:18 | |
ilmari | but it was working earlier, damnit | 15:19 | |
ilmari bumps the ulimit to 6G | |||
diakopter | gist your diff? :) | 15:20 | |
15:21
pyrimidine joined
|
|||
ilmari | compiling gen/moar/stage1/nqpmo.nqp took 2G | 15:21 | |
jnthn | o.O | 15:22 | |
ilmari | that's with clean master | ||
diakopter | how sure are you it's clean | ||
ilmari | I just did git stash; git clean -xfd | ||
and installed into a fresh prefix | 15:23 | ||
diakopter | but for which repo | ||
ilmari | both moar and nqp | ||
QRegex took about 2.731g | |||
let's see if 6 is enough for NQPHLL | |||
diakopter | but if nqp doesn't think it needs to reconfigure moar, it won't | 15:24 | |
ilmari | I did git clean in nqp too | ||
[Coke] | "fresh prefix" should handle that. | ||
since there is then no moar for it to find. | |||
ilmari | juust about managed to sneak in under 6G for NQPHLL | ||
diakopter | [Coke]: I've seen it use a moar from outside the install | 15:26 | |
outside the install requestedsuch as, a previous install or path | |||
ilmari | bah, failed at QAST.nqp | 15:27 | |
ilmari tries without ubsan | |||
and now I haven't seen it go over 100m, with a 1s update interval in top | 15:32 | ||
ubsan-- # memory hog | |||
timotimo | :( | ||
diakopter | ilmari: I bet if you do --no-jit it'll be a lot less | 15:33 | |
(I think it instruments all executable memory?) | |||
er, lol maybe not. | 15:34 | ||
timotimo | wouldn't that be a bit hard to make work? | ||
diakopter gets more coffee | 15:35 | ||
[Coke] | diakopter: have you seen that recently? | 15:46 | |
diakopter | not sure | ||
not that I remember clearly, no | |||
we definitely sacrifice some dependency clarity and simplicity with the convenience of the recursively configuring thingie. | 15:47 | ||
[Coke] | ok. hopefully no longer an issue, but I dunno. | ||
diakopter | I suppose theoretically there's a way to rewrite history to merge two git repos XD (moar into nqp) | 15:53 | |
hoelzro | you could probably do it with git-filter-branch | 15:55 | |
diakopter | though I guess if anything would be more logically tied from a user perspective, it's rakudo & nqp | ||
jnthn | But we won't be. | ||
hoelzro | not saying it's a good idea, but... | ||
;) | |||
diakopter | jnthn: what about making a version of configure that can make a combined Makefile | 15:57 | |
jnthn | Um...it'd be possible, not sure why we would? | 15:58 | |
diakopter | well it could at least rule out mysterious dependency issues if they keep cropping up | 15:59 | |
dalek | arVM: ee0afc2 | jnthn++ | src/core/validation.c: Validate lexical types properly. This means that we catch invalid code-gen for storing wrongly sized values into lexicals, and vice versa. |
16:01 | |
arVM: d23cbe2 | jnthn++ | src/core/interp.c: Implement truncate/extend ops for num32. |
|||
arVM: d6544f5 | jnthn++ | src/core/interp.c: Fix cast; JimmyZ++. |
|||
diakopter | I'm guessing that's a merge | 16:02 | |
dalek-- | |||
jnthn | yes | 16:03 | |
ilmari | is it normal for moarvm file sizes to randomly vary? | 16:05 | |
diakopter | giggle, :p | 16:06 | |
ilmari | I was trying to measure alignment overhead, and found that aligning to 4 bytes made the stage0 files 564 bytes smaller overall | ||
diakopter | *boggle* | ||
ilmari | and now I rebuilt it twice with 8 byte alignment, and it varied by 16 bytes betwen those runs | ||
lizmat | ilmari: some hash bucket size / linked list issue ? | 16:07 | |
ilmari | might be | ||
anyway, the overhead of even 8-byte alignment is negligible | |||
lizmat | I mean, on Perl 5 2 successive runs don't generate the same hashes either, do they ? | ||
ilmari | no | ||
diakopter | but hashes aren't serialized that way | ||
maybe GC needs to flush the nurseries before serialization | 16:09 | ||
dunno | |||
jnthn | serialization is over a live object graph, not just a memory dump | ||
So shouldn't be an issue. | |||
ilmari | so, now, with hopefully properly-aligned bytecode files, let's see if ubsan still complains | 16:10 | |
16:10
dalek joined
|
|||
ilmari | being home sick makes me miss my work workstation | 16:13 | |
my laptop is only a dual 2GHz Core i7, at work I have a quad 3.2GHz Xeon | 16:14 | ||
3rdparty/sha1/libsha1.a takes ages to link with ubsan | |||
no, it must be something else, that was just the last thing that _started_ linking | 16:15 | ||
ubsan.configure.uniq: 4 insertions(+), 658 deletions(-) | 16:21 | ||
ubsan.make.uniq: 5 insertions(+), 817 deletions(-) | 16:26 | ||
ubsan.test.uniq: insertions(+), 832 deletions(-) | 16:30 | ||
16:32
domidumont joined
|
|||
timotimo | is that 0 insertions? | 16:33 | |
ilmari | now, that was 6 | 16:34 | |
now building without MVM_CAN_UNALIGNED_* | |||
ubsan.configure.uniq: 447 deletions(-) | 16:39 | ||
40 left | |||
timotimo | wow, that's nothing! | ||
almost | |||
ilmari | gist.githubusercontent.com/ilmari/...igure.uniq | 16:41 | |
16:42
virtualsue joined
|
|||
ilmari | the remaining ones are mostly doing GET_I32() on an op argument | 16:42 | |
which may or may not be alined, since ops are variable number of 16bit long | 16:43 | ||
s/number/multiple/ | |||
ubsan.make.uniq down to 52 | 16:44 | ||
gist.githubusercontent.com/ilmari/....make.uniq | 16:45 | ||
timotimo | do we need a bytecode munging phase that blows it up so that everything we may want to read in isolation is aligned to 32bit? | ||
16:56
domidumont joined
|
|||
ilmari | any 32bit literal operand needs to be aligned | 17:00 | |
jnthn | Not really | 17:01 | |
Or at least, not if you have something that can safely read it anyway | |||
Which afaik we do, and that's what the alignment probe is seeing if we need | |||
ilmari | jnthn: even with the alignment probe neutered, there's lots of unaligne reads | 17:02 | |
jnthn | So, we should probably fix where they're happening | 17:03 | |
Not bloat the bytecode | |||
ilmari | you can move the complexity into the GET_*32 macros instead | ||
jnthn | Yeah, I thought they were paying attention to the alignment probe's results | 17:04 | |
ilmari | but then you need to copy the value | ||
the code only actually respects MVM_CAN_UNALIGNED_(INT|NUM)64 | 17:06 | ||
jnthn | Copying the value is OK; on platforms where we really want to invest in performance we'll build JIT support, and then the hot paths won't hit such copies. | 17:09 | |
ilmari | to support archs that can't do unaligned 32bit reads we'd need eqivalents of MVM_BC_get_[IN]64 | 17:10 | |
maybe ubsan should imply no MVM_CAN_UNALIGNED_*, to reduce the noise | 17:11 | ||
jnthn | +1 to both of those | ||
ilmari | jnthn: you forgot to rebase sized-native-fixes before merging | 17:15 | |
so it overlaps my memc(mp|py) branch | |||
that might be why dalek got conffused | |||
jnthn | I didn't forget to rebase, I just tend to use the merge workflow when I do things that knowingly have broken points along the way. | 17:16 | |
dalek doesn't really look at the topology at all, though | |||
So it's very easily confused. | 17:17 | ||
ilmari prefers rebase + merge --no-ff | |||
so you get linear history, but commits grouped by topic | |||
jnthn | That's a nice way to do it. | 17:18 | |
jnthn will keep that in mind | |||
ilmari | gist.githubusercontent.com/ilmari/...n.all.uniq | 17:27 | |
that's all the distinct error locations when running nqp configure+make+make test | |||
on github.com/ilmari/MoarVM/commit/24...686e94d14a with MVM_CAN_UNALIGNED_* undefined | 17:29 | ||
the ALIGN macro should probably be centralised | |||
timotimo | everything includes every header anyway, so it can go into some headery place | 17:30 | |
it may want a more mvm-specific name, though | |||
ilmari | ALIGNOF is defined in moar.h, so sticking it next to that | ||
MVM_ALIGN_SECTION? | |||
jnthn | Seems reasonable | 17:31 | |
timotimo | yeah, sounds a bit better | ||
jnthn | Think it's dinner time :) | 17:32 | |
ilmari gets ready to order pizza | 17:55 | ||
timotimo | mhhh pizza | ||
diakopter | ilmari: that's.... dramatically smaller | 18:35 | |
(list of errors) | |||
ilmari | diakopter: yeah | ||
diakopter | ilmari++ | ||
diakopter guesses a speed improvement from alignment too | |||
I'm high on the wishful thinking today, apparently | 18:36 | ||
ilmari | depends on the CPU | ||
timotimo | that's *very* wishful thinking | ||
ilmari | I don't think there's any difference on x86 | ||
timotimo | especially in deserialization which is mostly sequentially read | ||
BBIAB | |||
diakopter | this one's interesting | 18:41 | |
src/core/interp.c:323:65: runtime error: signed integer overflow: 4611686018427387904 + 4611686018427387904 cannot be represented in type 'long int' | |||
seems like it couldn't be a pointer value... | |||
ilmari | bah, I've rebased since then, so the line numbers are all out of sync | 18:46 | |
timotimo | oh | ||
18:53
vendethiel- joined
|
|||
dalek | arVM: 2c0b70f | timotimo++ | src/spesh/dump.c: dump "known to be RW container" flag to speshlog, too. |
18:58 | |
arVM: 15de300 | (Dagfinn Ilmari Mannsåker)++ | build/probe.pm: Disable unaligned reads under UBSAN We only enable unaligned reads on CPUs we know can handle them, but UBSAN flags them up regardless. This reduces false positive noise (and memory consumption) when looking for actually-harmful undefined behaviour. |
19:02 | ||
arVM: 98d6c9c | (Matthew Wilson)++ | build/probe.pm: Merge pull request #313 from ilmari/ubsan-no-unalign Disable unaligned reads under UBSAN |
|||
arVM: 758c3fe | (Dagfinn Ilmari Mannsåker)++ | src/ (3 files): Align bytecode sections to 8 bytes The bytecode file gets mmapped, and pointers to larger types inside these sections dereferenced directly, so make sure each section starts on a maximum alignment boundary. The internal aligment in each section is the responsibility of that section's (de)serializers. This only increases the size of the NQP stage0 bytecode files by about 1735e2a | jnthn++ | src/core/interp.h: Add missing unsigned operand types. |
|||
diakopter | oh dalek | ||
19:19
FROGGS joined
|
|||
ilmari | it's the add_i | 19:19 | |
op | |||
timotimo | i kind of feel like we'd really want to have constants in nqp, so that we don't have to emit getlex for $MVM_reg_* numbers everywhere | 19:32 | |
but our compiler is already somewhat fast ... at least compared to parsing stuff | 19:33 | ||
19:34
vendethiel joined
|
|||
jnthn | timotimo: Yeah, adding constants in NQP is one of my todos for after xmas :) | 20:12 | |
[Coke] | jnthn++ btw | 20:16 | |
lizmat | TimToady: on the issue of security and visibility, maybe "use nqp" should be something like "use NOT-QUITE-PERL;' ? | 20:17 | |
jnthn | oh no, not more renaming | 20:18 | |
jnthn vetos just because he can :P | |||
timotimo | nqp gives you the most dangerous ops | 20:25 | |
but so does nativecall | |||
jnthn | Except...we use all those ops to implement Perl 6 features anyway :P | 20:26 | |
So you can get at 'em already. | |||
timotimo | hehe | 20:27 | |
20:36
brrt joined
|
|||
lizmat | well, we implemented 'use nqp' as a deprecation | 20:38 | |
perhaps we should remove the deprecation before Christmas | |||
and simply just disallow unless we have a 'use nqp' in scope | 20:39 | ||
jnthn | yes, should remove the deprecation | 20:43 | |
timotimo | aye | 20:44 | |
[Coke] | there should, IMO be no deprecations shipped this month | ||
lizmat | okidoki, will take care | 20:46 | |
[Coke] | lizmat: you feeling better? | 20:50 | |
lizmat | sorta, not really 100% yet... | 20:56 | |
jnthn | A proper flu :( | 20:57 | |
lizmat | started on the way back from LPW, so probably some fresh virus from people with young kids :-) | 20:58 | |
arVM: 6be6fe8 | jnthn++ | tools/update_ops.p6: Teach op build tool about uint*. |
|||
ilmari | should I send a pull request for rebootstrapping nqp with the alignment fixes in moar, or does someone fancy just doing it? | 21:29 | |
jnthn | I'd leave it a bit just in case we have another reason to, given every time we do it the git repo grows a bit | 21:30 | |
ilmari | okay | 21:31 | |
timotimo | a noticable bit, yeah | 21:33 | |
ilmari | is there a disassembler/pretty-printer for moarvm bytecode files? | 21:35 | |
timotimo | we have moar --dump foobar.moar | 21:36 | |
jnthn | moar --dump foo.moarvm | ||
timotimo | jnthn: you know how malloc has a function that spits out some information about its "health"? stats and such? | 21:41 | |
dalek | arVM: 71bea81 | jnthn++ | / (5 files): Clean up uint ops; implement uint trunc/extend. None of these are being used yet. |
21:42 | |
arVM: ecedaec | jnthn++ | src/ (15 files): Add box unsigned to REPR boxing API. |
|||
arVM: 989506b | jnthn++ | / (6 files): A handful of extra unsigned int related ops. |
|||
timotimo | i wonder if we'd want to have that output in the profiler, too. like, at every GC run we just put the info into the output and into the html | ||
ilmari writes a moardump script and sets it as textconv for *.moarvm files | |||
jnthn | timotimo: hmm | 21:45 | |
timotimo: Guess we'd have to probe for it | |||
timotimo | probably | ||
i even forgot what it's called, but i think hoelzro played around with that before | |||
dalek | arVM: 1ac6420 | jnthn++ | src/mast/compiler.c: Teach assembler about unsigneds. |
21:48 | |
ilmari | jnthn: did you mean to change the last parameter of MVM_repr_set_int to MVMuint64? | 21:49 | |
jnthn | No, and the compiler didn't whine at me about the inconsistent signatures either :/ | 21:50 | |
dalek | arVM: 9da6022 | jnthn++ | src/6model/reprconv.c: Undo accidental change; ilmari++. |
21:51 | |
ilmari | mine did | 21:52 | |
but I spotted it while browsing the recent diffs while it was building | 21:53 | ||
jnthn | :) | ||
ilmari | which compiler are you using? | 21:54 | |
jnthn | MSVC | ||
ilmari | gcc 5.2.1 on linux here | ||
src/6model/reprconv.c:553:6: error: conflicting types for ‘MVM_repr_set_int’ | |||
jnthn | Nice | 21:55 | |
Fixed now, anyways | |||
ilmari | yeah, I noticed | ||
jnthn | Think that'll be enough for me today. Got some code-gen changes underway also to take advantage of this stuff. | ||
ilmari | cool | ||
good night :) | 21:56 | ||
jnthn | 'night | ||
lizmat | good night, jnthn ! | ||
ilmari | I converted the ubsan output gist to a proper repo: github.com/ilmari/ubsan-moar | 21:57 | |
21:59
travis-ci joined
|
|||
travis-ci | MoarVM build failed. jnthn 'A handful of extra unsigned int related ops.' | 21:59 | |
travis-ci.org/MoarVM/MoarVM/builds/97549391 github.com/MoarVM/MoarVM/compare/6...9506be4674 | |||
21:59
travis-ci left
|
|||
ilmari | the time- and pid-based compilation unit IDs are not going to make the reproducible build lot (e.g. debian) happy | 22:14 | |
dalek | arVM: 875d761 | timotimo++ | src/moar.c: allow %d to mean pid in MVM_SPESH/JIT/DYNVAR_LOG |
22:15 | |
timotimo | yeah :< | ||
ilmari | the instruction streams aren't stable either | 22:17 | |
00002 getcode [-loc_9_obj, Frame_37-]{+loc_20_obj, Frame_39+} | |||
--word-diff, i.e. [- -] is removal, {+ +} is addition | |||
timotimo | ho-hum. something is being put into a hash? | 22:19 | |
flussence | argh, I had a perfectly working moarvm .ebuild and today it's complaining about wrong -std= mode in for() syntax... | 22:35 | |
...which is weird because my bash script to build perl6 works fine... | |||
flussence wonders if portage is being really dumb and using the gcc5.3 it just installed, even though I didn't set that as the default system gcc | 22:36 | ||
er, anyway, the error there suggests either the makefile or code does need a fix: | 22:42 | ||
«src/moar.c:28:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode» | |||
timotimo | damn, maybe i broke it. | 22:47 | |
it's probably me | |||
give me a second, flussence | |||
dalek | arVM: 1ea71d4 | timotimo++ | src/moar.c: pull declaraiton up front, use bigger vars |
22:48 | |
timotimo | flussence: try now -^ | ||
flussence | oh! the stuff I built by hand just uses --gen-moar and not master, of course I wouldn't have seen failures there... trying now | 22:50 | |
yep, all good now | 22:52 | ||
23:17
stmuk_ joined
23:45
rurban_ joined,
virtualsue joined
23:58
stmuk joined
|