Register coalescing.
commit69ac3ee6de4fdcc5dd50d7f8958a8138c90064b0
authorEdwin Smith <smith@fb.com>
Tue, 13 May 2014 18:24:12 +0000 (13 11:24 -0700)
committerJoelMarcey <joelm@fb.com>
Fri, 23 May 2014 23:09:14 +0000 (23 16:09 -0700)
treeeb2d9e9ff211cca7ee05f3cda2d09063160e02a4
parentdc60e0e0e6ff3b5e53908d97868722a3eadb3981
Register coalescing.

Summary: Coalescing is a form of hinting.  If two lifetimes are joined by
a copy, try to give the second one the same register as the first
one.  For this diff, two kinds of copies are supported:
1. instructions with the "passthrough" flag, e.g. Mov or AssertType
2. phi copies defined by Jmp srcs and DefLabel dests.

Reviewed By: @swtaarrs

Differential Revision: D1339748
hphp/runtime/vm/jit/back-end-x64.cpp
hphp/runtime/vm/jit/phys-loc.h
hphp/runtime/vm/jit/xls.cpp