Fix http://bugs.webkit.org/show_bug.cgi?id=17175 (Bug 17175: Use of C++ compiler...
[WebKit-https.git] / JavaScriptCore / ChangeLog
index 6d24b2c..ad4edf7 100644 (file)
@@ -1,3 +1,736 @@
+2008-02-04  Rodney Dawes  <dobey@wayofthemonkey.com>
+
+        Reviewed by Alp Toker and Mark Rowe.
+
+        Fix http://bugs.webkit.org/show_bug.cgi?id=17175.
+        Bug 17175: Use of C++ compiler flags in CFLAGS
+
+        * GNUmakefile.am: Use global_cxxflags as well as global_cflags in CXXFLAGS.
+
+2008-02-04  Alp Toker  <alp@atoker.com>
+
+        Rubber-stamped by Mark Rowe.
+
+        Remove all trailing whitespace in the GTK+ port and related
+        components.
+
+        * GNUmakefile.am:
+
+2008-02-02  Darin Adler  <darin@apple.com>
+
+        Reviewed by Geoff Garen.
+
+        PLT speedup related to <rdar://problem/5659272> REGRESSION: PLT .4%
+        slower due to r28884 (global variable symbol table optimization)
+
+        Geoff's theory is that the slowdown was due to copying hash tables when
+        putting things into the back/forward cache. If that's true, then this
+        should fix the problem.
+
+        (According to Geoff's measurements, in a PLT that exaggerates the
+        importance of symbol table saving during cached page creation, this
+        patch is a ~3X speedup in cached page creation, and a 9% speedup overall.)
+
+        * JavaScriptCore.exp: Updated.
+
+        * kjs/JSVariableObject.cpp:
+        (KJS::JSVariableObject::saveLocalStorage): Updated for changes to SavedProperty,
+        which has been revised to avoid initializing each SavedProperty twice when building
+        the array. Store the property names too, so we don't have to store the symbol table
+        separately. Do this by iterating the symbol table instead of the local storage vector.
+        (KJS::JSVariableObject::restoreLocalStorage): Ditto. Restore the symbol table as
+        well as the local storage vector.
+
+        * kjs/JSVariableObject.h: Removed save/restoreSymbolTable and do that work inside
+        save/restoreLocalStorage instead. Made restoreLocalStorage a non-const member function
+        that takes a const reference to a SavedProperties object.
+
+        * kjs/LocalStorage.h: Changed attributes to be unsigned instead of int to match
+        other declarations of attributes elsewhere.
+
+        * kjs/property_map.cpp:
+        (KJS::SavedProperties::SavedProperties): Updated for data member name change.
+        (KJS::PropertyMap::save): Updated for data member name change and to use the new
+        inline init function instead of setting the fields directly. This allows us to
+        skip initializing the SavedProperty objects when first allocating the array, and
+        just do it when we're actually setting up the individual elements.
+        (KJS::PropertyMap::restore): Updated for SavedProperty changes.
+
+        * kjs/property_map.h: Changed SavedProperty from a struct to a class. Set it up so
+        it does not get initialized at construction time to avoid initializing twice when
+        creating an array of SavedProperty. Removed the m_ prefixes from the members of
+        the SavedProperties struct. Generally we use m_ for class members and not struct.
+
+2008-02-02  Tony Chang  <idealisms@gmail.com>
+
+        Reviewed by darin.  Landed by eseidel.
+
+        Add #define guards for WIN32_LEAN_AND_MEAN and _CRT_RAND_S.
+
+        * kjs/config.h:
+        * wtf/FastMalloc.cpp:
+        * wtf/TCSpinLock.h:
+
+2008-01-28  Sam Weinig  <sam@webkit.org>
+
+        Rubber-stamped by Darin Adler.
+
+        - Fix whitespace in nodes.h/cpp and nodes2string.cpp.
+
+        (NOTE: Specific changed functions elided for space and clarity)
+        * kjs/nodes.cpp:
+        * kjs/nodes.h:
+        * kjs/nodes2string.cpp:
+
+2008-01-27  Sam Weinig  <sam@webkit.org>
+
+        Reviewed by Oliver Hunt.
+
+        Patch for http://bugs.webkit.org/show_bug.cgi?id=17025
+        nodes.h/cpp has been rolling around in the mud - lets hose it down
+
+        - Rename member variables to use the m_ prefix.
+
+        (NOTE: Specific changed functions elided for space and clarity)
+        * kjs/grammar.y:
+        * kjs/nodes.cpp:
+        * kjs/nodes.h:
+        * kjs/nodes2string.cpp:
+
+2008-01-27  Darin Adler  <darin@apple.com>
+
+        Reviewed by Oliver.
+
+        - fix <rdar://problem/5657450> REGRESSION: const is broken
+
+        Test: fast/js/const.html
+
+        SunSpider said this was 0.3% slower. And I saw some Shark samples in
+        JSGlobalObject::put -- not a lot but a few. We may be able to regain the
+        speed, but for now we will take that small hit for correctness sake.
+
+        * kjs/JSGlobalObject.cpp:
+        (KJS::JSGlobalObject::put): Pass the checkReadOnly flag in to symbolTablePut
+        instead of passing attributes.
+
+        * kjs/JSVariableObject.h:
+        (KJS::JSVariableObject::symbolTablePut): Removed the code to set attributes
+        here, since we only set attributes when creating a property. Added the code
+        to check read-only here, since we need that to implement const!
+
+        * kjs/function.cpp:
+        (KJS::ActivationImp::put): Pass the checkReadOnly flag in to symbolTablePut
+        instead of passing attributes.
+
+        * kjs/nodes.cpp:
+        (KJS::isConstant): Added.
+        (KJS::PostIncResolveNode::optimizeVariableAccess): Create a PostIncConstNode
+        if optimizing for a local variable and the variable is constant.
+        (KJS::PostDecResolveNode::optimizeVariableAccess): Ditto. But PostDecConstNode.
+        (KJS::PreIncResolveNode::optimizeVariableAccess): Ditto. But PreIncConstNode.
+        (KJS::PreDecResolveNode::optimizeVariableAccess): Ditto. But PreDecConstNode.
+        (KJS::PreIncConstNode::evaluate): Return the value + 1.
+        (KJS::PreDecConstNode::evaluate): Return the value - 1.
+        (KJS::PostIncConstNode::evaluate): Return the value converted to a number.
+        (KJS::PostDecConstNode::evaluate): Ditto.
+        (KJS::ReadModifyResolveNode::optimizeVariableAccess): Create a ReadModifyConstNode
+        if optimizing for a local variable and the variable is constant.
+        (KJS::AssignResolveNode::optimizeVariableAccess): Ditto. But AssignConstNode.
+        (KJS::ScopeNode::optimizeVariableAccess): Pass the local storage to the
+        node optimizeVariableAccess functions, since that's where we need to look to
+        figure out if a variable is constant.
+        (KJS::FunctionBodyNode::processDeclarations): Moved the call to
+        optimizeVariableAccess until after localStorage is set up.
+        (KJS::ProgramNode::processDeclarations): Ditto.
+
+        * kjs/nodes.h: Fixed the IsConstant and HasInitializer values. They are used
+        as flag masks, so a value of 0 will not work for IsConstant. Changed the
+        first parameter to optimizeVariableAccess to be a const reference to a symbol
+        table and added a const reference to local storage. Added classes for const
+        versions of local variable access: PostIncConstNode, PostDecConstNode,
+        PreIncConstNode, PreDecConstNode, ReadModifyConstNode, and AssignConstNode.
+
+        * kjs/object.cpp:
+        (KJS::JSObject::put): Tweaked comments a bit, and changed the checkReadOnly
+        expression to match the form used at the two other call sites.
+
+2008-01-27  Darin Adler  <darin@apple.com>
+
+        Reviewed by Oliver.
+
+        - fix http://bugs.webkit.org/show_bug.cgi?id=16498
+          ''.constructor.toString() gives [function]
+
+        Test: fast/js/function-names.html
+
+        * kjs/array_object.cpp:
+        (KJS::ArrayObjectImp::ArrayObjectImp): Use the class name as the constructor's function name.
+        * kjs/bool_object.cpp:
+        (KJS::BooleanObjectImp::BooleanObjectImp): Ditto.
+        * kjs/date_object.cpp:
+        (KJS::DateObjectImp::DateObjectImp): Ditto.
+        * kjs/error_object.cpp:
+        (KJS::ErrorPrototype::ErrorPrototype): Make the error object be an Error.
+        (KJS::ErrorObjectImp::ErrorObjectImp): Use the class name as the constructor's function name.
+        (KJS::NativeErrorPrototype::NativeErrorPrototype): Take const UString&.
+        (KJS::NativeErrorImp::NativeErrorImp): Use the prototype's name as the constructor's function
+        name.
+        * kjs/error_object.h: Change ErrorPrototype to inherit from ErrorInstance. Change the
+        NativeErrorImp constructor to take a NativeErrorPrototype pointer for its prototype.
+        * kjs/function.h: Removed unneeded constructor for internal functions without names.
+        We want to avoid those!
+        * kjs/function_object.cpp:
+        (KJS::functionProtoFuncToString): Removed code that writes out just [function] for functions
+        that have no names. There's no reason to do that.
+        (KJS::FunctionObjectImp::FunctionObjectImp): Use the class name as the constructor's
+        function name.
+        * kjs/internal.cpp: Removed the unused constructor.
+        * kjs/number_object.cpp:
+        (KJS::fractionalPartToString): Marked static for internal linkage.
+        (KJS::exponentialPartToString): Ditto.
+        (KJS::numberProtoFuncToPrecision): Removed an unneeded else.
+        (KJS::NumberObjectImp::NumberObjectImp): Use the class name as the constructor's
+        function name.
+        (KJS::NumberObjectImp::getValueProperty): Tweaked formatting.
+        * kjs/object_object.cpp:
+        (KJS::ObjectObjectImp::ObjectObjectImp): Use "Object" for the function name.
+        * kjs/regexp_object.cpp:
+        (KJS::RegExpObjectImp::RegExpObjectImp): Use "RegExp" for the function name.
+        * kjs/string_object.cpp:
+        (KJS::StringObjectImp::StringObjectImp): Use the class name as the constructor's
+        function name.
+
+2008-01-26  Darin Adler  <darin@apple.com>
+
+        Reviewed by Oliver.
+
+        - fix http://bugs.webkit.org/show_bug.cgi?id=17027
+          Incorrect Function.toString behaviour with read/modify/write operators performed on negative numbers
+
+        Test: fast/js/function-toString-parentheses.html
+
+        The problem here was that a NumberNode with a negative number in it had the wrong
+        precedence. It's not a primary expression, it's a unary operator with a primary
+        expression after it.
+
+        Once the precedence of NumberNode was fixed, the cases from bug 17020 were also
+        fixed without trying to treat bracket nodes like dot nodes. That wasn't needed.
+        The reason we handle numbers before dot nodes specially is that the dot is a
+        legal character in a number. The same is not true of a bracket. Eventually we
+        could get smarter, and only add the parentheses when there is actual ambiguity.
+        There is none if the string form of the number already has a dot in it, or if
+        it's a number with a alphabetic name like infinity or NAN.
+
+        * kjs/nodes.h: Renamed back from ObjectAccess to DotExpr.
+        (KJS::NumberNode::precedence): Return PrecUnary for negative numbers, since
+        they serialize as a unary operator, not a primary expression.
+        * kjs/nodes2string.cpp:
+        (KJS::SourceStream::operator<<): Clear m_numberNeedsParens if this adds
+        parens; one set is enough.
+        (KJS::bracketNodeStreamTo): Remove unneeded special flag here. Normal
+        operator precedence suffices.
+        (KJS::NewExprNode::streamTo): Ditto.
+
+2008-01-26  Oliver Hunt  <oliver@apple.com>
+
+        Reviewed by Maciej and Darin.
+
+        Fix for http://bugs.webkit.org/show_bug.cgi?id=17020
+        Function.toString does not parenthesise numbers for the bracket accessor
+
+        It turns out that logic was there for all of the dot accessor nodes to make numbers be
+        parenthesised properly, so it was a trivial extension to extend that to the bracket nodes.
+        I renamed the enum type to reflect the fact that it is now used for both dot and bracket
+        accessors.
+
+        * kjs/nodes2string.cpp:
+        (KJS::bracketNodeStreamTo):
+        (KJS::BracketAccessorNode::streamTo):
+
+2008-01-26  Oliver Hunt  <oliver@apple.com>
+
+        Reviewed by Darin.
+
+        Fix Bug 17018: Incorrect code generated from Function.toString for get/setters in object literals
+
+        Don't quote getter and setter names during output, as that is simply wrong.
+
+        * kjs/nodes2string.cpp:
+        (KJS::PropertyNode::streamTo):
+
+2008-01-26  Darin Adler  <darin@apple.com>
+
+        Reviewed by Eric Seidel.
+
+        - http://bugs.webkit.org/show_bug.cgi?id=16860
+          a bit of cleanup after the Activation optimization
+
+        * JavaScriptCore.exp: Export the GlobalExecState constructor instead of
+        the global flavor of the ExecState constructor. It'd probably be cleaner
+        to not export either one, but JSGlobalObject inlines the code that
+        constructs the ExecState. If we changed that, we could remove this export.
+
+        * JavaScriptCore.xcodeproj/project.pbxproj: Re-sorted a few things and
+        put the new source files into the kjs group rather than at the top level.
+
+        * kjs/ExecState.cpp:
+        (KJS::ExecState::ExecState): Marked inline and updated for data member
+        name changes. This is now only for use for the derived classes. Also removed
+        code that sets the unused m_savedExec data member for the global case. That
+        data member is only used for the other two types.
+        (KJS::ExecState::~ExecState): Marked inline and removed all the code.
+        The derived class destructors now inclde the appropriate code.
+        (KJS::ExecState::lexicalGlobalObject): Removed unneeded special case for
+        an empty scope chain. The bottom function already returns 0 for that case,
+        so the general case code handles it fine. Also changed to use data members
+        directly rather than calling functions.
+        (KJS::GlobalExecState::GlobalExecState): Added. Calls through to the base
+        class constructor.
+        (KJS::GlobalExecState::~GlobalExecState): Added.
+        (KJS::InterpreterExecState::InterpreterExecState): Added. Moved code to
+        manipulate activeExecStates here since we don't want to have to check for the
+        special case of globalExec.
+        (KJS::InterpreterExecState::~InterpreterExecState): Added.
+        (KJS::EvalExecState::EvalExecState): Added.
+        (KJS::EvalExecState::~EvalExecState): Added.
+        (KJS::FunctionExecState::FunctionExecState): Added.
+        (KJS::FunctionExecState::~FunctionExecState): Added.
+
+        * kjs/ExecState.h: Tweaked the header, includes, and declarations a bit.
+        Made ExecState inherit from Noncopyable. Reformatted some comments and
+        made them a bit more brief. Rearranged declarations a little bit and removed
+        unused savedExec function. Changed seenLabels function to return a reference
+        rather than a pointer. Made constructors and destructor protected, and also
+        did the same with all data members. Renamed m_thisVal to m_thisValue and
+        ls to m_labelStack. Added three new derived classes for each of the
+        types of ExecState. The primary goal here was to remove a branch from the
+        code in the destructor, but it's also clearer than overloading the arguments
+        to the ExecState constructor.
+
+        * kjs/JSGlobalObject.cpp:
+        (KJS::getCurrentTime): Fixed formatting.
+        (KJS::JSGlobalObject::pushActivation): Removed parentheses that don't make
+        the expression clearer -- other similar sites didn't have these parentheses,
+        even the one a couple lines earlier that sets stackEntry.
+        (KJS::JSGlobalObject::tearOffActivation): Got rid of unneeded static_cast
+        (I think I mentioned this during patch review) and used an early exit so that
+        the entire contents of the function aren't nested inside an if statement.
+        Also removed the check of codeType, instead checking Activation for 0.
+        For now, I kept the codeType check, but inside an assertion.
+
+        * kjs/JSGlobalObject.h: Changed type of globalExec to GlobalExecState.
+        * kjs/function.cpp:
+        (KJS::FunctionImp::callAsFunction): Changed type to FunctionExecState.
+        (KJS::GlobalFuncImp::callAsFunction): Changed type to EvalExecState.
+        * kjs/interpreter.cpp:
+        (KJS::Interpreter::evaluate): Changed type to GlobalExecState.
+
+        * kjs/nodes.cpp:
+        (KJS::ContinueNode::execute): Changed code since seenLabels() returns a
+        reference now instead of a pointer.
+        (KJS::BreakNode::execute): Ditto.
+        (KJS::LabelNode::execute): Ditto.
+
+2008-01-26  Sam Weinig  <sam@webkit.org>
+
+        Reviewed by Mark Rowe.
+
+        Cleanup node2string a little.
+        - Remove some unnecessary branching.
+        - Factor out bracket and dot streaming into static inline functions.
+
+        * kjs/nodes.h:
+        * kjs/nodes2string.cpp:
+        (KJS::bracketNodeStreamTo):
+        (KJS::dotNodeStreamTo):
+        (KJS::FunctionCallBracketNode::streamTo):
+        (KJS::FunctionCallDotNode::streamTo):
+        (KJS::PostIncBracketNode::streamTo):
+        (KJS::PostDecBracketNode::streamTo):
+        (KJS::PostIncDotNode::streamTo):
+        (KJS::PostDecDotNode::streamTo):
+        (KJS::DeleteBracketNode::streamTo):
+        (KJS::DeleteDotNode::streamTo):
+        (KJS::PreIncBracketNode::streamTo):
+        (KJS::PreDecBracketNode::streamTo):
+        (KJS::PreIncDotNode::streamTo):
+        (KJS::PreDecDotNode::streamTo):
+        (KJS::ReadModifyBracketNode::streamTo):
+        (KJS::AssignBracketNode::streamTo):
+        (KJS::ReadModifyDotNode::streamTo):
+        (KJS::AssignDotNode::streamTo):
+        (KJS::WhileNode::streamTo):
+
+2008-01-26  Mark Rowe  <mrowe@apple.com>
+
+        Reviewed by Darin Adler.
+
+        Fix http://bugs.webkit.org/show_bug.cgi?id=17001
+        Bug 17001: Build error with Gtk port on Mac OS X
+
+        If both XP_MACOSX and XP_UNIX are defined then X11.h and Carbon.h will both be included.
+        These provide conflicting definitions for a type named 'Cursor'.  As XP_UNIX is set by
+        the build system when targeting X11, it doesn't make sense for XP_MACOSX to also be set
+        in this instance.
+
+        * bindings/npapi.h: Don't define XP_MACOSX if XP_UNIX is defined.
+
+2008-01-26  Darin Adler  <darin@apple.com>
+
+        Reviewed by Oliver.
+
+        - fix http://bugs.webkit.org/show_bug.cgi?id=17013
+          JSC can't round trip certain for-loops
+
+        Test: fast/js/toString-for-var-decl.html
+
+        * kjs/nodes.h: Added PlaceholderTrueNode so we can put nodes into
+        for loops without injecting the word "true" into them (nice, but not
+        the bug fix). Fixed ForNode constructor so expr1WasVarDecl is set
+        only when there is an expression, since it's common for the actual
+        variable declaration to be moved by the parser.
+
+        * kjs/nodes2string.cpp:
+        (KJS::PlaceholderTrueNode::streamTo): Added. Empty.
+
+2008-01-25  Oliver Hunt  <oliver@apple.com>
+
+        Reviewed by Maciej.
+
+        Fix for bug 17012: REGRESSION: JSC can't round trip an object literal
+
+        Add logic to ensure that object literals and function expressions get
+        parentheses when necessary.
+
+        * kjs/nodes.h:
+        * kjs/nodes2string.cpp:
+        (KJS::SourceStream::operator<<):
+
+2008-01-24  Steve Falkenburg  <sfalken@apple.com>
+
+        Build fix.
+
+        * JavaScriptCore.vcproj/JavaScriptCore.sln:
+
+2008-01-24  Steve Falkenburg  <sfalken@apple.com>
+
+        Build fix.
+
+        * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln:
+
+2008-01-24  Michael Goddard  <michael.goddard@trolltech.com>
+
+        Reviewed by Simon.
+
+        Fix QDateTime to JS Date conversion.
+        Several conversion errors (some UTC related, some month
+        offset related) and the conversion distance for Date
+        to DateTime conversion weights were fixed (it should never
+        be better to convert a JS Number into a Date rather than
+        an int).
+        
+        * bindings/qt/qt_runtime.cpp:
+        (KJS::Bindings::convertValueToQVariant):
+        (KJS::Bindings::convertQVariantToValue):
+
+2008-01-24  Michael Goddard  <michael.goddard@trolltech.com>
+
+        Reviewed by Simon.
+
+        Add support for calling QObjects.
+        Add support for invokeDefaultMethod (via a call to
+        a specific slot), and also allow using it as a
+        constructor, like QtScript.
+        
+
+        * bindings/qt/qt_class.cpp:
+        (KJS::Bindings::QtClass::fallbackObject):
+        * bindings/qt/qt_instance.cpp:
+        (KJS::Bindings::QtRuntimeObjectImp::construct):
+        (KJS::Bindings::QtInstance::QtInstance):
+        (KJS::Bindings::QtInstance::~QtInstance):
+        (KJS::Bindings::QtInstance::implementsCall):
+        (KJS::Bindings::QtInstance::invokeDefaultMethod):
+        * bindings/qt/qt_instance.h:
+        * bindings/qt/qt_runtime.cpp:
+        (KJS::Bindings::findMethodIndex):
+        (KJS::Bindings::QtRuntimeMetaMethod::QtRuntimeMetaMethod):
+        (KJS::Bindings::QtRuntimeMetaMethod::callAsFunction):
+        * bindings/qt/qt_runtime.h:
+
+2008-01-24  Michael Goddard  <michael.goddard@trolltech.com>
+
+        Reviewed by Simon.
+
+        Code style cleanups.
+        Add spaces before/after braces in inline function.
+
+        * bindings/qt/qt_instance.h:
+
+2008-01-24  Michael Goddard  <michael.goddard@trolltech.com>
+
+        Reviewed by Simon.
+
+        Code style cleanups.
+        Remove spaces and unneeded declared parameter names.
+
+        * bindings/qt/qt_instance.cpp:
+        (KJS::Bindings::QtRuntimeObjectImp::removeFromCache):
+
+2008-01-24  Michael Goddard  <michael.goddard@trolltech.com>
+
+        Reviewed by Simon.
+
+        Clear stale RuntimeObjectImps.
+        Since other objects can have refs to the QtInstance,
+        we can't rely on the QtInstance being deleted when the
+        RuntimeObjectImp is invalidate or deleted.  This
+        could result in a stale JSObject being returned for
+        a valid Instance.
+
+        * bindings/qt/qt_instance.cpp:
+        (KJS::Bindings::QtRuntimeObjectImp::QtRuntimeObjectImp):
+        (KJS::Bindings::QtRuntimeObjectImp::~QtRuntimeObjectImp):
+        (KJS::Bindings::QtRuntimeObjectImp::invalidate):
+        (KJS::Bindings::QtRuntimeObjectImp::removeFromCache):
+        (KJS::Bindings::QtInstance::getRuntimeObject):
+        * bindings/runtime.cpp:
+        (KJS::Bindings::Instance::createRuntimeObject):
+        * bindings/runtime.h:
+
+2008-01-23  Alp Toker  <alp@atoker.com>
+
+        Rubber-stamped by Mark Rowe.
+
+        Remove whitespace after -I in automake include lists.
+
+        * GNUmakefile.am:
+
+2008-01-23  Michael Goddard <michael.goddard@trolltech.com>
+
+        Reviewed by Lars Knoll <lars@trolltech.com>.
+
+        Reworked the JavaScriptCore Qt bindings:
+        
+        * Add initial support for string and variant arrays, as well
+        as sub QObjects in the JS bindings.
+        
+        * Don't expose fields marked as not scriptable by moc.
+        
+        * Add support for dynamic properties and accessing named
+        QObject children of an object (like QtScript and older
+        IE DOM style JS).
+        * Add support for custom toString methods.
+        
+        * Fine tune some bindings to be closer to QtScript.
+        Make void functions return undefined, and empty/
+        null QStrings return a zero length string.
+        
+        * Create framework for allowing more direct method calls.
+        Since RuntimeMethod doesn't allow us to add additional
+        methods/properties to a function, add these classes.
+        Start prototyping object.signal.connect(...).
+        
+        * Add signal support to the Qt bindings.
+        Allow connecting to signals (object.signal.connect(slot)),
+        disconnecting, and emitting signals.  Currently chooses
+        the first signal that matches the name, so this will need
+        improvement.
+        
+        * Add property names, and resolve signals closer to use.
+        Enumerating properties now returns some of the Qt properties
+        and signals.  Slots and methods aren't quite present.  Also,
+        resolve signal connections etc. closer to the time of use, so
+        we can do more dynamic resolution based on argument type etc.
+        Still picks the first one with the same name, at the moment.
+        
+        * Make signature comparison code consistent.
+        Use the same code for checking meta signatures in
+        the method and fallback getters, and avoid a
+        QByteArray construction when we can.
+        
+        * Fix minor memory leak, and handle pointers better.
+        Delete the private object in the dtors, and use RefPtrs
+        for holding Instances etc.
+        
+        * Handle method lookup better.
+        Allow invocation time method lookup based on the arguments,
+        which is closer to QtScript behaviour.  Also, cache the
+        method lists and delete them in the QtClass dtor (stops
+        a memory leak).
+        
+        * Improve JS to Qt data type conversions.
+        Add some support for Date & RegExp JS objects,
+        and provide some metrics on the quality of the
+        conversion.
+        
+        * A couple of fixes for autotest failures.
+        Better support for converting lists, read/write only
+        QMetaProperty support, modified slot search order...)
+
+        * bindings/qt/qt_class.cpp:
+        (KJS::Bindings::QtClass::QtClass):
+        (KJS::Bindings::QtClass::~QtClass):
+        (KJS::Bindings::QtClass::name):
+        (KJS::Bindings::QtClass::fallbackObject):
+        (KJS::Bindings::QtClass::methodsNamed):
+        (KJS::Bindings::QtClass::fieldNamed):
+        * bindings/qt/qt_class.h:
+        * bindings/qt/qt_instance.cpp:
+        (KJS::Bindings::QtInstance::QtInstance):
+        (KJS::Bindings::QtInstance::~QtInstance):
+        (KJS::Bindings::QtInstance::getRuntimeObject):
+        (KJS::Bindings::QtInstance::getClass):
+        (KJS::Bindings::QtInstance::implementsCall):
+        (KJS::Bindings::QtInstance::getPropertyNames):
+        (KJS::Bindings::QtInstance::invokeMethod):
+        (KJS::Bindings::QtInstance::invokeDefaultMethod):
+        (KJS::Bindings::QtInstance::stringValue):
+        (KJS::Bindings::QtInstance::booleanValue):
+        (KJS::Bindings::QtInstance::valueOf):
+        (KJS::Bindings::QtField::name):
+        (KJS::Bindings::QtField::valueFromInstance):
+        (KJS::Bindings::QtField::setValueToInstance):
+        * bindings/qt/qt_instance.h:
+        (KJS::Bindings::QtInstance::getBindingLanguage):
+        (KJS::Bindings::QtInstance::getObject):
+        * bindings/qt/qt_runtime.cpp:
+        (KJS::Bindings::QWKNoDebug::QWKNoDebug):
+        (KJS::Bindings::QWKNoDebug::~QWKNoDebug):
+        (KJS::Bindings::QWKNoDebug::operator<<):
+        (KJS::Bindings::):
+        (KJS::Bindings::valueRealType):
+        (KJS::Bindings::convertValueToQVariant):
+        (KJS::Bindings::convertQVariantToValue):
+        (KJS::Bindings::QtRuntimeMethod::QtRuntimeMethod):
+        (KJS::Bindings::QtRuntimeMethod::~QtRuntimeMethod):
+        (KJS::Bindings::QtRuntimeMethod::codeType):
+        (KJS::Bindings::QtRuntimeMethod::execute):
+        (KJS::Bindings::QtRuntimeMethodData::~QtRuntimeMethodData):
+        (KJS::Bindings::QtRuntimeMetaMethodData::~QtRuntimeMetaMethodData):
+        (KJS::Bindings::QtRuntimeConnectionMethodData::~QtRuntimeConnectionMethodData):
+        (KJS::Bindings::QtMethodMatchType::):
+        (KJS::Bindings::QtMethodMatchType::QtMethodMatchType):
+        (KJS::Bindings::QtMethodMatchType::kind):
+        (KJS::Bindings::QtMethodMatchType::isValid):
+        (KJS::Bindings::QtMethodMatchType::isVariant):
+        (KJS::Bindings::QtMethodMatchType::isMetaType):
+        (KJS::Bindings::QtMethodMatchType::isUnresolved):
+        (KJS::Bindings::QtMethodMatchType::isMetaEnum):
+        (KJS::Bindings::QtMethodMatchType::enumeratorIndex):
+        (KJS::Bindings::QtMethodMatchType::variant):
+        (KJS::Bindings::QtMethodMatchType::metaType):
+        (KJS::Bindings::QtMethodMatchType::metaEnum):
+        (KJS::Bindings::QtMethodMatchType::unresolved):
+        (KJS::Bindings::QtMethodMatchType::typeId):
+        (KJS::Bindings::QtMethodMatchType::name):
+        (KJS::Bindings::QtMethodMatchData::QtMethodMatchData):
+        (KJS::Bindings::QtMethodMatchData::isValid):
+        (KJS::Bindings::QtMethodMatchData::firstUnresolvedIndex):
+        (KJS::Bindings::indexOfMetaEnum):
+        (KJS::Bindings::findMethodIndex):
+        (KJS::Bindings::findSignalIndex):
+        (KJS::Bindings::QtRuntimeMetaMethod::QtRuntimeMetaMethod):
+        (KJS::Bindings::QtRuntimeMetaMethod::mark):
+        (KJS::Bindings::QtRuntimeMetaMethod::callAsFunction):
+        (KJS::Bindings::QtRuntimeMetaMethod::getOwnPropertySlot):
+        (KJS::Bindings::QtRuntimeMetaMethod::lengthGetter):
+        (KJS::Bindings::QtRuntimeMetaMethod::connectGetter):
+        (KJS::Bindings::QtRuntimeMetaMethod::disconnectGetter):
+        (KJS::Bindings::QtRuntimeConnectionMethod::QtRuntimeConnectionMethod):
+        (KJS::Bindings::QtRuntimeConnectionMethod::callAsFunction):
+        (KJS::Bindings::QtRuntimeConnectionMethod::getOwnPropertySlot):
+        (KJS::Bindings::QtRuntimeConnectionMethod::lengthGetter):
+        (KJS::Bindings::QtConnectionObject::QtConnectionObject):
+        (KJS::Bindings::QtConnectionObject::~QtConnectionObject):
+        (KJS::Bindings::QtConnectionObject::metaObject):
+        (KJS::Bindings::QtConnectionObject::qt_metacast):
+        (KJS::Bindings::QtConnectionObject::qt_metacall):
+        (KJS::Bindings::QtConnectionObject::execute):
+        (KJS::Bindings::QtConnectionObject::match):
+        (KJS::Bindings::::QtArray):
+        (KJS::Bindings::::~QtArray):
+        (KJS::Bindings::::rootObject):
+        (KJS::Bindings::::setValueAt):
+        (KJS::Bindings::::valueAt):
+        * bindings/qt/qt_runtime.h:
+        (KJS::Bindings::QtField::):
+        (KJS::Bindings::QtField::QtField):
+        (KJS::Bindings::QtField::fieldType):
+        (KJS::Bindings::QtMethod::QtMethod):
+        (KJS::Bindings::QtMethod::name):
+        (KJS::Bindings::QtMethod::numParameters):
+        (KJS::Bindings::QtArray::getLength):
+        (KJS::Bindings::QtRuntimeMethod::d_func):
+        (KJS::Bindings::QtRuntimeMetaMethod::d_func):
+        (KJS::Bindings::QtRuntimeConnectionMethod::d_func):
+        (KJS::Bindings::):
+        * bindings/runtime.cpp:
+        (KJS::Bindings::Instance::createBindingForLanguageInstance):
+        (KJS::Bindings::Instance::createRuntimeObject):
+        (KJS::Bindings::Instance::reallyCreateRuntimeObject):
+        * bindings/runtime.h:
+
+2008-01-22  Anders Carlsson  <andersca@apple.com>
+
+        Reviewed by Darin and Adam.
+
+        <rdar://problem/5688975>
+        div element on microsoft site has wrong left offset.
+        
+        Return true even if NPN_GetProperty returns null or undefined. This matches Firefox 
+        (and is what the Silverlight plug-in expects).
+        
+        * bindings/NP_jsobject.cpp:
+        (_NPN_GetProperty):
+
+2008-01-21  Geoffrey Garen  <ggaren@apple.com>
+
+        Reviewed by Maciej Stachowiak.
+        
+        Fixed http://bugs.webkit.org/show_bug.cgi?id=16909
+        REGRESSION: Amazon.com crash (ActivationImp)
+        
+        (and a bunch of other crashes)
+        
+        Plus, a .7% SunSpider speedup to boot.
+        
+        Replaced the buggy currentExec and savedExec mechanisms with an
+        explicit ExecState stack.
+
+        * kjs/collector.cpp:
+        (KJS::Collector::collect): Explicitly mark the ExecState stack.
+
+        (KJS::Collector::reportOutOfMemoryToAllExecStates): Slight change in
+        behavior: We no longer throw an exception in any global ExecStates,
+        since global ExecStates are more like pseudo-ExecStates, and aren't
+        used for script execution. (It's unclear what would happen if you left
+        an exception waiting around in a global ExecState, but it probably
+        wouldn't be good.)
+
+2008-01-21  Jan Michael Alonzo  <jmalonzo@unpluggable.com>
+
+        Reviewed by Alp Toker.
+
+        http://bugs.webkit.org/show_bug.cgi?id=16955
+        Get errors when cross-compile webkit-gtk
+
+        * GNUmakefile.am: removed ICU_CFLAGS
+
+2008-01-18  Kevin McCullough  <kmccullough@apple.com>
+
+        - Build fix.
+
+        * kjs/ustring.h:
+
+2008-01-18  Kevin McCullough  <kmccullough@apple.com>
+
+        - Build fix.
+
+        * kjs/ustring.cpp:
+        * kjs/ustring.h:
+        (KJS::UString::cost):
+
 2008-01-18  Kevin McCullough  <kmccullough@apple.com>
 
         Reviewed by Geoff.