github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm Set by AlexDaniel on 12 June 2018. |
|||
00:01
sena_kun joined
00:03
Altai-man_ left
00:47
Kaiepi left
01:35
Kaiepi joined
01:48
vrurg left,
vrurg joined
02:00
Altai-man_ joined
02:03
sena_kun left
03:05
lucasb left
04:02
sena_kun joined
04:04
Altai-man_ left
05:24
Kaiepi left
05:25
Kaiepi joined
06:01
Altai-man_ joined
06:03
sena_kun left
08:02
sena_kun joined
08:04
Altai-man_ left
10:01
Altai-man_ joined
10:03
sena_kun left
11:15
Kaiepi left
11:43
Kaiepi joined
12:02
sena_kun joined
12:04
Altai-man_ left
12:25
Kaiepi left,
Kaiepi joined
|
|||
Geth | MoarVM/kosher-unicode-names-only: a34e9e4bae | (Nicholas Clark)++ | src/strings/unicode_ops.c Don't add placeholders such as "<control>" to the Unicode names lookup hash. Including these make no sense - the hash is for a 1->1 mapping of name to codepoint, but for each of these names we have multiple values. The way our hashes are currently implemented (with "bind"), these duplicate keys are not ignored - we add hundreds of duplicate entries to the same ... (5 more lines) |
14:00 | |
14:01
Altai-man_ joined
14:03
sena_kun left
|
|||
Geth | MoarVM: nwc10++ created pull request #1321: Don't add placeholders such as "<control>" to the Unicode names lookup hash. |
14:05 | |
timotimo | that makes sense | 14:12 | |
but don't we call them <control-001> and such? | 14:13 | ||
m: say uniname("\x03") | |||
camelia | <control-0003> | ||
nwc10 | there's (different) C code to implement that | 14:17 | |
the forwards map code point->name | 14:18 | ||
timotimo | ah | ||
14:32
Geth left,
Geth joined
|
|||
nwc10 is worried that there is a stupid bug in that pull request | 14:46 | ||
I have. | 14:57 | ||
The bug is real. The fix is in the wrong place. Meaning also that it is untested. | 14:58 | ||
16:02
sena_kun joined
16:04
Altai-man_ left
|
|||
nwc10 | jnthn: there's a stupid bug in that pull request | 16:23 | |
*And* | |||
even fixing it in the place in the C code that I should have | 16:24 | ||
is two places in the C code | |||
is | |||
... | |||
what is it doing? WHat are all these span things, and FATE_* | |||
and I think | |||
jnthn | Hm, I suspect trying to store the Unicode databsae compactly, if you mean the code I think you do :) | ||
nwc10 | actually that code is the remains of soemthing else, and if I have it right, the entire "extents" thing doesbn't matter any more - it's a linear scan of codepoint_names | 16:25 | |
jnthn: yes, it's storing the *properties* efficiently | |||
but the names, they either "no longer need to be stored with this" or possibly "never needed to be stored with this" | |||
so I think that the C code in generate_codepoints_by_name can be a lot simpler. | 16:26 | ||
jnthn | I seem to recall *something* about names changed along the way. | ||
nwc10 | :-) | ||
jnthn | This wouldn't surprise me. | ||
nwc10 | back in 2013? | ||
16:26
zakharyas joined
|
|||
nwc10 | and then | 16:26 | |
I think my "revised fix" is wrong - it manages to get the code that ignores '<' into the correct place | |||
in the C | |||
but the correct place to ignore '<' is in ucd2c.pl | 16:27 | ||
and never even put it into the C array | |||
and I also really don't get why U-0081 is NULL in that array | 16:28 | ||
Geth | MoarVM/kosher-unicode-names-only: 09dfa207e1 | (Nicholas Clark)++ | 2 files Don't add placeholders such as "<control>" to the Unicode names lookup hash. Including these make no sense - the hash is for a 1->1 mapping of name to codepoint, but for each of these names we have multiple values. The way our hashes are currently implemented (with "bind"), these duplicate keys are not ignored - we add hundreds of duplicate entries to the same ... (5 more lines) |
16:33 | |
timotimo | m: say uniparse(uniname("\x02")).raku | 18:00 | |
camelia | "\x[2]" | ||
18:01
Altai-man_ joined,
zakharyas left
18:03
sena_kun left
|
|||
Geth | MoarVM: 67c8413f5b | (Nicholas Clark)++ | tools/ucd2c.pl ucd2c.pl shells out to rakudo, without checking that it ran correctly. The error message gets lost in its garrulous output. |
18:37 | |
nwc10 | well, that was part of my problem. | ||
OK, with that, Unicode UCD 12.1, Emoji 12 (ie 12.0, not 12.1) I can *almost* rebuild files byte-for-byte perfectly | 18:39 | ||
but src/strings/unicode_db.c differs for uni_seq_722 to uni_seq_733 | |||
was Emoji_Combining_Sequence | |||
now Emoji_Keycap_Sequence | 18:40 | ||
and this makes little sense, as those things seem to be the same all the back to emoji-5.0 | |||
jnthn: yes, it's that code related to $usually | 18:56 | ||
timotimo | dispatch chains haven't been in any of jn's talks, right? | 19:09 | |
dogbert17 | there's some strange code in src/strings/unicode_db.c | 19:22 | |
what's happening here for example: | 19:23 | ||
75055 if (block) { | |||
75056 return block ? Block_enums[num+1] : Block_enums[0]; | |||
75057 } | |||
20:02
sena_kun joined
20:04
Altai-man_ left
20:14
zakharyas joined
20:19
zakharyas1 joined,
zakharyas left
|
|||
Geth | MoarVM: cfe6ed8f56 | (Nicholas Clark)++ | 3 files Consistent whitespace for the initialiser for codepoint_bitfield_indexes Previously the code would vary the amount of whitespace in the comment depending upon whether the code point happened to have a name. This means that unrelated changes would cause this initialiser to dance, creating collateral damage in the git diffs. ... (8 more lines) |
20:52 | |
21:29
hoelzro left,
hoelzro joined
21:30
zakharyas1 left
|
|||
timotimo | jnthn: what do i have to get right to make the guards from the dispatch program deopt correctly? do i copy the "deopt one" annotation? i think that may be what i've had before; a synthetic deopt point only has to be made if there wasn't already a deopt point available for some reason? | 21:39 | |
22:01
Altai-man_ joined
22:04
sena_kun left
22:10
lucasb joined
|
|||
timotimo | has there been much exploration of how dispatch chains are like trace jitting, and what that means for systems including them? | 22:21 | |
jnthn | Well, if we mean tracing the meta level, then yes, both imply something in the whole multi-level language or bind time analysis space | 22:50 | |
It's just that we don't really try to trace them, we just make explicit the operations that should end up in the dispatch program | |||
Or seen another way, only the set of dispatch transform/guard related syscalls are traced | 22:51 | ||
It's certainly no accident that I called that phase "record". :) | |||
timotimo | ah, yeah, meta-level tracing, not machine code instructions tracing; is that the correct difference? | 22:52 | |
jnthn | Well, sorta...I mean, the meta-level tracing, so far as I understand how the terminology is used, is about knowing which things are the interpreter and which things are the program. | 22:53 | |
e.g. the program counter is not interesting to trace the increments of | 22:54 | ||
If you don't have a meta level and are only tracing the executing bytecode then you don't care about this. | |||
For dispatch programs, I figure all the language level and MOP knowledge is meta | 22:55 | ||
timotimo | OK | 23:01 | |
just need to get the deopt of the generated guards correct | 23:02 | ||
23:03
evalable6 left
|
|||
jnthn | About the deopt question, though: I think you'll probably need synthetic deopt points; I think spesh plugins had the same situation, so I'd see how it was solved there. | 23:03 | |
timotimo | i stole the functions it used i think :D | ||
insert_arg_type_guard | 23:04 | ||
23:04
committable6 left
|
|||
timotimo | MVM_spesh_plugin_rewrite_resolve is probably the right place to steal from | 23:05 | |
23:06
committable6 joined
|
|||
timotimo | that code can steal from the prepargs instruction that sits in front of the spesh plugin invoke | 23:06 | |
steal the deopt annotations, that is | 23:07 | ||
jnthn | I think dispatch probably needs to be both a pre and post deopt point | 23:10 | |
timotimo | ah i can do that, it only needs an extra flag in the oplist? | 23:11 | |
jnthn | Think so | 23:14 | |
I think it needs to be all pre/post/all | |||
pre for guards ahead of it | |||
post for return type guard | 23:15 | ||
all for global deopt | |||
timotimo | not sure what "return type guard" means in this case | 23:16 | |
jnthn | As with invoke: we log and can guard on the return type of a call, and dispatch is (often) a way of making a call | 23:17 | |
timotimo | ah, ok, so there'll also want to be a guard for that that will come from the spesh log, not from the dispatch program or record | 23:18 | |
jnthn | Yes | 23:20 | |
iirc that's set as part of the return instruction | |||
Well, logged as part of... | |||
timotimo | via "is_caller_logging" right? | ||
less via, more "involving" | |||
23:24
evalable6 joined
|
|||
jnthn | yes | 23:27 | |
23:37
AlexDaniel left
|