mozilla :: #ionmonkey

9 Aug 2017
13:38nbpOur MIR hash functions contains is computed as an imul instruction, instead of being shift & add & sub. (hash << 16) + (hash << 6) - hash == hash * (1 << 16 + 1 << 6 - 1)
13:38nbpfun :)
13:57jandemnbp: fwiw we should use the stuff in mfbt/HashFunctions.h - we&#39;ve been fixing a lot of hand-rolled hash functions :)
14:04* nbp looking
14:07nbpjandem: AddUint32ToHash sounds way more complex than our current hash, but the comment also suggest that it might be better because it spreads the bits more.
14:25tcampbellnbp: still working on last review. Being sick has not been conducive to reasoning about dataflow passes :/
14:26tcampbellAt least I understand code now, but I want to verify a few more cases don&#39;t become degenerate
14:28nbptcampbell: Thanks.
14:30nbptcampbell: There is one thing I understood from practice, is that in graph worlds, a lot of (every?) problem can be expressed by adding a finite set of flags (never removing) and a fix-point.
14:31nbptcampbell: I guess not every, because numbering the nodes won&#39;t work with a finite set of flags.
14:32nbpI am just sad that compilers are not designed in a flag oriented way.
14:38tcampbellI feel other compilers are better at metadata side-tables than Ion is
14:43tcampbellI worked on one internal compiler that had a nice way of organizing graph data as effectively database columns so it was very cheap to bind and unbind storage slots by having common indices and struct-of-arrays data layout
16:06nbpjandem: I see what you mean with ResumePoint and Snapshots being a big part of the compiler. It sounds like we have a huge overhead, and maybe we should move to some form of MDeltaResumePoint, and do something similar for snapshots.
16:07nbpjandem: the problem is that we have snapshots to capture all the allocations, and we cannot predict that allocations would remain identical, thus this would be the allocator task to allocate these LDeltaSnapshot
16:08nbpjandem: another issue with LDeltaSnapshots, is that we cannot safely stack them indefinitely, because the SnapshotIterator is not allowed to allocate any memory.
16:10nbpAlso, iterating over operands of MDeltaResumePoint would be huge.
16:11nbpbut I wonder how many times we really need to walk over all the operands of a single resume point
10 Aug 2017
No messages
Last message: 13 days and 4 hours ago