From bc667596e10ece298b3a983c90c932308281185e Mon Sep 17 00:00:00 2001 From: Guilherme Ottoni Date: Mon, 1 Jul 2013 17:51:44 -0700 Subject: [PATCH] Fix InterpOne's output for predicted types We were always pushing the output type onto the simulated stack, effectively passing it as an asserted type, even when the type came from type prediction. --- hphp/runtime/vm/jit/hhbctranslator.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hphp/runtime/vm/jit/hhbctranslator.cpp b/hphp/runtime/vm/jit/hhbctranslator.cpp index db4370a40..b8d9c7ba6 100644 --- a/hphp/runtime/vm/jit/hhbctranslator.cpp +++ b/hphp/runtime/vm/jit/hhbctranslator.cpp @@ -3357,6 +3357,8 @@ Type HhbcTranslator::interpOutputType(const NormalizedInstruction& inst) const { return t.isBoxed() ? t : boxType(t); }; + if (inst.outputPredicted) return Type::Gen; + auto outFlag = getInstrInfo(inst.op()).type; if (outFlag == OutFInputL) { outFlag = inst.preppedByRef ? OutVInputL : OutCInputL;