| IRC logs at
Set by AlexDaniel on 12 June 2018.
00:25 leont left 00:32 MasterDuke left 04:43 Kaiepi left 05:10 Altai-man joined 05:42 sena_kun joined 05:44 Altai-man left
nwc10 good *, #moarvm 06:05
06:56 domidumont joined 07:30 MasterDuke joined 07:35 zakharyas joined 08:21 leont joined
MasterDuke m: use nqp; say nqp::rand_I(4, Int); say nqp::rand_I(-4, Int) 09:13
camelia 2
MasterDuke is ^^^ what we want for a negative max? 09:14
m: use nqp; say nqp::rand_I(4, Int); say nqp::rand_I(-4, Int); say nqp::rand_n(-4.Num) 09:22
camelia 0
MasterDuke or is ^^^ what we want for the *_I version also?
m: say -19.rand.Int 09:23
camelia -4
MasterDuke nothing in nqp or rakudo actually calls rand_I with a negative number. the only times it's used it's called with the $!elems of a Range 09:25
09:41 Altai-man joined
MasterDuke there are no tests for behavior with a negative number, so i propose changing it to do what rand_n does (i.e., generate a number in the range -N < x <= 0) 09:43
09:44 sena_kun left 10:03 lizmat_ joined 10:05 lizmat left 10:06 lizmat_ is now known as lizmat 10:07 sena_kun joined 10:09 Altai-man left 11:25 zakharyas left
MasterDuke hm. is it safe to put a `char *` that's been alloca'ed in an MVM_exception_throw_adhoc? 12:11
nwc10 er, I guess not. Because the allocation is on the stack and the stack gets unwound as a side effect of throwing the exception 12:12
"what does valgrind say?" :-)
12:30 Geth left, Geth joined 12:38 zakharyas joined 12:43 zakharyas1 joined 12:44 zakharyas2 joined 12:45 zakharyas left 12:47 zakharyas1 left 13:41 Altai-man joined 13:44 sena_kun left 15:12 domidumont left
MasterDuke timotimo: didn't you do some optimization recently re de-virtualizing get_boxed_ref()? could anything be done here ? 15:50
i think this branch is almost ready to PR. it fails one spectest (doesn't die on a large exponentiation because gmp can handle the value), but i'm willing to argue the test can be changed 16:16
however, there are two things still to address:
1) i still haven't been able to get it to link against the .a and unless i LD_PRELOAD the .so that does get built it picks up the system gmp 16:18
2) i'm catching abort() with a signal handler and setjmp/longjmp (only for exponentiation right now), but i think it's fragile. i see more random fails in spectest runs than usual. do we go ahead with the code as is, assuming that the vast majority of user code isn't actually likely to cause aborts? or is there a way to make this robust without 16:25
patching gmp? or do we need to patch and hope the change can be pushed+accepted upstream?
17:26 zakharyas2 left
timotimo MasterDuke: i do believe we have a special op that grabs the bigint part from an object that spesh emits 17:35
17:42 sena_kun joined 17:44 Altai-man left
MasterDuke ah, so we don't need to do anything there because spesh optimizes it for us later? 17:52
timotimo as long as it's not called directly from C code 17:53
MasterDuke ah. so all the calls directly in bigintops.c are unoptimized? anything that can be done with them? 17:57
timotimo check the optimized sp_ ops in interp.c 18:16
like sp_add_I 18:17
18:25 zakharyas joined 18:47 vrurg left 18:48 vrurg joined
MasterDuke i just wondered if an sp_pow_I would make sense, but MVM_bigint_pow is only called 19 times when compiling core.c 19:12
twice with a base of 10 and exponent of 307, seems a pretty large number 19:13
lizmat and yet another Rakudo Weekly hits the Net: 19:14
19:17 sena_kun left
timotimo 307, don't i know that number from floating point numbres? 19:17
MasterDuke is there a good way to find the file/line currently being compiled? i'm in gdb, but MVM_dump_backtrace(tc) just shows me in infix:<**> to no surprise 19:18
ah 19:19
timotimo is that in the optimizer per chance? 19:20
dogbert17 perhaps 307 has something to do with double floating point numbers 19:35
nwc10 10e308 19:50
dogbert17 close :) 20:11
MasterDuke oh, should link my changes. these commits haven't been fully cleaned up, but the final diff should be pretty close 20:21
20:31 Geth left 20:56 zakharyas left