00:46
Ven joined
01:06
colomon joined
01:10
tokuhiro_ joined
01:35
flussence joined,
ilmari joined
01:38
flaviusb joined
01:47
Ven joined
02:54
Ven joined
03:06
tokuhiro_ joined
04:00
Ven joined
05:03
Ven joined
05:43
japhb joined
05:49
japhb joined
06:04
Ven joined
|
|||
nwc10 | good *, #moarvm | 07:04 | |
07:11
ilmari_ joined
07:14
Hotkeys_ joined
07:16
domidumont joined
07:18
domidumont joined
07:19
domidumont joined
07:21
domidumont joined
07:22
brrt joined
|
|||
nwc10 | brrt: thanks for figuring out what needing tweaking to fix timotimo's JIT stuff. | 07:30 | |
brrt | yw :-) | ||
i had no idea that jit-on-mingw was so broken, by the way | 07:32 | ||
luckily mingw comes with gdb | |||
i can hardly imagine this to be anything but a configuration error of some kind | |||
there shouldn't really be ABI differences... | |||
07:47
FROGGS joined
08:05
zakharyas joined
|
|||
brrt | oh, i know how to solve the broken-expression problem | 08:32 | |
i need to revive a somewhat-old idea, the spesh iterator | 08:34 | ||
rather than demanding the expression tree builder always consumes a full basic block, it can simply consume a part, then return, then continue | 08:40 | ||
after the appropriate labelling is done | |||
09:14
Ven joined
|
|||
jnthn | moarning, #moarvm | 09:19 | |
brrt++ # JIT fixes | 09:20 | ||
brrt | moarning jnthn | 09:24 | |
oh, jnthn, i have a supsicion i want to run by you | 09:27 | ||
on x64-mingw, during setting compilation, we crash in an invalid longjmp | 09:28 | ||
how.. does that even happen? | |||
it doesn't happen in vs2013, at least | |||
jnthn | o.O | 09:29 | |
The only place we longjmp that I'm aware of is to the interpreter | |||
On exceptions | |||
brrt | hmm | ||
google has some answers it seems | |||
lists.llvm.org/pipermail/llvm-dev/2...84888.html | |||
jnthn | I could imagine mingw and vs2013 result in us using a different longjmp implementaiton | 09:30 | |
jnthn looks | |||
brrt | ok, we can do that... | 09:31 | |
msdn.microsoft.com/en-us/library/f...2147217396 is the article | |||
msdn.microsoft.com/en-us/library/w...85%29.aspx is the API call | 09:32 | ||
jnthn | But wait, it works under MSVC? | ||
brrt | oh, we can totally manage that | 09:33 | |
it hasn't failed yet | |||
jnthn | Oh. :-) | ||
So we're getting away with things? :) | 09:34 | ||
brrt | but at any rate, i think this is indeed a longjmp-implementation-difference | ||
yes | |||
09:35
cygx joined
|
|||
cygx | o/ | 09:35 | |
brrt | \o cygx | ||
we may have the reason for the JIT-on-mingw not working | |||
cygx | Mmingw apparently also provides a ms_longjmp function | ||
brrt | aha | ||
cygx | * MinGW | ||
brrt | and the difference is? | ||
cygx | no idea yet, I just saw it in their header - from the name I'd guess this exposes the MS libs implementation instead of their custom one | 09:36 | |
but that's just a guess, might be something totally different | 09:37 | ||
cygx goes googling | |||
brrt | hmmm | 09:38 | |
brrt has to go afk | |||
see you later | |||
cygx | ~~ | 09:39 | |
09:51
domidumont joined
|
|||
cygx | google has failed me, and if you try to call ms_longjmp, moarvm fails to link | 09:52 | |
so no idea what that function is supposed to do... | |||
10:13
domidumont joined
10:19
Ven joined
|
|||
cygx | brrt: cf gcc.gnu.org/ml/gcc/2011-10/msg00257.html | 10:25 | |
according to the follow-up, it's supposed to be _setjmp3, but youll have to link against msvcrt to get that symbol | |||
in my quick test, just doing a #define setjmp(BUF) _setjmpex((BUF), NULL) at the top of interp.c already works | 10:26 | ||
psch | github.com/MoarVM/MoarVM/pull/296 | 10:31 | |
nqp and Rakudo both test clear with that | |||
dalek | arVM: b370dd9 | peschwa++ | src/core/interp.c: Check if the *next* outer is null. Otherwise there's cases where we do go one too far and SEGV after the while. |
10:48 | |
arVM: 41d9376 | jnthn++ | src/core/interp.c: Merge pull request #296 from peschwa/master Check if the *next* outer is null. |
|||
11:21
Ven joined
|
|||
cygx | jnthn: brrt: putting gist.github.com/cygx/aae672dcb8eb8a5ed0c5 at a convenient location (interp.c, moar.h, a custom platform header...) makes the JIT on MinGW happy | 11:27 | |
JimmyZ | oh, would be nice to have a src/platform/setjmp.h then | 11:34 | |
:) | |||
jnthn | I'm tied up with a hairy args flattening refactor/bug fix for now, so if somebody else wants to take care of that, please do :) | 11:36 | |
cygx | jnthn: I'm guessing brrt will take a look at that later | 11:37 | |
there's no rush | |||
it has been broken for ages, I can wait another day or two ;) | |||
timotimo | take a long look, don't just jmp to conclusions | 11:39 | |
cygx | jnthn: when you have some time, could you also take a look at github.com/MoarVM/MoarVM/issues/295 to decide on an approach (assuming my analysis is correct)? | 11:44 | |
jnthn | cygx: There alreayd is a mechanism for "release this mutex on exception", which we use in the I/O code. | 11:49 | |
*already | 11:50 | ||
cygx | even better | ||
looks like MVM_tc_set_ex_release_mutex? | 11:52 | ||
that would be my idea about keeping a list of mutexes to be release, except that list is length 1 ;) | 11:53 | ||
jnthn | :) | 11:54 | |
Yeah, I figured it'll be easy to refactor to a list later if needed. | |||
But YAGNI | |||
cygx | github.com/MoarVM/MoarVM/pull/297 | 12:07 | |
dalek | arVM: f9611b4 | cygx++ | src/core/loadbytecode.c: release mutex in MVM_load_bytecode on exception |
12:16 | |
arVM: 7f1f840 | (Jimmy Zhuo)++ | src/core/loadbytecode.c: Merge pull request #297 from cygx/loadbc-mutex release mutex in MVM_load_bytecode on exception |
|||
timotimo | do you think we've ever deadlocked on this problem cygx just fixed? | 12:17 | |
jnthn | Not sure | ||
I think there was some report of a deadlock involving threads and require that may be related | |||
JimmyZ | as long as culri branch got merged ? :P | 12:19 | |
cygx | note that it would have only triggered if mapping the file fails, which doesn't happen all that often if you check for file existence beforehand during path resolution | 12:20 | |
timotimo | ah | ||
fair enough | |||
jnthn | Still work fixing :) | 12:21 | |
timotimo | agreed | ||
cygx | I stumbled upon it because nine wanted to know if it's safe to just try to nqp::loadbytecode and proceed if it fails | ||
12:24
Ven joined
|
|||
jnthn | lunch & | 12:31 | |
12:44
flaviusb joined
13:27
Ven joined
|
|||
jnthn | bah, of all the tests to regress... | 13:58 | |
sub foo(:$) { }; foo |{ '' => 42 } | |||
That's the only spectest my refactor has bust. What on earth... | |||
nwc10 | m: say 42.why | ||
camelia | rakudo-moar b18ada: OUTPUT«Method 'why' not found for invocant of class 'Int' in block <unit> at /tmp/kY6T9fkFWL:1» | ||
nwc10 | there's a special case on 42, isn't there? | 13:59 | |
jnthn | m: say 42.WHY | ||
camelia | rakudo-moar b18ada: OUTPUT«(Any)» | ||
JimmyZ | m: 42.WHAT | 14:06 | |
camelia | ( no output ) | ||
JimmyZ | m: say 42.WHAT | ||
camelia | rakudo-moar b18ada: OUTPUT«(Int)» | ||
nwc10 | m: say 17.WHAT | ||
camelia | rakudo-moar b18ada: OUTPUT«(Int)» | ||
dalek | arVM/callsite-memory-leak: d976477 | hoelzro++ | src/ (4 files): Restore "Track whether or not a capture owns its callsite" This reverts commit 9befd69353643bff3a529aa5bea8101cd574fa29. |
14:11 | |
arVM/callsite-memory-leak: 5c9262d | hoelzro++ | src/core/args.c: Just check arg_flags to know whether or not to get rid of them One, arg_flags should know best. Two, checking the callsite object is checking an object we don't own, and may be invalid by this point in the program. |
|||
MoarVM/callsite-memory-leak: 88d0067 | hoelzro++ | src/core/args. (2 files): | |||
MoarVM/callsite-memory-leak: HAve MVM_args_proc_to_callsite tell the caller if the a new owner is needed | |||
jnthn | Wow, it appears that test may have passed for entirely the wrong reason | ||
Or rather, I may have fixed a bug that exposed another | 14:12 | ||
moritz | two bugs that canceled out each other? | 14:13 | |
jnthn | Indeed | 14:15 | |
FROGGS | that's not whirlpool, that's waterbed style programming | 14:21 | |
jnthn | Phew, I think I might be done with the refactor that'll in turn let me fix a bug. | 14:42 | |
15:22
brrt joined
|
|||
brrt | cygx: that seems like a plausible thing to do | 15:24 | |
i.. think we may still have to call the register function thingy | |||
i'm not sure about that, at alll | 15:26 | ||
cygx | brrt: only if you want to support C++ exception handling | 15:27 | |
brrt | hmm | ||
we may want to do that, anyway | |||
seems like something where we probably are going to need it at some time | 15:28 | ||
cygx | brrt: note that MinGW doesn't necessarily use MSVC structured exceptions | 15:30 | |
brrt | my professional opinion (worth nothing since i'm not a professional) is that compiler-specific exception handling is a pretty stupid thing | 15:31 | |
15:35
tokuhiro_ joined
|
|||
timotimo | we're already courageous enough to re-implement name mangling for a bunch of compilers to get cpp class method invocation and such | 15:37 | |
so why not also somehow make exceptions work %) | |||
brrt | yeah, i kind of agree with that | 15:40 | |
timotimo | we'll stand out from the competition by being a bit more insane than they are | 15:43 | |
cygx | anyway, for now I'd be happy if someone stuck the code from my gist in an appropriate place | 15:44 | |
once you do generate proper unwind information, you can adjust the NULLs as appropriate | |||
brrt | yes, i'm thinking about that appropriate place :-) | ||
timotimo | i don't even know what gist we're talking about :S | 15:45 | |
cygx | timotimo: gist.github.com/cygx/aae672dcb8eb8a5ed0c5 | 15:46 | |
timotimo | ah, that! | ||
dalek | arVM/even-moar-jit: a6bb471 | brrt++ | / (6 files): Add spesh iterator and replace JitGraphBuilder Sometimes, although not always, we want the expresion tree builder to consume part of a basic block, rather than all of it; this happens for example when there is an OSR label in the middle of a BB. |
15:48 | |
brrt | lemmelook | ||
i think src/platform/setjmp.h is a good spot, yes | 15:49 | ||
15:54
kjs_ joined
|
|||
brrt is now testing | 15:57 | ||
hoelzro | good moarning #moarvm! | 15:58 | |
dalek | arVM: 79865be | jnthn++ | src/core/ (9 files): Refactor handling of named flattening args. They now count as part of the named arguments section of a callsite, and can appear between named args. This will allow us to take order into account when arguments are flattened in, then overridden with another value of the same name. |
15:59 | |
arVM: af3b12e | jnthn++ | src/core/args.c: Let later named args override earlier ones. Including those that are flattened in, though an NQP code-gen patch is needed to enable this to happen also. |
|||
brrt | good * hoelzro | 16:00 | |
hoelzro | o/ brrt | ||
brrt | cygx++ fix seems to work well | ||
cygx | brrt: only until you use NativeCall to call some C++ code that accepts a callback that throws an exception ;) | 16:02 | |
brrt | wel, that will happen someday | 16:03 | |
tests don't run very cleanly though | |||
cygx | brrt: yes, teh NativeCall tests (as well as one other) are known to fail | 16:04 | |
brrt | ok | ||
cygx | (at leat known to me and mr_ron, at the very least) | ||
brrt | i see why, no-such-file-or-directory issues | ||
i'm... not going to bother with that today | |||
dalek | arVM: dc266cb | brrt++ | / (3 files): Override setjmp to two-argument version on mingw64 This fixes a corrupt longjmp in JIT context on windows when using mingw. cygx++ for the fix. |
16:07 | |
brrt | *phew* | 16:08 | |
i wouldn't mind hearing it sooner next time :-) | |||
cygx | brrt++ | ||
brrt: hearing about the failure? | 16:12 | ||
brrt | yes :-) | 16:13 | |
cygx | well, I've been popping in every 1/4 year or so and mentioned that CORE.setting still does not compile on MinGW | ||
brrt | i don't like delivering broken things | ||
well, i'm sorry i've missed it :-) | |||
it's no offense meant, of course. just that i was surprised i hadn't known for so long | |||
brrt is pleasantly surprised with qemu-under-boxes | 16:16 | ||
hoelzro | if anyone has a moment, could someone sanity check github.com/MoarVM/MoarVM/commit/5c...ebfd8c5bd? especially jnthn and diakopter, since they have done a lot in that area of the code | 16:19 | |
jnthn | hoelzro: afaik, arg_flags is only set up if we flattened | 16:22 | |
hoelzro | that's what I'm hoping for | ||
I didn't know if that comment is out of date or not | |||
jnthn | It's possible in the past that we didn't NULL arg_flags | ||
And so you checked if we'd flattened to know if arg_flags was worth looking at or a junk pointer | |||
And that's why we did the extra check | 16:23 | ||
Now we certainly do NULL it, which seems less fragile | |||
hoelzro | ah ha | ||
so that should be safe now? | |||
jnthn | Yes | ||
dalek | arVM: 1278211 | brrt++ | build/auto.pm: Make MinGW dyncall compile workaround official Apparantly mingw sometimes thinks it has to compile dyncall as C++, which causes compile strictness errors. Overruling this with the C compiler fixes that. mr_ron++ for fix |
16:24 | |
hoelzro | \o/ | 16:25 | |
I'll fix that typo and merge post-work, then! | |||
JimmyZ | jnthn++ # hard arg flatten bug ! | 16:33 | |
jnthn | Yes, that was quite some effort... | ||
timotimo | that goes into the weekly! :) | 16:34 | |
jnthn | Particularly after getting up earlier than usual this morning to see $wife off on her travels. :) | ||
ilmari | jnthn, nwc10: github.com/MoarVM/MoarVM/pull/298 in case you didn't notice | 16:35 | |
jnthn | ilmari: I did, will look soon; thanks! | 16:36 | |
ilmari | fixes the encode replacement buffer overflow (except for utf16, which has no buffer resizing logic atm) | ||
jnthn: btw, those functions are a mess of MVMuint32, MVMuint64 and size_t for various string lengths | 16:37 | ||
16:39
Ven joined
|
|||
jnthn afk for a bit | 17:13 | ||
17:27
kjs_ joined
17:37
tokuhiro_ joined
17:41
Ven joined
18:06
muraiki joined
|
|||
muraiki | if I'm looking for the source for nqp.chmod, would it be this? github.com/perl6/nqp/blob/3f2ad11b....nqp#L1889 | 18:06 | |
timotimo | are you really interested in the parrot implementation? | 18:07 | |
muraiki | oh darn | ||
I am in the wrong place | |||
lol | |||
timotimo | if not, you'll have to look under the moarvm repository | ||
muraiki | I wanted the moarvm one :) | ||
timotimo | you can find "chmod" in src/core/interp.c to figure out what the implementation function is called | ||
likely something like src/io/file_ops.c, just a guess | |||
muraiki | ah, libuv handles it | 18:08 | |
timotimo | yeah, we use libuv for more than we should :P | 18:09 | |
muraiki | I'm trying to figure out how I got back the error "did not attempt chmod" | ||
timotimo | o_o | ||
muraiki | yeah, it's really bizarre. that string doesn't show up in rakudo or moarvm, so I'm trying to figure out where it came from | 18:10 | |
18:21
FROGGS joined
18:43
Ven joined
|
|||
jnthn | Odd, it's not in the libuv sources either, so far as I can tell | 18:43 | |
muraiki | unfortunately I only have that error as part of a log file from many days back, so I don't really know what conditions brought it about. but it did occur multiple times | 18:48 | |
jnthn | What OS? | 18:49 | |
muraiki | ah man I'm an idiot | ||
this is what happens when you go back to code many months after writing it... I created that error string | |||
jnthn | hah! :) | ||
muraiki | sorry for wasting your guys' time | ||
jnthn | np :) | 18:50 | |
nwc10 | jnthn: ASAN still tolarates you :-) | 18:52 | |
jnthn | :) | ||
Always a relief | 18:53 | ||
hoelzro | I was just thinking about what timotimo and I were talking about last week, trying to detect valgrind or ASAN and implying --full-cleanup if that's the case | 18:54 | |
that seems weird in retrospect, but I'm wondering if using --debug with Configure should imply --full-cleanup | 18:55 | ||
since chances are if you're using valgrind or ASAN, you'll be using --debug to get more legible stack traces | |||
dalek | arVM: 95629d0 | (Dagfinn Ilmari Mannsåker)++ | src/strings/ (4 files): Remove pointless arguments in encoding convenience functions Passing -1/NULL achieves the same result more efficiently and clearly. |
19:00 | |
arVM: d0e4cca | FROGGS++ | src/strings/ (4 files): Merge pull request #299 from ilmari/remove-pointless-encode-args Remove pointless arguments in encoding convenience functions |
|||
19:05
tokuhiro_ joined
19:29
vendethiel joined
19:39
muraiki left
19:44
Ven joined
19:52
Ven joined
|
|||
dalek | arVM: f31c25c | (Dagfinn Ilmari Mannsåker)++ | src/strings/ (5 files): Fix buffer overflow when replacement length > output buffer size |
20:06 | |
arVM: 52d6e08 | jnthn++ | src/strings/ (5 files): Merge pull request #298 from ilmari/fix-replace-overflow Fix buffer overflow when replacement length > output buffer size |
|||
20:12
Ven joined,
flussence joined
20:15
domidumont joined
20:21
Peter_R joined
20:22
Ven joined
20:37
dalek joined
20:39
psch joined
20:40
[Coke] joined
20:45
kjs_ joined
20:48
brrt joined
20:52
Ven joined
21:06
kjs_ joined
21:07
Ven_ joined,
tokuhiro_ joined
21:16
kjs_ joined
21:25
Ven joined
21:30
synbot6 joined
21:53
Ven joined
22:53
nebuchad` joined
23:01
stmuk_ joined
23:05
harrow` joined
23:07
kjs_ joined
23:09
ShimmerFairy joined
|