Bug 477158 - TM: "Assertion failure: v == JSVAL_TRUE || v == JSVAL_FALSE, at ../jsapi.h". r=gal

This commit is contained in:
Jeff Walden 2009-02-06 13:53:27 -08:00
parent 268b391c28
commit 6ba852af34
3 changed files with 27 additions and 1 deletions

View File

@ -43,6 +43,8 @@
* JS boolean interface.
*/
#include "jsapi.h"
JS_BEGIN_EXTERN_C
/*
@ -59,6 +61,13 @@ JS_BEGIN_EXTERN_C
#define JSVAL_HOLE PSEUDO_BOOLEAN_TO_JSVAL(3)
#define JSVAL_ARETURN PSEUDO_BOOLEAN_TO_JSVAL(4)
static JS_ALWAYS_INLINE JSBool
JSVAL_TO_PUBLIC_PSEUDO_BOOLEAN(jsval v)
{
JS_ASSERT(v == JSVAL_TRUE || v == JSVAL_FALSE || v == JSVAL_VOID);
return JSVAL_TO_PSEUDO_BOOLEAN(v);
}
extern JSClass js_BooleanClass;
extern JSObject *

View File

@ -4966,7 +4966,7 @@ TraceRecorder::switchop()
BRANCH_EXIT);
} else if (JSVAL_TAG(v) == JSVAL_BOOLEAN) {
guard(true,
addName(lir->ins2(LIR_eq, v_ins, lir->insImm(JSVAL_TO_BOOLEAN(v))),
addName(lir->ins2(LIR_eq, v_ins, lir->insImm(JSVAL_TO_PUBLIC_PSEUDO_BOOLEAN(v))),
"guard(switch on boolean)"),
BRANCH_EXIT);
} else {

View File

@ -4310,6 +4310,23 @@ function testArrayComp2() {
testArrayComp2.expected='0123412345234563456745678';
test(testArrayComp2);
function testSwitchUndefined()
{
var x = undefined;
var y = 0;
for (var i = 0; i < 5; i++)
{
switch (x)
{
default:
y++;
}
}
return y;
}
testSwitchUndefined.expected = 5;
test(testSwitchUndefined);
/*****************************************************************************
* *
* _____ _ _ _____ ______ _____ _______ *