⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 93070 in webkit


Ignore:
Timestamp:
Aug 15, 2011, 4:44:41 PM (15 years ago)
Author:
barraclough@apple.com
Message:

https://bugs.webkit.org/show_bug.cgi?id=66263
DFG JIT does not always zero extend boolean result of DFG operations

Reviewed by Sam Weinig.

Source/JavaScriptCore:

  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
    • Change bool return values to a 64-bit type.

LayoutTests:

  • fast/js/kde/script-tests/operators.js:

(nonSpeculativeNotInner):
(nonSpeculativeNot):
(nonSpeculativeLessInner):
(nonSpeculativeLess):
(nonSpeculativeLessEqInner):
(nonSpeculativeLessEq):
(nonSpeculativeGreaterInner):
(nonSpeculativeGreater):
(nonSpeculativeGreaterEqInner):
(nonSpeculativeGreaterEq):
(nonSpeculativeEqualInner):
(nonSpeculativeEqual):
(nonSpeculativeNotEqualInner):
(nonSpeculativeNotEqual):
(nonSpeculativeStrictEqualInner):
(nonSpeculativeStrictEqual):
(nonSpeculativeStrictNotEqualInner):
(nonSpeculativeStrictNotEqual):

  • Add tests cases that will hit the non-spec path.
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r93069 r93070  
     12011-08-15  Gavin Barraclough  <barraclough@apple.com>
     2
     3        https://bugs.webkit.org/show_bug.cgi?id=66263
     4        DFG JIT does not always zero extend boolean result of DFG operations
     5
     6        Reviewed by Sam Weinig.
     7
     8        * fast/js/kde/script-tests/operators.js:
     9        (nonSpeculativeNotInner):
     10        (nonSpeculativeNot):
     11        (nonSpeculativeLessInner):
     12        (nonSpeculativeLess):
     13        (nonSpeculativeLessEqInner):
     14        (nonSpeculativeLessEq):
     15        (nonSpeculativeGreaterInner):
     16        (nonSpeculativeGreater):
     17        (nonSpeculativeGreaterEqInner):
     18        (nonSpeculativeGreaterEq):
     19        (nonSpeculativeEqualInner):
     20        (nonSpeculativeEqual):
     21        (nonSpeculativeNotEqualInner):
     22        (nonSpeculativeNotEqual):
     23        (nonSpeculativeStrictEqualInner):
     24        (nonSpeculativeStrictEqual):
     25        (nonSpeculativeStrictNotEqualInner):
     26        (nonSpeculativeStrictNotEqual):
     27            - Add tests cases that will hit the non-spec path.
     28
    1292011-08-15  Alexey Proskuryakov  <ap@apple.com>
    230
  • trunk/LayoutTests/fast/js/kde/script-tests/operators.js

    r48651 r93070  
     1function nonSpeculativeNotInner(argument, o1, o2)
     2{
     3    // The + operator on objects is a reliable way to avoid the speculative JIT path for now at least.
     4    o1 + o2;
     5    return !argument;
     6}
     7function nonSpeculativeNot(argument)
     8{
     9    return nonSpeculativeNotInner(argument, {}, {});
     10}
     11
     12function nonSpeculativeLessInner(a, b, o1, o2)
     13{
     14    // The + operator on objects is a reliable way to avoid the speculative JIT path for now at least.
     15    o1 + o2;
     16    return a < b;
     17}
     18function nonSpeculativeLess(a, b)
     19{
     20    return nonSpeculativeLessInner(a, b, {}, {});
     21}
     22
     23function nonSpeculativeLessEqInner(a, b, o1, o2)
     24{
     25    // The + operator on objects is a reliable way to avoid the speculative JIT path for now at least.
     26    o1 + o2;
     27    return a <= b;
     28}
     29function nonSpeculativeLessEq(a, b)
     30{
     31    return nonSpeculativeLessEqInner(a, b, {}, {});
     32}
     33
     34function nonSpeculativeGreaterInner(a, b, o1, o2)
     35{
     36    // The + operator on objects is a reliable way to avoid the speculative JIT path for now at least.
     37    o1 + o2;
     38    return a > b;
     39}
     40function nonSpeculativeGreater(a, b)
     41{
     42    return nonSpeculativeGreaterInner(a, b, {}, {});
     43}
     44
     45function nonSpeculativeGreaterEqInner(a, b, o1, o2)
     46{
     47    // The + operator on objects is a reliable way to avoid the speculative JIT path for now at least.
     48    o1 + o2;
     49    return a >= b;
     50}
     51function nonSpeculativeGreaterEq(a, b)
     52{
     53    return nonSpeculativeGreaterEqInner(a, b, {}, {});
     54}
     55
     56function nonSpeculativeEqualInner(a, b, o1, o2)
     57{
     58    // The + operator on objects is a reliable way to avoid the speculative JIT path for now at least.
     59    o1 + o2;
     60    return a == b;
     61}
     62function nonSpeculativeEqual(a, b)
     63{
     64    return nonSpeculativeEqualInner(a, b, {}, {});
     65}
     66
     67function nonSpeculativeNotEqualInner(a, b, o1, o2)
     68{
     69    // The + operator on objects is a reliable way to avoid the speculative JIT path for now at least.
     70    o1 + o2;
     71    return a != b;
     72}
     73function nonSpeculativeNotEqual(a, b)
     74{
     75    return nonSpeculativeNotEqualInner(a, b, {}, {});
     76}
     77
     78function nonSpeculativeStrictEqualInner(a, b, o1, o2)
     79{
     80    // The + operator on objects is a reliable way to avoid the speculative JIT path for now at least.
     81    o1 + o2;
     82    return a === b;
     83}
     84function nonSpeculativeStrictEqual(a, b)
     85{
     86    return nonSpeculativeStrictEqualInner(a, b, {}, {});
     87}
     88
     89function nonSpeculativeStrictNotEqualInner(a, b, o1, o2)
     90{
     91    // The + operator on objects is a reliable way to avoid the speculative JIT path for now at least.
     92    o1 + o2;
     93    return a !== b;
     94}
     95function nonSpeculativeStrictNotEqual(a, b)
     96{
     97    return nonSpeculativeStrictNotEqualInner(a, b, {}, {});
     98}
     99
    1100// operator !
    2101shouldBeTrue("!undefined");
     
    8107shouldBeTrue("!!'a'");
    9108shouldBeTrue("!''");
     109
     110shouldBeTrue("nonSpeculativeNot(undefined)");
     111shouldBeTrue("nonSpeculativeNot(null)");
     112shouldBeTrue("nonSpeculativeNot(!true)");
     113shouldBeTrue("nonSpeculativeNot(false)");
     114shouldBeTrue("nonSpeculativeNot(!1)");
     115shouldBeTrue("nonSpeculativeNot(0)");
     116shouldBeTrue("nonSpeculativeNot(!'a')");
     117shouldBeTrue("nonSpeculativeNot('')");
    10118
    11119// unary plus
     
    149257shouldBe("1==2", "false");
    150258
     259shouldBe("nonSpeculativeEqual(2,2)", "true");
     260shouldBe("nonSpeculativeEqual(1,2)", "false");
     261
    151262shouldBe("1<2", "true");
    152263shouldBe("1<=2", "true");
     
    154265shouldBe("2<=1", "false");
    155266
     267shouldBe("nonSpeculativeLess(1,2)", "true");
     268shouldBe("nonSpeculativeLessEq(1,2)", "true");
     269shouldBe("nonSpeculativeLess(2,1)", "false");
     270shouldBe("nonSpeculativeLessEq(2,1)", "false");
     271
    156272shouldBe("2>1", "true");
    157273shouldBe("2>=1", "true");
     
    159275shouldBe("1>2", "false");
    160276
    161 shouldBe("'abc' == 'abc'", "true");
    162 shouldBe("'abc' != 'xyz'", "true");
     277shouldBe("nonSpeculativeGreater(2,1)", "true");
     278shouldBe("nonSpeculativeGreaterEq(2,1)", "true");
     279shouldBe("nonSpeculativeGreaterEq(1,2)", "false");
     280shouldBe("nonSpeculativeGreater(1,2)", "false");
     281
     282shouldBeTrue("'abc' == 'abc'");
     283shouldBeTrue("'abc' != 'xyz'");
    163284shouldBeTrue("true == true");
    164285shouldBeTrue("false == false");
     
    185306shouldBeTrue("0 == false");
    186307
     308shouldBeTrue("nonSpeculativeEqual('abc', 'abc')");
     309shouldBeTrue("nonSpeculativeNotEqual('abc', 'xyz')");
     310shouldBeTrue("nonSpeculativeEqual(true, true)");
     311shouldBeTrue("nonSpeculativeEqual(false, false)");
     312shouldBeTrue("nonSpeculativeNotEqual(true, false)");
     313shouldBeTrue("nonSpeculativeNotEqual('a', null)");
     314shouldBeTrue("nonSpeculativeNotEqual('a', undefined)");
     315shouldBeTrue("nonSpeculativeEqual(null, null)");
     316shouldBeTrue("nonSpeculativeEqual(null, undefined)");
     317shouldBeTrue("nonSpeculativeEqual(undefined, undefined)");
     318shouldBeTrue("nonSpeculativeNotEqual(NaN, NaN)");
     319shouldBeTrue("nonSpeculativeNotEqual(true, undefined)");
     320shouldBeTrue("nonSpeculativeNotEqual(true, null)");
     321shouldBeTrue("nonSpeculativeNotEqual(false, undefined)");
     322shouldBeTrue("nonSpeculativeNotEqual(false, null)");
     323shouldBeTrue("nonSpeculativeEqual('0', 0)");
     324shouldBeTrue("nonSpeculativeEqual(1, '1')");
     325shouldBeTrue("nonSpeculativeNotEqual(NaN, NaN)");
     326shouldBeTrue("nonSpeculativeNotEqual(NaN, 0)");
     327shouldBeTrue("nonSpeculativeNotEqual(NaN, undefined)");
     328shouldBeTrue("nonSpeculativeEqual(true, 1)");
     329shouldBeTrue("nonSpeculativeNotEqual(true, 2)");
     330shouldBeTrue("nonSpeculativeEqual(1, true)");
     331shouldBeTrue("nonSpeculativeEqual(false, 0)");
     332shouldBeTrue("nonSpeculativeEqual(0, false)");
     333
    187334shouldBe("'abc' < 'abx'", "true");
    188335shouldBe("'abc' < 'abcd'", "true");
     
    191338shouldBe("'abx' < 'abc'", "false");
    192339
     340shouldBe("nonSpeculativeLess('abc', 'abx')", "true");
     341shouldBe("nonSpeculativeLess('abc', 'abcd')", "true");
     342shouldBe("nonSpeculativeLess('abc', 'abc')", "false");
     343shouldBe("nonSpeculativeLess('abcd', 'abcd')", "false");
     344shouldBe("nonSpeculativeLess('abx', 'abc')", "false");
     345
    193346shouldBe("'abc' <= 'abc'", "true");
    194347shouldBe("'abc' <= 'abx'", "true");
     
    197350shouldBe("'abc' <= 'abcd'", "true");
    198351
     352shouldBe("nonSpeculativeLessEq('abc', 'abc')", "true");
     353shouldBe("nonSpeculativeLessEq('abc', 'abx')", "true");
     354shouldBe("nonSpeculativeLessEq('abx', 'abc')", "false");
     355shouldBe("nonSpeculativeLessEq('abcd', 'abc')", "false");
     356shouldBe("nonSpeculativeLessEq('abc', 'abcd')", "true");
     357
    199358shouldBe("'abc' > 'abx'", "false");
    200359shouldBe("'abc' > 'abc'", "false");
     
    202361shouldBe("'abx' > 'abc'", "true");
    203362shouldBe("'abc' > 'abcd'", "false");
     363
     364shouldBe("nonSpeculativeGreater('abc', 'abx')", "false");
     365shouldBe("nonSpeculativeGreater('abc', 'abc')", "false");
     366shouldBe("nonSpeculativeGreater('abcd', 'abc')", "true");
     367shouldBe("nonSpeculativeGreater('abx', 'abc')", "true");
     368shouldBe("nonSpeculativeGreater('abc', 'abcd')", "false");
    204369
    205370shouldBe("'abc' >= 'abc'", "true");
     
    209374shouldBe("'abc' >= 'abx'", "false");
    210375shouldBe("'abc' >= 'abcd'", "false");
     376
     377shouldBe("nonSpeculativeGreaterEq('abc', 'abc')", "true");
     378shouldBe("nonSpeculativeGreaterEq('abcd', 'abc')", "true");
     379shouldBe("nonSpeculativeGreaterEq('abx', 'abc')", "true");
     380shouldBe("nonSpeculativeGreaterEq('abc', 'abx')", "false");
     381shouldBe("nonSpeculativeGreaterEq('abc', 'abx')", "false");
     382shouldBe("nonSpeculativeGreaterEq('abc', 'abcd')", "false");
    211383
    212384// mixed strings and numbers - results validated in NS+moz+IE5
     
    221393shouldBeTrue("6 < '52'");
    222394shouldBeTrue("6 < '72'"); // #36087
    223 shouldBe("NaN < 0", "false");
    224 shouldBe("NaN <= 0", "false");
    225 shouldBe("NaN > 0", "false");
    226 shouldBe("NaN >= 0", "false");
     395shouldBeFalse("NaN < 0");
     396shouldBeFalse("NaN <= 0");
     397shouldBeFalse("NaN > 0");
     398shouldBeFalse("NaN >= 0");
     399
     400shouldBeFalse("nonSpeculativeLessEq('abc', 0)"); // #35246
     401shouldBeTrue("nonSpeculativeLessEq('', 0)");
     402shouldBeTrue("nonSpeculativeLessEq(' ', 0)");
     403shouldBeTrue("nonSpeculativeLessEq(null, 0)");
     404shouldBeFalse("nonSpeculativeLessEq(0, 'abc')");
     405shouldBeTrue("nonSpeculativeLessEq(0, '')");
     406shouldBeTrue("nonSpeculativeLessEq(0, null)");
     407shouldBeTrue("nonSpeculativeLessEq(null, null)");
     408shouldBeTrue("nonSpeculativeLess(6, '52')");
     409shouldBeTrue("nonSpeculativeLess(6, '72')"); // #36087
     410shouldBeFalse("nonSpeculativeLess(NaN, 0)");
     411shouldBeFalse("nonSpeculativeLessEq(NaN, 0)");
     412shouldBeFalse("nonSpeculativeGreater(NaN, 0)");
     413shouldBeFalse("nonSpeculativeGreaterEq(NaN, 0)");
    227414
    228415// strict comparison ===
    229 shouldBe("0 === false", "false");
     416shouldBeFalse("0 === false");
    230417//shouldBe("undefined === undefined", "true"); // aborts in IE5 (undefined is not defined ;)
    231 shouldBe("null === null", "true");
    232 shouldBe("NaN === NaN", "false");
    233 shouldBe("0.0 === 0", "true");
    234 shouldBe("'abc' === 'abc'", "true");
    235 shouldBe("'a' === 'x'", "false");
    236 shouldBe("1 === '1'", "false");
    237 shouldBe("'1' === 1", "false");
    238 shouldBe("true === true", "true");
    239 shouldBe("false === false", "true");
    240 shouldBe("true === false", "false");
    241 shouldBe("Math === Math", "true");
    242 shouldBe("Math === Boolean", "false");
    243 shouldBe("Infinity === Infinity", "true");
     418shouldBeTrue("null === null");
     419shouldBeFalse("NaN === NaN");
     420shouldBeTrue("0.0 === 0");
     421shouldBeTrue("'abc' === 'abc'");
     422shouldBeFalse("'a' === 'x'");
     423shouldBeFalse("1 === '1'");
     424shouldBeFalse("'1' === 1");
     425shouldBeTrue("true === true");
     426shouldBeTrue("false === false");
     427shouldBeFalse("true === false");
     428shouldBeTrue("Math === Math");
     429shouldBeFalse("Math === Boolean");
     430shouldBeTrue("Infinity === Infinity");
     431
     432// strict comparison ===
     433shouldBeFalse("nonSpeculativeStrictEqual(0, false)");
     434//shouldBe("undefined === undefined", "true"); // aborts in IE5 (undefined is not defined ;)
     435shouldBeTrue("nonSpeculativeStrictEqual(null, null)");
     436shouldBeFalse("nonSpeculativeStrictEqual(NaN, NaN)");
     437shouldBeTrue("nonSpeculativeStrictEqual(0.0, 0)");
     438shouldBeTrue("nonSpeculativeStrictEqual('abc', 'abc')");
     439shouldBeFalse("nonSpeculativeStrictEqual('a', 'x')");
     440shouldBeFalse("nonSpeculativeStrictEqual(1, '1')");
     441shouldBeFalse("nonSpeculativeStrictEqual('1', 1)");
     442shouldBeTrue("nonSpeculativeStrictEqual(true, true)");
     443shouldBeTrue("nonSpeculativeStrictEqual(false, false)");
     444shouldBeFalse("nonSpeculativeStrictEqual(true, false)");
     445shouldBeTrue("nonSpeculativeStrictEqual(Math, Math)");
     446shouldBeFalse("nonSpeculativeStrictEqual(Math, Boolean)");
     447shouldBeTrue("nonSpeculativeStrictEqual(Infinity, Infinity)");
    244448
    245449// !==
    246450shouldBe("0 !== 0", "false");
    247451shouldBe("0 !== 1", "true");
     452
     453// !==
     454shouldBe("nonSpeculativeStrictNotEqual(0, 0)", "false");
     455shouldBe("nonSpeculativeStrictNotEqual(0, 1)", "true");
    248456
    249457shouldBe("typeof undefined", "'undefined'");
  • trunk/Source/JavaScriptCore/ChangeLog

    r93048 r93070  
     12011-08-15  Gavin Barraclough  <barraclough@apple.com>
     2
     3        https://bugs.webkit.org/show_bug.cgi?id=66263
     4        DFG JIT does not always zero extend boolean result of DFG operations
     5
     6        Reviewed by Sam Weinig.
     7
     8        * dfg/DFGOperations.cpp:
     9        * dfg/DFGOperations.h:
     10            - Change bool return values to a 64-bit type.
     11
    1122011-08-15  Gavin Barraclough  <barraclough@apple.com>
    213
  • trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp

    r92569 r93070  
    398398}
    399399
    400 bool operationCompareLess(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
     400RegisterSizedBoolean operationCompareLess(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
    401401{
    402402    return jsLess<true>(exec, JSValue::decode(encodedOp1), JSValue::decode(encodedOp2));
    403403}
    404404
    405 bool operationCompareLessEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
     405RegisterSizedBoolean operationCompareLessEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
    406406{
    407407    return jsLessEq<true>(exec, JSValue::decode(encodedOp1), JSValue::decode(encodedOp2));
    408408}
    409409
    410 bool operationCompareGreater(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
     410RegisterSizedBoolean operationCompareGreater(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
    411411{
    412412    return jsLess<false>(exec, JSValue::decode(encodedOp2), JSValue::decode(encodedOp1));
    413413}
    414414
    415 bool operationCompareGreaterEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
     415RegisterSizedBoolean operationCompareGreaterEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
    416416{
    417417    return jsLessEq<false>(exec, JSValue::decode(encodedOp2), JSValue::decode(encodedOp1));
    418418}
    419419
    420 bool operationCompareEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
     420RegisterSizedBoolean operationCompareEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
    421421{
    422422    return JSValue::equalSlowCaseInline(exec, JSValue::decode(encodedOp1), JSValue::decode(encodedOp2));
    423423}
    424424
    425 bool operationCompareStrictEqCell(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
     425RegisterSizedBoolean operationCompareStrictEqCell(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
    426426{
    427427    JSValue op1 = JSValue::decode(encodedOp1);
     
    434434}
    435435
    436 bool operationCompareStrictEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
     436RegisterSizedBoolean operationCompareStrictEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
    437437{
    438438    return JSValue::strictEqual(exec, JSValue::decode(encodedOp1), JSValue::decode(encodedOp2));
     
    685685}
    686686
    687 bool dfgConvertJSValueToBoolean(ExecState* exec, EncodedJSValue encodedOp)
     687RegisterSizedBoolean dfgConvertJSValueToBoolean(ExecState* exec, EncodedJSValue encodedOp)
    688688{
    689689    return JSValue::decode(encodedOp).toBoolean(exec);
  • trunk/Source/JavaScriptCore/dfg/DFGOperations.h

    r91607 r93070  
    3535enum PutKind { Direct, NotDirect };
    3636
     37typedef intptr_t RegisterSizedBoolean;
     38
    3739extern "C" {
    3840
     
    4547typedef EncodedJSValue (*J_DFGOperation_EP)(ExecState*, void*);
    4648typedef EncodedJSValue (*J_DFGOperation_EI)(ExecState*, Identifier*);
    47 typedef bool (*Z_DFGOperation_EJ)(ExecState*, EncodedJSValue);
    48 typedef bool (*Z_DFGOperation_EJJ)(ExecState*, EncodedJSValue, EncodedJSValue);
     49typedef RegisterSizedBoolean (*Z_DFGOperation_EJ)(ExecState*, EncodedJSValue);
     50typedef RegisterSizedBoolean (*Z_DFGOperation_EJJ)(ExecState*, EncodedJSValue, EncodedJSValue);
    4951typedef void (*V_DFGOperation_EJJJ)(ExecState*, EncodedJSValue, EncodedJSValue, EncodedJSValue);
    5052typedef void (*V_DFGOperation_EJJP)(ExecState*, EncodedJSValue, EncodedJSValue, void*);
     
    8385void operationPutByIdDirectStrictOptimize(ExecState*, EncodedJSValue encodedValue, EncodedJSValue encodedBase, Identifier*);
    8486void operationPutByIdDirectNonStrictOptimize(ExecState*, EncodedJSValue encodedValue, EncodedJSValue encodedBase, Identifier*);
    85 bool operationCompareLess(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
    86 bool operationCompareLessEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
    87 bool operationCompareGreater(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
    88 bool operationCompareGreaterEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
    89 bool operationCompareEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
    90 bool operationCompareStrictEqCell(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
    91 bool operationCompareStrictEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
     87RegisterSizedBoolean operationCompareLess(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
     88RegisterSizedBoolean operationCompareLessEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
     89RegisterSizedBoolean operationCompareGreater(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
     90RegisterSizedBoolean operationCompareGreaterEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
     91RegisterSizedBoolean operationCompareEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
     92RegisterSizedBoolean operationCompareStrictEqCell(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
     93RegisterSizedBoolean operationCompareStrictEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
    9294void* operationVirtualCall(ExecState*);
    9395void* operationLinkCall(ExecState*);
     
    112114double dfgConvertJSValueToNumber(ExecState*, EncodedJSValue);
    113115int32_t dfgConvertJSValueToInt32(ExecState*, EncodedJSValue);
    114 bool dfgConvertJSValueToBoolean(ExecState*, EncodedJSValue);
     116RegisterSizedBoolean dfgConvertJSValueToBoolean(ExecState*, EncodedJSValue);
    115117
    116118} // extern "C"
Note: See TracChangeset for help on using the changeset viewer.