00:12
ggoebel joined
01:28
IRCFrEAK joined,
IRCFrEAK left
02:48
ilbot3 joined
03:16
BenGoldberg joined
04:35
madgoat joined,
madgoat left
07:31
brrt joined
|
|||
brrt | good *, #moarvm | 07:32 | |
nwc10 | good *, brrt | ||
brrt | ohai nwc10 | 07:33 | |
i was just trying to figure out how to do the special tiles thing….. | |||
nwc10 | "with a hammer" | 07:34 | |
or, "bigger hammer" | |||
brrt | well, everything looks like a nail anyway | ||
nwc10 | given that it's tiles, maybe that's *not* the right tool | ||
brrt | i hadn't taken the complexity of dealing with the 'synthetic' tiles properl into account yet | 07:36 | |
08:17
brrt joined
08:23
zakharyas joined
|
|||
brrt | so another thing i thought of; a 'node' of the expr jit is now necessarily 64 bits wide in order to store pointers; but that is in a way a ridiculous requirements while virtually all trees I can think of can be stored in 16 bits, and certainly all in 32 bits | 09:04 | |
but if I add some syntax to detect pointer references in the expression tree, I could compile code to store them in a list (i.e. use an extra layer of indirection to store the, relatively rare, pointers) | 09:05 | ||
an advantage of that is that it could go some way to make storage-and-linking work, i.e. those pointers could be stored in the data section and matched with labels and addresses | 09:07 | ||
i don't really see a disadvantage to that…. | |||
lizmat | brrt: fwiw, it smells like a premature optimization to me | 09:32 | |
brrt | possibly, yes | 09:38 | |
(what, me, overingieer?) | |||
jnthn | morning, #moarvm | 09:43 | |
brrt | moarning jnthn | 09:45 | |
that said this bit has been on my mind for a *long* time now, so i'm just going to record a plan for it, and do it later :-) | 09:48 | ||
more to the point, this has some beneficial side-effects as well, since 'real' large 64 bit values typically want to be handled differently from 32 bit constants, at least in x86 | 09:55 | ||
i.e. loading a 64 bit const requires a movabs (which requires a register), or a load-from-data-section; which means that it doesn't work inline like a 32 bit constant does | 09:56 | ||
so ultimately, from the tile perspective, this could be a large simplification, since I could just make tiles like ADD not support loading 64 bit constants | |||
Geth | MoarVM/even-moar-jit: 4494d851d7 | (Bart Wiegmans)++ | 2 files Find 'special' tiles and stub handling them Some of the infrastructure (notably, a map of register -> live range) to actually compile CALL and ARGLIST is not yet available. But now we can at least find these tiles. That said, it might be nice to roll ARGLIST and CALL into a single tile so we can ensure that loading the argument to CALL (sometimes a dynamic pointer) will not conflict with call arguments set up by ARGLIST. |
10:03 | |
MoarVM/even-moar-jit: 3374d2844f | (Bart Wiegmans)++ | docs/jit/plan.org Investigate large constants Large (64 bit) constants currently force a excessive expression node size, and they typically need distinct handling from 'regular' constants, esp. pointers, which we would like to have in a table for linking, and for binary operators, in which directly using a 64 bit constant is not directly supported on x86 while a 32 bit constant is. So it would be interesting to split the large constants from the small ones. |
|||
brrt | (i did not decide to use the queue, after all, although elegant, a cursor would do just as well) | ||
11:23
pyrimidine joined
12:15
sivoais joined
|
|||
dogbert11 | jnthn: sorry to be a nuisance :) but should I do anything else wrt lizmat's bug. Do you have all the info you need (or a hint if you would like me and/or timotimo to fix it)? | 12:27 | |
jnthn | dogbert11: Mostly now I just need time to look more closely at what you've found :-) | 12:30 | |
dogbert11 | jnthn: ok, let me now if you want me to try something else in case you need more info | 12:32 | |
jnthn | Will do; thanks! :) | ||
dogbert11 will check out the RT SEGV list in the meantime | |||
lizmat | dogbert11: which bug are you referring to? | 12:35 | |
something I did, or something I reported ? | |||
dogbert11 | lizmat the latter your harness6 troubles | 12:36 | |
lizmat | aaaahhh :-) ok *phew* :-) | ||
dogbert11 | do you run it with a high number of TEST_JOBS? | 12:37 | |
lizmat | 8 | 12:38 | |
not sure that's high, it's the number of virtual cores my MBP has | |||
dogbert11 | cool, so you have a 4 core CPU with hyperthreading then | 12:44 | |
12:48
MasterDuke joined
13:02
zakharyas joined
|
|||
TimToady | I regularly run with 6, and still get the occasional flakeouts | 14:48 | |
(on a 4-core) | |||
brrt | yeah, same here | 14:51 | |
but mostly on linux, though | |||
TimToady | same | 14:52 | |
dogbert11 | TimToady, brrt are you both running with harness6? | 15:15 | |
brrt | well, i'm running whatevers the default, really | 15:16 | |
dogbert11 | 'make spectest' defaults to harness5 if I'm not mistaken. What kind of flakeouts are we talking about here? | 15:17 | |
brrt | well, tbh, i don't have it available, but last I knew IO::Async::Sockets test could still lock up | 15:21 | |
TimToady | t/spec/S11-modules/require.rakudo.moar (Wstat: 65280 Tests: 11 Failed: 1) Failed test: 11 Non-zero exit status: 255 Parse errors: Bad plan. You planned 27 tests but ran 11. | 15:22 | |
but then run by hand it worked fine | |||
that's just with default harness | |||
dogbert11 | hmm | 15:44 | |
16:05
brrt joined
17:46
BenGoldberg joined
18:17
dogbert17 joined
18:56
pyrimidine joined
|
|||
BenGoldberg | Can someone give me some advice? I want to compile moarvm, and I'm on windows. | 21:50 | |
jnthn | I tend to build it with the MS VC++ toolchain | ||
BenGoldberg was hoping he wouldn't have to learn visual studio .... | |||
jnthn | You don't | ||
Just need the command line tools | 21:51 | ||
BenGoldberg | That sounds much less sucky ;) | ||
What would you recommend I install? | |||
Any specific version which is easier to put in and use? | 21:52 | ||
jnthn | On www.visualstudio.com/downloads/ I think if you find "Microsoft Visual C++ Build Tools " (near the bottom) that should get you just the command line tools | ||
BenGoldberg | "Microsoft Visual C++ Build Tools 2015 Update 3 | 21:54 | |
" ? | |||
jnthn | Yeah | 21:55 | |
BenGoldberg | I also see "Build Tools for Visual Studio 2017 RC" | 21:56 | |
The desc says "These Build Tools allow you to build native and managed MSBuild-based applications without requiring the Visual Studio IDE" | |||
jnthn | Think that's just a newer version | 21:58 | |
I'd stick with the older one | |||
Last time I used an RC of something from MS it was a screw-up | |||
BenGoldberg | And here's the reason why I want to build moar -- I want a perl6 plugin for my favorite irc client, hexchat, and, since there isn't one, I'm writing it. | 21:59 | |
I've got the start of a plugin here: gist.github.com/BenGoldberg1/de452...9805528115 | 22:01 | ||
jnthn | Cool :) | 22:04 | |
gist.github.com/BenGoldberg1/de452...erl6-c-L91 | 22:12 | ||
You'll get a compile error in MSVC on at least this line, fwiw | |||
(It wants all decls at the top of the function) | |||
(or block) | |||
BenGoldberg | Right, C not C++ :) | ||
jnthn | Well, C99 lets you do that | 22:14 | |
But Microsoft decided they'd bet the whole house on C++ | |||
BenGoldberg tries to remember where he copied this code from -- who the f sticks pointers to local variables into a global object. | 22:15 | ||
jnthn | Inline::Perl6, maybe? :) | 22:18 | |
BenGoldberg | Yeah, Perl6.xs, I'm looking at you. | 22:19 | |
Are those pointers not needed after toplevel_initial_invoke? | 22:20 | ||
Also, what's with that start_frame? It's never used anywhere. | |||
jnthn | heh, indeed, so it can go away | 22:21 | |
Which local vars are you worrying about? | 22:22 | ||
Oh, I see | |||
No, they won't be used after toplevel_initial_invoke returns | 22:23 | ||
BenGoldberg | Ok, I was worried. | ||
Also I see that 'MVMCompUnit *cu' is only used inside of initialize, but it's declared as a global. | 22:24 | ||
jnthn | That's a tad curious also | 22:25 | |
Should probably take this and hide some of the structure pokery behind a proper API | |||
BenGoldberg | Since hexchat is a gui irc client, it doesn't have a proper stdout/stderr. Is simply assigning my own object (with .print and .say methods) to $*OUT and $*ERR sufficient to make sure all errors and prints get sent to the screen? | 22:33 | |
I'm worried about low level C code doing a printf :) | 22:34 | ||
moritz | that wouldn't land in $*OUT or $*ERR | ||
but shouldn't happen in normal Perl 6 code either | 22:35 | ||
BenGoldberg | It would land in the bitbucket. | ||
jnthn | Sleep time for me; 'night | 22:41 | |
BenGoldberg | G'night, then | 22:45 |