Bug 965830 - Make AutoValueArray into a fixed-size inline array that roots its contents r=terrence

This commit is contained in:
Jon Coppeard
2014-02-11 10:59:15 +00:00
parent 5bc1ffa173
commit 369f328643
10 changed files with 172 additions and 129 deletions

View File

@@ -85,13 +85,12 @@ ExhaustiveTest(const char funcode[])
EVAL(CALL_CODES[ArgCount], v.address());
Rooted<ArgumentsObject*> argsobj(cx, &JSVAL_TO_OBJECT(v)->as<ArgumentsObject>());
Value elems_[MAX_ELEMS];
AutoValueArray elems(cx, elems_, MAX_ELEMS);
JS::AutoValueArray<MAX_ELEMS> elems(cx);
for (size_t i = 0; i <= ArgCount; i++) {
for (size_t j = 0; j <= ArgCount - i; j++) {
ClearElements(elems);
CHECK(argsobj->maybeGetElements(i, j, elems.start()));
CHECK(argsobj->maybeGetElements(i, j, elems.begin()));
for (size_t k = 0; k < j; k++)
CHECK_SAME(elems[k], INT_TO_JSVAL(i + k));
for (size_t k = j; k < MAX_ELEMS - 1; k++)
@@ -103,8 +102,9 @@ ExhaustiveTest(const char funcode[])
return true;
}
template <size_t N>
static void
ClearElements(AutoValueArray &elems)
ClearElements(JS::AutoValueArray<N> &elems)
{
for (size_t i = 0; i < elems.length() - 1; i++)
elems[i].setNull();