Welcome to the main channel on the development of MoarVM, a virtual machine for NQP and Rakudo (moarvm.org). This channel is being logged for historical purposes. Set by lizmat on 24 May 2021. |
|||
00:03
reportable6 left
00:04
reportable6 joined
00:23
Kaiepi joined
01:17
vrurg joined
01:20
vrurg_ left
02:11
vrurg_ joined
02:14
vrurg left
03:22
unicodable6 left,
bloatable6 left,
reportable6 left,
shareable6 left,
squashable6 left,
quotable6 left,
greppable6 left,
coverable6 left,
releasable6 left,
committable6 left,
statisfiable6 left,
sourceable6 left,
nativecallable6 left,
notable6 left,
evalable6 left,
bisectable6 left,
tellable6 left,
benchable6 left,
linkable6 left
03:24
tellable6 joined,
statisfiable6 joined,
linkable6 joined,
squashable6 joined,
coverable6 joined,
greppable6 joined,
vrurg_ left,
sourceable6 joined
03:25
vrurg joined
04:25
reportable6 joined,
evalable6 joined,
quotable6 joined,
notable6 joined,
nativecallable6 joined,
bisectable6 joined
05:03
frost joined
05:23
releasable6 joined
05:24
bloatable6 joined
05:25
unicodable6 joined
06:02
reportable6 left
06:04
reportable6 joined
06:23
benchable6 joined
06:25
shareable6 joined
06:26
committable6 joined
|
|||
Geth | MoarVM: MasterDuke17++ created pull request #1577: Silence wrong GCC warning about unused variable |
08:29 | |
09:57
linkable6 left,
evalable6 left,
linkable6 joined
10:58
evalable6 joined
|
|||
nine | www.extremetech.com/extreme/188776...dern-chips | 11:25 | |
Finally an explanation for cache associativity that I understand | |||
11:58
linkable6 left,
evalable6 left
12:00
linkable6 joined
12:01
evalable6 joined
12:02
reportable6 left
12:04
reportable6 joined
|
|||
dogbert17 | nine: any theories wrt gist.github.com/dogbert17/d3fee0f0...854faa2f71 | 12:08 | |
nine | Haven't had a look yet | ||
Haven't had a look yet | 12:09 | ||
dogbert17 | hopefully it won't lead into some kind of rabbit hole :) | 12:11 | |
nine | New world record! 13.220s | 12:41 | |
That's almost a full second faster than pre-new-disp. And I haven't even started on JITing native call yet | |||
This speedup is just from no longer unconditionally boxing results of native calls | 12:42 | ||
Geth | MoarVM/new-disp-nativecall: ba5513f870 | (Stefan Seifert)++ | 4 files Avoid boxing native call results if native type is requested |
12:43 | |
MoarVM/new-disp-nativecall: 246565db31 | (Stefan Seifert)++ | 8 files Fixup "Translate dispatch to native functions" When the rakudobug that prevents us from using natively typed dispatch ops for calls is fixed, we need native versions of sp_runnativecall as well |
12:45 | ||
MasterDuke | ugh. i dislike msvc | 12:56 | |
13:23
linkable6 left,
evalable6 left
|
|||
jnthnwrthngtn | dogbert17: Hmm...that's a curious one. | 13:26 | |
nine: Yay...numbers with the JITting should be rather nice :) | 13:27 | ||
Release is out, so guess on tomorrow I'll merge some things :) | 13:31 | ||
MasterDuke | this is blowing my mind. there are `#if foo ... #endif` elsewhere in interp.c, but the one i added is causing msvc to die | 13:38 | |
dogbert17 | jnthnwrthngtn: FWIW, adding MVM_SPESH_OSR_DISABLE=1 seems to remove/hide the problem | 13:43 | |
14:25
linkable6 joined
14:53
MasterDuke left
15:03
MasterDuke joined
|
|||
MasterDuke | oh! i think i figured it out. the `#if ... #endif` i added is inside an MVMROOT. it looks like msvc expands that macro (and the block inside) into a single line, so then my directives are just stuck in the middle of the line and don't work | 15:30 | |
oh, somehow i didn't realize that's normal behavior (i.e., i think gcc and clang do the same thing). but i guess the real difference is that msvc is doing macro expansion before processing the `#if` directive | 15:38 | ||
now to see if there's a way to change that order... | |||
oh, or maybe it's just easier to move the variable declaration outside the MVMROOT (and leave the assigning inside)... | 15:39 | ||
nine | MasterDuke: or replace the MVMROOT macro with MVM_gc_root_temp_push/MVM_gc_root_temp_pop | 15:50 | |
MasterDuke | you can see what it looks like now, i just force pushed to github.com/MoarVM/MoarVM/pull/1577 | 15:51 | |
but yeah, that was the other better option | 15:52 | ||
(better than trying to mess with msvc macro expansion rules) | |||
nine | We're JITing calls to void (*native_function)()! Feels like I've been here before :D | 15:59 | |
Actually void (*native_function)(void) but I guess few people actually know about that distinction | 16:02 | ||
MasterDuke | that's pretty cool. how many layers of indirection are removed? | 16:03 | |
timo | i didnt know there was a distinction, i thought when i was forced to write the void in there for some microcontroller firmware that was just some random "c standard from the eighteen hundreds" thing | 16:04 | |
nine | MasterDuke: github.com/MoarVM/MoarVM/blob/new-...all.c#L882 | 16:05 | |
In C, a void foo(); declaration lets you pass any arguments to foo. Only void foo(void); makes the compiler complain if you pass arguments | 16:07 | ||
16:25
evalable6 joined
16:27
dogbert17 left
16:42
dogbert17 joined
|
|||
MasterDuke | nine: any further thoughts/questions on github.com/MoarVM/MoarVM/pull/1574 and github.com/MoarVM/MoarVM/pull/1577 ? | 16:46 | |
18:02
reportable6 left
18:04
reportable6 joined
19:04
linkable6 left,
evalable6 left
19:05
linkable6 joined
19:08
vrurg_ joined
19:11
vrurg left
|
|||
nine | MasterDuke: just expressed them ÖD | 19:23 | |
:D | |||
That work for avoiding needless boxing of return values in native calls pays off in another way as well. For sp_runnativecall_i returning the result is really just: | mov WORK[runcode->return_register], RV | 19:28 | ||
This already handles smaller integer types as well, as the trunc/extend is already emitted by the code-gen of dispatch_i. | 19:31 | ||
20:14
vrurg joined,
vrurg_ left
|
|||
MasterDuke | thanks | 20:55 | |
Geth | MoarVM: c008c8eb91 | (Daniel Green)++ | src/core/interp.c Silence wrong GCC warning about unused variable It's used in an `assert()` a couple lines down, but even with `--debug=3` for some reason GCC doesn't see it as being used. |
21:01 | |
MoarVM: b4854e7678 | (Daniel Green)++ | src/strings/unicode_ops.c Silence GCC warning for using `cps` uninitialized It is actually initialized in both branches of the `if/else` right above (assuming `cp_num` > 0 (but adding an assert for that didn't help)) so just surpress the warning. |
|||
MoarVM: eb16462233 | MasterDuke17++ (committed using GitHub Web editor) | 2 files Merge pull request #1577 from MasterDuke17/fix_the_two_current_warnings |
|||
MoarVM: 52c4a6d753 | (Daniel Green)++ | src/jit/x64/emit.dasc Improve the jit implementation of nqp::abs_i We don't need to copy the source twice, it's faster just to refer back to it in the cmovl. |
|||
MoarVM: 444367cea6 | MasterDuke17++ (committed using GitHub Web editor) | src/jit/x64/emit.dasc Merge pull request #1574 from MasterDuke17/improve_jit_of_abs_i |
|||
21:14
linkable6 left,
linkable6 joined
22:13
vrurg_ joined,
vrurg left,
vrurg_ left
22:14
vrurg joined
23:05
evalable6 joined
|