From 1c50cae7634fd939f53962016f8ea92338f4d472 Mon Sep 17 00:00:00 2001 From: Paul Tarjan Date: Fri, 7 Jun 2013 15:05:46 -0700 Subject: [PATCH] s/Call/CPPCall/ A precursor to moving the Transl namespace to JIT. We have an IR opcode `Call` and this would conflict. Those should probably be in another namespace, but this is easier. This was way easier to do in a compiled language :) --- hphp/runtime/vm/jit/codegen.cpp | 18 ++++++++++-------- hphp/runtime/vm/jit/codegen.h | 6 +++--- hphp/runtime/vm/jit/translator-x64.cpp | 25 +++++++++++++------------ hphp/runtime/vm/jit/translator-x64.h | 16 ++++++++-------- 4 files changed, 34 insertions(+), 31 deletions(-) diff --git a/hphp/runtime/vm/jit/codegen.cpp b/hphp/runtime/vm/jit/codegen.cpp index a30555241..042a6313e 100644 --- a/hphp/runtime/vm/jit/codegen.cpp +++ b/hphp/runtime/vm/jit/codegen.cpp @@ -1069,7 +1069,7 @@ void CodeGenerator::cgCallHelper(Asm& a, dstReg0 = info.reg(0); dstReg1 = info.reg(1); } - return cgCallHelper(a, Transl::Call(addr), dstReg0, dstReg1, sync, args, + return cgCallHelper(a, Transl::CppCall(addr), dstReg0, dstReg1, sync, args, destType); } @@ -1079,11 +1079,12 @@ void CodeGenerator::cgCallHelper(Asm& a, SyncOptions sync, ArgGroup& args, DestType destType) { - cgCallHelper(a, Transl::Call(addr), dstReg, InvalidReg, sync, args, destType); + cgCallHelper(a, Transl::CppCall(addr), dstReg, InvalidReg, sync, args, + destType); } void CodeGenerator::cgCallHelper(Asm& a, - const Transl::Call& call, + const Transl::CppCall& call, PhysReg dstReg, SyncOptions sync, ArgGroup& args, @@ -1092,7 +1093,7 @@ void CodeGenerator::cgCallHelper(Asm& a, } void CodeGenerator::cgCallHelper(Asm& a, - const Transl::Call& call, + const Transl::CppCall& call, PhysReg dstReg0, PhysReg dstReg1, SyncOptions sync, @@ -1103,7 +1104,7 @@ void CodeGenerator::cgCallHelper(Asm& a, } void CodeGenerator::cgCallHelper(Asm& a, - const Transl::Call& call, + const Transl::CppCall& call, PhysReg dstReg0, PhysReg dstReg1, SyncOptions sync, @@ -3633,7 +3634,7 @@ void CodeGenerator::cgCallBuiltin(IRInstruction* inst) { // if the return value is returned by reference, we don't need the // return value from this call since we know where the value is. - cgCallHelper(m_as, Transl::Call((TCA)func->nativeFuncPtr()), + cgCallHelper(m_as, Transl::CppCall((TCA)func->nativeFuncPtr()), isCppByRef(funcReturnType) ? InvalidReg : dstReg, kSyncPoint, callArgs); @@ -4259,7 +4260,8 @@ void CodeGenerator::cgGuardRefs(IRInstruction* inst) { auto bitsValReg = m_rScratch; // Load the bit values in bitValReg: // bitsValReg <- [bitsValPtr + (firstBitNum / 64)] - m_as.load_reg64_disp_reg64(bitsPtrReg, sizeof(uint64_t) * (firstBitNum / 64), + m_as.load_reg64_disp_reg64(bitsPtrReg, + sizeof(uint64_t) * (firstBitNum / 64), bitsValReg); // bitsValReg <- bitsValReg & mask64 m_as.and_reg64_reg64(mask64Reg, bitsValReg); @@ -4480,7 +4482,7 @@ void CodeGenerator::cgLdClsMethodFCache(IRInstruction* inst) { StaticMethodFCache::lookupIR; // preserve destCtxReg across the call since it wouldn't be otherwise RegSet toSave = m_state.liveRegs[inst] | RegSet(destCtxReg); - cgCallHelper(a, Transl::Call((TCA)lookup), + cgCallHelper(a, Transl::CppCall((TCA)lookup), funcDestReg, InvalidReg, kSyncPoint, ArgGroup(m_regs).imm(ch) diff --git a/hphp/runtime/vm/jit/codegen.h b/hphp/runtime/vm/jit/codegen.h index 95d9215f2..55c797116 100644 --- a/hphp/runtime/vm/jit/codegen.h +++ b/hphp/runtime/vm/jit/codegen.h @@ -174,20 +174,20 @@ private: ArgGroup& args, DestType destType = DestType::SSA); void cgCallHelper(Asm& a, - const Transl::Call& call, + const Transl::CppCall& call, PhysReg dstReg, SyncOptions sync, ArgGroup& args, DestType destType = DestType::SSA); void cgCallHelper(Asm& a, - const Transl::Call& call, + const Transl::CppCall& call, PhysReg dstReg0, PhysReg dstReg1, SyncOptions sync, ArgGroup& args, DestType destType = DestType::SSA); void cgCallHelper(Asm& a, - const Transl::Call& call, + const Transl::CppCall& call, PhysReg dstReg0, PhysReg dstReg1, SyncOptions sync, diff --git a/hphp/runtime/vm/jit/translator-x64.cpp b/hphp/runtime/vm/jit/translator-x64.cpp index 2f41991e5..245072aaf 100644 --- a/hphp/runtime/vm/jit/translator-x64.cpp +++ b/hphp/runtime/vm/jit/translator-x64.cpp @@ -362,7 +362,7 @@ TranslatorX64::emitCall(X64Assembler& a, TCA dest) { } void -TranslatorX64::emitCall(X64Assembler& a, Call call) { +TranslatorX64::emitCall(X64Assembler& a, CppCall call) { if (call.isDirect()) { return emitCall(a, (TCA)call.getAddress()); } @@ -507,16 +507,16 @@ emitEagerVMRegSave(X64Assembler& a, return start; } -Call TranslatorX64::getDtorCall(DataType type) { +CppCall TranslatorX64::getDtorCall(DataType type) { switch (type) { case BitwiseKindOfString: - return Call(getMethodPtr(&StringData::release)); + return CppCall(getMethodPtr(&StringData::release)); case KindOfArray: - return Call(getMethodPtr(&ArrayData::release)); + return CppCall(getMethodPtr(&ArrayData::release)); case KindOfObject: - return Call(getMethodPtr(&ObjectData::release)); + return CppCall(getMethodPtr(&ObjectData::release)); case KindOfRef: - return Call(getMethodPtr(&RefData::release)); + return CppCall(getMethodPtr(&RefData::release)); default: assert(false); NOT_REACHED(); @@ -3595,10 +3595,11 @@ TranslatorX64::TranslatorX64() typedef void* vp; TCA strDtor, arrDtor, objDtor, refDtor; - strDtor = emitUnaryStub(astubs, Call(getMethodPtr(&StringData::release))); - arrDtor = emitUnaryStub(astubs, Call(getVTableOffset(&HphpArray::release))); - objDtor = emitUnaryStub(astubs, Call(getMethodPtr(&ObjectData::release))); - refDtor = emitUnaryStub(astubs, Call(vp(getMethodPtr(&RefData::release)))); + strDtor = emitUnaryStub(astubs, CppCall(getMethodPtr(&StringData::release))); + arrDtor = emitUnaryStub(astubs, + CppCall(getVTableOffset(&HphpArray::release))); + objDtor = emitUnaryStub(astubs, CppCall(getMethodPtr(&ObjectData::release))); + refDtor = emitUnaryStub(astubs, CppCall(vp(getMethodPtr(&RefData::release)))); m_dtorStubs[typeToDestrIndex(BitwiseKindOfString)] = strDtor; m_dtorStubs[typeToDestrIndex(KindOfArray)] = arrDtor; @@ -3680,7 +3681,7 @@ TranslatorX64::Get() { } template -TCA TranslatorX64::emitNAryStub(X64Assembler& a, Call c) { +TCA TranslatorX64::emitNAryStub(X64Assembler& a, CppCall c) { BOOST_STATIC_ASSERT((Arity < kNumRegisterArgs)); // The callNAryStub has already saved these regs on a. @@ -3728,7 +3729,7 @@ TCA TranslatorX64::emitNAryStub(X64Assembler& a, Call c) { return start; } -TCA TranslatorX64::emitUnaryStub(X64Assembler& a, Call c) { +TCA TranslatorX64::emitUnaryStub(X64Assembler& a, CppCall c) { return emitNAryStub<1>(a, c); } diff --git a/hphp/runtime/vm/jit/translator-x64.h b/hphp/runtime/vm/jit/translator-x64.h index 4f3d0554a..a269fb336 100644 --- a/hphp/runtime/vm/jit/translator-x64.h +++ b/hphp/runtime/vm/jit/translator-x64.h @@ -66,10 +66,10 @@ struct FreeStubList { void push(TCA stub); }; -struct Call { - explicit Call(void *p) : m_kind(Direct), m_fptr(p) {} - explicit Call(int off) : m_kind(Virtual), m_offset(off) {} - Call(Call const&) = default; +struct CppCall { + explicit CppCall(void *p) : m_kind(Direct), m_fptr(p) {} + explicit CppCall(int off) : m_kind(Virtual), m_offset(off) {} + CppCall(CppCall const&) = default; bool isDirect() const { return m_kind == Direct; } bool isVirtual() const { return m_kind == Virtual; } @@ -221,7 +221,7 @@ private: void emitIncRef(X64Assembler &a, PhysReg base, DataType dtype); void emitIncRef(PhysReg base, DataType); void emitIncRefGenericRegSafe(PhysReg base, int disp, PhysReg tmp); - static Call getDtorCall(DataType type); + static CppCall getDtorCall(DataType type); void emitCopy(PhysReg srcCell, int disp, PhysReg destCell); void emitCopyToStackRegSafe(Asm& a, const NormalizedInstruction& ni, @@ -233,7 +233,7 @@ private: public: void emitCall(Asm& a, TCA dest); - void emitCall(Asm& a, Call call); + void emitCall(Asm& a, CppCall call); TCA getCallArrayProlog(Func* func); private: @@ -249,8 +249,8 @@ private: void emitObjToClass(const NormalizedInstruction& i); void emitClsAndPals(const NormalizedInstruction& i); - template TCA emitNAryStub(Asm& a, Call c); - TCA emitUnaryStub(Asm& a, Call c); + template TCA emitNAryStub(Asm& a, CppCall c); + TCA emitUnaryStub(Asm& a, CppCall c); TCA genericRefCountStub(Asm& a); TCA genericRefCountStubRegs(Asm& a); void emitFreeLocalsHelpers();