|
01:00
cognominal joined
01:48
ilbot3 joined
01:50
zakharyas joined
06:42
domidumont joined
06:48
domidumont joined
|
|||
| JimmyZ | jnthn: I found when compiling rakudo, it never write any sc and sc_idx in serialize_object and write_locate_sc_and_index, when will it write it? | 10:40 | |
| jnthn | JimmyZ: Maybe you're looking for write_obj_ref? | 10:45 | |
| JimmyZ | jnthn: nope, it only write "packed", because sc_id <= PACKED_SC_MAX && idx <= PACKED_SC_IDX_MAX never be false | 10:48 | |
| jnthn: and same for serialize_object | |||
| jnthn: sc <= OBJECTS_TABLE_ENTRY_SC_MAX && sc_idx <= OBJECTS_TABLE_ENTRY_SC_IDX_MAX never be false too. | 10:49 | ||
| jnthn | OK, then I'm not understanding what you're looking for | ||
| JimmyZ | jnthn: I am looking for when it will be true and write sc_id and idx | 10:50 | |
| nwc10 | (will be AFK very shortly) | 10:51 | |
| I think that nothing we generate is big enough to need to write a full sc_id and idx | |||
| jnthn | Yeah, that's the conclusion I was coming to looking at the code | ||
| We didn't hit that limit yet | 10:52 | ||
| nwc10 | but the packed format is (to my mind) too small to be safe | ||
| someone is going to generate code that busts it | |||
|
10:52
brrt joined
|
|||
| JimmyZ | ok, thanks. | 10:52 | |
| brrt | good * #moarvm | 10:53 | |
| jnthn: did you manage to read the webkit b3 post yet? | |||
| jnthn | brrt: No...was exhausted :( | ||
| brrt | no pressure :-) | ||
| jnthn goes to nom, bbiab :) | |||
| brrt | nom well :-) | 10:54 | |
| brrt will nom too | 10:59 | ||
|
12:45
domidumont joined
13:36
cognominal joined
14:39
zakharyas joined
15:21
domidumont joined
|
|||
| jnthn will probably get time to look at the heap profiler regression thingy tomorrow :) | 17:19 | ||
| timotimo | yays | 17:20 | |
|
17:46
domidumont joined
19:10
brrt joined
|
|||
| brrt | \o | 19:10 | |
| anyone else who did read the b3 thing possibly had the impression that b3 looks a lot like the expr jit? | 19:12 | ||
| nwc10 | I don't know enough to answer that. | 19:13 | |
| For starters, I don't know what "the expr jit" is. Certainly not in this context. | |||
| brrt | its the even-moar-jit branch :-) | 19:14 | |
| nwc10 | (I did read it, and thought "oh, more evidence that not using LLVM was probably the right choice) | ||
| aha OK | |||
| brrt | aye that too.. | ||
| well they are alike in a few aspects: both use 2 intermediaye representation with very similar functions | 19:16 | ||
| timotimo | to be honest i didn't read the b3 article :S | 19:17 | |
| brrt | there is a similar conversion step between these | ||
| timotimo | like the tiling step? | 19:18 | |
| brrt | they also use arrays and offsets rather than pointers in the ir | ||
| yes | |||
| so the good thing is, this pretty much validates our approach | 19:21 | ||
| jnthn | Great minds think alike | ||
.oO( All fools are the same :P ) |
19:22 | ||
| brrt | the curious thing is how distinct teams witbout plausible flows of information can have such a convergent design | ||
| :-p | |||
| thw not so good thing..... if well-funded webkit can't get llvm to perform in a JIT setting, then who can? | 19:24 | ||
| i mean, llvm is by rights awesome | 19:25 | ||
| jnthn | I think that's part of the problem. | ||
| brrt | hmmm... wh | ||
| jnthn | "X is awesome at generating fast code." "Hmm, so let's use X in Y to make it awesome!" | ||
| hoelzro | that b3 article is *long* | ||
| brrt | y? | ||
| it is :-) | 19:26 | ||
| hoelzro | I got like halfway through it before filing it into "read later" | ||
| jnthn | It's not obvious that just 'cus something does great code-gen in one scenario means it will be a good fit in another scenario. | ||
| Optimization algorithms take time, but the time budget is quite difference in a C/C++ compiler vs. a JIT compiler. | 19:27 | ||
| *different | |||
| And designing abstractions is Really Hard normally; designing ones that hold up in scenarios where one is trying to sqeeze out performance is crazy hard. | 19:28 | ||
| brrt | from what i understand, part of the problem is also that concepts like deopt guards become multi-basivblock things in llvm | 19:29 | |
| high-level dynamic language concepts dont fit easily | |||
| jnthn | Yeah, that seems to be the recurring pattern. | 19:30 | |
| It's also quite natural to go back and patch up generated machine code in various ways in dynamic language VMs. | |||
| Which I believe can also be tricky to get right. | 19:31 | ||
| brrt | not what we do in moar-jit though | ||
| what would we use it for? | 19:32 | ||
| jnthn | Can have evolving dispatch fast-paths for example | 19:35 | |
| The CLR does one of those for interface dispatches...checks if the type is a commonly occuring one, if yes then there's a fast path, otherwise it calls back to a full dispatch and bumps a counter | 19:36 | ||
| If the slow path counter hits a certain value it patches the machine code up with whatever seems to be the in fashion thing to dispatch to now :) | |||
| So interface calls that usually dispatch to one concrete type, but sometimes might change that type with time, will hit the fast path | 19:37 | ||
| A kind of monomorphic inline cache I guess | 19:38 | ||
| brrt | ... right... self-modifying sp-fastinvoke | 19:39 | |
| hey we could do that easier.... no | 19:40 | ||
| cool idea though | |||
| jnthn | I guess also in trace JITs it could be used to modify an interpreter fallback to instead jump directly into a side-trace that gets compiled later. | ||
| timotimo | we'll get those inline caches | ||
| yeah, pypy has had that for ages, they call it "bridge" and they compile those brigdes, too | 19:41 | ||
| someone on reddit (or something?) recently called moar's runloop bad. i wonder how they meant it, and in what way we could improve it | |||
| but i couldn't find the post again :\ | |||
| brrt | i think luajit2 compiles them too | 19:42 | |
| the runloop? i honestly dont see what that might mean | |||
| timotimo | we could have used C as an intermediate representation and embed the tiny c compiler (tcc) within moarvm :P | ||
| i think it's just interp.c | |||
| jnthn | Could mean the interpreter, but we already do computed goto where possible, and I'm not sure I want the maint headache of doing it in assembly :) | 19:43 | |
| timotimo | i thought you couldn't do very much better than computed goto | ||
| brrt | doesmt make any sense to make it in assembler; the majority of our ops is a function call with maybe | 19:45 | |
| jnthn | There'll be ways to suqeeze a little more out, but I'm quite sure we've got a lot of easier performance wins to be had before that. | ||
| brrt | a few branches | ||
| timotimo | yeah, by making spesh and the jit better | ||
| jnthn | brrt: It makes even less sense when the C compiler is inlining a bunch of those functions :) | ||
| brrt | right :-) | 19:46 | |
| by making rakudo smartet :-p | |||
| timotimo | yeah, that's also worthwhile | 19:47 | |
| jnthn | But yeah, people saying "X is bad" isn't very interesting unless they actually proposing a concrete alternative they believe to be better. :) | ||
| timotimo | worth alot | ||
| jnthn | I like this alot | ||
| :P | |||
| brrt | its alot work to make vms fast | 19:48 | |
| rigbt... battery is running out though | 19:50 | ||
| timotimo | i hope our vm will be alot fast soon | 19:51 | |
| i wonder if i should do fuzzing again? | 19:53 | ||
| with a newer moar and probably not the whole stage0 | |||
| (because some files in there are just way too f'ing big) | |||
| brrt off | 19:54 | ||
| timotimo | oh, jnthn, maybe you have a bit of brane to spare to look at my generate_buildallplan branch and see what i'm doing wrong there? | 19:57 | |
| if i get that to work i can perhaps even take a closer look at how we could improve codegen for nativecall | |||
|
20:09
Ven joined
|
|||
| jnthn | timotimo: May find time for that soon, now reframe is done eating the brane cycles... :) | 20:14 | |
| moritz | has reframe been merged? | 20:15 | |
| jnthn | Not tonight though...didn't sleep enough last night, then various meetings today | ||
| moritz: Yes | |||
| Last week. | |||
| moritz | \o/ | ||
| moritz quite out of the loop | 20:16 | ||
| are there any benchmarks or memory comparisons available that compare before and after the merge? | |||
| jnthn | moritz: Not yet, and the work so far was more the big refactor to enable the other improvements. | 20:17 | |
| moritz: So was going to do the before/after once I've got the rest of the improvemnets, or at least more of them, in place. :) | 20:18 | ||
| timotimo | i don't think we actually have memory savings, do we? | 20:26 | |
| or even potential for that? i'm not sure | 20:27 | ||
| cat says "021snkh" | |||