Reviewed by Geoff.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Oct 2006 16:48:28 +0000 (16:48 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Oct 2006 16:48:28 +0000 (16:48 +0000)
        - made changes so the code compiles with the highest warning level
          under MSVC (disabling some warnings, making some code fixes)

        * API/JSCallbackConstructor.cpp:
        (KJS::JSCallbackConstructor::construct):
        * API/JSCallbackFunction.cpp:
        (KJS::JSCallbackFunction::callAsFunction):
        * API/JSCallbackObject.cpp:
        (KJS::JSCallbackObject::init):
        (KJS::JSCallbackObject::construct):
        (KJS::JSCallbackObject::callAsFunction):
        * API/JSObjectRef.cpp:
        (JSPropertyNameArrayGetNameAtIndex):
        * API/JSStringRef.cpp:
        (JSStringCreateWithCharacters):
        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
        * bindings/c/c_utility.cpp:
        (KJS::Bindings::convertUTF8ToUTF16):
        (KJS::Bindings::coerceValueToNPVariantStringType):
        (KJS::Bindings::convertValueToNPVariant):
        * kjs/DateMath.h:
        (KJS::GregorianDateTime::GregorianDateTime):
        * kjs/ExecState.h:
        (KJS::ExecState::hadException):
        * kjs/JSImmediate.h:
        (KJS::JSImmediate::fromDouble):
        (KJS::JSImmediate::toDouble):
        (KJS::JSImmediate::NanAsBits):
        (KJS::JSImmediate::oneAsBits):
        * kjs/Parser.h:
        * kjs/PropertyNameArray.h:
        (KJS::PropertyNameArray::size):
        * kjs/array_object.cpp:
        (ArrayObjectImp::callAsFunction):
        * kjs/bool_object.cpp:
        (BooleanObjectImp::callAsFunction):
        * kjs/collector.cpp:
        (KJS::Collector::allocate):
        (KJS::Collector::markCurrentThreadConservatively):
        (KJS::Collector::collect):
        * kjs/completion.h:
        (KJS::Completion::isValueCompletion):
        * kjs/date_object.cpp:
        (KJS::findMonth):
        * kjs/debugger.cpp:
        (Debugger::sourceParsed):
        (Debugger::sourceUnused):
        (Debugger::exception):
        (Debugger::atStatement):
        (Debugger::callEvent):
        (Debugger::returnEvent):
        * kjs/dtoa.cpp:
        * kjs/error_object.cpp:
        (ErrorObjectImp::callAsFunction):
        (NativeErrorImp::callAsFunction):
        * kjs/function.cpp:
        (KJS::FunctionImp::processVarDecls):
        (KJS::GlobalFuncImp::callAsFunction):
        * kjs/function_object.cpp:
        (FunctionPrototype::callAsFunction):
        * kjs/grammar.y:
        * kjs/identifier.cpp:
        (KJS::CStringTranslator::translate):
        (KJS::Identifier::add):
        * kjs/internal.h:
        * kjs/lexer.cpp:
        (Lexer::lex):
        (Lexer::isIdentStart):
        (Lexer::isIdentPart):
        (isDecimalDigit):
        (Lexer::isHexDigit):
        (Lexer::isOctalDigit):
        (Lexer::matchPunctuator):
        (Lexer::singleEscape):
        (Lexer::convertOctal):
        (Lexer::convertHex):
        (Lexer::convertUnicode):
        (Lexer::record8):
        * kjs/lexer.h:
        * kjs/math_object.cpp:
        (MathFuncImp::callAsFunction):
        * kjs/number_object.cpp:
        (integer_part_noexp):
        (intPow10):
        (NumberProtoFunc::callAsFunction):
        (NumberObjectImp::callAsFunction):
        * kjs/object.cpp:
        (KJS::JSObject::deleteProperty):
        (KJS::JSObject::callAsFunction):
        (KJS::JSObject::toBoolean):
        (KJS::JSObject::toObject):
        * kjs/object.h:
        (KJS::JSObject::getPropertySlot):
        * kjs/property_map.cpp:
        (KJS::isValid):
        (KJS::PropertyMap::put):
        (KJS::PropertyMap::insert):
        (KJS::PropertyMap::containsGettersOrSetters):
        * kjs/property_map.h:
        (KJS::PropertyMap::hasGetterSetterProperties):
        * kjs/property_slot.h:
        * kjs/string_object.cpp:
        (StringInstance::getPropertyNames):
        (StringObjectImp::callAsFunction):
        (StringObjectFuncImp::callAsFunction):
        * kjs/ustring.cpp:
        (KJS::UString::Rep::computeHash):
        (KJS::UString::UString):
        (KJS::UString::from):
        (KJS::UString::append):
        (KJS::UString::ascii):
        (KJS::UString::operator=):
        (KJS::UString::find):
        (KJS::UString::rfind):
        * kjs/ustring.h:
        (KJS::UChar::high):
        (KJS::UChar::low):
        (KJS::UCharReference::low):
        (KJS::UCharReference::high):
        * kjs/value.cpp:
        (KJS::JSValue::toUInt16):
        * kjs/value.h:
        * pcre/pcre_compile.c:
        (get_othercase_range):
        * pcre/pcre_exec.c:
        (match):
        * pcre/pcre_internal.h:
        * wtf/HashFunctions.h:
        (WTF::intHash):
        (WTF::PtrHash::hash):
        * wtf/MathExtras.h:
        (isnan):
        (lround):
        (lroundf):
        * wtf/StringExtras.h:
        (strncasecmp):
        * wtf/unicode/icu/UnicodeIcu.h:
        (WTF::Unicode::isPrintableChar):

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

49 files changed:
JavaScriptCore/API/JSCallbackConstructor.cpp
JavaScriptCore/API/JSCallbackFunction.cpp
JavaScriptCore/API/JSCallbackObject.cpp
JavaScriptCore/API/JSObjectRef.cpp
JavaScriptCore/API/JSStringRef.cpp
JavaScriptCore/ChangeLog
JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj
JavaScriptCore/JavaScriptCore.vcproj/testkjs/testkjs.vcproj
JavaScriptCore/bindings/c/c_utility.cpp
JavaScriptCore/kjs/DateMath.h
JavaScriptCore/kjs/ExecState.h
JavaScriptCore/kjs/JSImmediate.h
JavaScriptCore/kjs/Parser.h
JavaScriptCore/kjs/PropertyNameArray.h
JavaScriptCore/kjs/array_object.cpp
JavaScriptCore/kjs/bool_object.cpp
JavaScriptCore/kjs/collector.cpp
JavaScriptCore/kjs/completion.h
JavaScriptCore/kjs/date_object.cpp
JavaScriptCore/kjs/debugger.cpp
JavaScriptCore/kjs/dtoa.cpp
JavaScriptCore/kjs/error_object.cpp
JavaScriptCore/kjs/function.cpp
JavaScriptCore/kjs/function_object.cpp
JavaScriptCore/kjs/grammar.y
JavaScriptCore/kjs/identifier.cpp
JavaScriptCore/kjs/internal.h
JavaScriptCore/kjs/lexer.cpp
JavaScriptCore/kjs/lexer.h
JavaScriptCore/kjs/math_object.cpp
JavaScriptCore/kjs/number_object.cpp
JavaScriptCore/kjs/object.cpp
JavaScriptCore/kjs/object.h
JavaScriptCore/kjs/property_map.cpp
JavaScriptCore/kjs/property_map.h
JavaScriptCore/kjs/property_slot.h
JavaScriptCore/kjs/string_object.cpp
JavaScriptCore/kjs/testkjs.cpp
JavaScriptCore/kjs/ustring.cpp
JavaScriptCore/kjs/ustring.h
JavaScriptCore/kjs/value.cpp
JavaScriptCore/kjs/value.h
JavaScriptCore/pcre/pcre_compile.c
JavaScriptCore/pcre/pcre_exec.c
JavaScriptCore/pcre/pcre_internal.h
JavaScriptCore/wtf/HashFunctions.h
JavaScriptCore/wtf/MathExtras.h
JavaScriptCore/wtf/StringExtras.h
JavaScriptCore/wtf/unicode/icu/UnicodeIcu.h

index 3f240faa57d06decb40321ed8fa5cb0c5f2aa432..89497e0f50aeb3cf4bc5f29243f355d87db4fdbe 100644 (file)
@@ -65,9 +65,9 @@ JSObject* JSCallbackConstructor::construct(ExecState* exec, const List &args)
     JSObjectRef thisRef = toRef(this);
 
     if (m_callback) {
-        size_t argumentCount = args.size();
+        int argumentCount = static_cast<int>(args.size());
         Vector<JSValueRef, 16> arguments(argumentCount);
-        for (size_t i = 0; i < argumentCount; i++)
+        for (int i = 0; i < argumentCount; i++)
             arguments[i] = toRef(args[i]);
         return toJS(m_callback(ctx, thisRef, argumentCount, arguments, toRef(exec->exceptionSlot())));
     }
index 9f08e627559d8dde658f82161f4503f55fcff155..dae8ca251a34027bc9d020f0e530ffec0b3e652a 100644 (file)
@@ -54,9 +54,9 @@ JSValue* JSCallbackFunction::callAsFunction(ExecState* exec, JSObject* thisObj,
     JSObjectRef thisRef = toRef(this);
     JSObjectRef thisObjRef = toRef(thisObj);
 
-    size_t argumentCount = args.size();
+    int argumentCount = static_cast<int>(args.size());
     Vector<JSValueRef, 16> arguments(argumentCount);
-    for (size_t i = 0; i < argumentCount; i++)
+    for (int i = 0; i < argumentCount; i++)
         arguments[i] = toRef(args[i]);
     return toJS(m_callback(execRef, thisRef, thisObjRef, argumentCount, arguments, toRef(exec->exceptionSlot())));
 }
index a2c41dd4ced66c72d63acb99ec64214ef026ec8f..6707da7881543edc855b8357d9c44bead724c477 100644 (file)
@@ -58,7 +58,7 @@ void JSCallbackObject::init(ExecState* exec, JSClassRef jsClass, void* data)
     } while ((jsClass = jsClass->parentClass));
     
     // initialize from base to derived
-    for (int i = initRoutines.size() - 1; i >= 0; i--) {
+    for (int i = static_cast<int>(initRoutines.size()) - 1; i >= 0; i--) {
         JSObjectInitializeCallback initialize = initRoutines[i];
         initialize(toRef(exec), toRef(this));
     }
@@ -225,9 +225,9 @@ JSObject* JSCallbackObject::construct(ExecState* exec, const List& args)
     
     for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) {
         if (JSObjectCallAsConstructorCallback callAsConstructor = jsClass->callAsConstructor) {
-            size_t argumentCount = args.size();
+            int argumentCount = static_cast<int>(args.size());
             Vector<JSValueRef, 16> arguments(argumentCount);
-            for (size_t i = 0; i < argumentCount; i++)
+            for (int i = 0; i < argumentCount; i++)
                 arguments[i] = toRef(args[i]);
             return toJS(callAsConstructor(execRef, thisRef, argumentCount, arguments, toRef(exec->exceptionSlot())));
         }
@@ -277,9 +277,9 @@ JSValue* JSCallbackObject::callAsFunction(ExecState* exec, JSObject* thisObj, co
 
     for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) {
         if (JSObjectCallAsFunctionCallback callAsFunction = jsClass->callAsFunction) {
-            size_t argumentCount = args.size();
+            int argumentCount = static_cast<int>(args.size());
             Vector<JSValueRef, 16> arguments(argumentCount);
-            for (size_t i = 0; i < argumentCount; i++)
+            for (int i = 0; i < argumentCount; i++)
                 arguments[i] = toRef(args[i]);
             return toJS(callAsFunction(execRef, thisRef, thisObjRef, argumentCount, arguments, toRef(exec->exceptionSlot())));
         }
index 5fbee983dbeb742d5423ef15ac218daf16bfc000..80d32ff29528987c868aa80740d3d6b373739e23 100644 (file)
@@ -348,7 +348,7 @@ size_t JSPropertyNameArrayGetCount(JSPropertyNameArrayRef array)
 
 JSStringRef JSPropertyNameArrayGetNameAtIndex(JSPropertyNameArrayRef array, size_t index)
 {
-    return toRef(array->array[index].ustring().rep());
+    return toRef(array->array[static_cast<unsigned>(index)].ustring().rep());
 }
 
 void JSPropertyNameAccumulatorAddName(JSPropertyNameAccumulatorRef array, JSStringRef propertyName)
index e73ab233f9342296f105ffb3291a63640eeabb5b..a7169c3bb97d7fa18002d7a9f20d3c5ba0dfef07 100644 (file)
@@ -40,7 +40,7 @@ using namespace KJS;
 JSStringRef JSStringCreateWithCharacters(const JSChar* chars, size_t numChars)
 {
     JSLock lock;
-    return toRef(UString(reinterpret_cast<const UChar*>(chars), numChars).rep()->ref());
+    return toRef(UString(reinterpret_cast<const UChar*>(chars), static_cast<int>(numChars)).rep()->ref());
 }
 
 JSStringRef JSStringCreateWithUTF8CString(const char* string)
index 63b7ebea127017eb232ebe663f3b75b8433fc5f9..5780ec97cab959b1157e8b2221ece97475c3407c 100644 (file)
@@ -1,3 +1,146 @@
+2006-10-28  Darin Adler  <darin@apple.com>
+
+        Reviewed by Geoff.
+
+        - made changes so the code compiles with the highest warning level
+          under MSVC (disabling some warnings, making some code fixes)
+
+        * API/JSCallbackConstructor.cpp:
+        (KJS::JSCallbackConstructor::construct):
+        * API/JSCallbackFunction.cpp:
+        (KJS::JSCallbackFunction::callAsFunction):
+        * API/JSCallbackObject.cpp:
+        (KJS::JSCallbackObject::init):
+        (KJS::JSCallbackObject::construct):
+        (KJS::JSCallbackObject::callAsFunction):
+        * API/JSObjectRef.cpp:
+        (JSPropertyNameArrayGetNameAtIndex):
+        * API/JSStringRef.cpp:
+        (JSStringCreateWithCharacters):
+        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+        * bindings/c/c_utility.cpp:
+        (KJS::Bindings::convertUTF8ToUTF16):
+        (KJS::Bindings::coerceValueToNPVariantStringType):
+        (KJS::Bindings::convertValueToNPVariant):
+        * kjs/DateMath.h:
+        (KJS::GregorianDateTime::GregorianDateTime):
+        * kjs/ExecState.h:
+        (KJS::ExecState::hadException):
+        * kjs/JSImmediate.h:
+        (KJS::JSImmediate::fromDouble):
+        (KJS::JSImmediate::toDouble):
+        (KJS::JSImmediate::NanAsBits):
+        (KJS::JSImmediate::oneAsBits):
+        * kjs/Parser.h:
+        * kjs/PropertyNameArray.h:
+        (KJS::PropertyNameArray::size):
+        * kjs/array_object.cpp:
+        (ArrayObjectImp::callAsFunction):
+        * kjs/bool_object.cpp:
+        (BooleanObjectImp::callAsFunction):
+        * kjs/collector.cpp:
+        (KJS::Collector::allocate):
+        (KJS::Collector::markCurrentThreadConservatively):
+        (KJS::Collector::collect):
+        * kjs/completion.h:
+        (KJS::Completion::isValueCompletion):
+        * kjs/date_object.cpp:
+        (KJS::findMonth):
+        * kjs/debugger.cpp:
+        (Debugger::sourceParsed):
+        (Debugger::sourceUnused):
+        (Debugger::exception):
+        (Debugger::atStatement):
+        (Debugger::callEvent):
+        (Debugger::returnEvent):
+        * kjs/dtoa.cpp:
+        * kjs/error_object.cpp:
+        (ErrorObjectImp::callAsFunction):
+        (NativeErrorImp::callAsFunction):
+        * kjs/function.cpp:
+        (KJS::FunctionImp::processVarDecls):
+        (KJS::GlobalFuncImp::callAsFunction):
+        * kjs/function_object.cpp:
+        (FunctionPrototype::callAsFunction):
+        * kjs/grammar.y:
+        * kjs/identifier.cpp:
+        (KJS::CStringTranslator::translate):
+        (KJS::Identifier::add):
+        * kjs/internal.h:
+        * kjs/lexer.cpp:
+        (Lexer::lex):
+        (Lexer::isIdentStart):
+        (Lexer::isIdentPart):
+        (isDecimalDigit):
+        (Lexer::isHexDigit):
+        (Lexer::isOctalDigit):
+        (Lexer::matchPunctuator):
+        (Lexer::singleEscape):
+        (Lexer::convertOctal):
+        (Lexer::convertHex):
+        (Lexer::convertUnicode):
+        (Lexer::record8):
+        * kjs/lexer.h:
+        * kjs/math_object.cpp:
+        (MathFuncImp::callAsFunction):
+        * kjs/number_object.cpp:
+        (integer_part_noexp):
+        (intPow10):
+        (NumberProtoFunc::callAsFunction):
+        (NumberObjectImp::callAsFunction):
+        * kjs/object.cpp:
+        (KJS::JSObject::deleteProperty):
+        (KJS::JSObject::callAsFunction):
+        (KJS::JSObject::toBoolean):
+        (KJS::JSObject::toObject):
+        * kjs/object.h:
+        (KJS::JSObject::getPropertySlot):
+        * kjs/property_map.cpp:
+        (KJS::isValid):
+        (KJS::PropertyMap::put):
+        (KJS::PropertyMap::insert):
+        (KJS::PropertyMap::containsGettersOrSetters):
+        * kjs/property_map.h:
+        (KJS::PropertyMap::hasGetterSetterProperties):
+        * kjs/property_slot.h:
+        * kjs/string_object.cpp:
+        (StringInstance::getPropertyNames):
+        (StringObjectImp::callAsFunction):
+        (StringObjectFuncImp::callAsFunction):
+        * kjs/ustring.cpp:
+        (KJS::UString::Rep::computeHash):
+        (KJS::UString::UString):
+        (KJS::UString::from):
+        (KJS::UString::append):
+        (KJS::UString::ascii):
+        (KJS::UString::operator=):
+        (KJS::UString::find):
+        (KJS::UString::rfind):
+        * kjs/ustring.h:
+        (KJS::UChar::high):
+        (KJS::UChar::low):
+        (KJS::UCharReference::low):
+        (KJS::UCharReference::high):
+        * kjs/value.cpp:
+        (KJS::JSValue::toUInt16):
+        * kjs/value.h:
+        * pcre/pcre_compile.c:
+        (get_othercase_range):
+        * pcre/pcre_exec.c:
+        (match):
+        * pcre/pcre_internal.h:
+        * wtf/HashFunctions.h:
+        (WTF::intHash):
+        (WTF::PtrHash::hash):
+        * wtf/MathExtras.h:
+        (isnan):
+        (lround):
+        (lroundf):
+        * wtf/StringExtras.h:
+        (strncasecmp):
+        * wtf/unicode/icu/UnicodeIcu.h:
+        (WTF::Unicode::isPrintableChar):
+
 2006-10-26  W. Andy Carrel  <wac@google.com>
 
         Reviewed by Maciej.
index dd13eb4abc914b8eace4642bf8d5ff93bbfc8146..e0e6aaeed5c4167286c04d7fa1c7bca85a8a623f 100644 (file)
                                RuntimeLibrary="3"
                                RuntimeTypeInfo="false"
                                UsePrecompiledHeader="0"
-                               WarningLevel="1"
-                               Detect64BitPortabilityProblems="false"
+                               WarningLevel="4"
+                               WarnAsError="true"
+                               Detect64BitPortabilityProblems="true"
                                DebugInformationFormat="4"
-                               DisableSpecificWarnings="4138; 4996; 4355"
+                               DisableSpecificWarnings="4127;4355;4510;4512;4610;4706;4996"
                                ForcedIncludeFiles=""
                        />
                        <Tool
                                RuntimeLibrary="2"
                                RuntimeTypeInfo="false"
                                UsePrecompiledHeader="0"
-                               WarningLevel="1"
-                               Detect64BitPortabilityProblems="false"
+                               WarningLevel="4"
+                               WarnAsError="true"
+                               Detect64BitPortabilityProblems="true"
                                DebugInformationFormat="3"
-                               DisableSpecificWarnings="4138; 4996; 4355"
+                               DisableSpecificWarnings="4127;4355;4510;4512;4610;4706;4996"
                                ForcedIncludeFiles=""
                        />
                        <Tool
index b869c835a4c1889aed40e94e0eb0b0dea544c476..a6f8d35daf988ef0e2095d8754f9e01c256c5208 100644 (file)
                                BasicRuntimeChecks="3"
                                RuntimeLibrary="2"
                                UsePrecompiledHeader="0"
-                               WarningLevel="1"
-                               Detect64BitPortabilityProblems="false"
+                               WarningLevel="4"
+                               WarnAsError="true"
+                               Detect64BitPortabilityProblems="true"
                                DebugInformationFormat="4"
+                               DisableSpecificWarnings="4127;4355;4510;4512;4610;4706;4996"
                        />
                        <Tool
                                Name="VCManagedResourceCompilerTool"
index 549c580d340588af7d21fa7cc7b5f32dc9344b71..d70893254fe1593737eaf1c3d5b97a172b0e2df2 100644 (file)
@@ -50,7 +50,7 @@ void convertUTF8ToUTF16(const NPUTF8 *UTF8Chars, int UTF8Length, NPUTF16 **UTF16
     assert(UTF16Chars);
     
     if (UTF8Length == -1)
-        UTF8Length = strlen(UTF8Chars);
+        UTF8Length = static_cast<int>(strlen(UTF8Chars));
         
     // UTF16Length maximum length is the length of the UTF8 string, plus one to include terminator
     // Without the plus one, it will convert ok, but a warning is generated from the converter as
@@ -87,7 +87,7 @@ void coerceValueToNPVariantStringType(ExecState *exec, JSValue *value, NPVariant
 {
     UString ustring = value->toString(exec);
     CString cstring = ustring.UTF8String();
-    NPString string = { (const NPUTF8 *)cstring.c_str(), cstring.size() };
+    NPString string = { (const NPUTF8 *)cstring.c_str(), static_cast<uint32_t>(cstring.size()) };
     NPN_InitializeVariantWithStringCopy(result, &string);
 }
 
@@ -99,7 +99,7 @@ void convertValueToNPVariant(ExecState *exec, JSValue *value, NPVariant *result)
     if (type == StringType) {
         UString ustring = value->toString(exec);
         CString cstring = ustring.UTF8String();
-        NPString string = { (const NPUTF8 *)cstring.c_str(), cstring.size() };
+        NPString string = { (const NPUTF8 *)cstring.c_str(), static_cast<uint32_t>(cstring.size()) };
         NPN_InitializeVariantWithStringCopy(result, &string);
     } else if (type == NumberType) {
         DOUBLE_TO_NPVARIANT(value->toNumber(exec), *result);
index e3ed05e9db74a819609a475db929ffce48cc4f99..2909576fc3e9493ee559cb272958bc1542ab97b8 100644 (file)
@@ -111,8 +111,8 @@ struct GregorianDateTime {
         timeZone = new char[inZoneSize];
         strncpy(timeZone, inTm.tm_zone, inZoneSize);
 #else
-        utcOffset = (getUTCOffset() / msPerSecond) + (isDST ? secondsPerHour : 0);
-        timeZone = NULL;
+        utcOffset = static_cast<int>(getUTCOffset() / msPerSecond + isDST ? secondsPerHour : 0);
+        timeZone = 0;
 #endif
     }
 
index 10a31e8933c4233375fdb53bf26790205540cd01..c16b50d89d8857d167cdb05f7953fedb2529eedf 100644 (file)
@@ -73,7 +73,7 @@ namespace KJS {
     void clearException() { m_exception = 0; }
     JSValue* exception() const { return m_exception; }
     JSValue** exceptionSlot() { return &m_exception; }
-    bool hadException() const { return m_exception; }
+    bool hadException() const { return !!m_exception; }
 
   private:
     ExecState(Interpreter* interp, Context* con)
index fde639f6209f0263330046aab15ffc8585b5a719..5705c27c030fe193cb5ab01c1105b92f1dd63155 100644 (file)
 #include <stdint.h>
 #include <stdlib.h>
 
+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 4127)
+#pragma warning(disable: 4244)
+#pragma warning(disable: 4305)
+#pragma warning(disable: 4307)
+#pragma warning(disable: 4309)
+#endif
+
 namespace KJS {
 
 class ExecState;
@@ -201,9 +210,9 @@ private:
         const uint32_t NaN32AsBits = 0x7fc00000;
         const uint64_t NaN64AsBits = 0x7ff80000ULL << 32;
 
-        if (JSImmediate::is32bit())
+        if (is32bit())
             return NaN32AsBits;
-        else if (JSImmediate::is64bit())
+        else if (is64bit())
             return NaN64AsBits;
         else {
             abort();
@@ -221,9 +230,9 @@ private:
         const uint32_t One32AsBits = 0x3f800000;
         const uint64_t One64AsBits = 0x3ff00000ULL << 32;
 
-        if (JSImmediate::is32bit())
+        if (is32bit())
             return One32AsBits;
-        else if (JSImmediate::is64bit())
+        else if (is64bit())
             return One64AsBits;
         else {
             abort();
@@ -234,4 +243,8 @@ private:
 
 } // namespace KJS
 
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
+
 #endif
index f8c15075d49f109da5d8229083640cd45d668a46..51ebbc679918a0f23e44260860845c8a4856b9dd 100644 (file)
@@ -31,9 +31,10 @@ namespace KJS {
 
     class Node;
     class ProgramNode;
-    class UChar;
     class UString;
 
+    struct UChar;
+
     /**
      * @internal
      *
index be3da34e58ab3b10fe201605b54f362dee5f9afd..aa2cca3ca4d2e91511d8e6b46b2e87c42dbd93eb 100644 (file)
@@ -40,7 +40,7 @@ namespace KJS {
         void add(const Identifier&);
         iterator begin() const { return m_vector.begin(); }
         iterator end() const { return m_vector.end(); }
-        int size() const { return m_vector.size(); }
+        size_t size() const { return m_vector.size(); }
 
         Identifier& operator[](unsigned i) { return m_vector[i]; }
         const Identifier& operator[](unsigned i) const { return m_vector[i]; }
index eca277ab5c9dad2fad12cbbe4836e149c40569ae..fcdf1df81c32a080f8d41c2c17b405b8884a9b06 100644 (file)
@@ -974,7 +974,7 @@ JSObject *ArrayObjectImp::construct(ExecState *exec, const List &args)
 }
 
 // ECMA 15.6.1
-JSValue *ArrayObjectImp::callAsFunction(ExecState *exec, JSObject */*thisObj*/, const List &args)
+JSValue *ArrayObjectImp::callAsFunction(ExecState *exec, JSObject *, const List &args)
 {
   // equivalent to 'new Array(....)'
   return construct(exec,args);
index 257f6675fbd4dfd409dd2700d890d07040f7e4f6..8c12d68d6491a9aa73409f74efc1f455c1c88a45 100644 (file)
@@ -114,7 +114,7 @@ JSObject *BooleanObjectImp::construct(ExecState *exec, const List &args)
 }
 
 // ECMA 15.6.1
-JSValue *BooleanObjectImp::callAsFunction(ExecState *exec, JSObject */*thisObj*/, const List &args)
+JSValue *BooleanObjectImp::callAsFunction(ExecState *exec, JSObject *, const List &args)
 {
   if (args.isEmpty())
     return jsBoolean(false);
index 748480eae2896b7cd0e23d9d2bee49b5b50f3b4e..108c9957a0fcdceff5df3be9d3b9dbe30d05a7e3 100644 (file)
@@ -187,7 +187,7 @@ allocateNewBlock:
   // could avoid the casts by using a cell offset, but this avoids a relatively-slow multiply
   targetBlock->freeList = reinterpret_cast<CollectorCell *>(reinterpret_cast<char *>(newCell + 1) + newCell->u.freeCell.next);
 
-  targetBlock->usedCells = targetBlockUsedCells + 1;
+  targetBlock->usedCells = static_cast<uint32_t>(targetBlockUsedCells + 1);
   heap.numLiveObjects = numLiveObjects + 1;
 
   return newCell;
@@ -300,7 +300,14 @@ gotGoodPointer:
 void Collector::markCurrentThreadConservatively()
 {
     jmp_buf registers;
+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 4611)
+#endif
     setjmp(registers);
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
 
 #if PLATFORM(DARWIN)
     pthread_t thread = pthread_self();
@@ -532,7 +539,7 @@ bool Collector::collect()
       }
     }
     
-    curBlock->usedCells = usedCells;
+    curBlock->usedCells = static_cast<uint32_t>(usedCells);
     curBlock->freeList = freeList;
 
     if (usedCells == 0) {
index 37402b2e70816648b2b6e352207646fd783c5c6e..a06e60e91768f748057d7789aabcca4eb3edc47e 100644 (file)
@@ -53,7 +53,7 @@ namespace KJS {
     ComplType complType() const { return comp; }
     JSValue *value() const { return val; }
     Identifier target() const { return tar; }
-    bool isValueCompletion() const { return val; }
+    bool isValueCompletion() const { return !!val; }
   private:
     ComplType comp;
     JSValue *val;
index 1f05731a74d7af5b9e4b6262d01fe82a53862dc9..6cc1089bae9ae50cfcb532982cd87b8c25df616f 100644 (file)
@@ -173,7 +173,7 @@ static JSCell* formatLocaleDate(GregorianDateTime gdt, const LocaleDateTimeForma
     // Do the formatting
     const int bufsize=128;
     char timebuffer[bufsize];
-    int ret = strftime(timebuffer, bufsize, formatStrings[format], &localTM);
+    size_t ret = strftime(timebuffer, bufsize, formatStrings[format], &localTM);
  
     if ( ret == 0 )
         return jsString("");
@@ -452,8 +452,6 @@ JSValue *DateProtoFunc::callAsFunction(ExecState *exec, JSObject *thisObj, const
   JSValue *result = 0;
   UString s;
 #if !PLATFORM(DARWIN)
-  const int bufsize=100;
-  char timebuffer[bufsize];
   CString oldlocale = setlocale(LC_TIME, 0);
   if (!oldlocale.size())
     oldlocale = setlocale(LC_ALL, 0);
@@ -792,13 +790,13 @@ static int findMonth(const char *monthStr)
     for (int i = 0; i < 3; ++i) {
         if (!*monthStr)
             return -1;
-        needle[i] = tolower(*monthStr++);
+        needle[i] = static_cast<char>(tolower(*monthStr++));
     }
     needle[3] = '\0';
     const char *haystack = "janfebmaraprmayjunjulaugsepoctnovdec";
     const char *str = strstr(haystack, needle);
     if (str) {
-        int position = str - haystack;
+        int position = static_cast<int>(str - haystack);
         if (position % 3 == 0)
             return position / 3;
     }
index 653e5bbd99ea4b197781cf354e8418cdf86e4e10..3ec3ea4d3550f8508d6107ecb52e02c6ea6f11e0 100644 (file)
@@ -96,37 +96,37 @@ bool Debugger::hasHandledException(ExecState *exec, JSValue *exception)
     return false;
 }
 
-bool Debugger::sourceParsed(ExecState */*exec*/, int /*sourceId*/, const UString &/*sourceURL*/, 
+bool Debugger::sourceParsed(ExecState*, int /*sourceId*/, const UString &/*sourceURL*/, 
                            const UString &/*source*/, int /*startingLineNumber*/, int /*errorLine*/, const UString & /*errorMsg*/)
 {
   return true;
 }
 
-bool Debugger::sourceUnused(ExecState */*exec*/, int /*sourceId*/)
+bool Debugger::sourceUnused(ExecState*, int /*sourceId*/)
 {
   return true;
 }
 
-bool Debugger::exception(ExecState */*exec*/, int /*sourceId*/, int /*lineno*/,
-                         JSValue */*exception*/)
+bool Debugger::exception(ExecState*, int /*sourceId*/, int /*lineno*/,
+                         JSValue* /*exception */)
 {
   return true;
 }
 
-bool Debugger::atStatement(ExecState */*exec*/, int /*sourceId*/, int /*firstLine*/,
+bool Debugger::atStatement(ExecState*, int /*sourceId*/, int /*firstLine*/,
                            int /*lastLine*/)
 {
   return true;
 }
 
-bool Debugger::callEvent(ExecState */*exec*/, int /*sourceId*/, int /*lineno*/,
-                         JSObject */*function*/, const List &/*args*/)
+bool Debugger::callEvent(ExecState*, int /*sourceId*/, int /*lineno*/,
+                         JSObject/*function*/, const List &/*args*/)
 {
   return true;
 }
 
-bool Debugger::returnEvent(ExecState */*exec*/, int /*sourceId*/, int /*lineno*/,
-                           JSObject */*function*/)
+bool Debugger::returnEvent(ExecState*, int /*sourceId*/, int /*lineno*/,
+                           JSObject/*function*/)
 {
   return true;
 }
index c8b26716c38dc57d9e39bf05a5e77313e2161f0e..11e2ad344b77aebd7031321c1c3a5c53f2d08cd9 100644 (file)
 #include "config.h"
 #include "dtoa.h"
 
+#if COMPILER(MSVC)
+#pragma warning(disable: 4244)
+#pragma warning(disable: 4245)
+#pragma warning(disable: 4554)
+#endif
+
 #if PLATFORM(BIG_ENDIAN)
 #define IEEE_MC68k
 #else
index f3c0c0aed7aa7021753b0279a65445c42d708fce..1c323db80c62343d891066edd8b724a6bd99ad8b 100644 (file)
@@ -111,7 +111,7 @@ JSObject *ErrorObjectImp::construct(ExecState *exec, const List &args)
 }
 
 // ECMA 15.9.2
-JSValue *ErrorObjectImp::callAsFunction(ExecState *exec, JSObject */*thisObj*/, const List &args)
+JSValue *ErrorObjectImp::callAsFunction(ExecState *exec, JSObject/*thisObj*/, const List &args)
 {
   // "Error()" gives the sames result as "new Error()"
   return construct(exec,args);
@@ -153,7 +153,7 @@ JSObject *NativeErrorImp::construct(ExecState *exec, const List &args)
   return obj;
 }
 
-JSValue *NativeErrorImp::callAsFunction(ExecState *exec, JSObject */*thisObj*/, const List &args)
+JSValue *NativeErrorImp::callAsFunction(ExecState *exec, JSObject/*thisObj*/, const List &args)
 {
   return construct(exec,args);
 }
index e9a86b0e84a4eeaf0dba221c13843e4d8d21ed74..21b3118d57fa0a1effab335f43e5ac862e6f0d28 100644 (file)
@@ -210,7 +210,7 @@ void FunctionImp::processParameters(ExecState *exec, const List &args)
 #endif
 }
 
-void FunctionImp::processVarDecls(ExecState */*exec*/)
+void FunctionImp::processVarDecls(ExecState*)
 {
 }
 
@@ -752,7 +752,7 @@ static double parseFloat(const UString &s)
     return s.toDouble( true /*tolerant*/, false /* NaN for empty string */ );
 }
 
-JSValue *GlobalFuncImp::callAsFunction(ExecState *exec, JSObject */*thisObj*/, const List &args)
+JSValue *GlobalFuncImp::callAsFunction(ExecState *exec, JSObject/*thisObj*/, const List &args)
 {
   JSValue *res = jsUndefined();
 
index cff13c0a4847ce472de8301883acb17f98f7314e..36e1762aa0358526ba28e4190c87285049138c47 100644 (file)
@@ -53,7 +53,7 @@ FunctionPrototype::~FunctionPrototype()
 }
 
 // ECMA 15.3.4
-JSValue *FunctionPrototype::callAsFunction(ExecState */*exec*/, JSObject */*thisObj*/, const List &/*args*/)
+JSValue *FunctionPrototype::callAsFunction(ExecState*, JSObject* /*thisObj*/, const List &/*args*/)
 {
   return jsUndefined();
 }
index 95b89ab153f4d45711da3652957b3e8e597dde0a..8a935b4f2b7f5636edd0ad072ce16552f3df5f2f 100644 (file)
@@ -63,6 +63,12 @@ static Node *makeFunctionCallNode(Node *func, ArgumentsNode *args);
 static Node *makeTypeOfNode(Node *expr);
 static Node *makeDeleteNode(Node *expr);
 
+#if COMPILER(MSVC)
+#pragma warning(disable: 4065)
+#pragma warning(disable: 4244)
+#pragma warning(disable: 4702)
+#endif
+
 %}
 
 %union {
index 1afe000bb7bc528e8d3225ff9af070be21cbe0a9..b825115dad2788dec7119b6601bd2e15e5c56a8d 100644 (file)
@@ -45,8 +45,8 @@
 
 namespace WTF {
 
-    template<typename T> class DefaultHash;
-    template<typename T> class StrHash;
+    template<typename T> struct DefaultHash;
+    template<typename T> struct StrHash;
 
     template<> struct StrHash<KJS::UString::Rep *> {
         static unsigned hash(const KJS::UString::Rep *key) { return key->hash(); }
@@ -120,12 +120,12 @@ struct CStringTranslator
 
     static void translate(UString::Rep*& location, const char *c, unsigned hash)
     {
-        int length = strlen(c);
+        size_t length = strlen(c);
         UChar *d = static_cast<UChar *>(fastMalloc(sizeof(UChar) * length));
-        for (int i = 0; i != length; i++)
+        for (size_t i = 0; i != length; i++)
             d[i] = c[i];
         
-        UString::Rep *r = UString::Rep::create(d, length).release();
+        UString::Rep *r = UString::Rep::create(d, static_cast<int>(length)).release();
         r->isIdentifier = 1;
         r->rc = 0;
         r->_hash = hash;
@@ -138,7 +138,7 @@ PassRefPtr<UString::Rep> Identifier::add(const char *c)
 {
     if (!c)
         return &UString::Rep::null;
-    int length = strlen(c);
+    size_t length = strlen(c);
     if (length == 0)
         return &UString::Rep::empty;
     
index 79250efef36b6d1bce7fe4907bd93d7d46bcdc20..8e9c36281a0858e39af897650345f4e595d8fdc4 100644 (file)
@@ -129,7 +129,7 @@ namespace KJS {
                   FunctionCode,
                   AnonymousCode };
 
-  class AttachedInterpreter;
+  struct AttachedInterpreter;
   class DebuggerImp {
   public:
 
index fb958293c151febc64e6b8ecf8dad5107f89bbe3..04aea229d42a0c08986274e17cd361dceb92c359 100644 (file)
@@ -2,6 +2,7 @@
 /*
  *  This file is part of the KDE libraries
  *  Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
+ *  Copyright (C) 2006 Apple Computer, Inc.
  *
  *  This library is free software; you can redistribute it and/or
  *  modify it under the terms of the GNU Library General Public
@@ -30,7 +31,7 @@
 #include "nodes.h"
 #include <wtf/unicode/Unicode.h>
 
-static bool isDecimalDigit(unsigned short c);
+static bool isDecimalDigit(int);
 
 // we can't specify the namespace in yacc's C output, so do it here
 using namespace KJS;
@@ -207,7 +208,7 @@ int Lexer::lex()
         }
       } else if (current == '"' || current == '\'') {
         state = InString;
-        stringType = current;
+        stringType = static_cast<unsigned short>(current);
       } else if (isIdentStart(current)) {
         record16(current);
         state = InIdentifierOrKeyword;
@@ -281,7 +282,7 @@ int Lexer::lex()
         nextLine();
         state = InString;
       } else {
-        record16(singleEscape(current));
+        record16(singleEscape(static_cast<unsigned short>(current)));
         state = InString;
       }
       break;
@@ -580,7 +581,7 @@ bool Lexer::isLineTerminator()
   return cr || lf || current == 0x2028 || current == 0x2029;
 }
 
-bool Lexer::isIdentStart(unsigned short c)
+bool Lexer::isIdentStart(int c)
 {
   return (WTF::Unicode::category(c) & (WTF::Unicode::Letter_Uppercase
         | WTF::Unicode::Letter_Lowercase
@@ -590,7 +591,7 @@ bool Lexer::isIdentStart(unsigned short c)
     || c == '$' || c == '_';
 }
 
-bool Lexer::isIdentPart(unsigned short c)
+bool Lexer::isIdentPart(int c)
 {
   return (WTF::Unicode::category(c) & (WTF::Unicode::Letter_Uppercase
         | WTF::Unicode::Letter_Lowercase
@@ -604,25 +605,24 @@ bool Lexer::isIdentPart(unsigned short c)
     || c == '$' || c == '_';
 }
 
-static bool isDecimalDigit(unsigned short c)
+static bool isDecimalDigit(int c)
 {
   return (c >= '0' && c <= '9');
 }
 
-bool Lexer::isHexDigit(unsigned short c)
+bool Lexer::isHexDigit(int c)
 {
   return (c >= '0' && c <= '9' ||
           c >= 'a' && c <= 'f' ||
           c >= 'A' && c <= 'F');
 }
 
-bool Lexer::isOctalDigit(unsigned short c) const
+bool Lexer::isOctalDigit(int c)
 {
   return (c >= '0' && c <= '7');
 }
 
-int Lexer::matchPunctuator(unsigned short c1, unsigned short c2,
-                              unsigned short c3, unsigned short c4)
+int Lexer::matchPunctuator(int c1, int c2, int c3, int c4)
 {
   if (c1 == '>' && c2 == '>' && c3 == '>' && c4 == '=') {
     shift(4);
@@ -736,7 +736,7 @@ int Lexer::matchPunctuator(unsigned short c1, unsigned short c2,
   }
 }
 
-unsigned short Lexer::singleEscape(unsigned short c) const
+unsigned short Lexer::singleEscape(unsigned short c)
 {
   switch(c) {
   case 'b':
@@ -762,37 +762,35 @@ unsigned short Lexer::singleEscape(unsigned short c) const
   }
 }
 
-unsigned short Lexer::convertOctal(unsigned short c1, unsigned short c2,
-                                      unsigned short c3) const
+unsigned short Lexer::convertOctal(int c1, int c2, int c3)
 {
-  return ((c1 - '0') * 64 + (c2 - '0') * 8 + c3 - '0');
+  return static_cast<unsigned short>((c1 - '0') * 64 + (c2 - '0') * 8 + c3 - '0');
 }
 
-unsigned char Lexer::convertHex(unsigned short c)
+unsigned char Lexer::convertHex(int c)
 {
   if (c >= '0' && c <= '9')
-    return (c - '0');
-  else if (c >= 'a' && c <= 'f')
-    return (c - 'a' + 10);
-  else
-    return (c - 'A' + 10);
+    return static_cast<unsigned char>(c - '0');
+  if (c >= 'a' && c <= 'f')
+    return static_cast<unsigned char>(c - 'a' + 10);
+  return static_cast<unsigned char>(c - 'A' + 10);
 }
 
-unsigned char Lexer::convertHex(unsigned short c1, unsigned short c2)
+unsigned char Lexer::convertHex(int c1, int c2)
 {
   return ((convertHex(c1) << 4) + convertHex(c2));
 }
 
-KJS::UChar Lexer::convertUnicode(unsigned short c1, unsigned short c2,
-                                     unsigned short c3, unsigned short c4)
+KJS::UChar Lexer::convertUnicode(int c1, int c2, int c3, int c4)
 {
   return KJS::UChar((convertHex(c1) << 4) + convertHex(c2),
                (convertHex(c3) << 4) + convertHex(c4));
 }
 
-void Lexer::record8(unsigned short c)
+void Lexer::record8(int c)
 {
-  assert(c <= 0xff);
+  ASSERT(c >= 0);
+  ASSERT(c <= 0xff);
 
   // enlarge buffer if full
   if (pos8 >= size8 - 1) {
index 7de638938ed86abaa0a259bb201057ae9d17adce..f8e2da03540b9db7b1bedb08b20a0c547e66e55f 100644 (file)
@@ -96,7 +96,7 @@ namespace KJS {
     int lastToken;
 
     State state;
-    void setDone(State s);
+    void setDone(State);
     unsigned int pos;
     void shift(unsigned int p);
     void nextLine();
@@ -104,21 +104,18 @@ namespace KJS {
 
     bool isWhiteSpace() const;
     bool isLineTerminator();
-    bool isOctalDigit(unsigned short c) const;
+    static bool isOctalDigit(int);
 
-    int matchPunctuator(unsigned short c1, unsigned short c2,
-                        unsigned short c3, unsigned short c4);
-    unsigned short singleEscape(unsigned short c) const;
-    unsigned short convertOctal(unsigned short c1, unsigned short c2,
-                                unsigned short c3) const;
+    int matchPunctuator(int c1, int c2, int c3, int c4);
+    static unsigned short singleEscape(unsigned short);
+    static unsigned short convertOctal(int c1, int c2, int c3);
   public:
-    static unsigned char convertHex(unsigned short c1);
-    static unsigned char convertHex(unsigned short c1, unsigned short c2);
-    static UChar convertUnicode(unsigned short c1, unsigned short c2,
-                                unsigned short c3, unsigned short c4);
-    static bool isIdentStart(unsigned short c);
-    static bool isIdentPart(unsigned short c);
-    static bool isHexDigit(unsigned short c);
+    static unsigned char convertHex(int);
+    static unsigned char convertHex(int c1, int c2);
+    static UChar convertUnicode(int c1, int c2, int c3, int c4);
+    static bool isIdentStart(int);
+    static bool isIdentPart(int);
+    static bool isHexDigit(int);
 
 #ifdef KJS_DEBUG_MEM
     /**
@@ -132,9 +129,9 @@ namespace KJS {
 
   private:
 
-    void record8(unsigned short c);
-    void record16(int c);
-    void record16(UChar c);
+    void record8(int);
+    void record16(int);
+    void record16(UChar);
 
     KJS::Identifier *makeIdentifier(UChar *buffer, unsigned int pos);
     UString *makeUString(UChar *buffer, unsigned int pos);
index 93ea53eac1563ce38c363036702e243f195cd6e1..e7c7ffe078825273edb5b94f60f4c315dc2e35db 100644 (file)
@@ -124,7 +124,7 @@ MathFuncImp::MathFuncImp(ExecState* exec, int i, int l, const Identifier& name)
   putDirect(lengthPropertyName, l, DontDelete|ReadOnly|DontEnum);
 }
 
-JSValue *MathFuncImp::callAsFunction(ExecState *exec, JSObject */*thisObj*/, const List &args)
+JSValue *MathFuncImp::callAsFunction(ExecState *exec, JSObject/*thisObj*/, const List &args)
 {
   double arg = args[0]->toNumber(exec);
   double arg2 = args[1]->toNumber(exec);
@@ -206,7 +206,7 @@ JSValue *MathFuncImp::callAsFunction(ExecState *exec, JSObject */*thisObj*/, con
     break;
   case MathObjectImp::Random:
       if (!randomSeeded) {
-          srand(time(0));
+          srand(static_cast<unsigned>(time(0)));
           randomSeeded = true;
       }
       result = (double)rand() / RAND_MAX;
index 5ea191c68132dbb0e96682ed949b78da035e2bd6..c430dd16203adc6ed2abacb6e3ca1212e6c2dae7 100644 (file)
@@ -75,7 +75,7 @@ static UString integer_part_noexp(double d)
     int decimalPoint;
     int sign;
     char *result = kjs_dtoa(d, 0, 0, &decimalPoint, &sign, NULL);
-    int length = strlen(result);
+    size_t length = strlen(result);
     
     UString str = sign ? "-" : "";
     if (decimalPoint == 9999) {
@@ -85,7 +85,7 @@ static UString integer_part_noexp(double d)
     } else {
         Vector<char, 1024> buf(decimalPoint + 1);
         
-        if (length <= decimalPoint) {
+        if (static_cast<int>(length) <= decimalPoint) {
             strcpy(buf, result);
             memset(buf + length, '0', decimalPoint - length);
         } else
@@ -135,9 +135,8 @@ static double intPow10(int e)
   }
 
   if (negative)
-    return 1.0 / result;
-  else
-    return result;
+    return static_cast<double>(1.0 / result);
+  return static_cast<double>(result);
 }
 
 // ECMA 15.7.4.2 - 15.7.4.7
@@ -281,7 +280,7 @@ JSValue *NumberProtoFunc::callAsFunction(ExecState *exec, JSObject *thisObj, con
           return jsString("NaN");
       
       char *result = kjs_dtoa(x, 0, 0, &decimalPoint, &sign, NULL);
-      int length = strlen(result);
+      size_t length = strlen(result);
       decimalPoint += decimalAdjust;
       
       int i = 0;
@@ -295,18 +294,18 @@ JSValue *NumberProtoFunc::callAsFunction(ExecState *exec, JSObject *thisObj, con
           buf[i++] = result[0];
           
           if (fractionDigits->isUndefined())
-              f = length-1;
+              f = static_cast<int>(length) - 1;
           
           if (length > 1 && f > 0) {
               buf[i++] = '.';
-              int haveFDigits = length-1;
+              int haveFDigits = static_cast<int>(length) - 1;
               if (f < haveFDigits) {
                   strncpy(buf+i,result+1, f);
                   i += f;
               }
               else {
                   strcpy(buf+i,result+1);
-                  i += length-1;
+                  i += static_cast<int>(length) - 1;
                   for (int j = 0; j < f-haveFDigits; j++)
                       buf[i++] = '0';
               }
@@ -321,12 +320,12 @@ JSValue *NumberProtoFunc::callAsFunction(ExecState *exec, JSObject *thisObj, con
               exponential = exponential * -1;
           }
           if (exponential >= 100) {
-              buf[i++] = '0' + exponential / 100;
+              buf[i++] = static_cast<char>('0' + exponential / 100);
           }
           if (exponential >= 10) {
-              buf[i++] = '0' + (exponential % 100) / 10;
+              buf[i++] = static_cast<char>('0' + (exponential % 100) / 10);
           }
-          buf[i++] = '0' + exponential % 10;
+          buf[i++] = static_cast<char>('0' + exponential % 10);
           buf[i++] = '\0';
       }
       
@@ -474,7 +473,7 @@ JSObject *NumberObjectImp::construct(ExecState *exec, const List &args)
 }
 
 // ECMA 15.7.2
-JSValue *NumberObjectImp::callAsFunction(ExecState *exec, JSObject */*thisObj*/, const List &args)
+JSValue *NumberObjectImp::callAsFunction(ExecState *exec, JSObject/*thisObj*/, const List &args)
 {
   if (args.isEmpty())
     return jsNumber(0);
index 4f519232dabf12e6f91406cd0a28825416fb70e8..3a9ffc0bf6aac7eb3f8ace913cc9e696c2d533b4 100644 (file)
@@ -297,7 +297,7 @@ bool JSObject::hasProperty(ExecState *exec, unsigned propertyName) const
 }
 
 // ECMA 8.6.2.5
-bool JSObject::deleteProperty(ExecState */*exec*/, const Identifier &propertyName)
+bool JSObject::deleteProperty(ExecState/*exec*/, const Identifier &propertyName)
 {
   unsigned attributes;
   JSValue *v = _prop.get(propertyName, attributes);
@@ -428,7 +428,7 @@ bool JSObject::implementsCall() const
   return false;
 }
 
-JSValue *JSObject::callAsFunction(ExecState */*exec*/, JSObject */*thisObj*/, const List &/*args*/)
+JSValue *JSObject::callAsFunction(ExecState* /*exec*/, JSObject* /*thisObj*/, const List &/*args*/)
 {
   assert(false);
   return NULL;
@@ -504,7 +504,7 @@ void JSObject::getPropertyNames(ExecState* exec, PropertyNameArray& propertyName
      static_cast<JSObject*>(_proto)->getPropertyNames(exec, propertyNames);
 }
 
-bool JSObject::toBoolean(ExecState */*exec*/) const
+bool JSObject::toBoolean(ExecState*) const
 {
   return true;
 }
@@ -525,7 +525,7 @@ UString JSObject::toString(ExecState *exec) const
   return prim->toString(exec);
 }
 
-JSObject *JSObject::toObject(ExecState */*exec*/) const
+JSObject *JSObject::toObject(ExecState*) const
 {
   return const_cast<JSObject*>(this);
 }
index adceed6467dcbcfff95c5de3487933d870dec997..13dfceb889be9df3e9f44a7fa4b090f7043731e8 100644 (file)
 
 namespace KJS {
 
-  class HashTable;
-  class HashEntry;
-  class ListImp;
   class InternalFunctionImp;
   class PropertyNameArray;
 
+  struct HashEntry;
+  struct HashTable;
+
   // ECMA 262-3 8.6.1
   // Property attributes
   enum Attribute { None         = 0,
index d2e6111546edfb9053e2c282a502a3211d905455..b6d35d0f20aafa6e4c5205e40a6b64272823600e 100644 (file)
@@ -105,7 +105,7 @@ static inline UString::Rep* deletedSentinel() { return reinterpret_cast<UString:
 // Returns true if the key is not null or the deleted sentinel, false otherwise
 static inline bool isValid(UString::Rep* key)
 {
-    return reinterpret_cast<uintptr_t>(key) & ~0x1;
+    return !!(reinterpret_cast<uintptr_t>(key) & ~0x1);
 }
 
 PropertyMap::~PropertyMap()
@@ -321,7 +321,7 @@ void PropertyMap::put(const Identifier &name, JSValue *value, int attributes, bo
             rep->ref();
             _singleEntry.key = rep;
             _singleEntry.value = value;
-            _singleEntry.attributes = attributes;
+            _singleEntry.attributes = static_cast<short>(attributes);
             checkConsistency();
             return;
         }
@@ -374,7 +374,7 @@ void PropertyMap::put(const Identifier &name, JSValue *value, int attributes, bo
     rep->ref();
     entries[i].key = rep;
     entries[i].value = value;
-    entries[i].attributes = attributes;
+    entries[i].attributes = static_cast<short>(attributes);
     entries[i].index = ++_table->lastIndexUsed;
     ++_table->keyCount;
 
@@ -406,7 +406,7 @@ void PropertyMap::insert(UString::Rep *key, JSValue *value, int attributes, int
     
     entries[i].key = key;
     entries[i].value = value;
-    entries[i].attributes = attributes;
+    entries[i].attributes = static_cast<short>(attributes);
     entries[i].index = index;
 }
 
@@ -570,9 +570,10 @@ bool PropertyMap::containsGettersOrSetters() const
 {
     if (!_table) {
 #if USE_SINGLE_ENTRY
-        return _singleEntry.attributes & GetterSetter;
-#endif
+        return !!(_singleEntry.attributes & GetterSetter);
+#else
         return false;
+#endif
     }
 
     for (int i = 0; i != _table->size; ++i) {
index afc40b095e6d63be453e38c309615ea9904638b2..00793cb2a99675d471fe46bbf26e5d4170c12f0c 100644 (file)
@@ -86,7 +86,7 @@ namespace KJS {
         void save(SavedProperties &) const;
         void restore(const SavedProperties &p);
 
-        bool hasGetterSetterProperties() const { return _singleEntry.globalGetterSetterFlag; }
+        bool hasGetterSetterProperties() const { return !!_singleEntry.globalGetterSetterFlag; }
         void setHasGetterSetterProperties(bool f) { _singleEntry.globalGetterSetterFlag = f; }
 
         bool containsGettersOrSetters() const;
index 5fa9ff20558593dd63ecb684684facec74b77757..ff403ce30e4649418ebba4c70e3211025f176294 100644 (file)
 
 namespace KJS {
 
-class HashEntry;
 class ExecState;
 class JSObject;
 
+struct HashEntry;
+
 #define VALUE_SLOT_MARKER ((GetValueFunc)1)
 class PropertySlot
 {
index ca63756a3fd0458b290effaf264ecd20493cc3d2..cbebab7947e497b3376462602f3d6b2a95d25828 100644 (file)
@@ -752,7 +752,7 @@ JSObject *StringObjectImp::construct(ExecState *exec, const List &args)
 }
 
 // ECMA 15.5.1
-JSValue *StringObjectImp::callAsFunction(ExecState *exec, JSObject */*thisObj*/, const List &args)
+JSValue *StringObjectImp::callAsFunction(ExecState *exec, JSObject/*thisObj*/, const List &args)
 {
   if (args.isEmpty())
     return jsString("");
@@ -771,7 +771,7 @@ StringObjectFuncImp::StringObjectFuncImp(ExecState*, FunctionPrototype* funcProt
   putDirect(lengthPropertyName, jsNumber(1), DontDelete|ReadOnly|DontEnum);
 }
 
-JSValue *StringObjectFuncImp::callAsFunction(ExecState *exec, JSObject */*thisObj*/, const List &args)
+JSValue *StringObjectFuncImp::callAsFunction(ExecState *exec, JSObject/*thisObj*/, const List &args)
 {
   UString s;
   if (args.size()) {
index 9061363415ff1d3b269ba8dd2144318267487a00..f1aa7412f0ab3cebe29b6d0aeb853eb59fd4dcee 100644 (file)
@@ -304,8 +304,8 @@ static char* createStringWithContentsOfFile(const char* fileName)
 {
   char* buffer;
   
-  int buffer_size = 0;
-  int buffer_capacity = 1024;
+  size_t buffer_size = 0;
+  size_t buffer_capacity = 1024;
   buffer = (char*)malloc(buffer_capacity);
   
   FILE* f = fopen(fileName, "r");
index e2a4a10eb6e46b0846c316c8135f11a170c03532..78b059398429073c0c968c09feba9a6c036f0536 100644 (file)
@@ -286,9 +286,9 @@ unsigned UString::Rep::computeHash(const char *s)
 
   uint32_t hash = PHI;
   uint32_t tmp;
-  unsigned l = strlen(s);
+  size_t l = strlen(s);
   
-  int rem = l & 1;
+  size_t rem = l & 1;
   l >>= 1;
 
   // Main loop
@@ -380,15 +380,15 @@ UString::UString(const char *c)
     m_rep = &Rep::null;
     return;
   }
-  int length = strlen(c);
+  size_t length = strlen(c);
   if (length == 0) {
     m_rep = &Rep::empty;
     return;
   }
   UChar *d = static_cast<UChar *>(fastMalloc(sizeof(UChar) * length));
-  for (int i = 0; i < length; i++)
+  for (size_t i = 0; i < length; i++)
     d[i].uc = c[i];
-  m_rep = Rep::create(d, length);
+  m_rep = Rep::create(d, static_cast<int>(length));
 }
 
 UString::UString(const UChar *c, int length)
@@ -487,7 +487,7 @@ UString UString::from(int i)
     }
   }
   
-  return UString(p, end - p);
+  return UString(p, static_cast<int>(end - p));
 }
 
 UString UString::from(unsigned int u)
@@ -505,7 +505,7 @@ UString UString::from(unsigned int u)
     }
   }
   
-  return UString(p, end - p);
+  return UString(p, static_cast<int>(end - p));
 }
 
 UString UString::from(long l)
@@ -535,7 +535,7 @@ UString UString::from(long l)
     }
   }
   
-  return UString(p, end - p);
+  return UString(p, static_cast<int>(end - p));
 }
 
 UString UString::from(double d)
@@ -549,7 +549,7 @@ UString UString::from(double d)
   int sign;
   
   char *result = kjs_dtoa(d, 0, 0, &decimalPoint, &sign, NULL);
-  int length = strlen(result);
+  int length = static_cast<int>(strlen(result));
   
   int i = 0;
   if (sign) {
@@ -592,16 +592,13 @@ UString UString::from(double d)
     // decimalPoint can't be more than 3 digits decimal given the
     // nature of float representation
     int exponential = decimalPoint - 1;
-    if (exponential < 0) {
-      exponential = exponential * -1;
-    }
-    if (exponential >= 100) {
-      buf[i++] = '0' + exponential / 100;
-    }
-    if (exponential >= 10) {
-      buf[i++] = '0' + (exponential % 100) / 10;
-    }
-    buf[i++] = '0' + exponential % 10;
+    if (exponential < 0)
+      exponential = -exponential;
+    if (exponential >= 100)
+      buf[i++] = static_cast<char>('0' + exponential / 100);
+    if (exponential >= 10)
+      buf[i++] = static_cast<char>('0' + (exponential % 100) / 10);
+    buf[i++] = static_cast<char>('0' + exponential % 10);
     buf[i++] = '\0';
   }
   
@@ -682,7 +679,7 @@ UString &UString::append(const char *t)
 {
   int thisSize = size();
   int thisOffset = m_rep->offset;
-  int tSize = strlen(t);
+  int tSize = static_cast<int>(strlen(t));
   int length = thisSize + tSize;
 
   // possible cases:
@@ -783,7 +780,7 @@ char *UString::ascii() const
   char *q = statBuffer;
   const UChar *limit = p + length;
   while (p != limit) {
-    *q = p->uc;
+    *q = static_cast<char>(p->uc);
     ++p;
     ++q;
   }
@@ -803,7 +800,7 @@ void UString::globalClear()
 
 UString &UString::operator=(const char *c)
 {
-  int l = c ? strlen(c) : 0;
+  int l = c ? static_cast<int>(strlen(c)) : 0;
   UChar *d;
   if (m_rep->rc == 1 && l <= m_rep->capacity && !m_rep->baseString && m_rep->offset == 0 && m_rep->preCapacity == 0) {
     d = m_rep->buf;
@@ -1016,7 +1013,7 @@ int UString::find(const UString &f, int pos) const
   ++fdata;
   for (const UChar *c = data() + pos; c <= end; c++)
     if (c->uc == fchar && !memcmp(c + 1, fdata, fsizeminusone))
-      return (c-data());
+      return static_cast<int>(c - data());
 
   return -1;
 }
@@ -1028,7 +1025,7 @@ int UString::find(UChar ch, int pos) const
   const UChar *end = data() + size();
   for (const UChar *c = data() + pos; c < end; c++)
     if (*c == ch)
-      return (c-data());
+      return static_cast<int>(c - data());
 
   return -1;
 }
@@ -1049,7 +1046,7 @@ int UString::rfind(const UString &f, int pos) const
   const UChar *fdata = f.data();
   for (const UChar *c = data() + pos; c >= data(); c--) {
     if (*c == *fdata && !memcmp(c + 1, fdata + 1, fsizeminusone))
-      return (c-data());
+      return static_cast<int>(c - data());
   }
 
   return -1;
@@ -1063,7 +1060,7 @@ int UString::rfind(UChar ch, int pos) const
     pos = size() - 1;
   for (const UChar *c = data() + pos; c >= data(); c--) {
     if (*c == ch)
-      return (c-data());
+      return static_cast<int>(c-data());
   }
 
   return -1;
index 2a1627c32427ee36be1bc3261adc7c3805664f10..7dd563b0ae8721896d64e7fc6144bc90c92b6447 100644 (file)
@@ -73,11 +73,11 @@ namespace KJS {
     /**
      * @return The higher byte of the character.
      */
-    unsigned char high() const { return uc >> 8; }
+    unsigned char high() const { return static_cast<unsigned char>(uc >> 8); }
     /**
      * @return The lower byte of the character.
      */
-    unsigned char low() const { return uc; }
+    unsigned char low() const { return static_cast<unsigned char>(uc); }
     /**
      * @return the 16 bit Unicode value of the character
      */
@@ -125,11 +125,11 @@ namespace KJS {
     /**
      * @return Lower byte.
      */
-    unsigned char low() const { return ref().uc; }
+    unsigned char low() const { return static_cast<unsigned char>(ref().uc); }
     /**
      * @return Higher byte.
      */
-    unsigned char high() const { return ref().uc >> 8; }
+    unsigned char high() const { return static_cast<unsigned char>(ref().uc >> 8); }
 
   private:
     // not implemented, can only be constructed from UString
index d4220c93602aaad20b25308065a62ae83434524d..13c52df04a3e552532214fe5d1bb52e9389f4f25 100644 (file)
@@ -110,7 +110,7 @@ uint16_t JSValue::toUInt16(ExecState *exec) const
 {
     uint32_t i;
     if (getUInt32(i))
-        return i;
+        return static_cast<uint16_t>(i);
 
     double d = roundValue(exec, const_cast<JSValue*>(this));
     if (isNaN(d) || isInf(d))
index 3d84d1d3759f477e40f2b8541469d9df8fff20c0..13c77a879060fa04eda5e3cadcecdd4f24ea765d 100644 (file)
 
 namespace KJS {
 
-class ClassInfo;
 class ExecState;
 class JSObject;
 class JSCell;
 
+struct ClassInfo;
+
 /**
  * JSValue is the base type for all primitives (Undefined, Null, Boolean,
  * String, Number) and objects in ECMAScript.
index 79781f78d95005baaaf6557f608868cad9155c3f..44a5238dc08f54b463ee139683bc0f57cd260231 100644 (file)
@@ -1516,7 +1516,7 @@ Yield:        TRUE when range returned; FALSE when no more
 static BOOL
 get_othercase_range(int *cptr, int d, int *ocptr, int *odptr)
 {
-int c, chartype, othercase, next;
+int c, chartype, othercase = 0, next;
 
 for (c = *cptr; c <= d; c++)
   {
index ae2df284a5384b1a8d55f5a6d19798c97921b822..987a5ff4e5e5ad844a71e59ab2f308bb9b1ef3ba 100644 (file)
@@ -42,9 +42,11 @@ POSSIBILITY OF SUCH DAMAGE.
 pattern matching using an NFA algorithm, trying to mimic Perl as closely as
 possible. There are also some static supporting functions. */
 
-
 #include "pcre_internal.h"
 
+/* Avoid warnings on Windows. */
+#undef min
+#undef max
 
 /* Structure for building a chain of data that actually lives on the
 stack, for holding the values of the subject pointer at the start of each
@@ -2146,6 +2148,7 @@ for (;;)
 #endif
 #endif  /* SUPPORT_UTF8 */
 
+#if !PCRE_UTF16
     /* When not in UTF-8 mode, load a single-byte character. */
       {
       if (min > md->end_subject - eptr) RRETURN(MATCH_NOMATCH);
@@ -2161,12 +2164,8 @@ for (;;)
     matching character if failing, up to the maximum. Alternatively, if
     maximizing, find the maximum number of characters and work backwards. */
 
-#if PCRE_UTF16
-    DPRINTF(("matching %c{%d,%d}\n", fc, min, max));
-#else
     DPRINTF(("matching %c{%d,%d} against subject %.*s\n", fc, min, max,
       max, eptr));
-#endif
 
     if ((ims & PCRE_CASELESS) != 0)
       {
@@ -2240,6 +2239,7 @@ for (;;)
         }
       }
     /* Control never gets here */
+#endif
 
     /* Match a negated single one-byte character. The character we are
     checking can be multibyte. */
index 6803ac2b4937fb4509262d07b616d11ac87c5c5c..280185ef8a614587441352dc7a07bf171e6dff03 100644 (file)
@@ -49,6 +49,11 @@ POSSIBILITY OF SUCH DAMAGE.
 #define INT_CAST(i) (i)
 #endif
 
+#if COMPILER(MSVC)
+#pragma warning(disable: 4232)
+#pragma warning(disable: 4244)
+#endif
+
 /* This header contains definitions that are shared between the different
 modules, but which are not relevant to the exported API. This includes some
 functions whose names all begin with "_pcre_". */
index 7f8bee615588f7dd6e56cbc05aa1b3930deb0dc0..9c916a3e3c2e792458ecdd77455beb7684ca6741 100644 (file)
@@ -59,7 +59,7 @@ namespace WTF {
         key ^= (key >> 15);
         key += ~(key << 27);
         key ^= (key >> 31);
-        return key;
+        return static_cast<unsigned>(key);
     }
 
     template<typename T> struct IntHash {
@@ -70,7 +70,17 @@ namespace WTF {
     // pointer identity hash function
 
     template<typename T> struct PtrHash {
-        static unsigned hash(T key) { return IntHash<uintptr_t>::hash(reinterpret_cast<uintptr_t>(key)); }
+        static unsigned hash(T key)
+        {
+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 4244) // work around what seems to be a bug in MSVC's conversion warnings
+#endif
+            return IntHash<uintptr_t>::hash(reinterpret_cast<uintptr_t>(key));
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
+        }
         static bool equal(T a, T b) { return a == b; }
     };
     template<typename P> struct PtrHash<RefPtr<P> > {
index 67e19519df43d046ed6daee97f2bde99cc9c7cf2..898214c027dc5f4b53e14c7f7543c7e471774e92 100644 (file)
@@ -40,9 +40,9 @@
 #endif
 
 inline bool isinf(double num) { return !_finite(num) && !_isnan(num); }
-inline bool isnan(double num) { return _isnan(num); }
-inline long lround(double num) { return num > 0 ? num + 0.5 : ceil(num - 0.5); }
-inline long lroundf(float num) { return num > 0 ? num + 0.5f : ceilf(num - 0.5f); }
+inline bool isnan(double num) { return !!_isnan(num); }
+inline long lround(double num) { return static_cast<long>(num > 0 ? num + 0.5 : ceil(num - 0.5)); }
+inline long lroundf(float num) { return static_cast<long>(num > 0 ? num + 0.5f : ceilf(num - 0.5f)); }
 inline double round(double num) { return num > 0 ? floor(num + 0.5) : ceil(num - 0.5); }
 inline float roundf(float num) { return num > 0 ? floorf(num + 0.5f) : ceilf(num - 0.5f); }
 inline bool signbit(double num) { return _copysign(1.0, num) < 0; }
index 9be7fa07d114bc6ac4ccff53badbac90879a204f..f7328dcb53cb97f61285dfd514f09ba33d69dff7 100644 (file)
@@ -38,7 +38,7 @@ inline int snprintf(char *str, size_t size, const char* format, ...)
     return _vsnprintf(str, size, format, args);
 }
 
-inline int strncasecmp(const char* s1, const char* s2, int len) { return strnicmp(s1, s2, len); }
+inline int strncasecmp(const char* s1, const char* s2, size_t len) { return strnicmp(s1, s2, len); }
 
 #endif
 
index 668874f3560711d600bc8e942aca8bcf8a6e1cea..3494a357af3b1309c17fa9454e323109f66f6c60 100644 (file)
@@ -84,7 +84,7 @@ namespace WTF {
 
     inline bool isPrintableChar(int32_t c)
     {
-      return u_isprint(c);
+      return !!u_isprint(c);
     }
     
     inline CharCategory category(int32_t c)