コード例 #1
0
ファイル: ir-translator.cpp プロジェクト: evictor/hhvm
void
IRTranslator::translateWIterNext(const NormalizedInstruction& i) {
  bool invertCond = false;
  Offset targetOffset = getBranchTarget(i, invertCond);

  HHIR_EMIT(WIterNext,
            i.imm[0].u_IVA,
            targetOffset,
            i.imm[2].u_IVA,
            invertCond);
}
コード例 #2
0
ファイル: ir-translator.cpp プロジェクト: RyanCccc/hhvm
void
IRTranslator::translateIterInit(const NormalizedInstruction& i) {
  bool invertCond = false;
  Offset targetOffset = getBranchTarget(i, invertCond);

  HHIR_EMIT(IterInit,
            i.imm[0].u_IVA,
            targetOffset,
            i.imm[2].u_IVA,
            invertCond,
            instrJmpFlags(i));
}
コード例 #3
0
        void TernaryExpressionSyntax::emit(types::NameResolutionContextStack *ctx, emit::MethodBody *method)
        {
            _cond->emit(ctx, method);
            if (_castCondition != nullptr) _castCondition->emitCall(method);

            auto brfalse = new emit::BrfalseInstr();
            method->emit(brfalse);

            _iftrue->emit(ctx, method);
            if (_castTrue != nullptr) _castTrue->emitCall(method);
            auto brafter = new emit::BrInstr();
            method->emit(brafter);

            auto brfalse_target = brfalse->getBranchTarget();
            method->emitDecorator(brfalse_target);
            _iffalse->emit(ctx, method);
            if (_castFalse != nullptr) _castFalse->emitCall(method);

            auto brafter_target = brafter->getBranchTarget();
            method->emitDecorator(brafter_target);
        }