|
01:31
MasterDuke joined
|
|||
| MasterDuke | missing template counts for building core.settings and running test-t gist.github.com/MasterDuke17/4a6b3...a4ed2c1370 | 01:39 | |
| what does it mean where there are 'null' or 'PHI' in the 'Build tree out of: [ ... ]' list? | 01:43 | ||
| timotimo | PHI are actually no-ops, null is an op that nulls out a register | 01:48 | |
| MasterDuke: we used to go through all registers that hold object values and null them out when entering a frame, but that was wasteful, now we emit a whole bunch of null instructions in spesh and let spesh remove useless nulls | 01:49 | ||
| MasterDuke | hm. so what would be a useful metric? total length (number of elements in the list)? length - # of PHI/null? | 01:51 | |
| timotimo | yeah maybe, but phis are always at the beginning so they would always be in the expr jit part | 01:53 | |
| MasterDuke | uniq lists and their count, like for the individual missing templates? | 01:54 | |
| gist updated | 01:57 | ||
| timotimo | i think we should remove the PHI from being logged %) | 02:05 | |
| MasterDuke | it does distract a bit | 02:08 | |
| timotimo | lastexpayload should be very easy to do | 02:10 | |
| isconcrete, too, if bitwise arithmetic is easy in the exprjit | |||
| prepargs is by its nature always followed by a bunch of arg_* ops and then some kind of invoke_* | 02:11 | ||
| or fastinvoke or something | |||
| that'll probably require a bunch more thought | |||
| i would have said "unless_o is easy since we already have if_o", but we don't have either of those | 02:12 | ||
| MasterDuke | the interp.c implementation isn't that bad | 02:13 | |
| but there a bit of a scary comment in the jit/graph.c implementation | |||
| timotimo | which one do you mean? | ||
| i imagine not_i could be worth quite a bit | 02:15 | ||
| MasterDuke | github.com/MoarVM/MoarVM/blob/mast...1695-L1733 | ||
| timotimo | huh, interesting | 02:16 | |
| the good news is that we can express the "first do an istrue_o, then do the branching" in just a big expression tree | 02:22 | ||
| and we can probably just ask the exprjit for a local variable to store the result in as well | 02:23 | ||
| MasterDuke | huh, we only have an istrue_s | 02:25 | |
| timotimo | oh the op is probably bool_o | ||
| no we have istrue and isfalse without _* | 02:26 | ||
| MasterDuke | ah | ||
|
02:58
ilbot3 joined
06:15
psch joined
|
|||
| nine | timotimo: local variables are just like (let: (($val (load (add (^p6obody $1) $2) ptr_sz))). takedispatcher is an example for multiple variables | 07:11 | |
| This is where the expr jit really shines compared to the lego jit | |||
|
07:41
brrt joined
|
|||
| brrt | good * #moarvm | 07:44 | |
|
07:51
domidumont joined
|
|||
| nine | good brrt #moarvm! | 07:52 | |
| brrt | good nine! | 07:53 | |
| are you coming to FOSDEM this year? | |||
| nine | yeah! | ||
| you, too? | 07:54 | ||
|
08:07
domidumont joined
|
|||
| nwc10 | if NQP goes "boom" with "Expected native int argument, but got num" does that mean that it's still a *good* morning? | 08:11 | |
| at gen/moar/stage1/QRegex.nqp:1624 (gen/moar/stage1/QRegex.moarvm:!cursor_pass) | |||
| ... | |||
| psch | at least it is a clear-ish error message; NQP does have a few less comprehensible ones :) | ||
|
08:36
zakharyas joined
10:14
zakharyas joined
|
|||
| brrt | i'm planning | 10:15 | |
|
10:56
zakharyas joined
10:59
AlexDaniel joined
|
|||
| jnthn | About object alignment: the best way to do it would be to round up sizes at the point we calculate them | 11:03 | |
| yoleaux | 09:49Z <Zoffix> jnthn: Would you review this commit in a branch I made? github.com/rakudo/rakudo/commit/77fb61a719 It looks a bit nutty, especially the whole block-per-».-site thing and the perf boost isn't amazing. I think we can get the same benefits by improving slurpy dispatch caching instead. | ||
| jnthn | Then the allocator doesn't have to be burdened with any extra checks | 11:05 | |
|
11:26
zakharyas joined
11:56
zakharyas joined
11:58
coverable6 joined,
nativecallable6 joined,
unicodable6 joined
12:01
reportable6 joined
|
|||
| wictory[m] | jnthn: you are probably right ... the size argument to `MVM_gc_allocate_nursery()` comes either from a `sizeof()` (which can assume is aligned, and this can be checked using static analysis), or from `st->size`, where `st` is a `MVMSTable`. The `st->size` seems to mostly come from `sizeof()`s, except for two places in `src/6model/reprs/P6opaque.c`. I'm not sure, but could there be some more places that are not directly | 12:02 | |
| visible from the code? It would be nice if some MVMSTable genius could verify this :) | |||
| Here is the places I found where `st->size` is set to something else than a `sizeof()` github.com/MoarVM/MoarVM/blob/e813...que.c#L876 github.com/MoarVM/MoarVM/blob/e813...que.c#L917 | 12:03 | ||
| There are even some comments about that sizes should be aligned in `src/6model/reprs/P6opaque.c` | 12:06 | ||
|
12:15
AlexDani` joined
|
|||
| MasterDuke | brrt: any thoughts on github.com/MoarVM/MoarVM/pull/787 ? | 12:17 | |
| brrt | i'm checking | 12:39 | |
| oh yeah, i had some thoughts about that | |||
| i'll post them | 12:44 | ||
| MasterDuke | cool, thanks | 12:50 | |
| brrt: and while you're here, what am i doing wrong here: `(template: isconcrete (if (and (nz $1) (^is_conc_obj $1)) (const 1 int_sz) (const 0 int_sz)))` ? | 13:01 | ||
| brrt | ehm. good question | ||
|
13:01
reportable6 joined
|
|||
| brrt | you may stumble on a JIT bug :-P | 13:01 | |
| MasterDuke | error: Expected flag but got reg in template (if (and (nz $1) (zr (and (load (addr $1 (&offsetof MVMObject header.flags)) (&SIZEOF_MEMBER MVMObject header.flags)) (const ("E MVM_CF_TYPE_OBJECT) (&SIZEOF_MEMBER MVMObject header.flags))))) (const 1 int_sz) (const 0 int_sz)) child 0 | 13:02 | |
| brrt | ehm. | ||
| maybe a JIT compiler bug | |||
| lemmetry | |||
| oh, i see | 13:03 | ||
| (and) is binary AND | |||
| like 1 & 2 | |||
| what you're looking for is ALL | |||
| MasterDuke | aahh | 13:04 | |
| brrt | which is boolean-shortcircuiting AND generalized | ||
| MasterDuke | now it compiles | 13:07 | |
| brrt | :-) | ||
| otherwise it looks good | |||
| MasterDuke++ :-) | |||
|
13:40
lizmat joined
14:10
zakharyas joined
14:45
brrt joined
15:00
MasterDuke joined
15:31
zakharyas joined
15:50
zakharyas joined
16:05
brrt joined
16:12
zakharyas joined
|
|||
| MasterDuke | brrt: looks like cast isn't implemented? | 16:35 | |
| brrt | what kind of cast are you doing? | ||
| you rarely need to CAST by hand | 16:36 | ||
| timotimo | maybe int ⋄ num? | ||
| MasterDuke | for coerce_ni | ||
| moritz | if you don't break your hand, you don't need a cast for it :-) | ||
| MasterDuke | GET_REG(cur_op, 0).i64 = (MVMint64)GET_REG(cur_op, 2).n64; | ||
| timotimo | aha! :) | ||
| MasterDuke | timotimo++ | 16:37 | |
| timotimo | i like compose+<+> giving me ⋄ it's a pretty glyph | 16:38 | |
| brrt | oh, no, that's not a thing yet | 16:45 | |
| because numeric registers are not a thing yet | |||
|
16:52
zakharyas joined
|
|||
| MasterDuke | ok, i'll leave those be for now | 16:57 | |
|
17:00
zakharyas1 joined
|
|||
| brrt | :-) | 17:02 | |
|
17:44
reportable6 joined
17:46
reportable6 joined
17:47
reportable6 joined
17:48
reportable6 joined
18:52
reportable6 joined
19:23
MasterDuke joined
|
|||
| lizmat | and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2018/01/29/...s-modules/ | 19:24 | |
|
20:24
quotable6 joined
|
|||
| MasterDuke | can there be string literals in templates? | 20:28 | |
|
20:42
coverable6 joined
20:50
coverable6 joined,
bart__ joined
|
|||
| brrt | MasterDuke: yes, but | 20:51 | |
| let me think about how that worked | 20:52 | ||
| (i recently added support for string literals in the parser) | |||
| escaping-\" doesn't work | |||
| MasterDuke | but if i don't need any "s in the string, (carg ="something here" ptr) should work? | 20:54 | |
| or should that be str at the end? | 20:55 | ||
| or, is there any "built in" support for MVM_exception_throw_adhoc? | 20:57 | ||
|
21:07
nativecallable6 joined
|
|||
| brrt | no, i was working on that at some point | 21:08 | |
| the interesting thing is that throw_adhoc and friends never return | 21:09 | ||
|
21:09
nativecallable6 joined
|
|||
| brrt | so we can be more clever around storing values to memory | 21:09 | |
|
21:10
Kaiepi joined
|
|||
| MasterDuke | btw, think this looks reasonable? gist.github.com/MasterDuke17/ba861...8a43b3b534 | 21:11 | |
| it's not quite right though, "node is too short" | 21:14 | ||
| something about the dov/ifv | 21:21 | ||
| brrt | IFV takes two branches. i think you want WHEN | ||
| MasterDuke | heh, just noticing that now | 21:22 | |
| now, Node (carg = "Cannot look up attributes in a %s type object" = str) is too short | 21:23 | ||
| brrt | yeah, not sure, but i don't think that needs a = sign at all | 21:24 | |
| and.. you can't put it like that literally, has to be wrapped with const_ptr | |||
| MasterDuke | k | 21:25 | |
| what is the =" "= form for? | |||
| brrt | that's not something that i think actually works | 21:31 | |
| is that in the templates now? | |||
|
21:32
domidumont joined
|
|||
| brrt | something like (const_ptr "foo bar") | 21:32 | |
| MasterDuke | no, just mentioned in github.com/MoarVM/MoarVM/blob/mast...org#syntax | ||
| brrt | oh, that's an artifact of rendering | 21:41 | |
| MasterDuke | brrt: fyi, got the template compiling (and it seems to work), but there were some warnings | ||
| brrt | the = should make it appear monospace | 21:42 | |
| MasterDuke | gist.github.com/MasterDuke17/ba861...8a43b3b534 | ||
| ah! | |||
| brrt | yeah, you should use const_ptr there | ||
| MasterDuke | also in the same section: Macro parameters are prefixed by =,= (e.g. =,obj=), and they are replaced with whatever symbol or list is ‘bound’ to them when the macro is invoked. | 21:43 | |
| `(carg (const_ptr ("E "Cannot look up attributes in a %s type object") ptr_sz) ptr)` ? | 21:44 | ||
| that causes: Use of uninitialized value in lc at tools/expr-template-compiler.pl line 114, <STDIN> line 514. | 21:45 | ||
| brrt | that's probably something wrong yes | 21:46 | |
| anyway, i have to go now | |||
| MasterDuke | later. thanks for the help | 21:48 | |
|
22:12
reportable6 joined
23:44
Voldenet_ joined
23:48
yoleaux joined,
evalable6 joined,
quotable6 joined,
coverable6 joined
|
|||