01:56
ilbot3 joined
03:06
ZofBot joined
03:07
ZofBot joined
05:45
AlexDaniel` joined
05:49
AlexDaniel` joined
06:31
brrt joined
|
|||
brrt | good * #moarvm | 06:41 | |
Geth | MoarVM/jit-expr-optimizer: a4b3e25c9f | (Bart Wiegmans)++ | 5 files Remove op_info pointer The op_info pointer is always going to be identical to that which is loaded from the MVM_jit_expr_op_info function, which is itself just a constant table lookup. So there's no need to keep it arround. |
06:44 | |
brrt | this was actually the least important problem i had | 06:49 | |
06:57
domidumont joined
07:06
domidumont joined
07:37
brrt joined
07:39
AlexDaniel` joined
|
|||
brrt | i don't know if i already told you, but i decided that it is probably the best idea to extend the expr template compiler to protect against conditional-use-before-unconditional-use | 07:40 | |
08:03
JimmyZ joined
08:06
zakharyas joined
08:14
zakharyas joined
09:07
zakharyas1 joined
09:09
SourceBaby joined
09:36
zakharyas joined
|
|||
samcv | good * brrt :) | 09:51 | |
brrt | hi samcv | 09:57 | |
oh, part of what i still wanted to say, is that if i want that, i'll need a separate stage between macro expansion and name substition in the template compiler | 10:03 | ||
samcv | brrt, which JIT documents are up to date? | 11:18 | |
ir.md, overview.org, runtime.md, tiles.md, todo.org | |||
which ones or possibly all of them? | 11:19 | ||
brrt | overview.org is most up to date | 11:20 | |
actually, all of them, except tiles.md | |||
samcv | ok | ||
i will add those to the current docs list | 11:21 | ||
brrt | todo.org is arguably not a 'document' per se | ||
eh, not documentation | |||
samcv | that's fine | 11:22 | |
11:23
zakharyas joined
|
|||
Geth | MoarVM: 9a0ad37a40 | (Samantha McVey)++ | docs/README.md Update docs/README.md with links to current documentation Since the new JIT expression engine and overview are current, they should be added to README.md. Also add the Release Guide and the Changelog as well. |
11:30 | |
MoarVM: 3c0a318157 | (Samantha McVey)++ | docs/README.md Fix link to docs/jit/ir.md in docs README.md |
11:33 | ||
samcv | yay! | ||
brrt | \o/ | 11:46 | |
11:56
AlexDaniel` joined
|
|||
samcv heads off to bed & | 11:58 | ||
lizmat | night! | 11:59 | |
brrt | good night samcv | 12:05 | |
lizmat | is MoarVM a register based VM ? | 12:13 | |
news.ycombinator.com/item?id=15549265 # reason I'm asking | 12:21 | ||
feels like that is referring to Parrot, rather than MoarVM | |||
brrt | yes, MoarVM is register-based | 12:34 | |
Zoffix | AFAIK yeah. It got registers and I recall brrt I think in the past saying register VMs are good or | ||
irclog.perlgeek.de/moarvm/search/?...q=register | |||
brrt | I don't want to go into hackernews 'debates' at any rate | 12:35 | |
but, register VMs have a few advantages | |||
Zoffix | :) | ||
brrt | it might be referring to parrot, eys | ||
so the difference is basically this; | 12:36 | ||
in a stack vm, your referring to a 'stack', so that's an ever-changing memory base | |||
your stack top is always moving about | |||
all operations 'implicitly' take stack operands | 12:37 | ||
and return them also implicitly | |||
this means, among ohter things, that your compiler must guard against stack overflows and underflows | 12:38 | ||
and indeed, the notion that at the end of a subroutine, the stack has to be at the same spot it left off from | |||
i.e.: for (1..10) { push }; pop; # this is possible but illegal | 12:39 | ||
lizmat | brrt: thanks for clearing that up | ||
brrt | np :-) | ||
it also means that for a JIT, you have to give a name all the stack positions you might see in a program run. and make sure you're referring to the correct one while working | 12:40 | ||
not impossible to do, but not the nicest thing either | |||
it also means that for a GC, you're going to have to be either imprecise, tag your pointers, or have a 'gc safe points' for which you make maps that give you the layout of the stack at that point | 12:41 | ||
and that also sucks | |||
or, you're going to have boxed everything | |||
i.e. you can't just have a native integer on the stack if you don't know at every point that you might need to inspect it, what operand that actually is | 12:42 | ||
Zoffix | How do you know all of this stuff? Got books to recommend? | 12:43 | |
brrt | ehm..... | 12:44 | |
i dunno, actually. experience i guess | |||
which means that i might be wrong about some aspects | |||
i did read 'Engineering a compiler' byā¦ well, there's only one famous book by that name | |||
Zoffix | :} | ||
brrt | and Aho's compiler | ||
s | |||
Zoffix adds those to the list :) | 12:45 | ||
brrt | but to make a long story short.. I think register vms are the way to go :-) | ||
and i also think they make writing a JIT easier, because every local value already has a 'true' name | |||
so there's a whole bunch of analysis that you just don't have to do | |||
12:55
zakharyas joined
13:12
zakharyas joined
|
|||
dogbert17 | .seen timotimo | 13:48 | |
yoleaux | I saw timotimo 08:59Z in #perl6: <timotimo> a look-around assertion | ||
14:05
AlexDaniel` joined
|
|||
dogbert17 | any cool c-programmers around? | 14:32 | |
my question is: how can we be certain that 'test' is not null at github.com/MoarVM/MoarVM/blob/mast...ard.c#L411 | 14:34 | ||
dogbert17 is getting a SEGV on line 411 while running /spec/S12-attributes/undeclared.t | |||
Zoffix | I'm an uncool c-programmer, but is `test != NULL` a thing maybe? | 14:36 | |
eater | `!test` even | 14:37 | |
eater is also uncool | |||
dogbert17 | as is I | ||
I guess null should be tested for or there's a statement missing whose purpose is to retrieve 'test' | 14:40 | ||
here's what I ran: while MVM_SPESH_NODELAY=1 ./perl6 t/spec/S12-attributes/undeclared.t; do true; done | 14:43 | ||
15:18
brrt joined
15:41
brrt joined
16:36
buggable joined
17:07
domidumont joined
19:25
evalable6 joined
20:29
evalable6 joined
|
|||
samcv | i want to add a function called MVM_reg_get_debug_name similar to MVM_6model_get_debug_name | 20:37 | |
but am not sure where to put it. MVMreg* are defined in src/core/interph | 20:38 | ||
interp.h that is. i also want MVM_string_get_debug_name though that will be easier to find a place for | |||
hmm 6model may be a good place to put both? | 20:39 | ||
well not sure about MVMreg since it doesn't have its own file and is defined in interp.h | 20:40 | ||
jnthn | samcv: What could the functions do? | 20:42 | |
samcv | return the name of the item | ||
jnthn | "the item"? | ||
samcv | MVM_STRING_GRAPHEME32 or MVM_reg_uint32 etc | ||
atm many of the errors don't tell you what it encountered | 20:43 | ||
returns a string of the type name | |||
jnthn | Hm, example of an error to improve? | ||
samcv | so instead of "Unknown lexical type encountered while building context iterator" | ||
"MVM_reg_uint8 lexical type encountered while building context iterator" | |||
and it will say Unknown if it's actually "unknown" and not just not handled in that function | 20:44 | ||
jnthn | Ah | ||
I guess it'd be "Unexpected uint8 lexical encountered..." etc. | |||
That one I'd probably put in interp.h though | |||
samcv | ok | 20:45 | |
and leave out the reg part? | |||
jnthn | I guess MVM_reg_type_name is fine enough | 20:46 | |
Matches the consts | |||
samcv | cool | 20:47 | |
damn getting multiple definitions error | 20:48 | ||
even though it's only in interp.h | 20:49 | ||
things must be including interp.h multiple times | |||
hmm not seeing that grepping the source though | 20:50 | ||
jnthn, any clue how to fix that? | 20:59 | ||
i just added MVM_reg_get_debug_name to interp.c | 21:00 | ||
jnthn | No, that sounds odd :S | 21:04 | |
samcv | having moar.h #include foo/bar.h and having foo/bar.c #include "moar.h" should be ok right? | 21:05 | |
ah i forgot to declare it static :) | 21:06 | ||
jnthn | Yeah | ||
oh :) | |||
Geth | MoarVM: samcv++ created pull request #732: Include the type of unhandled register in error messages |
21:34 | |
samcv | jnthn, if i do `my int8 $var = 255';` `"$var";` in REPL i get an error btw | 21:44 | |
Geth | MoarVM/jit-expr-optimizer: 8d0bdb4b68 | (Bart Wiegmans)++ | src/jit/optimize.c Fix C89 compatibility Can't declare a variable after statements |
21:45 | |
samcv | not sure what's going on | ||
also doing `my uint16 $var = 255'; "$var"` also gives an issue in repl (doing first and second line separately) | 21:50 | ||
jnthn | samcv: Probably some NYI somewhere or other | 21:52 | |
Waht's the error? | |||
samcv | lexical type encountered while building context iterator # before adding it to MVMIter.c | ||
but after i do, or for types already there (intx types) | 21:53 | ||
Unhandled lexical type 'int16' in lexprimspec for '$var' | |||
this is the more updated error | |||
should be Unhandled lexical type in lexprimspec for '$var' for you if you assign to `my int16 $var` and then on the next line do `say $var` | 21:54 | ||
jnthn | Ah, hmm | 21:55 | |
samcv | here's the backtrace if i make it an oops gist.github.com/samcv/043f8254281c...8e92b1df66 | 21:57 | |
not sure if it should be making an iterator, it probably should | |||
Geth | MoarVM: samcv++ created pull request #733: Handle unsigned types to switch in MVM_iter() |
||
samcv | anyway making a PR for you to look at handling those types in MVM_iter() | 21:58 | |
though still shows the error somewhere else, showing the same error as using the signed int types do | |||
jnthn | Will take a look, though tomorrow 'cus I'm super tired | 22:02 | |
'night o/ | 22:03 | ||
samcv | np | ||
night o/ | |||
23:05
evalable6 joined
|