From c4161ae787873f9f63a5682dbab809361d3d8b98 Mon Sep 17 00:00:00 2001 From: bsimmers Date: Tue, 21 May 2013 10:13:56 -0700 Subject: [PATCH] Turn SrcRec There's no compelling reason for this to be a fixed constant. I also renamed EvalMaxTrans in an attempt to differentiate it from the new option. --- hphp/runtime/base/runtime_option.h | 3 ++- hphp/runtime/vm/translator/srcdb.cpp | 2 +- hphp/runtime/vm/translator/srcdb.h | 2 -- hphp/runtime/vm/translator/translator-x64.cpp | 7 ++++--- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/hphp/runtime/base/runtime_option.h b/hphp/runtime/base/runtime_option.h index 0a4e68f02..acc73794c 100644 --- a/hphp/runtime/base/runtime_option.h +++ b/hphp/runtime/base/runtime_option.h @@ -399,6 +399,8 @@ public: F(bool, ProfileBC, false) \ F(bool, ProfileHWEnable, true) \ F(string, ProfileHWEvents, string("")) \ + F(uint32_t, JitMaxTranslations, 12) \ + F(uint64_t, JitGlobalTranslationLimit, -1) \ F(bool, JitTrampolines, true) \ F(string, JitProfilePath, string("")) \ F(int32_t, JitStressTypePredPercent, 0) \ @@ -433,7 +435,6 @@ public: F(bool, HHIRAllocXMMRegs, true) \ F(bool, HHIRGenerateAsserts, debug) \ F(bool, HHIRDirectExit, true) \ - F(uint64_t, MaxTrans, -1) \ F(bool, HHIRDeadCodeElim, true) \ /* DumpBytecode =1 dumps user php, =2 dumps systemlib & user php */ \ F(int32_t, DumpBytecode, 0) \ diff --git a/hphp/runtime/vm/translator/srcdb.cpp b/hphp/runtime/vm/translator/srcdb.cpp index cc6f1e2f9..7adf024a4 100644 --- a/hphp/runtime/vm/translator/srcdb.cpp +++ b/hphp/runtime/vm/translator/srcdb.cpp @@ -80,7 +80,7 @@ void SrcRec::emitFallbackJump(TCA from, int cc /* = -1 */) { void SrcRec::newTranslation(TCA newStart) { // When translation punts due to hitting limit, will generate one // more translation that will call the interpreter. - assert(m_translations.size() <= kMaxTranslations); + assert(m_translations.size() <= RuntimeOption::EvalJitMaxTranslations); TRACE(1, "SrcRec(%p)::newTranslation @%p, ", this, newStart); diff --git a/hphp/runtime/vm/translator/srcdb.h b/hphp/runtime/vm/translator/srcdb.h index 64968729f..051a55bc5 100644 --- a/hphp/runtime/vm/translator/srcdb.h +++ b/hphp/runtime/vm/translator/srcdb.h @@ -70,8 +70,6 @@ private: * SrcRec: record of translator output for a given source location. */ struct SrcRec { - static const unsigned int kMaxTranslations = 12; - SrcRec() : m_topTranslation(nullptr) , m_anchorTranslation(0) diff --git a/hphp/runtime/vm/translator/translator-x64.cpp b/hphp/runtime/vm/translator/translator-x64.cpp index 9e307baad..74d2a1ee5 100644 --- a/hphp/runtime/vm/translator/translator-x64.cpp +++ b/hphp/runtime/vm/translator/translator-x64.cpp @@ -1276,7 +1276,8 @@ TCA TranslatorX64::retranslateAndPatchNoIR(SrcKey sk, if (!writer) return nullptr; SKTRACE(1, sk, "retranslateAndPatchNoIR\n"); SrcRec* srcRec = getSrcRec(sk); - if (srcRec->translations().size() == SrcRec::kMaxTranslations + 1) { + if (srcRec->translations().size() == + RuntimeOption::EvalJitMaxTranslations + 1) { // we've gone over the translation limit and already have an anchor // translation that will interpret, so just return NULL and force // interpretation of this BB. @@ -1450,7 +1451,7 @@ TranslatorX64::translate(const TranslArgs& args) { assert(((uintptr_t)vmfp() & (sizeof(Cell) - 1)) == 0); if (!args.m_interp) { - if (m_numHHIRTrans == RuntimeOption::EvalMaxTrans) { + if (m_numHHIRTrans == RuntimeOption::EvalJitGlobalTranslationLimit) { RuntimeOption::EvalJit = false; ThreadInfo::s_threadInfo->m_reqInjectionData.updateJit(); } @@ -10776,7 +10777,7 @@ TranslatorX64::translateInstr(const Tracelet& t, bool TranslatorX64::checkTranslationLimit(SrcKey sk, const SrcRec& srcRec) const { - if (srcRec.translations().size() == SrcRec::kMaxTranslations) { + if (srcRec.translations().size() == RuntimeOption::EvalJitMaxTranslations) { INC_TPC(max_trans); if (debug && Trace::moduleEnabled(Trace::tx64, 2)) { const vector& tns = srcRec.translations();