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 :)
Esse commit está contido em:
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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<int Arity>
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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<int Arity> TCA emitNAryStub(Asm& a, Call c);
|
||||
TCA emitUnaryStub(Asm& a, Call c);
|
||||
template<int Arity> TCA emitNAryStub(Asm& a, CppCall c);
|
||||
TCA emitUnaryStub(Asm& a, CppCall c);
|
||||
TCA genericRefCountStub(Asm& a);
|
||||
TCA genericRefCountStubRegs(Asm& a);
|
||||
void emitFreeLocalsHelpers();
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário