Bug 963738 - Fix some false positives in the Array analysis; r=jonco

This commit is contained in:
Terrence Cole
2014-01-28 12:05:35 -08:00
parent 9435b94657
commit 11a9a45a94
10 changed files with 69 additions and 56 deletions

View File

@@ -85,12 +85,13 @@ ExhaustiveTest(const char funcode[])
EVAL(CALL_CODES[ArgCount], v.address());
Rooted<ArgumentsObject*> argsobj(cx, &JSVAL_TO_OBJECT(v)->as<ArgumentsObject>());
Value elems[MAX_ELEMS];
Value elems_[MAX_ELEMS];
AutoValueArray elems(cx, elems_, MAX_ELEMS);
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));
CHECK(argsobj->maybeGetElements(i, j, elems.start()));
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,10 +104,10 @@ ExhaustiveTest(const char funcode[])
}
static void
ClearElements(Value elems[MAX_ELEMS])
ClearElements(AutoValueArray &elems)
{
for (size_t i = 0; i < MAX_ELEMS - 1; i++)
elems[i] = NullValue();
elems[MAX_ELEMS - 1] = Int32Value(42);
for (size_t i = 0; i < elems.length() - 1; i++)
elems[i].setNull();
elems[elems.length() - 1].setInt32(42);
}
END_TEST(testArgumentsObject)