4 ms·
Uh? This *is* the LuaJIT register allocator. Period. Code published 2009. Description published here: https://lua-users.org/lists/lua-l/2009-11/msg00089.html h
by mikemike 4y ago
Uh? This *is* the LuaJIT register allocator. Period.
Code published 2009. Description published here: https://lua-users.org/lists/lua-l/2009-11/msg00089.html https://lua-users.org/lists/lua-l/2009-11/msg00089.html (ignore the TLS cert error).
Coming up with a silly markting name, writing a naive implementation and then claiming it's their invention is impertinent. Especially since they mention LuaJIT itself in the text ...
- mkeeter 4y agoHi Mike, I promise that this was a genuine case of parallel evolution – I didn't read any LuaJIT source or documentation while writing the code or article. Afterwards, I searched for "reverse linear scan register allocation", discovered the blog post which referenced LuaJIT, and linked it in the text. I've updated the article to move the LuaJIT reference to the top, and adjusted the phrasing to be clear that this is not an invention, it's simply an interesting implementation. What you call "naive", others may consider didactic :) Let me know if you have other feedback or suggested changes, either here or via email (in my profile).
- mikemike 4y agoYou may want to clarify that in the GitHub repo, too. See my issue there. If you want to go the didactic route, then consider documenting the improvements over the naive implementation: register hinting, register priorities (PHI), two-headed register picking, fixed register picking, optimized register picking for 2-operand instructions (x86/x64), register pair picking, ABI calling-conventions, weak allocations, cost heuristics, eviction heuristics, lazy/eager spill/restore, rematerialization, register shuffling (PHI) with cycle breaking, register renaming, etc. That's all in ~2000 lines of lj_asm.c.
- mkeeter 4y agoDone, I've added the same disclaimer to the Github repo. Given that your Github issue [1] was originally titled "Take Down Notice", I'm now hesitant to read any LuaJIT code. If I read lj_asm.c and learn from it, will you try to take down any register allocation code that I write in the future? [1] https://github.com/mkeeter/ssra/issues/1 https://github.com/mkeeter/ssra/issues/1
- mikemike 4y agoI had already changed the title after your reply. The objection is about the naming, which implies an invention claim without further explanation. It's not about the code.
- fros1y 4y agoWait, Are you demanding that independent implementations of an idea you explicitly dedicated to the public domain must then describe the various ways your version is “superior”? Who hurt you?
- rrss 4y agoThis is such an amazingly uncharitable response. > I cannot possibly know all of the literature Maybe this applies to other people too?