mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Fix ARM build.
This commit is contained in:
parent
9cd9889bec
commit
1231359944
@ -167,7 +167,7 @@ MacroAssembler::guardTypeSet(const T &address, types::TypeSet *types,
|
||||
if (JSObject *object = types->getSingleObject(i))
|
||||
branchPtr(Equal, obj, ImmGCPtr(object), &matched);
|
||||
}
|
||||
jmp(mismatched);
|
||||
jump(mismatched);
|
||||
|
||||
bind(¬Singleton);
|
||||
loadPtr(Address(obj, JSObject::offsetOfType()), scratch);
|
||||
@ -177,7 +177,7 @@ MacroAssembler::guardTypeSet(const T &address, types::TypeSet *types,
|
||||
}
|
||||
}
|
||||
|
||||
jmp(mismatched);
|
||||
jump(mismatched);
|
||||
bind(&matched);
|
||||
}
|
||||
|
||||
|
@ -116,6 +116,12 @@ Assembler::TraceJumpRelocations(JSTracer *trc, IonCode *code, CompactBufferReade
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
Assembler::TraceDataRelocations(JSTracer *trc, IonCode *code, CompactBufferReader &reader)
|
||||
{
|
||||
JS_NOT_REACHED("Feature NYI");
|
||||
}
|
||||
|
||||
void
|
||||
Assembler::copyJumpRelocationTable(uint8 *dest)
|
||||
{
|
||||
@ -123,10 +129,17 @@ Assembler::copyJumpRelocationTable(uint8 *dest)
|
||||
memcpy(dest, jumpRelocations_.buffer(), jumpRelocations_.length());
|
||||
}
|
||||
|
||||
void
|
||||
Assembler::copyDataRelocationTable(uint8 *dest)
|
||||
{
|
||||
if (dataRelocations_.length())
|
||||
memcpy(dest, dataRelocations_.buffer(), dataRelocations_.length());
|
||||
}
|
||||
|
||||
void
|
||||
Assembler::trace(JSTracer *trc)
|
||||
{
|
||||
JS_NOT_REACHED("Feature NYI");
|
||||
JS_NOT_REACHED("Feature NYI - must trace jump and data");
|
||||
#if 0
|
||||
for (size_t i = 0; i < jumps_.length(); i++) {
|
||||
RelativePatch &rp = jumps_[i];
|
||||
|
@ -785,6 +785,7 @@ class Assembler
|
||||
js::Vector<CodeLabel *, 0, SystemAllocPolicy> codeLabels_;
|
||||
js::Vector<RelativePatch, 8, SystemAllocPolicy> jumps_;
|
||||
CompactBufferWriter jumpRelocations_;
|
||||
CompactBufferWriter dataRelocations_;
|
||||
size_t dataBytesNeeded_;
|
||||
|
||||
bool enoughMemory_;
|
||||
@ -849,6 +850,7 @@ class Assembler
|
||||
void processDeferredData(IonCode *code, uint8 *data);
|
||||
void processCodeLabels(IonCode *code);
|
||||
void copyJumpRelocationTable(uint8 *buffer);
|
||||
void copyDataRelocationTable(uint8 *buffer);
|
||||
|
||||
bool addDeferredData(DeferredData *data, size_t bytes) {
|
||||
data->setOffset(dataBytesNeeded_);
|
||||
@ -867,15 +869,21 @@ class Assembler
|
||||
return m_buffer.uncheckedSize();
|
||||
}
|
||||
// Size of the jump relocation table, in bytes.
|
||||
size_t jumpRelocationTableSize() const {
|
||||
return relocations_.length();
|
||||
size_t jumpRelocationTableBytes() const {
|
||||
return jumpRelocations_.length();
|
||||
}
|
||||
size_t dataRelocationTableBytes() const {
|
||||
return dataRelocations_.length();
|
||||
}
|
||||
// Size of the data table, in bytes.
|
||||
size_t dataSize() const {
|
||||
return dataBytesNeeded_;
|
||||
}
|
||||
size_t bytesNeeded() const {
|
||||
return size() + dataSize() + jumpRelocationTableSize();
|
||||
return size() +
|
||||
dataSize() +
|
||||
jumpRelocationTableBytes() +
|
||||
dataRelocationTableBytes();
|
||||
}
|
||||
// write a blob of binary into the instruction stream
|
||||
void writeBlob(uint32 x)
|
||||
@ -1395,6 +1403,7 @@ class Assembler
|
||||
#endif
|
||||
public:
|
||||
static void TraceJumpRelocations(JSTracer *trc, IonCode *code, CompactBufferReader &reader);
|
||||
static void TraceDataRelocations(JSTracer *trc, IonCode *code, CompactBufferReader &reader);
|
||||
|
||||
// The buffer is about to be linked, make sure any constant pools or excess
|
||||
// bookkeeping has been flushed to the instruction stream.
|
||||
|
@ -636,7 +636,7 @@ CodeGeneratorARM::ToValue(LInstruction *ins, size_t pos)
|
||||
}
|
||||
|
||||
bool
|
||||
CodeGeneratorARM::visitValue(LValue *value)
|
||||
CodeGeneratorARM::visitValue(LValue *value)
|
||||
{
|
||||
jsval_layout jv = JSVAL_TO_IMPL(value->value());
|
||||
|
||||
@ -645,7 +645,7 @@ bool
|
||||
|
||||
masm.ma_mov(Imm32(jv.s.tag), ToRegister(type));
|
||||
if (value->value().isMarkable())
|
||||
masm.ma_mov(ImmGCPtr(jv.s.payload.ptr), ToRegister(payload));
|
||||
masm.ma_mov(ImmGCPtr((gc::Cell *)jv.s.payload.ptr), ToRegister(payload));
|
||||
else
|
||||
masm.ma_mov(Imm32(jv.s.payload.u32), ToRegister(payload));
|
||||
return true;
|
||||
|
@ -614,6 +614,9 @@ public:
|
||||
framePushed_ -= amount;
|
||||
}
|
||||
|
||||
void branchTest32(Condition cond, const Address &address, Imm32 imm, Label *label) {
|
||||
JS_NOT_REACHED("NYI");
|
||||
}
|
||||
void branchPtr(Condition cond, Register lhs, ImmGCPtr ptr, Label *label) {
|
||||
JS_NOT_REACHED("NYI");
|
||||
}
|
||||
@ -729,6 +732,24 @@ public:
|
||||
VFPRegister(dest), FloatToCore);
|
||||
}
|
||||
|
||||
// Extended unboxing API. If the payload is already in a register, returns
|
||||
// that register. Otherwise, provides a move to the given scratch register,
|
||||
// and returns that.
|
||||
Register extractObject(const Address &address, Register scratch) {
|
||||
JS_NOT_REACHED("NYI");
|
||||
return scratch;
|
||||
}
|
||||
Register extractObject(const ValueOperand &value, Register scratch) {
|
||||
return value.payloadReg();
|
||||
}
|
||||
Register extractTag(const Address &address, Register scratch) {
|
||||
JS_NOT_REACHED("NYI");
|
||||
return scratch;
|
||||
}
|
||||
Register extractTag(const ValueOperand &value, Register scratch) {
|
||||
return value.typeReg();
|
||||
}
|
||||
|
||||
void boolValueToDouble(const ValueOperand &operand, const FloatRegister &dest) {
|
||||
JS_NOT_REACHED("Codegen for boolValueToDouble NYI");
|
||||
#if 0
|
||||
@ -843,7 +864,10 @@ public:
|
||||
void branchTestUndefined(Condition cond, const T & t, Label *label) {
|
||||
JS_NOT_REACHED("feature NYI");
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void branchTestNumber(Condition cond, const T &t, Label *label) {
|
||||
JS_NOT_REACHED("feature NYI");
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void branchTestBooleanTruthy(bool b, const T & t, Label *label) {
|
||||
|
Loading…
Reference in New Issue
Block a user