Bug 948241 - IonMonkey: Use FixedList in MAsmJSCall. r=luke

This commit is contained in:
Dan Gohman 2013-12-09 19:39:44 -08:00
Родитель 4cc0699530
Коммит c07fe2b7cd
2 изменённых файлов: 13 добавлений и 19 удалений

Просмотреть файл

@ -2767,21 +2767,17 @@ MAsmJSCall::New(TempAllocator &alloc, Callee callee, const Args &args, MIRType r
call->callee_ = callee;
call->setResultType(resultType);
call->numArgs_ = args.length();
call->argRegs_ = (AnyRegister *)GetIonContext()->temp->allocate(call->numArgs_ * sizeof(AnyRegister));
if (!call->argRegs_)
if (!call->argRegs_.init(alloc, args.length()))
return nullptr;
for (size_t i = 0; i < call->numArgs_; i++)
for (size_t i = 0; i < call->argRegs_.length(); i++)
call->argRegs_[i] = args[i].reg;
call->numOperands_ = call->numArgs_ + (callee.which() == Callee::Dynamic ? 1 : 0);
call->operands_ = (MUse *)GetIonContext()->temp->allocate(call->numOperands_ * sizeof(MUse));
if (!call->operands_)
if (!call->operands_.init(alloc, call->argRegs_.length() + (callee.which() == Callee::Dynamic ? 1 : 0)))
return nullptr;
for (size_t i = 0; i < call->numArgs_; i++)
for (size_t i = 0; i < call->argRegs_.length(); i++)
call->setOperand(i, args[i].def);
if (callee.which() == Callee::Dynamic)
call->setOperand(call->numArgs_, callee.dynamic());
call->setOperand(call->argRegs_.length(), callee.dynamic());
return call;
}

Просмотреть файл

@ -9484,10 +9484,8 @@ class MAsmJSCall MOZ_FINAL : public MInstruction
};
Callee callee_;
size_t numOperands_;
MUse *operands_;
size_t numArgs_;
AnyRegister *argRegs_;
FixedList<MUse> operands_;
FixedList<AnyRegister> argRegs_;
size_t spIncrement_;
protected:
@ -9513,17 +9511,17 @@ class MAsmJSCall MOZ_FINAL : public MInstruction
MIRType resultType, size_t spIncrement);
size_t numOperands() const {
return numOperands_;
return operands_.length();
}
MDefinition *getOperand(size_t index) const {
JS_ASSERT(index < numOperands_);
JS_ASSERT(index < numOperands());
return operands_[index].producer();
}
size_t numArgs() const {
return numArgs_;
return argRegs_.length();
}
AnyRegister registerForArg(size_t index) const {
JS_ASSERT(index < numArgs_);
JS_ASSERT(index < numArgs());
return argRegs_[index];
}
Callee callee() const {
@ -9531,8 +9529,8 @@ class MAsmJSCall MOZ_FINAL : public MInstruction
}
size_t dynamicCalleeOperandIndex() const {
JS_ASSERT(callee_.which() == Callee::Dynamic);
JS_ASSERT(numArgs_ == numOperands_ - 1);
return numArgs_;
JS_ASSERT(numArgs() == numOperands() - 1);
return numArgs();
}
size_t spIncrement() const {
return spIncrement_;