// get arg puts an arg from the SF register array into a h/w register
-ALWAYS_INLINE void CTI::emitGetArg(unsigned src, MacroAssembler::RegisterID dst)
+ALWAYS_INLINE void CTI::emitGetArg(unsigned src, X86Assembler::RegisterID dst)
{
// TODO: we want to reuse values that are already in registers if we can - add a register allocator!
if (src < m_codeBlock->constantRegisters.size()) {
}
// get arg puts an arg from the SF register array onto the stack, as an arg to a context threaded function.
-ALWAYS_INLINE void CTI::emitGetPutArg(unsigned src, unsigned offset, MacroAssembler::RegisterID scratch)
+ALWAYS_INLINE void CTI::emitGetPutArg(unsigned src, unsigned offset, X86Assembler::RegisterID scratch)
{
if (src < m_codeBlock->constantRegisters.size()) {
JSValue* js = m_codeBlock->constantRegisters[src].jsValue(m_exec);
}
// puts an arg onto the stack, as an arg to a context threaded function.
-ALWAYS_INLINE void CTI::emitPutArg(MacroAssembler::RegisterID src, unsigned offset)
+ALWAYS_INLINE void CTI::emitPutArg(X86Assembler::RegisterID src, unsigned offset)
{
m_jit.movl_rm(src, offset + sizeof(void*), X86::esp);
}
return 0;
}
-ALWAYS_INLINE void CTI::emitPutCTIParam(MacroAssembler::RegisterID from, unsigned name)
+ALWAYS_INLINE void CTI::emitPutCTIParam(X86Assembler::RegisterID from, unsigned name)
{
m_jit.movl_rm(from, name * sizeof(void*), X86::esp);
}
-ALWAYS_INLINE void CTI::emitGetCTIParam(unsigned name, MacroAssembler::RegisterID to)
+ALWAYS_INLINE void CTI::emitGetCTIParam(unsigned name, X86Assembler::RegisterID to)
{
m_jit.movl_mr(name * sizeof(void*), X86::esp, to);
}
-ALWAYS_INLINE void CTI::emitPutToCallFrameHeader(MacroAssembler::RegisterID from, RegisterFile::CallFrameHeaderEntry entry)
+ALWAYS_INLINE void CTI::emitPutToCallFrameHeader(X86Assembler::RegisterID from, RegisterFile::CallFrameHeaderEntry entry)
{
m_jit.movl_rm(from, -((m_codeBlock->numLocals + RegisterFile::CallFrameHeaderSize) - entry) * sizeof(Register), X86::edi);
}
-ALWAYS_INLINE void CTI::emitGetFromCallFrameHeader(RegisterFile::CallFrameHeaderEntry entry, MacroAssembler::RegisterID to)
+ALWAYS_INLINE void CTI::emitGetFromCallFrameHeader(RegisterFile::CallFrameHeaderEntry entry, X86Assembler::RegisterID to)
{
m_jit.movl_mr(-((m_codeBlock->numLocals + RegisterFile::CallFrameHeaderSize) - entry) * sizeof(Register), X86::edi, to);
}
-ALWAYS_INLINE void CTI::emitPutResult(unsigned dst, MacroAssembler::RegisterID from)
+ALWAYS_INLINE void CTI::emitPutResult(unsigned dst, X86Assembler::RegisterID from)
{
m_jit.movl_rm(from, dst * sizeof(Register), X86::edi);
// FIXME: #ifndef NDEBUG, Write the correct m_type to the register.
{
emitGetCTIParam(CTI_ARGS_exec, X86::ecx);
m_jit.cmpl_i32m(0, OBJECT_OFFSET(ExecState, m_exception), X86::ecx);
- MacroAssembler::JmpSrc noException = m_jit.emitUnlinkedJe();
+ X86Assembler::JmpSrc noException = m_jit.emitUnlinkedJe();
m_jit.emitInt3();
m_jit.link(noException, m_jit.label());
}
#endif
}
-ALWAYS_INLINE void CTI::emitJumpSlowCaseIfNotImm(MacroAssembler::RegisterID reg, unsigned opcodeIndex)
+ALWAYS_INLINE void CTI::emitJumpSlowCaseIfNotImm(X86Assembler::RegisterID reg, unsigned opcodeIndex)
{
m_jit.testl_i32r(JSImmediate::TagBitTypeInteger, reg);
m_slowCases.append(SlowCaseEntry(m_jit.emitUnlinkedJe(), opcodeIndex));
}
-ALWAYS_INLINE void CTI::emitJumpSlowCaseIfNotImms(MacroAssembler::RegisterID reg1, MacroAssembler::RegisterID reg2, unsigned opcodeIndex)
+ALWAYS_INLINE void CTI::emitJumpSlowCaseIfNotImms(X86Assembler::RegisterID reg1, X86Assembler::RegisterID reg2, unsigned opcodeIndex)
{
m_jit.movl_rr(reg1, X86::ecx);
m_jit.andl_rr(reg2, X86::ecx);
return reinterpret_cast<unsigned>(imm) & ~JSImmediate::TagBitTypeInteger;
}
-ALWAYS_INLINE void CTI::emitFastArithDeTagImmediate(MacroAssembler::RegisterID reg)
+ALWAYS_INLINE void CTI::emitFastArithDeTagImmediate(X86Assembler::RegisterID reg)
{
// op_mod relies on this being a sub - setting zf if result is 0.
m_jit.subl_i8r(JSImmediate::TagBitTypeInteger, reg);
}
-ALWAYS_INLINE void CTI::emitFastArithReTagImmediate(MacroAssembler::RegisterID reg)
+ALWAYS_INLINE void CTI::emitFastArithReTagImmediate(X86Assembler::RegisterID reg)
{
m_jit.addl_i8r(JSImmediate::TagBitTypeInteger, reg);
}
-ALWAYS_INLINE void CTI::emitFastArithPotentiallyReTagImmediate(MacroAssembler::RegisterID reg)
+ALWAYS_INLINE void CTI::emitFastArithPotentiallyReTagImmediate(X86Assembler::RegisterID reg)
{
m_jit.orl_rr(JSImmediate::TagBitTypeInteger, reg);
}
-ALWAYS_INLINE void CTI::emitFastArithImmToInt(MacroAssembler::RegisterID reg)
+ALWAYS_INLINE void CTI::emitFastArithImmToInt(X86Assembler::RegisterID reg)
{
m_jit.sarl_i8r(1, reg);
}
-ALWAYS_INLINE void CTI::emitFastArithIntToImmOrSlowCase(MacroAssembler::RegisterID reg, unsigned opcodeIndex)
+ALWAYS_INLINE void CTI::emitFastArithIntToImmOrSlowCase(X86Assembler::RegisterID reg, unsigned opcodeIndex)
{
m_jit.addl_rr(reg, reg);
m_slowCases.append(SlowCaseEntry(m_jit.emitUnlinkedJo(), opcodeIndex));
emitFastArithReTagImmediate(reg);
}
-ALWAYS_INLINE void CTI::emitFastArithIntToImmNoCheck(MacroAssembler::RegisterID reg)
+ALWAYS_INLINE void CTI::emitFastArithIntToImmNoCheck(X86Assembler::RegisterID reg)
{
m_jit.addl_rr(reg, reg);
emitFastArithReTagImmediate(reg);
emitGetPutArg(thisVal, 4, X86::ecx);
}
- MacroAssembler::JmpSrc wasEval;
+ X86Assembler::JmpSrc wasEval;
if (type == OpCallEval) {
emitGetPutArg(instruction[i + 2].u.operand, 0, X86::ecx);
emitCall(i, Machine::cti_op_call_eval);
// Fast check for JS function.
m_jit.testl_i32r(JSImmediate::TagMask, X86::ecx);
- MacroAssembler::JmpSrc isNotObject = m_jit.emitUnlinkedJne();
+ X86Assembler::JmpSrc isNotObject = m_jit.emitUnlinkedJne();
m_jit.cmpl_i32m(reinterpret_cast<unsigned>(m_machine->m_jsFunctionVptr), X86::ecx);
- MacroAssembler::JmpSrc isJSFunction = m_jit.emitUnlinkedJe();
+ X86Assembler::JmpSrc isJSFunction = m_jit.emitUnlinkedJe();
m_jit.link(isNotObject, m_jit.label());
// This handles host functions
emitCall(i, ((type == OpConstruct) ? Machine::cti_op_construct_NotJSConstruct : Machine::cti_op_call_NotJSFunction));
emitGetCTIParam(CTI_ARGS_r, X86::edi); // edi := r
- MacroAssembler::JmpSrc wasNotJSFunction = m_jit.emitUnlinkedJmp();
+ X86Assembler::JmpSrc wasNotJSFunction = m_jit.emitUnlinkedJmp();
m_jit.link(isJSFunction, m_jit.label());
// This handles JSFunctions
m_jit.call_r(X86::eax);
emitGetCTIParam(CTI_ARGS_r, X86::edi); // edi := r
- MacroAssembler::JmpDst end = m_jit.label();
+ X86Assembler::JmpDst end = m_jit.label();
m_jit.link(wasNotJSFunction, end);
if (type == OpCallEval)
m_jit.link(wasEval, end);
void CTI::emitSlowScriptCheck(unsigned opcodeIndex)
{
m_jit.subl_i8r(1, X86::esi);
- MacroAssembler::JmpSrc skipTimeout = m_jit.emitUnlinkedJne();
+ X86Assembler::JmpSrc skipTimeout = m_jit.emitUnlinkedJne();
emitCall(opcodeIndex, Machine::cti_timeout_check);
emitGetCTIParam(CTI_ARGS_exec, X86::ecx);
emitGetArg(instruction[i + 1].u.operand, X86::eax);
m_jit.cmpl_i32r(reinterpret_cast<uint32_t>(JSImmediate::zeroImmediate()), X86::eax);
- MacroAssembler::JmpSrc isZero = m_jit.emitUnlinkedJe();
+ X86Assembler::JmpSrc isZero = m_jit.emitUnlinkedJe();
m_jit.testl_i32r(JSImmediate::TagBitTypeInteger, X86::eax);
m_jmpTable.append(JmpTable(m_jit.emitUnlinkedJne(), i + 2 + target));
m_jit.cmpl_i32r(reinterpret_cast<uint32_t>(JSImmediate::zeroImmediate()), X86::eax);
m_jmpTable.append(JmpTable(m_jit.emitUnlinkedJe(), i + 2 + target));
m_jit.testl_i32r(JSImmediate::TagBitTypeInteger, X86::eax);
- MacroAssembler::JmpSrc isNonZero = m_jit.emitUnlinkedJne();
+ X86Assembler::JmpSrc isNonZero = m_jit.emitUnlinkedJne();
m_jit.cmpl_i32r(reinterpret_cast<uint32_t>(JSImmediate::falseImmediate()), X86::eax);
m_jmpTable.append(JmpTable(m_jit.emitUnlinkedJe(), i + 2 + target));
int retAddrDst = instruction[i + 1].u.operand;
int target = instruction[i + 2].u.operand;
m_jit.movl_i32m(0, sizeof(Register) * retAddrDst, X86::edi);
- MacroAssembler::JmpDst addrPosition = m_jit.label();
+ X86Assembler::JmpDst addrPosition = m_jit.label();
m_jmpTable.append(JmpTable(m_jit.emitUnlinkedJmp(), i + 2 + target));
- MacroAssembler::JmpDst sretTarget = m_jit.label();
+ X86Assembler::JmpDst sretTarget = m_jit.label();
m_jsrSites.append(JSRInfo(addrPosition, sretTarget));
i += 3;
break;
emitGetArg(instruction[i + 1].u.operand, X86::eax);
m_jit.cmpl_i32r(reinterpret_cast<uint32_t>(JSImmediate::zeroImmediate()), X86::eax);
- MacroAssembler::JmpSrc isZero = m_jit.emitUnlinkedJe();
+ X86Assembler::JmpSrc isZero = m_jit.emitUnlinkedJe();
m_jit.testl_i32r(JSImmediate::TagBitTypeInteger, X86::eax);
m_jmpTable.append(JmpTable(m_jit.emitUnlinkedJne(), i + 2 + target));
unsigned target = instruction[i + 3].u.operand;
emitCall(i, Machine::cti_op_next_pname);
m_jit.testl_rr(X86::eax, X86::eax);
- MacroAssembler::JmpSrc endOfIter = m_jit.emitUnlinkedJe();
+ X86Assembler::JmpSrc endOfIter = m_jit.emitUnlinkedJe();
emitPutResult(instruction[i + 1].u.operand);
m_jmpTable.append(JmpTable(m_jit.emitUnlinkedJmp(), i + 3 + target));
m_jit.link(endOfIter, m_jit.label());
if (src2 < m_codeBlock->constantRegisters.size()) {
JSValue* value = m_codeBlock->constantRegisters[src2].jsValue(m_exec);
if (JSImmediate::isNumber(value)) {
- MacroAssembler::JmpSrc notImm = iter->from;
+ X86Assembler::JmpSrc notImm = iter->from;
m_jit.link((++iter)->from, m_jit.label());
m_jit.subl_i32r(getDeTaggedConstantImmediate(value), X86::eax);
m_jit.link(notImm, m_jit.label());
ASSERT(!(static_cast<unsigned>(instruction[i + 2].u.operand) < m_codeBlock->constantRegisters.size()));
- MacroAssembler::JmpSrc notImm = iter->from;
+ X86Assembler::JmpSrc notImm = iter->from;
m_jit.link((++iter)->from, m_jit.label());
m_jit.subl_rr(X86::edx, X86::eax);
emitFastArithReTagImmediate(X86::eax);
break;
}
case op_get_by_val: {
- MacroAssembler::JmpSrc notImm = iter->from;
+ X86Assembler::JmpSrc notImm = iter->from;
m_jit.link((++iter)->from, m_jit.label());
m_jit.link((++iter)->from, m_jit.label());
m_jit.link((++iter)->from, m_jit.label());
break;
}
case op_sub: {
- MacroAssembler::JmpSrc notImm = iter->from;
+ X86Assembler::JmpSrc notImm = iter->from;
m_jit.link((++iter)->from, m_jit.label());
m_jit.addl_rr(X86::edx, X86::eax);
m_jit.link(notImm, m_jit.label());
break;
}
case op_lshift: {
- MacroAssembler::JmpSrc notImm1 = iter->from;
- MacroAssembler::JmpSrc notImm2 = (++iter)->from;
+ X86Assembler::JmpSrc notImm1 = iter->from;
+ X86Assembler::JmpSrc notImm2 = (++iter)->from;
m_jit.link((++iter)->from, m_jit.label());
emitGetArg(instruction[i + 2].u.operand, X86::eax);
emitGetArg(instruction[i + 3].u.operand, X86::ecx);
}
case op_pre_inc: {
unsigned srcDst = instruction[i + 1].u.operand;
- MacroAssembler::JmpSrc notImm = iter->from;
+ X86Assembler::JmpSrc notImm = iter->from;
m_jit.link((++iter)->from, m_jit.label());
m_jit.subl_i8r(getDeTaggedConstantImmediate(JSImmediate::oneImmediate()), X86::eax);
m_jit.link(notImm, m_jit.label());
break;
}
case op_put_by_val: {
- MacroAssembler::JmpSrc notImm = iter->from;
+ X86Assembler::JmpSrc notImm = iter->from;
m_jit.link((++iter)->from, m_jit.label());
m_jit.link((++iter)->from, m_jit.label());
m_jit.link((++iter)->from, m_jit.label());
}
case op_pre_dec: {
unsigned srcDst = instruction[i + 1].u.operand;
- MacroAssembler::JmpSrc notImm = iter->from;
+ X86Assembler::JmpSrc notImm = iter->from;
m_jit.link((++iter)->from, m_jit.label());
m_jit.addl_i8r(getDeTaggedConstantImmediate(JSImmediate::oneImmediate()), X86::eax);
m_jit.link(notImm, m_jit.label());
break;
}
case op_mod: {
- MacroAssembler::JmpSrc notImm1 = iter->from;
- MacroAssembler::JmpSrc notImm2 = (++iter)->from;
+ X86Assembler::JmpSrc notImm1 = iter->from;
+ X86Assembler::JmpSrc notImm2 = (++iter)->from;
m_jit.link((++iter)->from, m_jit.label());
emitFastArithReTagImmediate(X86::eax);
emitFastArithReTagImmediate(X86::ecx);
// could be faster if we could do something like this:
// m_codeBlock->ctiReturnAddressVPCMap.grow(m_calls.size());
for (Vector<CallRecord>::iterator iter = m_calls.begin(); iter != m_calls.end(); ++iter) {
- MacroAssembler::link(code, iter->from, iter->to);
+ X86Assembler::link(code, iter->from, iter->to);
m_codeBlock->ctiReturnAddressVPCMap.add(m_jit.getRelocatedAddress(code, iter->from), iter->opcodeIndex);
}
// Link absolute addresses for jsr
for (Vector<JSRInfo>::iterator iter = m_jsrSites.begin(); iter != m_jsrSites.end(); ++iter)
- MacroAssembler::linkAbsoluteAddress(code, iter->addrPosition, iter->target);
+ X86Assembler::linkAbsoluteAddress(code, iter->addrPosition, iter->target);
m_codeBlock->ctiCode = code;
}
{
// Check eax is an object of the right StructureID.
m_jit.testl_i32r(JSImmediate::TagMask, X86::eax);
- MacroAssembler::JmpSrc failureCases1 = m_jit.emitUnlinkedJne();
+ X86Assembler::JmpSrc failureCases1 = m_jit.emitUnlinkedJne();
m_jit.cmpl_i32m(reinterpret_cast<uint32_t>(structureID), OBJECT_OFFSET(JSCell, m_structureID), X86::eax);
- MacroAssembler::JmpSrc failureCases2 = m_jit.emitUnlinkedJne();
+ X86Assembler::JmpSrc failureCases2 = m_jit.emitUnlinkedJne();
// Checks out okay! - getDirectOffset
m_jit.movl_mr(OBJECT_OFFSET(JSObject, m_propertyStorage), X86::eax, X86::eax);
void* code = m_jit.copy();
ASSERT(code);
- MacroAssembler::link(code, failureCases1, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
- MacroAssembler::link(code, failureCases2, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
+ X86Assembler::link(code, failureCases1, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
+ X86Assembler::link(code, failureCases2, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
m_codeBlock->structureIDAccessStubs.append(code);
// check eax is an object of the right StructureID.
m_jit.testl_i32r(JSImmediate::TagMask, X86::eax);
- MacroAssembler::JmpSrc failureCases1 = m_jit.emitUnlinkedJne();
+ X86Assembler::JmpSrc failureCases1 = m_jit.emitUnlinkedJne();
m_jit.cmpl_i32m(reinterpret_cast<uint32_t>(structureID), OBJECT_OFFSET(JSCell, m_structureID), X86::eax);
- MacroAssembler::JmpSrc failureCases2 = m_jit.emitUnlinkedJne();
+ X86Assembler::JmpSrc failureCases2 = m_jit.emitUnlinkedJne();
// Check the prototype object's StructureID had not changed.
StructureID** protoStructureIDAddress = &(protoObject->m_structureID);
m_jit.cmpl_i32m(reinterpret_cast<uint32_t>(prototypeStructureID), static_cast<void*>(protoStructureIDAddress));
- MacroAssembler::JmpSrc failureCases3 = m_jit.emitUnlinkedJne();
+ X86Assembler::JmpSrc failureCases3 = m_jit.emitUnlinkedJne();
// Checks out okay! - getDirectOffset
m_jit.movl_mr(cachedOffset * sizeof(JSValue*), X86::edx, X86::eax);
void* code = m_jit.copy();
ASSERT(code);
- MacroAssembler::link(code, failureCases1, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
- MacroAssembler::link(code, failureCases2, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
- MacroAssembler::link(code, failureCases3, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
+ X86Assembler::link(code, failureCases1, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
+ X86Assembler::link(code, failureCases2, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
+ X86Assembler::link(code, failureCases3, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
m_codeBlock->structureIDAccessStubs.append(code);
{
ASSERT(count);
- Vector<MacroAssembler::JmpSrc> bucketsOfFail;
+ Vector<X86Assembler::JmpSrc> bucketsOfFail;
// Check eax is an object of the right StructureID.
m_jit.testl_i32r(JSImmediate::TagMask, X86::eax);
ASSERT(code);
for (unsigned i = 0; i < bucketsOfFail.size(); ++i)
- MacroAssembler::link(code, bucketsOfFail[i], reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
+ X86Assembler::link(code, bucketsOfFail[i], reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
m_codeBlock->structureIDAccessStubs.append(code);
return code;
}
{
// check eax is an object of the right StructureID.
m_jit.testl_i32r(JSImmediate::TagMask, X86::eax);
- MacroAssembler::JmpSrc failureCases1 = m_jit.emitUnlinkedJne();
+ X86Assembler::JmpSrc failureCases1 = m_jit.emitUnlinkedJne();
m_jit.cmpl_i32m(reinterpret_cast<uint32_t>(structureID), OBJECT_OFFSET(JSCell, m_structureID), X86::eax);
- MacroAssembler::JmpSrc failureCases2 = m_jit.emitUnlinkedJne();
+ X86Assembler::JmpSrc failureCases2 = m_jit.emitUnlinkedJne();
// checks out okay! - putDirectOffset
m_jit.movl_mr(OBJECT_OFFSET(JSObject, m_propertyStorage), X86::eax, X86::eax);
void* code = m_jit.copy();
ASSERT(code);
- MacroAssembler::link(code, failureCases1, reinterpret_cast<void*>(Machine::cti_op_put_by_id_fail));
- MacroAssembler::link(code, failureCases2, reinterpret_cast<void*>(Machine::cti_op_put_by_id_fail));
+ X86Assembler::link(code, failureCases1, reinterpret_cast<void*>(Machine::cti_op_put_by_id_fail));
+ X86Assembler::link(code, failureCases2, reinterpret_cast<void*>(Machine::cti_op_put_by_id_fail));
m_codeBlock->structureIDAccessStubs.append(code);
{
// Check eax is an array
m_jit.testl_i32r(JSImmediate::TagMask, X86::eax);
- MacroAssembler::JmpSrc failureCases1 = m_jit.emitUnlinkedJne();
+ X86Assembler::JmpSrc failureCases1 = m_jit.emitUnlinkedJne();
m_jit.cmpl_i32m(reinterpret_cast<unsigned>(m_machine->m_jsArrayVptr), X86::eax);
- MacroAssembler::JmpSrc failureCases2 = m_jit.emitUnlinkedJne();
+ X86Assembler::JmpSrc failureCases2 = m_jit.emitUnlinkedJne();
// Checks out okay! - get the length from the storage
m_jit.movl_mr(OBJECT_OFFSET(JSArray, m_storage), X86::eax, X86::eax);
m_jit.movl_mr(OBJECT_OFFSET(ArrayStorage, m_length), X86::eax, X86::eax);
m_jit.addl_rr(X86::eax, X86::eax);
- MacroAssembler::JmpSrc failureCases3 = m_jit.emitUnlinkedJo();
+ X86Assembler::JmpSrc failureCases3 = m_jit.emitUnlinkedJo();
m_jit.addl_i8r(1, X86::eax);
m_jit.ret();
void* code = m_jit.copy();
ASSERT(code);
- MacroAssembler::link(code, failureCases1, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
- MacroAssembler::link(code, failureCases2, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
- MacroAssembler::link(code, failureCases3, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
+ X86Assembler::link(code, failureCases1, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
+ X86Assembler::link(code, failureCases2, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
+ X86Assembler::link(code, failureCases3, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
return code;
}
{
// Check eax is a string
m_jit.testl_i32r(JSImmediate::TagMask, X86::eax);
- MacroAssembler::JmpSrc failureCases1 = m_jit.emitUnlinkedJne();
+ X86Assembler::JmpSrc failureCases1 = m_jit.emitUnlinkedJne();
m_jit.cmpl_i32m(reinterpret_cast<unsigned>(m_machine->m_jsStringVptr), X86::eax);
- MacroAssembler::JmpSrc failureCases2 = m_jit.emitUnlinkedJne();
+ X86Assembler::JmpSrc failureCases2 = m_jit.emitUnlinkedJne();
// Checks out okay! - get the length from the Ustring.
m_jit.movl_mr(OBJECT_OFFSET(JSString, m_value) + OBJECT_OFFSET(UString, m_rep), X86::eax, X86::eax);
m_jit.movl_mr(OBJECT_OFFSET(UString::Rep, len), X86::eax, X86::eax);
m_jit.addl_rr(X86::eax, X86::eax);
- MacroAssembler::JmpSrc failureCases3 = m_jit.emitUnlinkedJo();
+ X86Assembler::JmpSrc failureCases3 = m_jit.emitUnlinkedJo();
m_jit.addl_i8r(1, X86::eax);
m_jit.ret();
void* code = m_jit.copy();
ASSERT(code);
- MacroAssembler::link(code, failureCases1, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
- MacroAssembler::link(code, failureCases2, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
- MacroAssembler::link(code, failureCases3, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
+ X86Assembler::link(code, failureCases1, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
+ X86Assembler::link(code, failureCases2, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
+ X86Assembler::link(code, failureCases3, reinterpret_cast<void*>(Machine::cti_op_get_by_id_fail));
return code;
}
return 0;
}
- MacroAssembler jit(exec->machine()->jitCodeBuffer());
+ X86Assembler jit(exec->machine()->jitCodeBuffer());
WRECParser parser(pattern, ignoreCase, multiline, jit);
jit.emitConvertToFastCall();
#include "Opcode.h"
#include "RegisterFile.h"
#include "RegisterFile.h"
-#include <masm/MacroAssembler.h>
+#include <masm/X86Assembler.h>
#include <profiler/Profiler.h>
#include <wtf/AlwaysInline.h>
#include <wtf/Vector.h>
extern OpcodeID what;
struct CallRecord {
- MacroAssembler::JmpSrc from;
+ X86Assembler::JmpSrc from;
void* to;
unsigned opcodeIndex;
{
}
- CallRecord(MacroAssembler::JmpSrc f, CTIHelper_j t, unsigned i)
+ CallRecord(X86Assembler::JmpSrc f, CTIHelper_j t, unsigned i)
: from(f)
, to((void*)t)
, opcodeIndex(i)
{
}
- CallRecord(MacroAssembler::JmpSrc f, CTIHelper_p t, unsigned i)
+ CallRecord(X86Assembler::JmpSrc f, CTIHelper_p t, unsigned i)
: from(f)
, to((void*)t)
, opcodeIndex(i)
{
}
- CallRecord(MacroAssembler::JmpSrc f, CTIHelper_v t, unsigned i)
+ CallRecord(X86Assembler::JmpSrc f, CTIHelper_v t, unsigned i)
: from(f)
, to((void*)t)
, opcodeIndex(i)
{
}
- CallRecord(MacroAssembler::JmpSrc f, CTIHelper_s t, unsigned i)
+ CallRecord(X86Assembler::JmpSrc f, CTIHelper_s t, unsigned i)
: from(f)
, to((void*)t)
, opcodeIndex(i)
{
}
- CallRecord(MacroAssembler::JmpSrc f, CTIHelper_b t, unsigned i)
+ CallRecord(X86Assembler::JmpSrc f, CTIHelper_b t, unsigned i)
: from(f)
, to((void*)t)
, opcodeIndex(i)
};
struct JmpTable {
- MacroAssembler::JmpSrc from;
+ X86Assembler::JmpSrc from;
unsigned to;
- JmpTable(MacroAssembler::JmpSrc f, unsigned t)
+ JmpTable(X86Assembler::JmpSrc f, unsigned t)
: from(f)
, to(t)
{
};
struct SlowCaseEntry {
- MacroAssembler::JmpSrc from;
+ X86Assembler::JmpSrc from;
unsigned to;
unsigned hint;
- SlowCaseEntry(MacroAssembler::JmpSrc f, unsigned t, unsigned h = 0)
+ SlowCaseEntry(X86Assembler::JmpSrc f, unsigned t, unsigned h = 0)
: from(f)
, to(t)
, hint(h)
enum CompileOpCallType { OpCallNormal, OpCallEval, OpConstruct };
void compileOpCall(Instruction* instruction, unsigned i, CompileOpCallType type = OpCallNormal);
- void emitGetArg(unsigned src, MacroAssembler::RegisterID dst);
- void emitGetPutArg(unsigned src, unsigned offset, MacroAssembler::RegisterID scratch);
- void emitPutArg(MacroAssembler::RegisterID src, unsigned offset);
+ void emitGetArg(unsigned src, X86Assembler::RegisterID dst);
+ void emitGetPutArg(unsigned src, unsigned offset, X86Assembler::RegisterID scratch);
+ void emitPutArg(X86Assembler::RegisterID src, unsigned offset);
void emitPutArgConstant(unsigned value, unsigned offset);
- void emitPutResult(unsigned dst, MacroAssembler::RegisterID from = X86::eax);
+ void emitPutResult(unsigned dst, X86Assembler::RegisterID from = X86::eax);
- void emitPutCTIParam(MacroAssembler::RegisterID from, unsigned name);
- void emitGetCTIParam(unsigned name, MacroAssembler::RegisterID to);
+ void emitPutCTIParam(X86Assembler::RegisterID from, unsigned name);
+ void emitGetCTIParam(unsigned name, X86Assembler::RegisterID to);
- void emitPutToCallFrameHeader(MacroAssembler::RegisterID from, RegisterFile::CallFrameHeaderEntry entry);
- void emitGetFromCallFrameHeader(RegisterFile::CallFrameHeaderEntry entry, MacroAssembler::RegisterID to);
+ void emitPutToCallFrameHeader(X86Assembler::RegisterID from, RegisterFile::CallFrameHeaderEntry entry);
+ void emitGetFromCallFrameHeader(RegisterFile::CallFrameHeaderEntry entry, X86Assembler::RegisterID to);
JSValue* getConstantImmediateNumericArg(unsigned src);
unsigned getDeTaggedConstantImmediate(JSValue* imm);
- void emitJumpSlowCaseIfNotImm(MacroAssembler::RegisterID, unsigned opcodeIndex);
- void emitJumpSlowCaseIfNotImms(MacroAssembler::RegisterID, MacroAssembler::RegisterID, unsigned opcodeIndex);
+ void emitJumpSlowCaseIfNotImm(X86Assembler::RegisterID, unsigned opcodeIndex);
+ void emitJumpSlowCaseIfNotImms(X86Assembler::RegisterID, X86Assembler::RegisterID, unsigned opcodeIndex);
- void emitFastArithDeTagImmediate(MacroAssembler::RegisterID);
- void emitFastArithReTagImmediate(MacroAssembler::RegisterID);
- void emitFastArithPotentiallyReTagImmediate(MacroAssembler::RegisterID);
- void emitFastArithImmToInt(MacroAssembler::RegisterID);
- void emitFastArithIntToImmOrSlowCase(MacroAssembler::RegisterID, unsigned opcodeIndex);
- void emitFastArithIntToImmNoCheck(MacroAssembler::RegisterID);
+ void emitFastArithDeTagImmediate(X86Assembler::RegisterID);
+ void emitFastArithReTagImmediate(X86Assembler::RegisterID);
+ void emitFastArithPotentiallyReTagImmediate(X86Assembler::RegisterID);
+ void emitFastArithImmToInt(X86Assembler::RegisterID);
+ void emitFastArithIntToImmOrSlowCase(X86Assembler::RegisterID, unsigned opcodeIndex);
+ void emitFastArithIntToImmNoCheck(X86Assembler::RegisterID);
void emitDebugExceptionCheck();
void printOpcodeOperandTypes(unsigned src1, unsigned src2);
#endif
- MacroAssembler m_jit;
+ X86Assembler m_jit;
Machine* m_machine;
ExecState* m_exec;
CodeBlock* m_codeBlock;
Vector<CallRecord> m_calls;
- Vector<MacroAssembler::JmpDst> m_labels;
+ Vector<X86Assembler::JmpDst> m_labels;
Vector<JmpTable> m_jmpTable;
struct JSRInfo {
- MacroAssembler::JmpDst addrPosition;
- MacroAssembler::JmpDst target;
+ X86Assembler::JmpDst addrPosition;
+ X86Assembler::JmpDst target;
- JSRInfo(const MacroAssembler::JmpDst& storeLocation, const MacroAssembler::JmpDst& targetLocation)
+ JSRInfo(const X86Assembler::JmpDst& storeLocation, const X86Assembler::JmpDst& targetLocation)
: addrPosition(storeLocation)
, target(targetLocation)
{