Represent type sources as a union of IRInstruction* and SSATmp*.
commit30dff9fa4d239481ba2a26ffda4c2ba3db75ab55
authorAlex Malyshev <alexanderm@fb.com>
Mon, 25 Aug 2014 19:41:55 +0000 (25 12:41 -0700)
committerSara Golemon <sgolemon@fb.com>
Tue, 26 Aug 2014 04:47:26 +0000 (25 21:47 -0700)
tree97578f66ad0014b02a894517aba36e7c26c98515
parent499781f2195bf08d24a2bc5bd9d80a25910fd3cb
Represent type sources as a union of IRInstruction* and SSATmp*.

Summary: We currently use an SSATmp* to represent a type source, and if it's a
FramePtr then we treat it as a guard, otherwise we treat it as a
value. This is awkward because we chase FramePtr values to find the
appropriate guard for a local, when we could just have tracked the
correct guard in the first place. That and we would like to remove
FramePtr dests from {Guard,Check,Assert}Loc.

Reviewed By: @swtaarrs

Differential Revision: D1517845
hphp/runtime/vm/jit/frame-state.cpp
hphp/runtime/vm/jit/frame-state.h
hphp/runtime/vm/jit/guard-relaxation.cpp
hphp/runtime/vm/jit/guard-relaxation.h
hphp/runtime/vm/jit/ir-builder.cpp
hphp/runtime/vm/jit/ir-builder.h
hphp/runtime/vm/jit/ir.h
hphp/runtime/vm/jit/type-source.cpp [new file with mode: 0644]
hphp/runtime/vm/jit/type-source.h [new file with mode: 0644]