ASLTS: Fixes for slack mode failures.

This patch fixes the failure reported for the following ASLTS test:
 exceptions:exc_result2:m692-Inc-Exc (32/64 bit slack mode)
 exceptions:exc_result2:m692-Dec-Exc (32/64 bit slack mode)

The test cases expect exceptions generated for mismatched types during
implicit conversions happened to Increment/Decrement opcodes.  And the
[Unitialized] object could never be converted into object with any other
types.  But the "FAIL" is emitted due to the slack mode which converts
[Uninitialized] operand into 0-valued Integer, thus no type mismatch can be
examined for these test cases.

The command to confirm this test:
 aslts.sh -m s32 -m s64 -c exc_result2 -t
The result in __STATUS_OF_TESTS before applying this fix:
 ":STST:exceptions:exc_result2:m692-Inc-Exc:FAIL:Errors # 02 00 00 00:"
 ":STST:exceptions:exc_result2:m692-Dec-Exc:FAIL:Errors # 02 00 00 00:"
The result in __STATUS_OF_TESTS after applying this fix:
 ":STST:exceptions:exc_result2:m692-Inc-Exc:PASS:"
 ":STST:exceptions:exc_result2:m692-Dec-Exc:PASS:"

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
This commit is contained in:
Robert Moore 2013-12-17 13:34:23 -08:00
parent 3911d32046
commit 99ff9c30be

View File

@ -561,10 +561,10 @@ Method(m692, 2, Serialized)
Return (1)
}
if (LEqual(arg4, 0)) { // Increment
Increment(Local1)
if (LEqual(arg4, 0)) { // Increment
Increment(Local1)
} elseif (LEqual(arg4, 1)) { // Decrement
Decrement(Local1)
Decrement(Local1)
} else {
// Unexpected Kind of Op (0 - Increment, 1 - Decrement)
err(Concatenate(arg0, terr), z125, 25, 0, 0, arg4, 0)
@ -572,9 +572,20 @@ Method(m692, 2, Serialized)
}
if (arg5) {
// Exception is expected
if (LNot(CH06(arg0, 26, 0xff))) {
if (STCS) {m000(2, 0x100, arg2, arg3)}
if (LAnd(SLCK, LAnd(LEqual(ToInteger(arg3), 0),
LEqual(ToInteger(arg2), 1)))) {
// In slack mode, [Uninitialized] object
// will be converted to Integer 0, thus no
// exception caused by implicit source
// conversion.
if (CH03(arg0, z125, 26, arg3, arg2)) {
if (STCS) {m000(2, 0x100, arg2, arg3)}
}
} else {
// Exception is expected
if (LNot(CH06(arg0, 26, 0xff))) {
if (STCS) {m000(2, 0x100, arg2, arg3)}
}
}
} elseif (CH03(arg0, z125, 27, arg3, arg2)) {
// Processing caused unexpected exception
@ -621,7 +632,7 @@ Method(m692, 2, Serialized)
Return (1)
}
if (LEqual(arg4, 0)) { // Increment
if (LEqual(arg4, 0)) { // Increment
Store(m100(Local1), Local2)
} elseif (LEqual(arg4, 1)) { // Decrement
Store(m101(Local1), Local2)
@ -632,9 +643,20 @@ Method(m692, 2, Serialized)
}
if (arg5) {
// Exception is expected
if (LNot(CH06(arg0, 30, 0xff))) {
if (STCS) {m000(2, 0x100, arg2, arg3)}
if (LAnd(SLCK, LAnd(LEqual(ToInteger(arg3), 0),
LEqual(ToInteger(arg2), 1)))) {
// In slack mode, [Uninitialized] object
// will be converted to Integer 0, thus no
// exception caused by implicit source
// conversion.
if (CH03(arg0, z125, 30, arg3, arg2)) {
if (STCS) {m000(2, 0x100, arg2, arg3)}
}
} else {
// Exception is expected
if (LNot(CH06(arg0, 30, 0xff))) {
if (STCS) {m000(2, 0x100, arg2, arg3)}
}
}
} elseif (CH03(arg0, z125, 31, arg3, arg2)) {
// Processing caused unexpected exception