From 5e7e26fe1ebf42e472c76997894e2e2d9de0d1b9 Mon Sep 17 00:00:00 2001 From: Michael Colavita Date: Fri, 6 Aug 2021 04:48:10 -0700 Subject: [PATCH] Kill some unnecessary SyncMode::Syncs Summary: Remove a few SyncMode::Syncs that are unnecessary. This cuts down on the number of eager syncs we will insert during profiling and helps us to verify memory effects. Reviewed By: ricklavoie Differential Revision: D30149466 fbshipit-source-id: a7c94c21ff9bbd4fe98273e2a695dcf22525c161 --- hphp/runtime/vm/jit/irlower-iter.cpp | 2 +- hphp/runtime/vm/jit/irlower-minstr.cpp | 18 ++++++++++++------ hphp/runtime/vm/jit/native-calls.cpp | 30 +++++++++++++++--------------- 3 files changed, 28 insertions(+), 22 deletions(-) diff --git a/hphp/runtime/vm/jit/irlower-iter.cpp b/hphp/runtime/vm/jit/irlower-iter.cpp index fb037f01307..5b9b8203437 100644 --- a/hphp/runtime/vm/jit/irlower-iter.cpp +++ b/hphp/runtime/vm/jit/irlower-iter.cpp @@ -178,7 +178,7 @@ void implIterFree(IRLS& env, const IRInstruction* inst, CallSpec meth) { auto const fp = srcLoc(env, inst, 0).reg(); auto const iterOff = iterOffset(inst->marker(), extra->iterId); - cgCallHelper(vmain(env), env, meth, kVoidDest, SyncOptions::Sync, + cgCallHelper(vmain(env), env, meth, kVoidDest, SyncOptions::None, argGroup(env, inst).addr(fp, iterOff)); } diff --git a/hphp/runtime/vm/jit/irlower-minstr.cpp b/hphp/runtime/vm/jit/irlower-minstr.cpp index 3b97d85c0c4..d8d0591cc09 100644 --- a/hphp/runtime/vm/jit/irlower-minstr.cpp +++ b/hphp/runtime/vm/jit/irlower-minstr.cpp @@ -898,10 +898,13 @@ namespace { void implDictGet(IRLS& env, const IRInstruction* inst, MOpMode mode) { assertx(mode == MOpMode::None || mode == MOpMode::Warn); BUILD_OPTAB(DICTGET_HELPER_TABLE, getKeyType(inst->src(1)), mode); + auto const sync = mode == MOpMode::None + ? SyncOptions::None + : SyncOptions::Sync; auto const args = argGroup(env, inst).ssa(0).ssa(1); auto& v = vmain(env); - cgCallHelper(v, env, target, callDestTV(env, inst), SyncOptions::Sync, args); + cgCallHelper(v, env, target, callDestTV(env, inst), sync, args); } void implDictSet(IRLS& env, const IRInstruction* inst) { @@ -964,7 +967,7 @@ void cgDictIsset(IRLS& env, const IRInstruction* inst) { auto args = argGroup(env, inst).ssa(0).ssa(1); auto& v = vmain(env); - cgCallHelper(v, env, target, callDest(env, inst), SyncOptions::Sync, args); + cgCallHelper(v, env, target, callDest(env, inst), SyncOptions::None, args); } void cgDictIdx(IRLS& env, const IRInstruction* inst) { @@ -984,7 +987,7 @@ void cgDictIdx(IRLS& env, const IRInstruction* inst) { auto args = argGroup(env, inst).ssa(0).ssa(1).typedValue(2); auto& v = vmain(env); cgCallHelper(v, env, target, callDestTV(env, inst), - SyncOptions::Sync, args); + SyncOptions::None, args); } /////////////////////////////////////////////////////////////////////////////// @@ -997,12 +1000,15 @@ void implKeysetGet(IRLS& env, const IRInstruction* inst) { auto const mode = inst->op() == KeysetGetQuiet ? MOpMode::None : MOpMode::Warn; + auto const sync = inst->op() == KeysetGetQuiet + ? SyncOptions::None + : SyncOptions::Sync; BUILD_OPTAB(KEYSETGET_HELPER_TABLE, getKeyType(key), mode); auto args = argGroup(env, inst).ssa(0).ssa(1); auto& v = vmain(env); - cgCallHelper(v, env, target, callDestTV(env, inst), SyncOptions::Sync, args); + cgCallHelper(v, env, target, callDestTV(env, inst), sync, args); } } @@ -1058,7 +1064,7 @@ void cgKeysetIsset(IRLS& env, const IRInstruction* inst) { auto args = argGroup(env, inst).ssa(0).ssa(1); auto& v = vmain(env); - cgCallHelper(v, env, target, callDest(env, inst), SyncOptions::Sync, args); + cgCallHelper(v, env, target, callDest(env, inst), SyncOptions::None, args); } void cgKeysetIdx(IRLS& env, const IRInstruction* inst) { @@ -1069,7 +1075,7 @@ void cgKeysetIdx(IRLS& env, const IRInstruction* inst) { auto args = argGroup(env, inst).ssa(0).ssa(1).typedValue(2); auto& v = vmain(env); cgCallHelper(v, env, target, callDestTV(env, inst), - SyncOptions::Sync, args); + SyncOptions::None, args); } /////////////////////////////////////////////////////////////////////////////// diff --git a/hphp/runtime/vm/jit/native-calls.cpp b/hphp/runtime/vm/jit/native-calls.cpp index 277cc433091..72021a37fc7 100644 --- a/hphp/runtime/vm/jit/native-calls.cpp +++ b/hphp/runtime/vm/jit/native-calls.cpp @@ -151,7 +151,7 @@ static CallMap s_callMap { {ConvObjToDbl, convObjToDblHelper, DSSA, SSync, {{SSA, 0}}}, - {ConvStrToDbl, convStrToDblHelper, DSSA, SSync, + {ConvStrToDbl, convStrToDblHelper, DSSA, SNone, {{SSA, 0}}}, {ConvResToDbl, convResToDblHelper, DSSA, SNone, {{SSA, 0}}}, @@ -284,27 +284,27 @@ static CallMap s_callMap { {{SSA, 0}, extra(&InOutArgsData::numArgs), extra(&InOutArgsData::inoutArgs)}}, - {HasToString, &ObjectData::hasToString, DSSA, SSync, + {HasToString, &ObjectData::hasToString, DSSA, SNone, {{SSA, 0}}}, /* Type specialized comparison operators */ - {GtStr, static_cast(more), DSSA, SSync, + {GtStr, static_cast(more), DSSA, SNone, {{SSA, 0}, {SSA, 1}}}, - {GteStr, static_cast(moreEqual), DSSA, SSync, + {GteStr, static_cast(moreEqual), DSSA, SNone, {{SSA, 0}, {SSA, 1}}}, - {LtStr, static_cast(less), DSSA, SSync, + {LtStr, static_cast(less), DSSA, SNone, {{SSA, 0}, {SSA, 1}}}, - {LteStr, static_cast(lessEqual), DSSA, SSync, + {LteStr, static_cast(lessEqual), DSSA, SNone, {{SSA, 0}, {SSA, 1}}}, {EqStr, static_cast(equal), DSSA, SSync, {{SSA, 0}, {SSA, 1}}}, {NeqStr, static_cast(nequal), DSSA, SSync, {{SSA, 0}, {SSA, 1}}}, - {SameStr, static_cast(same), DSSA, SSync, + {SameStr, static_cast(same), DSSA, SNone, {{SSA, 0}, {SSA, 1}}}, - {NSameStr, static_cast(nsame), DSSA, SSync, + {NSameStr, static_cast(nsame), DSSA, SNone, {{SSA, 0}, {SSA, 1}}}, - {CmpStr, static_cast(compare), DSSA, SSync, + {CmpStr, static_cast(compare), DSSA, SNone, {{SSA, 0}, {SSA, 1}}}, {GtStrInt, static_cast(more), DSSA, SSync, {{SSA, 0}, {SSA, 1}}}, @@ -352,15 +352,15 @@ static CallMap s_callMap { {{SSA, 0}, {SSA, 1}}}, {CmpArrLike, ArrayData::Compare, DSSA, SSync, {{SSA, 0}, {SSA, 1}}}, - {GtRes, static_cast(more), DSSA, SSync, + {GtRes, static_cast(more), DSSA, SNone, {{SSA, 0}, {SSA, 1}}}, - {GteRes, static_cast(moreEqual), DSSA, SSync, + {GteRes, static_cast(moreEqual), DSSA, SNone, {{SSA, 0}, {SSA, 1}}}, - {LtRes, static_cast(less), DSSA, SSync, + {LtRes, static_cast(less), DSSA, SNone, {{SSA, 0}, {SSA, 1}}}, - {LteRes, static_cast(lessEqual), DSSA, SSync, + {LteRes, static_cast(lessEqual), DSSA, SNone, {{SSA, 0}, {SSA, 1}}}, - {CmpRes, static_cast(compare), DSSA, SSync, + {CmpRes, static_cast(compare), DSSA, SNone, {{SSA, 0}, {SSA, 1}}}, /* Static prop helpers */ @@ -417,7 +417,7 @@ static CallMap s_callMap { {StringGet, MInstrHelpers::stringGetI, DSSA, SSync, {{SSA, 0}, {SSA, 1}}}, {PairIsset, MInstrHelpers::pairIsset, DSSA, SSync, {{SSA, 0}, {SSA, 1}}}, - {VectorIsset, MInstrHelpers::vectorIsset, DSSA, SSync, + {VectorIsset, MInstrHelpers::vectorIsset, DSSA, SNone, {{SSA, 0}, {SSA, 1}}}, {ElemVecU, MInstrHelpers::elemVecIU, DSSA, SSync, {{SSA, 0}, {SSA, 1}}}, {ThrowOutOfBounds, throwOOBException, DNone, SSync, {{TV, 0}, {TV, 1}}}, -- 2.11.4.GIT