JavaScriptCore:
authormjs@apple.com <mjs@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 6 Oct 2008 18:31:07 +0000 (18:31 +0000)
committermjs@apple.com <mjs@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 6 Oct 2008 18:31:07 +0000 (18:31 +0000)
2008-10-06  Maciej Stachowiak  <mjs@apple.com>

        Not reviewed. Build fix.

        - revert toBoolean changes (r37333 and r37335); need to make WebCore work with these

        * API/JSValueRef.cpp:
        (JSValueToBoolean):
        * ChangeLog:
        * JavaScriptCore.exp:
        * VM/CodeBlock.cpp:
        (JSC::CodeBlock::dump):
        * VM/Machine.cpp:
        (JSC::Machine::privateExecute):
        (JSC::Machine::cti_op_loop_if_true):
        (JSC::Machine::cti_op_not):
        (JSC::Machine::cti_op_jtrue):
        * kjs/ArrayPrototype.cpp:
        (JSC::arrayProtoFuncFilter):
        (JSC::arrayProtoFuncEvery):
        (JSC::arrayProtoFuncSome):
        * kjs/BooleanConstructor.cpp:
        (JSC::constructBoolean):
        (JSC::callBooleanConstructor):
        * kjs/GetterSetter.h:
        * kjs/JSCell.h:
        (JSC::JSValue::toBoolean):
        * kjs/JSNumberCell.cpp:
        (JSC::JSNumberCell::toBoolean):
        * kjs/JSNumberCell.h:
        * kjs/JSObject.cpp:
        (JSC::JSObject::toBoolean):
        * kjs/JSObject.h:
        * kjs/JSString.cpp:
        (JSC::JSString::toBoolean):
        * kjs/JSString.h:
        * kjs/JSValue.h:
        * kjs/RegExpConstructor.cpp:
        (JSC::setRegExpConstructorMultiline):
        * kjs/RegExpObject.cpp:
        (JSC::RegExpObject::match):
        * kjs/RegExpPrototype.cpp:
        (JSC::regExpProtoFuncToString):

JavaScriptGlue:

2008-10-06  Maciej Stachowiak  <mjs@apple.com>

        Not reviewed. Build fix.

        - revert toBoolean changes (r37333 and r37335); need to make WebCore work with these

        * JSUtils.cpp:
        (KJSValueToCFTypeInternal):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@37337 268f45cc-cd09-0410-ab3c-d52691b4dbfc

21 files changed:
JavaScriptCore/API/JSValueRef.cpp
JavaScriptCore/ChangeLog
JavaScriptCore/JavaScriptCore.exp
JavaScriptCore/VM/CodeBlock.cpp
JavaScriptCore/VM/Machine.cpp
JavaScriptCore/kjs/ArrayPrototype.cpp
JavaScriptCore/kjs/BooleanConstructor.cpp
JavaScriptCore/kjs/GetterSetter.h
JavaScriptCore/kjs/JSCell.h
JavaScriptCore/kjs/JSNumberCell.cpp
JavaScriptCore/kjs/JSNumberCell.h
JavaScriptCore/kjs/JSObject.cpp
JavaScriptCore/kjs/JSObject.h
JavaScriptCore/kjs/JSString.cpp
JavaScriptCore/kjs/JSString.h
JavaScriptCore/kjs/JSValue.h
JavaScriptCore/kjs/RegExpConstructor.cpp
JavaScriptCore/kjs/RegExpObject.cpp
JavaScriptCore/kjs/RegExpPrototype.cpp
JavaScriptGlue/ChangeLog
JavaScriptGlue/JSUtils.cpp

index 68641a8bb57704fd02b8889e1eb5c0b28705e6a9..4e99d3dd96e54b6d0589fb2f85b3eda09b82e6c1 100644 (file)
@@ -188,9 +188,11 @@ JSValueRef JSValueMakeString(JSContextRef ctx, JSStringRef string)
     return toRef(jsString(exec, string->ustring()));
 }
 
-bool JSValueToBoolean(JSContextRef, JSValueRef value)
+bool JSValueToBoolean(JSContextRef ctx, JSValueRef value)
 {
-    return toJS(value)->toBoolean();
+    ExecState* exec = toJS(ctx);
+    JSValue* jsValue = toJS(value);
+    return jsValue->toBoolean(exec);
 }
 
 double JSValueToNumber(JSContextRef ctx, JSValueRef value, JSValueRef* exception)
index 11c2ffb558e6a1e14aec2e1c30051f1180e73936..b08ca332597c34f5a7a56f2c4e9b7f841d3b0a95 100644 (file)
@@ -1,3 +1,47 @@
+2008-10-06  Maciej Stachowiak  <mjs@apple.com>
+
+        Not reviewed. Build fix.
+        
+        - revert toBoolean changes (r37333 and r37335); need to make WebCore work with these
+
+        * API/JSValueRef.cpp:
+        (JSValueToBoolean):
+        * ChangeLog:
+        * JavaScriptCore.exp:
+        * VM/CodeBlock.cpp:
+        (JSC::CodeBlock::dump):
+        * VM/Machine.cpp:
+        (JSC::Machine::privateExecute):
+        (JSC::Machine::cti_op_loop_if_true):
+        (JSC::Machine::cti_op_not):
+        (JSC::Machine::cti_op_jtrue):
+        * kjs/ArrayPrototype.cpp:
+        (JSC::arrayProtoFuncFilter):
+        (JSC::arrayProtoFuncEvery):
+        (JSC::arrayProtoFuncSome):
+        * kjs/BooleanConstructor.cpp:
+        (JSC::constructBoolean):
+        (JSC::callBooleanConstructor):
+        * kjs/GetterSetter.h:
+        * kjs/JSCell.h:
+        (JSC::JSValue::toBoolean):
+        * kjs/JSNumberCell.cpp:
+        (JSC::JSNumberCell::toBoolean):
+        * kjs/JSNumberCell.h:
+        * kjs/JSObject.cpp:
+        (JSC::JSObject::toBoolean):
+        * kjs/JSObject.h:
+        * kjs/JSString.cpp:
+        (JSC::JSString::toBoolean):
+        * kjs/JSString.h:
+        * kjs/JSValue.h:
+        * kjs/RegExpConstructor.cpp:
+        (JSC::setRegExpConstructorMultiline):
+        * kjs/RegExpObject.cpp:
+        (JSC::RegExpObject::match):
+        * kjs/RegExpPrototype.cpp:
+        (JSC::regExpProtoFuncToString):
+
 2008-10-06  Maciej Stachowiak  <mjs@apple.com>
 
         Reviewed by Sam Weinig.
index 1c969f2a40b480f5b427028424fd872324a14187..30e3b918df2ddc9c74eef5a6dcc95e9ea75dd2a8 100644 (file)
@@ -335,6 +335,7 @@ __ZNK3JSC8JSObject8toNumberEPNS_9ExecStateE
 __ZNK3JSC8JSObject8toObjectEPNS_9ExecStateE
 __ZNK3JSC8JSObject8toStringEPNS_9ExecStateE
 __ZNK3JSC8JSObject9classNameEv
+__ZNK3JSC8JSObject9toBooleanEPNS_9ExecStateE
 __ZNK3JSC9CodeBlock17derefStructureIDsEPNS_11InstructionE
 __ZNK3JSC9HashTable11createTableEPNS_12JSGlobalDataE
 __ZNK3WTF8Collator7collateEPKtmS2_m
index 5bdb17a88e16c68e633533718afe41ff4bb2bef5..92371e374e7de26e55f25bef959f992c03a954c2 100644 (file)
@@ -810,11 +810,13 @@ void CodeBlock::dump(ExecState* exec, const Vector<Instruction>::const_iterator&
             break;
         }
         case op_tear_off_activation: {
-            printf("[%4d] tear_off_activation\n", location);
+            int r0 = (++it)->u.operand;
+            printf("[%4d] tear_off_activation\t %s\n", location, registerName(r0).c_str());
             break;
         }
         case op_tear_off_arguments: {
-            printf("[%4d] tear_off_arguments\n", location);
+            int r0 = (++it)->u.operand;
+            printf("[%4d] tear_off_arguments\t %s\n", location, registerName(r0).c_str());
             break;
         }
         case op_ret: {
index 26bef38812601d53b5ae670efa2318a898c14a26..280ecb2e0cfe4f2c4b516a3d7294f3eac1e95809 100644 (file)
@@ -2127,7 +2127,8 @@ JSValue* Machine::privateExecute(ExecutionFlag flag, RegisterFile* registerFile,
         */
         int dst = (++vPC)->u.operand;
         int src = (++vPC)->u.operand;
-        JSValue* result = jsBoolean(!r[src].jsValue(exec)->toBoolean());
+        JSValue* result = jsBoolean(!r[src].jsValue(exec)->toBoolean(exec));
+        VM_CHECK_EXCEPTION();
         r[dst] = result;
 
         ++vPC;
@@ -2985,7 +2986,7 @@ JSValue* Machine::privateExecute(ExecutionFlag flag, RegisterFile* registerFile,
          */
         int cond = (++vPC)->u.operand;
         int target = (++vPC)->u.operand;
-        if (r[cond].jsValue(exec)->toBoolean()) {
+        if (r[cond].jsValue(exec)->toBoolean(exec)) {
             vPC += target;
             CHECK_FOR_TIMEOUT();
             NEXT_OPCODE;
@@ -3002,7 +3003,7 @@ JSValue* Machine::privateExecute(ExecutionFlag flag, RegisterFile* registerFile,
         */
         int cond = (++vPC)->u.operand;
         int target = (++vPC)->u.operand;
-        if (r[cond].jsValue(exec)->toBoolean()) {
+        if (r[cond].jsValue(exec)->toBoolean(exec)) {
             vPC += target;
             NEXT_OPCODE;
         }
@@ -3018,7 +3019,7 @@ JSValue* Machine::privateExecute(ExecutionFlag flag, RegisterFile* registerFile,
         */
         int cond = (++vPC)->u.operand;
         int target = (++vPC)->u.operand;
-        if (!r[cond].jsValue(exec)->toBoolean()) {
+        if (!r[cond].jsValue(exec)->toBoolean(exec)) {
             vPC += target;
             NEXT_OPCODE;
         }
@@ -4987,7 +4988,11 @@ int Machine::cti_op_loop_if_true(CTI_ARGS)
 {
     JSValue* src1 = ARG_src1;
 
-    return src1->toBoolean();
+    ExecState* exec = ARG_exec;
+
+    bool result = src1->toBoolean(exec);
+    VM_CHECK_EXCEPTION_AT_END();
+    return result;
 }
 
 JSValue* Machine::cti_op_negate(CTI_ARGS)
@@ -5110,12 +5115,24 @@ int Machine::cti_op_jless(CTI_ARGS)
 
 JSValue* Machine::cti_op_not(CTI_ARGS)
 {
-    return jsBoolean(!ARG_src1->toBoolean());
+    JSValue* src = ARG_src1;
+
+    ExecState* exec = ARG_exec;
+
+    JSValue* result = jsBoolean(!src->toBoolean(exec));
+    VM_CHECK_EXCEPTION_AT_END();
+    return result;
 }
 
 int SFX_CALL Machine::cti_op_jtrue(CTI_ARGS)
 {
-    return ARG_src1->toBoolean();
+    JSValue* src1 = ARG_src1;
+
+    ExecState* exec = ARG_exec;
+
+    bool result = src1->toBoolean(exec);
+    VM_CHECK_EXCEPTION_AT_END();
+    return result;
 }
 
 JSValue* Machine::cti_op_post_inc(CTI_ARGS)
index 9715663f133ac0b1c727041d54c50badc541cc1a..8dcfba20764e7b24b4dbcb0741a5a7129aff4436 100644 (file)
@@ -582,7 +582,7 @@ JSValue* arrayProtoFuncFilter(ExecState* exec, JSObject*, JSValue* thisValue, co
 
         JSValue* result = call(exec, function, callType, callData, applyThis, eachArguments);
 
-        if (result->toBoolean())
+        if (result->toBoolean(exec))
             resultArray->put(exec, filterIndex++, v);
     }
     return resultArray;
@@ -656,7 +656,7 @@ JSValue* arrayProtoFuncEvery(ExecState* exec, JSObject*, JSValue* thisValue, con
         eachArguments.append(jsNumber(exec, k));
         eachArguments.append(thisObj);
 
-        bool predicateResult = call(exec, function, callType, callData, applyThis, eachArguments)->toBoolean();
+        bool predicateResult = call(exec, function, callType, callData, applyThis, eachArguments)->toBoolean(exec);
 
         if (!predicateResult) {
             result = jsBoolean(false);
@@ -720,7 +720,7 @@ JSValue* arrayProtoFuncSome(ExecState* exec, JSObject*, JSValue* thisValue, cons
         eachArguments.append(jsNumber(exec, k));
         eachArguments.append(thisObj);
 
-        bool predicateResult = call(exec, function, callType, callData, applyThis, eachArguments)->toBoolean();
+        bool predicateResult = call(exec, function, callType, callData, applyThis, eachArguments)->toBoolean(exec);
 
         if (predicateResult) {
             result = jsBoolean(true);
index 16ccdf0c4c8dfbf8b27d5fab065e3fe9e0324079..7eeb7776ddb6defe99415e3730ee28e7696fbaa5 100644 (file)
@@ -41,7 +41,7 @@ BooleanConstructor::BooleanConstructor(ExecState* exec, PassRefPtr<StructureID>
 JSObject* constructBoolean(ExecState* exec, const ArgList& args)
 {
     BooleanObject* obj = new (exec) BooleanObject(exec->lexicalGlobalObject()->booleanObjectStructure());
-    obj->setInternalValue(jsBoolean(args.at(exec, 0)->toBoolean()));
+    obj->setInternalValue(jsBoolean(args.at(exec, 0)->toBoolean(exec)));
     return obj;
 }
 
@@ -59,7 +59,7 @@ ConstructType BooleanConstructor::getConstructData(ConstructData& constructData)
 // ECMA 15.6.1
 static JSValue* callBooleanConstructor(ExecState* exec, JSObject*, JSValue*, const ArgList& args)
 {
-    return jsBoolean(args.at(exec, 0)->toBoolean());
+    return jsBoolean(args.at(exec, 0)->toBoolean(exec));
 }
 
 CallType BooleanConstructor::getCallData(CallData& callData)
index cd9683da55ea39adddb4d400770b834c1e339ac5..e8e6ff6bc58712f994223aa2449d93b4d0db9c40 100644 (file)
@@ -52,7 +52,7 @@ namespace JSC {
 
         virtual JSValue* toPrimitive(ExecState*, PreferredPrimitiveType) const;
         virtual bool getPrimitiveNumber(ExecState*, double& number, JSValue*& value);
-        bool toBoolean(ExecState*) const;
+        virtual bool toBoolean(ExecState*) const;
         virtual double toNumber(ExecState*) const;
         virtual UString toString(ExecState*) const;
         virtual JSObject* toObject(ExecState*) const;
index cd5753799d18a5b1ca1fb5c69f0256c45a807abf..bced0cd7940e7974a884fc476904527007486ea6 100644 (file)
@@ -72,7 +72,7 @@ namespace JSC {
         // Basic conversions.
         virtual JSValue* toPrimitive(ExecState*, PreferredPrimitiveType) const = 0;
         virtual bool getPrimitiveNumber(ExecState*, double& number, JSValue*&) = 0;
-        bool toBoolean() const;
+        virtual bool toBoolean(ExecState*) const = 0;
         virtual double toNumber(ExecState*) const = 0;
         virtual UString toString(ExecState*) const = 0;
         virtual JSObject* toObject(ExecState*) const = 0;
@@ -272,9 +272,9 @@ namespace JSC {
         return asCell()->getPrimitiveNumber(exec, number, value);
     }
 
-    inline bool JSValue::toBoolean() const
+    inline bool JSValue::toBoolean(ExecState* exec) const
     {
-        return JSImmediate::isImmediate(this) ? JSImmediate::toBoolean(this) : asCell()->toBoolean();
+        return JSImmediate::isImmediate(this) ? JSImmediate::toBoolean(this) : asCell()->toBoolean(exec);
     }
 
     ALWAYS_INLINE double JSValue::toNumber(ExecState* exec) const
index b8db2efdacbf85532d5a57cb9c82abb3767b7e5d..5b3f3bd54b060c44c2bc106d01dfb4d56ffcdf5c 100644 (file)
@@ -40,6 +40,11 @@ bool JSNumberCell::getPrimitiveNumber(ExecState*, double& number, JSValue*& valu
     return true;
 }
 
+bool JSNumberCell::toBoolean(ExecState*) const
+{
+    return m_value < 0.0 || m_value > 0.0; // false for NaN
+}
+
 double JSNumberCell::toNumber(ExecState*) const
 {
   return m_value;
index 44029a610b0409601675811bdeea92e8cd548297..111665139718043b9162f1ed2fce1665ce90b3c3 100644 (file)
@@ -52,7 +52,7 @@ namespace JSC {
 
         virtual JSValue* toPrimitive(ExecState*, PreferredPrimitiveType) const;
         virtual bool getPrimitiveNumber(ExecState*, double& number, JSValue*& value);
-        bool toBoolean() const { return m_value < 0.0 || m_value > 0.0; /* false for NaN */ }
+        virtual bool toBoolean(ExecState*) const;
         virtual double toNumber(ExecState*) const;
         virtual UString toString(ExecState*) const;
         virtual JSObject* toObject(ExecState*) const;
index 86ee2d1adc6cc7c613a1f90d86382654fd5f4ca1..cf5132e852a90d4796fcbf7bad46f9dc5effebb0 100644 (file)
@@ -430,6 +430,11 @@ void JSObject::getPropertyNames(ExecState* exec, PropertyNameArray& propertyName
     m_structureID->getEnumerablePropertyNames(exec, propertyNames, this);
 }
 
+bool JSObject::toBoolean(ExecState*) const
+{
+    return true;
+}
+
 double JSObject::toNumber(ExecState* exec) const
 {
     JSValue* primitive = toPrimitive(exec, PreferNumber);
index 14599e12ad5ead7ff3b9884ac1c7ece8e8aa8396..c6c9cb99bdf62765fc7f3661f14d15ac8e01e3d7 100644 (file)
@@ -28,7 +28,6 @@
 #include "CommonIdentifiers.h"
 #include "ExecState.h"
 #include "JSNumberCell.h"
-#include "JSString.h"
 #include "PropertyMap.h"
 #include "PropertySlot.h"
 #include "PutPropertySlot.h"
@@ -110,7 +109,7 @@ namespace JSC {
 
         virtual JSValue* toPrimitive(ExecState*, PreferredPrimitiveType = NoPreference) const;
         virtual bool getPrimitiveNumber(ExecState*, double& number, JSValue*& value);
-        bool toBoolean() const { return true; }
+        virtual bool toBoolean(ExecState*) const;
         virtual double toNumber(ExecState*) const;
         virtual UString toString(ExecState*) const;
         virtual JSObject* toObject(ExecState*) const;
@@ -247,17 +246,6 @@ inline bool JSCell::isObject(const ClassInfo* info) const
     return false;
 }
 
-inline bool JSCell::toBoolean() const
-{
-    JSType type = structureID()->typeInfo().type();
-    if (type == NumberType)
-        return static_cast<const JSNumberCell*>(this)->toBoolean();
-    if (type == ObjectType)
-        return static_cast<const JSObject*>(this)->toBoolean();
-    ASSERT(type == StringType);
-    return static_cast<const JSString*>(this)->toBoolean();
-}
-
 // this method is here to be after the inline declaration of JSCell::isObject
 inline bool JSValue::isObject(const ClassInfo* classInfo) const
 {
index d3fbc3ed2ee13ab899433937bebe7e0e0585e5bf..5844290a4f182488f33f7ce09b1c0c698edd2522 100644 (file)
@@ -42,6 +42,11 @@ bool JSString::getPrimitiveNumber(ExecState*, double& number, JSValue*& value)
     return false;
 }
 
+bool JSString::toBoolean(ExecState*) const
+{
+    return !m_value.isEmpty();
+}
+
 double JSString::toNumber(ExecState*) const
 {
     return m_value.toDouble();
index fc49c1316db49b557dcd0bf602e8174dbbf160db..d7c37bfc77d4f95f828d9213c5fe421337063fa3 100644 (file)
@@ -92,8 +92,6 @@ namespace JSC {
 
         static PassRefPtr<StructureID> createStructureID(JSValue* proto) { return StructureID::create(proto, TypeInfo(StringType, NeedsThisConversion)); }
 
-        bool toBoolean() const { return !m_value.isEmpty(); }
-
     private:
         enum VPtrStealingHackType { VPtrStealingHack };
         JSString(VPtrStealingHackType) 
@@ -103,6 +101,7 @@ namespace JSC {
 
         virtual JSValue* toPrimitive(ExecState*, PreferredPrimitiveType) const;
         virtual bool getPrimitiveNumber(ExecState*, double& number, JSValue*& value);
+        virtual bool toBoolean(ExecState*) const;
         virtual double toNumber(ExecState*) const;
         virtual JSObject* toObject(ExecState*) const;
         virtual UString toString(ExecState*) const;
index e3243a836d996b1460532331e36297f623edd896..d0e45131ebdcf57a7982fbe2d63f1673f6d0b271 100644 (file)
@@ -96,7 +96,7 @@ namespace JSC {
         JSValue* toPrimitive(ExecState*, PreferredPrimitiveType = NoPreference) const;
         bool getPrimitiveNumber(ExecState*, double& number, JSValue*&);
 
-        bool toBoolean() const;
+        bool toBoolean(ExecState*) const;
 
         // toNumber conversion is expected to be side effect free if an exception has
         // been set in the ExecState already.
index 8441e50b2de0032cf32dd8426c3ab8bd17eae8e6..d13f8363680422faab5bb4634ca8e92f38be2622 100644 (file)
@@ -311,9 +311,9 @@ void setRegExpConstructorInput(ExecState* exec, JSObject* baseObject, JSValue* v
     static_cast<RegExpConstructor*>(baseObject)->setInput(value->toString(exec));
 }
 
-void setRegExpConstructorMultiline(ExecState*, JSObject* baseObject, JSValue* value)
+void setRegExpConstructorMultiline(ExecState* exec, JSObject* baseObject, JSValue* value)
 {
-    static_cast<RegExpConstructor*>(baseObject)->setMultiline(value->toBoolean());
+    static_cast<RegExpConstructor*>(baseObject)->setMultiline(value->toBoolean(exec));
 }
   
 // ECMA 15.10.4
index 8d1b30594319dbec4107d2809e4a1d45cac465c6..30896a215c471bde1b6203af675b031f540f4141 100644 (file)
@@ -121,7 +121,7 @@ bool RegExpObject::match(ExecState* exec, const ArgList& args)
         }
     }
 
-    bool global = get(exec, exec->propertyNames().global)->toBoolean();
+    bool global = get(exec, exec->propertyNames().global)->toBoolean(exec);
     int lastIndex = 0;
     if (global) {
         if (d->lastIndex < 0 || d->lastIndex > input.size()) {
index 21a49cb00da358a6a9e973b5f1680f5549b3fdb5..80d6dc790f69d03c14728ddb989f030585f8bba8 100644 (file)
@@ -106,11 +106,11 @@ JSValue* regExpProtoFuncToString(ExecState* exec, JSObject*, JSValue* thisValue,
 
     UString result = "/" + static_cast<RegExpObject*>(thisValue)->get(exec, exec->propertyNames().source)->toString(exec);
     result.append('/');
-    if (static_cast<RegExpObject*>(thisValue)->get(exec, exec->propertyNames().global)->toBoolean())
+    if (static_cast<RegExpObject*>(thisValue)->get(exec, exec->propertyNames().global)->toBoolean(exec))
         result.append('g');
-    if (static_cast<RegExpObject*>(thisValue)->get(exec, exec->propertyNames().ignoreCase)->toBoolean())
+    if (static_cast<RegExpObject*>(thisValue)->get(exec, exec->propertyNames().ignoreCase)->toBoolean(exec))
         result.append('i');
-    if (static_cast<RegExpObject*>(thisValue)->get(exec, exec->propertyNames().multiline)->toBoolean())
+    if (static_cast<RegExpObject*>(thisValue)->get(exec, exec->propertyNames().multiline)->toBoolean(exec))
         result.append('m');
     return jsNontrivialString(exec, result);
 }
index 4487a9389f0d666211c6bed4b2e03888bda26e21..30323ba36a2852898fc84c73867d4699735c35c2 100644 (file)
@@ -1,3 +1,12 @@
+2008-10-06  Maciej Stachowiak  <mjs@apple.com>
+
+        Not reviewed. Build fix.
+
+        - revert toBoolean changes (r37333 and r37335); need to make WebCore work with these
+
+        * JSUtils.cpp:
+        (KJSValueToCFTypeInternal):
+
 2008-10-06  Maciej Stachowiak  <mjs@apple.com>
 
         Not reviewed.
index 9853e7066d6906b24fd128b7d583507f34ae079e..59b6ca00036c5b645c42eafb2650cf09f1fba5ee 100644 (file)
@@ -207,7 +207,7 @@ CFTypeRef KJSValueToCFTypeInternal(JSValue *inValue, ExecState *exec, ObjectImpL
 
         if (inValue->isBoolean())
             {
-                result = inValue->toBoolean() ? kCFBooleanTrue : kCFBooleanFalse;
+                result = inValue->toBoolean(exec) ? kCFBooleanTrue : kCFBooleanFalse;
                 RetainCFType(result);
                 return result;
             }