| 2010-03-03 Steve Falkenburg <sfalken@apple.com> |
| |
| Rubber stamped by Adam Roben. |
| |
| Fix bogus xcopy that was polluting source tree at build time. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: |
| |
| 2010-03-02 Fridrich Strba <fridrich.strba@bluewin.ch> |
| |
| Reviewed by Oliver Hunt. |
| |
| Allow building smoothly on win32 and win64 using GCC |
| https://bugs.webkit.org/show_bug.cgi?id=35607 |
| |
| * jit/JITStubs.h: |
| * runtime/Collector.cpp: |
| (JSC::Heap::allocateBlock): |
| (JSC::Heap::freeBlockPtr): |
| (JSC::currentThreadStackBase): |
| |
| 2010-03-02 Jeremy Orlow <jorlow@chromium.org> |
| |
| Reviewed by David Levin. |
| |
| Revert database thread changes that are no longer required |
| https://bugs.webkit.org/show_bug.cgi?id=35519 |
| |
| Jochen Eisinger created 55214 and 55247 to track which database |
| owns which thread. Dmitry suggested that this could also |
| be done via TLS, though. After exploring the options, Jochen |
| chose to go the TLS route, so these patches are no longer needed. |
| |
| * wtf/Threading.h: |
| * wtf/ThreadingNone.cpp: |
| (WTF::isMainThread): |
| * wtf/ThreadingPthreads.cpp: |
| (WTF::identifierByPthreadHandle): |
| (WTF::establishIdentifierForPthreadHandle): |
| (WTF::pthreadHandleForIdentifier): |
| (WTF::createThreadInternal): |
| (WTF::currentThread): |
| * wtf/ThreadingWin.cpp: |
| (WTF::threadMap): |
| (WTF::storeThreadHandleByIdentifier): |
| (WTF::threadHandleForIdentifier): |
| (WTF::createThreadInternal): |
| |
| 2010-03-02 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Fix QScriptValue::toString(). |
| |
| More ECMA Script compliance, especially for values as NaN, Inifinite |
| and really big/small numbers. |
| |
| [Qt] QScriptValue::toString() returns incorrect values |
| https://bugs.webkit.org/show_bug.cgi?id=34850 |
| |
| * qt/api/qscriptconverter_p.h: |
| (QScriptConverter::toString): |
| * qt/api/qscriptvalue_p.h: |
| (QScriptValuePrivate::toString): |
| * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: |
| * qt/tests/qscriptvalue/tst_qscriptvalue.h: |
| * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: |
| (tst_QScriptValue::toString_initData): |
| (tst_QScriptValue::toString_makeData): |
| (tst_QScriptValue::toString_test): |
| |
| 2010-03-02 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Introduce a new class; QScriptString. |
| |
| The QScriptString class should act as a handle to "interned" |
| strings in a QScriptEngine. |
| |
| [Qt] QtScript should provide QScriptString |
| https://bugs.webkit.org/show_bug.cgi?id=34843 |
| |
| * qt/api/QtScript.pro: |
| * qt/api/qscriptengine.cpp: |
| (QScriptEngine::toStringHandle): |
| * qt/api/qscriptengine.h: |
| * qt/api/qscriptengine_p.h: |
| (QScriptEnginePrivate::toStringHandle): |
| * qt/api/qscriptstring.cpp: Added. |
| (QScriptString::QScriptString): |
| (QScriptString::~QScriptString): |
| (QScriptString::operator=): |
| (QScriptString::isValid): |
| (QScriptString::operator==): |
| (QScriptString::operator!=): |
| (QScriptString::toArrayIndex): |
| (QScriptString::toString): |
| (QScriptString::operator QString): |
| (qHash): |
| * qt/api/qscriptstring.h: Added. |
| * qt/api/qscriptstring_p.h: Added. |
| (QScriptStringPrivate::QScriptStringPrivate): |
| (QScriptStringPrivate::~QScriptStringPrivate): |
| (QScriptStringPrivate::get): |
| (QScriptStringPrivate::isValid): |
| (QScriptStringPrivate::operator==): |
| (QScriptStringPrivate::operator!=): |
| (QScriptStringPrivate::toArrayIndex): |
| (QScriptStringPrivate::toString): |
| (QScriptStringPrivate::id): |
| * qt/tests/qscriptstring/qscriptstring.pro: Added. |
| * qt/tests/qscriptstring/tst_qscriptstring.cpp: Added. |
| (tst_QScriptString::tst_QScriptString): |
| (tst_QScriptString::~tst_QScriptString): |
| (tst_QScriptString::test): |
| (tst_QScriptString::hash): |
| (tst_QScriptString::toArrayIndex_data): |
| (tst_QScriptString::toArrayIndex): |
| * qt/tests/tests.pro: |
| |
| 2010-03-02 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by NOBODY (Build fix). |
| |
| Export function on windows. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2010-03-01 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Refactor named getter function signature to be in line with indexing getter signature |
| https://bugs.webkit.org/show_bug.cgi?id=35563 |
| |
| This removes the PropertySlot argument from getter functions, and makes them directly |
| pass the slot base. This makes the semantics for the functions match that of the |
| indexing getters. |
| |
| On the down side, this means that we can no longer simply use a proxy function for |
| JS getters, so we now add another marker value to indicate that a getter is present |
| and branch accordingly. |
| |
| Against all rationality sunspider reports this as a perf win, but i suspect it's just noise. |
| |
| * API/JSCallbackObject.h: |
| * API/JSCallbackObjectFunctions.h: |
| (JSC::::staticValueGetter): |
| (JSC::::staticFunctionGetter): |
| (JSC::::callbackGetter): |
| * JavaScriptCore.exp: |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::argumentsGetter): |
| * runtime/JSActivation.h: |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::argumentsGetter): |
| (JSC::JSFunction::callerGetter): |
| (JSC::JSFunction::lengthGetter): |
| * runtime/JSFunction.h: |
| * runtime/NumberConstructor.cpp: |
| (JSC::numberConstructorNaNValue): |
| (JSC::numberConstructorNegInfinity): |
| (JSC::numberConstructorPosInfinity): |
| (JSC::numberConstructorMaxValue): |
| (JSC::numberConstructorMinValue): |
| * runtime/PropertySlot.cpp: |
| (JSC::PropertySlot::functionGetter): |
| * runtime/PropertySlot.h: |
| (JSC::PropertySlot::getValue): |
| (JSC::PropertySlot::setGetterSlot): |
| (JSC::PropertySlot::setCacheableGetterSlot): |
| * runtime/RegExpConstructor.cpp: |
| (JSC::regExpConstructorDollar1): |
| (JSC::regExpConstructorDollar2): |
| (JSC::regExpConstructorDollar3): |
| (JSC::regExpConstructorDollar4): |
| (JSC::regExpConstructorDollar5): |
| (JSC::regExpConstructorDollar6): |
| (JSC::regExpConstructorDollar7): |
| (JSC::regExpConstructorDollar8): |
| (JSC::regExpConstructorDollar9): |
| (JSC::regExpConstructorInput): |
| (JSC::regExpConstructorMultiline): |
| (JSC::regExpConstructorLastMatch): |
| (JSC::regExpConstructorLastParen): |
| (JSC::regExpConstructorLeftContext): |
| (JSC::regExpConstructorRightContext): |
| * runtime/RegExpObject.cpp: |
| (JSC::regExpObjectGlobal): |
| (JSC::regExpObjectIgnoreCase): |
| (JSC::regExpObjectMultiline): |
| (JSC::regExpObjectSource): |
| (JSC::regExpObjectLastIndex): |
| |
| 2010-03-01 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| PropertySlot::getValue(ExecState, unsigned) unnecessarily converts index to an Identifier |
| https://bugs.webkit.org/show_bug.cgi?id=35561 |
| |
| Fix this by defining a separate property getter function for index getters. This allows |
| us to pass an unsigned number without the conversion to an Identifier. We then update |
| setCustomIndex to take this new getter type. |
| |
| * runtime/PropertySlot.h: |
| (JSC::PropertySlot::getValue): |
| (JSC::PropertySlot::setCustom): |
| (JSC::PropertySlot::setCustomIndex): |
| |
| 2010-03-01 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Bug 35537 - put_by_id does will incorrectly cache writes where a specific value exists, |
| where at the point of caching the same value is being written. |
| |
| When performing a put_by_id that is replacing a property already present on the object, |
| there are three interesting cases regarding the state of the specific value: |
| |
| (1) No specific value set - nothing to do, leave the structure in it's current state, |
| can cache. |
| (2) A specific value was set, the new put is not of a specified value (i.e. function), |
| or is of a different specific value - in these cases we need to perform a despecifying |
| transition to clear the specific value in the structure, but having done so this is a |
| normal property so as such we can again cache normally. |
| (3) A specific value was set, and we are overwriting with the same value - in these cases |
| leave the structure unchanged, but since a specific value is set we cannot cache this |
| put (we would need the JIT to dynamically check the value being written matched). |
| |
| Unfortunately, the current behaviour does not match this. the checks for a specific value |
| being present & the value matching are combined in such a way that in case (2), above we |
| will unnecessarily prevent the transition being cached, but in case (3) we will incorrectly |
| fail to prevent caching. |
| |
| The bug exposes itself if multiple puts of the same specific value are performed to a |
| property, and erroneously the put is allowed to be cached by the JIT. Method checks may be |
| generated caching calls of this structure. Subsequent puts performed from JIT code may |
| write different values without triggering a despecify transition, and as such cached method |
| checks will continue to pass, despite the value having changed. |
| |
| * runtime/JSObject.h: |
| (JSC::JSObject::putDirectInternal): |
| |
| 2010-03-01 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Fix the Qt build on Mac OS X/Cocoa 64-bit |
| |
| * JavaScriptCore.pri: Add missing implementation file to resolve JSC symbols |
| |
| 2010-02-26 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber Stamped by Geoff Garen. |
| |
| Remove wrec. All builds should have switched to yarr by now. |
| |
| * Android.mk: |
| * GNUmakefile.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.pri: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * runtime/RegExp.cpp: |
| (JSC::RegExp::match): |
| * runtime/RegExp.h: |
| * wrec: Removed. |
| * wrec/CharacterClass.cpp: Removed. |
| * wrec/CharacterClass.h: Removed. |
| * wrec/CharacterClassConstructor.cpp: Removed. |
| * wrec/CharacterClassConstructor.h: Removed. |
| * wrec/Escapes.h: Removed. |
| * wrec/Quantifier.h: Removed. |
| * wrec/WREC.cpp: Removed. |
| * wrec/WREC.h: Removed. |
| * wrec/WRECFunctors.cpp: Removed. |
| * wrec/WRECFunctors.h: Removed. |
| * wrec/WRECGenerator.cpp: Removed. |
| * wrec/WRECGenerator.h: Removed. |
| * wrec/WRECParser.cpp: Removed. |
| * wrec/WRECParser.h: Removed. |
| * wscript: |
| |
| 2010-02-26 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Make the lookup table generator include an explicit cast to expected |
| type of the function. We do this because otherwise the blind intptr_t |
| cast that is subsequently applied allows incorrectly typed functions |
| to be inserted into the table, where they will only fail at runtime. |
| This change makes such errors produce a compile time failure. |
| |
| * create_hash_table: |
| |
| 2010-02-26 Janne Koskinen <janne.p.koskinen@digia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| [Qt] Symbian specific getCPUTime implemetation |
| https://bugs.webkit.org/show_bug.cgi?id=34742 |
| |
| Default implementation doesn't work on Symbian devices. |
| This change adds a proper implementation by |
| asking thread execution time from the current thread. |
| |
| * runtime/TimeoutChecker.cpp: |
| (JSC::getCPUTime): |
| |
| 2010-02-25 Alexey Proskuryakov <ap@apple.com> |
| |
| Reviewed by Anders Carlsson. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=35406 |
| <rdar://problem/6945502> Make generic array methods work with JavaArray |
| |
| Renamed lazyCreationData to subclassData. This is extra data that can be used by JSArray |
| subclasses (you can't add new data members, because it wouldn't fit in JSCell otherwise). |
| |
| * JavaScriptCore.exp: |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::JSArray): |
| (JSC::JSArray::subclassData): |
| (JSC::JSArray::setSubclassData): |
| * runtime/JSArray.h: |
| * runtime/RegExpConstructor.cpp: |
| (JSC::RegExpMatchesArray::RegExpMatchesArray): |
| (JSC::RegExpMatchesArray::~RegExpMatchesArray): |
| (JSC::RegExpMatchesArray::fillArrayInstance): |
| * runtime/RegExpMatchesArray.h: |
| (JSC::RegExpMatchesArray::getOwnPropertySlot): |
| (JSC::RegExpMatchesArray::getOwnPropertyDescriptor): |
| (JSC::RegExpMatchesArray::put): |
| (JSC::RegExpMatchesArray::deleteProperty): |
| (JSC::RegExpMatchesArray::getOwnPropertyNames): |
| |
| 2010-02-25 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| JSC crashes like crazy in the JSPropertyNameIterator destructor |
| |
| Add back null check of m_cachedStructure. Curse last minute changes. |
| |
| * runtime/JSPropertyNameIterator.cpp: |
| (JSC::JSPropertyNameIterator::~JSPropertyNameIterator): |
| |
| 2010-02-25 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Race condition in JSPropertyNameIterator and Structure destruction |
| https://bugs.webkit.org/show_bug.cgi?id=35398 |
| |
| JSPropertyNameIterator and Structure have a cyclic dependency that they |
| manage by clearing the appropriate reference in each other during their |
| destruction. However if the Structure is destroyed while the |
| JSPropertyNameIterator is dead but not yet finalized the Structures |
| WeakGCPtr will return null, and so prevent Structure from clearing |
| the m_cachedStructure pointer of the iterator. When the iterator is |
| then finalised the m_cachedStructure is invalid, and the attempt to |
| clear the structures back reference fails. |
| |
| To fix this we simply make JSPropertyNameIterator keep the Structure |
| alive, using the weak pointer to break the ref cycle. |
| |
| * runtime/JSPropertyNameIterator.cpp: |
| (JSC::JSPropertyNameIterator::~JSPropertyNameIterator): |
| The iterator now keeps m_cachedStructure alive itself, so no longer needs |
| to check for it being cleared |
| * runtime/JSPropertyNameIterator.h: |
| (JSC::JSPropertyNameIterator::setCachedStructure): |
| Add an assertion to ensure correct usage |
| (JSC::JSPropertyNameIterator::cachedStructure): |
| Add .get() |
| * runtime/Structure.cpp: |
| (JSC::Structure::~Structure): |
| Add an assertion that our iterator isn't already dead, and remove |
| the now unnecessary attempt to clear the ref in the iterator |
| * runtime/WeakGCPtr.h: |
| (JSC::WeakGCPtr::hasDeadObject): |
| An assert-only function to allow us to assert correct behaviour |
| in the Structure destructor |
| |
| 2010-02-25 Jochen Eisinger <jochen@chromium.org> |
| |
| Reviewed by Jeremy Orlow. |
| |
| Make the context that was passed to the ThreadFunction accessible. |
| https://bugs.webkit.org/show_bug.cgi?id=35379 |
| |
| When a database is opened, right now you |
| don't have any context from where it is opened. The problem is that |
| the actual calls that open a database go through the sqlite3 vfs |
| layer, so there's no easy way to pass this function down to to |
| platform/sql/chromium/SQLFileSystemChromium*.cpp |
| |
| This patch will allow you to get from anywhere within webkit a pointer |
| to the Thread object that actually created the thread you're currently |
| on (in case of the database, this can be either a thread forked of |
| from the main thread or from a worker thread), and query the object |
| for context information. |
| |
| * wtf/Threading.h: |
| * wtf/ThreadingNone.cpp: |
| (WTF::threadContext): |
| * wtf/ThreadingPthreads.cpp: |
| (WTF::): |
| (WTF::identifierByPthreadHandle): |
| (WTF::establishIdentifierForPthreadHandle): |
| (WTF::pthreadHandleForIdentifier): |
| (WTF::contextForIdentifier): |
| (WTF::createThreadInternal): |
| (WTF::currentThread): |
| (WTF::threadContext): |
| * wtf/ThreadingWin.cpp: |
| (WTF::): |
| (WTF::threadMap): |
| (WTF::storeThreadHandleByIdentifier): |
| (WTF::threadHandleForIdentifier): |
| (WTF::contextForIdentifier): |
| (WTF::createThreadInternal): |
| (WTF::threadContext): |
| |
| 2010-02-25 Jeremy Orlow <jorlow@chromium.org> |
| |
| Reverting to re-submit with better change log. |
| |
| * wtf/Threading.h: |
| * wtf/ThreadingNone.cpp: |
| (WTF::isMainThread): |
| * wtf/ThreadingPthreads.cpp: |
| (WTF::identifierByPthreadHandle): |
| (WTF::establishIdentifierForPthreadHandle): |
| (WTF::pthreadHandleForIdentifier): |
| (WTF::createThreadInternal): |
| (WTF::currentThread): |
| * wtf/ThreadingWin.cpp: |
| (WTF::threadMap): |
| (WTF::storeThreadHandleByIdentifier): |
| (WTF::threadHandleForIdentifier): |
| (WTF::createThreadInternal): |
| |
| 2010-02-25 Jochen Eisinger <jochen@chromium.org> |
| |
| Reviewed by Jeremy Orlow. |
| |
| Make the context that was passed to the ThreadFunction accessible. |
| https://bugs.webkit.org/show_bug.cgi?id=35379 |
| |
| * wtf/Threading.h: |
| * wtf/ThreadingNone.cpp: |
| (WTF::threadContext): |
| * wtf/ThreadingPthreads.cpp: |
| (WTF::): |
| (WTF::identifierByPthreadHandle): |
| (WTF::establishIdentifierForPthreadHandle): |
| (WTF::pthreadHandleForIdentifier): |
| (WTF::contextForIdentifier): |
| (WTF::createThreadInternal): |
| (WTF::currentThread): |
| (WTF::threadContext): |
| * wtf/ThreadingWin.cpp: |
| (WTF::): |
| (WTF::threadMap): |
| (WTF::storeThreadHandleByIdentifier): |
| (WTF::threadHandleForIdentifier): |
| (WTF::contextForIdentifier): |
| (WTF::createThreadInternal): |
| (WTF::threadContext): |
| |
| 2010-02-24 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| [REGRESSION in r55185] EXC_BAD_ACCESS on opening inspector. |
| https://bugs.webkit.org/show_bug.cgi?id=35335 |
| |
| compileGetDirectOffset modifies the contents of the object register |
| when the object is not using the inline storage array. As the object |
| register contains our 'this' pointer we can't allow it to be clobbered. |
| The fix is simply to copy the register into a separate scratch register |
| when we're loading off an object that doesn't use inline storage. |
| |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::privateCompileGetByIdSelfList): |
| * jit/JITPropertyAccess32_64.cpp: |
| (JSC::JIT::privateCompileGetByIdSelfList): |
| |
| 2010-02-24 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Speed up getter performance in the jit |
| https://bugs.webkit.org/show_bug.cgi?id=35332 |
| |
| Implement getter lookup caching in the interpreter. |
| The getter stubs are generated through basically the |
| same code paths as the normal get_by_id caching. |
| Instead of simply loading a property and returning, |
| we load the getter slot, and pass the getter, base value |
| and return address to a shared stub used for getter |
| dispatch. |
| |
| * jit/JIT.h: |
| (JSC::JIT::compileGetByIdProto): |
| (JSC::JIT::compileGetByIdSelfList): |
| (JSC::JIT::compileGetByIdProtoList): |
| (JSC::JIT::compileGetByIdChainList): |
| (JSC::JIT::compileGetByIdChain): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::privateCompileGetByIdProto): |
| (JSC::JIT::privateCompileGetByIdSelfList): |
| (JSC::JIT::privateCompileGetByIdProtoList): |
| (JSC::JIT::privateCompileGetByIdChainList): |
| (JSC::JIT::privateCompileGetByIdChain): |
| * jit/JITPropertyAccess32_64.cpp: |
| (JSC::JIT::privateCompileGetByIdProto): |
| (JSC::JIT::privateCompileGetByIdSelfList): |
| (JSC::JIT::privateCompileGetByIdProtoList): |
| (JSC::JIT::privateCompileGetByIdChainList): |
| (JSC::JIT::privateCompileGetByIdChain): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::tryCacheGetByID): |
| (JSC::DEFINE_STUB_FUNCTION): |
| * jit/JITStubs.h: |
| (JSC::): |
| * runtime/GetterSetter.h: |
| |
| 2010-02-23 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Web Inspector: Regression: r55027+: Inspector broken |
| https://bugs.webkit.org/show_bug.cgi?id=35253 |
| |
| op_get_by_id_getter_chain was not passing the correct this parameter. |
| The bug was caused by incorrect use of baseCell instead of baseValue, |
| baseValue contains the original object for the lookup (and hence the |
| correct this object), baseCell is clobbered as part of walking the |
| prototype chain. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| |
| 2010-02-23 Gustavo Noronha Silva <gns@gnome.org> |
| |
| Rubber-stamped by Dimitri Glazkov. |
| |
| Chromium build fix. |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| |
| 2010-02-23 Leandro Pereira <leandro@profusion.mobi> |
| |
| Reviewed by Gustavo Noronha Silva. |
| |
| Changes references of GOwnPtr to reflect their new place. |
| http://webkit.org/b/35084 |
| |
| * JavaScriptCore/JavaScriptCore.gypi: |
| * JavaScriptCore/wtf/Threading.h: |
| * JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h: |
| |
| 2010-02-23 Leandro Pereira <leandro@profusion.mobi> |
| |
| Reviewed by Kenneth Rohde Christiansen. |
| |
| Adding the EFL implementation of JavaScriptCore. |
| See https://bugs.webkit.org/show_bug.cgi?id=35084 for details. |
| |
| * GNUmakefile.am: Updated to reflect the new location of GOwnPtr and |
| GRefPtr. |
| * wtf/efl/MainThreadEfl.cpp: Added. |
| * wtf/gobject/GOwnPtr.cpp: Moved from wtf/gtk. |
| * wtf/gobject/GOwnPtr.h: Moved from wtf/gtk. |
| * wtf/gobject/GRefPtr.cpp: Moved from wtf/gtk. |
| * wtf/gobject/GRefPtr.h: Moved from wtf/gtk. |
| |
| 2010-02-22 Julien Chaffraix <jchaffraix@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| Remove auto_ptr usage in JavaScriptCore. |
| https://bugs.webkit.org/show_bug.cgi?id=35221 |
| |
| * parser/Nodes.h: Removed now unneeded adopt method. |
| * parser/Parser.cpp: Removed <memory> include as it is not required anymore. |
| * wtf/OwnPtr.h: Removed the constructor from auto_ptr. |
| * wtf/VectorTraits.h: Removed a template specialization for auto_ptr. |
| * wtf/unicode/Collator.h: Made userDefault return a PassOwnPtr. |
| * wtf/unicode/CollatorDefault.cpp: |
| (WTF::Collator::userDefault): Changed the method to match the next signature. |
| * wtf/unicode/icu/CollatorICU.cpp: |
| (WTF::Collator::userDefault): Ditto. |
| |
| 2010-02-22 Huahui Wu <hwu@google.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Add code that enables SquirrelFish Extreme (a.k.a JSCX, JSC JIT) |
| in Android. It's disabled by default, but is enabled when the |
| enveronment variable ENABLE_JSC_JIT is set to true. |
| https://bugs.webkit.org/show_bug.cgi?id=34855 |
| |
| * Android.mk: |
| * wtf/Platform.h: |
| |
| 2010-02-22 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| JSStringBuilder should not CRASH if allocation fails, it should throw a JSException. |
| |
| * runtime/JSGlobalObjectFunctions.cpp: |
| * runtime/JSStringBuilder.h: |
| (JSC::JSStringBuilder::JSStringBuilder): |
| (JSC::JSStringBuilder::append): |
| (JSC::JSStringBuilder::build): |
| * runtime/StringBuilder.h: |
| (JSC::StringBuilder::build): |
| * wtf/Vector.h: |
| (WTF::VectorBufferBase::tryAllocateBuffer): |
| (WTF::): |
| (WTF::VectorBuffer::tryAllocateBuffer): |
| (WTF::::tryExpandCapacity): |
| (WTF::::tryReserveCapacity): |
| (WTF::::tryAppend): |
| |
| 2010-02-22 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Eric Seidel. |
| |
| [BREWMP] Map FastMalloc to BREW memory allocator |
| https://bugs.webkit.org/show_bug.cgi?id=33570 |
| |
| Use MALLOC macro instead of the standard malloc function. |
| Although RVCT provides malloc, we can't use it in BREW |
| because the loader does not initialize the base address properly. |
| |
| * wtf/FastMalloc.cpp: |
| * wtf/brew/SystemMallocBrew.h: Added. |
| (mallocBrew): |
| (callocBrew): |
| (freeBrew): |
| (reallocBrew): |
| |
| 2010-02-22 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> |
| |
| Build fix for make distcheck. |
| |
| * GNUmakefile.am: |
| |
| 2010-02-22 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Unreviewed build fix. |
| |
| [Qt] Build fix for RVCT. |
| |
| Fix after r55024. The "-i" option is for perl not for the |
| script. |
| |
| * DerivedSources.pro: |
| |
| 2010-02-21 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Make UString::m_data be const, and make the UChar owned/ref-counted by CrossThreadRefCounted be const too. |
| |
| * runtime/UStringImpl.cpp: |
| (JSC::UStringImpl::baseSharedBuffer): |
| (JSC::UStringImpl::~UStringImpl): |
| * runtime/UStringImpl.h: |
| (JSC::UStringImpl::create): |
| (JSC::UStringImpl::data): |
| (JSC::UStringImpl::UStringImpl): |
| * wtf/OwnFastMallocPtr.h: |
| (WTF::OwnFastMallocPtr::~OwnFastMallocPtr): |
| |
| 2010-02-21 Yuta Kitamura <yutak@chromium.org> |
| |
| Reviewed by Darin Adler. |
| |
| HashMapTranslatorAdapter::translate() needs to set the mapped value. |
| |
| HTTPHeaderMap::add(const char*, const String&) does not work |
| https://bugs.webkit.org/show_bug.cgi?id=35227 |
| |
| * wtf/HashMap.h: |
| (WTF::HashMapTranslatorAdapter::translate): |
| |
| 2010-02-19 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by David Levin. |
| |
| Add an ENABLE flag for sandboxed iframes to make it possible to disable it in releases |
| https://bugs.webkit.org/show_bug.cgi?id=35147 |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2010-02-19 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| JSString::getIndex() calls value() to resolve the string value (is a rope) |
| to a UString, then passes the result to jsSingleCharacterSubstring without |
| checking for an exception. In case of out-of-memory the returned UString |
| is null(), which may result in an out-of-buounds substring being created. |
| This is bad. |
| |
| Simple fix is to be able to get an index from a rope without resolving to |
| UString. This may be a useful optimization in some test cases. |
| |
| The same bug exists in some other methods is JSString, these can be fixed |
| by changing them to call getIndex(). |
| |
| * runtime/JSString.cpp: |
| (JSC::JSString::resolveRope): |
| (JSC::JSString::getStringPropertyDescriptor): |
| * runtime/JSString.h: |
| (JSC::jsSingleCharacterSubstring): |
| (JSC::JSString::getIndex): |
| (JSC::jsSingleCharacterString): |
| (JSC::JSString::getStringPropertySlot): |
| * runtime/UStringImpl.cpp: |
| (JSC::singleCharacterSubstring): |
| * runtime/UStringImpl.h: |
| (JSC::UStringImpl::singleCharacterSubstring): |
| |
| 2010-02-19 Oliver Hunt <oliver@apple.com> |
| |
| RS = Gavin Barraclough. |
| |
| Split the 32/64 version of JITPropertyAccess into a separate file. |
| |
| * GNUmakefile.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.pri: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * jit/JITPropertyAccess.cpp: |
| * jit/JITPropertyAccess32_64.cpp: Added. |
| (JSC::JIT::emit_op_put_by_index): |
| (JSC::JIT::emit_op_put_getter): |
| (JSC::JIT::emit_op_put_setter): |
| (JSC::JIT::emit_op_del_by_id): |
| (JSC::JIT::emit_op_method_check): |
| (JSC::JIT::emitSlow_op_method_check): |
| (JSC::JIT::emit_op_get_by_val): |
| (JSC::JIT::emitSlow_op_get_by_val): |
| (JSC::JIT::emit_op_put_by_val): |
| (JSC::JIT::emitSlow_op_put_by_val): |
| (JSC::JIT::emit_op_get_by_id): |
| (JSC::JIT::emitSlow_op_get_by_id): |
| (JSC::JIT::emit_op_put_by_id): |
| (JSC::JIT::emitSlow_op_put_by_id): |
| (JSC::JIT::compileGetByIdHotPath): |
| (JSC::JIT::compileGetByIdSlowCase): |
| (JSC::JIT::compilePutDirectOffset): |
| (JSC::JIT::compileGetDirectOffset): |
| (JSC::JIT::testPrototype): |
| (JSC::JIT::privateCompilePutByIdTransition): |
| (JSC::JIT::patchGetByIdSelf): |
| (JSC::JIT::patchMethodCallProto): |
| (JSC::JIT::patchPutByIdReplace): |
| (JSC::JIT::privateCompilePatchGetArrayLength): |
| (JSC::JIT::privateCompileGetByIdProto): |
| (JSC::JIT::privateCompileGetByIdSelfList): |
| (JSC::JIT::privateCompileGetByIdProtoList): |
| (JSC::JIT::privateCompileGetByIdChainList): |
| (JSC::JIT::privateCompileGetByIdChain): |
| (JSC::JIT::emit_op_get_by_pname): |
| (JSC::JIT::emitSlow_op_get_by_pname): |
| |
| 2010-02-19 Patrick Gansterer <paroga@paroga.com> |
| |
| Reviewed by Laszlo Gombos. |
| |
| Added additional parameter to create_rvct_stubs |
| for setting the regularexpression prefix. |
| Renamed it because it now works for other platforms too. |
| https://bugs.webkit.org/show_bug.cgi?id=34951 |
| |
| * DerivedSources.pro: |
| * create_jit_stubs: Copied from JavaScriptCore/create_rvct_stubs. |
| * create_rvct_stubs: Removed. |
| |
| 2010-02-18 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Improve interpreter getter performance |
| https://bugs.webkit.org/show_bug.cgi?id=35138 |
| |
| Improve the performance of getter dispatch by making it possible |
| for the interpreter to cache the GetterSetter object lookup. |
| |
| To do this we simply need to make PropertySlot aware of getters |
| as a potentially cacheable property, and record the base and this |
| objects for a getter access. This allows us to use more-or-less |
| identical code to that used by the normal get_by_id caching, with |
| the dispatch being the only actual difference. |
| |
| I'm holding off of implementing this in the JIT until I do some |
| cleanup to try and making coding in the JIT not be as horrible |
| as it is currently. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::dump): |
| (JSC::CodeBlock::derefStructures): |
| (JSC::CodeBlock::refStructures): |
| * bytecode/Opcode.h: |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::resolveGlobal): |
| (JSC::Interpreter::tryCacheGetByID): |
| (JSC::Interpreter::privateExecute): |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileMainPass): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::tryCacheGetByID): |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::fillGetterPropertySlot): |
| * runtime/PropertySlot.cpp: |
| (JSC::PropertySlot::functionGetter): |
| * runtime/PropertySlot.h: |
| (JSC::PropertySlot::isGetter): |
| (JSC::PropertySlot::isCacheable): |
| (JSC::PropertySlot::isCacheableValue): |
| (JSC::PropertySlot::setValueSlot): |
| (JSC::PropertySlot::setGetterSlot): |
| (JSC::PropertySlot::setCacheableGetterSlot): |
| (JSC::PropertySlot::clearOffset): |
| (JSC::PropertySlot::thisValue): |
| |
| 2010-02-17 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Fixed a portion of: |
| <rdar://problem/7165917> | https://bugs.webkit.org/show_bug.cgi?id=28676 |
| Safari 4 does not release memory back to the operating system fast enough (28676) |
| |
| This patch fixes a surprisingly common edge case in which the page heap |
| would have only one free span, but that span would be larger than the |
| minimum free size, so we would decide not to free it, even though it |
| could be as large as 100MB or more! |
| |
| SunSpider reports no change on Mac or Windows. |
| |
| * wtf/FastMalloc.cpp: |
| (WTF::TCMalloc_PageHeap::scavenge): Call shouldContinueScavenging() instead |
| of doing the math ourselves. Don't keep a local value for pagesDecommitted |
| because that lets free_committed_pages_ be wrong temporarily. Instead, |
| update free_committed_pages_ as we go. ASSERT that we aren't releasing |
| a span that has already been released, because we think this is impossible. |
| Finally, don't be afraid to release all free memory in the page heap when |
| scavenging. We only scavenge after 5 seconds of the application's working |
| set not growing, and we keep both thread caches and a central cache on |
| top of the page heap, so the extra free pages in the page heap were just |
| overkill. |
| |
| 2010-02-17 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=35070 |
| Addition of 2 strings of length 2^31 may result in a string of length 0. |
| |
| Check for overflow when creating a new JSString as a result of an addition |
| or concatenation, throw an out of memory exception. |
| |
| * runtime/JSString.h: |
| (JSC::): |
| * runtime/Operations.h: |
| (JSC::jsString): |
| |
| 2010-02-17 Xan Lopez <xlopez@igalia.com> |
| |
| Reviewed by Gustavo Noronha. |
| |
| [Linux] Webkit incompatible with Java plugins |
| https://bugs.webkit.org/show_bug.cgi?id=24912 |
| |
| Add support for GFile to GOwnPtr. |
| |
| Based on original work by Gustavo Noronha. |
| |
| * wtf/gtk/GOwnPtr.cpp: |
| (WTF::GFile): |
| * wtf/gtk/GOwnPtr.h: |
| |
| 2010-02-16 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Mark Rowe. |
| |
| Fix a handful of other leaks seen on the buildbot. |
| |
| * runtime/UStringImpl.h: |
| (JSC::UStringOrRopeImpl::deref): Delegate through to the subclass version of deref to ensure that |
| the correct cleanup takes place. This function previously featured some code that attempted to |
| skip deletion of static UStringImpl's. Closer inspection revealed that it was in fact equivalent |
| to "if (false)", meaning that UStringImpl's which had their final deref performed via this function |
| were leaked. |
| |
| 2010-02-16 Mark Rowe <mrowe@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Fix a handful of leaks seen on the buildbot. |
| |
| * runtime/UStringImpl.h: |
| (JSC::UStringOrRopeImpl::deref): Call URopeImpl::destructNonRecursive rather than delete |
| to ensure that the rope's fibers are also destroyed. |
| |
| 2010-02-16 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=34964 |
| Leaks tool reports false memory leaks due to Rope implementation. |
| |
| A rope is a recursive data structure where each node in the rope holds a set of |
| pointers, each of which may reference either a string (in UStringImpl form) or |
| another rope node. A low bit in each pointer is used to distinguish between |
| rope & string elements, in a fashion similar to the recently-removed |
| PtrAndFlags class (see https://bugs.webkit.org/show_bug.cgi?id=33731 ). Again, |
| this causes a problem for Leaks - refactor to remove the magic pointer |
| mangling. |
| |
| Move Rope out from JSString.h and rename to URopeImpl, to match UStringImpl. |
| Give UStringImpl and URopeImpl a common parent class, UStringOrRopeImpl. |
| Repurpose an otherwise invalid permutation to flags (static & should report |
| memory cost) to identify ropes. |
| |
| This allows us to change the rope's fibers to interrogate the object rather |
| than storing a bool within the low bits of the pointer (or in some cases the |
| use of a common parent class removes the need to determine the type at all - |
| there is a common interface to ref or get the length of either ropes or strings). |
| |
| * API/JSClassRef.cpp: |
| (OpaqueJSClass::OpaqueJSClass): |
| (OpaqueJSClassContextData::OpaqueJSClassContextData): |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::keyForCharacterSwitch): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/ArrayPrototype.cpp: |
| (JSC::arrayProtoFuncToString): |
| * runtime/Identifier.cpp: |
| (JSC::Identifier::equal): |
| (JSC::Identifier::addSlowCase): |
| * runtime/JSString.cpp: |
| (JSC::JSString::resolveRope): |
| * runtime/JSString.h: |
| (JSC::): |
| (JSC::RopeBuilder::JSString): |
| (JSC::RopeBuilder::~JSString): |
| (JSC::RopeBuilder::appendStringInConstruct): |
| (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): |
| (JSC::RopeBuilder::JSStringFinalizerStruct::JSStringFinalizerStruct): |
| (JSC::RopeBuilder::JSStringFinalizerStruct::): |
| * runtime/UString.cpp: |
| (JSC::UString::toStrictUInt32): |
| (JSC::equal): |
| * runtime/UString.h: |
| (JSC::UString::isEmpty): |
| (JSC::UString::size): |
| * runtime/UStringImpl.cpp: |
| (JSC::URopeImpl::derefFibersNonRecursive): |
| (JSC::URopeImpl::destructNonRecursive): |
| * runtime/UStringImpl.h: |
| (JSC::UStringOrRopeImpl::isRope): |
| (JSC::UStringOrRopeImpl::length): |
| (JSC::UStringOrRopeImpl::ref): |
| (JSC::UStringOrRopeImpl::): |
| (JSC::UStringOrRopeImpl::operator new): |
| (JSC::UStringOrRopeImpl::UStringOrRopeImpl): |
| (JSC::UStringImpl::adopt): |
| (JSC::UStringImpl::createUninitialized): |
| (JSC::UStringImpl::tryCreateUninitialized): |
| (JSC::UStringImpl::data): |
| (JSC::UStringImpl::cost): |
| (JSC::UStringImpl::deref): |
| (JSC::UStringImpl::UStringImpl): |
| (JSC::UStringImpl::): |
| (JSC::URopeImpl::tryCreateUninitialized): |
| (JSC::URopeImpl::initializeFiber): |
| (JSC::URopeImpl::fiberCount): |
| (JSC::URopeImpl::fibers): |
| (JSC::URopeImpl::deref): |
| (JSC::URopeImpl::URopeImpl): |
| (JSC::URopeImpl::hasOneRef): |
| (JSC::UStringOrRopeImpl::deref): |
| |
| 2010-02-15 Gabor Loki <loki@webkit.org> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Fix the SP at ctiOpThrowNotCaught on Thumb2 (JSVALUE32) |
| https://bugs.webkit.org/show_bug.cgi?id=34939 |
| |
| * jit/JITStubs.cpp: |
| |
| 2010-02-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by NOBODY (Build Fix!). |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2010-02-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Some general Rope related refactoring. |
| |
| Rename Rope::m_ropeLength to m_fiberCount, to be more descriptive. |
| Rename Rope::m_stringLength to simply m_length (since this is the |
| more conventional name for the length of a string). Move append |
| behaviour out into a new RopeBuilder class, so that Rope no longer |
| needs any knowledge of the JSString or UString implementation. |
| |
| Make Rope no longer be nested within JSString. |
| (Rope now no-longer need reside within JSString.h, but leaving |
| the change of moving this out to a different header as a separate |
| change from these renames). |
| |
| * JavaScriptCore.exp: |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| * runtime/JSString.cpp: |
| (JSC::Rope::destructNonRecursive): |
| (JSC::Rope::~Rope): |
| (JSC::JSString::resolveRope): |
| (JSC::JSString::toBoolean): |
| (JSC::JSString::getStringPropertyDescriptor): |
| * runtime/JSString.h: |
| (JSC::Rope::Fiber::Fiber): |
| (JSC::Rope::Fiber::deref): |
| (JSC::Rope::Fiber::ref): |
| (JSC::Rope::Fiber::refAndGetLength): |
| (JSC::Rope::Fiber::isRope): |
| (JSC::Rope::Fiber::rope): |
| (JSC::Rope::Fiber::isString): |
| (JSC::Rope::Fiber::string): |
| (JSC::Rope::Fiber::nonFiber): |
| (JSC::Rope::tryCreateUninitialized): |
| (JSC::Rope::append): |
| (JSC::Rope::fiberCount): |
| (JSC::Rope::length): |
| (JSC::Rope::fibers): |
| (JSC::Rope::Rope): |
| (JSC::Rope::operator new): |
| (JSC::): |
| (JSC::RopeBuilder::JSString): |
| (JSC::RopeBuilder::~JSString): |
| (JSC::RopeBuilder::length): |
| (JSC::RopeBuilder::canGetIndex): |
| (JSC::RopeBuilder::appendStringInConstruct): |
| (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): |
| (JSC::RopeBuilder::isRope): |
| (JSC::RopeBuilder::fiberCount): |
| (JSC::JSString::getStringPropertySlot): |
| * runtime/Operations.h: |
| (JSC::jsString): |
| |
| 2010-02-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by NOBODY (Build fix). |
| |
| Add missing cast for !YARR (PPC) builds. |
| |
| * runtime/RegExp.cpp: |
| (JSC::RegExp::match): |
| |
| 2010-02-14 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=33731 |
| Many false leaks in release builds due to PtrAndFlags |
| |
| StructureTransitionTable was effectively a smart pointer type, |
| one machine word in size and wholly contained as a member of |
| of Structure. It either pointed to an actual table, or could |
| be used to describe a single transtion entry without use of a |
| table. |
| |
| This, however, worked by using a PtrAndFlags, which is not |
| compatible with the leaks tool. Since there is no clear way to |
| obtain another bit for 'free' here, and since there are bits |
| available up in Structure, merge this functionality back up into |
| Structure. Having this in a separate class was quite clean |
| from an enacapsulation perspective, but this solution doesn't |
| seem to bad - all table access is now intermediated through the |
| Structure::structureTransitionTableFoo methods, keeping the |
| optimization fairly well contained. |
| |
| This was the last use of PtrAndFlags, so removing the file too. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * bytecode/CodeBlock.h: |
| * runtime/Structure.cpp: |
| (JSC::Structure::Structure): |
| (JSC::Structure::~Structure): |
| (JSC::Structure::addPropertyTransitionToExistingStructure): |
| (JSC::Structure::addPropertyTransition): |
| (JSC::Structure::hasTransition): |
| * runtime/Structure.h: |
| (JSC::Structure::): |
| (JSC::Structure::structureTransitionTableContains): |
| (JSC::Structure::structureTransitionTableGet): |
| (JSC::Structure::structureTransitionTableHasTransition): |
| (JSC::Structure::structureTransitionTableRemove): |
| (JSC::Structure::structureTransitionTableAdd): |
| (JSC::Structure::structureTransitionTable): |
| (JSC::Structure::setStructureTransitionTable): |
| (JSC::Structure::singleTransition): |
| (JSC::Structure::setSingleTransition): |
| * runtime/StructureTransitionTable.h: |
| * wtf/PtrAndFlags.h: Removed. |
| |
| 2010-02-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber Stamped by Geoff Garen. |
| |
| Bug 34948 - tryMakeString should fail on error in length calculation |
| |
| Ooops! - "bool overflow" argument should have been "bool& overflow". |
| |
| * runtime/UString.h: |
| (JSC::sumWithOverflow): |
| (JSC::tryMakeString): |
| |
| 2010-02-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by NOBODY (Build Fix (pt 2!)). |
| |
| Some symbol names have changed, remove, will readd if required. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2010-02-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by NOBODY (Build Fix (pt 1?)). |
| |
| Some symbol names have changed, remove, will readd if required. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2010-02-15 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Removed some mistaken code added in http://trac.webkit.org/changeset/53860. |
| |
| * API/APIShims.h: |
| (JSC::APICallbackShim::APICallbackShim): |
| (JSC::APICallbackShim::~APICallbackShim): No need to start/stop the |
| timeout checker when calling out from the API to the client; we want to |
| monitor the VM for timeouts, not the client. This mistake was harmless / |
| undetectable, since it's totally redundant with the APIEntryShim, which |
| also starts / stops the timeout checker. |
| |
| 2010-02-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Bug 34952 - String lengths in UString should be unsigned. |
| This matches WebCore::StringImpl, and better unifies behaviour throughout JSC. |
| |
| * JavaScriptCore.exp: |
| * bytecode/EvalCodeCache.h: |
| * runtime/Identifier.cpp: |
| (JSC::Identifier::equal): |
| * runtime/Identifier.h: |
| * runtime/JSGlobalObjectFunctions.cpp: |
| (JSC::globalFuncEscape): |
| * runtime/JSONObject.cpp: |
| (JSC::gap): |
| (JSC::Stringifier::indent): |
| * runtime/NumberPrototype.cpp: |
| (JSC::numberProtoFuncToFixed): |
| (JSC::numberProtoFuncToPrecision): |
| * runtime/RegExp.cpp: |
| (JSC::RegExp::match): |
| * runtime/StringPrototype.cpp: |
| (JSC::substituteBackreferencesSlow): |
| (JSC::stringProtoFuncReplace): |
| (JSC::stringProtoFuncSplit): |
| (JSC::trimString): |
| * runtime/UString.cpp: |
| (JSC::UString::UString): |
| (JSC::UString::from): |
| (JSC::UString::getCString): |
| (JSC::UString::ascii): |
| (JSC::UString::operator[]): |
| (JSC::UString::toStrictUInt32): |
| (JSC::UString::find): |
| (JSC::UString::rfind): |
| (JSC::UString::substr): |
| (JSC::operator<): |
| (JSC::operator>): |
| (JSC::compare): |
| (JSC::equal): |
| (JSC::UString::UTF8String): |
| * runtime/UString.h: |
| (JSC::UString::size): |
| (JSC::operator==): |
| * runtime/UStringImpl.cpp: |
| (JSC::UStringImpl::create): |
| * runtime/UStringImpl.h: |
| (JSC::UStringImpl::create): |
| (JSC::UStringImpl::size): |
| (JSC::UStringImpl::computeHash): |
| (JSC::UStringImpl::UStringImpl): |
| |
| 2010-02-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Bug 34948 - tryMakeString should fail on error in length calculation |
| |
| The sum of the length of substrings could overflow. |
| |
| * runtime/UString.h: |
| (JSC::sumWithOverflow): |
| (JSC::tryMakeString): |
| |
| 2010-02-15 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Fixed <rdar://problem/7628524> Crash beneath JSGlobalContextRelease when |
| typing in Google search field with GuardMalloc/full page heap enabled |
| |
| * API/JSContextRef.cpp: Don't use APIEntryShim, since that requires |
| a JSGlobalData, which this function destroys. Do use setCurrentIdentifierTable |
| and JSLock instead, since those are the two features of APIEntryShim we |
| require. |
| |
| 2010-02-15 Patrick Gansterer <paroga@paroga.com> |
| |
| Reviewed by Laszlo Gombos. |
| |
| Added additional parameter to create_rvct_stubs |
| for setting the offset of thunkReturnAddress. |
| https://bugs.webkit.org/show_bug.cgi?id=34657 |
| |
| * create_rvct_stubs: |
| * jit/JITStubs.cpp: |
| |
| 2010-02-15 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Fix QScriptValue::toIntXX methods. |
| |
| More ECMA Script compliance. |
| |
| [Qt] QScriptValue::toIntXX returns incorrect values |
| https://bugs.webkit.org/show_bug.cgi?id=34847 |
| |
| * qt/api/qscriptvalue_p.h: |
| (QScriptValuePrivate::toInteger): |
| (QScriptValuePrivate::toInt32): |
| (QScriptValuePrivate::toUInt32): |
| (QScriptValuePrivate::toUInt16): |
| * qt/tests/qscriptvalue/tst_qscriptvalue.h: |
| * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: |
| (tst_QScriptValue::toInteger_initData): |
| (tst_QScriptValue::toInteger_makeData): |
| (tst_QScriptValue::toInteger_test): |
| (tst_QScriptValue::toInt32_initData): |
| (tst_QScriptValue::toInt32_makeData): |
| (tst_QScriptValue::toInt32_test): |
| (tst_QScriptValue::toUInt32_initData): |
| (tst_QScriptValue::toUInt32_makeData): |
| (tst_QScriptValue::toUInt32_test): |
| (tst_QScriptValue::toUInt16_initData): |
| (tst_QScriptValue::toUInt16_makeData): |
| (tst_QScriptValue::toUInt16_test): |
| |
| 2010-02-14 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Adam Barth. |
| |
| Implement NEVER_INLINE and NO_RETURN for RVCT |
| https://bugs.webkit.org/show_bug.cgi?id=34740 |
| |
| * wtf/AlwaysInline.h: |
| |
| 2010-02-12 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=33731 |
| Remove uses of PtrAndFlags from JIT data stuctures. |
| |
| These break the OS X Leaks tool. Free up a bit in CallLinkInfo, and invalid |
| permutation of pointer states in MethodCallLinkInfo to represent the removed bits. |
| |
| * bytecode/CodeBlock.h: |
| (JSC::CallLinkInfo::seenOnce): |
| (JSC::CallLinkInfo::setSeen): |
| (JSC::MethodCallLinkInfo::MethodCallLinkInfo): |
| (JSC::MethodCallLinkInfo::seenOnce): |
| (JSC::MethodCallLinkInfo::setSeen): |
| * jit/JIT.cpp: |
| (JSC::JIT::unlinkCall): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::patchMethodCallProto): |
| * runtime/UString.h: |
| |
| 2010-02-12 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=33731 |
| Many false leaks in release builds due to PtrAndFlags |
| |
| Remove UntypedPtrAndBitfield (similar to PtrAndFlags) in UStringImpl, |
| and steal bits from the refCount instead. |
| |
| * runtime/UStringImpl.cpp: |
| (JSC::UStringImpl::baseSharedBuffer): |
| (JSC::UStringImpl::~UStringImpl): |
| * runtime/UStringImpl.h: |
| (JSC::UStringImpl::cost): |
| (JSC::UStringImpl::isIdentifier): |
| (JSC::UStringImpl::setIsIdentifier): |
| (JSC::UStringImpl::ref): |
| (JSC::UStringImpl::deref): |
| (JSC::UStringImpl::UStringImpl): |
| (JSC::UStringImpl::bufferOwnerString): |
| (JSC::UStringImpl::bufferOwnership): |
| (JSC::UStringImpl::isStatic): |
| (JSC::UStringImpl::): |
| |
| 2010-02-12 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Removed an unnecessary data dependency from my last patch. |
| |
| * runtime/SmallStrings.cpp: |
| (JSC::SmallStrings::markChildren): Since isAnyStringMarked being false |
| is a condition of entering the loop, we can just use '=' instead of '|='. |
| |
| 2010-02-12 Janne Koskinen <janne.p.koskinen@digia.com> |
| |
| Reviewed by Tor Arne Vestbø. |
| |
| Additional refptr/passrefptr workarounds for WINSCW compiler |
| https://bugs.webkit.org/show_bug.cgi?id=28054 |
| |
| * wtf/PassRefPtr.h: |
| (WTF::refIfNotNull): |
| (WTF::PassRefPtr::PassRefPtr): |
| (WTF::PassRefPtr::~PassRefPtr): |
| (WTF::PassRefPtr::clear): |
| (WTF::::operator): |
| * wtf/RefPtr.h: |
| (WTF::RefPtr::RefPtr): |
| (WTF::::operator): |
| |
| 2010-02-12 Janne Koskinen <janne.p.koskinen@digia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Don't import the cmath functions from std:: for WINSCW. |
| |
| * wtf/MathExtras.h: |
| |
| 2010-02-12 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Adam Barth. |
| |
| Typedef both JSChar and UChar to wchar_t in RVCT. |
| https://bugs.webkit.org/show_bug.cgi?id=34560 |
| |
| Define both JSChar and UChar to wchar_t as the size |
| of wchar_t is 2 bytes in RVCT. |
| |
| * API/JSStringRef.h: |
| * wtf/unicode/qt4/UnicodeQt4.h: |
| |
| 2010-02-11 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt and Darin Adler. |
| |
| The rest of the fix for |
| https://bugs.webkit.org/show_bug.cgi?id=34864 | <rdar://problem/7594198> |
| Many objects left uncollected after visiting mail.google.com and closing |
| window |
| |
| Don't unconditionally hang onto small strings. Instead, hang onto all |
| small strings as long as any small string is still referenced. |
| |
| SunSpider reports no change. |
| |
| * runtime/Collector.cpp: |
| (JSC::Heap::markRoots): Mark the small strings cache last, so it can |
| check if anything else has kept any strings alive. |
| |
| * runtime/SmallStrings.cpp: |
| (JSC::isMarked): |
| (JSC::SmallStrings::markChildren): Only keep our strings alive if some |
| other reference to at least one of them exists, too. |
| |
| 2010-02-11 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Some progress toward fixing |
| https://bugs.webkit.org/show_bug.cgi?id=34864 | <rdar://problem/7594198> |
| Many objects left uncollected after visiting mail.google.com and closing |
| window |
| |
| SunSpider reports no change. |
| |
| Keep weak references, rather than protected references, to cached for-in |
| property name enumerators. |
| |
| One problem with protected references is that a chain like |
| [ gc object 1 ] => [ non-gc object ] => [ gc object 2 ] |
| takes two GC passes to break, since the first pass collects [ gc object 1 ], |
| releasing [ non-gc object ] and unprotecting [ gc object 2 ], and only |
| then can a second pass collect [ gc object 2 ]. |
| |
| Another problem with protected references is that they can keep a bunch |
| of strings alive long after they're useful. In SunSpider and a few popular |
| websites, the size-speed tradeoff seems to favor weak references. |
| |
| * runtime/JSPropertyNameIterator.cpp: |
| (JSC::JSPropertyNameIterator::JSPropertyNameIterator): Moved this constructor |
| into the .cpp file, since it's not used elsewhere. |
| |
| (JSC::JSPropertyNameIterator::~JSPropertyNameIterator): Added a destructor |
| to support our weak reference. |
| |
| * runtime/JSPropertyNameIterator.h: |
| (JSC::Structure::setEnumerationCache): |
| (JSC::Structure::clearEnumerationCache): |
| (JSC::Structure::enumerationCache): Added a function for clearing a |
| Structure's enumeration cache, used by our new destructor. Also fixed |
| indentation to match the rest of the file. |
| |
| * runtime/Structure.h: Changed from protected pointer to weak pointer. |
| |
| 2010-02-11 Chris Rogers <crogers@google.com> |
| |
| Reviewed by David Levin. |
| |
| audio engine: add Complex number class |
| https://bugs.webkit.org/show_bug.cgi?id=34538 |
| |
| * wtf/Complex.h: Added. |
| (WebCore::complexFromMagnitudePhase): |
| |
| 2010-02-10 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Added an SPI for asking about all the different live objects on the heap. |
| Useful for memory debugging. |
| |
| * JavaScriptCore.exp: Export the new SPI. |
| |
| * runtime/Collector.cpp: |
| (JSC::typeName): Use a little capitalization. Don't crash in the case of |
| a non-object cell, since it might just be an uninitialized cell. |
| |
| (JSC::Heap::objectTypeCounts): The new SPI. |
| |
| * runtime/Collector.h: |
| * runtime/CollectorHeapIterator.h: |
| (JSC::CollectorHeapIterator::advance): |
| (JSC::LiveObjectIterator::operator++): |
| (JSC::DeadObjectIterator::operator++): |
| (JSC::ObjectIterator::operator++): Made 2 tweaks to these iterators: |
| (1) Skip the last cell in the block, since it's a dummy sentinel, and |
| we don't want it to confuse the object count; (2) Fixed a logic error |
| in LiveObjectIterator that could cause it to iterate dead objects if |
| m_block were equal to m_heap.nextBlock and m_cell were less than |
| m_heap.nextCell. No test for this since I can't think of a way that this |
| could make WebKit behave badly. |
| |
| 2010-02-11 Steve Block <steveblock@google.com> |
| |
| Reviewed by Darin Adler. |
| |
| Guard cmath using declarations in MathExtras.h on Android |
| https://bugs.webkit.org/show_bug.cgi?id=34840 |
| |
| Android does not provide these functions. |
| |
| * wtf/MathExtras.h: |
| |
| 2010-02-08 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by Cameron Zwarich. |
| |
| Restore ENABLE_RUBY flag so vendors can ship with Ruby disabled if they choose. |
| https://bugs.webkit.org/show_bug.cgi?id=34698 |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2010-02-10 Kevin Watters <kevinwatters@gmail.com> |
| |
| Reviewed by Kevin Ollivier. |
| |
| [wx] Add Windows complex text support and Mac support for containsCharacters. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=34759 |
| |
| * wscript: |
| |
| 2010-02-10 Alexey Proskuryakov <ap@apple.com> |
| |
| Addressing issues found by style bot. |
| |
| * wtf/ValueCheck.h: Renamed header guard to match final file name. |
| |
| * wtf/Vector.h: (WTF::::checkConsistency): Remove braces around a one-line clause. |
| |
| 2010-02-09 Alexey Proskuryakov <ap@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=34490 |
| WebCore::ImageEventSender::dispatchPendingEvents() crashes in certain conditions |
| |
| * GNUmakefile.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| Added ValueCheck.h. |
| |
| * wtf/ValueCheck.h: Added. Moved code out of HashTraits, since it would be awkward to |
| include that from Vector.h. |
| (WTF::ValueCheck::checkConsistency): Allow null pointers, those are pretty consistent. |
| |
| * wtf/HashTraits.h: Moved value checking code out of here. |
| |
| * wtf/HashTable.h: (WTF::::checkTableConsistencyExceptSize): Updated for the above changes. |
| |
| * wtf/Vector.h: |
| (WTF::::checkConsistency): Check all vector elements. |
| (WTF::ValueCheck): Support checking a Vector as an element in other containers. Currently |
| unused. |
| |
| 2010-02-10 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Fix QScriptValue::toBool. |
| |
| Fix ECMA compliance in the QScriptValue for values like 0, NaN and |
| empty strings. |
| |
| [Qt] QScriptValue::toBool problem |
| https://bugs.webkit.org/show_bug.cgi?id=34793 |
| |
| * qt/api/qscriptvalue_p.h: |
| (QScriptValuePrivate::toBool): |
| * qt/tests/qscriptvalue/tst_qscriptvalue.h: |
| * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: |
| (tst_QScriptValue::toBool_initData): |
| (tst_QScriptValue::toBool_makeData): |
| (tst_QScriptValue::toBool_test): |
| (tst_QScriptValue::toBoolean_initData): |
| (tst_QScriptValue::toBoolean_makeData): |
| (tst_QScriptValue::toBoolean_test): |
| |
| 2009-10-06 Yongjun Zhang <yongjun.zhang@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Use derefIfNotNull() to work around WINSCW compiler forward declaration bug |
| |
| The compiler bug is reported at |
| https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812. |
| |
| The change should be reverted when the above bug is fixed in WINSCW compiler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=28054 |
| |
| 2009-10-06 Yongjun Zhang <yongjun.zhang@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Get rid of WINSCW hack for UnSpecifiedBoolType |
| |
| Add parenthesis around (RefPtr::*UnspecifiedBoolType) to make the WINSCW |
| compiler work with the default UnSpecifiedBoolType() operator. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=28054 |
| |
| * wtf/RefPtr.h: |
| |
| 2010-02-09 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| New functions nullValue() and undefinedValue(). |
| |
| [Qt] QScriptEngine should contain nullValue and undefinedValue methods |
| https://bugs.webkit.org/show_bug.cgi?id=34749 |
| |
| * qt/api/qscriptengine.cpp: |
| (QScriptEngine::nullValue): |
| (QScriptEngine::undefinedValue): |
| * qt/api/qscriptengine.h: |
| * qt/tests/qscriptengine/tst_qscriptengine.cpp: |
| (tst_QScriptEngine::nullValue): |
| (tst_QScriptEngine::undefinedValue): |
| |
| 2010-02-09 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Fixes for QScriptValue::toNumber(). |
| |
| Fix ECMA compliance in QScriptValue for values unbound |
| to a QScriptEngine. |
| |
| [Qt] QScriptValue::toNumber() is broken |
| https://bugs.webkit.org/show_bug.cgi?id=34592 |
| |
| * qt/api/qscriptvalue_p.h: |
| (QScriptValuePrivate::toNumber): |
| * qt/tests/qscriptvalue/tst_qscriptvalue.h: |
| * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: |
| (tst_QScriptValue::toNumber_initData): |
| (tst_QScriptValue::toNumber_makeData): |
| (tst_QScriptValue::toNumber_test): |
| |
| 2010-02-09 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Fix QScriptValue::isNumber(). |
| |
| The isNumber() should return 'true' if the value is in the CNumber |
| state. |
| |
| [Qt] QScriptValue::isNumber() returns an incorrect value |
| https://bugs.webkit.org/show_bug.cgi?id=34575 |
| |
| * qt/api/qscriptvalue_p.h: |
| (QScriptValuePrivate::isNumber): |
| * qt/tests/qscriptvalue/tst_qscriptvalue.h: |
| * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: |
| (tst_QScriptValue::isNumber_initData): |
| (tst_QScriptValue::isNumber_makeData): |
| (tst_QScriptValue::isNumber_test): |
| |
| 2010-02-09 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Small refactoring to the small strings cache to allow it to be cleared |
| dynamically. |
| |
| * runtime/SmallStrings.cpp: |
| (JSC::SmallStrings::SmallStrings): |
| (JSC::SmallStrings::clear): |
| * runtime/SmallStrings.h: Moved initialization code into a shared function, |
| and changed the constructor to call it. |
| |
| 2010-02-09 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber Stamped by Geoff Garen. |
| |
| Rename StringBuilder::release && JSStringBuilder::releaseJSString |
| to 'build()'. |
| |
| * runtime/ArrayPrototype.cpp: |
| (JSC::arrayProtoFuncToLocaleString): |
| (JSC::arrayProtoFuncJoin): |
| * runtime/Executable.cpp: |
| (JSC::FunctionExecutable::paramString): |
| * runtime/FunctionConstructor.cpp: |
| (JSC::constructFunction): |
| * runtime/JSGlobalObjectFunctions.cpp: |
| (JSC::encode): |
| (JSC::decode): |
| (JSC::globalFuncEscape): |
| (JSC::globalFuncUnescape): |
| * runtime/JSONObject.cpp: |
| (JSC::Stringifier::stringify): |
| * runtime/JSStringBuilder.h: |
| (JSC::JSStringBuilder::build): |
| * runtime/LiteralParser.cpp: |
| (JSC::LiteralParser::Lexer::lexString): |
| * runtime/NumberPrototype.cpp: |
| (JSC::integerPartNoExp): |
| (JSC::numberProtoFuncToFixed): |
| * runtime/StringBuilder.h: |
| (JSC::StringBuilder::build): |
| |
| 2010-02-09 John Sullivan <sullivan@apple.com> |
| |
| https://bugs.webkit.org/show_bug.cgi?id=34772 |
| Overzealous new assertion in URStringImpl::adopt() |
| |
| Reviewed by Adam Barth. |
| |
| * runtime/UStringImpl.h: |
| (JSC::UStringImpl::adopt): |
| Only assert that vector.data() is non-zero if vector.size() is non-zero. |
| |
| 2010-02-09 Nikolas Zimmermann <nzimmermann@rim.com> |
| |
| Not reviewed. Try to fix build problem on SnowLeopard slaves to bring them back. |
| |
| * API/JSClassRef.cpp: |
| (tryCreateStringFromUTF8): Mark method as 'static inline' to suppress "warning: no previous prototype for ..." |
| |
| 2010-02-09 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Three small string fixes: |
| (1) StringBuilder::release should CRASH if the buffer allocation failed. |
| (2) Remove weird, dead code from JSString::tryGetValue, replace with an ASSERT. |
| (3) Move UString::createFromUTF8 out to the API, as tryCreateStringFromUTF8. |
| This is only used from the API, and (now) unlike other UString::create |
| methods may return UString::null() to indicate failure cases. Better |
| handle these in the API. |
| |
| * API/JSClassRef.cpp: |
| (tryCreateStringFromUTF8): |
| (OpaqueJSClass::OpaqueJSClass): |
| (OpaqueJSClassContextData::OpaqueJSClassContextData): |
| * runtime/JSString.h: |
| (JSC::Fiber::tryGetValue): |
| * runtime/StringBuilder.h: |
| (JSC::StringBuilder::release): |
| * runtime/UString.cpp: |
| (JSC::UString::UString): |
| (JSC::UString::from): |
| (JSC::UString::find): |
| * runtime/UString.h: |
| |
| 2010-02-09 Janne Koskinen <janne.p.koskinen@digia.com> |
| |
| Reviewed by Laszlo Gombos. |
| |
| [Qt] use nanval() for Symbian as nonInlineNaN |
| https://bugs.webkit.org/show_bug.cgi?id=34170 |
| |
| numeric_limits<double>::quiet_NaN is broken in Symbian |
| causing NaN to be evaluated as a number. |
| |
| * runtime/JSValue.cpp: |
| (JSC::nonInlineNaN): |
| |
| 2010-02-09 Tamas Szirbucz <szirbucz@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Add a soft modulo operation to ARM JIT using a trampoline function. |
| The performance progression is about ~1.8% on ARMv7 |
| https://bugs.webkit.org/show_bug.cgi?id=34424 |
| |
| Developed in cooperation with Gabor Loki. |
| |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_mod): |
| (JSC::JIT::emitSlow_op_mod): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::softModulo): |
| * jit/JITStubs.h: |
| (JSC::JITThunks::ctiSoftModulo): |
| * wtf/Platform.h: |
| |
| 2010-02-08 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by NOBODY (SL/win build fixes). |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * runtime/StringPrototype.cpp: |
| |
| 2010-02-08 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt |
| |
| Make String.replace throw an exception on out-of-memory, rather than |
| returning a null (err, empty-ish) string. Move String::replaceRange |
| and String::spliceSubstringsWithSeparators out to StringPrototype - |
| these were fairly specific use anyway, and we can better integrate |
| throwing the JS expcetion this way. |
| |
| Also removes redundant assignment operator from UString. |
| |
| * JavaScriptCore.exp: |
| * runtime/StringPrototype.cpp: |
| (JSC::StringRange::StringRange): |
| (JSC::jsSpliceSubstringsWithSeparators): |
| (JSC::jsReplaceRange): |
| (JSC::stringProtoFuncReplace): |
| * runtime/UString.cpp: |
| * runtime/UString.h: |
| |
| 2010-02-08 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Eric Seidel. |
| |
| [BREWMP] Undefine WTF_OS_WINDOWS and WTF_PLATFORM_WIN |
| https://bugs.webkit.org/show_bug.cgi?id=34561 |
| |
| As the binary for simulator is built with MSVC 2005, |
| WTF_OS_WINDOWS and WTF_PLATFORM_WIN are defined. |
| Undefine them as we don't target Windows. |
| |
| * wtf/Platform.h: |
| |
| 2010-02-08 Chris Rogers <crogers@google.com> |
| |
| Reviewed by Darin Adler. |
| |
| audio engine: add Vector3 class |
| https://bugs.webkit.org/show_bug.cgi?id=34548 |
| |
| * wtf/Vector3.h: Added. |
| (WebCore::Vector3::Vector3): |
| (WebCore::Vector3::abs): |
| (WebCore::Vector3::isZero): |
| (WebCore::Vector3::normalize): |
| (WebCore::Vector3::x): |
| (WebCore::Vector3::y): |
| (WebCore::Vector3::z): |
| (WebCore::operator+): |
| (WebCore::operator-): |
| (WebCore::operator*): |
| (WebCore::dot): |
| (WebCore::cross): |
| (WebCore::distance): |
| |
| 2010-02-08 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Fix warning in clang++ |
| |
| * runtime/Structure.h: |
| (JSC::Structure::propertyStorageSize): |
| |
| 2010-02-08 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Make makeString CRASH if we fail to allocate a string. |
| |
| (tryMakeString or jsMakeNontrivialString can be used where we |
| expect allocation may fail and want to handle the error). |
| |
| * runtime/JSStringBuilder.h: |
| (JSC::jsMakeNontrivialString): |
| * runtime/UString.h: |
| (JSC::tryMakeString): |
| (JSC::makeString): |
| |
| 2010-02-08 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber Stamped by Oliver Hunt. |
| |
| Remove a couple of unnecesary C-style casts spotted by Darin. |
| |
| * runtime/JSGlobalObjectFunctions.cpp: |
| (JSC::encode): |
| (JSC::globalFuncEscape): |
| |
| 2010-02-08 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Switch some more StringBuilder/jsNontrivialString code to use |
| JSStringBuilder/jsMakeNontrivialString - these methods will |
| throw an exception if we hit out-of-memory, rather than just |
| CRASHing. |
| |
| * runtime/FunctionPrototype.cpp: |
| (JSC::functionProtoFuncToString): |
| * runtime/JSGlobalObjectFunctions.cpp: |
| (JSC::encode): |
| (JSC::decode): |
| (JSC::globalFuncEscape): |
| |
| 2010-02-08 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Use an empty identifier instead of a null identifier for parse |
| tokens without an identifier. |
| |
| This helps encapsulate the null UStringImpl within UString. |
| |
| * parser/Grammar.y: |
| * parser/NodeConstructors.h: |
| (JSC::ContinueNode::ContinueNode): |
| (JSC::BreakNode::BreakNode): |
| (JSC::ForInNode::ForInNode): |
| * runtime/CommonIdentifiers.cpp: |
| (JSC::CommonIdentifiers::CommonIdentifiers): |
| * runtime/CommonIdentifiers.h: |
| * runtime/FunctionPrototype.cpp: |
| (JSC::FunctionPrototype::FunctionPrototype): |
| |
| 2010-02-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> |
| |
| Build fix for make distcheck. |
| |
| * GNUmakefile.am: |
| |
| 2010-02-08 Simon Hausmann <simon.hausmann@nokia.com> |
| |
| Unreviewed RVCT build fix. |
| |
| Similar to r54391, don't import the cmath functions from std:: for RVCT. |
| |
| * wtf/MathExtras.h: |
| |
| 2010-02-05 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Change UStringImpl::create to CRASH if the string cannot be allocated, |
| rather than returning a null string (which will behave like a zero-length |
| string if used). |
| |
| Also move createRep function from UString to become new overloaded |
| UStringImpl::create methods. In doing so, bring their behaviour closer to |
| being in line with WebCore::StringImpl, in removing the behaviour that they |
| can be used to produce null UStrings (ASSERT the char* provided is non-null). |
| This behaviour of converting null C-strings to null UStrings is inefficient |
| (cmompared to just using UString::null()), incompatible with WebCore::StringImpl's |
| behaviour, and may generate unexpected behaviour, since in many cases a null |
| UString can be used like an empty string. |
| |
| With these changes UStringImpl need not have a concept of null impls, we can |
| start transitioning this to become an implementation detail of UString, that |
| internally it chooses to use a null-object rather than an actually zero impl |
| pointer. |
| |
| * JavaScriptCore.exp: |
| * debugger/Debugger.cpp: |
| (JSC::Debugger::recompileAllJSFunctions): |
| * debugger/DebuggerCallFrame.cpp: |
| (JSC::DebuggerCallFrame::calculatedFunctionName): |
| * parser/Parser.cpp: |
| (JSC::Parser::parse): |
| * profiler/Profile.cpp: |
| (JSC::Profile::Profile): |
| * profiler/ProfileGenerator.cpp: |
| (JSC::ProfileGenerator::stopProfiling): |
| * runtime/Error.cpp: |
| (JSC::Error::create): |
| (JSC::throwError): |
| * runtime/ExceptionHelpers.cpp: |
| (JSC::createError): |
| * runtime/Identifier.cpp: |
| (JSC::Identifier::add): |
| * runtime/PropertyNameArray.cpp: |
| (JSC::PropertyNameArray::add): |
| * runtime/UString.cpp: |
| (JSC::initializeUString): |
| (JSC::UString::UString): |
| (JSC::UString::operator=): |
| * runtime/UString.h: |
| (JSC::UString::isNull): |
| (JSC::UString::null): |
| (JSC::UString::rep): |
| (JSC::UString::UString): |
| * runtime/UStringImpl.cpp: |
| (JSC::UStringImpl::create): |
| * runtime/UStringImpl.h: |
| |
| 2010-02-05 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Eric Seidel. |
| |
| [BREWMP] Define SYSTEM_MALLOC 1 |
| https://bugs.webkit.org/show_bug.cgi?id=34640 |
| |
| Make BREWMP use system malloc because FastMalloc is not ported. |
| |
| * wtf/Platform.h: |
| |
| 2010-02-05 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Don't call CRASH() in fastMalloc and fastCalloc when the requested memory size is 0 |
| https://bugs.webkit.org/show_bug.cgi?id=34569 |
| |
| With USE_SYSTEM_MALLOC=1, fastMalloc and fastCalloc call CRASH() |
| if the return value of malloc and calloc is 0. |
| |
| However, these functions can return 0 when the request size is 0. |
| Libc manual says, "If size is 0, then malloc() returns either NULL, |
| or a unique pointer value that can later be successfully passed to free()." |
| Though malloc returns a unique pointer in most systems, |
| 0 can be returned in some systems. For instance, BREW's MALLOC returns 0 |
| when size is 0. |
| |
| If malloc or calloc returns 0 due to allocation size, increase the size |
| to 1 and try again. |
| |
| * wtf/FastMalloc.cpp: |
| (WTF::fastMalloc): |
| (WTF::fastCalloc): |
| |
| 2010-02-04 Mark Rowe <mrowe@apple.com> |
| |
| Reviewed by Timothy Hatcher. |
| |
| Build fix. Remove a symbol corresponding to an inline function from the linker export |
| file to prevent a weak external failure. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: Accommodate rename of script. |
| |
| 2010-02-04 Daniel Bates <dbates@webkit.org> |
| |
| [Qt] Unreviewed, build fix for Qt bot. |
| |
| * runtime/JSStringBuilder.h: Changed #include <X.h> notation #include "X.h". |
| |
| 2010-02-04 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Clearing a WeakGCPtr is weird |
| https://bugs.webkit.org/show_bug.cgi?id=34627 |
| |
| Added a WeakGCPtr::clear interface. |
| |
| As discussed in https://bugs.webkit.org/show_bug.cgi?id=33383, the old |
| interface made it pretty weird for a client to conditionally clear a |
| WeakGCPtr, which is exactly what clients want to do when objects are |
| finalized. |
| |
| * API/JSClassRef.cpp: |
| (clearReferenceToPrototype): Use the new WeakGCPtr::clear() interface. |
| |
| * runtime/WeakGCPtr.h: |
| (JSC::WeakGCPtr::clear): Added an interface for clearing a WeakGCPtr, |
| iff its current value is the value passed in. It's cumbersome for the |
| client to do this test, since WeakGCPtr sometimes pretends to be null. |
| |
| 2010-02-04 Geoffrey Garen <ggaren@apple.com> |
| |
| Build fix: export a header. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2010-02-04 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Add a JSStringBuilder class (similar-to, and derived-from StringBuilder) to |
| construct JSStrings, throwing a JS exception should we run out of memory whilst |
| allocating storage for the string. |
| |
| Similarly, add jsMakeNontrivialString methods to use in cases where previously |
| we were calling makeString & passing the result to jsNontrivialString. Again, |
| these new methods throw if we hit an out of memory condition. |
| |
| Move throwOutOfMemoryError into ExceptionHelpers, to make it more widely available. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * runtime/ArrayPrototype.cpp: |
| (JSC::arrayProtoFuncToString): |
| (JSC::arrayProtoFuncToLocaleString): |
| (JSC::arrayProtoFuncJoin): |
| * runtime/DateConstructor.cpp: |
| (JSC::callDate): |
| * runtime/DatePrototype.cpp: |
| (JSC::dateProtoFuncToString): |
| (JSC::dateProtoFuncToUTCString): |
| (JSC::dateProtoFuncToGMTString): |
| * runtime/ErrorPrototype.cpp: |
| (JSC::errorProtoFuncToString): |
| * runtime/ExceptionHelpers.cpp: |
| (JSC::throwOutOfMemoryError): |
| * runtime/ExceptionHelpers.h: |
| * runtime/JSStringBuilder.h: Added. |
| (JSC::JSStringBuilder::releaseJSString): |
| (JSC::jsMakeNontrivialString): |
| * runtime/NumberPrototype.cpp: |
| (JSC::numberProtoFuncToPrecision): |
| * runtime/ObjectPrototype.cpp: |
| (JSC::objectProtoFuncToString): |
| * runtime/Operations.cpp: |
| * runtime/Operations.h: |
| * runtime/RegExpPrototype.cpp: |
| (JSC::regExpProtoFuncToString): |
| * runtime/StringBuilder.h: |
| (JSC::StringBuilder::append): |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncBig): |
| (JSC::stringProtoFuncSmall): |
| (JSC::stringProtoFuncBlink): |
| (JSC::stringProtoFuncBold): |
| (JSC::stringProtoFuncFixed): |
| (JSC::stringProtoFuncItalics): |
| (JSC::stringProtoFuncStrike): |
| (JSC::stringProtoFuncSub): |
| (JSC::stringProtoFuncSup): |
| (JSC::stringProtoFuncFontcolor): |
| (JSC::stringProtoFuncFontsize): |
| (JSC::stringProtoFuncAnchor): |
| |
| 2010-02-04 Steve Falkenburg <sfalken@apple.com> |
| |
| Windows build fix. |
| |
| * wtf/MathExtras.h: |
| |
| 2010-02-04 Darin Adler <darin@apple.com> |
| |
| Reviewed by David Levin. |
| |
| Make MathExtras.h compatible with <cmath> |
| https://bugs.webkit.org/show_bug.cgi?id=34618 |
| |
| * wtf/MathExtras.h: Include <cmath> instead of <math.h>. |
| Use "using" as we do elsewhere in WTF for the four functions from <cmath> |
| we want to use without the prefix. Later we could consider making the std |
| explicit at call sites instead. |
| |
| 2010-02-04 Tamas Szirbucz <szirbucz@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Use an easily appendable structure for trampolines instead of pointer parameters. |
| https://bugs.webkit.org/show_bug.cgi?id=34424 |
| |
| * assembler/ARMAssembler.cpp: |
| (JSC::ARMAssembler::executableCopy): |
| * jit/JIT.h: |
| (JSC::JIT::compileCTIMachineTrampolines): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::JITThunks): |
| * jit/JITStubs.h: |
| (JSC::JITThunks::ctiStringLengthTrampoline): |
| (JSC::JITThunks::ctiVirtualCallLink): |
| (JSC::JITThunks::ctiVirtualCall): |
| (JSC::JITThunks::ctiNativeCallThunk): |
| |
| 2010-02-04 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Increase test coverage for the QScriptValue. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=34533 |
| |
| * qt/tests/qscriptvalue/qscriptvalue.pro: |
| * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: |
| (tst_QScriptValue::tst_QScriptValue): |
| (tst_QScriptValue::~tst_QScriptValue): |
| (tst_QScriptValue::dataHelper): |
| (tst_QScriptValue::newRow): |
| (tst_QScriptValue::testHelper): |
| (tst_QScriptValue::ctor): |
| * qt/tests/qscriptvalue/tst_qscriptvalue.h: Added. |
| * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: Added. |
| (tst_QScriptValue::initScriptValues): |
| (tst_QScriptValue::isValid_initData): |
| (tst_QScriptValue::isValid_makeData): |
| (tst_QScriptValue::isValid_test): |
| (tst_QScriptValue::isBool_initData): |
| (tst_QScriptValue::isBool_makeData): |
| (tst_QScriptValue::isBool_test): |
| (tst_QScriptValue::isBoolean_initData): |
| (tst_QScriptValue::isBoolean_makeData): |
| (tst_QScriptValue::isBoolean_test): |
| (tst_QScriptValue::isFunction_initData): |
| (tst_QScriptValue::isFunction_makeData): |
| (tst_QScriptValue::isFunction_test): |
| (tst_QScriptValue::isNull_initData): |
| (tst_QScriptValue::isNull_makeData): |
| (tst_QScriptValue::isNull_test): |
| (tst_QScriptValue::isString_initData): |
| (tst_QScriptValue::isString_makeData): |
| (tst_QScriptValue::isString_test): |
| (tst_QScriptValue::isUndefined_initData): |
| (tst_QScriptValue::isUndefined_makeData): |
| (tst_QScriptValue::isUndefined_test): |
| (tst_QScriptValue::isObject_initData): |
| (tst_QScriptValue::isObject_makeData): |
| (tst_QScriptValue::isObject_test): |
| |
| 2010-02-03 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Eric Seidel. |
| |
| [BREWMP] Define WTF_PLATFORM_BREWMP_SIMULATOR when AEE_SIMULATOR is defined |
| https://bugs.webkit.org/show_bug.cgi?id=34514 |
| |
| PLATFORM(BREWMP_SIMULATOR) guard is needed to make distinction between BREWMP |
| and BREWMP simulator. |
| |
| * wtf/Platform.h: |
| |
| 2010-02-03 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Eric Seidel. |
| |
| [BREWMP] Remove COMPILE_ASSERT conflict with the underlying PLATFORM |
| https://bugs.webkit.org/show_bug.cgi?id=34190 |
| |
| COMPILE_ASSERT conflicts with the underlying PLATFORM because it is defined |
| both in WTF's Assertions.h and BREWMP's AEEClassIDs.h. Include AEEClassIDs.h |
| in Assertions.h and undef COMPILE_ASSERT to avoid redefining COMPILE_ASSERT. |
| |
| * wtf/Assertions.h: |
| |
| 2010-02-03 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Eric Seidel. |
| |
| [BREWMP] Implement OwnPtrBrew to make sure BREW instances are freed. |
| https://bugs.webkit.org/show_bug.cgi?id=34518 |
| |
| Add OwnPtrBrew to release IFile, IFileMgr and IBitmap instances. |
| |
| * wtf/brew/OwnPtrBrew.cpp: Added. |
| (WTF::IFileMgr): |
| (WTF::IFile): |
| (WTF::IBitmap): |
| (WTF::freeOwnedPtrBrew): |
| * wtf/brew/OwnPtrBrew.h: Added. |
| (WTF::OwnPtrBrew::OwnPtrBrew): |
| (WTF::OwnPtrBrew::~OwnPtrBrew): |
| (WTF::OwnPtrBrew::get): |
| (WTF::OwnPtrBrew::release): |
| (WTF::OwnPtrBrew::outPtr): |
| (WTF::OwnPtrBrew::set): |
| (WTF::OwnPtrBrew::clear): |
| (WTF::OwnPtrBrew::operator*): |
| (WTF::OwnPtrBrew::operator->): |
| (WTF::OwnPtrBrew::operator!): |
| (WTF::OwnPtrBrew::operator UnspecifiedBoolType): |
| (WTF::OwnPtrBrew::swap): |
| (WTF::swap): |
| (WTF::operator==): |
| (WTF::operator!=): |
| (WTF::getPtr): |
| |
| 2010-02-03 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Darin Adler. |
| |
| Export WTF::fastStrDup symbol |
| https://bugs.webkit.org/show_bug.cgi?id=34526 |
| |
| * JavaScriptCore.exp: |
| |
| 2010-02-03 Kevin Watters <kevinwatters@gmail.com> |
| |
| Reviewed by Kevin Ollivier. |
| |
| [wx] Enable JIT compilation for wx. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=34536 |
| |
| * wtf/Platform.h: |
| |
| 2010-02-02 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Crash in CollectorBitmap::get at nbcolympics.com |
| https://bugs.webkit.org/show_bug.cgi?id=34504 |
| |
| This was caused by the use of m_offset to determine the offset of |
| a new property into the property storage. This patch corrects |
| the effected cases by incorporating the anonymous slot count. It |
| also removes the duplicate copy of anonymous slot count from the |
| property table as keeping this up to date merely increased the |
| chance of a mismatch. Finally I've added a large number of |
| assertions in an attempt to prevent such a bug from happening |
| again. |
| |
| With the new assertions in place the existing anonymous slot tests |
| all fail without the m_offset fixes. |
| |
| * runtime/PropertyMapHashTable.h: |
| * runtime/Structure.cpp: |
| (JSC::Structure::materializePropertyMap): |
| (JSC::Structure::addPropertyTransitionToExistingStructure): |
| (JSC::Structure::addPropertyTransition): |
| (JSC::Structure::removePropertyTransition): |
| (JSC::Structure::flattenDictionaryStructure): |
| (JSC::Structure::addPropertyWithoutTransition): |
| (JSC::Structure::removePropertyWithoutTransition): |
| (JSC::Structure::copyPropertyTable): |
| (JSC::Structure::get): |
| (JSC::Structure::put): |
| (JSC::Structure::remove): |
| (JSC::Structure::insertIntoPropertyMapHashTable): |
| (JSC::Structure::createPropertyMapHashTable): |
| (JSC::Structure::rehashPropertyMapHashTable): |
| (JSC::Structure::checkConsistency): |
| |
| 2010-02-02 Steve Falkenburg <sfalken@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Copyright year updating for Windows version resources should be automatic |
| https://bugs.webkit.org/show_bug.cgi?id=34503 |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: |
| |
| 2010-02-02 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Eric Seidel. |
| |
| [BREWMP] Add dummy main thread functions |
| https://bugs.webkit.org/show_bug.cgi?id=33569 |
| |
| Add dummy initializeMainThreadPlatform and |
| scheduleDispatchFunctionsOnMainThread. |
| |
| * wtf/brew/MainThreadBrew.cpp: Added. |
| (WTF::initializeMainThreadPlatform): |
| (WTF::scheduleDispatchFunctionsOnMainThread): |
| |
| 2010-02-02 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Darin Adler. |
| |
| Add using WTF::getLocalTime to CurrentTime.h |
| https://bugs.webkit.org/show_bug.cgi?id=34493 |
| |
| * wtf/CurrentTime.h: |
| |
| 2010-02-02 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Eric Seidel. |
| |
| [BREWMP] Add HAVE_XXX definitions |
| https://bugs.webkit.org/show_bug.cgi?id=34414 |
| |
| Add HAVE_ERRNO_H=1 |
| |
| * wtf/Platform.h: |
| |
| 2010-02-02 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Eric Seidel. |
| |
| [BREWMP] Don't define HAVE_TM_GMTOFF, HAVE_TM_ZONE and HAVE_TIMEGM |
| https://bugs.webkit.org/show_bug.cgi?id=34388 |
| |
| BREWMP does not have these features. |
| |
| * wtf/Platform.h: |
| |
| 2010-02-02 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Eric Seidel. |
| |
| [BREWMP] Define WTF_PLATFORM_BREWMP=1 when BUILDING_BREWMP is defined |
| https://bugs.webkit.org/show_bug.cgi?id=34386 |
| |
| Define WTF_PLATFORM_BREWMP=1 so that PLATFORM(BREWMP) guard can be used. |
| |
| * wtf/Platform.h: |
| |
| 2010-02-01 Kent Tamura <tkent@chromium.org> |
| |
| Reviewed by Darin Adler. |
| |
| Date.UTC() should apply TimeClip operation. |
| https://bugs.webkit.org/show_bug.cgi?id=34461 |
| |
| ECMAScript 5 15.9.4.3: |
| > 9 Return TimeClip(MakeDate(MakeDay(yr, m, dt), MakeTime(h, min, s, milli))). |
| |
| * runtime/DateConstructor.cpp: |
| (JSC::dateUTC): Calls WTF::timeClip(). |
| |
| 2010-02-01 Kent Tamura <tkent@chromium.org> |
| |
| Reviewed by Darin Adler. |
| |
| Fix a bug that Math.round() retunrs incorrect results for huge integers |
| https://bugs.webkit.org/show_bug.cgi?id=34462 |
| |
| * runtime/MathObject.cpp: |
| (JSC::mathProtoFuncRound): Avoid "arg + 0.5". |
| |
| 2010-02-01 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Eric Seidel. |
| |
| [BREWMP] Port WTF's currentTime |
| https://bugs.webkit.org/show_bug.cgi?id=33567 |
| |
| Combine GETUTCSECONDS and GETTIMEMS to calculate the number |
| of milliseconds since 1970/01/01 00:00:00 UTC. |
| |
| * wtf/CurrentTime.cpp: |
| (WTF::currentTime): |
| |
| 2010-02-01 Patrick Gansterer <paroga@paroga.com> |
| |
| Reviewed by Darin Adler. |
| |
| [Qt] WinCE buildfix after r52729 and fix for Q_BIG_ENDIAN typo. |
| https://bugs.webkit.org/show_bug.cgi?id=34378 |
| |
| * wtf/Platform.h: |
| |
| 2010-02-01 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Structure not accounting for anonymous slots when computing property storage size |
| https://bugs.webkit.org/show_bug.cgi?id=34441 |
| |
| Previously any Structure with anonymous storage would have a property map, so we |
| were only including anonymous slot size if there was a property map. Given this |
| is no longer the case we should always include the anonymous slot count in the |
| property storage size. |
| |
| * runtime/Structure.h: |
| (JSC::Structure::propertyStorageSize): |
| |
| 2010-02-01 Oliver Hunt <oliver@apple.com> |
| |
| Windows build fix, update exports file (again) |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2010-02-01 Oliver Hunt <oliver@apple.com> |
| |
| Windows build fix, update exports file |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2010-01-31 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| JSC is failing to propagate anonymous slot count on some transitions |
| https://bugs.webkit.org/show_bug.cgi?id=34321 |
| |
| Remove secondary Structure constructor, and make Structure store a copy |
| of the number of anonymous slots directly so saving an immediate allocation |
| of a property map for all structures with anonymous storage, which also |
| avoids the leaked property map on new property transition in the original |
| version of this patch. |
| |
| We need to propagate the the anonymous slot count otherwise we can end up |
| with a structure recording incorrect information about the available and |
| needed space for property storage, or alternatively incorrectly reusing |
| some slots. |
| |
| * JavaScriptCore.exp: |
| * runtime/Structure.cpp: |
| (JSC::Structure::Structure): |
| (JSC::Structure::materializePropertyMap): |
| (JSC::Structure::addPropertyTransition): |
| (JSC::Structure::changePrototypeTransition): |
| (JSC::Structure::despecifyFunctionTransition): |
| (JSC::Structure::getterSetterTransition): |
| (JSC::Structure::toDictionaryTransition): |
| (JSC::Structure::flattenDictionaryStructure): |
| (JSC::Structure::copyPropertyTable): |
| (JSC::Structure::put): |
| (JSC::Structure::remove): |
| (JSC::Structure::insertIntoPropertyMapHashTable): |
| (JSC::Structure::createPropertyMapHashTable): |
| * runtime/Structure.h: |
| (JSC::Structure::create): |
| (JSC::Structure::hasAnonymousSlots): |
| (JSC::Structure::anonymousSlotCount): |
| |
| 2010-01-31 Patrick Gansterer <paroga@paroga.com> |
| |
| Reviewed by Darin Adler. |
| |
| Buildfix for WinCE + style fixes (TLS_OUT_OF_INDEXES is not defined). |
| https://bugs.webkit.org/show_bug.cgi?id=34380 |
| |
| * wtf/ThreadSpecific.h: |
| |
| 2010-01-31 Kent Tamura <tkent@chromium.org> |
| |
| Reviewed by Darin Adler. |
| |
| [Windows] Fix a bug of round() with huge integral numbers |
| https://bugs.webkit.org/show_bug.cgi?id=34297 |
| |
| Fix a bug that round() for huge integral numbers returns incorrect |
| results. For example, round(8639999913600001) returns |
| 8639999913600002 without this change though the double type can |
| represent 8639999913600001 precisely. |
| |
| Math.round() of JavaScript has a similar problem. But this change |
| doesn't fix it because Math.round() doesn't use round() of |
| MathExtra.h. |
| |
| * wtf/MathExtras.h: |
| (round): Avoid to do "num + 0.5" or "num - 0.5". |
| (roundf): Fixed similarly. |
| (llround): Calls round(). |
| (llroundf): Calls roundf(). |
| (lround): Calls round(). |
| (lroundf): Calls roundf(). |
| |
| 2010-01-29 Mark Rowe <mrowe@apple.com> |
| |
| Sort Xcode projects. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2010-01-29 Mark Rowe <mrowe@apple.com> |
| |
| Fix the Mac build. |
| |
| Disable ENABLE_INDEXED_DATABASE since it is "completely non-functional". |
| |
| As the comment in FeatureDefines.xcconfig notes, the list of feature defines |
| needs to be kept in sync across the various files. The default values also |
| need to be kept in sync between these files and build-webkit. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2010-01-29 Simon Hausmann <simon.hausmann@nokia.com> |
| |
| Rubber-stamped by Maciej Stachowiak. |
| |
| Fix the ARM build. |
| |
| * runtime/JSNumberCell.h: |
| (JSC::JSNumberCell::createStructure): Call the right Structure::create overload. |
| |
| 2010-01-28 Kevin Ollivier <kevino@theolliviers.com> |
| |
| [wx] Build fix for MSW, use ThreadingWin.cpp as the Windows pthreads implementation |
| implements pthread_t in a way that makes it impossible to check its validity, |
| which is needed by ThreadingPthreads.cpp. |
| |
| * wscript: |
| |
| 2010-01-28 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| DOM Objects shouldn't all require custom mark functions |
| https://bugs.webkit.org/show_bug.cgi?id=34291 |
| |
| Make getAnonymousValue const-friendly |
| |
| * runtime/JSObject.h: |
| (JSC::JSObject::getAnonymousValue): |
| |
| 2010-01-28 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Simplify anonymous slot implementation |
| https://bugs.webkit.org/show_bug.cgi?id=34282 |
| |
| A class must now specify the number of slots it needs at construction time |
| rather than later on with a transition. This makes many things simpler, |
| we no longer need to need an additional transition on object creation to |
| add the anonymous slots, and we remove the need for a number of transition |
| type checks. |
| |
| * API/JSCallbackConstructor.h: |
| (JSC::JSCallbackConstructor::createStructure): |
| * API/JSCallbackFunction.h: |
| (JSC::JSCallbackFunction::createStructure): |
| * API/JSCallbackObject.h: |
| (JSC::JSCallbackObject::createStructure): |
| * JavaScriptCore.exp: |
| * debugger/DebuggerActivation.h: |
| (JSC::DebuggerActivation::createStructure): |
| * runtime/Arguments.h: |
| (JSC::Arguments::createStructure): |
| * runtime/BooleanObject.h: |
| (JSC::BooleanObject::createStructure): |
| * runtime/DateInstance.h: |
| (JSC::DateInstance::createStructure): |
| * runtime/DatePrototype.h: |
| (JSC::DatePrototype::createStructure): |
| * runtime/FunctionPrototype.h: |
| (JSC::FunctionPrototype::createStructure): |
| * runtime/GetterSetter.h: |
| (JSC::GetterSetter::createStructure): |
| * runtime/GlobalEvalFunction.h: |
| (JSC::GlobalEvalFunction::createStructure): |
| * runtime/InternalFunction.h: |
| (JSC::InternalFunction::createStructure): |
| * runtime/JSAPIValueWrapper.h: |
| (JSC::JSAPIValueWrapper::createStructure): |
| * runtime/JSActivation.h: |
| (JSC::JSActivation::createStructure): |
| * runtime/JSArray.h: |
| (JSC::JSArray::createStructure): |
| * runtime/JSByteArray.cpp: |
| (JSC::JSByteArray::createStructure): |
| * runtime/JSCell.h: |
| (JSC::JSCell::createDummyStructure): |
| * runtime/JSFunction.h: |
| (JSC::JSFunction::createStructure): |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::createStructure): |
| * runtime/JSNotAnObject.h: |
| (JSC::JSNotAnObject::createStructure): |
| * runtime/JSONObject.h: |
| (JSC::JSONObject::createStructure): |
| * runtime/JSObject.h: |
| (JSC::JSObject::createStructure): |
| (JSC::JSObject::putAnonymousValue): |
| (JSC::JSObject::getAnonymousValue): |
| * runtime/JSPropertyNameIterator.h: |
| (JSC::JSPropertyNameIterator::createStructure): |
| * runtime/JSStaticScopeObject.h: |
| (JSC::JSStaticScopeObject::createStructure): |
| * runtime/JSString.h: |
| (JSC::Fiber::createStructure): |
| * runtime/JSVariableObject.h: |
| (JSC::JSVariableObject::createStructure): |
| * runtime/JSWrapperObject.h: |
| (JSC::JSWrapperObject::createStructure): |
| (JSC::JSWrapperObject::JSWrapperObject): |
| * runtime/MathObject.h: |
| (JSC::MathObject::createStructure): |
| * runtime/NumberConstructor.h: |
| (JSC::NumberConstructor::createStructure): |
| * runtime/NumberObject.h: |
| (JSC::NumberObject::createStructure): |
| * runtime/RegExpConstructor.h: |
| (JSC::RegExpConstructor::createStructure): |
| * runtime/RegExpObject.h: |
| (JSC::RegExpObject::createStructure): |
| * runtime/StringObject.h: |
| (JSC::StringObject::createStructure): |
| * runtime/StringObjectThatMasqueradesAsUndefined.h: |
| (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): |
| * runtime/Structure.cpp: |
| (JSC::Structure::~Structure): |
| (JSC::Structure::materializePropertyMap): |
| * runtime/Structure.h: |
| (JSC::Structure::create): |
| (JSC::Structure::anonymousSlotCount): |
| * runtime/StructureTransitionTable.h: |
| |
| 2010-01-27 Oliver Hunt <oliver@apple.com> |
| |
| Windows build fix. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2010-01-27 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| MessageEvent.data should deserialize in the context of the MessageEvent's global object |
| https://bugs.webkit.org/show_bug.cgi?id=34227 |
| |
| Add logic to allow us to create an Object, Array, or Date instance |
| so we can create them in the context of a specific global object, |
| rather than just using the current lexical global object. |
| |
| * JavaScriptCore.exp: |
| * runtime/DateInstance.cpp: |
| (JSC::DateInstance::DateInstance): |
| * runtime/DateInstance.h: |
| * runtime/JSGlobalObject.h: |
| (JSC::constructEmptyObject): |
| (JSC::constructEmptyArray): |
| |
| 2010-01-27 Alexey Proskuryakov <ap@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=34150 |
| WebKit needs a mechanism to catch stale HashMap entries |
| |
| It is very difficult to catch stale pointers that are HashMap keys - since a pointer's hash |
| is just its value, it is very unlikely that any observable problem is reproducible. |
| |
| This extends hash table consistency checks to check that pointers are referencing allocated |
| memory blocks, and makes it possible to invoke the checks explicitly (it is not feasible |
| to enable CHECK_HASHTABLE_CONSISTENCY by default, because that affects performance too much). |
| |
| * wtf/HashMap.h: (WTF::::checkConsistency): Call through to HashTable implementation. We can |
| add similar calls to HashSet and HashCountedSet, but I haven't seen hard to debug problems |
| with those yet. |
| |
| * wtf/HashSet.h: (WTF::::remove): The version of checkTableConsistency that's guarded by |
| CHECK_HASHTABLE_CONSISTENCY is now called internalCheckTableConsistency(). |
| |
| * wtf/HashTable.h: |
| (WTF::HashTable::internalCheckTableConsistency): |
| (WTF::HashTable::internalCheckTableConsistencyExceptSize): |
| (WTF::HashTable::checkTableConsistencyExceptSize): |
| Expose checkTableConsistency() even if CHECK_HASHTABLE_CONSISTENCY is off. |
| (WTF::::add): Updated for checkTableConsistency renaming. |
| (WTF::::addPassingHashCode): Ditto. |
| (WTF::::removeAndInvalidate): Ditto. |
| (WTF::::remove): Ditto. |
| (WTF::::rehash): Ditto. |
| (WTF::::checkTableConsistency): The assertion for !shouldExpand() was not correct - this |
| function returns true for tables with m_table == 0. |
| (WTF::::checkTableConsistencyExceptSize): Call checkValueConsistency for key. Potentially, |
| we could do the same for values. |
| |
| * wtf/HashTraits.h: |
| (WTF::GenericHashTraits::checkValueConsistency): An empty function that can be overridden |
| to add checks. Currently, the only override is for pointer hashes. |
| |
| * wtf/RefPtrHashMap.h: (WTF::::remove): Updated for checkTableConsistency renaming. |
| |
| 2010-01-27 Anton Muhin <antonm@chromium.org> |
| |
| Reviewed by Darin Adler. |
| |
| Remove trailing \ from inline function code |
| https://bugs.webkit.org/show_bug.cgi?id=34223 |
| |
| * assembler/ARMv7Assembler.h: |
| (JSC::ARMThumbImmediate::countLeadingZerosPartial): |
| |
| 2010-01-27 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Eric Seidel. |
| |
| [BREWMP] Port WTF's randomNumber |
| https://bugs.webkit.org/show_bug.cgi?id=33566 |
| |
| Use GETRAND to generate 4 byte random byte sequence to implement |
| weakRandomNumber. Create a secure random number generator with |
| AEECLSID_RANDOM to implement randomNumber. |
| |
| * wtf/RandomNumber.cpp: |
| (WTF::weakRandomNumber): |
| (WTF::randomNumber): |
| |
| 2010-01-27 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Eric Seidel. |
| |
| [BREWMP] Port getCPUTime |
| https://bugs.webkit.org/show_bug.cgi?id=33572 |
| |
| Use GETUPTIMEMS which returns a continuously and |
| linearly increasing millisecond timer from the time the device |
| was powered on. This function is enough to implement getCPUTime. |
| |
| * runtime/TimeoutChecker.cpp: |
| (JSC::getCPUTime): |
| |
| 2010-01-27 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Oliver Hunt. |
| |
| [BREWMP] Add MarkStack fastMalloc implementation for platforms without VirtualAlloc or mmap. |
| https://bugs.webkit.org/show_bug.cgi?id=33582 |
| |
| Use fastMalloc and fastFree to implement MarkStack::allocateStack and |
| MarkStack::releaseStack for platforms without page level allocation. |
| |
| * runtime/MarkStack.h: |
| (JSC::MarkStack::MarkStackArray::shrinkAllocation): |
| * runtime/MarkStackNone.cpp: Added. |
| (JSC::MarkStack::initializePagesize): |
| (JSC::MarkStack::allocateStack): |
| (JSC::MarkStack::releaseStack): |
| |
| 2010-01-27 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Eric Seidel. |
| |
| [BREWMP] Don't use time function |
| https://bugs.webkit.org/show_bug.cgi?id=33577 |
| |
| Calling time(0) in BREW devices causes a crash because time |
| is not properly ported in most devices. Cast currentTime() to |
| time_t to get the same result as time(0). |
| |
| * wtf/DateMath.cpp: |
| (WTF::calculateUTCOffset): |
| |
| 2010-01-27 Alexey Proskuryakov <ap@apple.com> |
| |
| Revert r53899 (HashMap<AtomicStringImpl*, Value> key checks) and subsequent build fixes, |
| because they make SVG tests crash in release builds. |
| |
| * wtf/HashMap.h: |
| (WTF::::remove): |
| * wtf/HashSet.h: |
| (WTF::::remove): |
| * wtf/HashTable.h: |
| (WTF::::add): |
| (WTF::::addPassingHashCode): |
| (WTF::::removeAndInvalidate): |
| (WTF::::remove): |
| (WTF::::rehash): |
| (WTF::::checkTableConsistency): |
| (WTF::::checkTableConsistencyExceptSize): |
| * wtf/HashTraits.h: |
| (WTF::GenericHashTraits::emptyValue): |
| (WTF::): |
| * wtf/RefPtrHashMap.h: |
| (WTF::::remove): |
| |
| 2010-01-26 Alexey Proskuryakov <ap@apple.com> |
| |
| More Windows build fixing. |
| |
| * wtf/HashTraits.h: _msize takes void*, remove const qualifier from type. |
| |
| 2010-01-26 Alexey Proskuryakov <ap@apple.com> |
| |
| Windows build fix. |
| |
| * wtf/HashTraits.h: Include malloc.h for _msize(). |
| |
| 2010-01-26 Alexey Proskuryakov <ap@apple.com> |
| |
| Build fix. |
| |
| * wtf/HashTable.h: (WTF::HashTable::checkTableConsistencyExceptSize): Remove const from a |
| static (empty) version of this function. |
| |
| 2010-01-26 Alexey Proskuryakov <ap@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=34150 |
| WebKit needs a mechanism to catch stale HashMap entries |
| |
| It is very difficult to catch stale pointers that are HashMap keys - since a pointer's hash |
| is just its value, it is very unlikely that any observable problem is reproducible. |
| |
| This extends hash table consistency checks to check that pointers are referencing allocated |
| memory blocks, and makes it possible to invoke the checks explicitly (it is not feasible |
| to enable CHECK_HASHTABLE_CONSISTENCY by default, because that affects performance too much). |
| |
| * wtf/HashMap.h: (WTF::::checkConsistency): Call through to HashTable implementation. We can |
| add similar calls to HashSet and HashCountedSet, but I haven't seen hard to debug problems |
| with those yet. |
| |
| * wtf/HashSet.h: (WTF::::remove): The version of checkTableConsistency that's guarded by |
| CHECK_HASHTABLE_CONSISTENCY is now called internalCheckTableConsistency(). |
| |
| * wtf/HashTable.h: |
| (WTF::HashTable::internalCheckTableConsistency): |
| (WTF::HashTable::internalCheckTableConsistencyExceptSize): |
| (WTF::HashTable::checkTableConsistencyExceptSize): |
| Expose checkTableConsistency() even if CHECK_HASHTABLE_CONSISTENCY is off. |
| (WTF::::add): Updated for checkTableConsistency renaming. |
| (WTF::::addPassingHashCode): Ditto. |
| (WTF::::removeAndInvalidate): Ditto. |
| (WTF::::remove): Ditto. |
| (WTF::::rehash): Ditto. |
| (WTF::::checkTableConsistency): The assertion for !shouldExpand() was not correct - this |
| function returns true for tables with m_table == 0. |
| (WTF::::checkTableConsistencyExceptSize): Call checkValueConsistency for key. Potentially, |
| we could do the same for values. |
| |
| * wtf/HashTraits.h: |
| (WTF::GenericHashTraits::checkValueConsistency): An empty function that can be overridden |
| to add checks. Currently, the only override is for pointer hashes. |
| |
| * wtf/RefPtrHashMap.h: (WTF::::remove): Updated for checkTableConsistency renaming. |
| |
| 2010-01-26 Lyon Chen <liachen@rim.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Opcode.h use const void* for Opcode cause error #1211 for RVCT compiler |
| https://bugs.webkit.org/show_bug.cgi?id=33902 |
| |
| * bytecode/Opcode.h: |
| |
| 2010-01-26 Steve Falkenburg <sfalken@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Windows build references non-existent include paths |
| https://bugs.webkit.org/show_bug.cgi?id=34175 |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: |
| * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: |
| * JavaScriptCore.vcproj/testapi/testapi.vcproj: |
| * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: |
| |
| 2010-01-26 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Using JavaScriptCore API with a webkit vended context can result in slow script dialog |
| https://bugs.webkit.org/show_bug.cgi?id=34172 |
| |
| Make the APIShim correctly increment and decrement the timeout |
| entry counter. |
| |
| * API/APIShims.h: |
| (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): |
| (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock): |
| (JSC::APICallbackShim::APICallbackShim): |
| (JSC::APICallbackShim::~APICallbackShim): |
| |
| 2010-01-26 Simon Hausmann <simon.hausmann@nokia.com> |
| |
| [Qt] Fix compilation of QtScript with non-gcc compilers |
| |
| Variable length stack arrays are a gcc extension. Use QVarLengthArray |
| as a more portable solution that still tries to allocate on the stack |
| first. |
| |
| * qt/api/qscriptvalue_p.h: |
| (QScriptValuePrivate::call): |
| |
| 2010-01-26 Simon Hausmann <simon.hausmann@nokia.com> |
| |
| Reviewed by Tor Arne Vestbø. |
| |
| [Qt] Fix the build on platforms without JIT support. |
| |
| The JIT support should be determined at compile-time via wtf/Platform.h |
| |
| * qt/api/QtScript.pro: |
| |
| 2010-01-26 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| First steps of the QtScript API. |
| |
| Two new classes were created; QScriptEngine and QScriptValue. |
| The first should encapsulate a javascript context and the second a script |
| value. |
| |
| This API is still in development, so it isn't compiled by default. |
| To trigger compilation, pass --qmakearg="CONFIG+=build-qtscript" to |
| build-webkit. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=32565 |
| |
| * qt/api/QtScript.pro: Added. |
| * qt/api/qscriptconverter_p.h: Added. |
| (QScriptConverter::toString): |
| * qt/api/qscriptengine.cpp: Added. |
| (QScriptEngine::QScriptEngine): |
| (QScriptEngine::~QScriptEngine): |
| (QScriptEngine::evaluate): |
| (QScriptEngine::collectGarbage): |
| * qt/api/qscriptengine.h: Added. |
| * qt/api/qscriptengine_p.cpp: Added. |
| (QScriptEnginePrivate::QScriptEnginePrivate): |
| (QScriptEnginePrivate::~QScriptEnginePrivate): |
| (QScriptEnginePrivate::evaluate): |
| * qt/api/qscriptengine_p.h: Added. |
| (QScriptEnginePrivate::get): |
| (QScriptEnginePrivate::collectGarbage): |
| (QScriptEnginePrivate::makeJSValue): |
| (QScriptEnginePrivate::context): |
| * qt/api/qscriptvalue.cpp: Added. |
| (QScriptValue::QScriptValue): |
| (QScriptValue::~QScriptValue): |
| (QScriptValue::isValid): |
| (QScriptValue::isBool): |
| (QScriptValue::isBoolean): |
| (QScriptValue::isNumber): |
| (QScriptValue::isNull): |
| (QScriptValue::isString): |
| (QScriptValue::isUndefined): |
| (QScriptValue::isError): |
| (QScriptValue::isObject): |
| (QScriptValue::isFunction): |
| (QScriptValue::toString): |
| (QScriptValue::toNumber): |
| (QScriptValue::toBool): |
| (QScriptValue::toBoolean): |
| (QScriptValue::toInteger): |
| (QScriptValue::toInt32): |
| (QScriptValue::toUInt32): |
| (QScriptValue::toUInt16): |
| (QScriptValue::call): |
| (QScriptValue::engine): |
| (QScriptValue::operator=): |
| (QScriptValue::equals): |
| (QScriptValue::strictlyEquals): |
| * qt/api/qscriptvalue.h: Added. |
| (QScriptValue::): |
| * qt/api/qscriptvalue_p.h: Added. |
| (QScriptValuePrivate::): |
| (QScriptValuePrivate::get): |
| (QScriptValuePrivate::QScriptValuePrivate): |
| (QScriptValuePrivate::isValid): |
| (QScriptValuePrivate::isBool): |
| (QScriptValuePrivate::isNumber): |
| (QScriptValuePrivate::isNull): |
| (QScriptValuePrivate::isString): |
| (QScriptValuePrivate::isUndefined): |
| (QScriptValuePrivate::isError): |
| (QScriptValuePrivate::isObject): |
| (QScriptValuePrivate::isFunction): |
| (QScriptValuePrivate::toString): |
| (QScriptValuePrivate::toNumber): |
| (QScriptValuePrivate::toBool): |
| (QScriptValuePrivate::toInteger): |
| (QScriptValuePrivate::toInt32): |
| (QScriptValuePrivate::toUInt32): |
| (QScriptValuePrivate::toUInt16): |
| (QScriptValuePrivate::equals): |
| (QScriptValuePrivate::strictlyEquals): |
| (QScriptValuePrivate::assignEngine): |
| (QScriptValuePrivate::call): |
| (QScriptValuePrivate::engine): |
| (QScriptValuePrivate::context): |
| (QScriptValuePrivate::value): |
| (QScriptValuePrivate::object): |
| (QScriptValuePrivate::inherits): |
| (QScriptValuePrivate::isJSBased): |
| (QScriptValuePrivate::isNumberBased): |
| (QScriptValuePrivate::isStringBased): |
| * qt/api/qtscriptglobal.h: Added. |
| * qt/tests/qscriptengine/qscriptengine.pro: Added. |
| * qt/tests/qscriptengine/tst_qscriptengine.cpp: Added. |
| (tst_QScriptEngine::tst_QScriptEngine): |
| (tst_QScriptEngine::~tst_QScriptEngine): |
| (tst_QScriptEngine::init): |
| (tst_QScriptEngine::cleanup): |
| (tst_QScriptEngine::collectGarbage): |
| (tst_QScriptEngine::evaluate): |
| * qt/tests/qscriptvalue/qscriptvalue.pro: Added. |
| * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: Added. |
| (tst_QScriptValue::tst_QScriptValue): |
| (tst_QScriptValue::~tst_QScriptValue): |
| (tst_QScriptValue::init): |
| (tst_QScriptValue::cleanup): |
| (tst_QScriptValue::ctor): |
| (tst_QScriptValue::toString_data): |
| (tst_QScriptValue::toString): |
| (tst_QScriptValue::copyConstructor_data): |
| (tst_QScriptValue::copyConstructor): |
| (tst_QScriptValue::assignOperator_data): |
| (tst_QScriptValue::assignOperator): |
| (tst_QScriptValue::dataSharing): |
| (tst_QScriptValue::constructors_data): |
| (tst_QScriptValue::constructors): |
| (tst_QScriptValue::call): |
| * qt/tests/tests.pri: Added. |
| * qt/tests/tests.pro: Added. |
| |
| 2010-01-25 Dmitry Titov <dimich@chromium.org> |
| |
| Reviewed by David Levin. |
| |
| Fix Chromium Linux tests: the pthread functions on Linux produce segfault if they receive 0 thread handle. |
| After r53714, we can have 0 thread handles passed to pthread_join and pthread_detach if corresponding threads |
| were already terminated and their threadMap entries cleared. |
| Add a 0 check. |
| |
| * wtf/ThreadingPthreads.cpp: |
| (WTF::waitForThreadCompletion): |
| (WTF::detachThread): |
| |
| 2010-01-24 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Refactor JITStubs.cpp so that DEFINE_STUB_FUNCTION is only used once for each function |
| https://bugs.webkit.org/show_bug.cgi?id=33866 |
| |
| Place the guard USE(JSVALUE32_64) inside the body of the DEFINE_STUB_FUNCTION |
| macro for those functions that are always present. |
| |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| |
| 2010-01-22 Kevin Watters <kevinwatters@gmail.com> |
| |
| Reviewed by Kevin Ollivier. |
| |
| [wx] Remove the Bakefile build system, which is no longer being used. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=34022 |
| |
| * JavaScriptCoreSources.bkl: Removed. |
| * jscore.bkl: Removed. |
| |
| 2010-01-22 Steve Falkenburg <sfalken@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=34025 |
| Enable client-based Geolocation abstraction for Mac, Windows AppleWebKit targets. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2010-01-22 Dmitry Titov <dimich@chromium.org> |
| |
| Not reviewed, attempted Snow Leopard build fix. |
| |
| * wtf/ThreadingPthreads.cpp: Add a forward declaration of a function which is not 'static'. |
| |
| 2009-01-22 Dmitry Titov <dimich@chromium.org> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Fix the leak of ThreadIdentifiers in threadMap across threads. |
| https://bugs.webkit.org/show_bug.cgi?id=32689 |
| |
| Test is added to DumpRenderTree.mm. |
| |
| * Android.mk: Added file ThreadIdentifierDataPthreads.(h|cpp) to build. |
| * Android.v8.wtf.mk: Ditto. |
| * GNUmakefile.am: Ditto. |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: Ditto. |
| * JavaScriptCore.gypi: Ditto. |
| * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. |
| |
| * wtf/ThreadIdentifierDataPthreads.cpp: Added. Contains custom implementation of thread-specific data that uses custom destructor. |
| (WTF::ThreadIdentifierData::~ThreadIdentifierData): Removes the ThreadIdentifier from the threadMap. |
| (WTF::ThreadIdentifierData::identifier): |
| (WTF::ThreadIdentifierData::initialize): |
| (WTF::ThreadIdentifierData::destruct): Custom thread-specific destructor. Resets the value for the key again to cause second invoke. |
| (WTF::ThreadIdentifierData::initializeKeyOnceHelper): |
| (WTF::ThreadIdentifierData::initializeKeyOnce): Need to use pthread_once since initialization may come on any thread(s). |
| * wtf/ThreadIdentifierDataPthreads.h: Added. |
| (WTF::ThreadIdentifierData::ThreadIdentifierData): |
| |
| * wtf/Threading.cpp: |
| (WTF::threadEntryPoint): Move initializeCurrentThreadInternal to after the lock to make |
| sure it is invoked when ThreadIdentifier is already established. |
| |
| * wtf/Threading.h: Rename setThreadNameInternal -> initializeCurrentThreadInternal since it does more then only set the name now. |
| * wtf/ThreadingNone.cpp: |
| (WTF::initializeCurrentThreadInternal): Ditto. |
| * wtf/ThreadingWin.cpp: |
| (WTF::initializeCurrentThreadInternal): Ditto. |
| (WTF::initializeThreading): Ditto. |
| * wtf/gtk/ThreadingGtk.cpp: |
| (WTF::initializeCurrentThreadInternal): Ditto. |
| * wtf/qt/ThreadingQt.cpp: |
| (WTF::initializeCurrentThreadInternal): Ditto. |
| |
| * wtf/ThreadingPthreads.cpp: |
| (WTF::establishIdentifierForPthreadHandle): |
| (WTF::clearPthreadHandleForIdentifier): Make it not 'static' so the ~ThreadIdentifierData() in another file can call it. |
| (WTF::initializeCurrentThreadInternal): Set the thread-specific data. The ThreadIdentifier is already established by creating thread. |
| (WTF::waitForThreadCompletion): Remove call to clearPthreadHandleForIdentifier(threadID) since it is now done in ~ThreadIdentifierData(). |
| (WTF::detachThread): Ditto. |
| (WTF::currentThread): Use the thread-specific data to get the ThreadIdentifier. It's many times faster then Mutex-protected iteration through the map. |
| Also, set the thread-specific data if called first time on the thread. |
| |
| 2010-01-21 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Add ThreadSpecific for ENABLE(SINGLE_THREADED) |
| https://bugs.webkit.org/show_bug.cgi?id=33878 |
| |
| Implement ThreadSpecific with a simple getter/setter |
| when ENABLE(SINGLE_THREADED) is true. |
| |
| Due to the change in https://bugs.webkit.org/show_bug.cgi?id=33236, |
| an implementation of ThreadSpecific must be available to build WebKit. |
| This causes a build failure for platforms without a proper |
| ThreadSpecific implementation. |
| |
| * wtf/ThreadSpecific.h: |
| (WTF::::ThreadSpecific): |
| (WTF::::~ThreadSpecific): |
| (WTF::::get): |
| (WTF::::set): |
| (WTF::::destroy): |
| |
| 2010-01-21 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Add fastStrDup to FastMalloc |
| https://bugs.webkit.org/show_bug.cgi?id=33937 |
| |
| The new string returned by fastStrDup is obtained with fastMalloc, |
| and can be freed with fastFree. This makes the memory management |
| more consistent because we don't need to keep strdup allocated pointers |
| and free them with free(). Instead we can use fastFree everywhere. |
| |
| * wtf/FastMalloc.cpp: |
| (WTF::fastStrDup): |
| * wtf/FastMalloc.h: |
| |
| 2010-01-21 Brady Eidson <beidson@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| history.back() for same-document history traversals isn't synchronous as the specification states. |
| <rdar://problem/7535011> and https://bugs.webkit.org/show_bug.cgi?id=33538 |
| |
| * wtf/Platform.h: Add a "HISTORY_ALWAYS_ASYNC" enable and turn it on for Chromium. |
| |
| 2010-01-21 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Always create a prototype for automatically managed classes. |
| |
| This fixes some errors where prototype chains were not correctly hooked |
| up, and also ensures that API classes work correctly with features like |
| instanceof. |
| |
| * API/JSClassRef.cpp: |
| (OpaqueJSClass::create): Cleaned up some of this code. Also changed it |
| to always create a prototype class. |
| |
| * API/tests/testapi.c: |
| (Derived2_class): |
| (main): Fixed a null value crash in the exception checking code. |
| * API/tests/testapi.js: Added some tests for the case where a prototype |
| chain would not be hooked up correctly. |
| |
| 2010-01-21 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Force JSC to create a prototype chain for API classes with a |
| parent class but no static functions. |
| |
| * API/JSClassRef.cpp: |
| (OpaqueJSClass::create): |
| |
| 2010-01-21 Kent Hansen <kent.hansen@nokia.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Object.getOwnPropertyDescriptor always returns undefined for JS API objects |
| https://bugs.webkit.org/show_bug.cgi?id=33946 |
| |
| Ideally the getOwnPropertyDescriptor() reimplementation should return an |
| access descriptor that wraps the property getter and setter callbacks, but |
| that approach is much more involved than returning a value descriptor. |
| Keep it simple for now. |
| |
| * API/JSCallbackObject.h: |
| * API/JSCallbackObjectFunctions.h: |
| (JSC::::getOwnPropertyDescriptor): |
| * API/tests/testapi.js: |
| |
| 2010-01-20 Mark Rowe <mrowe@apple.com> |
| |
| Build fix. |
| |
| * wtf/FastMalloc.cpp: |
| (WTF::TCMalloc_PageHeap::initializeScavenger): Remove unnecessary function call. |
| |
| 2010-01-20 Mark Rowe <mrowe@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Use the inline i386 assembly for x86_64 as well rather than falling back to using pthread mutexes. |
| |
| * wtf/TCSpinLock.h: |
| (TCMalloc_SpinLock::Lock): |
| (TCMalloc_SpinLock::Unlock): |
| (TCMalloc_SlowLock): |
| |
| 2010-01-20 Mark Rowe <mrowe@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| <rdar://problem/7215063> Use GCD instead of an extra thread for FastMalloc scavenging on platforms where it is supported |
| |
| Abstract the background scavenging slightly so that an alternate implementation that uses GCD can be used on platforms |
| where it is supported. |
| |
| * wtf/FastMalloc.cpp: |
| (WTF::TCMalloc_PageHeap::init): |
| (WTF::TCMalloc_PageHeap::initializeScavenger): |
| (WTF::TCMalloc_PageHeap::signalScavenger): |
| (WTF::TCMalloc_PageHeap::shouldContinueScavenging): |
| (WTF::TCMalloc_PageHeap::Delete): |
| (WTF::TCMalloc_PageHeap::periodicScavenge): |
| * wtf/Platform.h: |
| |
| 2010-01-20 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| <rdar://problem/7562708> REGRESSION(53460): Heap::destroy may not run |
| all destructors |
| |
| * runtime/Collector.cpp: |
| (JSC::Heap::freeBlocks): Instead of fully marking protected objects, |
| just set their mark bits. This prevents protected objects from keeping |
| unprotected objects alive. Destructor order is not guaranteed, so it's |
| OK to destroy objects pointed to by protected objects before destroying |
| protected objects. |
| |
| 2010-01-19 David Levin <levin@chromium.org> |
| |
| Reviewed by Oliver Hunt. |
| |
| CrossThreadCopier needs to support ThreadSafeShared better. |
| https://bugs.webkit.org/show_bug.cgi?id=33698 |
| |
| * wtf/TypeTraits.cpp: Added tests for the new type traits. |
| * wtf/TypeTraits.h: |
| (WTF::IsSubclass): Determines if a class is a derived from another class. |
| (WTF::IsSubclassOfTemplate): Determines if a class is a derived from a |
| template class (with one parameter that is unknown). |
| (WTF::RemoveTemplate): Reveals the type for a template parameter. |
| |
| 2010-01-20 Steve Falkenburg <sfalken@apple.com> |
| |
| Reviewed by Darin Adler and Adam Roben. |
| |
| Feature defines are difficult to maintain on Windows builds |
| https://bugs.webkit.org/show_bug.cgi?id=33883 |
| |
| FeatureDefines.vsprops are now maintained in a way similar to |
| Configurations/FeatureDefines.xcconfig, with the added advantage |
| of having a single FeatureDefines file across all projects. |
| |
| * Configurations/FeatureDefines.xcconfig: Add comments about keeping feature definitions in sync. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add FeatureDefines.vsprops inherited property sheet. |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add FeatureDefines.vsprops inherited property sheet. |
| |
| 2010-01-20 Csaba Osztrogonác <ossy@webkit.org> |
| |
| [Qt] Unreviewed buildfix for r53547. |
| |
| * DerivedSources.pro: |
| |
| 2010-01-20 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| [Qt] Make extraCompilers for generated sources depend on their scripts |
| |
| * DerivedSources.pro: |
| |
| 2010-01-19 Brian Weinstein <bweinstein@apple.com> |
| |
| Reviewed by Tim Hatcher. |
| |
| When JavaScriptCore calls Debugger::Exception, have it pass a |
| hasHandler variable that represents if exception is being handled |
| in the same function (not in a parent on the call stack). |
| |
| This just adds a new parameter, no behavior is changed. |
| |
| * debugger/Debugger.h: |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::throwException): |
| |
| 2010-01-18 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by Adam Barth. |
| |
| Inline functions that are hot in DOM manipulation |
| https://bugs.webkit.org/show_bug.cgi?id=33820 |
| |
| (3% speedup on Dromaeo DOM Core tests) |
| |
| * runtime/WeakGCMap.h: |
| (JSC::::get): inline |
| |
| 2010-01-19 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Unreviewed build fix for JIT with RVCT. |
| |
| Remove IMPORT statement; cti_vm_throw is already defined in JITStubs.h. |
| Remove extra ')'. |
| |
| * jit/JITStubs.cpp: |
| (JSC::ctiVMThrowTrampoline): |
| |
| 2010-01-19 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| REGRESSION (52082): Crash on worker thread when reloading http://radnan.public.iastate.edu/procedural/ |
| https://bugs.webkit.org/show_bug.cgi?id=33826 |
| |
| This bug was caused by a GC-protected object being destroyed early by |
| Heap::destroy. Clients of the GC protect APIs (reasonably) expect pointers |
| to GC-protected memory to be valid. |
| |
| The solution is to do two passes of tear-down in Heap::destroy. The first |
| pass tears down all unprotected objects. The second pass ASSERTs that all |
| previously protected objects are now unprotected, and then tears down |
| all perviously protected objects. These two passes simulate the two passes |
| that would have been required to free a protected object during normal GC. |
| |
| * API/JSContextRef.cpp: Removed some ASSERTs that have moved into Heap. |
| |
| * runtime/Collector.cpp: |
| (JSC::Heap::destroy): Moved ASSERTs to here. |
| (JSC::Heap::freeBlock): Tidied up the use of didShrink by moving its |
| setter to the function that does the shrinking. |
| (JSC::Heap::freeBlocks): Implemented above algorithm. |
| (JSC::Heap::shrinkBlocks): Tidied up the use of didShrink. |
| |
| 2010-01-19 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by NOBODY (build fix). |
| |
| Reverting r53455, breaks 2 javascriptcore tests. |
| |
| * API/JSContextRef.cpp: |
| * runtime/Collector.cpp: |
| (JSC::Heap::destroy): |
| (JSC::Heap::freeBlock): |
| (JSC::Heap::freeBlocks): |
| (JSC::Heap::shrinkBlocks): |
| |
| 2010-01-18 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by NOBODY (build fix). |
| |
| Revert r53454, since it causes much sadness in this world. |
| |
| * runtime/UString.cpp: |
| (JSC::UString::spliceSubstringsWithSeparators): |
| (JSC::UString::replaceRange): |
| * runtime/UStringImpl.cpp: |
| (JSC::UStringImpl::baseSharedBuffer): |
| (JSC::UStringImpl::sharedBuffer): |
| (JSC::UStringImpl::~UStringImpl): |
| * runtime/UStringImpl.h: |
| (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield): |
| (JSC::UntypedPtrAndBitfield::asPtr): |
| (JSC::UntypedPtrAndBitfield::operator&=): |
| (JSC::UntypedPtrAndBitfield::operator|=): |
| (JSC::UntypedPtrAndBitfield::operator&): |
| (JSC::UStringImpl::create): |
| (JSC::UStringImpl::cost): |
| (JSC::UStringImpl::isIdentifier): |
| (JSC::UStringImpl::setIsIdentifier): |
| (JSC::UStringImpl::ref): |
| (JSC::UStringImpl::deref): |
| (JSC::UStringImpl::checkConsistency): |
| (JSC::UStringImpl::UStringImpl): |
| (JSC::UStringImpl::bufferOwnerString): |
| (JSC::UStringImpl::bufferOwnership): |
| (JSC::UStringImpl::isStatic): |
| * wtf/StringHashFunctions.h: |
| (WTF::stringHash): |
| |
| 2010-01-18 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| REGRESSION (52082): Crash on worker thread when reloading http://radnan.public.iastate.edu/procedural/ |
| https://bugs.webkit.org/show_bug.cgi?id=33826 |
| |
| This bug was caused by a GC-protected object being destroyed early by |
| Heap::destroy. Clients of the GC protect APIs (reasonably) expect pointers |
| to GC-protected memory to be valid. |
| |
| The solution is to do two passes of tear-down in Heap::destroy. The first |
| pass tears down all unprotected objects. The second pass ASSERTs that all |
| previously protected objects are now unprotected, and then tears down |
| all perviously protected objects. These two passes simulate the two passes |
| that would have been required to free a protected object during normal GC. |
| |
| * API/JSContextRef.cpp: Removed some ASSERTs that have moved into Heap. |
| |
| * runtime/Collector.cpp: |
| (JSC::Heap::destroy): Moved ASSERTs to here. |
| (JSC::Heap::freeBlock): Tidied up the use of didShrink by moving its |
| setter to the function that does the shrinking. |
| (JSC::Heap::freeBlocks): Implemented above algorithm. |
| (JSC::Heap::shrinkBlocks): Tidied up the use of didShrink. |
| |
| 2010-01-18 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=33731 |
| Remove UntypedPtrAndBitfield from UStringImpl (akin to PtrAndFlags). |
| |
| This break the OS X Leaks tool. Instead, free up some more bits from the refCount. |
| |
| * runtime/UStringImpl.cpp: |
| (JSC::UStringImpl::sharedBuffer): |
| (JSC::UStringImpl::~UStringImpl): |
| * runtime/UStringImpl.h: |
| (JSC::UStringImpl::cost): |
| (JSC::UStringImpl::checkConsistency): |
| (JSC::UStringImpl::UStringImpl): |
| (JSC::UStringImpl::bufferOwnerString): |
| (JSC::UStringImpl::): |
| * wtf/StringHashFunctions.h: |
| (WTF::stringHash): |
| |
| 2010-01-18 Kent Tamura <tkent@chromium.org> |
| |
| Reviewed by Darin Adler. |
| |
| HTMLInputElement::valueAsDate setter support for type=month. |
| https://bugs.webkit.org/show_bug.cgi?id=33021 |
| |
| Expose the following functions to be used by WebCore: |
| - WTF::msToyear() |
| - WTF::dayInYear() |
| - WTF::monthFromDayInYear() |
| - WTF::dayInMonthFromDayInYear() |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * wtf/DateMath.cpp: |
| (WTF::msToYear): Remove "static inline". |
| (WTF::dayInYear): Remove "static inline". |
| (WTF::monthFromDayInYear): Remove "static inline". |
| (WTF::dayInMonthFromDayInYear): Remove "static inline". |
| * wtf/DateMath.h: Declare the above functions. |
| |
| 2010-01-18 Darin Adler <darin@apple.com> |
| |
| Fix build by reverting the previous change. |
| |
| * runtime/UString.h: Rolled out the FastAllocBase base class. |
| It was making UString larger, and therefore JSString larger, |
| and too big for a garbage collection cell. |
| |
| This raises the unpleasant possibility that many classes became |
| larger because we added the FastAllocBase base class. I am |
| worried about this, and it needs to be investigated. |
| |
| 2010-01-18 Zoltan Horvath <zoltan@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| Allow custom memory allocation control for UString class |
| https://bugs.webkit.org/show_bug.cgi?id=27831 |
| |
| Inherits the following class from FastAllocBase because it is |
| instantiated by 'new' and no need to be copyable: |
| |
| class name - instantiated at: |
| classs UString - JavaScriptCore/runtime/UString.cpp:160 |
| |
| * runtime/UString.h: |
| |
| 2010-01-18 Evan Cheng <evan.cheng@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Add some ALWAYS_INLINE for key functions not inlined by some versions of GCC. |
| rdar://problem/7553780 |
| |
| * runtime/JSObject.h: |
| (JSC::JSObject::getPropertySlot): ALWAYS_INLINE both overloads. |
| * runtime/JSString.h: |
| (JSC::JSString::JSString): ALWAYS_INLINE the version that takes a UString. |
| * runtime/UString.h: |
| (JSC::operator==): ALWAYS_INLINE the version that compares two UString objects. |
| |
| 2010-01-18 Csaba Osztrogonác <ossy@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| Delete dftables-xxxxxxxx.in files automatically. |
| https://bugs.webkit.org/show_bug.cgi?id=33796 |
| |
| * pcre/dftables: unlink unnecessary temporary file. |
| |
| 2010-01-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| [Qt] Force qmake to generate a single makefile for DerivedSources.pro |
| |
| * DerivedSources.pro: |
| |
| 2010-01-18 Csaba Osztrogonác <ossy@webkit.org> |
| |
| Rubber-stamped by Gustavo Noronha Silva. |
| |
| Rolling out r53391 and r53392 because of random crashes on buildbots. |
| https://bugs.webkit.org/show_bug.cgi?id=33731 |
| |
| * bytecode/CodeBlock.h: |
| (JSC::CallLinkInfo::seenOnce): |
| (JSC::CallLinkInfo::setSeen): |
| (JSC::MethodCallLinkInfo::MethodCallLinkInfo): |
| (JSC::MethodCallLinkInfo::seenOnce): |
| (JSC::MethodCallLinkInfo::setSeen): |
| * jit/JIT.cpp: |
| (JSC::JIT::unlinkCall): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::patchMethodCallProto): |
| * runtime/UString.cpp: |
| (JSC::UString::spliceSubstringsWithSeparators): |
| (JSC::UString::replaceRange): |
| * runtime/UString.h: |
| * runtime/UStringImpl.cpp: |
| (JSC::UStringImpl::baseSharedBuffer): |
| (JSC::UStringImpl::sharedBuffer): |
| (JSC::UStringImpl::~UStringImpl): |
| * runtime/UStringImpl.h: |
| (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield): |
| (JSC::UntypedPtrAndBitfield::asPtr): |
| (JSC::UntypedPtrAndBitfield::operator&=): |
| (JSC::UntypedPtrAndBitfield::operator|=): |
| (JSC::UntypedPtrAndBitfield::operator&): |
| (JSC::UStringImpl::create): |
| (JSC::UStringImpl::cost): |
| (JSC::UStringImpl::isIdentifier): |
| (JSC::UStringImpl::setIsIdentifier): |
| (JSC::UStringImpl::ref): |
| (JSC::UStringImpl::deref): |
| (JSC::UStringImpl::checkConsistency): |
| (JSC::UStringImpl::UStringImpl): |
| (JSC::UStringImpl::bufferOwnerString): |
| (JSC::UStringImpl::bufferOwnership): |
| (JSC::UStringImpl::isStatic): |
| * wtf/StringHashFunctions.h: |
| (WTF::stringHash): |
| |
| 2010-01-18 Simon Hausmann <simon.hausmann@nokia.com> |
| |
| Reviewed by Kenneth Rohde Christiansen. |
| |
| Fix the build with strict gcc and RVCT versions: It's not legal to cast a |
| pointer to a function to a void* without an intermediate cast to a non-pointer |
| type. A cast to a ptrdiff_t inbetween fixes it. |
| |
| * runtime/JSString.h: |
| (JSC::Fiber::JSString): |
| |
| 2010-01-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=33731 |
| Remove UntypedPtrAndBitfield from UStringImpl (akin to PtrAndFlags). |
| |
| This break the OS X Leaks tool. Instead, free up some more bits from the refCount. |
| |
| * runtime/UStringImpl.cpp: |
| (JSC::UStringImpl::sharedBuffer): |
| (JSC::UStringImpl::~UStringImpl): |
| * runtime/UStringImpl.h: |
| (JSC::UStringImpl::cost): |
| (JSC::UStringImpl::checkConsistency): |
| (JSC::UStringImpl::UStringImpl): |
| (JSC::UStringImpl::bufferOwnerString): |
| (JSC::UStringImpl::): |
| * wtf/StringHashFunctions.h: |
| (WTF::stringHash): |
| |
| 2010-01-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=33731 |
| Remove uses of PtrAndFlags from JIT data stuctures. |
| |
| These break the OS X Leaks tool. Free up a bit in CallLinkInfo, and invalid |
| permutation of pointer states in MethodCallLinkInfo to represent the removed bits. |
| |
| * bytecode/CodeBlock.h: |
| (JSC::CallLinkInfo::seenOnce): |
| (JSC::CallLinkInfo::setSeen): |
| (JSC::MethodCallLinkInfo::MethodCallLinkInfo): |
| (JSC::MethodCallLinkInfo::seenOnce): |
| (JSC::MethodCallLinkInfo::setSeen): |
| * jit/JIT.cpp: |
| (JSC::JIT::unlinkCall): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::patchMethodCallProto): |
| * runtime/UString.h: |
| |
| 2010-01-16 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Cache JS string values made from DOM strings (Dromaeo speedup) |
| https://bugs.webkit.org/show_bug.cgi?id=33768 |
| <rdar://problem/7353576> |
| |
| * runtime/JSString.h: |
| (JSC::jsStringWithFinalizer): Added new mechanism for a string to have an optional |
| finalizer callback, for the benefit of weak-referencing caches. |
| (JSC::): |
| (JSC::Fiber::JSString): |
| (JSC::Fiber::~JSString): |
| * runtime/JSString.cpp: |
| (JSC::JSString::resolveRope): Clear fibers so this doesn't look like a string with a finalizer. |
| * runtime/WeakGCMap.h: Include "Collector.h" to make this header includable by itself. |
| |
| 2010-01-15 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Fix for <rdar://problem/7548432> |
| Add ALWAYS_INLINE to jsLess for a 1% speedup on llvm-gcc. |
| |
| * runtime/Operations.h: |
| (JSC::jsLess): |
| |
| 2010-01-14 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| REGRESISON: Google maps buttons not working properly |
| https://bugs.webkit.org/show_bug.cgi?id=31871 |
| |
| REGRESSION(r52948): JavaScript exceptions thrown on Google Maps when |
| getting directions for a second time |
| https://bugs.webkit.org/show_bug.cgi?id=33446 |
| |
| SunSpider and v8 report no change. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::tryCacheGetByID): Update our cached offset in case |
| flattening the dictionary changed any of its offsets. |
| |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::tryCacheGetByID): |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/Operations.h: |
| (JSC::normalizePrototypeChain): ditto |
| |
| 2010-01-14 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=33705 |
| UStringImpl::create() should use internal storage |
| |
| When creating a UStringImpl copying of a UChar*, we can use an internal buffer, |
| by calling UStringImpl::tryCreateUninitialized(). |
| |
| Also, remove duplicate of copyChars from JSString, call UStringImpl's version. |
| |
| Small (max 0.5%) progression on Sunspidey. |
| |
| * runtime/JSString.cpp: |
| (JSC::JSString::resolveRope): |
| * runtime/UStringImpl.h: |
| (JSC::UStringImpl::create): |
| |
| 2010-01-14 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Make naming & behaviour of UString[Impl] methods more consistent. |
| https://bugs.webkit.org/show_bug.cgi?id=33702 |
| |
| UString::create() creates a copy of the UChar* passed, but UStringImpl::create() assumes |
| that it should assume ownership of the provided buffer (with UString::createNonCopying() |
| and UStringImpl::createCopying() providing the alternate behaviours). Unify on create() |
| taking a copy of the provided buffer. For non-copying cases, use the name 'adopt', and |
| make this method take a Vector<UChar>&. For cases where non-copying construction was being |
| used, other than from a Vector<UChar>, change the code to allocate the storage along with |
| the UStringImpl using UStringImpl::createUninitialized(). (The adopt() method also more |
| closely matches that of WebCore::StringImpl). |
| |
| Also, UString::createUninitialized() and UStringImpl::createUninitialized() have incompatible |
| behaviours, in that the UString form sets the provided UChar* to a null or non-null value to |
| indicate success or failure, but UStringImpl uses the returned PassRefPtr<UStringImpl> to |
| indicate when allocation has failed (potentially leaving the output Char* uninitialized). |
| This is also incompatible with WebCore::StringImpl's behaviour, in that |
| StringImpl::createUninitialized() will CRASH() if unable to allocate. Some uses of |
| createUninitialized() in JSC are unsafe, since they do not test the result for null. |
| UStringImpl's indication is preferable, since we may want a successful call to set the result |
| buffer to 0 (specifically, StringImpl returns 0 for the buffer where createUninitialized() |
| returns the empty string, which seems reasonable to catch bugs early). UString's method |
| cannot support UStringImpl's behaviour directly, since it returns an object rather than a |
| pointer. |
| - remove UString::createUninitialized(), replace with calls to UStringImpl::createUninitialized() |
| - create a UStringImpl::tryCreateUninitialized() form UStringImpl::createUninitialized(), |
| with current behaviour, make createUninitialized() crash on failure to allocate. |
| - make cases in JSC that do not check the result call createUninitialized(), and cases that do |
| check call tryCreateUninitialized(). |
| |
| Rename computedHash() to existingHash(), to bring this in line wih WebCore::StringImpl. |
| |
| * API/JSClassRef.cpp: |
| (OpaqueJSClassContextData::OpaqueJSClassContextData): |
| * JavaScriptCore.exp: |
| * runtime/ArrayPrototype.cpp: |
| (JSC::arrayProtoFuncToString): |
| * runtime/Identifier.cpp: |
| (JSC::CStringTranslator::translate): |
| (JSC::UCharBufferTranslator::translate): |
| * runtime/JSString.cpp: |
| (JSC::JSString::resolveRope): |
| * runtime/Lookup.cpp: |
| (JSC::HashTable::createTable): |
| * runtime/Lookup.h: |
| (JSC::HashTable::entry): |
| * runtime/StringBuilder.h: |
| (JSC::StringBuilder::release): |
| * runtime/StringConstructor.cpp: |
| (JSC::stringFromCharCodeSlowCase): |
| * runtime/StringPrototype.cpp: |
| (JSC::substituteBackreferencesSlow): |
| (JSC::stringProtoFuncToLowerCase): |
| (JSC::stringProtoFuncToUpperCase): |
| (JSC::stringProtoFuncFontsize): |
| (JSC::stringProtoFuncLink): |
| * runtime/Structure.cpp: |
| (JSC::Structure::despecifyDictionaryFunction): |
| (JSC::Structure::get): |
| (JSC::Structure::despecifyFunction): |
| (JSC::Structure::put): |
| (JSC::Structure::remove): |
| (JSC::Structure::insertIntoPropertyMapHashTable): |
| (JSC::Structure::checkConsistency): |
| * runtime/Structure.h: |
| (JSC::Structure::get): |
| * runtime/StructureTransitionTable.h: |
| (JSC::StructureTransitionTableHash::hash): |
| * runtime/UString.cpp: |
| (JSC::createRep): |
| (JSC::UString::UString): |
| (JSC::UString::spliceSubstringsWithSeparators): |
| (JSC::UString::replaceRange): |
| (JSC::UString::operator=): |
| * runtime/UString.h: |
| (JSC::UString::adopt): |
| (JSC::IdentifierRepHash::hash): |
| (JSC::makeString): |
| * runtime/UStringImpl.h: |
| (JSC::UStringImpl::adopt): |
| (JSC::UStringImpl::create): |
| (JSC::UStringImpl::createUninitialized): |
| (JSC::UStringImpl::tryCreateUninitialized): |
| (JSC::UStringImpl::existingHash): |
| |
| 2010-01-13 Kent Hansen <kent.hansen@nokia.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| JSON.stringify and JSON.parse needlessly process properties in the prototype chain |
| https://bugs.webkit.org/show_bug.cgi?id=33053 |
| |
| * runtime/JSONObject.cpp: |
| (JSC::Stringifier::Holder::appendNextProperty): |
| (JSC::Walker::walk): |
| |
| 2010-01-13 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by NOBODY (buildfix). |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2010-01-13 Alexey Proskuryakov <ap@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=33641 |
| Assertion failure in Lexer.cpp if input stream ends while in string escape |
| |
| Test: fast/js/end-in-string-escape.html |
| |
| * parser/Lexer.cpp: (JSC::Lexer::lex): Bail out quickly on end of stream, not giving the |
| assertion a chance to fire. |
| |
| 2010-01-13 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by NOBODY (buildfix). |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2010-01-13 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber stamped by Sam Weinig & Darin Adler. |
| |
| Three quick fixes to UStringImpl. |
| - The destroy() method can be switched back to a normal destructor; since we've switched |
| the way we protect static strings to be using an odd ref-count the destroy() won't abort. |
| - The cost() calculation logic was wrong. If you have multiple JSStrings wrapping substrings |
| of a base string, they would each report the full cost of the base string to the heap. |
| Instead we should only be reporting once for the base string. |
| - Remove the overloaded new operator calling fastMalloc, replace this with a 'using' to pick |
| up the implementation from the parent class. |
| |
| * JavaScriptCore.exp: |
| * runtime/UStringImpl.cpp: |
| (JSC::UStringImpl::~UStringImpl): |
| * runtime/UStringImpl.h: |
| (JSC::UStringImpl::cost): |
| (JSC::UStringImpl::deref): |
| |
| 2010-01-13 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| [Qt] Split the build process in two different .pro files. |
| This allows qmake to be run once all source files are available. |
| |
| * DerivedSources.pro: Added. |
| * JavaScriptCore.pri: Moved source generation to DerivedSources.pro |
| * pcre/pcre.pri: Moved source generation to DerivedSources.pro |
| |
| 2010-01-12 Kent Hansen <kent.hansen@nokia.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| [ES5] Implement Object.getOwnPropertyNames |
| https://bugs.webkit.org/show_bug.cgi?id=32242 |
| |
| Add an extra argument to getPropertyNames() and getOwnPropertyNames() |
| (and all reimplementations thereof) that indicates whether non-enumerable |
| properties should be added. |
| |
| * API/JSCallbackObject.h: |
| * API/JSCallbackObjectFunctions.h: |
| (JSC::::getOwnPropertyNames): |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * debugger/DebuggerActivation.cpp: |
| (JSC::DebuggerActivation::getOwnPropertyNames): |
| * debugger/DebuggerActivation.h: |
| * runtime/Arguments.cpp: |
| (JSC::Arguments::getOwnPropertyNames): |
| * runtime/Arguments.h: |
| * runtime/CommonIdentifiers.h: |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::getOwnPropertyNames): |
| * runtime/JSArray.h: |
| * runtime/JSByteArray.cpp: |
| (JSC::JSByteArray::getOwnPropertyNames): |
| * runtime/JSByteArray.h: |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::getOwnPropertyNames): |
| * runtime/JSFunction.h: |
| * runtime/JSNotAnObject.cpp: |
| (JSC::JSNotAnObject::getOwnPropertyNames): |
| * runtime/JSNotAnObject.h: |
| * runtime/JSObject.cpp: |
| (JSC::getClassPropertyNames): |
| (JSC::JSObject::getPropertyNames): |
| (JSC::JSObject::getOwnPropertyNames): |
| * runtime/JSObject.h: |
| * runtime/JSVariableObject.cpp: |
| (JSC::JSVariableObject::getOwnPropertyNames): |
| * runtime/JSVariableObject.h: |
| * runtime/ObjectConstructor.cpp: |
| (JSC::ObjectConstructor::ObjectConstructor): |
| (JSC::objectConstructorGetOwnPropertyNames): |
| * runtime/RegExpMatchesArray.h: |
| (JSC::RegExpMatchesArray::getOwnPropertyNames): |
| * runtime/StringObject.cpp: |
| (JSC::StringObject::getOwnPropertyNames): |
| * runtime/StringObject.h: |
| * runtime/Structure.cpp: Rename getEnumerablePropertyNames() to getPropertyNames(), which takes an extra argument. |
| (JSC::Structure::getPropertyNames): |
| * runtime/Structure.h: |
| (JSC::): |
| |
| 2010-01-12 Alexey Proskuryakov <ap@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=33540 |
| Make it possible to build in debug mode with assertions disabled |
| |
| * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/Identifier.cpp: (JSC::Identifier::checkSameIdentifierTable): |
| * wtf/FastMalloc.cpp: |
| * wtf/HashTable.h: (WTF::HashTableConstIterator::checkValidity): |
| * yarr/RegexCompiler.cpp: (JSC::Yarr::compileRegex): |
| |
| 2009-11-23 Yong Li <yoli@rim.com> |
| |
| Reviewed by Adam Treat. |
| |
| Make GIF decoder support down-sampling |
| https://bugs.webkit.org/show_bug.cgi?id=31806 |
| |
| * platform/image-decoders/ImageDecoder.cpp: |
| (WebCore::ImageDecoder::upperBoundScaledY): |
| (WebCore::ImageDecoder::lowerBoundScaledY): |
| * platform/image-decoders/ImageDecoder.h: |
| (WebCore::RGBA32Buffer::scaledRect): |
| (WebCore::RGBA32Buffer::setScaledRect): |
| (WebCore::ImageDecoder::scaledSize): |
| * platform/image-decoders/gif/GIFImageDecoder.cpp: |
| (WebCore::GIFImageDecoder::sizeNowAvailable): |
| (WebCore::GIFImageDecoder::initFrameBuffer): |
| (WebCore::copyOnePixel): |
| (WebCore::GIFImageDecoder::haveDecodedRow): |
| (WebCore::GIFImageDecoder::frameComplete): |
| |
| 2010-01-12 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| ecma/Date/15.9.5.12-1.js fails every night at midnight |
| https://bugs.webkit.org/show_bug.cgi?id=28041 |
| |
| Change the test to use a concrete time instead of "now". |
| |
| * tests/mozilla/ecma/Date/15.9.5.10-1.js: |
| * tests/mozilla/ecma/Date/15.9.5.12-1.js: |
| |
| 2010-01-11 Csaba Osztrogonác <ossy@webkit.org> |
| |
| Reviewed by Ariya Hidayat. |
| |
| [Qt] Enable JIT and YARR_JIT if (CPU(X86_64) && OS(LINUX) && GCC_VERSION >= 40100) |
| |
| * wtf/Platform.h: |
| |
| 2010-01-11 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=33481 |
| Uninitialized data members in ArrayStorage |
| |
| SunSpider reports no change. |
| |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::JSArray): Initialize missing data members in the two cases |
| where we don't use fastZeroedMalloc, so it doesn't happen automatically. |
| |
| 2010-01-11 Steve Falkenburg <sfalken@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=33480 |
| |
| Improve debugging reliability for WTF on Windows. |
| Store WTF static library's PDB file into a better location. |
| |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| |
| 2010-01-11 Steve Falkenburg <sfalken@apple.com> |
| |
| Windows build fix. |
| Remove extraneous entries from def file causing build warning. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2010-01-10 Kent Hansen <kent.hansen@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| RegExp.prototype.toString returns "//" for empty regular expressions |
| https://bugs.webkit.org/show_bug.cgi?id=33319 |
| |
| "//" starts a single-line comment, hence "/(?:)/" should be used, according to ECMA. |
| |
| * runtime/RegExpPrototype.cpp: |
| (JSC::regExpProtoFuncToString): |
| |
| * tests/mozilla/ecma_2/RegExp/properties-001.js: |
| (AddRegExpCases): |
| * tests/mozilla/js1_2/regexp/toString.js: |
| Update relevant Mozilla tests (Mozilla has had this behavior since November 2003). |
| |
| 2010-01-10 Darin Adler <darin@apple.com> |
| |
| * tests/mozilla/ecma/Array/15.4.1.1.js: Added property allow-tabs. |
| * tests/mozilla/ecma/Array/15.4.1.2.js: Added property allow-tabs. |
| * tests/mozilla/ecma/Array/15.4.2.1-1.js: Added property allow-tabs. |
| * tests/mozilla/ecma/Array/15.4.2.2-1.js: Added property allow-tabs. |
| * tests/mozilla/ecma/Array/15.4.2.2-2.js: Added property allow-tabs. |
| * tests/mozilla/ecma/Array/15.4.2.3.js: Added property allow-tabs. |
| * tests/mozilla/ecma/Array/15.4.3.2.js: Added property allow-tabs. |
| * tests/mozilla/ecma/Array/15.4.3.js: Added property allow-tabs. |
| * tests/mozilla/ecma/Array/15.4.4.1.js: Added property allow-tabs. |
| * tests/mozilla/ecma/Array/15.4.4.js: Added property allow-tabs. |
| * tests/mozilla/ecma/LexicalConventions/7.7.4.js: Added property allow-tabs. |
| * tests/mozilla/ecma/Math/15.8.2.13.js: Added property allow-tabs. |
| * tests/mozilla/ecma/Math/15.8.2.16.js: Added property allow-tabs. |
| * tests/mozilla/ecma/Math/15.8.2.18.js: Added property allow-tabs. |
| * tests/mozilla/ecma/Math/15.8.2.2.js: Added property allow-tabs. |
| * tests/mozilla/ecma/Math/15.8.2.4.js: Added property allow-tabs. |
| * tests/mozilla/ecma/Math/15.8.2.5.js: Added property allow-tabs. |
| * tests/mozilla/ecma/Math/15.8.2.7.js: Added property allow-tabs. |
| * tests/mozilla/ecma/String/15.5.1.js: Added property allow-tabs. |
| * tests/mozilla/ecma/String/15.5.2.js: Added property allow-tabs. |
| * tests/mozilla/ecma/String/15.5.3.1-3.js: Added property allow-tabs. |
| * tests/mozilla/ecma/String/15.5.3.1-4.js: Added property allow-tabs. |
| * tests/mozilla/ecma/String/15.5.3.js: Added property allow-tabs. |
| * tests/mozilla/ecma/TypeConversion/9.5-2.js: Added property allow-tabs. |
| * tests/mozilla/ecma/jsref.js: Modified property allow-tabs. |
| * tests/mozilla/ecma/shell.js: Modified property allow-tabs. |
| * tests/mozilla/ecma_2/LexicalConventions/keywords-001.js: Added property allow-tabs. |
| * tests/mozilla/ecma_2/RegExp/exec-001.js: Added property allow-tabs. |
| * tests/mozilla/ecma_2/String/match-004.js: Added property allow-tabs. |
| * tests/mozilla/ecma_2/String/replace-001.js: Added property allow-tabs. |
| * tests/mozilla/ecma_2/String/split-002.js: Added property allow-tabs. |
| * tests/mozilla/ecma_2/jsref.js: Modified property allow-tabs. |
| * tests/mozilla/ecma_2/shell.js: Added property allow-tabs. |
| * tests/mozilla/ecma_3/Date/shell.js: Modified property allow-tabs. |
| * tests/mozilla/ecma_3/Exceptions/regress-181654.js: Added property allow-tabs. |
| * tests/mozilla/ecma_3/RegExp/regress-209067.js: Added property allow-tabs. |
| * tests/mozilla/ecma_3/RegExp/regress-85721.js: Added property allow-tabs. |
| * tests/mozilla/importList.html: Added property allow-tabs. |
| * tests/mozilla/js1_1/shell.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/Array/general1.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/Array/general2.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/Array/slice.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/Array/splice1.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/Array/splice2.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/Objects/toString-001.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/String/charCodeAt.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/String/concat.js: Modified property allow-tabs. |
| * tests/mozilla/js1_2/String/match.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/String/slice.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/function/Function_object.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/function/Number.js: Modified property allow-tabs. |
| * tests/mozilla/js1_2/function/String.js: Modified property allow-tabs. |
| * tests/mozilla/js1_2/function/nesting.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/function/regexparg-1.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/function/regexparg-2-n.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/jsref.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/operator/equality.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/operator/strictEquality.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/RegExp_dollar_number.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/RegExp_input.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/RegExp_input_as_array.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/RegExp_lastIndex.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/RegExp_lastMatch.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/RegExp_lastMatch_as_array.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/RegExp_lastParen.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/RegExp_lastParen_as_array.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/RegExp_leftContext.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/RegExp_leftContext_as_array.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/RegExp_multiline.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/RegExp_multiline_as_array.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/RegExp_object.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/RegExp_rightContext.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/RegExp_rightContext_as_array.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/alphanumeric.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/asterisk.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/backslash.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/backspace.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/beginLine.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/character_class.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/compile.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/control_characters.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/digit.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/dot.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/endLine.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/everything.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/exec.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/flags.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/global.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/hexadecimal.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/ignoreCase.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/interval.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/octal.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/parentheses.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/plus.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/question_mark.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/simple_form.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/source.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/special_characters.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/string_replace.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/string_search.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/string_split.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/test.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/toString.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/vertical_bar.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/whitespace.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/regexp/word_boundary.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/shell.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/statements/break.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/statements/continue.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/statements/do_while.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/statements/switch.js: Added property allow-tabs. |
| * tests/mozilla/js1_2/statements/switch2.js: Added property allow-tabs. |
| * tests/mozilla/js1_3/shell.js: Added property allow-tabs. |
| * tests/mozilla/js1_4/shell.js: Added property allow-tabs. |
| * tests/mozilla/js1_5/Regress/regress-111557.js: Added property allow-tabs. |
| * tests/mozilla/js1_5/Regress/regress-216320.js: Added property allow-tabs. |
| * tests/mozilla/menuhead.html: Added property allow-tabs. |
| * tests/mozilla/mklistpage.pl: Added property allow-tabs. |
| * tests/mozilla/runtests.pl: Added property allow-tabs. |
| |
| 2010-01-08 Daniel Bates <dbates@webkit.org> |
| |
| Reviewed by Adam Barth. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=33417 |
| |
| Cleans up style errors exposed by the patch for bug #33198. |
| Moreover, fixes all "Weird number of spaces at line-start. Are you using a 4-space indent?" |
| errors reported by check-webkit-style. |
| |
| No functionality was changed. So, no new tests. |
| |
| * wtf/Platform.h: |
| |
| 2010-01-08 Kent Hansen <kent.hansen@nokia.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Don't store RegExp flags string representation |
| https://bugs.webkit.org/show_bug.cgi?id=33321 |
| |
| It's unused; the string representation is reconstructed from flags. |
| |
| * runtime/RegExp.cpp: |
| (JSC::RegExp::RegExp): |
| * runtime/RegExp.h: |
| |
| 2010-01-08 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Memory use grows grows possibly unbounded in this JavaScript Array test case |
| https://bugs.webkit.org/show_bug.cgi?id=31675 |
| |
| This fixes one observed bug in this test case, which is that |
| arrays don't report extra cost for the sparse value maps. |
| |
| SunSpider reports a small speedup. |
| |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::putSlowCase): Report extra memory cost for |
| the sparse value map. |
| * runtime/JSArray.h: |
| |
| 2010-01-08 Yong Li <yoli@rim.com> |
| |
| Reviewed by Darin Adler. |
| |
| Remove unnecessary #include from FastMalloc.cpp |
| https://bugs.webkit.org/show_bug.cgi?id=33393 |
| |
| * wtf/FastMalloc.cpp: |
| |
| 2010-01-08 Eric Seidel <eric@webkit.org> |
| |
| No review, rolling out r52983. |
| http://trac.webkit.org/changeset/52983 |
| https://bugs.webkit.org/show_bug.cgi?id=33321 |
| |
| Broke 59 JavaScriptCore tests. I don't think Kent knew about |
| run-javascriptcore-tests. Sadly neither does the commit-bot, |
| yet. |
| |
| * runtime/RegExp.cpp: |
| (JSC::RegExp::RegExp): |
| * runtime/RegExp.h: |
| (JSC::RegExp::flags): |
| |
| 2010-01-08 Eric Seidel <eric@webkit.org> |
| |
| No review, rolling out r52981. |
| http://trac.webkit.org/changeset/52981 |
| https://bugs.webkit.org/show_bug.cgi?id=33319 |
| |
| Caused two JS tests to start failing: |
| ecma_2/RegExp/properties-001.js and js1_2/regexp/toString.js |
| |
| * runtime/RegExpPrototype.cpp: |
| (JSC::regExpProtoFuncToString): |
| |
| 2010-01-08 Kent Hansen <kent.hansen@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| Don't store RegExp flags string representation |
| https://bugs.webkit.org/show_bug.cgi?id=33321 |
| |
| It's unused; the string representation is reconstructed from flags. |
| |
| * runtime/RegExp.cpp: |
| (JSC::RegExp::RegExp): |
| * runtime/RegExp.h: |
| |
| 2010-01-08 Kent Hansen <kent.hansen@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| RegExp.prototype.toString returns "//" for empty regular expressions |
| https://bugs.webkit.org/show_bug.cgi?id=33319 |
| |
| "//" starts a single-line comment, hence "/(?:)/" should be used, according to ECMA. |
| |
| * runtime/RegExpPrototype.cpp: |
| (JSC::regExpProtoFuncToString): |
| |
| 2010-01-08 Norbert Leser <norbert.leser@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| RVCT compiler with "-Otime -O3" optimization tries to optimize out |
| inline new'ed pointers that are passed as arguments. |
| Proposed patch assigns new'ed pointer explicitly outside function call. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=33084 |
| |
| * API/JSClassRef.cpp: |
| (OpaqueJSClass::OpaqueJSClass): |
| (OpaqueJSClassContextData::OpaqueJSClassContextData): |
| |
| 2010-01-08 Gabor Loki <loki@webkit.org> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Remove an unnecessary cacheFlush from ARM_TRADITIONAL JIT |
| https://bugs.webkit.org/show_bug.cgi?id=33203 |
| |
| * assembler/ARMAssembler.cpp: Remove obsolete linkBranch function. |
| (JSC::ARMAssembler::executableCopy): Inline a clean linkBranch code. |
| * assembler/ARMAssembler.h: |
| (JSC::ARMAssembler::getLdrImmAddress): Use inline function. |
| (JSC::ARMAssembler::getLdrImmAddressOnPool): Ditto. |
| (JSC::ARMAssembler::patchPointerInternal): Remove an unnecessary cacheFlush. |
| (JSC::ARMAssembler::linkJump): Use patchPointerInternal instead of linkBranch. |
| (JSC::ARMAssembler::linkCall): Ditto. |
| (JSC::ARMAssembler::relinkCall): Ditto. |
| |
| 2010-01-07 Gabor Loki <loki@webkit.org> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Build fix for JSVALUE32 when ENABLE_JIT_OPTIMIZE* are disabled |
| https://bugs.webkit.org/show_bug.cgi?id=33311 |
| |
| Move compileGetDirectOffset function to common part of JSVALUE32 |
| |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::compileGetDirectOffset): |
| |
| 2010-01-07 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Allow call sites to determine if ASSERT_* and LOG_* macros are operational |
| https://bugs.webkit.org/show_bug.cgi?id=33020 |
| |
| * wtf/Assertions.h: Set ASSERT_MSG_DISABLED, FATAL_DISABLED, |
| ERROR_DISABLED, LOG_DISABLED to 1 if the compiler does not support |
| variadic macros. Refactor for better readibility. |
| |
| 2010-01-07 Daniel Bates <dbates@rim.com> |
| |
| Reviewed by Eric Seidel. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=32987 |
| |
| Added ENABLE_XHTMLMP flag. Disabled by default. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2010-01-07 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| [Symbian] Port ARM traditional JIT Trampolines to RVCT |
| https://bugs.webkit.org/show_bug.cgi?id=30552 |
| |
| Take the GCC implementation and mechanically convert |
| it to RVCT syntax. |
| |
| Use 'bx rX' instead of 'mov pc, rX' when it is available. |
| |
| Developed in cooperation with Iain Campbell and Gabor Loki. |
| |
| * JavaScriptCore.pri: Extra step to generate RVCT stubs. The |
| script generation intentionally executed all the time not just |
| for RVCT targets. |
| |
| * create_rvct_stubs: Added. Perl script to expand precompiler macros |
| for RVCT assembler - the template is defined in JITStubs.cpp. |
| |
| * jit/JITStubs.cpp: |
| (JSC::ctiTrampoline): |
| (JSC::ctiVMThrowTrampoline): |
| (JSC::ctiOpThrowNotCaught): |
| |
| 2010-01-07 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Fix a crash seen on the buildbots. |
| |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::init): Disable specific function tracking here, |
| instead of in WebCore, to ensure that the disabling happens before a |
| specific function can be registered. |
| |
| 2010-01-07 Alexey Proskuryakov <ap@apple.com> |
| |
| Mac build fix. |
| |
| * JavaScriptCore.exp: Export new JSGlobalData static data members. |
| |
| 2010-01-07 Alexey Proskuryakov <ap@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=33057 |
| REGRESSION(r49365): typeof(xhr.responseText) != "string" in Windows |
| |
| <rdar://problem/7296920> REGRESSION: WebKit fails to start PeaceKeeper benchmark |
| |
| Test: fast/js/webcore-string-comparison.html |
| |
| In r49365, some code was moved from JSString.cpp to JSString.h, and as a result, WebCore |
| got a way to directly instantiate JSStrings over DLL borders. Since vftable for JSString was |
| not exported, objects created from WebCore got a different vptr, and JavaScriptCore |
| optimizations that relied on vptr of all JSString objects being equal failed. |
| |
| * config.h: Added a JS_EXPORTCLASS macro for exporting classes. It's currently the same as |
| JS_EXPORTDATA, but it clearly needed a new name. |
| |
| * runtime/InitializeThreading.cpp: |
| (JSC::initializeThreadingOnce): |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::storeVPtrs): |
| (JSC::JSGlobalData::JSGlobalData): |
| (JSC::JSGlobalData::createNonDefault): |
| (JSC::JSGlobalData::create): |
| (JSC::JSGlobalData::sharedInstance): |
| * runtime/JSGlobalData.h: |
| Store vptrs just once, no need to repeatedly pick and copy them. This makes it possible to |
| assert vptr correctness in object destructors (which don't have access to JSGlobalData, |
| and even Heap::heap(this) will fail for fake objects created from storeVPtrs()). |
| |
| * runtime/JSArray.cpp: (JSC::JSArray::~JSArray): Assert that vptr is what we expect it to be. |
| It's important to assert in destructor, because MSVC changes the vptr after constructor |
| is invoked. |
| * runtime/JSByteArray.cpp: (JSC::JSByteArray::~JSByteArray): Ditto. |
| * runtime/JSByteArray.h: Ditto. |
| * runtime/JSFunction.h: Ditto. |
| * runtime/JSFunction.cpp: (JSC::JSFunction::~JSFunction): Ditto. |
| |
| * runtime/JSCell.h: (JSC::JSCell::setVPtr): Added a method to substitute vptr for another |
| one. |
| |
| * runtime/JSString.h: Export JSString class together with its vftable, and tell other |
| libraries tp import it. This is needed on platforms that have a separate JavaScriptCore |
| dynamic library - and on Mac, we already did the export via JavaScriptCore.exp. |
| (JSC::JSString::~JSString): Assert tha vptr is what we expect it to be. |
| (JSC::fixupVPtr): Store a previously saved primary vftable pointer (do nothing if building |
| JavaScriptCore itself). |
| (JSC::jsSingleCharacterString): Call fixupVPtr in case this is call across DLL boundary. |
| (JSC::jsSingleCharacterSubstring): Ditto. |
| (JSC::jsNontrivialString): Ditto. |
| (JSC::jsString): Ditto. |
| (JSC::jsSubstring): Ditto. |
| (JSC::jsOwnedString): Ditto. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export the new static |
| JSGlobalData members that are used in WebCore via inline functions. |
| |
| 2010-01-07 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Safari memory usage skyrockets using new Google AdWords interface |
| https://bugs.webkit.org/show_bug.cgi?id=33343 |
| |
| The memory use was caused by the global object creating too many structures |
| as it thrashed between different specific functions. |
| |
| * runtime/Structure.cpp: |
| (JSC::Structure::Structure): |
| (JSC::Structure::addPropertyTransition): |
| (JSC::Structure::changePrototypeTransition): |
| (JSC::Structure::despecifyFunctionTransition): |
| (JSC::Structure::addAnonymousSlotsTransition): |
| (JSC::Structure::getterSetterTransition): |
| (JSC::Structure::toDictionaryTransition): |
| (JSC::Structure::addPropertyWithoutTransition): |
| (JSC::Structure::despecifyAllFunctions): |
| * runtime/Structure.h: |
| (JSC::Structure::disableSpecificFunctionTracking): Track a thrash count |
| for specific functions. Disable specific function tracking once the |
| thrash count has been hit. |
| |
| 2010-01-07 Csaba Osztrogonác <ossy@webkit.org> |
| |
| Reviewed by Simon Hausmann. |
| |
| [Qt] Enable JIT in debug mode on win32 after r51141 fixed the crashes. |
| |
| * JavaScriptCore.pri: |
| |
| 2010-01-07 Zoltan Horvath <zoltan@webkit.org> |
| |
| Reviewed by Holger Freyther. |
| |
| [Mac] Build fix when FAST_MALLOC_MATCH_VALIDATION=1 |
| https://bugs.webkit.org/show_bug.cgi?id=33312 |
| |
| Using of operator += cause compile error on Mac, so it is changed to |
| "= static_cast<AllocAlignmentInteger*>(old_ptr) + 1". |
| |
| * wtf/FastMalloc.cpp: |
| (WTF::TCMallocStats::realloc): |
| |
| 2010-01-07 Zoltan Horvath <zoltan@webkit.org> |
| |
| Reviewed by Holger Freyther. |
| |
| [Qt] Build fix when FAST_MALLOC_MATCH_VALIDATION=1 |
| https://bugs.webkit.org/show_bug.cgi?id=33312 |
| |
| Remove pByte (committed in r42344 from #20422), because pByte doesn't |
| exist and it is unnecessary. |
| |
| * wtf/FastMalloc.cpp: |
| (WTF::TCMallocStats::realloc): |
| |
| 2010-01-06 Gavin Barraclough <barraclough@apple.com> |
| |
| QT build fix. |
| |
| * runtime/Identifier.cpp: |
| (JSC::createIdentifierTableSpecific): |
| |
| 2010-01-06 Gavin Barraclough <barraclough@apple.com> |
| |
| Windows build fix part I. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2010-01-06 Dan Bernstein <mitz@apple.com> |
| |
| Build fix |
| |
| * runtime/Identifier.cpp: |
| (JSC::createIdentifierTableSpecificCallback): |
| |
| 2010-01-05 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=33236 |
| Remove m_identifierTable pointer from UString |
| |
| Currently every string holds a pointer so that during destruction, |
| if a string has been used as an identifier, it can remove itself |
| from the table. By instead accessing the identifierTable via a |
| thread specific tracking the table associated with the current |
| globaldata, we can save the memory cost of this pointer. |
| |
| * API/APIShims.h: |
| (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): |
| (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock): |
| (JSC::APICallbackShim::APICallbackShim): |
| (JSC::APICallbackShim::~APICallbackShim): |
| |
| - change the API shims to track the identifierTable of the current JSGlobalData. |
| |
| * API/JSContextRef.cpp: |
| (JSContextGroupCreate): |
| |
| - update creation of JSGlobalData for API usage to use new create method. |
| - fix shim instanciation bug in JSGlobalContextCreateInGroup. |
| |
| * JavaScriptCore.exp: |
| * runtime/Completion.cpp: |
| (JSC::checkSyntax): |
| (JSC::evaluate): |
| |
| - add asserts to check the identifierTable is being tracked correctly. |
| |
| * runtime/Identifier.cpp: |
| (JSC::IdentifierTable::~IdentifierTable): |
| (JSC::IdentifierTable::add): |
| (JSC::Identifier::remove): |
| (JSC::Identifier::checkSameIdentifierTable): |
| (JSC::createIdentifierTableSpecificCallback): |
| (JSC::createIdentifierTableSpecific): |
| (JSC::createDefaultDataSpecific): |
| |
| - Use currentIdentifierTable() instead of UStringImpl::m_identifierTable. |
| - Define methods to access the thread specific identifier tables. |
| |
| * runtime/Identifier.h: |
| (JSC::ThreadIdentifierTableData::ThreadIdentifierTableData): |
| (JSC::defaultIdentifierTable): |
| (JSC::setDefaultIdentifierTable): |
| (JSC::currentIdentifierTable): |
| (JSC::setCurrentIdentifierTable): |
| (JSC::resetCurrentIdentifierTable): |
| |
| - Declare methods to access the thread specific identifier tables. |
| |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::createNonDefault): |
| (JSC::JSGlobalData::create): |
| (JSC::JSGlobalData::sharedInstance): |
| |
| - creation of JSGlobalData objects, other than for API usage, associate themselves with the current thread. |
| |
| * runtime/JSGlobalData.h: |
| * runtime/UStringImpl.cpp: |
| (JSC::UStringImpl::destroy): |
| |
| - destroy() method should be using isIdentifier(). |
| |
| * runtime/UStringImpl.h: |
| (JSC::UStringImpl::isIdentifier): |
| (JSC::UStringImpl::setIsIdentifier): |
| (JSC::UStringImpl::checkConsistency): |
| (JSC::UStringImpl::UStringImpl): |
| |
| - replace m_identifierTable with a single m_isIdentifier bit. |
| |
| * wtf/StringHashFunctions.h: |
| (WTF::stringHash): |
| |
| - change string hash result from 32-bit to 31-bit, to free a bit in UStringImpl for m_isIdentifier. |
| |
| 2009-12-25 Patrick Gansterer <paroga@paroga.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Buildfix for WinCE + style fixes. |
| https://bugs.webkit.org/show_bug.cgi?id=32939 |
| |
| * jsc.cpp: |
| (functionPrint): |
| (functionQuit): |
| (parseArguments): |
| (fillBufferWithContentsOfFile): |
| |
| 2010-01-05 Patrick Gansterer <paroga@paroga.com> |
| |
| Reviewed by Eric Seidel. |
| |
| WinCE buildfix after r52791 (renamed PLATFORM(WINCE) to OS(WINCE)). |
| https://bugs.webkit.org/show_bug.cgi?id=33205 |
| |
| * jit/ExecutableAllocator.h: |
| |
| 2010-01-05 Patrick Gansterer <paroga@paroga.com> |
| |
| Reviewed by Darin Adler. |
| |
| Added compiler error for unsupported platforms. |
| https://bugs.webkit.org/show_bug.cgi?id=33112 |
| |
| * jit/JITStubs.cpp: |
| |
| 2010-01-05 Gabor Loki <loki@webkit.org> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Follow r52729 in ARMAssembler. |
| https://bugs.webkit.org/show_bug.cgi?id=33208 |
| |
| Use WTF_ARM_ARCH_AT_LEAST instead of ARM_ARCH_VERSION |
| |
| * assembler/ARMAssembler.cpp: |
| (JSC::ARMAssembler::encodeComplexImm): Move tmp declaration to ARMv7 |
| * assembler/ARMAssembler.h: |
| (JSC::ARMAssembler::): |
| (JSC::ARMAssembler::bkpt): |
| |
| 2010-01-05 Maciej Stachowiak <mjs@apple.com> |
| |
| Unreviewed build fix for Gtk+ |
| |
| Don't use // comments in Platform.h, at least some of them seem to make the version of GCC |
| used on the Gtk buildbot unhappy. |
| |
| * wtf/Platform.h: |
| |
| 2010-01-04 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by Darin Fisher. |
| |
| Reorganize, document and rename OS() platform macros. |
| https://bugs.webkit.org/show_bug.cgi?id=33198 |
| |
| * wtf/Platform.h: Rename, reorganize and document OS() macros. |
| |
| Adapt to name changes. Also fixed a few incorrect OS checks. |
| |
| * API/JSContextRef.cpp: |
| * assembler/MacroAssemblerARM.cpp: |
| (JSC::isVFPPresent): |
| * assembler/MacroAssemblerX86Common.h: |
| * bytecode/SamplingTool.cpp: |
| * config.h: |
| * interpreter/RegisterFile.cpp: |
| (JSC::RegisterFile::~RegisterFile): |
| * interpreter/RegisterFile.h: |
| (JSC::RegisterFile::RegisterFile): |
| (JSC::RegisterFile::grow): |
| * jit/ExecutableAllocator.h: |
| * jit/ExecutableAllocatorFixedVMPool.cpp: |
| * jit/ExecutableAllocatorPosix.cpp: |
| * jit/ExecutableAllocatorSymbian.cpp: |
| * jit/ExecutableAllocatorWin.cpp: |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| * jit/JITStubs.cpp: |
| * jsc.cpp: |
| (main): |
| * parser/Grammar.y: |
| * profiler/ProfileNode.cpp: |
| (JSC::getCount): |
| * runtime/Collector.cpp: |
| (JSC::Heap::Heap): |
| (JSC::Heap::allocateBlock): |
| (JSC::Heap::freeBlockPtr): |
| (JSC::currentThreadStackBase): |
| (JSC::getCurrentPlatformThread): |
| (JSC::suspendThread): |
| (JSC::resumeThread): |
| (JSC::getPlatformThreadRegisters): |
| (JSC::otherThreadStackPointer): |
| * runtime/Collector.h: |
| * runtime/DateConstructor.cpp: |
| * runtime/DatePrototype.cpp: |
| (JSC::formatLocaleDate): |
| * runtime/InitializeThreading.cpp: |
| (JSC::initializeThreading): |
| * runtime/MarkStack.h: |
| (JSC::MarkStack::MarkStackArray::shrinkAllocation): |
| * runtime/MarkStackPosix.cpp: |
| * runtime/MarkStackSymbian.cpp: |
| * runtime/MarkStackWin.cpp: |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncLastIndexOf): |
| * runtime/TimeoutChecker.cpp: |
| (JSC::getCPUTime): |
| * runtime/UString.cpp: |
| (JSC::UString::from): |
| * wtf/Assertions.cpp: |
| * wtf/Assertions.h: |
| * wtf/CurrentTime.cpp: |
| (WTF::lowResUTCTime): |
| * wtf/CurrentTime.h: |
| (WTF::getLocalTime): |
| * wtf/DateMath.cpp: |
| * wtf/FastMalloc.cpp: |
| (WTF::TCMalloc_ThreadCache::InitModule): |
| (WTF::TCMallocStats::): |
| * wtf/FastMalloc.h: |
| * wtf/MathExtras.h: |
| * wtf/RandomNumber.cpp: |
| (WTF::randomNumber): |
| * wtf/RandomNumberSeed.h: |
| (WTF::initializeRandomNumberGenerator): |
| * wtf/StringExtras.h: |
| * wtf/TCSpinLock.h: |
| (TCMalloc_SpinLock::Unlock): |
| (TCMalloc_SlowLock): |
| * wtf/TCSystemAlloc.cpp: |
| * wtf/ThreadSpecific.h: |
| (WTF::::destroy): |
| * wtf/Threading.h: |
| * wtf/ThreadingPthreads.cpp: |
| (WTF::initializeThreading): |
| (WTF::isMainThread): |
| * wtf/ThreadingWin.cpp: |
| (WTF::wtfThreadEntryPoint): |
| (WTF::createThreadInternal): |
| * wtf/VMTags.h: |
| * wtf/unicode/icu/CollatorICU.cpp: |
| (WTF::Collator::userDefault): |
| * wtf/win/MainThreadWin.cpp: |
| (WTF::initializeMainThreadPlatform): |
| |
| 2010-01-04 Gustavo Noronha Silva <gns@gnome.org> |
| |
| Add missing files to the build system - make distcheck build fix. |
| |
| * GNUmakefile.am: |
| |
| 2010-01-04 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig, additional coding by Mark Rowe. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=33163 |
| Add string hashing functions to WTF. |
| Use WTF's string hashing functions from UStringImpl. |
| |
| * GNUmakefile.am: |
| * JavaScriptCore.exp: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * runtime/UStringImpl.cpp: |
| * runtime/UStringImpl.h: |
| (JSC::UStringImpl::computeHash): |
| * wtf/HashFunctions.h: |
| * wtf/StringHashFunctions.h: Added. |
| (WTF::stringHash): |
| |
| 2010-01-04 Dmitry Titov <dimich@chromium.org> |
| |
| Not reviewed, attempt to fix ARM bulid. |
| |
| * wtf/Platform.h: |
| |
| 2010-01-04 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber stamped by Geoff Garen. |
| |
| Add an 'isIdentifier' to UStringImpl, use this where appropriate |
| (where previously 'identifierTable' was being tested). |
| |
| * API/JSClassRef.cpp: |
| (OpaqueJSClass::~OpaqueJSClass): |
| (OpaqueJSClassContextData::OpaqueJSClassContextData): |
| * runtime/Identifier.cpp: |
| (JSC::Identifier::addSlowCase): |
| * runtime/Identifier.h: |
| (JSC::Identifier::add): |
| * runtime/PropertyNameArray.cpp: |
| (JSC::PropertyNameArray::add): |
| * runtime/UStringImpl.h: |
| (JSC::UStringImpl::isIdentifier): |
| |
| 2010-01-04 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam "Shimmey Shimmey" Weinig. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=33158 |
| Refactor JSC API entry/exit to use RAII instead of copy/pasting code. |
| Make it easier to change set of actions taken when passing across the API boundary. |
| |
| * API/APIShims.h: Added. |
| (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): |
| (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock): |
| (JSC::APIEntryShim::APIEntryShim): |
| (JSC::APICallbackShim::APICallbackShim): |
| (JSC::APICallbackShim::~APICallbackShim): |
| * API/JSBase.cpp: |
| (JSEvaluateScript): |
| (JSCheckScriptSyntax): |
| (JSGarbageCollect): |
| (JSReportExtraMemoryCost): |
| * API/JSCallbackConstructor.cpp: |
| (JSC::constructJSCallback): |
| * API/JSCallbackFunction.cpp: |
| (JSC::JSCallbackFunction::call): |
| * API/JSCallbackObjectFunctions.h: |
| (JSC::::init): |
| (JSC::::getOwnPropertySlot): |
| (JSC::::put): |
| (JSC::::deleteProperty): |
| (JSC::::construct): |
| (JSC::::hasInstance): |
| (JSC::::call): |
| (JSC::::getOwnPropertyNames): |
| (JSC::::toNumber): |
| (JSC::::toString): |
| (JSC::::staticValueGetter): |
| (JSC::::callbackGetter): |
| * API/JSContextRef.cpp: |
| * API/JSObjectRef.cpp: |
| (JSObjectMake): |
| (JSObjectMakeFunctionWithCallback): |
| (JSObjectMakeConstructor): |
| (JSObjectMakeFunction): |
| (JSObjectMakeArray): |
| (JSObjectMakeDate): |
| (JSObjectMakeError): |
| (JSObjectMakeRegExp): |
| (JSObjectGetPrototype): |
| (JSObjectSetPrototype): |
| (JSObjectHasProperty): |
| (JSObjectGetProperty): |
| (JSObjectSetProperty): |
| (JSObjectGetPropertyAtIndex): |
| (JSObjectSetPropertyAtIndex): |
| (JSObjectDeleteProperty): |
| (JSObjectCallAsFunction): |
| (JSObjectCallAsConstructor): |
| (JSObjectCopyPropertyNames): |
| (JSPropertyNameArrayRelease): |
| (JSPropertyNameAccumulatorAddName): |
| * API/JSValueRef.cpp: |
| (JSValueGetType): |
| (JSValueIsUndefined): |
| (JSValueIsNull): |
| (JSValueIsBoolean): |
| (JSValueIsNumber): |
| (JSValueIsString): |
| (JSValueIsObject): |
| (JSValueIsObjectOfClass): |
| (JSValueIsEqual): |
| (JSValueIsStrictEqual): |
| (JSValueIsInstanceOfConstructor): |
| (JSValueMakeUndefined): |
| (JSValueMakeNull): |
| (JSValueMakeBoolean): |
| (JSValueMakeNumber): |
| (JSValueMakeString): |
| (JSValueToBoolean): |
| (JSValueToNumber): |
| (JSValueToStringCopy): |
| (JSValueToObject): |
| (JSValueProtect): |
| (JSValueUnprotect): |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2010-01-04 Dan Bernstein <mitz@apple.com> |
| |
| Reviewed by Ada Chan and Mark Rowe. |
| |
| Updated copyright string |
| |
| * Info.plist: |
| * JavaScriptCore.vcproj/JavaScriptCore.resources/Info.plist: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: |
| |
| 2010-01-04 Adam Roben <aroben@apple.com> |
| |
| No review, rolling out r52741. |
| http://trac.webkit.org/changeset/52741 |
| https://bugs.webkit.org/show_bug.cgi?id=33056 |
| |
| * wtf/AlwaysInline.h: |
| |
| 2010-01-04 Patrick Gansterer <paroga@paroga.com> |
| |
| Reviewed by Darin Adler. |
| |
| Add cacheFlush support for WinCE |
| https://bugs.webkit.org/show_bug.cgi?id=33110 |
| |
| * jit/ExecutableAllocator.h: |
| (JSC::ExecutableAllocator::cacheFlush): |
| |
| 2010-01-04 Patrick Gansterer <paroga@paroga.com> |
| |
| Reviewed by Adam Roben. |
| |
| Implement NO_RETURN for COMPILER(MSVC). |
| https://bugs.webkit.org/show_bug.cgi?id=33056 |
| |
| * wtf/AlwaysInline.h: |
| |
| 2010-01-04 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Fix some PLATFORM(*_ENDIAN) uses to CPU() |
| https://bugs.webkit.org/show_bug.cgi?id=33148 |
| |
| * runtime/JSCell.cpp: |
| (JSC::): |
| * runtime/JSValue.h: |
| (JSC::JSValue::): |
| |
| 2010-01-04 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by Adam Barth. |
| |
| Document CPU() macros in comments. |
| https://bugs.webkit.org/show_bug.cgi?id=33147 |
| |
| * wtf/Platform.h: |
| |
| 2010-01-04 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by Adam Barth. |
| |
| Reorganize, document and rename CPU() platform macros. |
| https://bugs.webkit.org/show_bug.cgi?id=33145 |
| ExecutableAllocatorSymbian appears to have buggy ARM version check |
| https://bugs.webkit.org/show_bug.cgi?id=33138 |
| |
| * wtf/Platform.h: |
| Rename all macros related to detection of particular CPUs or |
| classes of CPUs to CPU(), reorganize and document them. |
| |
| All remaining changes are adapting to the renames, plus fixing the |
| second bug cited above. |
| |
| * assembler/ARMAssembler.cpp: |
| * assembler/ARMAssembler.h: |
| * assembler/ARMv7Assembler.h: |
| * assembler/AbstractMacroAssembler.h: |
| (JSC::AbstractMacroAssembler::Imm32::Imm32): |
| * assembler/MacroAssembler.h: |
| * assembler/MacroAssemblerARM.cpp: |
| * assembler/MacroAssemblerARM.h: |
| * assembler/MacroAssemblerCodeRef.h: |
| (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr): |
| * assembler/MacroAssemblerX86.h: |
| * assembler/MacroAssemblerX86Common.h: |
| * assembler/MacroAssemblerX86_64.h: |
| * assembler/X86Assembler.h: |
| (JSC::X86Registers::): |
| (JSC::X86Assembler::): |
| (JSC::X86Assembler::movl_mEAX): |
| (JSC::X86Assembler::movl_EAXm): |
| (JSC::X86Assembler::repatchLoadPtrToLEA): |
| (JSC::X86Assembler::X86InstructionFormatter::memoryModRM): |
| * jit/ExecutableAllocator.h: |
| * jit/ExecutableAllocatorFixedVMPool.cpp: |
| * jit/ExecutableAllocatorPosix.cpp: |
| * jit/ExecutableAllocatorSymbian.cpp: |
| (JSC::ExecutableAllocator::intializePageSize): |
| * jit/JIT.cpp: |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::beginUninterruptedSequence): |
| (JSC::JIT::restoreArgumentReferenceForTrampoline): |
| (JSC::JIT::emitCount): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::privateCompileGetByIdProto): |
| (JSC::JIT::privateCompileGetByIdProtoList): |
| (JSC::JIT::privateCompileGetByIdChainList): |
| (JSC::JIT::privateCompileGetByIdChain): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::JITThunks): |
| * jit/JITStubs.h: |
| * runtime/Collector.cpp: |
| (JSC::currentThreadStackBase): |
| (JSC::getPlatformThreadRegisters): |
| (JSC::otherThreadStackPointer): |
| * wrec/WREC.h: |
| * wrec/WRECGenerator.cpp: |
| (JSC::WREC::Generator::generateEnter): |
| (JSC::WREC::Generator::generateReturnSuccess): |
| (JSC::WREC::Generator::generateReturnFailure): |
| * wrec/WRECGenerator.h: |
| * wtf/FastMalloc.cpp: |
| * wtf/TCSpinLock.h: |
| (TCMalloc_SpinLock::Lock): |
| (TCMalloc_SpinLock::Unlock): |
| (TCMalloc_SlowLock): |
| * wtf/Threading.h: |
| * wtf/dtoa.cpp: |
| * yarr/RegexJIT.cpp: |
| (JSC::Yarr::RegexGenerator::generateEnter): |
| (JSC::Yarr::RegexGenerator::generateReturn): |
| * yarr/RegexJIT.h: |
| |
| 2010-01-04 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by Adam Barth. |
| |
| Clean up COMPILER macros and remove unused ones. |
| https://bugs.webkit.org/show_bug.cgi?id=33132 |
| |
| Removed values are COMPILER(BORLAND) and COMPILER(CYGWIN) - they were |
| not used anywhere. |
| |
| * wtf/Platform.h: |
| |
| 2010-01-03 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Update wtf/Platform.h to document the new system for porting macros. |
| https://bugs.webkit.org/show_bug.cgi?id=33130 |
| |
| * wtf/Platform.h: |
| |
| 2009-12-29 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| PLATFORM(CAIRO) should be defined by WIN_CAIRO define |
| https://bugs.webkit.org/show_bug.cgi?id=22250 |
| |
| * wtf/Platform.h: Define WTF_PLATFORM_CAIRO for GTK port only |
| For the WinCairo port WTF_PLATFORM_CAIRO is already defined in config.h |
| |
| 2009-12-28 Shu Chang <Chang.Shu@nokia.com> |
| |
| Reviewed by Laszlo Gombos. |
| |
| [Qt] Delete ThreadPrivate instance after it is finished. |
| https://bugs.webkit.org/show_bug.cgi?id=32614 |
| |
| * wtf/qt/ThreadingQt.cpp: |
| (WTF::ThreadMonitor::instance): |
| (WTF::ThreadMonitor::threadFinished): |
| (WTF::createThreadInternal): |
| (WTF::detachThread): |
| |
| 2009-12-28 Patrick Gansterer <paroga@paroga.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Cleanup of #define JS_EXPORT. |
| |
| * API/JSBase.h: |
| |
| 2009-12-27 Patrick Gansterer <paroga@paroga.com> |
| |
| Reviewed by Adam Barth. |
| |
| WinCE buildfix (HWND_MESSAGE isn't supported there) |
| |
| * wtf/win/MainThreadWin.cpp: |
| (WTF::initializeMainThreadPlatform): |
| |
| 2009-12-27 Patrick Gansterer <paroga@paroga.com> |
| |
| Reviewed by Adam Barth. |
| |
| Added a file with WinMain function to link agains in WinCE. |
| |
| * os-win32/WinMain.cpp: Added. |
| (convertToUtf8): |
| (WinMain): |
| |
| 2009-12-24 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Unreviewed; revert of r52550. |
| |
| The change regressed the following LayoutTests for QtWebKit. |
| |
| fast/workers/worker-call.html -> crashed |
| fast/workers/worker-close.html -> crashed |
| |
| * wtf/qt/ThreadingQt.cpp: |
| (WTF::waitForThreadCompletion): |
| (WTF::detachThread): |
| |
| 2009-12-24 Shu Chang <Chang.Shu@nokia.com> |
| |
| Reviewed by Laszlo Gombos. |
| |
| [Qt] Fix memory leak by deleting instance of ThreadPrivate |
| in function waitForThreadCompletion(), synchronously, or in |
| detachThread(), asynchronously. |
| https://bugs.webkit.org/show_bug.cgi?id=32614 |
| |
| * wtf/qt/ThreadingQt.cpp: |
| (WTF::waitForThreadCompletion): |
| (WTF::detachThread): |
| |
| 2009-12-23 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Laszlo Gombos. |
| |
| Include stddef.h for ptrdiff_t |
| https://bugs.webkit.org/show_bug.cgi?id=32891 |
| |
| ptrdiff_t is typedef-ed in stddef.h. |
| Include stddef.h in jit/ExecutableAllocator.h. |
| |
| * jit/ExecutableAllocator.h: |
| |
| 2009-12-23 Patrick Gansterer <paroga@paroga.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Buildfix after r47092. |
| |
| * wtf/wince/MemoryManager.cpp: |
| (WTF::tryFastMalloc): |
| (WTF::tryFastZeroedMalloc): |
| (WTF::tryFastCalloc): |
| (WTF::tryFastRealloc): |
| |
| 2009-12-23 Kent Tamura <tkent@chromium.org> |
| |
| Reviewed by Darin Adler. |
| |
| HTMLInputElement::valueAsDate getter support. |
| https://bugs.webkit.org/show_bug.cgi?id=32876 |
| |
| Expose dateToDaysFrom1970(). |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * wtf/DateMath.cpp: |
| (WTF::dateToDaysFrom1970): |
| * wtf/DateMath.h: |
| |
| 2009-12-22 Darin Adler <darin@apple.com> |
| |
| Reviewed by Mark Rowe. |
| |
| Turn off datagrid by default, at least for all platforms Apple ships. |
| The datagrid implementation isn't ready for general web use yet. |
| |
| * Configurations/FeatureDefines.xcconfig: Turn off datagrid by default. |
| |
| 2009-12-22 Steve Block <steveblock@google.com> |
| |
| Reviewed by David Levin. |
| |
| Updates Android's scheduleDispatchFunctionsOnMainThread() to use new |
| AndroidThreading class, rather than using JavaSharedClient directly. |
| This fixes the current layering violation. |
| https://bugs.webkit.org/show_bug.cgi?id=32651 |
| |
| The pattern is copied from Chromium, which uses the ChromiumThreading |
| class. This patch also fixes the style in ChromiumThreading.h. |
| |
| * wtf/android/AndroidThreading.h: Added. Declares AndroidThreading. |
| * wtf/android/MainThreadAndroid.cpp: Modified |
| (WTF::scheduleDispatchFunctionsOnMainThread): Uses AndroidThreading. |
| * wtf/chromium/ChromiumThreading.h: Modified. Fixes style. |
| |
| 2009-12-22 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Fix a couple of problems with UntypedPtrAndBitfield. |
| |
| Add a m_leaksPtr to reduce false positives from leaks in debug builds |
| (this isn't perfect because we'd like a solution for release builds, |
| but this is now at least as good as a PtrAndFlags would be). |
| |
| Switch SmallStringsto use a regular string for the base, rather than |
| a static one. UntypedPtrAndBitfield assumes all strings are at least |
| 8 byte aligned; this migt not be true of static strings. Shared buffers |
| are heap allocated, as are all UStringImpls other than static strings. |
| Static strings cannot end up being the owner string of substrings, |
| since the only static strings are length 0. |
| |
| * runtime/SmallStrings.cpp: |
| (JSC::SmallStringsStorage::SmallStringsStorage): |
| * runtime/UStringImpl.h: |
| (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield): |
| (JSC::UStringImpl::UStringImpl): |
| |
| 2009-12-22 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Darin Adler. |
| |
| RVCT (__ARMCC_VERSION < 400000) does not provide strcasecmp and strncasecmp |
| https://bugs.webkit.org/show_bug.cgi?id=32857 |
| |
| Add implementation of strcasecmp and strncasecmp for RVCT < 4.0 |
| because earlier versions of RVCT 4.0 does not provide these functions. |
| |
| * wtf/StringExtras.cpp: Added. |
| (strcasecmp): |
| (strncasecmp): |
| * wtf/StringExtras.h: |
| |
| 2009-12-22 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Darin Adler. |
| |
| Define ALWAYS_INLINE and WTF_PRIVATE_INLINE to __forceinline for RVCT |
| https://bugs.webkit.org/show_bug.cgi?id=32853 |
| |
| Use __forceinline forces RVCT to compile a C or C++ function |
| inline. The compiler attempts to inline the function, regardless of |
| the characteristics of the function. |
| |
| * wtf/AlwaysInline.h: |
| * wtf/FastMalloc.h: |
| |
| 2009-12-21 Simon Hausmann <simon.hausmann@nokia.com> |
| |
| Prospective GTK build fix: Add UStringImpl.cpp/h to the build. |
| |
| * GNUmakefile.am: |
| |
| 2009-12-21 Simon Hausmann <simon.hausmann@nokia.com> |
| |
| Fix the Qt build, add UStringImpl.cpp to the build. |
| |
| * JavaScriptCore.pri: |
| |
| 2009-12-21 Gavin Barraclough <barraclough@apple.com> |
| |
| Windows Build fix part 5. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| |
| 2009-12-21 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by NOBODY (build fix). |
| Fix breakage of world introduced in build fix to r52463. |
| |
| * runtime/UStringImpl.h: |
| |
| 2009-12-21 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=32831 |
| Replace UString::Rep implementation, following introduction of ropes to JSC. |
| |
| * Remove redundant overcapacity mechanisms. |
| * Reduce memory cost of Rep's. |
| * Add an inline storage mechanism akin to that in WebCore's StringImpl. |
| |
| ~1% Sunspider progression. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * runtime/JSString.cpp: |
| (JSC::JSString::resolveRope): |
| * runtime/SmallStrings.cpp: |
| (JSC::SmallStringsStorage::SmallStringsStorage): |
| * runtime/UString.cpp: |
| (JSC::initializeUString): |
| (JSC::createRep): |
| (JSC::UString::createFromUTF8): |
| (JSC::UString::createUninitialized): |
| (JSC::UString::spliceSubstringsWithSeparators): |
| (JSC::UString::replaceRange): |
| (JSC::UString::ascii): |
| (JSC::UString::operator=): |
| (JSC::UString::toStrictUInt32): |
| (JSC::equal): |
| * runtime/UString.h: |
| (JSC::UString::isEmpty): |
| (JSC::UString::cost): |
| (JSC::makeString): |
| * runtime/UStringImpl.cpp: Added. |
| (JSC::UStringImpl::baseSharedBuffer): |
| (JSC::UStringImpl::sharedBuffer): |
| (JSC::UStringImpl::destroy): |
| (JSC::UStringImpl::computeHash): |
| * runtime/UStringImpl.h: Added. |
| (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield): |
| (JSC::UntypedPtrAndBitfield::asPtr): |
| (JSC::UntypedPtrAndBitfield::operator&=): |
| (JSC::UntypedPtrAndBitfield::operator|=): |
| (JSC::UntypedPtrAndBitfield::operator&): |
| (JSC::UStringImpl::create): |
| (JSC::UStringImpl::createCopying): |
| (JSC::UStringImpl::createUninitialized): |
| (JSC::UStringImpl::data): |
| (JSC::UStringImpl::size): |
| (JSC::UStringImpl::cost): |
| (JSC::UStringImpl::hash): |
| (JSC::UStringImpl::computedHash): |
| (JSC::UStringImpl::setHash): |
| (JSC::UStringImpl::identifierTable): |
| (JSC::UStringImpl::setIdentifierTable): |
| (JSC::UStringImpl::ref): |
| (JSC::UStringImpl::deref): |
| (JSC::UStringImpl::allocChars): |
| (JSC::UStringImpl::copyChars): |
| (JSC::UStringImpl::computeHash): |
| (JSC::UStringImpl::null): |
| (JSC::UStringImpl::empty): |
| (JSC::UStringImpl::checkConsistency): |
| (JSC::UStringImpl::): |
| (JSC::UStringImpl::UStringImpl): |
| (JSC::UStringImpl::operator new): |
| (JSC::UStringImpl::bufferOwnerString): |
| (JSC::UStringImpl::bufferOwnership): |
| (JSC::UStringImpl::isStatic): |
| |
| 2009-12-18 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Kenneth Rohde Christiansen. |
| |
| Move some build decisions from Qt build system into source files |
| https://bugs.webkit.org/show_bug.cgi?id=31956 |
| |
| * JavaScriptCore.pri: Compile files unconditionally |
| * jit/ExecutableAllocatorPosix.cpp: Guard with PLATFORM(UNIX) && !PLATFORM(SYMBIAN) |
| * jit/ExecutableAllocatorWin.cpp: Guard with PLATFORM(WIN_OS) |
| * runtime/MarkStackPosix.cpp: Guard with PLATFORM(UNIX) && !PLATFORM(SYMBIAN) |
| * runtime/MarkStackSymbian.cpp: Guard with PLATFORM(SYMBIAN) |
| * runtime/MarkStackWin.cpp: Guard with PLATFORM(WIN_OS) |
| * wtf/Platform.h: Guard ENABLE_JSC_MULTIPLE_THREADS with ENABLE_SINGLE_THREADED for the Qt port |
| * wtf/ThreadingNone.cpp: Guard with ENABLE(SINGLE_THREADED) |
| * wtf/qt/ThreadingQt.cpp: Guard with !ENABLE(SINGLE_THREADED) |
| |
| 2009-12-18 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Add createNonCopying method to UString to make replace constructor passed bool, |
| to make behaviour more explicit. Add createFromUTF8 to UString (wrapping method |
| on UString::Rep), since other cases of transliteration (e.g. from ascii) are |
| performed in UString constructors. Add/use setHash & size() accessors on Rep, |
| rather than accessing _hash/len directly. |
| |
| * API/JSClassRef.cpp: |
| (OpaqueJSClass::OpaqueJSClass): |
| * API/OpaqueJSString.cpp: |
| (OpaqueJSString::ustring): |
| * JavaScriptCore.exp: |
| * runtime/ArrayPrototype.cpp: |
| (JSC::arrayProtoFuncToString): |
| * runtime/Identifier.cpp: |
| (JSC::Identifier::equal): |
| (JSC::CStringTranslator::translate): |
| (JSC::UCharBufferTranslator::translate): |
| (JSC::Identifier::addSlowCase): |
| * runtime/JSString.cpp: |
| (JSC::JSString::resolveRope): |
| * runtime/JSString.h: |
| (JSC::JSString::Rope::Fiber::refAndGetLength): |
| (JSC::JSString::Rope::append): |
| * runtime/StringBuilder.h: |
| (JSC::StringBuilder::release): |
| * runtime/StringConstructor.cpp: |
| (JSC::stringFromCharCodeSlowCase): |
| * runtime/StringPrototype.cpp: |
| (JSC::substituteBackreferencesSlow): |
| (JSC::stringProtoFuncToLowerCase): |
| (JSC::stringProtoFuncToUpperCase): |
| (JSC::stringProtoFuncFontsize): |
| (JSC::stringProtoFuncLink): |
| * runtime/UString.cpp: |
| (JSC::UString::UString): |
| (JSC::UString::createNonCopying): |
| (JSC::UString::createFromUTF8): |
| * runtime/UString.h: |
| (JSC::UString::Rep::setHash): |
| (JSC::UString::~UString): |
| (JSC::makeString): |
| |
| 2009-12-18 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Cameron Zwarich and Gavin Barraclough. |
| |
| Changed Register constructors to assignment operators, to streamline |
| moving values into registers. (In theory, there's no difference between |
| the two, since the constructor should just inline away, but there seems |
| to be a big difference in the addled mind of the GCC optimizer.) |
| |
| In the interpreter, this is a 3.5% SunSpider speedup and a 1K-2K |
| reduction in stack usage per privateExecute stack frame. |
| |
| * interpreter/CallFrame.h: |
| (JSC::ExecState::setCalleeArguments): |
| (JSC::ExecState::setCallerFrame): |
| (JSC::ExecState::setScopeChain): |
| (JSC::ExecState::init): |
| (JSC::ExecState::setArgumentCount): |
| (JSC::ExecState::setCallee): |
| (JSC::ExecState::setCodeBlock): Added a little bit of casting so these |
| functions could use the new Register assignment operators. |
| |
| * interpreter/Register.h: |
| (JSC::Register::withInt): |
| (JSC::Register::Register): |
| (JSC::Register::operator=): Swapped in assignment operators for constructors. |
| |
| 2009-12-18 Yongjun Zhang <yongjun.zhang@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=32713 |
| [Qt] make wtf/Assertions.h compile in winscw compiler. |
| |
| Add string arg before ellipsis to help winscw compiler resolve variadic |
| macro definitions in wtf/Assertions.h. |
| |
| * wtf/Assertions.h: |
| |
| 2009-12-18 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Adam Roben. |
| |
| Fixed intermittent failure seen on Windows buildbot, and in other JSC |
| API clients. |
| |
| Added a WeakGCPtr class and changed OpaqueJSClass::cachedPrototype to |
| use it, to avoid vending a stale object as a prototype. |
| |
| * API/JSClassRef.cpp: |
| (OpaqueJSClassContextData::OpaqueJSClassContextData): |
| (OpaqueJSClass::prototype): |
| * API/JSClassRef.h: Use WeakGCPtr. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * runtime/WeakGCPtr.h: Added. |
| (JSC::WeakGCPtr::WeakGCPtr): |
| (JSC::WeakGCPtr::get): |
| (JSC::WeakGCPtr::clear): |
| (JSC::WeakGCPtr::operator*): |
| (JSC::WeakGCPtr::operator->): |
| (JSC::WeakGCPtr::operator!): |
| (JSC::WeakGCPtr::operator bool): |
| (JSC::WeakGCPtr::operator UnspecifiedBoolType): |
| (JSC::WeakGCPtr::assign): |
| (JSC::::operator): |
| (JSC::operator==): |
| (JSC::operator!=): |
| (JSC::static_pointer_cast): |
| (JSC::const_pointer_cast): |
| (JSC::getPtr): Added WeakGCPtr to the project. |
| |
| 2009-12-18 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=32720 |
| |
| * JavaScriptCore.exp: |
| - Remove exports for UString::append |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| - Make StringBuilder a private header (was project). |
| |
| 2009-12-18 Martin Robinson <martin.james.robinson@gmail.com> |
| |
| Reviewed by Gustavo Noronha Silva. |
| |
| [GTK] GRefPtr does not take a reference when assigned a raw pointer |
| https://bugs.webkit.org/show_bug.cgi?id=32709 |
| |
| Ensure that when assigning a raw pointer to a GRefPtr, the reference |
| count is incremented. Also remove the GRefPtr conversion overload as |
| GRefPtr types have necessarily incompatible reference counting. |
| |
| * wtf/gtk/GRefPtr.h: |
| (WTF::GRefPtr::operator=): |
| |
| 2009-12-18 Simon Hausmann <simon.hausmann@nokia.com> |
| |
| Reviewed by Tor Arne Vestbø. |
| |
| [Qt] Clean up the qmake build system to distinguish between trunk builds and package builds |
| |
| https://bugs.webkit.org/show_bug.cgi?id=32716 |
| |
| * pcre/pcre.pri: Use standalone_package instead of QTDIR_build |
| |
| 2009-12-18 Martin Robinson <martin.james.robinson@gmail.com> |
| |
| Reviewed by Gustavo Noronha Silva. |
| |
| [GTK] Compile warning from line 29 of GRefPtr.cpp |
| https://bugs.webkit.org/show_bug.cgi?id=32703 |
| |
| Fix memory leak and compiler warning in GRefPtr GHashTable template |
| specialization. |
| |
| * wtf/gtk/GRefPtr.cpp: |
| (WTF::refGPtr): |
| |
| 2009-12-17 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Mark Rowe. |
| |
| Add BUILDING_ON_SNOW_LEOPARD and TARGETING_SNOW_LEOPARD #defines. |
| |
| * wtf/Platform.h: |
| |
| 2009-12-17 Adam Roben <aroben@apple.com> |
| |
| Sync JavaScriptCore.vcproj with JavaScriptCore.xcodeproj and the |
| source tree |
| |
| Fixes <http://webkit.org/b/32665>. |
| |
| Reviewed by Ada Chan. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Moved |
| around files and filters so that the structure matches |
| JavaScriptCore.xcodeproj and the source tree. A few headers that were |
| previously omitted have been added, as well as JSZombie.{cpp,h}. |
| |
| 2009-12-17 Adam Roben <aroben@apple.com> |
| |
| Remove HeavyProfile and TreeProfile completely |
| |
| These were mostly removed in r42808, but the empty files were left in |
| place. |
| |
| Fixes <http://webkit.org/b/32664>. |
| |
| Reviewed by John Sullivan. |
| |
| * Android.mk: |
| * GNUmakefile.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.pri: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCoreSources.bkl: |
| Removed HeavyProfile/TreeProfile source files. |
| |
| * profiler/HeavyProfile.cpp: Removed. |
| * profiler/HeavyProfile.h: Removed. |
| * profiler/TreeProfile.cpp: Removed. |
| * profiler/TreeProfile.h: Removed. |
| |
| 2009-12-17 Martin Robinson <martin.james.robinson@gmail.com> |
| |
| Reviewed by Gustavo Noronha Silva. |
| |
| [GTK] WebKit GTK needs a wrapper for ref counted glib/gobject structs |
| https://bugs.webkit.org/show_bug.cgi?id=21599 |
| |
| Implement GRefPtr, a smart pointer for reference counted GObject types. |
| |
| * GNUmakefile.am: |
| * wtf/gtk/GOwnPtr.cpp: |
| (WTF::GDir): |
| * wtf/gtk/GRefPtr.h: Added. |
| (WTF::): |
| (WTF::GRefPtr::GRefPtr): |
| (WTF::GRefPtr::~GRefPtr): |
| (WTF::GRefPtr::clear): |
| (WTF::GRefPtr::get): |
| (WTF::GRefPtr::operator*): |
| (WTF::GRefPtr::operator->): |
| (WTF::GRefPtr::operator!): |
| (WTF::GRefPtr::operator UnspecifiedBoolType): |
| (WTF::GRefPtr::hashTableDeletedValue): |
| (WTF::::operator): |
| (WTF::::swap): |
| (WTF::swap): |
| (WTF::operator==): |
| (WTF::operator!=): |
| (WTF::static_pointer_cast): |
| (WTF::const_pointer_cast): |
| (WTF::getPtr): |
| (WTF::adoptGRef): |
| (WTF::refGPtr): |
| (WTF::derefGPtr): |
| |
| 2009-12-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> |
| |
| Unreviewed. Build fixes for make distcheck. |
| |
| * GNUmakefile.am: |
| |
| 2009-12-16 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Fixed <rdar://problem/7355025> Interpreter::privateExecute macro generates |
| bloated code |
| |
| This patch cuts Interpreter stack use by about a third. |
| |
| * bytecode/Opcode.h: Changed Opcode to const void* to work with the |
| const static initiliazation we want to do in Interpreter::privateExecute. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::Interpreter): Moved hashtable initialization here to |
| avoid polluting Interpreter::privateExecute's stack, and changed it from a |
| series of add() calls to one add() call in a loop, to cut down on code size. |
| |
| (JSC::Interpreter::privateExecute): Changed a series of label computations |
| to a copy of a compile-time constant array to cut down on code size. |
| |
| 2009-12-16 Mark Rowe <mrowe@apple.com> |
| |
| Build fix. Disable debug variants of WebKit frameworks. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2009-12-15 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam "r=me" Weinig. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=32498 |
| <rdar://problem/7471495> |
| REGRESSION(r51978-r52039): AJAX "Mark This Forum Read" function no longer |
| works |
| |
| Fixed a tyop. |
| |
| * runtime/Operations.h: |
| (JSC::jsAdd): Use the '&&' operator, not the ',' operator. |
| |
| 2009-12-15 Geoffrey Garen <ggaren@apple.com> |
| |
| Try to fix the windows build: don't export this inlined function. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2009-12-15 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Beth Dakin. |
| |
| Inlined JSCell's operator new. |
| |
| 3.7% speedup on bench-allocate-nonretained.js. |
| |
| * JavaScriptCore.exp: |
| * runtime/JSCell.cpp: |
| * runtime/JSCell.h: |
| (JSC::JSCell::operator new): |
| |
| 2009-12-15 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Removed the number heap, replacing it with a one-item free list for |
| numbers, taking advantage of the fact that two number cells fit inside |
| the space for one regular cell, and number cells don't require destruction. |
| |
| SunSpider says 1.6% faster in JSVALUE32 mode (the only mode that |
| heap-allocates numbers). |
| |
| SunSpider says 1.1% faster in JSVALUE32_64 mode. v8 says 0.8% faster |
| in JSVALUE32_64 mode. 10% speedup on bench-alloc-nonretained.js. 6% |
| speedup on bench-alloc-retained.js. |
| |
| There's a lot of formulaic change in this patch, but not much substance. |
| |
| * JavaScriptCore.exp: |
| * debugger/Debugger.cpp: |
| (JSC::Debugger::recompileAllJSFunctions): |
| * runtime/Collector.cpp: |
| (JSC::Heap::Heap): |
| (JSC::Heap::destroy): |
| (JSC::Heap::allocateBlock): |
| (JSC::Heap::freeBlock): |
| (JSC::Heap::freeBlockPtr): |
| (JSC::Heap::freeBlocks): |
| (JSC::Heap::recordExtraCost): |
| (JSC::Heap::allocate): |
| (JSC::Heap::resizeBlocks): |
| (JSC::Heap::growBlocks): |
| (JSC::Heap::shrinkBlocks): |
| (JSC::Heap::markConservatively): |
| (JSC::Heap::clearMarkBits): |
| (JSC::Heap::markedCells): |
| (JSC::Heap::sweep): |
| (JSC::Heap::markRoots): |
| (JSC::Heap::objectCount): |
| (JSC::Heap::addToStatistics): |
| (JSC::Heap::statistics): |
| (JSC::Heap::isBusy): |
| (JSC::Heap::reset): |
| (JSC::Heap::collectAllGarbage): |
| (JSC::Heap::primaryHeapBegin): |
| (JSC::Heap::primaryHeapEnd): |
| * runtime/Collector.h: |
| (JSC::): Removed all code pertaining to the number heap, and changed all |
| heap template functions and classes to non-template functions and classes. |
| |
| (JSC::Heap::allocateNumber): A new optimization to replace the number |
| heap: allocate half-sized number cells in pairs, returning the first |
| cell and caching the second cell for the next allocation. |
| |
| * runtime/CollectorHeapIterator.h: |
| (JSC::LiveObjectIterator::LiveObjectIterator): |
| (JSC::LiveObjectIterator::operator++): |
| (JSC::DeadObjectIterator::DeadObjectIterator): |
| (JSC::DeadObjectIterator::operator++): |
| (JSC::ObjectIterator::ObjectIterator): |
| (JSC::ObjectIterator::operator++): |
| * runtime/JSCell.h: |
| (JSC::JSCell::isNumber): Removed all code pertaining to the number heap, |
| and changed all heap template functions and classes to non-template functions |
| and classes. |
| |
| 2009-12-15 Zoltan Horvath <zoltan@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| Allow custom memory allocation control for WeakGCMap class |
| https://bugs.webkit.org/show_bug.cgi?id=32547 |
| |
| Inherits WeakGCMap from FastAllocBase because it is instantiated by |
| 'new' at: WebCore/dom/Document.cpp:512. |
| |
| * runtime/WeakGCMap.h: |
| |
| 2009-12-15 Zoltan Horvath <zoltan@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| Allow custom memory allocation control for dtoa's P5Node struct |
| https://bugs.webkit.org/show_bug.cgi?id=32544 |
| |
| Inherits P5Node struct from Noncopyable because it is instantiated by |
| 'new' at wtf/dtoa.cpp:588 and don't need to be copyable. |
| |
| * wtf/dtoa.cpp: |
| |
| 2009-12-14 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Simon Fraser. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=32524 |
| REGRESSION(52084): fast/dom/prototypes.html failing two CSS tests |
| |
| * wtf/StdLibExtras.h: |
| (WTF::bitCount): The original patch put the parentheses in the wrong |
| place, completely changing the calculation and making it almost always |
| wrong. Moved the parentheses around the '+' operation, like the original |
| compiler warning suggested. |
| |
| 2009-12-14 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Unreviewed trivial buildfix. |
| |
| Fix crosses initialization of usedPrimaryBlocks for JSValue32 |
| |
| * runtime/Collector.cpp: |
| (JSC::Heap::markConservatively): |
| |
| 2009-12-14 Csaba Osztrogonác <ossy@webkit.org> |
| |
| Reviewed by Simon Hausmann. |
| |
| GCC 4.3.x warning fixed. Suggested parantheses added. |
| warning: ../../../JavaScriptCore/wtf/StdLibExtras.h:77: warning: suggest parentheses around + or - in operand of & |
| |
| * wtf/StdLibExtras.h: |
| (WTF::bitCount): |
| |
| 2009-12-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Changed GC from mark-sweep to mark-allocate. |
| |
| Added WeakGCMap to keep WebCore blissfully ignorant about objects that |
| have become garbage but haven't run their destructors yet. |
| |
| 1% SunSpider speedup. |
| 7.6% v8 speedup (37% splay speedup). |
| 17% speedup on bench-alloc-nonretained.js. |
| 18% speedup on bench-alloc-retained.js. |
| |
| * API/JSBase.cpp: |
| (JSGarbageCollect): |
| * API/JSContextRef.cpp: |
| * JavaScriptCore.exp: |
| * JavaScriptCore.xcodeproj/project.pbxproj: Updated for renames and new |
| files. |
| |
| * debugger/Debugger.cpp: |
| (JSC::Debugger::recompileAllJSFunctions): Updated to use the Collector |
| iterator abstraction. |
| |
| * jsc.cpp: |
| (functionGC): Updated for rename. |
| |
| * runtime/Collector.cpp: Slightly reduced the number of allocations per |
| collection, so that small workloads only allocate on collector block, |
| rather than two. |
| |
| (JSC::Heap::Heap): Updated to use the new allocateBlock function. |
| |
| (JSC::Heap::destroy): Updated to use the new freeBlocks function. |
| |
| (JSC::Heap::allocateBlock): New function to initialize a block when |
| allocating it. |
| |
| (JSC::Heap::freeBlock): Consolidated the responsibility for running |
| destructors into this function. |
| |
| (JSC::Heap::freeBlocks): Updated to use freeBlock. |
| |
| (JSC::Heap::recordExtraCost): Sweep the heap in this reporting function, |
| so that allocation, which is more common, doesn't have to check extraCost. |
| |
| (JSC::Heap::heapAllocate): Run destructors right before recycling a |
| garbage cell. This has better cache utilization than a separate sweep phase. |
| |
| (JSC::Heap::resizeBlocks): |
| (JSC::Heap::growBlocks): |
| (JSC::Heap::shrinkBlocks): New set of functions for managing the size of |
| the heap, now that the heap doesn't maintain any information about its |
| size. |
| |
| (JSC::isPointerAligned): |
| (JSC::isHalfCellAligned): |
| (JSC::isPossibleCell): |
| (JSC::isCellAligned): |
| (JSC::Heap::markConservatively): Cleaned up this code a bit. |
| |
| (JSC::Heap::clearMarkBits): |
| (JSC::Heap::markedCells): Some helper functions for examining the the mark |
| bitmap. |
| |
| (JSC::Heap::sweep): Simplified this function by using a DeadObjectIterator. |
| |
| (JSC::Heap::markRoots): Reordered some operations for clarity. |
| |
| (JSC::Heap::objectCount): |
| (JSC::Heap::addToStatistics): |
| (JSC::Heap::statistics): Rewrote these functions to calculate an object |
| count on demand, since the heap doesn't maintain this information by |
| itself. |
| |
| (JSC::Heap::reset): New function for resetting the heap once we've |
| exhausted heap space. |
| |
| (JSC::Heap::collectAllGarbage): This function matches the old collect() |
| behavior, but it's now an uncommon function used only by API. |
| |
| * runtime/Collector.h: |
| (JSC::CollectorBitmap::count): |
| (JSC::CollectorBitmap::isEmpty): Added some helper functions for managing |
| the collector mark bitmap. |
| |
| (JSC::Heap::reportExtraMemoryCost): Changed reporting from cell equivalents |
| to bytes, so it's easier to understand. |
| |
| * runtime/CollectorHeapIterator.h: |
| (JSC::CollectorHeapIterator::CollectorHeapIterator): |
| (JSC::CollectorHeapIterator::operator!=): |
| (JSC::CollectorHeapIterator::operator*): |
| (JSC::CollectorHeapIterator::advance): |
| (JSC::::LiveObjectIterator): |
| (JSC::::operator): |
| (JSC::::DeadObjectIterator): |
| (JSC::::ObjectIterator): New iterators for encapsulating details about |
| heap layout, and what's live and dead on the heap. |
| |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::putSlowCase): |
| (JSC::JSArray::increaseVectorLength): Delay reporting extra cost until |
| we're fully constructed, so the heap mark phase won't visit us in an |
| invalid state. |
| |
| * runtime/JSCell.h: |
| (JSC::JSCell::): |
| (JSC::JSCell::createDummyStructure): |
| (JSC::JSCell::JSCell): |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| * runtime/JSGlobalData.h: Added a dummy cell to simplify allocation logic. |
| |
| * runtime/JSString.h: |
| (JSC::jsSubstring): Don't report extra cost for substrings, since they |
| share a buffer that's already reported extra cost. |
| |
| * runtime/Tracing.d: |
| * runtime/Tracing.h: Changed these dtrace hooks not to report object |
| counts, since they're no longer cheap to compute. |
| |
| * runtime/UString.h: Updated for renames. |
| |
| * runtime/WeakGCMap.h: Added. |
| (JSC::WeakGCMap::isEmpty): |
| (JSC::WeakGCMap::uncheckedGet): |
| (JSC::WeakGCMap::uncheckedBegin): |
| (JSC::WeakGCMap::uncheckedEnd): |
| (JSC::::get): |
| (JSC::::take): |
| (JSC::::set): |
| (JSC::::uncheckedRemove): Mentioned above. |
| |
| * wtf/StdLibExtras.h: |
| (WTF::bitCount): Added a bit population count function, so the heap can |
| count live objects to fulfill statistics questions. |
| |
| The very last cell in the block is not allocated -- should not be marked. |
| |
| 2009-12-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix: Export some new symbols. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2009-12-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix: Removed some old exports. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2009-12-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix: Use unsigned instead of uint32_t to avoid dependencies. |
| |
| * wtf/StdLibExtras.h: |
| (WTF::bitCount): |
| |
| 2009-12-13 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by NOBODY (speculative Windows build fix). |
| |
| * runtime/JSGlobalObjectFunctions.cpp: |
| |
| 2009-12-13 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=32496 |
| Switch remaining cases of string construction to use StringBuilder. |
| Builds strings using a vector rather than using string append / addition. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * runtime/Executable.cpp: |
| (JSC::FunctionExecutable::paramString): |
| * runtime/FunctionConstructor.cpp: |
| (JSC::constructFunction): |
| * runtime/JSGlobalObjectFunctions.cpp: |
| (JSC::encode): |
| (JSC::decode): |
| (JSC::globalFuncEscape): |
| (JSC::globalFuncUnescape): |
| * runtime/JSONObject.cpp: |
| (JSC::Stringifier::stringify): |
| (JSC::Stringifier::indent): |
| * runtime/JSString.h: |
| * runtime/LiteralParser.cpp: |
| (JSC::LiteralParser::Lexer::lexString): |
| * runtime/NumberPrototype.cpp: |
| (JSC::integerPartNoExp): |
| (JSC::numberProtoFuncToFixed): |
| (JSC::numberProtoFuncToPrecision): |
| * runtime/Operations.h: |
| (JSC::jsString): |
| * runtime/StringPrototype.cpp: |
| (JSC::substituteBackreferencesSlow): |
| (JSC::substituteBackreferences): |
| (JSC::stringProtoFuncConcat): |
| |
| 2009-12-08 Jeremy Moskovich <jeremy@chromium.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Add code to allow toggling ATSUI/Core Text rendering at runtime in ComplexTextController. |
| https://bugs.webkit.org/show_bug.cgi?id=31802 |
| |
| The goal here is to allow for a zero runtime hit for ports that decide to select |
| the API at compile time. |
| When both USE(ATSUI) and USE(CORE_TEXT) are true, the API is toggled |
| at runtime. Core Text is used for OS Versions >= 10.6. |
| |
| * wtf/Platform.h: #define USE_CORE_TEXT and USE_ATSUI on Chrome/Mac. |
| |
| 2009-12-11 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Unify codegen for forward and backward variants of branches |
| https://bugs.webkit.org/show_bug.cgi?id=32463 |
| |
| * jit/JIT.h: |
| (JSC::JIT::emit_op_loop): Implemented in terms of forward variant. |
| (JSC::JIT::emit_op_loop_if_true): ditto |
| (JSC::JIT::emitSlow_op_loop_if_true): ditto |
| (JSC::JIT::emit_op_loop_if_false): ditto |
| (JSC::JIT::emitSlow_op_loop_if_false): ditto |
| (JSC::JIT::emit_op_loop_if_less): ditto |
| (JSC::JIT::emitSlow_op_loop_if_less): ditto |
| * jit/JITOpcodes.cpp: |
| |
| 2009-12-11 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Anders Carlsson. |
| |
| Allow WTFs concept of the main thread to differ from pthreads when necessary. |
| |
| * wtf/ThreadingPthreads.cpp: |
| (WTF::initializeThreading): |
| (WTF::isMainThread): |
| * wtf/mac/MainThreadMac.mm: |
| (WTF::initializeMainThreadPlatform): |
| (WTF::scheduleDispatchFunctionsOnMainThread): |
| |
| 2009-12-11 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=32454 |
| Refactor construction of simple strings to avoid string concatenation. |
| |
| Building strings through concatenation has a memory and performance cost - |
| a memory cost since we must over-allocate the buffer to leave space to append |
| into, and performance in that the string may still require reallocation (and |
| thus copying during construction). Instead move the full construction to |
| within a single function call (makeString), so that the arguments' lengths |
| can be calculated and an appropriate sized buffer allocated before copying |
| any characters. |
| |
| ~No performance change (~2% progression on date tests). |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::escapeQuotes): |
| (JSC::valueToSourceString): |
| (JSC::constantName): |
| (JSC::idName): |
| (JSC::CodeBlock::registerName): |
| (JSC::regexpToSourceString): |
| (JSC::regexpName): |
| * bytecompiler/NodesCodegen.cpp: |
| (JSC::substitute): |
| * profiler/Profiler.cpp: |
| (JSC::Profiler::createCallIdentifier): |
| * runtime/DateConstructor.cpp: |
| (JSC::callDate): |
| * runtime/DateConversion.cpp: |
| (JSC::formatDate): |
| (JSC::formatDateUTCVariant): |
| (JSC::formatTime): |
| (JSC::formatTimeUTC): |
| * runtime/DateConversion.h: |
| (JSC::): |
| * runtime/DatePrototype.cpp: |
| (JSC::dateProtoFuncToString): |
| (JSC::dateProtoFuncToUTCString): |
| (JSC::dateProtoFuncToDateString): |
| (JSC::dateProtoFuncToTimeString): |
| (JSC::dateProtoFuncToGMTString): |
| * runtime/ErrorPrototype.cpp: |
| (JSC::errorProtoFuncToString): |
| * runtime/ExceptionHelpers.cpp: |
| (JSC::createUndefinedVariableError): |
| (JSC::createErrorMessage): |
| (JSC::createInvalidParamError): |
| * runtime/FunctionPrototype.cpp: |
| (JSC::insertSemicolonIfNeeded): |
| (JSC::functionProtoFuncToString): |
| * runtime/ObjectPrototype.cpp: |
| (JSC::objectProtoFuncToString): |
| * runtime/RegExpConstructor.cpp: |
| (JSC::constructRegExp): |
| * runtime/RegExpObject.cpp: |
| (JSC::RegExpObject::match): |
| * runtime/RegExpPrototype.cpp: |
| (JSC::regExpProtoFuncCompile): |
| (JSC::regExpProtoFuncToString): |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncBig): |
| (JSC::stringProtoFuncSmall): |
| (JSC::stringProtoFuncBlink): |
| (JSC::stringProtoFuncBold): |
| (JSC::stringProtoFuncFixed): |
| (JSC::stringProtoFuncItalics): |
| (JSC::stringProtoFuncStrike): |
| (JSC::stringProtoFuncSub): |
| (JSC::stringProtoFuncSup): |
| (JSC::stringProtoFuncFontcolor): |
| (JSC::stringProtoFuncFontsize): |
| (JSC::stringProtoFuncAnchor): |
| * runtime/UString.h: |
| (JSC::): |
| (JSC::makeString): |
| |
| 2009-12-10 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=32400 |
| Switch remaining cases of string addition to use ropes. |
| |
| Re-landing r51975 - added toPrimitiveString method, |
| performs toPrimitive then subsequent toString operations. |
| |
| ~1% progression on Sunspidey. |
| |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/JSString.h: |
| (JSC::JSString::JSString): |
| (JSC::JSString::appendStringInConstruct): |
| * runtime/Operations.cpp: |
| (JSC::jsAddSlowCase): |
| * runtime/Operations.h: |
| (JSC::jsString): |
| (JSC::jsAdd): |
| |
| 2009-12-11 Adam Roben <aroben@apple.com> |
| |
| Windows build fix |
| |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added |
| $(WebKitOutputDir)/include/private to the include path. |
| |
| 2009-12-11 Adam Roben <aroben@apple.com> |
| |
| Move QuartzCorePresent.h to include/private |
| |
| This fixes other projects that use wtf/Platform.h |
| |
| Rubber-stamped by Steve Falkenburg. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Let VS do its thang. |
| * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Write |
| QuartzCorePresent.h to $(WebKitOutputDir)/include/private. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: |
| * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: |
| Added $(WebKitOutputDir)/include/private to the include path. |
| |
| 2009-12-11 Adam Roben <aroben@apple.com> |
| |
| Fix clean builds and everything rebuilding on every build |
| |
| Reviewed by Sam Weinig. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Don't |
| write out QuartzCorePresent.h if it exists but is older than |
| QuartzCore.h. Also, create the directory we write QuartzCorePresent.h |
| into first. |
| |
| 2009-12-11 Adam Roben <aroben@apple.com> |
| |
| Windows build fix for systems with spaces in their paths |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Quote some paths. |
| |
| 2009-12-11 Chris Marrin <cmarrin@apple.com> |
| |
| Reviewed by Adam Roben. |
| |
| Add check for presence of QuartzCore headers |
| https://bugs.webkit.org/show_bug.cgi?id=31856 |
| |
| The script now checks for the presence of QuartzCore.h. If present |
| it will turn on ACCELERATED_COMPOSITING and 3D_RENDERING to enable |
| HW compositing on Windows. The script writes QuartzCorePresent.h to |
| the build directory which has a define telling whether QuartzCore is |
| present. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: |
| * wtf/Platform.h: |
| |
| 2009-12-11 Kent Tamura <tkent@chromium.org> |
| |
| Reviewed by Darin Adler. |
| |
| Fix a problem that JSC::gregorianDateTimeToMS() returns a negative |
| value for a huge year value. |
| https://bugs.webkit.org/show_bug.cgi?id=32304 |
| |
| * wtf/DateMath.cpp: |
| (WTF::dateToDaysFrom1970): Renamed from dateToDayInYear, and changed the return type to double. |
| (WTF::calculateDSTOffset): Follow the dateToDaysFrom1970() change. |
| (WTF::timeClip): Use maxECMAScriptTime. |
| (JSC::gregorianDateTimeToMS): Follow the dateToDaysFrom1970() change. |
| |
| 2009-12-10 Adam Barth <abarth@webkit.org> |
| |
| No review, rolling out r51975. |
| http://trac.webkit.org/changeset/51975 |
| |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/JSString.h: |
| (JSC::JSString::JSString): |
| (JSC::JSString::appendStringInConstruct): |
| * runtime/Operations.cpp: |
| (JSC::jsAddSlowCase): |
| * runtime/Operations.h: |
| (JSC::jsString): |
| (JSC::jsAdd): |
| |
| 2009-12-10 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Incorrect caching of prototype lookup with dictionary base |
| https://bugs.webkit.org/show_bug.cgi?id=32402 |
| |
| Make sure we don't add cached prototype lookup to the proto_list |
| lookup chain if the top level object is a dictionary. |
| |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::tryCacheGetByID): |
| |
| 2009-12-10 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=32400 |
| Switch remaining cases of string addition to use ropes. |
| |
| ~1% progression on Sunspidey. |
| |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/JSString.h: |
| (JSC::JSString::JSString): |
| (JSC::JSString::appendStringInConstruct): |
| * runtime/Operations.cpp: |
| (JSC::jsAddSlowCase): |
| * runtime/Operations.h: |
| (JSC::jsString): |
| (JSC::jsAdd): |
| |
| 2009-12-10 Kent Hansen <kent.hansen@nokia.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Remove JSObject::getPropertyAttributes() and all usage of it. |
| https://bugs.webkit.org/show_bug.cgi?id=31933 |
| |
| getOwnPropertyDescriptor() should be used instead. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.order: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * debugger/DebuggerActivation.cpp: |
| (JSC::DebuggerActivation::getOwnPropertyDescriptor): |
| * debugger/DebuggerActivation.h: |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::propertyIsEnumerable): |
| * runtime/JSObject.h: |
| * runtime/JSVariableObject.cpp: |
| * runtime/JSVariableObject.h: |
| |
| 2009-12-10 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt & Mark Rowe. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=32367 |
| Add support for short Ropes (up to 3 entries) inline within JSString. |
| (rather than externally allocating an object to hold the rope). |
| Switch jsAdd of (JSString* + JSString*) to now make use of Ropes. |
| |
| ~1% progression on Sunspidey. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/JSString.cpp: |
| (JSC::JSString::resolveRope): |
| (JSC::JSString::toBoolean): |
| (JSC::JSString::getStringPropertyDescriptor): |
| * runtime/JSString.h: |
| (JSC::JSString::Rope::Fiber::deref): |
| (JSC::JSString::Rope::Fiber::ref): |
| (JSC::JSString::Rope::Fiber::refAndGetLength): |
| (JSC::JSString::Rope::append): |
| (JSC::JSString::JSString): |
| (JSC::JSString::~JSString): |
| (JSC::JSString::value): |
| (JSC::JSString::tryGetValue): |
| (JSC::JSString::length): |
| (JSC::JSString::canGetIndex): |
| (JSC::JSString::appendStringInConstruct): |
| (JSC::JSString::appendValueInConstructAndIncrementLength): |
| (JSC::JSString::isRope): |
| (JSC::JSString::string): |
| (JSC::JSString::ropeLength): |
| (JSC::JSString::getStringPropertySlot): |
| * runtime/Operations.h: |
| (JSC::jsString): |
| (JSC::jsAdd): |
| (JSC::resolveBase): |
| |
| 2009-12-09 Anders Carlsson <andersca@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Fix three more things found by compiling with clang++. |
| |
| * runtime/Structure.h: |
| (JSC::StructureTransitionTable::reifySingleTransition): |
| Add the 'std' qualifier to the call to make_pair. |
| |
| * wtf/DateMath.cpp: |
| (WTF::initializeDates): |
| Incrementing a bool is deprecated according to the C++ specification. |
| |
| * wtf/PtrAndFlags.h: |
| (WTF::PtrAndFlags::PtrAndFlags): |
| Name lookup should not be done in dependent bases, so explicitly qualify the call to set. |
| |
| 2009-12-09 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Google reader gets stuck in the "Loading..." state and does not complete |
| https://bugs.webkit.org/show_bug.cgi?id=32256 |
| <rdar://problem/7456388> |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitSlow_op_jless): Fix some backward branches. |
| |
| 2009-12-09 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=32228 |
| Make destruction of ropes non-recursive to prevent stack exhaustion. |
| Also, pass a UString& into initializeFiber rather than a Ustring::Rep*, |
| since the Rep is not being ref counted this could result in usage of a |
| Rep with refcount zero (where the Rep comes from a temporary UString |
| returned from a function). |
| |
| * runtime/JSString.cpp: |
| (JSC::JSString::Rope::destructNonRecursive): |
| (JSC::JSString::Rope::~Rope): |
| * runtime/JSString.h: |
| (JSC::JSString::Rope::initializeFiber): |
| * runtime/Operations.h: |
| (JSC::concatenateStrings): |
| |
| 2009-12-09 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> |
| |
| Reviewed by Eric Seidel. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=31930 |
| |
| Update to r51457. ASSERTs changed to COMPILE_ASSERTs. |
| The speedup is 25%. |
| |
| * runtime/JSGlobalData.cpp: |
| (JSC::VPtrSet::VPtrSet): |
| |
| 2009-12-09 Steve Block <steveblock@google.com> |
| |
| Reviewed by Adam Barth. |
| |
| Updates Android Makefiles with latest additions. |
| https://bugs.webkit.org/show_bug.cgi?id=32278 |
| |
| * Android.mk: Modified. |
| * Android.v8.wtf.mk: Modified. |
| |
| 2009-12-09 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Fix a bug found while trying to compile JavaScriptCore with clang++. |
| |
| * yarr/RegexPattern.h: |
| (JSC::Yarr::PatternTerm::PatternTerm): Don't self assign here. Use false instead. |
| |
| 2009-12-09 Anders Carlsson <andersca@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Attempt to fix the Windows build. |
| |
| * wtf/FastMalloc.h: |
| |
| 2009-12-09 Anders Carlsson <andersca@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Fix some things found while trying to compile JavaScriptCore with clang++. |
| |
| * wtf/FastMalloc.h: |
| Add correct exception specifications for the allocation/deallocation operators. |
| |
| * wtf/Vector.h: |
| * wtf/VectorTraits.h: |
| Fix a bunch of struct/class mismatches. |
| |
| 2009-12-08 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| move code generation portions of Nodes.cpp to bytecompiler directory |
| https://bugs.webkit.org/show_bug.cgi?id=32284 |
| |
| * bytecompiler/NodesCodegen.cpp: Copied from parser/Nodes.cpp. Removed parts that |
| are not about codegen. |
| * parser/Nodes.cpp: Removed everything that is about codegen. |
| |
| Update build systems: |
| |
| * Android.mk: |
| * GNUmakefile.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.pri: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * JavaScriptCoreSources.bkl: |
| |
| 2009-12-08 Kevin Watters <kevinwatters@gmail.com> |
| |
| Reviewed by Kevin Ollivier. |
| |
| [wx] Mac plugins support. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=32236 |
| |
| * wtf/Platform.h: |
| |
| 2009-12-08 Dmitry Titov <dimich@chromium.org> |
| |
| Rubber-stamped by David Levin. |
| |
| Revert and reopen "Add asserts to RefCounted to make sure ref/deref happens on the right thread." |
| It may have caused massive increase of reported leaks on the bots. |
| https://bugs.webkit.org/show_bug.cgi?id=31639 |
| |
| * GNUmakefile.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * runtime/Structure.cpp: |
| (JSC::Structure::Structure): |
| * wtf/RefCounted.h: |
| (WTF::RefCountedBase::ref): |
| (WTF::RefCountedBase::hasOneRef): |
| (WTF::RefCountedBase::refCount): |
| (WTF::RefCountedBase::derefBase): |
| * wtf/ThreadVerifier.h: Removed. |
| |
| 2009-12-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> |
| |
| Reviewed by Darin Adler. |
| |
| Make WebKit build correctly on FreeBSD, IA64, and Alpha. |
| Based on work by Petr Salinger <Petr.Salinger@seznam.cz>, |
| and Colin Watson <cjwatson@ubuntu.com>. |
| |
| * wtf/Platform.h: |
| |
| 2009-12-08 Dmitry Titov <dimich@chromium.org> |
| |
| Reviewed by Darin Adler. |
| |
| Add asserts to RefCounted to make sure ref/deref happens on the right thread. |
| https://bugs.webkit.org/show_bug.cgi?id=31639 |
| |
| * runtime/Structure.cpp: |
| (JSC::Structure::Structure): Disable thread verification on this class since it uses addressOfCount(). |
| * wtf/RefCounted.h: |
| (WTF::RefCountedBase::ref): Add ASSERT. |
| (WTF::RefCountedBase::hasOneRef): Ditto. |
| (WTF::RefCountedBase::refCount): Ditto. |
| (WTF::RefCountedBase::derefBase): Ditto. |
| (WTF::RefCountedBase::disableThreadVerification): delegate to ThreadVerifier method. |
| * wtf/ThreadVerifier.h: Added. |
| (WTF::ThreadVerifier::ThreadVerifier): New Debug-only class to verify that ref/deref of RefCounted is done on the same thread. |
| (WTF::ThreadVerifier::activate): Activates checks. Called when ref count becomes above 2. |
| (WTF::ThreadVerifier::deactivate): Deactivates checks. Called when ref count drops below 2. |
| (WTF::ThreadVerifier::disableThreadVerification): used on objects that should not be checked (StringImpl etc) |
| (WTF::ThreadVerifier::verifyThread): |
| * GNUmakefile.am: Add ThreadVerifier.h to the build file. |
| * JavaScriptCore.gypi: Ditto. |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto. |
| * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. |
| |
| 2009-12-08 Steve Block <steveblock@google.com> |
| |
| Reviewed by Adam Barth. |
| |
| [Android] Adds Makefiles for Android port. |
| https://bugs.webkit.org/show_bug.cgi?id=31325 |
| |
| * Android.mk: Added. |
| * Android.v8.wtf.mk: Added. |
| |
| 2009-12-07 Dmitry Titov <dimich@chromium.org> |
| |
| Rubber-stamped by Darin Adler. |
| |
| Remove ENABLE_SHARED_SCRIPT flags |
| https://bugs.webkit.org/show_bug.cgi?id=32245 |
| This patch was obtained by "git revert" command and then un-reverting of ChangeLog files. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * wtf/Platform.h: |
| |
| 2009-12-07 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by NOBODY (Windows build fixage part I). |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2009-12-05 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=32184 |
| Handle out-of-memory conditions with JSC Ropes with a JS exception, rather than crashing. |
| Switch from using fastMalloc to tryFastMalloc, pass an ExecState to record the exception on. |
| |
| * API/JSCallbackObjectFunctions.h: |
| (JSC::::toString): |
| * API/JSValueRef.cpp: |
| (JSValueIsStrictEqual): |
| * JavaScriptCore.exp: |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitEqualityOp): |
| * debugger/DebuggerCallFrame.cpp: |
| (JSC::DebuggerCallFrame::functionName): |
| (JSC::DebuggerCallFrame::calculatedFunctionName): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::callEval): |
| (JSC::Interpreter::privateExecute): |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * profiler/ProfileGenerator.cpp: |
| (JSC::ProfileGenerator::addParentForConsoleStart): |
| * profiler/Profiler.cpp: |
| (JSC::Profiler::willExecute): |
| (JSC::Profiler::didExecute): |
| (JSC::Profiler::createCallIdentifier): |
| (JSC::createCallIdentifierFromFunctionImp): |
| * profiler/Profiler.h: |
| * runtime/ArrayPrototype.cpp: |
| (JSC::arrayProtoFuncIndexOf): |
| (JSC::arrayProtoFuncLastIndexOf): |
| * runtime/DateConstructor.cpp: |
| (JSC::constructDate): |
| * runtime/FunctionPrototype.cpp: |
| (JSC::functionProtoFuncToString): |
| * runtime/InternalFunction.cpp: |
| (JSC::InternalFunction::name): |
| (JSC::InternalFunction::displayName): |
| (JSC::InternalFunction::calculatedDisplayName): |
| * runtime/InternalFunction.h: |
| * runtime/JSCell.cpp: |
| (JSC::JSCell::getString): |
| * runtime/JSCell.h: |
| (JSC::JSValue::getString): |
| * runtime/JSONObject.cpp: |
| (JSC::gap): |
| (JSC::Stringifier::Stringifier): |
| (JSC::Stringifier::appendStringifiedValue): |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::putDirectFunction): |
| (JSC::JSObject::putDirectFunctionWithoutTransition): |
| (JSC::JSObject::defineOwnProperty): |
| * runtime/JSObject.h: |
| * runtime/JSPropertyNameIterator.cpp: |
| (JSC::JSPropertyNameIterator::get): |
| * runtime/JSString.cpp: |
| (JSC::JSString::Rope::~Rope): |
| (JSC::JSString::resolveRope): |
| (JSC::JSString::getPrimitiveNumber): |
| (JSC::JSString::toNumber): |
| (JSC::JSString::toString): |
| (JSC::JSString::toThisString): |
| (JSC::JSString::getStringPropertyDescriptor): |
| * runtime/JSString.h: |
| (JSC::JSString::Rope::createOrNull): |
| (JSC::JSString::Rope::operator new): |
| (JSC::JSString::value): |
| (JSC::JSString::tryGetValue): |
| (JSC::JSString::getIndex): |
| (JSC::JSString::getStringPropertySlot): |
| (JSC::JSValue::toString): |
| * runtime/JSValue.h: |
| * runtime/NativeErrorConstructor.cpp: |
| (JSC::NativeErrorConstructor::NativeErrorConstructor): |
| * runtime/Operations.cpp: |
| (JSC::JSValue::strictEqualSlowCase): |
| * runtime/Operations.h: |
| (JSC::JSValue::equalSlowCaseInline): |
| (JSC::JSValue::strictEqualSlowCaseInline): |
| (JSC::JSValue::strictEqual): |
| (JSC::jsLess): |
| (JSC::jsLessEq): |
| (JSC::jsAdd): |
| (JSC::concatenateStrings): |
| * runtime/PropertyDescriptor.cpp: |
| (JSC::PropertyDescriptor::equalTo): |
| * runtime/PropertyDescriptor.h: |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncReplace): |
| (JSC::stringProtoFuncToLowerCase): |
| (JSC::stringProtoFuncToUpperCase): |
| |
| 2009-12-07 Nikolas Zimmermann <nzimmermann@rim.com> |
| |
| Reviewed by Holger Freyther. |
| |
| Turn on (SVG) Filters support, by default. |
| https://bugs.webkit.org/show_bug.cgi?id=32224 |
| |
| * Configurations/FeatureDefines.xcconfig: Enable FILTERS build flag. |
| |
| 2009-12-07 Steve Falkenburg <sfalken@apple.com> |
| |
| Build fix. Be flexible about which version of ICU is used on Windows. |
| |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Add optional xcopy commands to copy ICU 4.2. |
| |
| 2009-12-07 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| op_loop_if_less JIT codegen is broken for 64-bit |
| https://bugs.webkit.org/show_bug.cgi?id=32221 |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_loop_if_false): Fix codegen in this version - test was backwards. |
| |
| 2009-12-07 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Object.create fails if properties on the descriptor are getters |
| https://bugs.webkit.org/show_bug.cgi?id=32219 |
| |
| Correctly initialise the PropertySlots with the descriptor object. |
| |
| * runtime/ObjectConstructor.cpp: |
| (JSC::toPropertyDescriptor): |
| |
| 2009-12-06 Maciej Stachowiak <mjs@apple.com> |
| |
| Not reviewed, build fix. |
| |
| Actually tested 64-bit *and* 32-bit build this time. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_loop_if_false): |
| |
| 2009-12-06 Maciej Stachowiak <mjs@apple.com> |
| |
| Not reviewed, build fix. |
| |
| Really really fix 64-bit build for prior patch (actually tested this time). |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_loop_if_false): |
| (JSC::JIT::emitSlow_op_loop_if_false): |
| |
| 2009-12-06 Maciej Stachowiak <mjs@apple.com> |
| |
| Not reviewed, build fix. |
| |
| Really fix 64-bit build for prior patch. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitSlow_op_jless): |
| |
| 2009-12-06 Maciej Stachowiak <mjs@apple.com> |
| |
| Not reviewed, build fix. |
| |
| Fix 64-bit build for prior patch. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emitSlow_op_loop_if_less): |
| |
| 2009-12-05 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| conway benchmark spends half it's time in op_less (jump fusion fails) |
| https://bugs.webkit.org/show_bug.cgi?id=32190 |
| |
| <1% speedup on SunSpider and V8 |
| 2x speedup on "conway" benchmark |
| |
| Two optimizations: |
| 1) Improve codegen for logical operators &&, || and ! in a condition context |
| |
| When generating code for combinations of &&, || and !, in a |
| condition context (i.e. in an if statement or loop condition), we |
| used to produce a value, and then separately jump based on its |
| truthiness. Now we pass the false and true targets in, and let the |
| logical operators generate jumps directly. This helps in four |
| ways: |
| |
| a) Individual clauses of a short-circuit logical operator can now |
| jump directly to the then or else clause of an if statement (or to |
| the top or exit of a loop) instead of jumping to a jump. |
| |
| b) It used to be that jump fusion with the condition of the first |
| clause of a logical operator was inhibited, because the register |
| was ref'd to be used later, in the actual condition jump; this no |
| longer happens since a jump straight to the final target is |
| generated directly. |
| |
| c) It used to be that jump fusion with the condition of the second |
| clause of a logical operator was inhibited, because there was a |
| jump target right after the second clause and before the actual |
| condition jump. But now it's no longer necessary for the first |
| clause to jump there so jump fusion is not blocked. |
| |
| d) We avoid generating excess mov statements in some cases. |
| |
| As a concrete example this source: |
| |
| if (!((x < q && y < q) || (t < q && z < q))) { |
| // ... |
| } |
| |
| Used to generate this bytecode: |
| |
| [ 34] less r1, r-15, r-19 |
| [ 38] jfalse r1, 7(->45) |
| [ 41] less r1, r-16, r-19 |
| [ 45] jtrue r1, 14(->59) |
| [ 48] less r1, r-17, r-19 |
| [ 52] jfalse r1, 7(->59) |
| [ 55] less r1, r-18, r-19 |
| [ 59] jtrue r1, 17(->76) |
| |
| And now generates this bytecode (also taking advantage of the second optimization below): |
| |
| [ 34] jnless r-15, r-19, 8(->42) |
| [ 38] jless r-16, r-19, 26(->64) |
| [ 42] jnless r-17, r-19, 8(->50) |
| [ 46] jless r-18, r-19, 18(->64) |
| |
| Note the jump fusion and the fact that there's less jump |
| indirection - three of the four jumps go straight to the target |
| clause instead of indirecting through another jump. |
| |
| 2) Implement jless opcode to take advantage of the above, since we'll now often generate |
| a less followed by a jtrue where fusion is not forbidden. |
| |
| * parser/Nodes.h: |
| (JSC::ExpressionNode::hasConditionContextCodegen): Helper function to determine |
| whether a node supports special conditional codegen. Return false as this is the default. |
| (JSC::ExpressionNode::emitBytecodeInConditionContext): Assert not reached - only really |
| defined for nodes that do have conditional codegen. |
| (JSC::UnaryOpNode::expr): Add const version. |
| (JSC::LogicalNotNode::hasConditionContextCodegen): Returne true only if subexpression |
| supports it. |
| (JSC::LogicalOpNode::hasConditionContextCodegen): Return true. |
| * parser/Nodes.cpp: |
| (JSC::LogicalNotNode::emitBytecodeInConditionContext): Implemented - just swap |
| the true and false targets for the child node. |
| (JSC::LogicalOpNode::emitBytecodeInConditionContext): Implemented - handle jumps |
| directly, improving codegen quality. Also handles further nested conditional codegen. |
| (JSC::ConditionalNode::emitBytecode): Use condition context codegen when available. |
| (JSC::IfNode::emitBytecode): ditto |
| (JSC::IfElseNode::emitBytecode): ditto |
| (JSC::DoWhileNode::emitBytecode): ditto |
| (JSC::WhileNode::emitBytecode): ditto |
| (JSC::ForNode::emitBytecode): ditto |
| |
| * bytecode/Opcode.h: |
| - Added loop_if_false opcode - needed now that falsey jumps can be backwards. |
| - Added jless opcode to take advantage of new fusion opportunities. |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::dump): Handle above. |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitJumpIfTrue): Add peephole for less + jtrue ==> jless. |
| (JSC::BytecodeGenerator::emitJumpIfFalse): Add handling of backwrds falsey jumps. |
| * bytecompiler/BytecodeGenerator.h: |
| (JSC::BytecodeGenerator::emitNodeInConditionContext): Wrapper to handle tracking of |
| overly deep expressions etc. |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): Implement the two new opcodes (loop_if_false, jless). |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileMainPass): Implement JIT support for the two new opcodes. |
| (JSC::JIT::privateCompileSlowCases): ditto |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_jless): |
| (JSC::JIT::emitSlow_op_jless): ditto |
| (JSC::JIT::emitBinaryDoubleOp): ditto |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emitSlow_op_loop_if_less): ditto |
| (JSC::JIT::emit_op_loop_if_false): ditto |
| (JSC::JIT::emitSlow_op_loop_if_false): ditto |
| * jit/JITStubs.cpp: |
| * jit/JITStubs.h: |
| (JSC::): |
| |
| 2009-12-04 Kent Hansen <kent.hansen@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| JavaScript delete operator should return false for string properties |
| https://bugs.webkit.org/show_bug.cgi?id=32012 |
| |
| * runtime/StringObject.cpp: |
| (JSC::StringObject::deleteProperty): |
| |
| 2009-12-03 Drew Wilson <atwilson@chromium.org> |
| |
| Rolled back r51633 because it causes a perf regression in Chromium. |
| |
| * wtf/Platform.h: |
| |
| 2009-12-03 Gavin Barraclough <barraclough@apple.com> |
| |
| Try and fix the Windows build. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a symbol that should be exported. |
| |
| 2009-12-03 Mark Rowe <mrowe@apple.com> |
| |
| Try and fix the Mac build. |
| |
| * JavaScriptCore.exp: Export a symbol that should be exported. |
| |
| 2009-12-03 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| REGRESSION(4.0.3-48777): Crash in JSC::ExecState::propertyNames() (Debug-only?) |
| https://bugs.webkit.org/show_bug.cgi?id=32133 |
| |
| Work around odd GCC-ism and correct the scopechain for use by |
| calls made while a cachedcall is active on the callstack. |
| |
| * interpreter/CachedCall.h: |
| (JSC::CachedCall::newCallFrame): |
| * runtime/JSArray.cpp: |
| (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key): |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncReplace): |
| |
| 2009-12-03 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver "Brraaaaiiiinnnnnzzzzzzzz" Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=32136 |
| Add a rope representation to JSString. Presently JSString always holds its data in UString form. |
| Instead, allow the result of a string concatenation to be represented in a tree form - with a |
| variable sized, reference-counted rope node retaining a set of UString::Reps (or other rope nopes). |
| |
| Strings must still currently be resolved down to a flat UString representation before being used, |
| but by holding the string in a rope representation during construction we can avoid copying data |
| until we know the final size of the string. |
| |
| ~2% progression on SunSpider (~25% on date-format-xparb, ~20% on string-validate-input). |
| |
| * JavaScriptCore.exp: |
| |
| - Update exports. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| |
| - Make use of new JSString::length() method to avoid prematurely resolving ropes. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| |
| - Switch the string length trampoline to read the length directly from JSString::m_length, |
| rather than from the JSString's UString::Rep's 'len' property. |
| |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| |
| - Modify op_add such that addition of two strings, where either or both strings are already |
| in rope representation, produces a rope as a result. |
| |
| * runtime/JSString.cpp: |
| (JSC::JSString::Rope::~Rope): |
| (JSC::copyChars): |
| (JSC::JSString::resolveRope): |
| (JSC::JSString::getPrimitiveNumber): |
| (JSC::JSString::toBoolean): |
| (JSC::JSString::toNumber): |
| (JSC::JSString::toString): |
| (JSC::JSString::toThisString): |
| (JSC::JSString::getStringPropertyDescriptor): |
| * runtime/JSString.h: |
| (JSC::JSString::Rope::Fiber::Fiber): |
| (JSC::JSString::Rope::Fiber::destroy): |
| (JSC::JSString::Rope::Fiber::isRope): |
| (JSC::JSString::Rope::Fiber::rope): |
| (JSC::JSString::Rope::Fiber::string): |
| (JSC::JSString::Rope::create): |
| (JSC::JSString::Rope::initializeFiber): |
| (JSC::JSString::Rope::ropeLength): |
| (JSC::JSString::Rope::stringLength): |
| (JSC::JSString::Rope::fibers): |
| (JSC::JSString::Rope::Rope): |
| (JSC::JSString::Rope::operator new): |
| (JSC::JSString::JSString): |
| (JSC::JSString::value): |
| (JSC::JSString::length): |
| (JSC::JSString::isRope): |
| (JSC::JSString::rope): |
| (JSC::JSString::string): |
| (JSC::JSString::canGetIndex): |
| (JSC::jsSingleCharacterSubstring): |
| (JSC::JSString::getIndex): |
| (JSC::jsSubstring): |
| (JSC::JSString::getStringPropertySlot): |
| |
| - Add rope form. |
| |
| * runtime/Operations.h: |
| (JSC::jsAdd): |
| (JSC::concatenateStrings): |
| |
| - Update string concatenation, and addition of ropes, to produce ropes. |
| |
| * runtime/StringObject.cpp: |
| (JSC::StringObject::getOwnPropertyNames): |
| |
| - Make use of new JSString::length() method to avoid prematurely resolving ropes. |
| |
| 2009-11-23 Jeremy Moskovich <jeremy@chromium.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Switch Chrome/Mac to use Core Text APIs rather than ATSUI APIs. |
| https://bugs.webkit.org/show_bug.cgi?id=31802 |
| |
| No test since this is already covered by existing pixel tests. |
| |
| * wtf/Platform.h: #define USE_CORE_TEXT for Chrome/Mac. |
| |
| 2009-12-02 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Add files missed in prior patch. |
| |
| * runtime/JSZombie.cpp: |
| (JSC::): |
| (JSC::JSZombie::leakedZombieStructure): |
| * runtime/JSZombie.h: Added. |
| (JSC::JSZombie::JSZombie): |
| (JSC::JSZombie::isZombie): |
| (JSC::JSZombie::classInfo): |
| (JSC::JSZombie::isGetterSetter): |
| (JSC::JSZombie::isAPIValueWrapper): |
| (JSC::JSZombie::isPropertyNameIterator): |
| (JSC::JSZombie::getCallData): |
| (JSC::JSZombie::getConstructData): |
| (JSC::JSZombie::getUInt32): |
| (JSC::JSZombie::toPrimitive): |
| (JSC::JSZombie::getPrimitiveNumber): |
| (JSC::JSZombie::toBoolean): |
| (JSC::JSZombie::toNumber): |
| (JSC::JSZombie::toString): |
| (JSC::JSZombie::toObject): |
| (JSC::JSZombie::markChildren): |
| (JSC::JSZombie::put): |
| (JSC::JSZombie::deleteProperty): |
| (JSC::JSZombie::toThisObject): |
| (JSC::JSZombie::toThisString): |
| (JSC::JSZombie::toThisJSString): |
| (JSC::JSZombie::getJSNumber): |
| (JSC::JSZombie::getOwnPropertySlot): |
| |
| 2009-12-02 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Add zombies to JSC |
| https://bugs.webkit.org/show_bug.cgi?id=32103 |
| |
| Add a compile time flag to make the JSC collector replace "unreachable" |
| objects with zombie objects. The zombie object is a JSCell subclass that |
| ASSERTs on any attempt to use the JSCell methods. In addition there are |
| a number of additional assertions in bottleneck code to catch zombie usage |
| as quickly as possible. |
| |
| Grrr. Argh. Brains. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * interpreter/Register.h: |
| (JSC::Register::Register): |
| * runtime/ArgList.h: |
| (JSC::MarkedArgumentBuffer::append): |
| (JSC::ArgList::ArgList): |
| * runtime/Collector.cpp: |
| (JSC::Heap::destroy): |
| (JSC::Heap::sweep): |
| * runtime/Collector.h: |
| * runtime/JSCell.h: |
| (JSC::JSCell::isZombie): |
| (JSC::JSValue::isZombie): |
| * runtime/JSValue.h: |
| (JSC::JSValue::decode): |
| (JSC::JSValue::JSValue): |
| * wtf/Platform.h: |
| |
| 2009-12-01 Jens Alfke <snej@chromium.org> |
| |
| Reviewed by Darin Adler. |
| |
| Added variants of find/contains/add that allow a foreign key type to be used. |
| This will allow AtomicString-keyed maps to be queried by C string without |
| having to create a temporary AtomicString (see HTTPHeaderMap.) |
| The code for this is adapted from the equivalent in HashSet.h. |
| |
| * wtf/HashMap.h: |
| (WTF::HashMap::find): |
| (WTF::HashMap::contains): |
| (WTF::HashMap::add): |
| * wtf/HashSet.h: Changed "method" to "function member" in a comment. |
| |
| 2009-12-01 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> |
| |
| Revert 51551 because it broke GTK+. |
| |
| * wtf/Platform.h: |
| |
| 2009-11-30 Gavin Barraclough <barraclough@apple.com> |
| |
| Windows Build fix. Reviewed by NOBODY. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2009-11-24 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Bug 31859 - Make world selection for JSC IsolatedWorlds automagical. |
| |
| WebCore presently has to explicitly specify the world before entering into JSC, |
| which is a little fragile (particularly since property access via a |
| getter/setter might invoke execution). Instead derive the current world from |
| the lexical global object. |
| |
| Remove the temporary duct tape of willExecute/didExecute virtual hooks on the JSGlobalData::ClientData - these are no longer necessary. |
| |
| * API/JSBase.cpp: |
| (JSEvaluateScript): |
| * API/JSObjectRef.cpp: |
| (JSObjectCallAsFunction): |
| * JavaScriptCore.exp: |
| * runtime/JSGlobalData.cpp: |
| * runtime/JSGlobalData.h: |
| |
| 2009-11-30 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Kenneth Rohde Christiansen. |
| |
| [Qt] Remove obsolete PLATFORM(KDE) code |
| https://bugs.webkit.org/show_bug.cgi?id=31958 |
| |
| KDE is now using unpatched QtWebKit. |
| |
| * parser/Lexer.cpp: Remove obsolete KDE_USE_FINAL guard |
| * wtf/Platform.h: Remove PLATFORM(KDE) definition and code |
| section that is guarded with it. |
| |
| 2009-11-30 Jan-Arve Sæther <jan-arve.saether@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| [Qt] Fix compilation with win32-icc |
| |
| The Intel compiler does not support the __has_trivial_constructor type |
| trait. The Intel Compiler can report itself as _MSC_VER >= 1400. The |
| reason for that is that the Intel Compiler depends on the Microsoft |
| Platform SDK, and in order to try to be "fully" MS compatible it will |
| "pretend" to be the same MS compiler as was shipped with the MS PSDK. |
| (Thus, compiling with win32-icc with VC8 SDK will make the source code |
| "think" the compiler at hand supports this type trait). |
| |
| * wtf/TypeTraits.h: |
| |
| 2009-11-29 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Eric Seidel. |
| |
| [Qt] Mac build has JIT disabled |
| https://bugs.webkit.org/show_bug.cgi?id=31828 |
| |
| * wtf/Platform.h: Enable JIT for Qt Mac builds |
| |
| 2009-11-28 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Apply workaround for the limitation of VirtualFree with MEM_RELEASE to all ports running on Windows |
| https://bugs.webkit.org/show_bug.cgi?id=31943 |
| |
| * runtime/MarkStack.h: |
| (JSC::MarkStack::MarkStackArray::shrinkAllocation): |
| |
| 2009-11-28 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=31930 |
| |
| Seems a typo. We don't need ~270k memory to determine the vptrs. |
| |
| * runtime/JSGlobalData.cpp: |
| (JSC::VPtrSet::VPtrSet): |
| |
| 2009-11-27 Shinichiro Hamaji <hamaji@chromium.org> |
| |
| Unreviewed. |
| |
| Move GOwnPtr* from wtf to wtf/gtk |
| https://bugs.webkit.org/show_bug.cgi?id=31793 |
| |
| Build fix for chromium after r51423. |
| Exclude gtk directory from chromium build. |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| |
| 2009-11-25 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Incorrect behaviour of jneq_null in the interpreter |
| https://bugs.webkit.org/show_bug.cgi?id=31901 |
| |
| Correct the logic of jneq_null. This is already covered by existing tests. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| |
| 2009-11-26 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Move GOwnPtr* from wtf to wtf/gtk |
| https://bugs.webkit.org/show_bug.cgi?id=31793 |
| |
| * GNUmakefile.am: Change the path for GOwnPtr.*. |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: Remove |
| GOwnPtr.cpp from the exclude list. |
| * JavaScriptCore.gypi: Change the path for GOwnPtr.*. |
| * wscript: Remove GOwnPtr.cpp from the exclude list. |
| * wtf/GOwnPtr.cpp: Removed. |
| * wtf/GOwnPtr.h: Removed. |
| * wtf/Threading.h: Change the path for GOwnPtr.h. |
| * wtf/gtk/GOwnPtr.cpp: Copied from JavaScriptCore/wtf/GOwnPtr.cpp. |
| * wtf/gtk/GOwnPtr.h: Copied from JavaScriptCore/wtf/GOwnPtr.h. |
| * wtf/unicode/glib/UnicodeGLib.h: Change the path for GOwnPtr.h. |
| |
| 2009-11-24 Dmitry Titov <dimich@chromium.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Add ENABLE_SHARED_SCRIPT feature define and flag for build-webkit |
| https://bugs.webkit.org/show_bug.cgi?id=31444 |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * wtf/Platform.h: |
| |
| 2009-11-24 Chris Marrin <cmarrin@apple.com> |
| |
| Reviewed by Simon Fraser. |
| |
| Add ability to enable ACCELERATED_COMPOSITING on Windows (currently disabled) |
| https://bugs.webkit.org/show_bug.cgi?id=27314 |
| |
| * wtf/Platform.h: |
| |
| 2009-11-24 Jason Smith <dark.panda@gmail.com> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| RegExp#exec's returned Array-like object behaves differently from |
| regular Arrays |
| https://bugs.webkit.org/show_bug.cgi?id=31689 |
| |
| * JavaScriptCore/runtime/RegExpConstructor.cpp: ensure that undefined |
| values are added to the returned RegExpMatchesArray |
| |
| 2009-11-24 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| JSON.stringify performance on undefined is very poor |
| https://bugs.webkit.org/show_bug.cgi?id=31839 |
| |
| Switch from a UString to a Vector<UChar> when building |
| the JSON string, allowing us to safely remove the substr-copy |
| we otherwise did when unwinding an undefined property. |
| |
| Also turns out to be a ~5% speedup on stringification. |
| |
| * runtime/JSONObject.cpp: |
| (JSC::Stringifier::StringBuilder::append): |
| (JSC::Stringifier::stringify): |
| (JSC::Stringifier::Holder::appendNextProperty): |
| |
| 2009-11-24 Mark Rowe <mrowe@apple.com> |
| |
| Fix production builds where the source tree may be read-only. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2009-11-23 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Kenneth Rohde Christiansen. |
| |
| Include "config.h" to meet Coding Style Guidelines |
| https://bugs.webkit.org/show_bug.cgi?id=31792 |
| |
| * wtf/unicode/UTF8.cpp: |
| * wtf/unicode/glib/UnicodeGLib.cpp: |
| * wtf/unicode/wince/UnicodeWince.cpp: |
| |
| 2009-11-23 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Streamlined some Math functions where we expect or know the result not |
| to be representable as an int. |
| |
| SunSpider says 0.6% faster. |
| |
| * runtime/JSNumberCell.h: |
| (JSC::JSValue::JSValue): |
| * runtime/JSValue.h: |
| (JSC::JSValue::): |
| (JSC::jsDoubleNumber): |
| (JSC::JSValue::JSValue): Added a function for making a numeric JSValue |
| and skipping the "can I encode this as an int?" check, avoiding the |
| overhead of int <-> double roundtripping and double <-> double comparison |
| and branching. |
| |
| * runtime/MathObject.cpp: |
| (JSC::mathProtoFuncACos): |
| (JSC::mathProtoFuncASin): |
| (JSC::mathProtoFuncATan): |
| (JSC::mathProtoFuncATan2): |
| (JSC::mathProtoFuncCos): |
| (JSC::mathProtoFuncExp): |
| (JSC::mathProtoFuncLog): |
| (JSC::mathProtoFuncRandom): |
| (JSC::mathProtoFuncSin): |
| (JSC::mathProtoFuncSqrt): |
| (JSC::mathProtoFuncTan): For these functions, which we expect or know |
| to produce results not representable as ints, call jsDoubleNumber instead |
| of jsNumber. |
| |
| 2009-11-23 Mark Rowe <mrowe@apple.com> |
| |
| Unreviewed. Unbreak the regression tests after r51329. |
| |
| * API/JSBase.cpp: |
| (JSEvaluateScript): Null-check clientData before dereferencing it. |
| * API/JSObjectRef.cpp: |
| (JSObjectCallAsFunction): Ditto. |
| |
| 2009-11-23 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Part 1/3 of <rdar://problem/7377477> REGRESSION: Many web pages fail to render after interesting script runs in isolated world |
| |
| Some clients of the JavaScriptCore API expect to be able to make callbacks over the JSC API, |
| and for this to automagically cause execution to take place in the world associated with the |
| global object associated with the ExecState (JSContextRef) passed. However this is not how |
| things work - the world must be explicitly set within WebCore. |
| |
| Making this work just for API calls to evaluate & call will be a far from perfect solution, |
| since direct (non-API) use of JSC still relies on WebCore setting the current world correctly. |
| A better solution would be to make this all work automagically all throughout WebCore, but this |
| will require more refactoring. |
| |
| Since the API is in JSC but worlds only exist in WebCore, add callbacks on the JSGlobalData::ClientData |
| to allow it to update the current world on entry/exit via the JSC API. This is temporary duck |
| tape, and should be removed once the current world no longer needs to be explicitly tracked. |
| |
| * API/JSBase.cpp: |
| (JSEvaluateScript): |
| * API/JSObjectRef.cpp: |
| (JSObjectCallAsFunction): |
| * JavaScriptCore.exp: |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::ClientData::beginningExecution): |
| (JSC::JSGlobalData::ClientData::completedExecution): |
| * runtime/JSGlobalData.h: |
| |
| 2009-11-23 Steve Block <steveblock@google.com> |
| |
| Reviewed by Dmitry Titov. |
| |
| Adds MainThreadAndroid.cpp with Android-specific WTF threading functions. |
| https://bugs.webkit.org/show_bug.cgi?id=31807 |
| |
| * wtf/android: Added. |
| * wtf/android/MainThreadAndroid.cpp: Added. |
| (WTF::timeoutFired): |
| (WTF::initializeMainThreadPlatform): |
| (WTF::scheduleDispatchFunctionsOnMainThread): |
| |
| 2009-11-23 Alexey Proskuryakov <ap@apple.com> |
| |
| Reviewed by Brady Eidson. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=31748 |
| Make WebSocketHandleCFNet respect proxy auto-configuration files via CFProxySupport |
| |
| * JavaScriptCore.exp: Export callOnMainThreadAndWait. |
| |
| 2009-11-23 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Kenneth Rohde Christiansen. |
| |
| [Symbian] Fix lastIndexOf() for Symbian |
| https://bugs.webkit.org/show_bug.cgi?id=31773 |
| |
| Symbian soft floating point library has problems with operators |
| comparing NaN to numbers. Without a workaround lastIndexOf() |
| function does not work. |
| |
| Patch developed by David Leong. |
| |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncLastIndexOf):Add an extra test |
| to check for NaN for Symbian. |
| |
| 2009-11-23 Steve Block <steveblock@google.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Android port lacks implementation of atomicIncrement and atomicDecrement. |
| https://bugs.webkit.org/show_bug.cgi?id=31715 |
| |
| * wtf/Threading.h: Modified. |
| (WTF::atomicIncrement): Added Android implementation. |
| (WTF::atomicDecrement): Added Android implementation. |
| |
| 2009-11-22 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Unreviewed. |
| |
| [Qt] Sort source lists and remove obsolete comments |
| from the build system. |
| |
| * JavaScriptCore.pri: |
| |
| 2009-11-21 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Eric Seidel. |
| |
| [Qt][Mac] Turn on multiple JavaScript threads for QtWebkit on Mac |
| https://bugs.webkit.org/show_bug.cgi?id=31753 |
| |
| * wtf/Platform.h: |
| |
| 2009-11-19 Steve Block <steveblock@google.com> |
| |
| Android port lacks configuration in Platform.h and config.h. |
| https://bugs.webkit.org/show_bug.cgi?id=31671 |
| |
| * wtf/Platform.h: Modified. Added Android-specific configuration. |
| |
| 2009-11-19 Alexey Proskuryakov <ap@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=31690 |
| Make SocketStreamHandleCFNet work on Windows |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * wtf/MainThread.cpp: |
| (WTF::FunctionWithContext::FunctionWithContext): |
| (WTF::dispatchFunctionsFromMainThread): |
| (WTF::callOnMainThreadAndWait): |
| * wtf/MainThread.h: |
| Re-add callOnMainThreadAndWait(), which was removed in bug 23926. |
| |
| 2009-11-19 Dmitry Titov <dimich@chromium.org> |
| |
| Reviewed by David Levin. |
| |
| isMainThread() on Chromium (Mac and Linux) is so slow it timeouts LayoutTests.. |
| https://bugs.webkit.org/show_bug.cgi?id=31693 |
| |
| * wtf/ThreadingPthreads.cpp: |
| (WTF::initializeThreading): grab and use the pthread_t of the main thread instead of ThreadIdentifier. |
| (WTF::isMainThread): Ditto. |
| |
| 2009-11-19 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| Remove HAVE(STRING_H) guard from JavaScriptCore |
| https://bugs.webkit.org/show_bug.cgi?id=31668 |
| |
| * config.h: |
| * runtime/UString.cpp: |
| |
| 2009-11-19 Dumitru Daniliuc <dumi@chromium.org> |
| |
| Reviewed by Dmitry Titov. |
| |
| Fixing a bug in MessageQueue::removeIf() that leads to an |
| assertion failure. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=31657 |
| |
| * wtf/MessageQueue.h: |
| (WTF::MessageQueue::removeIf): |
| |
| 2009-11-19 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| Remove HAVE(FLOAT_H) guard |
| https://bugs.webkit.org/show_bug.cgi?id=31661 |
| |
| JavaScriptCore has a dependency on float.h, there is |
| no need to guard float.h. |
| |
| * runtime/DatePrototype.cpp: Remove include directive |
| for float.h as it is included in MathExtras.h already. |
| * runtime/Operations.cpp: Ditto. |
| * runtime/UString.cpp: Ditto. |
| * wtf/dtoa.cpp: Ditto. |
| * wtf/MathExtras.h: Remove HAVE(FLOAT_H) guard. |
| * wtf/Platform.h: Ditto. |
| |
| 2009-11-19 Thiago Macieira <thiago.macieira@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Build fix for 32-bit Sparc machines: these machines are big-endian. |
| |
| * wtf/Platform.h: |
| |
| 2009-11-18 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Kenneth Rohde Christiansen. |
| |
| [Qt] Remove support for Qt v4.3 or older versions |
| https://bugs.webkit.org/show_bug.cgi?id=29469 |
| |
| * JavaScriptCore.pro: |
| * jsc.pro: |
| * wtf/unicode/qt4/UnicodeQt4.h: |
| |
| 2009-11-18 Kent Tamura <tkent@chromium.org> |
| |
| Reviewed by Darin Adler. |
| |
| Move UString::from(double) implementation to new |
| WTF::doubleToStringInJavaScriptFormat(), and expose it because WebCore |
| code will use it. |
| https://bugs.webkit.org/show_bug.cgi?id=31330 |
| |
| - Introduce new function createRep(const char*, unsigned) and |
| UString::UString(const char*, unsigned) to reduce 2 calls to strlen(). |
| - Fix a bug that dtoa() doesn't update *rve if the input value is NaN |
| or Infinity. |
| |
| No new tests because this doesn't change the behavior. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * runtime/UString.cpp: |
| (JSC::createRep): |
| (JSC::UString::UString): |
| (JSC::UString::from): Move the code to doubleToStringInJavaScriptFormat(). |
| * runtime/UString.h: |
| * wtf/dtoa.cpp: |
| (WTF::dtoa): Fix a bug about rve. |
| (WTF::append): A helper for doubleToStringInJavaScriptFormat(). |
| (WTF::doubleToStringInJavaScriptFormat): Move the code from UString::from(double). |
| * wtf/dtoa.h: |
| |
| 2009-11-18 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Kenneth Rohde Christiansen. |
| |
| [Qt] Remove WTF_USE_JAVASCRIPTCORE_BINDINGS as it is no longer used |
| https://bugs.webkit.org/show_bug.cgi?id=31643 |
| |
| * JavaScriptCore.pro: |
| |
| 2009-11-18 Nate Chapin <japhet@chromium.org> |
| |
| Reviewed by Darin Fisher. |
| |
| Remove Chromium's unnecessary dependency on wtf's tcmalloc files. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=31648 |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| |
| 2009-11-18 Thiago Macieira <thiago.macieira@nokia.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| [Qt] Implement symbol hiding for JSC's JIT functions. |
| |
| These functions are implemented directly in assembly, so they need the |
| proper directives to enable/disable visibility. On ELF systems, it's |
| .hidden, whereas on Mach-O systems (Mac) it's .private_extern. On |
| Windows, it's not necessary since you have to explicitly export. I |
| also implemented the AIX idiom, though it's unlikely anyone will |
| implement AIX/POWER JIT. |
| https://bugs.webkit.org/show_bug.cgi?id=30864 |
| |
| * jit/JITStubs.cpp: |
| |
| 2009-11-18 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Interpreter may do an out of range access when throwing an exception in the profiler. |
| https://bugs.webkit.org/show_bug.cgi?id=31635 |
| |
| Add bounds check. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::throwException): |
| |
| 2009-11-18 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| Fix the clobber list of cacheFlush for ARM and Thumb2 on Linux |
| https://bugs.webkit.org/show_bug.cgi?id=31631 |
| |
| * jit/ExecutableAllocator.h: |
| (JSC::ExecutableAllocator::cacheFlush): |
| |
| 2009-11-18 Harald Fernengel <harald.fernengel@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| [Qt] Fix detection of linux-g++ |
| |
| Never use "linux-g++*" to check for linux-g++, since this will break embedded |
| builds which use linux-arm-g++ and friends. Use 'linux*-g++*' to check for any |
| g++ on linux mkspec. |
| |
| * JavaScriptCore.pri: |
| |
| 2009-11-17 Jon Honeycutt <jhoneycutt@apple.com> |
| |
| Add JSContextRefPrivate.h to list of copied files. |
| |
| Reviewed by Mark Rowe. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: |
| |
| 2009-11-17 Martin Robinson <martin.james.robinson@gmail.com> |
| |
| Reviewed by Adam Barth. |
| |
| [GTK] Style cleanup for GOwnPtr |
| https://bugs.webkit.org/show_bug.cgi?id=31506 |
| |
| Remove forward declaration in GOwnPtr and do some style cleanup. |
| |
| * wtf/GOwnPtr.cpp: |
| * wtf/GOwnPtr.h: |
| (WTF::GOwnPtr::GOwnPtr): |
| (WTF::GOwnPtr::~GOwnPtr): |
| (WTF::GOwnPtr::get): |
| (WTF::GOwnPtr::release): |
| (WTF::GOwnPtr::outPtr): |
| (WTF::GOwnPtr::set): |
| (WTF::GOwnPtr::clear): |
| (WTF::GOwnPtr::operator*): |
| (WTF::GOwnPtr::operator->): |
| (WTF::GOwnPtr::operator!): |
| (WTF::GOwnPtr::operator UnspecifiedBoolType): |
| (WTF::GOwnPtr::swap): |
| (WTF::swap): |
| (WTF::operator==): |
| (WTF::operator!=): |
| (WTF::getPtr): |
| (WTF::freeOwnedGPtr): |
| |
| 2009-11-17 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Incorrect use of JavaScriptCore API in DumpRenderTree |
| https://bugs.webkit.org/show_bug.cgi?id=31577 |
| |
| Add assertions to the 'toJS' functions to catch mistakes like |
| this early. Restructure existing code which blindly passed potentially |
| null values to toJS when forwarding exceptions so that a null check is |
| performed first. |
| |
| * API/APICast.h: |
| (toJS): |
| (toJSForGC): |
| * API/JSCallbackObjectFunctions.h: |
| (JSC::::getOwnPropertySlot): |
| (JSC::::put): |
| (JSC::::deleteProperty): |
| (JSC::::construct): |
| (JSC::::hasInstance): |
| (JSC::::call): |
| (JSC::::toNumber): |
| (JSC::::toString): |
| (JSC::::staticValueGetter): |
| (JSC::::callbackGetter): |
| * API/tests/testapi.c: Fix errors in the API tester. |
| (MyObject_getProperty): |
| (MyObject_convertToType): |
| (EvilExceptionObject_convertToType): |
| |
| 2009-11-16 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=31050 |
| |
| Minor fixes for JSVALUE32_64: branchConvertDoubleToInt32 |
| failed on a CortexA8 CPU, but not on a simulator; and |
| JITCall.cpp modifications was somehow not committed to mainline. |
| |
| * assembler/ARMAssembler.h: |
| (JSC::ARMAssembler::fmrs_r): |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::branchConvertDoubleToInt32): |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCall): |
| |
| 2009-11-16 Joerg Bornemann <joerg.bornemann@trolltech.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Fix Qt build on Windows CE 6. |
| |
| * JavaScriptCore.pri: Add missing include path. |
| * wtf/Platform.h: Include ce_time.h for Windows CE 6. |
| |
| 2009-11-13 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=31050 |
| |
| Adding optimization support for mode JSVALUE32_64 |
| on ARM systems. |
| |
| * jit/JIT.h: |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCall): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emit_op_method_check): |
| (JSC::JIT::compileGetByIdHotPath): |
| (JSC::JIT::compileGetByIdSlowCase): |
| (JSC::JIT::emit_op_put_by_id): |
| |
| 2009-11-14 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=31050 |
| |
| Adding JSVALUE32_64 support for ARM (but not turning it |
| on by default). All optimizations must be disabled, since |
| this patch is only the first of a series of patches. |
| |
| During the work, a lot of x86 specific code revealed and |
| made platform independent. |
| See revisions: 50531 50541 50593 50594 50595 |
| |
| * assembler/ARMAssembler.h: |
| (JSC::ARMAssembler::): |
| (JSC::ARMAssembler::fdivd_r): |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::lshift32): |
| (JSC::MacroAssemblerARM::neg32): |
| (JSC::MacroAssemblerARM::rshift32): |
| (JSC::MacroAssemblerARM::branchOr32): |
| (JSC::MacroAssemblerARM::set8): |
| (JSC::MacroAssemblerARM::setTest8): |
| (JSC::MacroAssemblerARM::loadDouble): |
| (JSC::MacroAssemblerARM::divDouble): |
| (JSC::MacroAssemblerARM::convertInt32ToDouble): |
| (JSC::MacroAssemblerARM::zeroDouble): |
| * jit/JIT.cpp: |
| * jit/JIT.h: |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| * jit/JITStubs.cpp: |
| * wtf/StdLibExtras.h: |
| |
| 2009-11-13 Dominik Röttsches <dominik.roettsches@access-company.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Unify TextBoundaries implementations by only relying on WTF Unicode abstractions |
| https://bugs.webkit.org/show_bug.cgi?id=31468 |
| |
| Adding isAlphanumeric abstraction, required |
| by TextBoundaries.cpp. |
| |
| * wtf/unicode/glib/UnicodeGLib.h: |
| (WTF::Unicode::isAlphanumeric): |
| * wtf/unicode/icu/UnicodeIcu.h: |
| (WTF::Unicode::isAlphanumeric): |
| |
| 2009-11-13 Norbert Leser <norbert.leser&nokia.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Added macros for USERINCLUDE paths within symbian blocks |
| to guarantee inclusion of respective header files from local path |
| first (to avoid clashes with same names of header files in system include path). |
| |
| * JavaScriptCore.pri: |
| |
| 2009-11-13 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| JSValueProtect and JSValueUnprotect don't protect API wrapper values |
| https://bugs.webkit.org/show_bug.cgi?id=31485 |
| |
| Make JSValueProtect/Unprotect use a new 'toJS' function, 'toJSForGC' that |
| does not attempt to to strip out API wrapper objects. |
| |
| * API/APICast.h: |
| (toJSForGC): |
| * API/JSValueRef.cpp: |
| (JSValueProtect): |
| (JSValueUnprotect): |
| * API/tests/testapi.c: |
| (makeGlobalNumberValue): |
| (main): |
| |
| 2009-11-13 İsmail Dönmez <ismail@namtrac.org> |
| |
| Reviewed by Antti Koivisto. |
| |
| Fix typo, ce_time.cpp should be ce_time.c |
| |
| * JavaScriptCore.pri: |
| |
| 2009-11-12 Steve VanDeBogart <vandebo@chromium.org> |
| |
| Reviewed by Adam Barth. |
| |
| Calculate the time offset only if we were able to parse |
| the date string. This saves an IPC in Chromium for |
| invalid date strings. |
| https://bugs.webkit.org/show_bug.cgi?id=31416 |
| |
| * wtf/DateMath.cpp: |
| (WTF::parseDateFromNullTerminatedCharacters): |
| (JSC::parseDateFromNullTerminatedCharacters): |
| |
| 2009-11-12 Oliver Hunt <oliver@apple.com> |
| |
| Rollout r50896 until i can work out why it causes failures. |
| |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitReturn): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::execute): |
| * parser/Nodes.cpp: |
| (JSC::EvalNode::emitBytecode): |
| |
| 2009-11-12 Steve Falkenburg <sfalken@apple.com> |
| |
| Reviewed by Stephanie Lewis. |
| |
| Remove LIBRARY directive from def file to fix Debug_All target. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2009-11-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> |
| |
| Rubber-stamped by Holger Freyther. |
| |
| Revert r50204, since it makes DRT crash on 32 bits release builds |
| for GTK+. |
| |
| * wtf/FastMalloc.h: |
| |
| 2009-11-12 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Start unifying entry logic for function and eval code. |
| |
| Eval now uses a ret instruction to end execution, and sets up |
| a callframe more in line with what we do for function entry. |
| |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitReturn): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::execute): |
| * parser/Nodes.cpp: |
| (JSC::EvalNode::emitBytecode): |
| |
| 2009-11-12 Richard Moe Gustavsen <richard.gustavsen@nokia.com> |
| |
| Reviewed by Kenneth Rohde Christiansen. |
| |
| [Qt] Disable pthread_setname_np. |
| |
| This allows Qt builds on Mac from 10.6 to run on earlier version |
| where this symbol is not present. |
| https://bugs.webkit.org/show_bug.cgi?id=31403 |
| |
| * wtf/Platform.h: |
| |
| 2009-11-12 Thiago Macieira <thiago.macieira@nokia.com> |
| |
| Reviewed by Kenneth Rohde Christiansen. |
| |
| [Qt] Fix linking on Linux 32-bit. |
| |
| It was missing the ".text" directive at the top of the file, |
| indicating that code would follow. Without it, the assembler created |
| "NOTYPE" symbols, which would result in linker errors. |
| https://bugs.webkit.org/show_bug.cgi?id=30863 |
| |
| * jit/JITStubs.cpp: |
| |
| 2009-11-11 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Refactor multiple JavaScriptCore threads |
| https://bugs.webkit.org/show_bug.cgi?id=31328 |
| |
| Remove the id field from the PlatformThread structure |
| as it is not used. |
| |
| * runtime/Collector.cpp: |
| (JSC::getCurrentPlatformThread): |
| (JSC::suspendThread): |
| (JSC::resumeThread): |
| (JSC::getPlatformThreadRegisters): |
| |
| 2009-11-10 Geoffrey Garen <ggaren@apple.com> |
| |
| Linux build fix: Added an #include for UINT_MAX. |
| |
| * runtime/WeakRandom.h: |
| |
| 2009-11-10 Geoffrey Garen <ggaren@apple.com> |
| |
| JavaScriptGlue build fix: Marked a file 'private' instead of 'project'. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2009-11-10 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Gavin "avGni arBalroguch" Barraclough. |
| |
| Faster Math.random, based on GameRand. |
| |
| SunSpider says 1.4% faster. |
| |
| * GNUmakefile.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: Added the header to the project. |
| |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| * runtime/JSGlobalData.h: Use an object to track random number generation |
| state, initialized to the current time. |
| |
| * runtime/MathObject.cpp: |
| (JSC::MathObject::MathObject): |
| (JSC::mathProtoFuncRandom): Use the new hotness. |
| |
| * runtime/WeakRandom.h: Added. |
| (JSC::WeakRandom::WeakRandom): |
| (JSC::WeakRandom::get): |
| (JSC::WeakRandom::advance): The new hotness. |
| |
| 2009-11-09 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Imported the v8 DST cache. |
| |
| SunSpider says 1.5% faster. |
| |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::resetDateCache): Reset the DST cache when resetting |
| other date data. |
| |
| * runtime/JSGlobalData.h: |
| (JSC::DSTOffsetCache::DSTOffsetCache): |
| (JSC::DSTOffsetCache::reset): Added a struct for the DST cache. |
| |
| * wtf/DateMath.cpp: |
| (WTF::calculateDSTOffsetSimple): |
| (WTF::calculateDSTOffset): |
| (WTF::parseDateFromNullTerminatedCharacters): |
| (JSC::getDSTOffset): |
| (JSC::gregorianDateTimeToMS): |
| (JSC::msToGregorianDateTime): |
| (JSC::parseDateFromNullTerminatedCharacters): |
| * wtf/DateMath.h: The imported code for probing and updating the cache. |
| |
| 2009-11-09 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Fixed an edge case that could cause the engine not to notice a timezone |
| change. |
| |
| No test because this case would require manual intervention to change |
| the timezone during the test. |
| |
| SunSpider reports no change. |
| |
| * runtime/DateInstanceCache.h: |
| (JSC::DateInstanceCache::DateInstanceCache): |
| (JSC::DateInstanceCache::reset): Added a helper function for resetting |
| this cache. Also, shrank the cache, since we'll be resetting it often. |
| |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::resetDateCache): Include resetting the DateInstanceCache |
| in resetting Date data. (Otherwise, a cache hit could bypass a necessary |
| timezone update check.) |
| |
| 2009-11-09 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Some manual inlining and constant propogation in Date code. |
| |
| SunSpider reports a 0.4% speedup on date-*, no overall speedup. Shark |
| says some previously evident stalls are now gone. |
| |
| * runtime/DateConstructor.cpp: |
| (JSC::callDate): |
| * runtime/DateConversion.cpp: |
| (JSC::formatTime): |
| (JSC::formatTimeUTC): Split formatTime into UTC and non-UTC variants. |
| |
| * runtime/DateConversion.h: |
| * runtime/DateInstance.cpp: |
| (JSC::DateInstance::calculateGregorianDateTime): |
| (JSC::DateInstance::calculateGregorianDateTimeUTC): |
| * runtime/DateInstance.h: |
| (JSC::DateInstance::gregorianDateTime): |
| (JSC::DateInstance::gregorianDateTimeUTC): Split gregorianDateTime into |
| a UTC and non-UTC variant, and split each variant into a fast inline |
| case and a slow out-of-line case. |
| |
| * runtime/DatePrototype.cpp: |
| (JSC::formatLocaleDate): |
| (JSC::dateProtoFuncToString): |
| (JSC::dateProtoFuncToUTCString): |
| (JSC::dateProtoFuncToISOString): |
| (JSC::dateProtoFuncToDateString): |
| (JSC::dateProtoFuncToTimeString): |
| (JSC::dateProtoFuncGetFullYear): |
| (JSC::dateProtoFuncGetUTCFullYear): |
| (JSC::dateProtoFuncToGMTString): |
| (JSC::dateProtoFuncGetMonth): |
| (JSC::dateProtoFuncGetUTCMonth): |
| (JSC::dateProtoFuncGetDate): |
| (JSC::dateProtoFuncGetUTCDate): |
| (JSC::dateProtoFuncGetDay): |
| (JSC::dateProtoFuncGetUTCDay): |
| (JSC::dateProtoFuncGetHours): |
| (JSC::dateProtoFuncGetUTCHours): |
| (JSC::dateProtoFuncGetMinutes): |
| (JSC::dateProtoFuncGetUTCMinutes): |
| (JSC::dateProtoFuncGetSeconds): |
| (JSC::dateProtoFuncGetUTCSeconds): |
| (JSC::dateProtoFuncGetTimezoneOffset): |
| (JSC::setNewValueFromTimeArgs): |
| (JSC::setNewValueFromDateArgs): |
| (JSC::dateProtoFuncSetYear): |
| (JSC::dateProtoFuncGetYear): Updated for the gregorianDateTime change above. |
| |
| 2009-11-09 Geoffrey Garen <ggaren@apple.com> |
| |
| Build fix: export a new symbol. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2009-11-09 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam "Home Wrecker" Weinig. |
| |
| Added a tiny cache for Date parsing. |
| |
| SunSpider says 1.2% faster. |
| |
| * runtime/DateConversion.cpp: |
| (JSC::parseDate): Try to reuse the last parsed Date, if present. |
| |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::resetDateCache): |
| * runtime/JSGlobalData.h: Added storage for last parsed Date. Refactored |
| this code to make resetting the date cache easier. |
| |
| * runtime/JSGlobalObject.h: |
| (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Updated for |
| refactoring. |
| |
| * wtf/DateMath.cpp: |
| (JSC::parseDateFromNullTerminatedCharacters): |
| * wtf/DateMath.h: Changed ExecState to be first parameter, as is the JSC custom. |
| |
| 2009-11-09 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Can cache prototype lookups on uncacheable dictionaries. |
| https://bugs.webkit.org/show_bug.cgi?id=31198 |
| |
| Replace fromDictionaryTransition with flattenDictionaryObject and |
| flattenDictionaryStructure. This change is necessary as we need to |
| guarantee that our attempt to convert away from a dictionary structure |
| will definitely succeed, and in some cases this requires mutating the |
| object storage itself. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::tryCacheGetByID): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::tryCacheGetByID): |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/BatchedTransitionOptimizer.h: |
| (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer): |
| * runtime/JSObject.h: |
| (JSC::JSObject::flattenDictionaryObject): |
| * runtime/Operations.h: |
| (JSC::normalizePrototypeChain): |
| * runtime/Structure.cpp: |
| (JSC::Structure::flattenDictionaryStructure): |
| (JSC::comparePropertyMapEntryIndices): |
| * runtime/Structure.h: |
| |
| 2009-11-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Not reviewed, build fix. |
| |
| Remove extra character from r50701. |
| |
| * JavaScriptCore.pri: |
| |
| 2009-11-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Not reviewed, build fix. |
| |
| Revert r50695 because it broke QtWebKit (clean builds). |
| |
| * JavaScriptCore.pri: |
| |
| 2009-11-09 Norbert Leser <norbert.leser@nokia.com> |
| |
| Reviewed by Kenneth Rohde Christiansen. |
| |
| Prepended $$PWD to GENERATED_SOURCES_DIR to avoid potential ambiguities when included from WebCore.pro. |
| Some preprocessors consider this GENERATED_SOURCES_DIR relative to current invoking dir (e.g., ./WebCore), |
| and not the working dir of JavaCriptCore.pri (i.e., ../JavaScriptCore/). |
| |
| * JavaScriptCore.pri: |
| |
| 2009-11-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Kenneth Rohde Christiansen. |
| |
| Use explicit parentheses to silence gcc 4.4 -Wparentheses warnings |
| https://bugs.webkit.org/show_bug.cgi?id=31040 |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| |
| 2009-11-08 David Levin <levin@chromium.org> |
| |
| Reviewed by NOBODY (speculative snow leopard and windows build fixes). |
| |
| * wtf/DateMath.cpp: |
| (WTF::parseDateFromNullTerminatedCharacters): |
| (JSC::gregorianDateTimeToMS): |
| (JSC::msToGregorianDateTime): |
| (JSC::parseDateFromNullTerminatedCharacters): |
| * wtf/DateMath.h: |
| (JSC::GregorianDateTime::GregorianDateTime): |
| |
| 2009-11-08 David Levin <levin@chromium.org> |
| |
| Reviewed by NOBODY (chromium build fix). |
| |
| Hopefully, the last build fix. |
| |
| Create better separation in DateMath about the JSC |
| and non-JSC portions. Also, only expose the non-JSC |
| version in the exports. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * wtf/DateMath.cpp: |
| (WTF::parseDateFromNullTerminatedCharacters): |
| (JSC::getUTCOffset): |
| (JSC::gregorianDateTimeToMS): |
| (JSC::msToGregorianDateTime): |
| (JSC::parseDateFromNullTerminatedCharacters): |
| * wtf/DateMath.h: |
| (JSC::gmtoffset): |
| |
| 2009-11-08 David Levin <levin@chromium.org> |
| |
| Reviewed by NOBODY (chromium build fix). |
| |
| For the change in DateMath. |
| |
| * config.h: |
| * wtf/DateMath.cpp: |
| |
| 2009-11-06 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix: export some symbols. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2009-11-06 Geoffrey Garen <ggaren@apple.com> |
| |
| Build fix: updated export file. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2009-11-06 Geoffrey Garen <ggaren@apple.com> |
| |
| Build fix: added some #includes. |
| |
| * wtf/CurrentTime.h: |
| * wtf/DateMath.h: |
| |
| 2009-11-06 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=31197 |
| Implemented a timezone cache not based on Mac OS X's notify_check API. |
| |
| If the VM calculates the local timezone offset from UTC, it caches the |
| result until the end of the current VM invocation. (We don't want to cache |
| forever, because the user's timezone may change over time.) |
| |
| This removes notify_* overhead on Mac, and, more significantly, removes |
| OS time and date call overhead on non-Mac platforms. |
| |
| ~8% speedup on Date microbenchmark on Mac. SunSpider reports maybe a tiny |
| speedup on Mac. (Speedup on non-Mac platforms should be even more noticeable.) |
| |
| * JavaScriptCore.exp: |
| |
| * interpreter/CachedCall.h: |
| (JSC::CachedCall::CachedCall): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::execute): |
| * runtime/JSGlobalObject.h: |
| (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Made the |
| DynamicGlobalObjectScope constructor responsible for checking whether a |
| dynamicGlobalObject has already been set. This eliminated some duplicate |
| client code, and allowed me to avoid adding even more duplicate client |
| code. Made DynamicGlobalObjectScope responsible for resetting the |
| local timezone cache upon first entry to the VM. |
| |
| * runtime/DateConstructor.cpp: |
| (JSC::constructDate): |
| (JSC::callDate): |
| (JSC::dateParse): |
| (JSC::dateUTC): |
| * runtime/DateConversion.cpp: |
| (JSC::parseDate): |
| * runtime/DateConversion.h: |
| * runtime/DateInstance.cpp: |
| (JSC::DateInstance::gregorianDateTime): |
| * runtime/DateInstance.h: |
| * runtime/DateInstanceCache.h: |
| * runtime/DatePrototype.cpp: |
| (JSC::setNewValueFromTimeArgs): |
| (JSC::setNewValueFromDateArgs): |
| (JSC::dateProtoFuncSetYear): |
| * runtime/InitializeThreading.cpp: |
| (JSC::initializeThreadingOnce): |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| * runtime/JSGlobalData.h: |
| * wtf/DateMath.cpp: |
| (WTF::getCurrentUTCTime): |
| (WTF::getCurrentUTCTimeWithMicroseconds): |
| (WTF::getLocalTime): |
| (JSC::getUTCOffset): Use the new cache. Also, see below. |
| (JSC::gregorianDateTimeToMS): |
| (JSC::msToGregorianDateTime): |
| (JSC::initializeDates): |
| (JSC::parseDateFromNullTerminatedCharacters): Simplified the way this function |
| accounts for the local timezone offset, to accomodate our new caching API, |
| and a (possibly misguided) caller in WebCore. Also, see below. |
| * wtf/DateMath.h: |
| (JSC::GregorianDateTime::GregorianDateTime): Moved most of the code in |
| DateMath.* into the JSC namespace. The code needed to move so it could |
| naturally interact with ExecState and JSGlobalData to support caching. |
| Logically, it seemed right to move it, too, since this code is not really |
| as low-level as the WTF namespace might imply -- it implements a set of |
| date parsing and conversion quirks that are finely tuned to the JavaScript |
| language. Also removed the Mac OS X notify_* infrastructure. |
| |
| * wtf/CurrentTime.h: |
| (WTF::currentTimeMS): |
| (WTF::getLocalTime): Moved the rest of the DateMath code here, and renamed |
| it to make it consistent with WTF's currentTime function. |
| |
| 2009-11-06 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Unreviewed trivial buildfix after r50595. |
| |
| Rename the remaining rshiftPtr calls to rshift32 |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_rshift): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitFastArithImmToInt): |
| |
| 2009-11-06 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Tidy up the shift methods on the macro-assembler interface. |
| |
| Currently behaviour of shifts of a magnitude > 0x1f is undefined. |
| Instead defined that all shifts are masked to this range. This makes a lot of |
| practical sense, both since having undefined behaviour is not particularly |
| desirable, and because this behaviour is commonly required (particularly since |
| it is required bt ECMA-262 for shifts). |
| |
| Update the ARM assemblers to provide this behaviour. Remove (now) redundant |
| masks from JITArithmetic, and remove rshiftPtr (this was used in case that |
| could be rewritten in a simpler form using rshift32, only optimized JSVALUE32 |
| on x86-64, which uses JSVALUE64!) |
| |
| * assembler/MacroAssembler.h: |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::lshift32): |
| (JSC::MacroAssemblerARM::rshift32): |
| * assembler/MacroAssemblerARMv7.h: |
| (JSC::MacroAssemblerARMv7::lshift32): |
| (JSC::MacroAssemblerARMv7::rshift32): |
| * assembler/MacroAssemblerX86_64.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_lshift): |
| (JSC::JIT::emit_op_rshift): |
| |
| 2009-11-05 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber Stamped by Oliver Hunt. |
| |
| Remove a magic number (1) from the JIT, instead compute the value with OBJECT_OFFSET. |
| |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitPutJITStubArg): |
| (JSC::JIT::emitPutJITStubArgConstant): |
| (JSC::JIT::emitGetJITStubArg): |
| (JSC::JIT::emitPutJITStubArgFromVirtualRegister): |
| * jit/JITStubCall.h: |
| (JSC::JITStubCall::JITStubCall): |
| (JSC::JITStubCall::getArgument): |
| * jit/JITStubs.h: |
| |
| 2009-11-05 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=31159 |
| Fix branchDouble behaviour on ARM THUMB2 JIT. |
| |
| The x86 branchDouble behaviour is reworked, and all JIT |
| ports should follow the x86 port. See bug 31104 and 31151 |
| |
| This patch contains a fix for the traditional ARM port |
| |
| * assembler/ARMAssembler.h: |
| (JSC::ARMAssembler::): |
| (JSC::ARMAssembler::fmrs_r): |
| (JSC::ARMAssembler::ftosid_r): |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::): |
| (JSC::MacroAssemblerARM::branchDouble): |
| (JSC::MacroAssemblerARM::branchConvertDoubleToInt32): |
| |
| 2009-11-05 Chris Jerdonek <chris.jerdonek@gmail.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Removed the "this is part of the KDE project" comments from |
| all *.h, *.cpp, *.idl, and *.pm files. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=31167 |
| |
| The maintenance and architecture page in the project wiki lists |
| this as a task. |
| |
| This change includes no changes or additions to test cases |
| since the change affects only comments. |
| |
| * wtf/wince/FastMallocWince.h: |
| |
| 2009-11-05 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Use ARMv7 specific encoding for immediate constants on ARMv7 target |
| https://bugs.webkit.org/show_bug.cgi?id=31060 |
| |
| * assembler/ARMAssembler.cpp: |
| (JSC::ARMAssembler::getOp2): Use INVALID_IMM |
| (JSC::ARMAssembler::getImm): Use encodeComplexImm for complex immediate |
| (JSC::ARMAssembler::moveImm): Ditto. |
| (JSC::ARMAssembler::encodeComplexImm): Encode a constant by one or two |
| instructions or a PC relative load. |
| * assembler/ARMAssembler.h: Use INVALID_IMM if a constant cannot be |
| encoded as an immediate constant. |
| (JSC::ARMAssembler::): |
| (JSC::ARMAssembler::movw_r): 16-bit immediate load |
| (JSC::ARMAssembler::movt_r): High halfword 16-bit immediate load |
| (JSC::ARMAssembler::getImm16Op2): Encode immediate constant for |
| movw_r and mowt_r |
| |
| 2009-11-04 Mark Mentovai <mark@chromium.org> |
| |
| Reviewed by Mark Rowe. |
| |
| Provide TARGETING_TIGER and TARGETING_LEOPARD as analogues to |
| BUILDING_ON_TIGER and BUILDING_ON_LEOPARD. The TARGETING_ macros |
| consider the deployment target; the BUILDING_ON_ macros consider the |
| headers being built against. |
| |
| * wtf/Platform.h: |
| |
| 2009-11-04 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=31151 |
| Fix branchDouble behaviour on ARM THUMB2 JIT. |
| |
| The ARMv7 JIT is currently using ARMv7Assembler::ConditionEQ to branch |
| for DoubleEqualOrUnordered, however this is incorrect - ConditionEQ won't |
| branch on unordered operands. Similarly, DoubleLessThanOrUnordered & |
| DoubleLessThanOrEqualOrUnordered use ARMv7Assembler::ConditionLO & |
| ARMv7Assembler::ConditionLS, whereas they should be using |
| ARMv7Assembler::ConditionLT & ARMv7Assembler::ConditionLE. |
| |
| Fix these, and fill out the missing DoubleConditions. |
| |
| * assembler/MacroAssemblerARMv7.h: |
| (JSC::MacroAssemblerARMv7::): |
| (JSC::MacroAssemblerARMv7::branchDouble): |
| |
| 2009-11-04 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber Stamped by Oliver Hunt. |
| |
| Enable native call optimizations on ARMv7. (Existing ARM_TRADITIONAL |
| implementation was generic, worked perfectly, just needed turning on). |
| |
| * jit/JITOpcodes.cpp: |
| * wtf/Platform.h: |
| |
| 2009-11-04 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber Stamped by Mark Rowe, Oliver Hunt, and Sam Weinig. |
| |
| Add a missing assert to the ARMv7 JIT. |
| |
| * assembler/ARMv7Assembler.h: |
| (JSC::ARMThumbImmediate::ARMThumbImmediate): |
| |
| 2009-11-04 Mark Rowe <mrowe@apple.com> |
| |
| Rubber-stamped by Oliver Hunt. |
| |
| Remove bogus op_ prefix on dumped version of three opcodes. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::dump): |
| |
| 2009-11-04 Mark Rowe <mrowe@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Fix dumping of constants in bytecode so that they aren't printed as large positive register numbers. |
| |
| We do this by having the registerName function return information about the constant if the register |
| number corresponds to a constant. This requires that registerName, and several functions that call it, |
| be converted to member functions of CodeBlock so that the constant value can be retrieved. The |
| ExecState also needs to be threaded down through these functions so that it can be passed on to |
| constantName when needed. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::constantName): |
| (JSC::CodeBlock::registerName): |
| (JSC::CodeBlock::printUnaryOp): |
| (JSC::CodeBlock::printBinaryOp): |
| (JSC::CodeBlock::printConditionalJump): |
| (JSC::CodeBlock::printGetByIdOp): |
| (JSC::CodeBlock::printPutByIdOp): |
| (JSC::CodeBlock::dump): |
| * bytecode/CodeBlock.h: |
| (JSC::CodeBlock::isConstantRegisterIndex): |
| |
| 2009-11-04 Pavel Heimlich <tropikhajma@gmail.com> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=30647 |
| Solaris build failure due to strnstr. |
| |
| * wtf/StringExtras.h: Enable strnstr on Solaris, too. |
| |
| 2009-11-04 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=31104 |
| Refactor x86-specific behaviour out of the JIT. |
| |
| - Add explicit double branch conditions for ordered and unordered comparisons (presently the brehaviour is a mix). |
| - Refactor double to int conversion out into the MacroAssembler. |
| - Remove broken double to int conversion for !JSVALUE32_64 builds - this code was broken and slowing us down, fixing it showed it not to be an improvement. |
| - Remove exclusion of double to int conversion from (1 % X) cases in JSVALUE32_64 builds - if this was of benefit this is no longer the case; simplify. |
| |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::): |
| * assembler/MacroAssemblerARMv7.h: |
| (JSC::MacroAssemblerARMv7::): |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::): |
| (JSC::MacroAssemblerX86Common::convertInt32ToDouble): |
| (JSC::MacroAssemblerX86Common::branchDouble): |
| (JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32): |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitBinaryDoubleOp): |
| (JSC::JIT::emit_op_div): |
| (JSC::JIT::emitSlow_op_jnless): |
| (JSC::JIT::emitSlow_op_jnlesseq): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_jfalse): |
| |
| 2009-11-04 Mark Mentovai <mark@chromium.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Remove BUILDING_ON_LEOPARD from JavaScriptCore.gyp. This is supposed |
| to be set as needed only in wtf/Platform.h. |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| |
| 2009-11-02 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| REGRESSION (r48573): JSC may incorrectly cache chain lookups with a dictionary at the head of the chain |
| https://bugs.webkit.org/show_bug.cgi?id=31045 |
| |
| Add guards to prevent caching of prototype chain lookups with dictionaries at the |
| head of the chain. Also add a few tighter assertions to cached prototype lookups |
| to catch this in future. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::tryCacheGetByID): |
| (JSC::Interpreter::privateExecute): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::tryCacheGetByID): |
| |
| 2009-11-02 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| PLATFORM(CF) should be set when building for Qt on Darwin |
| https://bugs.webkit.org/show_bug.cgi?id=23671 |
| |
| * wtf/Platform.h: Turn on CF support if both QT and DARWIN |
| platforms are defined. |
| |
| 2009-11-02 Dmitry Titov <dimich@chromium.org> |
| |
| Reviewed by David Levin. |
| |
| Remove threadsafe refcounting from tasks used with WTF::MessageQueue. |
| https://bugs.webkit.org/show_bug.cgi?id=30612 |
| |
| * wtf/MessageQueue.h: |
| (WTF::MessageQueue::alwaysTruePredicate): |
| (WTF::MessageQueue::~MessageQueue): |
| (WTF::MessageQueue::append): |
| (WTF::MessageQueue::appendAndCheckEmpty): |
| (WTF::MessageQueue::prepend): |
| (WTF::MessageQueue::waitForMessage): |
| (WTF::MessageQueue::waitForMessageFilteredWithTimeout): |
| (WTF::MessageQueue::tryGetMessage): |
| (WTF::MessageQueue::removeIf): |
| The MessageQueue is changed to act as a queue of OwnPtr<DataType>. It takes ownership |
| of posted tasks and passes it to the new owner (in another thread) when the task is fetched. |
| All methods have arguments of type PassOwnPtr<DataType> and return the same type. |
| |
| * wtf/Threading.cpp: |
| (WTF::createThread): |
| Superficial change to trigger rebuild of JSC project on Windows, |
| workaround for https://bugs.webkit.org/show_bug.cgi?id=30890 |
| |
| 2009-10-30 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Fixed failing layout test: restore a special case I accidentally deleted. |
| |
| * runtime/DatePrototype.cpp: |
| (JSC::setNewValueFromDateArgs): In the case of applying a change to a date |
| that is NaN, reset the date to 0 *and* then apply the change; don't just |
| reset the date to 0. |
| |
| 2009-10-30 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix: update for object-to-pointer change. |
| |
| * runtime/DatePrototype.cpp: |
| (JSC::formatLocaleDate): |
| |
| 2009-10-29 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=30942 |
| Use pointers instead of copies to pass GregorianDateTime objects around. |
| |
| SunSpider reports a shocking 4.5% speedup on date-format-xparb, and 1.3% |
| speedup on date-format-tofte. |
| |
| * runtime/DateInstance.cpp: |
| (JSC::DateInstance::gregorianDateTime): |
| * runtime/DateInstance.h: |
| * runtime/DatePrototype.cpp: |
| (JSC::formatLocaleDate): |
| (JSC::dateProtoFuncToString): |
| (JSC::dateProtoFuncToUTCString): |
| (JSC::dateProtoFuncToISOString): |
| (JSC::dateProtoFuncToDateString): |
| (JSC::dateProtoFuncToTimeString): |
| (JSC::dateProtoFuncGetFullYear): |
| (JSC::dateProtoFuncGetUTCFullYear): |
| (JSC::dateProtoFuncToGMTString): |
| (JSC::dateProtoFuncGetMonth): |
| (JSC::dateProtoFuncGetUTCMonth): |
| (JSC::dateProtoFuncGetDate): |
| (JSC::dateProtoFuncGetUTCDate): |
| (JSC::dateProtoFuncGetDay): |
| (JSC::dateProtoFuncGetUTCDay): |
| (JSC::dateProtoFuncGetHours): |
| (JSC::dateProtoFuncGetUTCHours): |
| (JSC::dateProtoFuncGetMinutes): |
| (JSC::dateProtoFuncGetUTCMinutes): |
| (JSC::dateProtoFuncGetSeconds): |
| (JSC::dateProtoFuncGetUTCSeconds): |
| (JSC::dateProtoFuncGetTimezoneOffset): |
| (JSC::setNewValueFromTimeArgs): |
| (JSC::setNewValueFromDateArgs): |
| (JSC::dateProtoFuncSetYear): |
| (JSC::dateProtoFuncGetYear): Renamed getGregorianDateTime to gregorianDateTime, |
| since it no longer has an out parameter. Uses 0 to indicate invalid dates. |
| |
| 2009-10-30 Zoltan Horvath <zoltan@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| Allow custom memory allocation control for JavaScriptCore's ListHashSet |
| https://bugs.webkit.org/show_bug.cgi?id=30853 |
| |
| Inherits ListHashSet class from FastAllocBase because it is |
| instantiated by 'new' in WebCore/rendering/RenderBlock.cpp:1813. |
| |
| * wtf/ListHashSet.h: |
| |
| 2009-10-30 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Regression: crash enumerating properties of an object with getters or setters |
| https://bugs.webkit.org/show_bug.cgi?id=30948 |
| |
| Add a guard to prevent us trying to cache property enumeration on |
| objects with getters or setters. |
| |
| * runtime/JSPropertyNameIterator.cpp: |
| (JSC::JSPropertyNameIterator::create): |
| |
| 2009-10-30 Roland Steiner <rolandsteiner@chromium.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Remove ENABLE_RUBY guards as discussed with Dave Hyatt and Maciej Stachowiak. |
| |
| Bug 28420 - Implement HTML5 <ruby> rendering |
| (https://bugs.webkit.org/show_bug.cgi?id=28420) |
| |
| No new tests (no functional change). |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2009-10-29 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| REGRESSION (r50218-r50262): E*TRADE accounts page is missing content |
| https://bugs.webkit.org/show_bug.cgi?id=30947 |
| <rdar://problem/7348833> |
| |
| The logic for flagging that a structure has non-enumerable properties |
| was in addPropertyWithoutTransition, rather than in the core Structure::put |
| method. Despite this I was unable to produce a testcase that caused |
| the failure that etrade was experiencing, but the new assertion in |
| getEnumerablePropertyNames triggers on numerous layout tests without |
| the fix, so in effecti all for..in enumeration in any test ends up |
| doing the required consistency check. |
| |
| * runtime/Structure.cpp: |
| (JSC::Structure::addPropertyWithoutTransition): |
| (JSC::Structure::put): |
| (JSC::Structure::getEnumerablePropertyNames): |
| (JSC::Structure::checkConsistency): |
| |
| 2009-10-29 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Add cacheFlush support for Thumb-2 on Linux |
| https://bugs.webkit.org/show_bug.cgi?id=30865 |
| |
| * jit/ExecutableAllocator.h: |
| (JSC::ExecutableAllocator::cacheFlush): |
| |
| 2009-10-28 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| JSC JIT on ARMv7 cannot link jumps >16Mb range |
| https://bugs.webkit.org/show_bug.cgi?id=30891 |
| |
| Start planing all relative jumps as move-32-bit-immediate-to-register-BX. |
| In the cases where the jump would fall within a relative jump range, use a relative jump. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * assembler/ARMv7Assembler.h: |
| (JSC::ARMv7Assembler::~ARMv7Assembler): |
| (JSC::ARMv7Assembler::LinkRecord::LinkRecord): |
| (JSC::ARMv7Assembler::): |
| (JSC::ARMv7Assembler::executableCopy): |
| (JSC::ARMv7Assembler::linkJump): |
| (JSC::ARMv7Assembler::relinkJump): |
| (JSC::ARMv7Assembler::setInt32): |
| (JSC::ARMv7Assembler::isB): |
| (JSC::ARMv7Assembler::isBX): |
| (JSC::ARMv7Assembler::isMOV_imm_T3): |
| (JSC::ARMv7Assembler::isMOVT): |
| (JSC::ARMv7Assembler::isNOP_T1): |
| (JSC::ARMv7Assembler::isNOP_T2): |
| (JSC::ARMv7Assembler::linkJumpAbsolute): |
| (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmFirst): |
| (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmSecond): |
| (JSC::ARMv7Assembler::ARMInstructionFormatter::twoWordOp5i6Imm4Reg4EncodedImm): |
| * assembler/MacroAssemblerARMv7.h: |
| (JSC::MacroAssemblerARMv7::makeJump): |
| (JSC::MacroAssemblerARMv7::makeBranch): |
| * jit/JIT.h: |
| * wtf/Platform.h: |
| |
| 2009-10-28 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Improve for..in enumeration performance |
| https://bugs.webkit.org/show_bug.cgi?id=30887 |
| |
| Improve indexing of an object with a for..in iterator by |
| identifying cases where get_by_val is being used with a iterator |
| as the subscript and replace it with a new get_by_pname |
| bytecode. get_by_pname then optimizes lookups that directly access |
| the base object. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::dump): |
| * bytecode/Opcode.h: |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitGetByVal): |
| * bytecompiler/BytecodeGenerator.h: |
| (JSC::BytecodeGenerator::pushOptimisedForIn): |
| (JSC::BytecodeGenerator::popOptimisedForIn): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileMainPass): |
| (JSC::JIT::privateCompileSlowCases): |
| * jit/JIT.h: |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::compileGetDirectOffset): |
| (JSC::JIT::emit_op_get_by_pname): |
| (JSC::JIT::emitSlow_op_get_by_pname): |
| * parser/Nodes.cpp: |
| (JSC::ForInNode::emitBytecode): |
| * runtime/JSObject.h: |
| * runtime/JSPropertyNameIterator.cpp: |
| (JSC::JSPropertyNameIterator::create): |
| * runtime/JSPropertyNameIterator.h: |
| (JSC::JSPropertyNameIterator::getOffset): |
| (JSC::JSPropertyNameIterator::JSPropertyNameIterator): |
| * runtime/JSValue.h: |
| (JSC::JSValue::): |
| * runtime/Structure.cpp: |
| (JSC::Structure::addPropertyTransition): |
| (JSC::Structure::changePrototypeTransition): |
| (JSC::Structure::despecifyFunctionTransition): |
| (JSC::Structure::addAnonymousSlotsTransition): |
| (JSC::Structure::getterSetterTransition): |
| (JSC::Structure::toDictionaryTransition): |
| (JSC::Structure::addPropertyWithoutTransition): |
| Track the existence (or not) of non-enumerable properties. |
| * runtime/Structure.h: |
| (JSC::Structure::propertyStorageCapacity): |
| (JSC::Structure::propertyStorageSize): |
| (JSC::Structure::hasNonEnumerableProperties): |
| (JSC::Structure::hasAnonymousSlots): |
| |
| 2009-10-28 Dmitry Titov <dimich@chromium.org> |
| |
| Not reviewed, attemp to fix Windows build. |
| |
| Touch the cpp file to cause recompile. |
| |
| * wtf/Threading.cpp: |
| (WTF::threadEntryPoint): |
| |
| 2009-10-28 Dmitry Titov <dimich@chromium.org> |
| |
| Reviewed by David Levin. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=30805 |
| Add MessageQueue::removeIf(Predicate&) to remove certain tasks without pulling them from the queue. |
| Existing Database tests cover this since Database removes tasks when it is stopped. |
| |
| * wtf/MessageQueue.h: |
| (WTF::::removeIf): |
| |
| 2009-10-28 Afonso R. Costa Jr. <afonso.costa@openbossa.org> |
| |
| Reviewed by Oliver Hunt. |
| |
| [Qt] Enable YARR when YARR_JIT is enabled |
| https://bugs.webkit.org/show_bug.cgi?id=30730 |
| |
| When enabling or disabling JIT using JAVASCRIPTCORE_JIT, the ENABLE_YARR should |
| be toggled also. |
| |
| * JavaScriptCore.pri: |
| |
| 2009-10-24 Martin Robinson <martin.james.robinson@gmail.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Fix strict aliasing warning by switching reinterpret_cast to bitwise_cast. |
| |
| strict-aliasing warnings in JSFunction.h |
| https://bugs.webkit.org/show_bug.cgi?id=27869 |
| |
| * runtime/JSFunction.h: |
| (JSC::JSFunction::nativeFunction): |
| (JSC::JSFunction::scopeChain): |
| (JSC::JSFunction::setScopeChain): |
| (JSC::JSFunction::setNativeFunction): |
| |
| 2009-10-28 Jan-Arve Sæther <jan-arve.saether@nokia.com> |
| |
| Reviewed by Tor Arne Vestbø. |
| |
| Build-fix for 64-bit Windows |
| |
| * wtf/Platform.h: Make sure to use WTF_USE_JSVALUE64 |
| |
| 2009-10-28 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by NOBODY (build fix!). |
| |
| * jit/JIT.h: |
| |
| 2009-10-26 Holger Hans Peter Freyther <zecke@selfish.org> |
| |
| Rubber-stamped by Darin Adler. |
| |
| Export fastMalloc, fastCalloc, fastRealloc and fastFree on GCC/Unix |
| https://bugs.webkit.org/show_bug.cgi?id=30769 |
| |
| When using -fvisibility=hidden to hide all internal symbols by default |
| the malloc symbols will be hidden as well. For memory instrumentation |
| it is needed to provide an instrumented version of these symbols and |
| override the normal routines and by changing the visibility back to |
| default this becomes possible. |
| |
| The only other solution would be to use system malloc instead of the |
| TCmalloc implementation but this will not allow to analyze memory |
| behavior with the default allocator. |
| |
| * wtf/FastMalloc.h: Define WTF_FAST_MALLOC_EXPORT for GCC and !darwin |
| |
| 2009-10-27 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber Stamped by Samuel Q. Weinig. |
| |
| Make the asserts protecting the offsets in the JIT more descriptive. |
| |
| * jit/JIT.h: |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCall): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emit_op_method_check): |
| (JSC::JIT::compileGetByIdHotPath): |
| (JSC::JIT::compileGetByIdSlowCase): |
| (JSC::JIT::emit_op_put_by_id): |
| |
| 2009-10-27 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| A little bit of refactoring in the date code. |
| |
| * JavaScriptCore.exp: Don't export this unused symbol. |
| |
| * runtime/DateConstructor.cpp: |
| (JSC::constructDate): |
| |
| * runtime/DateInstance.cpp: |
| (JSC::DateInstance::DateInstance): |
| * runtime/DateInstance.h: Removed some unused functions. Changed the default |
| constructor to ensure that a DateInstance is always initialized. |
| |
| * runtime/DatePrototype.cpp: |
| (JSC::DatePrototype::DatePrototype): Pass an initializer to our constructor, |
| since it now requires one. |
| |
| * wtf/DateMath.cpp: |
| (WTF::msToGregorianDateTime): Only compute our offset from UTC if our |
| output will require it. Otherwise, our offset is 0. |
| |
| 2009-10-27 Geoffrey Garen <ggaren@apple.com> |
| |
| Build fix: Mark DateInstaceCache.h private, so other frameworks can see it. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2009-10-27 Geoffrey Garen <ggaren@apple.com> |
| |
| Build fix: re-readded this file. |
| |
| * runtime/DateInstanceCache.h: Added. |
| (JSC::DateInstanceData::create): |
| (JSC::DateInstanceData::DateInstanceData): |
| (JSC::DateInstanceCache::DateInstanceCache): |
| (JSC::DateInstanceCache::add): |
| (JSC::DateInstanceCache::lookup): |
| |
| 2009-10-27 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Darin Adler and Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=30800 |
| Cache recently computed date data. |
| |
| SunSpider reports a ~0.5% speedup, mostly from date-format-tofte.js. |
| |
| * GNUmakefile.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: Added new file. |
| |
| * runtime/DateInstance.cpp: |
| (JSC::DateInstance::DateInstance): |
| (JSC::DateInstance::getGregorianDateTime): Use the shared cache. |
| |
| * runtime/DateInstance.h: Renamed m_cache to m_data, to avoid the confusion |
| of a "cache cache". |
| |
| * runtime/DatePrototype.cpp: |
| (JSC::formatLocaleDate): |
| (JSC::dateProtoFuncToString): |
| (JSC::dateProtoFuncToUTCString): |
| (JSC::dateProtoFuncToISOString): |
| (JSC::dateProtoFuncToDateString): |
| (JSC::dateProtoFuncToTimeString): |
| (JSC::dateProtoFuncGetFullYear): |
| (JSC::dateProtoFuncGetUTCFullYear): |
| (JSC::dateProtoFuncToGMTString): |
| (JSC::dateProtoFuncGetMonth): |
| (JSC::dateProtoFuncGetUTCMonth): |
| (JSC::dateProtoFuncGetDate): |
| (JSC::dateProtoFuncGetUTCDate): |
| (JSC::dateProtoFuncGetDay): |
| (JSC::dateProtoFuncGetUTCDay): |
| (JSC::dateProtoFuncGetHours): |
| (JSC::dateProtoFuncGetUTCHours): |
| (JSC::dateProtoFuncGetMinutes): |
| (JSC::dateProtoFuncGetUTCMinutes): |
| (JSC::dateProtoFuncGetSeconds): |
| (JSC::dateProtoFuncGetUTCSeconds): |
| (JSC::dateProtoFuncGetTimezoneOffset): |
| (JSC::setNewValueFromTimeArgs): |
| (JSC::setNewValueFromDateArgs): |
| (JSC::dateProtoFuncSetYear): |
| (JSC::dateProtoFuncGetYear): Pass an ExecState to these functions, so they |
| can access the DateInstanceCache. |
| |
| * runtime/JSGlobalData.h: Keep a DateInstanceCache. |
| |
| 2009-10-27 James Robinson <jamesr@chromium.org> |
| |
| Reviewed by Darin Fisher. |
| |
| Ensures that JavaScriptCore/wtf/CurrentTime.cpp is not built in PLATFORM(CHROMIUM) builds. |
| |
| Chromium uses a different method to calculate the current time than is used in |
| JavaScriptCore/wtf/CurrentTime.cpp. This can lead to time skew when calls to currentTime() and Chromium's time |
| function are mixed. In particular, timers can get scheduled in the past which leads to 100% CPU use. |
| See http://code.google.com/p/chromium/issues/detail?id=25892 for an example. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=30833 |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| * wtf/CurrentTime.cpp: |
| |
| 2009-10-27 Peter Varga <pvarga@inf.u-szeged.hu> |
| |
| Rubber-stamped by Tor Arne Vestbø. |
| |
| Fix typo in RegexInterpreter.cpp and RegexJIT.cpp alterantive to |
| alternative. |
| |
| * yarr/RegexInterpreter.cpp: |
| (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction): |
| (JSC::Yarr::ByteCompiler::alternativeDisjunction): |
| (JSC::Yarr::ByteCompiler::emitDisjunction): |
| * yarr/RegexJIT.cpp: |
| (JSC::Yarr::RegexGenerator::generateDisjunction): |
| |
| 2009-10-26 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| Make .rc files compile on Windows without depending on MFC headers |
| https://bugs.webkit.org/show_bug.cgi?id=30750 |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: Use |
| winresrc.h because it exists even when MFC is not installed, and is |
| all that's needed here. |
| |
| 2009-10-26 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| The thunkReturnAddress is on JITStackFrame on ARM JIT as well |
| https://bugs.webkit.org/show_bug.cgi?id=30782 |
| |
| Move the thunkReturnAddress from top of the stack into the JITStackFrame |
| structure. This is a requirement for JSValue32_64 support on ARM. |
| |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::ret): Return with link register |
| (JSC::MacroAssemblerARM::prepareCall): Store the return address in link register |
| * jit/JIT.h: Remove unused ctiReturnRegister |
| * jit/JITInlineMethods.h: Same as ARMv7 |
| (JSC::JIT::restoreArgumentReference): Ditto. |
| (JSC::JIT::restoreArgumentReferenceForTrampoline): Ditto. |
| * jit/JITOpcodes.cpp: Remove ctiReturnRegister related instruction |
| * jit/JITStubs.cpp: Store thunkReturnAddress on JITStackFrame. Use |
| small trampoline functions which handle return addresses for each |
| CTI_STUB_FUNCTION. |
| * jit/JITStubs.h: Store thunkReturnAddress on JITStackFrame |
| (JSC::JITStackFrame::returnAddressSlot): Return with the address of thunkReturnAddress |
| * yarr/RegexJIT.cpp: |
| (JSC::Yarr::RegexGenerator::generateEnter): Remove the unnecessary instruction |
| |
| 2009-10-26 Steve Block <steveblock@google.com> |
| |
| Reviewed by Darin Adler. |
| |
| Adds ability to disable ReadWriteLock on platforms (eg Android) that use pthreads but do not support pthread_rwlock. |
| https://bugs.webkit.org/show_bug.cgi?id=30713 |
| |
| * wtf/Platform.h: Modified. Defines HAVE_PTHREAD_RWLOCK for all platforms currently using pthreads. |
| * wtf/Threading.h: Modified. Use pthread_rwlock_t only when HAVE_PTHREAD_RWLOCK is defined. |
| * wtf/ThreadingPthreads.cpp: Modified. Build ReadWriteLock methods only when HAVE_PTHREAD_RWLOCK is defined. |
| |
| 2009-10-24 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Holger Freyther. |
| |
| [Qt] [Symbian] Set the capability and memory required to run QtWebKit for Symbian |
| https://bugs.webkit.org/show_bug.cgi?id=30476 |
| |
| Assign ReadUserData WriteUserData NetworkServices Symbian capabilities |
| to jsc.exe. |
| |
| * jsc.pro: |
| |
| 2009-10-23 Steve Block <steveblock@google.com> |
| |
| Reviewed by Dmitry Titov. |
| |
| Fixes a leak in createThreadInternal on Android. |
| https://bugs.webkit.org/show_bug.cgi?id=30698 |
| |
| * wtf/ThreadingPthreads.cpp: Modified. |
| (WTF::createThreadInternal): Avoid leaking a ThreadData object on failure. |
| |
| 2009-10-22 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Fixed ASSERT when opening Safari's Caches window while the Web Inspector |
| is open. |
| |
| * runtime/Collector.cpp: |
| (JSC::typeName): Added two new types to the type name list in the Collector. |
| These types have been around for a while, but nobody remembered to consider them here. |
| |
| * runtime/JSCell.h: |
| (JSC::JSCell::isPropertyNameIterator): |
| * runtime/JSPropertyNameIterator.h: |
| (JSC::JSPropertyNameIterator::isPropertyNameIterator): Give the Collector |
| a way to tell if a cell is a JSPropertyNameIterator. |
| |
| 2009-10-22 Steve Falkenburg <sfalken@apple.com> |
| |
| Reviewed by Jon Honeycutt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=30686 |
| Remove debug-specific def file. |
| Only Debug_All target uses JavaScriptCore_debug.dll naming, and since |
| that target is only used internally, maintaining two files just to |
| suppress a single link warning isn't worthwhile. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Removed. |
| |
| 2009-10-21 Jon Honeycutt <jhoneycutt@apple.com> |
| |
| <rdar://problem/7270320> Screenshots of off-screen plug-ins are blank |
| <rdar://problem/7270314> After halting a transparent PluginView on |
| Windows, the transparency is applied twice |
| |
| Reviewed by Dan Bernstein. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| Export WTF::deleteOwnedPtr(HDC). |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| Ditto. |
| |
| 2009-10-20 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix: updated variable name. |
| |
| * runtime/DatePrototype.cpp: |
| (JSC::formatLocaleDate): |
| |
| 2009-10-20 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Mark Rowe. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_next_pname): Slightly tweaked this #ifdef to match the |
| size of a JSValue because m_jsStrings is an array of JSValues. |
| |
| 2009-10-20 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Mark Rowe. |
| |
| Fixed a 64-bit regression caused by the fix for |
| https://bugs.webkit.org/show_bug.cgi?id=30570. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_next_pname): Use TimesEight stepping on 64-bit, since |
| 64-bit pointers are eight bytes long. |
| |
| 2009-10-20 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Refactored DateInstance::msToGregorianDateTime so that a DateInstance's |
| caller doesn't need to supply the DateInstance's own internal value to |
| the DateInstance. |
| |
| * runtime/DateInstance.cpp: |
| (JSC::DateInstance::getGregorianDateTime): Renamed from "msToGregorianDateTime". |
| |
| * runtime/DateInstance.h: |
| * runtime/DatePrototype.cpp: |
| (JSC::formatLocaleDate): |
| (JSC::dateProtoFuncToString): |
| (JSC::dateProtoFuncToUTCString): |
| (JSC::dateProtoFuncToISOString): |
| (JSC::dateProtoFuncToDateString): |
| (JSC::dateProtoFuncToTimeString): |
| (JSC::dateProtoFuncToLocaleString): |
| (JSC::dateProtoFuncToLocaleDateString): |
| (JSC::dateProtoFuncToLocaleTimeString): |
| (JSC::dateProtoFuncGetTime): |
| (JSC::dateProtoFuncGetFullYear): |
| (JSC::dateProtoFuncGetUTCFullYear): |
| (JSC::dateProtoFuncToGMTString): |
| (JSC::dateProtoFuncGetMonth): |
| (JSC::dateProtoFuncGetUTCMonth): |
| (JSC::dateProtoFuncGetDate): |
| (JSC::dateProtoFuncGetUTCDate): |
| (JSC::dateProtoFuncGetDay): |
| (JSC::dateProtoFuncGetUTCDay): |
| (JSC::dateProtoFuncGetHours): |
| (JSC::dateProtoFuncGetUTCHours): |
| (JSC::dateProtoFuncGetMinutes): |
| (JSC::dateProtoFuncGetUTCMinutes): |
| (JSC::dateProtoFuncGetSeconds): |
| (JSC::dateProtoFuncGetUTCSeconds): |
| (JSC::dateProtoFuncGetTimezoneOffset): |
| (JSC::setNewValueFromTimeArgs): |
| (JSC::setNewValueFromDateArgs): |
| (JSC::dateProtoFuncSetYear): |
| (JSC::dateProtoFuncGetYear): Also renamed "utc" to "outputIsUTC", for clarity. |
| |
| 2009-10-20 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Geoffrey Garen. |
| |
| The op_next_pname should use 4 bytes addressing mode in case of JSValue32 |
| https://bugs.webkit.org/show_bug.cgi?id=30570 |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_next_pname): |
| |
| 2009-10-20 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Oliver Hunt. |
| |
| Move OverridesMarkChildren flag from DatePrototype to its parent class |
| https://bugs.webkit.org/show_bug.cgi?id=30372 |
| |
| * runtime/DateInstance.h: |
| (JSC::DateInstance::createStructure): |
| * runtime/DatePrototype.h: |
| |
| 2009-10-19 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Tightened up some put_by_id_transition code generation. |
| https://bugs.webkit.org/show_bug.cgi?id=30539 |
| |
| * jit/JIT.h: |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::testPrototype): |
| (JSC::JIT::privateCompilePutByIdTransition): No need to do object type |
| checks or read Structures and prototypes from objects: they're all known |
| constants at compile time. |
| |
| 2009-10-19 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Added a private API for getting a global context from a context, for |
| clients who want to preserve a context for a later callback. |
| |
| * API/APICast.h: |
| (toGlobalRef): Added an ASSERT, since this function is used more often |
| than before. |
| |
| * API/JSContextRef.cpp: |
| * API/JSContextRefPrivate.h: Added. The new API. |
| |
| * API/tests/testapi.c: |
| (print_callAsFunction): |
| (main): Test the new API. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.xcodeproj/project.pbxproj: Build and export the new API. |
| |
| 2009-10-17 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Tightened up some instanceof code generation. |
| https://bugs.webkit.org/show_bug.cgi?id=30488 |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_instanceof): |
| (JSC::JIT::emitSlow_op_instanceof): No need to do object type checks - |
| cell type checks and ImplementsDefaultHasIntance checks implicitly |
| supersede object type checks. |
| |
| 2009-10-18 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Darin Adler. |
| |
| Use _stricmp and _strnicmp instead of deprecated stricmp and strnicmp. |
| https://bugs.webkit.org/show_bug.cgi?id=30474 |
| |
| stricmp and strnicmp are deprecated beginning in Visual |
| C++ 2005. Use _stricmp and _strnicmp instead in StringExtras.h. |
| |
| * wtf/StringExtras.h: |
| (strncasecmp): |
| (strcasecmp): |
| |
| 2009-10-16 Geoffrey Garen <ggaren@apple.com> |
| |
| Build fix: apparently we shouldn't export those symbols? |
| |
| * JavaScriptCore.exp: |
| |
| 2009-10-16 Geoffrey Garen <ggaren@apple.com> |
| |
| Build fix: export some symbols. |
| |
| * JavaScriptCore.exp: |
| |
| 2009-10-16 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| structure typeinfo flags should be inherited. |
| https://bugs.webkit.org/show_bug.cgi?id=30468 |
| |
| Add StructureFlag constant to the various JSC classes and use |
| it for the TypeInfo construction. This allows us to simply |
| accumulate flags by basing each classes StructureInfo on its parents. |
| |
| * API/JSCallbackConstructor.h: |
| (JSC::JSCallbackConstructor::createStructure): |
| * API/JSCallbackFunction.h: |
| (JSC::JSCallbackFunction::createStructure): |
| * API/JSCallbackObject.h: |
| (JSC::JSCallbackObject::createStructure): |
| * debugger/DebuggerActivation.h: |
| (JSC::DebuggerActivation::createStructure): |
| * runtime/Arguments.h: |
| (JSC::Arguments::createStructure): |
| * runtime/BooleanObject.h: |
| (JSC::BooleanObject::createStructure): |
| * runtime/DatePrototype.h: |
| (JSC::DatePrototype::createStructure): |
| * runtime/FunctionPrototype.h: |
| (JSC::FunctionPrototype::createStructure): |
| * runtime/GlobalEvalFunction.h: |
| (JSC::GlobalEvalFunction::createStructure): |
| * runtime/InternalFunction.h: |
| (JSC::InternalFunction::createStructure): |
| * runtime/JSActivation.h: |
| (JSC::JSActivation::createStructure): |
| * runtime/JSArray.h: |
| (JSC::JSArray::createStructure): |
| * runtime/JSByteArray.cpp: |
| (JSC::JSByteArray::createStructure): |
| * runtime/JSByteArray.h: |
| * runtime/JSFunction.h: |
| (JSC::JSFunction::createStructure): |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::createStructure): |
| * runtime/JSNotAnObject.h: |
| (JSC::JSNotAnObject::createStructure): |
| * runtime/JSONObject.h: |
| (JSC::JSONObject::createStructure): |
| * runtime/JSObject.h: |
| (JSC::JSObject::createStructure): |
| * runtime/JSStaticScopeObject.h: |
| (JSC::JSStaticScopeObject::createStructure): |
| * runtime/JSVariableObject.h: |
| (JSC::JSVariableObject::createStructure): |
| * runtime/JSWrapperObject.h: |
| (JSC::JSWrapperObject::createStructure): |
| * runtime/MathObject.h: |
| (JSC::MathObject::createStructure): |
| * runtime/NumberConstructor.h: |
| (JSC::NumberConstructor::createStructure): |
| * runtime/NumberObject.h: |
| (JSC::NumberObject::createStructure): |
| * runtime/RegExpConstructor.h: |
| (JSC::RegExpConstructor::createStructure): |
| * runtime/RegExpObject.h: |
| (JSC::RegExpObject::createStructure): |
| * runtime/StringObject.h: |
| (JSC::StringObject::createStructure): |
| * runtime/StringObjectThatMasqueradesAsUndefined.h: |
| (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): |
| |
| 2009-10-16 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Fast for-in enumeration: Cache JSPropertyNameIterator; cache JSStrings |
| in JSPropertyNameIterator; inline more code. |
| |
| 1.024x as fast on SunSpider (fasta: 1.43x as fast). |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::dump): |
| * bytecode/Opcode.h: |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitGetPropertyNames): |
| (JSC::BytecodeGenerator::emitNextPropertyName): |
| * bytecompiler/BytecodeGenerator.h: Added a few extra operands to |
| op_get_pnames and op_next_pname so that we can track iteration state |
| in the register file instead of in the JSPropertyNameIterator. (To be |
| cacheable, the JSPropertyNameIterator must be stateless.) |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::tryCachePutByID): |
| (JSC::Interpreter::tryCacheGetByID): Updated for rename to |
| "normalizePrototypeChain" and removal of "isCacheable". |
| |
| (JSC::Interpreter::privateExecute): Updated for in-RegisterFile |
| iteration state tracking. |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileMainPass): |
| * jit/JIT.h: |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_get_pnames): Updated for in-RegisterFile |
| iteration state tracking. |
| |
| (JSC::JIT::emit_op_next_pname): Inlined code generation for op_next_pname. |
| |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::tryCachePutByID): |
| (JSC::JITThunks::tryCacheGetByID): Updated for rename to |
| "normalizePrototypeChain" and removal of "isCacheable". |
| |
| (JSC::DEFINE_STUB_FUNCTION): |
| * jit/JITStubs.h: |
| (JSC::): Added has_property and to_object stubs. Removed op_next_pname |
| stub, since has_property is all we need anymore. |
| |
| * parser/Nodes.cpp: |
| (JSC::ForInNode::emitBytecode): Updated for in-RegisterFile |
| iteration state tracking. |
| |
| * runtime/JSCell.h: |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::getPropertyNames): Don't do caching at this layer |
| anymore, since we don't create a JSPropertyNameIterator at this layer. |
| |
| * runtime/JSPropertyNameIterator.cpp: |
| (JSC::JSPropertyNameIterator::create): Do do caching at this layer. |
| (JSC::JSPropertyNameIterator::get): Updated for in-RegisterFile |
| iteration state tracking. |
| (JSC::JSPropertyNameIterator::markChildren): Mark our JSStrings. |
| |
| * runtime/JSPropertyNameIterator.h: |
| (JSC::JSPropertyNameIterator::size): |
| (JSC::JSPropertyNameIterator::setCachedStructure): |
| (JSC::JSPropertyNameIterator::cachedStructure): |
| (JSC::JSPropertyNameIterator::setCachedPrototypeChain): |
| (JSC::JSPropertyNameIterator::cachedPrototypeChain): |
| (JSC::JSPropertyNameIterator::JSPropertyNameIterator): |
| (JSC::Structure::setEnumerationCache): Don't store iteration state in |
| a JSPropertyNameIterator. Do cache a JSPropertyNameIterator in a |
| Structure. |
| |
| * runtime/JSValue.h: |
| (JSC::asCell): |
| * runtime/MarkStack.h: Make those mischievous #include gods happy. |
| |
| * runtime/ObjectConstructor.cpp: |
| |
| * runtime/Operations.h: |
| (JSC::normalizePrototypeChain): Renamed countPrototypeChainEntriesAndCheckForProxies |
| to normalizePrototypeChain, since it changes dictionary prototypes to |
| non-dictionary objects. |
| |
| * runtime/PropertyNameArray.cpp: |
| (JSC::PropertyNameArray::add): |
| * runtime/PropertyNameArray.h: |
| (JSC::PropertyNameArrayData::PropertyNameArrayData): |
| (JSC::PropertyNameArray::data): |
| (JSC::PropertyNameArray::size): |
| (JSC::PropertyNameArray::begin): |
| (JSC::PropertyNameArray::end): Simplified some code here to help with |
| current and future refactoring. |
| |
| * runtime/Protect.h: |
| * runtime/Structure.cpp: |
| (JSC::Structure::~Structure): |
| (JSC::Structure::addPropertyWithoutTransition): |
| (JSC::Structure::removePropertyWithoutTransition): No need to clear |
| the enumeration cache with adding / removing properties without |
| transition. It is an error to add / remove properties without transition |
| once an object has been observed, and we can ASSERT to catch that. |
| |
| * runtime/Structure.h: |
| (JSC::Structure::enumerationCache): Changed the enumeration cache to |
| hold a JSPropertyNameIterator. |
| |
| * runtime/StructureChain.cpp: |
| * runtime/StructureChain.h: |
| (JSC::StructureChain::head): Removed StructureChain::isCacheable because |
| it was wrong-headed in two ways: (1) It gave up when a prototype was a |
| dictionary, but instead we want un-dictionary heavily accessed |
| prototypes; (2) It folded a test for hasDefaultGetPropertyNames() into |
| a generic test for "cacheable-ness", but hasDefaultGetPropertyNames() |
| is only releavant to for-in caching. |
| |
| 2009-10-16 Steve Falkenburg <sfalken@apple.com> |
| |
| Reviewed by Adam Roben. |
| |
| Add a Debug_All configuration to build entire stack as debug. |
| Change Debug_Internal to: |
| - stop using _debug suffix for all WebKit/Safari binaries |
| - not use _debug as a DLL naming suffix |
| - use non-debug C runtime lib. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore.make: Debug build in makefile should build Debug_All. |
| * JavaScriptCore.vcproj/JavaScriptCore.sln: Add Debug_All configuration. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add Debug_All configuration. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Renamed single configuration from "Release" to "all". |
| * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Add Debug_All configuration. |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add Debug_All configuration. |
| * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_All configuration. |
| * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_All configuration. |
| |
| 2009-10-16 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Make typeinfo flags default to false |
| https://bugs.webkit.org/show_bug.cgi?id=30372 |
| |
| Last part -- replace HasDefaultGetPropertyNames with OverridesGetPropertyNames |
| flag. |
| |
| * API/JSCallbackConstructor.h: |
| (JSC::JSCallbackConstructor::createStructure): |
| * API/JSCallbackObject.h: |
| (JSC::JSCallbackObject::createStructure): |
| * debugger/DebuggerActivation.h: |
| (JSC::DebuggerActivation::createStructure): |
| * runtime/Arguments.h: |
| (JSC::Arguments::createStructure): |
| * runtime/BooleanObject.h: |
| (JSC::BooleanObject::createStructure): |
| * runtime/DatePrototype.h: |
| (JSC::DatePrototype::createStructure): |
| * runtime/FunctionPrototype.h: |
| (JSC::FunctionPrototype::createStructure): |
| * runtime/GlobalEvalFunction.h: |
| (JSC::GlobalEvalFunction::createStructure): |
| * runtime/JSAPIValueWrapper.h: |
| (JSC::JSAPIValueWrapper::createStructure): |
| * runtime/JSActivation.h: |
| (JSC::JSActivation::createStructure): |
| * runtime/JSArray.h: |
| (JSC::JSArray::createStructure): |
| * runtime/JSByteArray.cpp: |
| (JSC::JSByteArray::createStructure): |
| * runtime/JSFunction.h: |
| (JSC::JSFunction::createStructure): |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::createStructure): |
| * runtime/JSNotAnObject.h: |
| (JSC::JSNotAnObject::createStructure): |
| * runtime/JSONObject.h: |
| (JSC::JSONObject::createStructure): |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::getPropertyNames): |
| * runtime/JSObject.h: |
| (JSC::JSObject::createStructure): |
| * runtime/JSStaticScopeObject.h: |
| (JSC::JSStaticScopeObject::createStructure): |
| * runtime/JSTypeInfo.h: |
| (JSC::TypeInfo::overridesGetPropertyNames): |
| * runtime/JSVariableObject.h: |
| (JSC::JSVariableObject::createStructure): |
| * runtime/JSWrapperObject.h: |
| (JSC::JSWrapperObject::createStructure): |
| * runtime/MathObject.h: |
| (JSC::MathObject::createStructure): |
| * runtime/NumberConstructor.h: |
| (JSC::NumberConstructor::createStructure): |
| * runtime/NumberObject.h: |
| (JSC::NumberObject::createStructure): |
| * runtime/RegExpConstructor.h: |
| (JSC::RegExpConstructor::createStructure): |
| * runtime/RegExpObject.h: |
| (JSC::RegExpObject::createStructure): |
| * runtime/StringObject.h: |
| (JSC::StringObject::createStructure): |
| * runtime/StringObjectThatMasqueradesAsUndefined.h: |
| (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): |
| * runtime/StructureChain.cpp: |
| (JSC::StructureChain::isCacheable): |
| |
| 2009-10-16 Kevin Ollivier <kevino@theolliviers.com> |
| |
| wxMSW build fix, we can't use the simple hash there because the PlatformModuleVersion |
| structure differs. |
| |
| * wtf/Platform.h: |
| |
| 2009-10-16 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| [Qt] Implement ExecutableAllocator for Symbian |
| https://bugs.webkit.org/show_bug.cgi?id=29946 |
| |
| Tested with YARR JIT enabled for Symbian; |
| This patch does not (yet) enable YARR JIT by default. |
| |
| * JavaScriptCore.pri: |
| * jit/ExecutableAllocator.h: |
| * jit/ExecutableAllocatorSymbian.cpp: Added. |
| (JSC::ExecutableAllocator::intializePageSize): |
| (JSC::ExecutablePool::systemAlloc): |
| (JSC::ExecutablePool::systemRelease): |
| |
| 2009-10-15 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Make typeinfo flags default to false |
| https://bugs.webkit.org/show_bug.cgi?id=30372 |
| |
| Part 2 -- Reverse the TypeInfo HasDefaultMark flag to OverridesMarkChildren, etc |
| |
| * API/JSCallbackConstructor.h: |
| (JSC::JSCallbackConstructor::createStructure): |
| * API/JSCallbackFunction.h: |
| (JSC::JSCallbackFunction::createStructure): |
| * API/JSCallbackObject.h: |
| (JSC::JSCallbackObject::createStructure): |
| * debugger/DebuggerActivation.h: |
| (JSC::DebuggerActivation::createStructure): |
| * runtime/Arguments.h: |
| (JSC::Arguments::createStructure): |
| * runtime/BooleanObject.h: |
| (JSC::BooleanObject::createStructure): |
| * runtime/DatePrototype.h: |
| (JSC::DatePrototype::createStructure): |
| * runtime/FunctionPrototype.h: |
| (JSC::FunctionPrototype::createStructure): |
| * runtime/GetterSetter.h: |
| (JSC::GetterSetter::createStructure): |
| * runtime/GlobalEvalFunction.h: |
| (JSC::GlobalEvalFunction::createStructure): |
| * runtime/InternalFunction.h: |
| (JSC::InternalFunction::createStructure): |
| * runtime/JSAPIValueWrapper.h: |
| (JSC::JSAPIValueWrapper::createStructure): |
| * runtime/JSActivation.h: |
| (JSC::JSActivation::createStructure): |
| * runtime/JSArray.h: |
| (JSC::JSArray::createStructure): |
| (JSC::MarkStack::markChildren): |
| * runtime/JSByteArray.cpp: |
| (JSC::JSByteArray::createStructure): |
| * runtime/JSFunction.h: |
| (JSC::JSFunction::createStructure): |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::createStructure): |
| * runtime/JSNotAnObject.h: |
| (JSC::JSNotAnObject::createStructure): |
| * runtime/JSNumberCell.h: |
| (JSC::JSNumberCell::createStructure): |
| * runtime/JSONObject.h: |
| (JSC::JSONObject::createStructure): |
| * runtime/JSObject.h: |
| (JSC::JSObject::createStructure): |
| * runtime/JSPropertyNameIterator.h: |
| (JSC::JSPropertyNameIterator::createStructure): |
| * runtime/JSStaticScopeObject.h: |
| (JSC::JSStaticScopeObject::createStructure): |
| * runtime/JSString.h: |
| (JSC::JSString::createStructure): |
| * runtime/JSTypeInfo.h: |
| (JSC::TypeInfo::overridesMarkChildren): |
| * runtime/JSVariableObject.h: |
| (JSC::JSVariableObject::createStructure): |
| * runtime/JSWrapperObject.h: |
| (JSC::JSWrapperObject::createStructure): |
| * runtime/MathObject.h: |
| (JSC::MathObject::createStructure): |
| * runtime/NumberConstructor.h: |
| (JSC::NumberConstructor::createStructure): |
| * runtime/NumberObject.h: |
| (JSC::NumberObject::createStructure): |
| * runtime/RegExpConstructor.h: |
| (JSC::RegExpConstructor::createStructure): |
| * runtime/RegExpObject.h: |
| (JSC::RegExpObject::createStructure): |
| * runtime/StringObject.h: |
| (JSC::StringObject::createStructure): |
| * runtime/StringObjectThatMasqueradesAsUndefined.h: |
| (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): |
| |
| 2009-10-14 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Make typeinfo flags default to false |
| https://bugs.webkit.org/show_bug.cgi?id=30372 |
| |
| Part 1. Reverse the HasStandardGetOwnPropertySlot flag. |
| |
| * API/JSCallbackConstructor.h: |
| (JSC::JSCallbackConstructor::createStructure): |
| * API/JSCallbackFunction.h: |
| (JSC::JSCallbackFunction::createStructure): |
| * API/JSCallbackObject.h: |
| (JSC::JSCallbackObject::createStructure): |
| * debugger/DebuggerActivation.h: |
| (JSC::DebuggerActivation::createStructure): |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/Arguments.h: |
| (JSC::Arguments::createStructure): |
| * runtime/BooleanObject.h: |
| (JSC::BooleanObject::createStructure): |
| * runtime/DatePrototype.h: |
| (JSC::DatePrototype::createStructure): |
| * runtime/FunctionPrototype.h: |
| (JSC::FunctionPrototype::createStructure): |
| * runtime/GlobalEvalFunction.h: |
| (JSC::GlobalEvalFunction::createStructure): |
| * runtime/InternalFunction.h: |
| (JSC::InternalFunction::createStructure): |
| * runtime/JSActivation.h: |
| (JSC::JSActivation::createStructure): |
| * runtime/JSArray.h: |
| (JSC::JSArray::createStructure): |
| * runtime/JSByteArray.cpp: |
| (JSC::JSByteArray::createStructure): |
| * runtime/JSFunction.h: |
| (JSC::JSFunction::createStructure): |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::createStructure): |
| * runtime/JSNumberCell.h: |
| (JSC::JSNumberCell::createStructure): |
| * runtime/JSONObject.h: |
| (JSC::JSONObject::createStructure): |
| * runtime/JSObject.h: |
| (JSC::JSObject::createStructure): |
| (JSC::JSCell::fastGetOwnPropertySlot): |
| * runtime/JSStaticScopeObject.h: |
| (JSC::JSStaticScopeObject::createStructure): |
| * runtime/JSString.h: |
| (JSC::JSString::createStructure): |
| * runtime/JSTypeInfo.h: |
| (JSC::TypeInfo::overridesGetOwnPropertySlot): |
| * runtime/JSVariableObject.h: |
| (JSC::JSVariableObject::createStructure): |
| * runtime/JSWrapperObject.h: |
| (JSC::JSWrapperObject::createStructure): |
| * runtime/MathObject.h: |
| (JSC::MathObject::createStructure): |
| * runtime/NumberConstructor.h: |
| (JSC::NumberConstructor::createStructure): |
| * runtime/NumberObject.h: |
| (JSC::NumberObject::createStructure): |
| * runtime/RegExpConstructor.h: |
| (JSC::RegExpConstructor::createStructure): |
| * runtime/RegExpObject.h: |
| (JSC::RegExpObject::createStructure): |
| * runtime/StringObject.h: |
| (JSC::StringObject::createStructure): |
| * runtime/StringObjectThatMasqueradesAsUndefined.h: |
| (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): |
| |
| 2009-10-14 Kevin Ollivier <kevino@theolliviers.com> |
| 2009-10-14 Darin Adler <darin@apple.com> |
| |
| Additions so fix for https://bugs.webkit.org/show_bug.cgi?id=18994 |
| can build on Windows. |
| |
| * wtf/MathExtras.h: Added llround and llroundf for Windows. |
| |
| 2009-10-14 Kevin Ollivier <kevino@theolliviers.com> |
| |
| wx build fix. Set ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH for plugins while we're still building stubs. |
| |
| * wtf/Platform.h: |
| |
| 2009-10-13 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Refactor ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH |
| https://bugs.webkit.org/show_bug.cgi?id=30278 |
| |
| Move the definition of ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH |
| from the make system into common code. |
| |
| * wtf/Platform.h: |
| |
| 2009-10-13 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| ARM compiler does not understand reinterpret_cast<void*> |
| https://bugs.webkit.org/show_bug.cgi?id=29034 |
| |
| Change reinterpret_cast<void*> to regular C style (void*) cast |
| for the ARM RVCT compiler. |
| |
| * assembler/MacroAssemblerCodeRef.h: |
| (JSC::FunctionPtr::FunctionPtr): |
| * jit/JITOpcodes.cpp: Cast to FunctionPtr first |
| instead of directly casting to reinterpret_cast |
| * jit/JITStubCall.h: Ditto + change the type of m_stub |
| from void* to FunctionPtr. |
| (JSC::JITStubCall::JITStubCall): |
| (JSC::JITStubCall::call): |
| * jit/JITStubs.cpp: Ditto. |
| (JSC::DEFINE_STUB_FUNCTION(EncodedJSValue, op_throw)): |
| |
| 2009-10-11 Oliver Hunt <oliver@apple.com> |
| |
| Re-enable the JIT. |
| |
| * wtf/Platform.h: |
| |
| 2009-10-10 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Support for String.trim(), String.trimLeft() and String.trimRight() methods |
| https://bugs.webkit.org/show_bug.cgi?id=26590 |
| |
| Implement trim, trimLeft, and trimRight |
| |
| * runtime/StringPrototype.cpp: |
| (JSC::isTrimWhitespace): |
| Our normal string whitespace function does not include U+200B which |
| is needed for compatibility with mozilla's implementation of trim. |
| U+200B does not appear to be expected according to spec, however I am |
| choosing to be lax, and match mozilla behavior so have added this |
| exception. |
| (JSC::trimString): |
| |
| 2009-10-09 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Eliminated some legacy bytecode weirdness. |
| |
| Use vPC[x] subscripting instead of ++vPC to access instruction operands. |
| This is simpler, and often more efficient. |
| |
| To support this, and to remove use of hard-coded offsets in bytecode and |
| JIT code generation and dumping, calculate jump offsets from the beginning |
| of an instruction, rather than the middle or end. |
| |
| Also, use OPCODE_LENGTH instead of hard-coded constants for the sizes of |
| opcodes. |
| |
| SunSpider reports no change in JIT mode, and a 1.01x speedup in Interpreter |
| mode. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::printConditionalJump): |
| (JSC::CodeBlock::dump): |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitJump): |
| (JSC::BytecodeGenerator::emitJumpIfTrue): |
| (JSC::BytecodeGenerator::emitJumpIfFalse): |
| (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): |
| (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): |
| (JSC::BytecodeGenerator::emitComplexJumpScopes): |
| (JSC::BytecodeGenerator::emitJumpScopes): |
| (JSC::BytecodeGenerator::emitNextPropertyName): |
| (JSC::BytecodeGenerator::emitCatch): |
| (JSC::BytecodeGenerator::emitJumpSubroutine): |
| (JSC::prepareJumpTableForImmediateSwitch): |
| (JSC::prepareJumpTableForCharacterSwitch): |
| (JSC::prepareJumpTableForStringSwitch): |
| (JSC::BytecodeGenerator::endSwitch): |
| * bytecompiler/Label.h: |
| (JSC::Label::setLocation): |
| (JSC::Label::bind): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::resolve): |
| (JSC::Interpreter::resolveSkip): |
| (JSC::Interpreter::resolveGlobal): |
| (JSC::Interpreter::resolveBase): |
| (JSC::Interpreter::resolveBaseAndProperty): |
| (JSC::Interpreter::createExceptionScope): |
| (JSC::Interpreter::privateExecute): |
| * interpreter/Interpreter.h: |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompile): |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_jnless): |
| (JSC::JIT::emitSlow_op_jnless): |
| (JSC::JIT::emit_op_jnlesseq): |
| (JSC::JIT::emitSlow_op_jnlesseq): |
| (JSC::JIT::emitBinaryDoubleOp): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_jmp): |
| (JSC::JIT::emit_op_loop): |
| (JSC::JIT::emit_op_loop_if_less): |
| (JSC::JIT::emitSlow_op_loop_if_less): |
| (JSC::JIT::emit_op_loop_if_lesseq): |
| (JSC::JIT::emitSlow_op_loop_if_lesseq): |
| (JSC::JIT::emit_op_loop_if_true): |
| (JSC::JIT::emitSlow_op_loop_if_true): |
| (JSC::JIT::emit_op_jfalse): |
| (JSC::JIT::emitSlow_op_jfalse): |
| (JSC::JIT::emit_op_jtrue): |
| (JSC::JIT::emitSlow_op_jtrue): |
| (JSC::JIT::emit_op_jeq_null): |
| (JSC::JIT::emit_op_jneq_null): |
| (JSC::JIT::emit_op_jneq_ptr): |
| (JSC::JIT::emit_op_jsr): |
| (JSC::JIT::emit_op_next_pname): |
| (JSC::JIT::emit_op_jmp_scopes): |
| |
| 2009-10-09 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Migrated some code that didn't belong out of Structure. |
| |
| SunSpider says maybe 1.03x faster. |
| |
| * runtime/JSCell.h: Nixed Structure::markAggregate, and made marking of |
| a Structure's prototype the direct responsility of the object using it. |
| (Giving Structure a mark function was misleading because it implied that |
| all live structures get marked during GC, when they don't.) |
| |
| * runtime/JSGlobalObject.cpp: |
| (JSC::markIfNeeded): |
| (JSC::JSGlobalObject::markChildren): Added code to mark prototypes stored |
| on the global object. Maybe this wasn't necessary, but now we don't have |
| to wonder. |
| |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::getPropertyNames): |
| (JSC::JSObject::getOwnPropertyNames): |
| (JSC::JSObject::getEnumerableNamesFromClassInfoTable): |
| * runtime/JSObject.h: |
| (JSC::JSObject::markChildrenDirect): |
| * runtime/PropertyNameArray.h: |
| * runtime/Structure.cpp: |
| * runtime/Structure.h: |
| (JSC::Structure::setEnumerationCache): |
| (JSC::Structure::enumerationCache): Moved property name gathering code |
| from Structure to JSObject because having a Structure iterate its JSObject |
| was a layering violation. A JSObject is implemented using a Structure; not |
| the other way around. |
| |
| 2009-10-09 Mark Rowe <mrowe@apple.com> |
| |
| Attempt to fix the GTK release build. |
| |
| * GNUmakefile.am: Include Grammar.cpp in release builds now that |
| AllInOneFile.cpp is gone. |
| |
| 2009-10-09 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Rubber-stamped by Eric Seidel. |
| |
| Add ARM JIT support for Gtk port (disabled by default) |
| https://bugs.webkit.org/show_bug.cgi?id=30228 |
| |
| * GNUmakefile.am: |
| |
| 2009-10-08 Geoffrey Garen <ggaren@apple.com> |
| |
| Tiger build fix: added a few more variable initializations. |
| |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncReplace): |
| (JSC::stringProtoFuncSearch): |
| |
| 2009-10-08 Geoffrey Garen <ggaren@apple.com> |
| |
| Qt build fix: added missing #include. |
| |
| * jsc.cpp: |
| |
| 2009-10-08 Geoffrey Garen <ggaren@apple.com> |
| |
| Tiger build fix: initialize variable whose initialization the compiler |
| can't otherwise figure out. |
| |
| * runtime/RegExpObject.cpp: |
| (JSC::RegExpObject::match): |
| |
| 2009-10-08 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix: updated exports. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-10-08 Geoffrey Garen <ggaren@apple.com> |
| |
| Tiger build fix: fixed file name case. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2009-10-08 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| At long last, I pronounce the death of AllInOneFile.cpp. |
| |
| SunSpider reports a 1.01x speedup. |
| |
| * AllInOneFile.cpp: Removed. |
| * GNUmakefile.am: |
| * JavaScriptCore.exp: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.xcodeproj/project.pbxproj: Added missing project files |
| to compilation stages. |
| |
| * parser/Grammar.y: |
| * parser/Lexer.cpp: |
| * parser/Lexer.h: |
| (JSC::jscyylex): |
| * runtime/ArrayConstructor.cpp: |
| (JSC::constructArrayWithSizeQuirk): |
| * runtime/Collector.h: |
| * runtime/JSCell.cpp: |
| (JSC::JSCell::operator new): |
| * runtime/JSCell.h: |
| (JSC::JSCell::operator new): |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::operator new): |
| * runtime/JSNumberCell.h: |
| (JSC::JSNumberCell::operator new): |
| * runtime/JSString.cpp: |
| * runtime/JSString.h: |
| (JSC::jsString): |
| (JSC::jsSubstring): |
| (JSC::jsOwnedString): |
| * runtime/RegExpConstructor.cpp: |
| * runtime/RegExpConstructor.h: |
| (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate): |
| (JSC::RegExpConstructorPrivate::lastOvector): |
| (JSC::RegExpConstructorPrivate::tempOvector): |
| (JSC::RegExpConstructorPrivate::changeLastOvector): |
| (JSC::RegExpConstructor::performMatch): |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncMatch): |
| * yarr/RegexJIT.cpp: |
| * yarr/RegexJIT.h: |
| (JSC::Yarr::executeRegex): Inlined a few things that Shark said |
| were hot, on the presumption that AllInOneFile.cpp used to inline them |
| automatically. |
| |
| 2009-10-08 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Fix for JIT'ed op_call instructions (evals, constructs, etc.) |
| when !ENABLE(JIT_OPTIMIZE_CALL) && USE(JSVALUE32_64) |
| |
| https://bugs.webkit.org/show_bug.cgi?id=30201 |
| |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCall): |
| |
| 2009-10-07 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix: removed no longer exported symbol. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-10-07 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Fixed <rdar://problem/5751979> Database code takes JSLock on secondary |
| thread, permanently slowing down JavaScript |
| |
| Removed the optional lock from Heap::protect, Heap::unprotect, and friends, |
| since WebCore no longer uses it. |
| |
| * JavaScriptCore.exp: |
| * runtime/Collector.cpp: |
| (JSC::Heap::protect): |
| (JSC::Heap::unprotect): |
| (JSC::Heap::markProtectedObjects): |
| (JSC::Heap::protectedGlobalObjectCount): |
| (JSC::Heap::protectedObjectCount): |
| (JSC::Heap::protectedObjectTypeCounts): |
| * runtime/Collector.h: |
| |
| 2009-10-07 Zoltan Horvath <zoltan@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| Allow custom memory allocation control for JavaScriptCore's IdentifierArena |
| https://bugs.webkit.org/show_bug.cgi?id=30158 |
| |
| Inherits IdentifierArena class from FastAllocBase because it has been |
| instantiated by 'new' in JavaScriptCore/parser/ParserArena.cpp:36. |
| |
| * parser/ParserArena.h: |
| |
| 2009-10-07 Adam Roben <aroben@apple.com> |
| |
| Export DateInstance::info in a way that works on Windows |
| |
| Fixes <http://webkit.org/b/30171> |
| fast/dom/Window/window-postmessage-clone.html fails on Windows |
| |
| Reviewed by Anders Carlsson. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| Removed the export of DateInstance::info from here. |
| |
| * runtime/DateInstance.h: Use JS_EXPORTDATA to export |
| DateInstance::info, which is the required way of exporting data on |
| Windows. |
| |
| 2009-10-07 Jørgen Lind <jorgen.lind@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| When enabling or disabling the JIT through .qmake.cache, make sure |
| to also toggle ENABLE_YARR_JIT. |
| |
| * JavaScriptCore.pri: |
| |
| 2009-10-06 Priit Laes <plaes@plaes.org> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Linking fails with "relocation R_X86_64_PC32 against symbol |
| `cti_vm_throw'" |
| https://bugs.webkit.org/show_bug.cgi?id=28422 |
| |
| * jit/JITStubs.cpp: |
| Mark cti_vm_throw symbol as PLT-indirect symbol, so it doesn't end up |
| in text segment causing relocation errors on amd64 architecture. |
| Introduced new define SYMBOL_STRING_RELOCATION for such symbols. |
| |
| 2009-10-06 Oliver Hunt <oliver@apple.com> |
| |
| Windows linking fix |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-10-06 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by NOBODY (build fix). |
| |
| Windows build fix. |
| |
| * runtime/DateInstance.cpp: |
| |
| 2009-10-05 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| It should be possible to post (clone) built-in JS objects to Workers |
| https://bugs.webkit.org/show_bug.cgi?id=22878 |
| |
| Expose helpers to throw correct exceptions during object graph walk |
| used for cloning and add a helper function to create Date instances |
| without going through the JS Date constructor function. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * runtime/DateInstance.cpp: |
| (JSC::DateInstance::DateInstance): |
| * runtime/DateInstance.h: |
| * runtime/ExceptionHelpers.cpp: |
| (JSC::createTypeError): |
| * runtime/ExceptionHelpers.h: |
| |
| 2009-10-06 David Levin <levin@chromium.org> |
| |
| Reviewed by Oliver Hunt. |
| |
| StringImpl needs a method to get an instance for another thread which doesn't copy the underlying buffer. |
| https://bugs.webkit.org/show_bug.cgi?id=30095 |
| |
| * wtf/CrossThreadRefCounted.h: |
| Removed an unused function and assert improvement. |
| (WTF::CrossThreadRefCounted::isOwnedByCurrentThread): Moved out common code from asserts. |
| (WTF::CrossThreadRefCounted::ref): Changed assert to use the common method. |
| (WTF::CrossThreadRefCounted::deref): Changed assert to use the common method. |
| (WTF::CrossThreadRefCounted::crossThreadCopy): Since this includes a potentially |
| non-threadsafe operation, add an assert that the class is owned by the current thread. |
| |
| 2009-10-05 Kevin Ollivier <kevino@theolliviers.com> |
| |
| wx build fix. Add Symbian files to the list of excludes. |
| |
| * wscript: |
| |
| 2009-10-05 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| [Qt] Remove precompiled header from JavaScriptCore compilation to |
| prevent qmake warning during autonomous compilation. |
| https://bugs.webkit.org/show_bug.cgi?id=30069 |
| |
| * JavaScriptCore.pro: |
| |
| 2009-10-02 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Removed the concept of a "fast access cutoff" in arrays, because it |
| punished some patterns of array access too much, and made things too |
| complex for inlining in some cases. |
| |
| 1.3% speedup on SunSpider. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emitSlow_op_get_by_val): |
| (JSC::JIT::emitSlow_op_put_by_val): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emit_op_get_by_val): |
| (JSC::JIT::emitSlow_op_get_by_val): |
| (JSC::JIT::emit_op_put_by_val): |
| (JSC::JIT::emitSlow_op_put_by_val): |
| * jit/JITStubs.cpp: |
| * jit/JITStubs.h: |
| (JSC::): Check m_vectorLength instead of m_fastAccessCutoff when |
| getting / putting from / to an array. Inline putting past the end of |
| the array. |
| |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::JSArray): |
| (JSC::JSArray::getOwnPropertySlot): |
| (JSC::JSArray::getOwnPropertyDescriptor): |
| (JSC::JSArray::put): |
| (JSC::JSArray::putSlowCase): |
| (JSC::JSArray::deleteProperty): |
| (JSC::JSArray::getOwnPropertyNames): |
| (JSC::JSArray::increaseVectorLength): |
| (JSC::JSArray::setLength): |
| (JSC::JSArray::pop): |
| (JSC::JSArray::push): |
| (JSC::JSArray::sort): |
| (JSC::JSArray::fillArgList): |
| (JSC::JSArray::copyToRegisters): |
| (JSC::JSArray::compactForSorting): |
| (JSC::JSArray::checkConsistency): |
| * runtime/JSArray.h: |
| (JSC::JSArray::canGetIndex): |
| (JSC::JSArray::canSetIndex): |
| (JSC::JSArray::setIndex): |
| (JSC::JSArray::markChildrenDirect): Removed m_fastAccessCutoff, and |
| replaced with checks for JSValue() to detect reads and writes from / to |
| uninitialized parts of the array. |
| |
| 2009-10-02 Jonni Rainisto <jonni.rainisto@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| Math.random() gives too low values on Win32 when _CRT_RAND_S is not defined |
| https://bugs.webkit.org/show_bug.cgi?id=29956 |
| |
| * wtf/RandomNumber.cpp: |
| (WTF::randomNumber): Added PLATFORM(WIN_OS) to handle 15bit rand() |
| |
| 2009-10-02 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Take one branch instead of two to test for JSValue(). |
| |
| 1.1% SunSpider speedup. |
| |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCall): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_to_jsnumber): |
| (JSC::JIT::emit_op_create_arguments): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emitSlow_op_get_by_val): |
| (JSC::JIT::emit_op_put_by_val): Test for the empty value tag, instead |
| of testing for the cell tag with a 0 payload. |
| |
| * runtime/JSValue.cpp: |
| (JSC::JSValue::description): Added support for dumping the new empty value, |
| and deleted values, in debug builds. |
| |
| * runtime/JSValue.h: |
| (JSC::JSValue::JSValue()): Construct JSValue() with the empty value tag. |
| |
| (JSC::JSValue::JSValue(JSCell*)): Convert null pointer to the empty value |
| tag, to avoid having two different c++ versions of null / empty. |
| |
| (JSC::JSValue::operator bool): Test for the empty value tag, instead |
| of testing for the cell tag with a 0 payload. |
| |
| 2009-10-02 Steve Falkenburg <sfalken@apple.com> |
| |
| Reviewed by Mark Rowe. |
| |
| <https://bugs.webkit.org/show_bug.cgi?id=29989> |
| Safari version number shouldn't be exposed in WebKit code |
| |
| For a WebKit version of 532.3.4: |
| Product version is: 5.32.3.4 (was 4.0.3.0) |
| File version is: 5.32.3.4 (was 4.532.3.4) |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: |
| |
| 2009-10-02 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> |
| |
| Rubber-stamped by Simon Hausmann. |
| |
| Fix the Qt on Mac OS X build. |
| |
| * wtf/FastMalloc.cpp: |
| |
| 2009-10-02 Jørgen Lind <jorgen.lind@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Allow enabling and disabling of the JIT through a qmake variable. |
| |
| Qt's configure may set this variable through .qmake.cache if a |
| commandline option is given and/or the compile test for hwcap.h |
| failed/succeeded. |
| |
| * JavaScriptCore.pri: |
| |
| 2009-10-01 Mark Rowe <mrowe@apple.com> |
| |
| Fix the Tiger build. Don't unconditionally enable 3D canvas as it is not supported on Tiger. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2009-10-01 Yongjun Zhang <yongjun.zhang@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=29187 |
| |
| Don't inline ~ListRefPtr() to work around winscw compiler forward declaration |
| bug regarding templated classes. |
| |
| The compiler bug is reported at: |
| https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812 |
| |
| The change will be reverted when the above bug is fixed in winscw compiler. |
| |
| * wtf/ListRefPtr.h: |
| (WTF::::~ListRefPtr): |
| |
| 2009-10-01 Zoltan Horvath <zoltan@webkit.org> |
| |
| Reviewed by Simon Hausmann. |
| |
| [Qt] Allow custom memory allocation control for the whole JavaScriptCore |
| https://bugs.webkit.org/show_bug.cgi?id=27029 |
| |
| Since in JavaScriptCore almost every class which has been instantiated by operator new is |
| inherited from FastAllocBase (bug #20422), we disable customizing global operator new for the Qt-port |
| when USE_SYSTEM_MALLOC=0. |
| |
| Add #include <unistd.h> to FastMalloc.cpp because it's used by TCMalloc_PageHeap::scavengerThread(). |
| (It's needed for the functionality of TCmalloc.) |
| |
| Add TCSystemAlloc.cpp to JavaScriptCore.pri if USE_SYSTEM_MALLOC is disabled. |
| |
| * JavaScriptCore.pri: |
| * wtf/FastMalloc.cpp: |
| (WTF::sleep): |
| * wtf/FastMalloc.h: |
| |
| 2009-09-30 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by George Staikos. |
| |
| Defines two pseudo-platforms for ARM and Thumb-2 instruction set. |
| https://bugs.webkit.org/show_bug.cgi?id=29122 |
| |
| Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2 |
| macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used |
| when Thumb-2 instruction set is the required target. The |
| PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In |
| case where the code is common the PLATFORM(ARM) have to be used. |
| |
| Modified by George Wright <gwright@rim.com> to correctly work |
| with the RVCT-defined __TARGET_ARCH_ARM and __TARGET_ARCH_THUMB |
| compiler macros, as well as adding readability changes. |
| |
| * wtf/Platform.h: |
| |
| 2009-09-30 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Devirtualise array toString conversion |
| |
| Tweak the implementation of Array.prototype.toString to have a fast path |
| when acting on a true JSArray. |
| |
| * runtime/ArrayPrototype.cpp: |
| (JSC::arrayProtoFuncToString): |
| |
| 2009-09-30 Csaba Osztrogonac <oszi@inf.u-szeged.hu> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Buildfix for platforms using JSVALUE32. |
| https://bugs.webkit.org/show_bug.cgi?id=29915 |
| |
| After http://trac.webkit.org/changeset/48905 the build broke in JSVALUE32 case. |
| Also removed unreachable code. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_add): |
| - Declaration of "OperandTypes types" moved before first use. |
| - Typos fixed: dst modified to result, regT2 added. |
| - Unreachable code removed. |
| (JSC::JIT::emitSlow_op_add): |
| - Missing declaration of "OperandTypes types" added. |
| |
| 2009-09-30 Janne Koskinen <janne.p.koskinen@digia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Reduce heap size on Symbian from 64MB to 8MB. |
| |
| This is not a perfect fix, it requires more fine tuning. |
| But this makes it possible again to debug in the emulator, |
| which is more important in order to be able to fix other |
| run-time issues. |
| |
| * runtime/Collector.h: |
| |
| 2009-09-30 Janne Koskinen <janne.p.koskinen@digia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Fix CRASH() macro for Symbian build. |
| |
| * wtf/Assertions.h: Added missing } |
| |
| 2009-09-29 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Inlined a few math operations. |
| |
| ~1% SunSpider speedup. |
| |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::compileBinaryArithOpSlowCase): |
| (JSC::JIT::emitSlow_op_add): |
| (JSC::JIT::emitSlow_op_mul): |
| (JSC::JIT::emit_op_sub): |
| (JSC::JIT::emitSlow_op_sub): Don't take a stub call when operating on |
| a constant int and a double. |
| |
| 2009-09-28 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Tidy up codeblock sampler |
| https://bugs.webkit.org/show_bug.cgi?id=29836 |
| |
| Some rather simple refactoring of codeblock sampler so that |
| it's easier for us to use it to find problems in non-jsc |
| environments |
| |
| * JavaScriptCore.exp: |
| * bytecode/SamplingTool.h: |
| * debugger/Debugger.cpp: |
| (JSC::evaluateInGlobalCallFrame): |
| * debugger/DebuggerCallFrame.cpp: |
| (JSC::DebuggerCallFrame::evaluate): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::Interpreter): |
| (JSC::Interpreter::execute): |
| (JSC::Interpreter::privateExecute): |
| (JSC::Interpreter::enableSampler): |
| (JSC::Interpreter::dumpSampleData): |
| (JSC::Interpreter::startSampling): |
| (JSC::Interpreter::stopSampling): |
| * interpreter/Interpreter.h: |
| (JSC::Interpreter::sampler): |
| * jit/JIT.h: |
| * jsc.cpp: |
| (runWithScripts): |
| * runtime/Completion.cpp: |
| (JSC::checkSyntax): |
| (JSC::evaluate): |
| * runtime/Executable.h: |
| (JSC::EvalExecutable::EvalExecutable): |
| (JSC::ProgramExecutable::create): |
| (JSC::ProgramExecutable::ProgramExecutable): |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::startSampling): |
| (JSC::JSGlobalData::stopSampling): |
| (JSC::JSGlobalData::dumpSampleData): |
| * runtime/JSGlobalData.h: |
| * runtime/JSGlobalObjectFunctions.cpp: |
| (JSC::globalFuncEval): |
| |
| 2009-09-29 Jeremy Orlow <jorlow@chromium.org> |
| |
| Reviewed by Dimitri Glazkov. |
| |
| Add GYP generated files to svn:ignore |
| https://bugs.webkit.org/show_bug.cgi?id=29895 |
| |
| The following files are generated by JavaScriptCore's GYP file and should be ignored: |
| |
| pcre.mk |
| wtf.scons |
| wtf.mk |
| SConstruct |
| wtf_config.scons |
| wtf_config.mk |
| pcre.scons |
| |
| * JavaScriptCore.gyp: Changed property svn:ignore. |
| |
| 2009-09-29 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Standardized an optimization for adding non-numbers. |
| |
| SunSpider says maybe a tiny speedup. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_add): |
| (JSC::JIT::emitSlow_op_add): |
| |
| 2009-09-29 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix: export a new symbol. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-09-28 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Removed virtual destructor from JSGlobalObjectData to eliminate pointer |
| fix-ups when accessing JSGlobalObject::d. |
| |
| Replaced with an explicit destructor function pointer. |
| |
| 6% speedup on bench-alloc-nonretained.js. |
| |
| * JavaScriptCore.exp: |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::~JSGlobalObject): |
| (JSC::JSGlobalObject::destroyJSGlobalObjectData): |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): |
| (JSC::JSGlobalObject::JSGlobalObject): |
| |
| 2009-09-29 Janne Koskinen <janne.p.koskinen@digia.com> |
| |
| Reviewed by David Kilzer. |
| |
| [Qt] Assert messages prints visible in Symbian |
| https://bugs.webkit.org/show_bug.cgi?id=29808 |
| |
| Asserts use vprintf to print the messages to stderr. |
| In Symbian Open C it is not possible to see stderr so |
| I routed the messages to stdout instead. |
| |
| * wtf/Assertions.cpp: |
| |
| 2009-09-29 Janne Koskinen <janne.p.koskinen@digia.com> |
| |
| Reviewed by Darin Adler. |
| |
| [Qt] Symbian CRASH macro implementation |
| |
| Added Symbian specific crash macro that |
| stops to crash line if JIT debugging is used. |
| Additional differentiation of access violation |
| (KERN-EXEC 3) and CRASH panic. |
| |
| * wtf/Assertions.h: |
| |
| 2009-09-28 Mark Rowe <mrowe@apple.com> |
| |
| Fix the PowerPC build. |
| |
| * JavaScriptCore.exp: |
| |
| 2009-09-28 Mark Rowe <mrowe@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| <rdar://problem/7195704> JavaScriptCore fails to mark registers when built for x86_64 using LLVM GCC. |
| |
| * runtime/Collector.cpp: |
| (JSC::Heap::markCurrentThreadConservatively): Force jmp_buf to use the appropriate alignment for a pointer |
| to ensure that we correctly interpret the contents of registers during marking. |
| |
| 2009-09-28 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix: added new exports. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-09-28 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix: removed exports that no longer exist. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-09-28 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| NotNullPassRefPtr: smart pointer optimized for passing references that are not null |
| https://bugs.webkit.org/show_bug.cgi?id=29822 |
| |
| Added NotNullPassRefPtr, and deployed it in all places that initialize |
| JavaScript objects. |
| |
| 2.2% speedup on bench-allocate-nonretained.js. |
| |
| * API/JSCallbackConstructor.cpp: |
| (JSC::JSCallbackConstructor::JSCallbackConstructor): |
| * API/JSCallbackConstructor.h: |
| * API/JSCallbackObject.h: |
| * API/JSCallbackObjectFunctions.h: |
| (JSC::JSCallbackObject::JSCallbackObject): |
| * JavaScriptCore.exp: |
| * bytecode/CodeBlock.h: |
| (JSC::CodeBlock::addFunctionDecl): |
| (JSC::CodeBlock::addFunctionExpr): |
| * runtime/ArrayConstructor.cpp: |
| (JSC::ArrayConstructor::ArrayConstructor): |
| * runtime/ArrayConstructor.h: |
| * runtime/ArrayPrototype.cpp: |
| (JSC::ArrayPrototype::ArrayPrototype): |
| * runtime/ArrayPrototype.h: |
| * runtime/BooleanConstructor.cpp: |
| (JSC::BooleanConstructor::BooleanConstructor): |
| * runtime/BooleanConstructor.h: |
| * runtime/BooleanObject.cpp: |
| (JSC::BooleanObject::BooleanObject): |
| * runtime/BooleanObject.h: |
| * runtime/BooleanPrototype.cpp: |
| (JSC::BooleanPrototype::BooleanPrototype): |
| * runtime/BooleanPrototype.h: |
| * runtime/DateConstructor.cpp: |
| (JSC::DateConstructor::DateConstructor): |
| * runtime/DateConstructor.h: |
| * runtime/DateInstance.cpp: |
| (JSC::DateInstance::DateInstance): |
| * runtime/DateInstance.h: |
| * runtime/DatePrototype.cpp: |
| (JSC::DatePrototype::DatePrototype): |
| * runtime/DatePrototype.h: |
| * runtime/ErrorConstructor.cpp: |
| (JSC::ErrorConstructor::ErrorConstructor): |
| * runtime/ErrorConstructor.h: |
| * runtime/ErrorInstance.cpp: |
| (JSC::ErrorInstance::ErrorInstance): |
| * runtime/ErrorInstance.h: |
| * runtime/ErrorPrototype.cpp: |
| (JSC::ErrorPrototype::ErrorPrototype): |
| * runtime/ErrorPrototype.h: |
| * runtime/FunctionConstructor.cpp: |
| (JSC::FunctionConstructor::FunctionConstructor): |
| * runtime/FunctionConstructor.h: |
| * runtime/FunctionPrototype.cpp: |
| (JSC::FunctionPrototype::FunctionPrototype): |
| * runtime/FunctionPrototype.h: |
| * runtime/GlobalEvalFunction.cpp: |
| (JSC::GlobalEvalFunction::GlobalEvalFunction): |
| * runtime/GlobalEvalFunction.h: |
| * runtime/InternalFunction.cpp: |
| (JSC::InternalFunction::InternalFunction): |
| * runtime/InternalFunction.h: |
| (JSC::InternalFunction::InternalFunction): |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::JSActivation): |
| * runtime/JSActivation.h: |
| (JSC::JSActivation::JSActivationData::JSActivationData): |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::JSArray): |
| * runtime/JSArray.h: |
| * runtime/JSByteArray.cpp: |
| (JSC::JSByteArray::JSByteArray): |
| * runtime/JSByteArray.h: |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::JSFunction): |
| * runtime/JSFunction.h: |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::JSGlobalObject): |
| * runtime/JSONObject.h: |
| (JSC::JSONObject::JSONObject): |
| * runtime/JSObject.h: |
| (JSC::JSObject::JSObject): |
| (JSC::JSObject::setStructure): |
| * runtime/JSVariableObject.h: |
| (JSC::JSVariableObject::JSVariableObject): |
| * runtime/JSWrapperObject.h: |
| (JSC::JSWrapperObject::JSWrapperObject): |
| * runtime/MathObject.cpp: |
| (JSC::MathObject::MathObject): |
| * runtime/MathObject.h: |
| * runtime/NativeErrorConstructor.cpp: |
| (JSC::NativeErrorConstructor::NativeErrorConstructor): |
| * runtime/NativeErrorConstructor.h: |
| * runtime/NativeErrorPrototype.cpp: |
| (JSC::NativeErrorPrototype::NativeErrorPrototype): |
| * runtime/NativeErrorPrototype.h: |
| * runtime/NumberConstructor.cpp: |
| (JSC::NumberConstructor::NumberConstructor): |
| * runtime/NumberConstructor.h: |
| * runtime/NumberObject.cpp: |
| (JSC::NumberObject::NumberObject): |
| * runtime/NumberObject.h: |
| * runtime/NumberPrototype.cpp: |
| (JSC::NumberPrototype::NumberPrototype): |
| * runtime/NumberPrototype.h: |
| * runtime/ObjectConstructor.cpp: |
| (JSC::ObjectConstructor::ObjectConstructor): |
| * runtime/ObjectConstructor.h: |
| * runtime/ObjectPrototype.cpp: |
| (JSC::ObjectPrototype::ObjectPrototype): |
| * runtime/ObjectPrototype.h: |
| * runtime/PropertyNameArray.h: |
| (JSC::PropertyNameArrayData::setCachedPrototypeChain): |
| * runtime/PrototypeFunction.cpp: |
| (JSC::PrototypeFunction::PrototypeFunction): |
| * runtime/PrototypeFunction.h: |
| * runtime/RegExpConstructor.cpp: |
| (JSC::RegExpConstructor::RegExpConstructor): |
| * runtime/RegExpConstructor.h: |
| * runtime/RegExpObject.cpp: |
| (JSC::RegExpObject::RegExpObject): |
| * runtime/RegExpObject.h: |
| (JSC::RegExpObject::RegExpObjectData::RegExpObjectData): |
| * runtime/RegExpPrototype.cpp: |
| (JSC::RegExpPrototype::RegExpPrototype): |
| * runtime/RegExpPrototype.h: |
| * runtime/StringConstructor.cpp: |
| (JSC::StringConstructor::StringConstructor): |
| * runtime/StringConstructor.h: |
| * runtime/StringObject.cpp: |
| (JSC::StringObject::StringObject): |
| * runtime/StringObject.h: |
| * runtime/StringObjectThatMasqueradesAsUndefined.h: |
| (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined): |
| * runtime/StringPrototype.cpp: |
| (JSC::StringPrototype::StringPrototype): |
| * runtime/StringPrototype.h: |
| * wtf/PassRefPtr.h: |
| (WTF::NotNullPassRefPtr::NotNullPassRefPtr): |
| (WTF::NotNullPassRefPtr::~NotNullPassRefPtr): |
| (WTF::NotNullPassRefPtr::get): |
| (WTF::NotNullPassRefPtr::clear): |
| (WTF::NotNullPassRefPtr::releaseRef): |
| (WTF::NotNullPassRefPtr::operator*): |
| (WTF::NotNullPassRefPtr::operator->): |
| (WTF::NotNullPassRefPtr::operator!): |
| (WTF::NotNullPassRefPtr::operator UnspecifiedBoolType): |
| * wtf/RefPtr.h: |
| (WTF::RefPtr::RefPtr): |
| (WTF::operator==): |
| |
| 2009-09-28 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Hard dependency on SSE2 instruction set with JIT |
| https://bugs.webkit.org/show_bug.cgi?id=29779 |
| |
| Add floating point support checks to op_jfalse and op_jtrue, and |
| fix the logic for the slow case of op_add |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitSlow_op_add): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_jfalse): |
| (JSC::JIT::emit_op_jtrue): |
| |
| 2009-09-28 Yaar Schnitman <yaar@chromium.org> |
| |
| Reviewed by Dimitri Glazkov. |
| |
| Chromium port - recognize we are being built independently |
| of chromium and look for dependencies under webkit/chromium rather |
| than chromium/src. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=29722 |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| |
| 2009-09-28 Jakub Wieczorek <faw217@gmail.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| [Qt] Implement XSLT support with QtXmlPatterns. |
| https://bugs.webkit.org/show_bug.cgi?id=28303 |
| |
| * wtf/Platform.h: Add a WTF_USE_QXMLQUERY #define. |
| |
| 2009-09-28 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Simon Hausmann. |
| |
| Remove __clear_cache which is an internal function of GCC |
| https://bugs.webkit.org/show_bug.cgi?id=28886 |
| |
| Although __clear_cache is exported from GCC, this is an internal |
| function. GCC makes no promises about it. |
| |
| * jit/ExecutableAllocator.h: |
| (JSC::ExecutableAllocator::cacheFlush): |
| |
| 2009-09-28 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Oliver Hunt. |
| |
| Fix an absolute path to somewhere in Oliver's machine to a relative path |
| for derived JSONObject.lut.h. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2009-09-28 Joerg Bornemann <joerg.bornemann@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Add ARM version detection for Windows CE. |
| |
| * wtf/Platform.h: |
| |
| 2009-09-26 Yongjun Zhang <yongjun.zhang@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Add MarkStackSymbian.cpp to build JavascriptCore for Symbian. |
| |
| Re-use Windows shrinkAllocation implementation because Symbian doesn't |
| support releasing part of memory region. |
| |
| Use fastMalloc and fastFree to implement allocateStack and releaseStack |
| for Symbian port. |
| |
| * JavaScriptCore.pri: |
| * runtime/MarkStack.h: |
| (JSC::MarkStack::MarkStackArray::shrinkAllocation): |
| * runtime/MarkStackSymbian.cpp: Added. |
| (JSC::MarkStack::initializePagesize): |
| (JSC::MarkStack::allocateStack): |
| (JSC::MarkStack::releaseStack): |
| |
| 2009-09-25 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Fix unaligned data access in YARR_JIT on ARMv5 and below. |
| https://bugs.webkit.org/show_bug.cgi?id=29695 |
| |
| On ARMv5 and below all data access should be naturally aligned. |
| In the YARR_JIT there is a case when character pairs are |
| loaded from the input string, but this data access is not |
| naturally aligned. This fix introduces load32WithUnalignedHalfWords |
| and branch32WithUnalignedHalfWords functions which contain |
| naturally aligned memory loads - half word loads - on ARMv5 and below. |
| |
| * assembler/MacroAssemblerARM.cpp: |
| (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords): |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords): |
| (JSC::MacroAssemblerARM::branch32WithUnalignedHalfWords): |
| * assembler/MacroAssemblerARMv7.h: |
| (JSC::MacroAssemblerARMv7::load32WithUnalignedHalfWords): |
| (JSC::MacroAssemblerARMv7::branch32): |
| (JSC::MacroAssemblerARMv7::branch32WithUnalignedHalfWords): |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::load32WithUnalignedHalfWords): |
| (JSC::MacroAssemblerX86Common::branch32WithUnalignedHalfWords): |
| * wtf/Platform.h: |
| * yarr/RegexJIT.cpp: |
| (JSC::Yarr::RegexGenerator::generatePatternCharacterPair): |
| |
| 2009-09-25 Jeremy Orlow <jorlow@chromium.org> |
| |
| This is breaking Chromium try bots, so I'm counting this as a build fix. |
| |
| Add more svn:ignore exceptions. On different platforms, these files are |
| generated with different case for JavaScriptCore. Also there are some |
| wtf project files that get built apparently. |
| |
| * JavaScriptCore.gyp: Changed property svn:ignore. |
| |
| 2009-09-25 Ada Chan <adachan@apple.com> |
| |
| Build fix. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-09-25 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Inlined some object creation code, including lexicalGlobalObject access |
| https://bugs.webkit.org/show_bug.cgi?id=29750 |
| |
| SunSpider says 0.5% faster. |
| |
| 0.8% speedup on bench-alloc-nonretained.js. |
| 2.5% speedup on v8-splay.js. |
| |
| * interpreter/CachedCall.h: |
| (JSC::CachedCall::CachedCall): |
| * interpreter/CallFrame.h: |
| (JSC::ExecState::lexicalGlobalObject): |
| (JSC::ExecState::globalThisValue): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::dumpRegisters): |
| (JSC::Interpreter::execute): |
| (JSC::Interpreter::privateExecute): |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/FunctionConstructor.cpp: |
| (JSC::constructFunction): |
| * runtime/ScopeChain.cpp: |
| (JSC::ScopeChainNode::print): |
| * runtime/ScopeChain.h: |
| (JSC::ScopeChainNode::ScopeChainNode): |
| (JSC::ScopeChainNode::~ScopeChainNode): |
| (JSC::ScopeChainNode::push): |
| (JSC::ScopeChain::ScopeChain): |
| (JSC::ScopeChain::globalObject): Added a globalObject data member to ScopeChainNode. |
| Replaced accessor function for globalObject() with data member. Replaced |
| globalThisObject() accessor with direct access to globalThis, to match. |
| |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::init): |
| * runtime/JSGlobalObject.h: Inlined array and object construction. |
| |
| 2009-09-25 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Add ARM version detection rules for Symbian |
| https://bugs.webkit.org/show_bug.cgi?id=29715 |
| |
| * wtf/Platform.h: |
| |
| 2009-09-24 Xan Lopez <xlopez@igalia.com> |
| |
| Reviewed by Mark "Do It!" Rowe. |
| |
| Some GCC versions don't like C++-style comments in preprocessor |
| directives, change to C-style to shut them up. |
| |
| * wtf/Platform.h: |
| |
| 2009-09-24 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Division is needlessly slow in 64-bit |
| https://bugs.webkit.org/show_bug.cgi?id=29723 |
| |
| Add codegen for op_div on x86-64 |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileMainPass): |
| (JSC::JIT::privateCompileSlowCases): |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::compileBinaryArithOpSlowCase): |
| (JSC::JIT::emit_op_div): |
| (JSC::JIT::emitSlow_op_div): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::isOperandConstantImmediateDouble): |
| (JSC::JIT::addressFor): |
| (JSC::JIT::emitLoadDouble): |
| (JSC::JIT::emitLoadInt32ToDouble): |
| (JSC::JIT::emitJumpSlowCaseIfNotImmediateNumber): |
| |
| 2009-09-24 Jeremy Orlow <jorlow@chromium.org> |
| |
| Reviewed by Dimitri Glazkov. |
| |
| Add GYP generated files to svn:ignore |
| https://bugs.webkit.org/show_bug.cgi?id=29724 |
| |
| Adding the following files to the svn:ignore list (all in the |
| JavaScriptCore/JavaScriptCore.gyp directory) |
| |
| JavaScriptCore.xcodeproj |
| JavaScriptCore.sln |
| JavaScriptCore.vcproj |
| JavaScriptCore_Debug.rules |
| JavaScriptCore_Release.rules |
| JavaScriptCore_Release - no tcmalloc.rules |
| JavaScriptCore_Purify.rules |
| JavaScriptCore.mk |
| JavaScriptCore_Debug_rules.mk |
| JavaScriptCore_Release_rules.mk |
| JavaScriptCore_Release - no tcmalloc_rules.mk |
| JavaScriptCore_Purify_rules.mk |
| JavaScriptCore.scons |
| JavaScriptCore_main.scons |
| |
| * JavaScriptCore.gyp: Changed property svn:ignore. |
| |
| 2009-09-24 Yong Li <yong.li@torchmobile.com> |
| |
| Reviewed by Adam Barth. |
| |
| Replace platform-dependent code with WTF::currentTime() |
| https://bugs.webkit.org/show_bug.cgi?id=29148 |
| |
| * jsc.cpp: |
| (StopWatch::start): |
| (StopWatch::stop): |
| (StopWatch::getElapsedMS): |
| * runtime/TimeoutChecker.cpp: |
| (JSC::getCPUTime): |
| |
| 2009-09-24 Mark Rowe <mrowe@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| <rdar://problem/7215058> FastMalloc scavenging thread should be named |
| |
| * wtf/FastMalloc.cpp: |
| (WTF::TCMalloc_PageHeap::scavengerThread): Set the thread name. |
| * wtf/Platform.h: Move the knowledge of whether pthread_setname_np exists to here as HAVE(PTHREAD_SETNAME_NP). |
| * wtf/ThreadingPthreads.cpp: |
| (WTF::setThreadNameInternal): Use HAVE(PTHREAD_SETNAME_NP). |
| |
| 2009-09-24 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Renamed clear to removeAll, as suggested by Darin Adler. |
| |
| * wtf/HashCountedSet.h: |
| (WTF::::removeAll): |
| |
| 2009-09-24 Mark Rowe <mrowe@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Fix FastMalloc to build with assertions enabled. |
| |
| * wtf/FastMalloc.cpp: |
| (WTF::TCMalloc_Central_FreeList::ReleaseToSpans): |
| * wtf/TCSpinLock.h: |
| (TCMalloc_SpinLock::IsHeld): |
| |
| 2009-09-24 Geoffrey Garen <ggaren@apple.com> |
| |
| Suggested by Darin Adler. |
| |
| Removed some unnecessary parameter names. |
| |
| * wtf/HashCountedSet.h: |
| |
| 2009-09-24 Janne Koskinen <janne.p.koskinen@digia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| On Windows JSChar is typedef'ed to wchar_t. |
| |
| When building with WINSCW for Symbian we need to do the |
| same typedef. |
| |
| * API/JSStringRef.h: |
| |
| 2009-09-23 Geoffrey Garen <ggaren@apple.com> |
| |
| A piece of my last patch that I forgot. |
| |
| * wtf/HashCountedSet.h: |
| (WTF::::clear): Added HashCountedSet::clear. |
| |
| 2009-09-24 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Avoid __clear_cache built-in function if DISABLE_BUILTIN_CLEAR_CACHE define is set |
| https://bugs.webkit.org/show_bug.cgi?id=28886 |
| |
| There are some GCC packages (for example GCC-2006q3 from CodeSourcery) |
| which contain __clear_cache built-in function only for C while the C++ |
| version of __clear_cache is missing on ARM architectures. |
| |
| Fixed a small bug in the inline assembly of cacheFlush function on |
| ARM_TRADITIONAL. |
| |
| * jit/ExecutableAllocator.h: |
| (JSC::ExecutableAllocator::cacheFlush): |
| |
| 2009-09-23 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Added the ability to swap vectors with inline capacities, so you can |
| store a vector with inline capacity in a hash table. |
| |
| * wtf/Vector.h: |
| (WTF::swap): |
| (WTF::VectorBuffer::swap): |
| |
| 2009-09-23 David Kilzer <ddkilzer@apple.com> |
| |
| Move definition of USE(PLUGIN_HOST_PROCESS) from WebKitPrefix.h to Platform.h |
| |
| Reviewed by Mark Rowe. |
| |
| * wtf/Platform.h: Define WTF_USE_PLUGIN_HOST_PROCESS to 1 when |
| building on 64-bit SnowLeopard. Define to 0 elsewhere. |
| |
| 2009-09-22 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Code sampling builds are broken. |
| https://bugs.webkit.org/show_bug.cgi?id=29662 |
| |
| Fix build. |
| |
| * bytecode/EvalCodeCache.h: |
| (JSC::EvalCodeCache::get): |
| * bytecode/SamplingTool.cpp: |
| (JSC::ScriptSampleRecord::sample): |
| (JSC::SamplingTool::doRun): |
| (JSC::SamplingTool::notifyOfScope): |
| (JSC::compareScriptSampleRecords): |
| (JSC::SamplingTool::dump): |
| * bytecode/SamplingTool.h: |
| (JSC::ScriptSampleRecord::ScriptSampleRecord): |
| (JSC::ScriptSampleRecord::~ScriptSampleRecord): |
| (JSC::SamplingTool::SamplingTool): |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::BytecodeGenerator): |
| (JSC::BytecodeGenerator::emitNewFunction): |
| (JSC::BytecodeGenerator::emitNewFunctionExpression): |
| * bytecompiler/BytecodeGenerator.h: |
| (JSC::BytecodeGenerator::makeFunction): |
| * debugger/Debugger.cpp: |
| (JSC::evaluateInGlobalCallFrame): |
| * debugger/DebuggerCallFrame.cpp: |
| (JSC::DebuggerCallFrame::evaluate): |
| * parser/Nodes.cpp: |
| (JSC::ScopeNode::ScopeNode): |
| * runtime/Completion.cpp: |
| (JSC::checkSyntax): |
| (JSC::evaluate): |
| * runtime/Executable.cpp: |
| (JSC::FunctionExecutable::fromGlobalCode): |
| * runtime/Executable.h: |
| (JSC::ScriptExecutable::ScriptExecutable): |
| (JSC::EvalExecutable::EvalExecutable): |
| (JSC::EvalExecutable::create): |
| (JSC::ProgramExecutable::ProgramExecutable): |
| (JSC::FunctionExecutable::create): |
| (JSC::FunctionExecutable::FunctionExecutable): |
| * runtime/JSGlobalObjectFunctions.cpp: |
| (JSC::globalFuncEval): |
| |
| 2009-09-22 Darin Adler <darin@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| * wtf/Forward.h: Added PassOwnPtr. |
| |
| 2009-09-22 Yaar Schnitman <yaar@chromium.org> |
| |
| Reviewed by David Levin. |
| |
| Ported chromium.org's javascriptcore.gyp for the webkit chromium port. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=29617 |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: Added. |
| |
| 2009-09-22 Thiago Macieira <thiago.macieira@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Fix compilation with WINSCW: no varargs macros |
| |
| Disable variadic arguments for WINSCW just like we do |
| for MSVC7. |
| |
| * wtf/Assertions.h: |
| |
| 2009-09-22 Kent Hansen <khansen@trolltech.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Disable variadic macros on MSVC7. |
| |
| This was originally added in r26589 but not extended |
| when LOG_DISABLED/ASSERT_DISABLED was introduced. |
| |
| * wtf/Assertions.h: |
| |
| 2009-09-22 Simon Hausmann <simon.hausmann@nokia.com> |
| |
| Unreviewed build fix for Windows CE < 5 |
| |
| Define WINCEBASIC to disable the IsDebuggerPresent() code in |
| wtf/Assertions.cpp. |
| |
| * JavaScriptCore.pri: |
| |
| 2009-09-22 Joerg Bornemann <joerg.bornemann@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Fix major memory leak in JavaScriptCore RegisterFile on Windows CE |
| |
| https://bugs.webkit.org/show_bug.cgi?id=29367 |
| |
| On Widows CE we must decommit all committed pages before we release |
| them. See VirtualFree documentation. |
| Desktop Windows behaves much smoother in this situation. |
| |
| * interpreter/RegisterFile.cpp: |
| (JSC::RegisterFile::~RegisterFile): |
| |
| 2009-09-21 Greg Bolsinga <bolsinga@apple.com> |
| |
| Reviewed by Simon Fraser & Sam Weinig. |
| |
| Add ENABLE(ORIENTATION_EVENTS) |
| https://bugs.webkit.org/show_bug.cgi?id=29508 |
| |
| * wtf/Platform.h: Also sort PLATFORM(IPHONE) #defines. |
| |
| 2009-09-21 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> |
| |
| Reviewed by Eric Seidel. |
| |
| [Fix] SourceCode's uninitialized member |
| |
| Potential source of crashes and bugs was fixed. Default constructor |
| didn't initialized m_provider member. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=29364 |
| |
| * parser/SourceCode.h: |
| (JSC::SourceCode::SourceCode): |
| |
| 2009-09-21 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| REGRESSION (r48582): Crash in StructureStubInfo::initPutByIdTransition when reloading trac.webkit.org |
| https://bugs.webkit.org/show_bug.cgi?id=29599 |
| |
| It is unsafe to attempt to cache new property transitions on |
| dictionaries of any type. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::tryCachePutByID): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::tryCachePutByID): |
| |
| 2009-09-21 Oliver Hunt <oliver@apple.com> |
| |
| RS=Maciej Stachowiak. |
| |
| Re-land SNES fix with corrected assertion. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::resolveGlobal): |
| (JSC::Interpreter::tryCachePutByID): |
| (JSC::Interpreter::tryCacheGetByID): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::tryCachePutByID): |
| (JSC::JITThunks::tryCacheGetByID): |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/BatchedTransitionOptimizer.h: |
| (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::removeDirect): |
| * runtime/Structure.cpp: |
| (JSC::Structure::Structure): |
| (JSC::Structure::getEnumerablePropertyNames): |
| (JSC::Structure::despecifyDictionaryFunction): |
| (JSC::Structure::addPropertyTransitionToExistingStructure): |
| (JSC::Structure::addPropertyTransition): |
| (JSC::Structure::removePropertyTransition): |
| (JSC::Structure::toDictionaryTransition): |
| (JSC::Structure::toCacheableDictionaryTransition): |
| (JSC::Structure::toUncacheableDictionaryTransition): |
| (JSC::Structure::fromDictionaryTransition): |
| (JSC::Structure::removePropertyWithoutTransition): |
| * runtime/Structure.h: |
| (JSC::Structure::isDictionary): |
| (JSC::Structure::isUncacheableDictionary): |
| (JSC::Structure::): |
| * runtime/StructureChain.cpp: |
| (JSC::StructureChain::isCacheable): |
| |
| 2009-09-21 Adam Roben <aroben@apple.com> |
| |
| Revert r48573, as it caused many assertion failures |
| |
| * interpreter/Interpreter.cpp: |
| * jit/JITStubs.cpp: |
| * runtime/BatchedTransitionOptimizer.h: |
| * runtime/JSObject.cpp: |
| * runtime/Structure.cpp: |
| * runtime/Structure.h: |
| * runtime/StructureChain.cpp: |
| |
| 2009-09-21 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> |
| |
| Unreviewed make dist build fix. Missing files. |
| |
| * GNUmakefile.am: |
| |
| 2009-09-19 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam 'Cabin Boy' Weinig. |
| |
| Fix stack alignment with ARM THUMB2 JIT. |
| https://bugs.webkit.org/show_bug.cgi?id=29526 |
| |
| Stack is currently being decremented by 0x3c, bump this to 0x40 to make this a |
| multiple of 16 bytes. |
| |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::JITThunks): |
| * jit/JITStubs.h: |
| |
| 2009-09-20 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| SNES is too slow |
| https://bugs.webkit.org/show_bug.cgi?id=29534 |
| |
| The problem was that the emulator used multiple classes with |
| more properties than our dictionary cutoff allowed, this resulted |
| in more or less all critical logic inside the emulator requiring |
| uncached property access. |
| |
| Rather than simply bumping the dictionary cutoff, this patch |
| recognises that there are two ways to create a "dictionary" |
| structure. Either by adding a large number of properties, or |
| by removing a property. In the case of adding properties we |
| know all the existing properties will maintain their existing |
| offsets, so we could cache access to those properties, if we |
| know they won't be removed. |
| |
| To make this possible, this patch adds the logic required to |
| distinguish a dictionary created by addition from one created |
| by removal. With this logic in place we can now cache access |
| to objects with large numbers of properties. |
| |
| SNES performance improved by more than 6x. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::resolveGlobal): |
| (JSC::Interpreter::tryCachePutByID): |
| (JSC::Interpreter::tryCacheGetByID): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::tryCachePutByID): |
| (JSC::JITThunks::tryCacheGetByID): |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/BatchedTransitionOptimizer.h: |
| (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::removeDirect): |
| * runtime/Structure.cpp: |
| (JSC::Structure::Structure): |
| (JSC::Structure::getEnumerablePropertyNames): |
| (JSC::Structure::despecifyDictionaryFunction): |
| (JSC::Structure::addPropertyTransitionToExistingStructure): |
| (JSC::Structure::addPropertyTransition): |
| (JSC::Structure::removePropertyTransition): |
| (JSC::Structure::toDictionaryTransition): |
| (JSC::Structure::toCacheableDictionaryTransition): |
| (JSC::Structure::toUncacheableDictionaryTransition): |
| (JSC::Structure::fromDictionaryTransition): |
| (JSC::Structure::removePropertyWithoutTransition): |
| * runtime/Structure.h: |
| (JSC::Structure::isDictionary): |
| (JSC::Structure::isUncacheableDictionary): |
| (JSC::Structure::): |
| * runtime/StructureChain.cpp: |
| (JSC::StructureChain::isCacheable): |
| |
| 2009-09-19 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Implement ES5 Object.create function |
| https://bugs.webkit.org/show_bug.cgi?id=29524 |
| |
| Implement Object.create. Very simple patch, effectively Object.defineProperties |
| only creating the target object itself. |
| |
| * runtime/CommonIdentifiers.h: |
| * runtime/ObjectConstructor.cpp: |
| (JSC::ObjectConstructor::ObjectConstructor): |
| (JSC::objectConstructorCreate): |
| |
| 2009-09-19 Dan Bernstein <mitz@apple.com> |
| |
| Fix clean debug builds. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-09-19 Joerg Bornemann <joerg.bornemann@nokia.com> |
| |
| Reviewed by George Staikos. |
| |
| QtWebKit Windows CE compile fix |
| |
| https://bugs.webkit.org/show_bug.cgi?id=29379 |
| |
| There is no _aligned_alloc or _aligned_free on Windows CE. |
| We just use the Windows code that was there before and use VirtualAlloc. |
| But that also means that the BLOCK_SIZE must be 64K as this function |
| allocates on 64K boundaries. |
| |
| * runtime/Collector.cpp: |
| (JSC::Heap::allocateBlock): |
| (JSC::Heap::freeBlock): |
| * runtime/Collector.h: |
| |
| 2009-09-19 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Implement ES5 Object.defineProperties function |
| https://bugs.webkit.org/show_bug.cgi?id=29522 |
| |
| Implement Object.defineProperties. Fairly simple patch, simply makes use of |
| existing functionality used for defineProperty. |
| |
| * runtime/CommonIdentifiers.h: |
| * runtime/ObjectConstructor.cpp: |
| (JSC::ObjectConstructor::ObjectConstructor): |
| (JSC::defineProperties): |
| (JSC::objectConstructorDefineProperties): |
| |
| 2009-09-19 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by NOBODY (Build fix). |
| |
| Windows build fix part2 |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-09-19 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by NOBODY (Buildfix). |
| |
| Windows build fix part 1. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-09-18 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Implement ES5 Object.defineProperty function |
| https://bugs.webkit.org/show_bug.cgi?id=29503 |
| |
| Implement Object.defineProperty. This requires adding the API to |
| ObjectConstructor, along with a helper function that implements the |
| ES5 internal [[ToPropertyDescriptor]] function. It then adds |
| JSObject::defineOwnProperty that implements the appropriate ES5 semantics. |
| Currently defineOwnProperty uses a delete followed by a put to redefine |
| attributes of a property, clearly this is less efficient than it could be |
| but we can improve this if it needs to be possible in future. |
| |
| * JavaScriptCore.exp: |
| * debugger/DebuggerActivation.cpp: |
| (JSC::DebuggerActivation::defineGetter): |
| (JSC::DebuggerActivation::defineSetter): |
| * debugger/DebuggerActivation.h: |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| * jit/JITStubs.cpp: |
| Update defineGetter/Setter calls |
| * runtime/CommonIdentifiers.h: |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::getOwnPropertySlot): |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::defineGetter): |
| (JSC::JSGlobalObject::defineSetter): |
| * runtime/JSGlobalObject.h: |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::defineGetter): |
| (JSC::JSObject::defineSetter): |
| (JSC::putDescriptor): |
| (JSC::JSObject::defineOwnProperty): |
| * runtime/JSObject.h: |
| * runtime/ObjectConstructor.cpp: |
| (JSC::ObjectConstructor::ObjectConstructor): |
| (JSC::objectConstructorGetOwnPropertyDescriptor): |
| (JSC::toPropertyDescriptor): |
| (JSC::objectConstructorDefineProperty): |
| * runtime/ObjectPrototype.cpp: |
| (JSC::objectProtoFuncDefineGetter): |
| (JSC::objectProtoFuncDefineSetter): |
| * runtime/PropertyDescriptor.cpp: |
| (JSC::PropertyDescriptor::writable): |
| (JSC::PropertyDescriptor::enumerable): |
| (JSC::PropertyDescriptor::configurable): |
| (JSC::PropertyDescriptor::isDataDescriptor): |
| (JSC::PropertyDescriptor::isGenericDescriptor): |
| (JSC::PropertyDescriptor::isAccessorDescriptor): |
| (JSC::PropertyDescriptor::getter): |
| (JSC::PropertyDescriptor::setter): |
| (JSC::PropertyDescriptor::setDescriptor): |
| (JSC::PropertyDescriptor::setAccessorDescriptor): |
| (JSC::PropertyDescriptor::setWritable): |
| (JSC::PropertyDescriptor::setEnumerable): |
| (JSC::PropertyDescriptor::setConfigurable): |
| (JSC::PropertyDescriptor::setSetter): |
| (JSC::PropertyDescriptor::setGetter): |
| (JSC::PropertyDescriptor::equalTo): |
| (JSC::PropertyDescriptor::attributesEqual): |
| (JSC::PropertyDescriptor::attributesWithOverride): |
| * runtime/PropertyDescriptor.h: |
| (JSC::PropertyDescriptor::PropertyDescriptor): |
| (JSC::PropertyDescriptor::value): |
| (JSC::PropertyDescriptor::setValue): |
| (JSC::PropertyDescriptor::isEmpty): |
| (JSC::PropertyDescriptor::writablePresent): |
| (JSC::PropertyDescriptor::enumerablePresent): |
| (JSC::PropertyDescriptor::configurablePresent): |
| (JSC::PropertyDescriptor::setterPresent): |
| (JSC::PropertyDescriptor::getterPresent): |
| (JSC::PropertyDescriptor::operator==): |
| (JSC::PropertyDescriptor::): |
| |
| 2009-09-18 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Build fix to enable ARM_THUMB2 on Linux |
| https://bugs.webkit.org/show_bug.cgi?id= |
| |
| * jit/ExecutableAllocator.h: |
| (JSC::ExecutableAllocator::cacheFlush): |
| * jit/JITStubs.cpp: |
| * wtf/Platform.h: |
| |
| 2009-09-18 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Defines two pseudo-platforms for ARM and Thumb-2 instruction set. |
| https://bugs.webkit.org/show_bug.cgi?id=29122 |
| |
| Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2 |
| macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used |
| when Thumb-2 instruction set is the required target. The |
| PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In |
| case where the code is common the PLATFORM(ARM) have to be used. |
| |
| * assembler/ARMAssembler.cpp: |
| * assembler/ARMAssembler.h: |
| * assembler/ARMv7Assembler.h: |
| * assembler/MacroAssembler.h: |
| * assembler/MacroAssemblerARM.cpp: |
| * assembler/MacroAssemblerARM.h: |
| * assembler/MacroAssemblerCodeRef.h: |
| (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr): |
| * jit/ExecutableAllocator.h: |
| * jit/JIT.h: |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::beginUninterruptedSequence): |
| (JSC::JIT::preserveReturnAddressAfterCall): |
| (JSC::JIT::restoreReturnAddressBeforeReturn): |
| (JSC::JIT::restoreArgumentReference): |
| (JSC::JIT::restoreArgumentReferenceForTrampoline): |
| * jit/JITOpcodes.cpp: |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::JITThunks): |
| * jit/JITStubs.h: |
| * wtf/Platform.h: |
| * yarr/RegexJIT.cpp: |
| (JSC::Yarr::RegexGenerator::generateEnter): |
| |
| 2009-09-18 Joerg Bornemann <joerg.bornemann@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Fix the Qt/Windows CE build. |
| |
| * JavaScriptCore.pri: Build the ce_time.cpp functions from |
| within Qt externally. |
| * wtf/DateMath.cpp: Removed unnecessary Qt #ifdef, for the |
| Qt build these functions are no external, too. |
| |
| 2009-09-17 Janne Koskinen <janne.p.koskinen@digia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Symbian/WINSCW build fox. |
| |
| Repeat Q_OS_WIN wchar_t hack for WINSCW, similar to |
| revision 24774. |
| |
| WINSCW defines wchar_t, thus UChar has to be wchar_t |
| |
| * wtf/unicode/qt4/UnicodeQt4.h: |
| |
| 2009-09-17 Janne Koskinen <janne.p.koskinen@digia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Symbian/WINSCW build fix. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=29186 |
| |
| WINSCW Template specialisation name in declaration must the be the same as in implementation. |
| |
| * runtime/LiteralParser.h: |
| |
| 2009-09-15 Norbert Leser <norbert.leser@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27060 |
| |
| Symbian compiler for emulator target (WINSCW) fails with |
| "illegal operand" for m_attributesInPrevious in structure.ccp |
| (when calling make_pair functions). |
| This error is apparently due to the compiler not properly |
| resolving the unsigned type of the declared bitfield. |
| |
| Initial patch explicitly casted m_attributesInPrevious |
| to unsigned, but since bitfield optimization is not critical for |
| the emulator target, this conditional change in header file |
| appears to be least intrusive. |
| |
| * runtime/Structure.h: |
| |
| 2009-09-16 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| Fix GCC warnings on ARM_THUMB2 platform |
| |
| * assembler/ARMv7Assembler.h: |
| (JSC::ARMThumbImmediate::countLeadingZerosPartial): |
| * assembler/MacroAssemblerARMv7.h: |
| (JSC::MacroAssemblerARMv7::branchTruncateDoubleToInt32): |
| (JSC::MacroAssemblerARMv7::moveFixedWidthEncoding): |
| |
| 2009-09-16 Greg Bolsinga <bolsinga@apple.com> |
| |
| Add ENABLE(INSPECTOR) |
| https://bugs.webkit.org/show_bug.cgi?id=29260 |
| |
| Reviewed by David Kilzer. |
| |
| * wtf/Platform.h: |
| |
| 2009-09-16 Greg Bolsinga <bolsinga@apple.com> |
| |
| Add ENABLE(CONTEXT_MENUS) |
| https://bugs.webkit.org/show_bug.cgi?id=29225 |
| |
| Reviewed by David Kilzer. |
| |
| * wtf/Platform.h: |
| |
| 2009-09-16 Benjamin C Meyer <benjamin.meyer@torchmobile.com> |
| |
| Reviewed by Eric Seidel. |
| |
| The webkit stdint and stdbool headers exists because |
| the compiler MSVC doesn't include them. The check |
| should not check for PLATFORM(WIN_OS) but for MSVC. |
| |
| * os-win32/stdbool.h: |
| * os-win32/stdint.h: |
| |
| 2009-09-16 Greg Bolsinga <bolsinga@apple.com> |
| |
| Add ENABLE(DRAG_SUPPORT) |
| https://bugs.webkit.org/show_bug.cgi?id=29233 |
| |
| Reviewed by David Kilzer. |
| |
| * wtf/Platform.h: |
| |
| 2009-09-16 Kevin Ollivier <kevino@theolliviers.com> |
| |
| waf build fix after flag was moved to correct place. |
| |
| * wscript: |
| |
| 2009-09-16 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| [Qt] Build fix for 64-bit Qt on Mac OS X |
| |
| * wtf/Platform.h: Use JSVALUE64 on DARWIN, not only on MAC |
| |
| 2009-09-16 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> |
| |
| Reviewed by Simon Hausmann. |
| |
| [Qt] Fix wtf/ThreadSpecific.h under Qt to free thread local objects. |
| https://bugs.webkit.org/show_bug.cgi?id=29295 |
| |
| This is an important fix when JavaScript workers are in use, since |
| unfreed ThreadGlobalDatas leak a big amount of memory (50-100k each). |
| QThreadStorage calls the destructor of a given object, which is the |
| ThreadSpecific::Data. Unlike pthread, Qt is object oriented, and does |
| not support the calling of a static utility function when the thread |
| is about to close. In this patch we call the ThreadSpecific::destroy() |
| utility function from the destructor of ThreadSpecific::Data. Moreover, |
| since Qt resets all thread local values to 0 before the calling of the |
| appropriate destructors, we set back the pointer to its original value. |
| This is necessary because the get() method of the ThreadSpecific |
| object may be called during the exuction of the destructor. |
| |
| * wtf/ThreadSpecific.h: |
| (WTF::ThreadSpecific::Data::~Data): |
| (WTF::::~ThreadSpecific): |
| (WTF::::set): |
| (WTF::::destroy): |
| |
| 2009-09-10 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Allow anonymous storage inside JSObject |
| https://bugs.webkit.org/show_bug.cgi?id=29168 |
| |
| Add the concept of anonymous slots to Structures so that it is |
| possible to store references to values that need marking in the |
| standard JSObject storage buffer. This allows us to reduce the |
| malloc overhead of some objects (by allowing them to store JS |
| values in the inline storage of the object) and reduce the |
| dependence of custom mark functions (if all an objects children |
| are in the standard object property storage there's no need to |
| mark them manually). |
| |
| * JavaScriptCore.exp: |
| * runtime/JSObject.h: |
| (JSC::JSObject::putAnonymousValue): |
| (JSC::JSObject::getAnonymousValue): |
| (JSC::JSObject::addAnonymousSlots): |
| * runtime/JSWrapperObject.h: |
| (JSC::JSWrapperObject::createStructure): |
| (JSC::JSWrapperObject::JSWrapperObject): |
| (JSC::JSWrapperObject::setInternalValue): |
| * runtime/PropertyMapHashTable.h: |
| * runtime/Structure.cpp: |
| (JSC::Structure::~Structure): |
| (JSC::Structure::materializePropertyMap): |
| (JSC::Structure::addAnonymousSlotsTransition): |
| (JSC::Structure::copyPropertyTable): |
| (JSC::Structure::put): |
| (JSC::Structure::rehashPropertyMapHashTable): |
| * runtime/Structure.h: |
| (JSC::Structure::propertyStorageSize): |
| (JSC::StructureTransitionTable::reifySingleTransition): |
| * runtime/StructureTransitionTable.h: |
| (JSC::StructureTransitionTable::TransitionTable::addSlotTransition): |
| (JSC::StructureTransitionTable::TransitionTable::removeSlotTransition): |
| (JSC::StructureTransitionTable::TransitionTable::getSlotTransition): |
| (JSC::StructureTransitionTable::getAnonymousSlotTransition): |
| (JSC::StructureTransitionTable::addAnonymousSlotTransition): |
| (JSC::StructureTransitionTable::removeAnonymousSlotTransition): |
| |
| 2009-09-15 Alex Milowski <alex@milowski.com> |
| |
| Reviewed by Tor Arne Vestbø. |
| |
| Added the ENABLE_MATHML define to the features |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2009-09-15 Csaba Osztrogonac <oszi@inf.u-szeged.hu> |
| |
| Reviewed by Tor Arne Vestbø. |
| |
| [Qt] Build fix for windows. |
| |
| After http://trac.webkit.org/changeset/47795 the MinGW build broke, |
| because MinGW has __mingw_aligned_malloc instead of _aligned_malloc. |
| |
| * runtime/Collector.cpp: |
| (JSC::Heap::allocateBlock): MinGW case added. |
| (JSC::Heap::freeBlock): MinGW case added. |
| |
| 2009-09-15 Csaba Osztrogonac <oszi@inf.u-szeged.hu> |
| |
| Reviewed by Tor Arne Vestbø. |
| |
| [Qt] Build fix for Windows/MinGW |
| |
| https://bugs.webkit.org/show_bug.cgi?id=29268 |
| |
| * wtf/Platform.h: JSVALUE32_64 temporarily disabled on PLATFORM(WIN_OS) with COMPILER(MINGW) |
| |
| 2009-09-14 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Detect VFP at runtime in generic ARM port on Linux platform. |
| https://bugs.webkit.org/show_bug.cgi?id=29076 |
| |
| * JavaScriptCore.pri: |
| * assembler/MacroAssemblerARM.cpp: Added. |
| (JSC::isVFPPresent): |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::supportsFloatingPoint): |
| |
| 2009-09-14 Csaba Osztrogonac <oszi@inf.u-szeged.hu> |
| |
| Reviewed by Tor Arne Vestbø. |
| |
| [Qt] Build fix for windows build. |
| |
| * JavaScriptCore.pri: Correct a logic error. |
| * pcre/dftables: Add missing paranthesis for tmpdir function. |
| |
| 2009-09-12 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by NOBODY (Build fix). |
| |
| Build fix for windows exports (again). |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-09-12 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by NOBODY (Build fix). |
| |
| Build fix for windows exports. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-09-12 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by NOBODY (Build fix). |
| |
| Correct fix for non-allinonefile builds |
| |
| * runtime/ObjectConstructor.cpp: |
| |
| 2009-09-12 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by NOBODY (Build fix). |
| |
| Fix non-allinonefile builds |
| |
| * runtime/ObjectConstructor.cpp: |
| |
| 2009-09-12 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| [ES5] Implement Object.keys |
| https://bugs.webkit.org/show_bug.cgi?id=29170 |
| |
| This patch basically requires two separate steps, the first is to split getPropertyNames |
| into two functions -- getOwnPropertyNames and getPropertyNames, basically making them behave |
| in the same way as getOwnPropertySlot and getPropertySlot. In essence getOwnPropertyNames |
| produces the list of properties on an object excluding its prototype chain and getPropertyNames |
| just iterates the the object and its prototype chain calling getOwnPropertyNames at each level. |
| |
| * API/JSCallbackObject.h: |
| * API/JSCallbackObjectFunctions.h: |
| (JSC::::getOwnPropertyNames): |
| * JavaScriptCore.exp: |
| * debugger/DebuggerActivation.cpp: |
| (JSC::DebuggerActivation::getOwnPropertyNames): |
| * debugger/DebuggerActivation.h: |
| * runtime/CommonIdentifiers.h: |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::getOwnPropertyNames): |
| * runtime/JSArray.h: |
| * runtime/JSByteArray.cpp: |
| (JSC::JSByteArray::getOwnPropertyNames): |
| * runtime/JSByteArray.h: |
| * runtime/JSNotAnObject.cpp: |
| (JSC::JSNotAnObject::getOwnPropertyNames): |
| * runtime/JSNotAnObject.h: |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::getOwnPropertyNames): |
| * runtime/JSObject.h: |
| * runtime/JSVariableObject.cpp: |
| (JSC::JSVariableObject::getOwnPropertyNames): |
| * runtime/JSVariableObject.h: |
| * runtime/ObjectConstructor.cpp: |
| (JSC::ObjectConstructor::ObjectConstructor): |
| (JSC::objectConstructorKeys): |
| * runtime/RegExpMatchesArray.h: |
| (JSC::RegExpMatchesArray::getOwnPropertyNames): |
| * runtime/StringObject.cpp: |
| (JSC::StringObject::getOwnPropertyNames): |
| * runtime/StringObject.h: |
| * runtime/Structure.cpp: |
| (JSC::Structure::getOwnEnumerablePropertyNames): |
| (JSC::Structure::getEnumerablePropertyNames): |
| * runtime/Structure.h: |
| |
| 2009-09-11 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| getPropertyNames caching is invalid when the prototype chain contains objects with custom getPropertyNames |
| https://bugs.webkit.org/show_bug.cgi?id=29214 |
| |
| Add a flag to TypeInfo to indicate whether a type overrides getPropertyNames. |
| This flag is used to make sure that caching of the property name data is safe. |
| |
| * API/JSCallbackConstructor.h: |
| (JSC::JSCallbackConstructor::createStructure): |
| * debugger/DebuggerActivation.h: |
| (JSC::DebuggerActivation::createStructure): |
| * runtime/BooleanObject.h: |
| (JSC::BooleanObject::createStructure): |
| * runtime/DatePrototype.h: |
| (JSC::DatePrototype::createStructure): |
| * runtime/FunctionPrototype.h: |
| (JSC::FunctionPrototype::createStructure): |
| * runtime/JSONObject.h: |
| (JSC::JSONObject::createStructure): |
| * runtime/JSObject.h: |
| (JSC::JSObject::createStructure): |
| * runtime/JSTypeInfo.h: |
| (JSC::TypeInfo::hasDefaultGetPropertyNames): |
| * runtime/JSVariableObject.h: |
| (JSC::JSVariableObject::createStructure): |
| * runtime/JSWrapperObject.h: |
| (JSC::JSWrapperObject::createStructure): |
| * runtime/MathObject.h: |
| (JSC::MathObject::createStructure): |
| * runtime/NumberConstructor.h: |
| (JSC::NumberConstructor::createStructure): |
| * runtime/NumberObject.h: |
| (JSC::NumberObject::createStructure): |
| * runtime/RegExpConstructor.h: |
| (JSC::RegExpConstructor::createStructure): |
| * runtime/RegExpObject.h: |
| (JSC::RegExpObject::createStructure): |
| * runtime/StructureChain.cpp: |
| (JSC::StructureChain::isCacheable): |
| |
| 2009-09-11 Alexey Proskuryakov <ap@webkit.org> |
| |
| Reviewed by Geoff Garen. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=29207 |
| Add checks for using WebCore JS context on secondary threads |
| |
| * runtime/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData): |
| * runtime/JSGlobalData.h: |
| Added a new mainThreadOnly flag that WebCore would set. |
| |
| * runtime/Collector.cpp: (JSC::Heap::registerThread): JSC API methods always call this, |
| so this is a good place to check that the API isn't used form a wrong thread. |
| |
| 2009-09-11 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Compiling JavaScriptCore on sparc 64 with gcc fails. |
| |
| ThreadSafeShared uses the atomic __gnu_cxx::__exchange_and_add with an int, |
| however on sparc 64 the _Atomic_word argument is typedefed to long (8 bytes). |
| |
| The patch disables WTF_USE_LOCKFREE_THREADSAFESHARED in ThreadSafeShared to use |
| a mutex instead when compiling for sparc 64 with gcc. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=29175 |
| |
| * wtf/Platform.h: |
| __sparc64__ is not defined on all OS. |
| Uses instead: __sparc__ && __arch64__ || __sparcv9 |
| * wtf/Threading.h: |
| |
| 2009-09-11 Prasanth Ullattil <prasanth.ullattil@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Fix compile error on Windows7(64Bit) with latest SDK. |
| |
| Added the missing include file. |
| |
| * runtime/UString.cpp: |
| |
| 2009-09-11 Joerg Bornemann <joerg.bornemann@trolltech.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Qt/Windows CE compile fix, include the executable allocator and |
| markstack implementation in the windows build. |
| |
| * JavaScriptCore.pri: |
| |
| 2009-09-08 John Abd-El-Malek <jam@chromium.org> |
| |
| Reviewed by Dimitri Glazkov. |
| |
| Remove unneeded define for ActiveX. |
| https://bugs.webkit.org/show_bug.cgi?id=29054 |
| |
| * wtf/Platform.h: |
| |
| 2009-09-10 Mark Rowe <mrowe@apple.com> |
| |
| Rubber-stamped by Sam Weinig. |
| |
| Update JavaScriptCore and WebKit's FeatureDefines.xcconfig so that they are in sync with WebCore as they need to be. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2009-09-10 Fumitoshi Ukai <ukai@chromium.org> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Export WTF::tryFastMalloc used in WebSocketChannel. |
| https://bugs.webkit.org/show_bug.cgi?id=28038 |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-09-10 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by NOBODY (Build fix). |
| |
| Make StructureTransitionTable use an enum for the PtrAndFlags member |
| used for the single transition slot optimisation. |
| |
| * runtime/StructureTransitionTable.h: |
| (JSC::StructureTransitionTable::StructureTransitionTable): |
| (JSC::StructureTransitionTable::usingSingleTransitionSlot): |
| (JSC::StructureTransitionTable::): |
| |
| 2009-09-10 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Refactor StructureTransitionTable and Structure to unify handling of the single slot optimization |
| https://bugs.webkit.org/show_bug.cgi?id=29141 |
| |
| Make StructureTransitionTable encapsulate the single transition slot optimization. |
| |
| * runtime/Structure.cpp: |
| (JSC::Structure::Structure): |
| (JSC::Structure::~Structure): |
| (JSC::Structure::addPropertyTransitionToExistingStructure): |
| (JSC::Structure::addPropertyTransition): |
| (JSC::Structure::addPropertyWithoutTransition): |
| (JSC::Structure::removePropertyWithoutTransition): |
| (JSC::Structure::hasTransition): |
| * runtime/Structure.h: |
| (JSC::StructureTransitionTable::contains): |
| (JSC::StructureTransitionTable::get): |
| (JSC::StructureTransitionTable::hasTransition): |
| (JSC::StructureTransitionTable::reifySingleTransition): |
| * runtime/StructureTransitionTable.h: |
| (JSC::StructureTransitionTable::StructureTransitionTable): |
| (JSC::StructureTransitionTable::~StructureTransitionTable): |
| (JSC::StructureTransitionTable::remove): |
| (JSC::StructureTransitionTable::add): |
| (JSC::StructureTransitionTable::table): |
| (JSC::StructureTransitionTable::singleTransition): |
| (JSC::StructureTransitionTable::usingSingleTransitionSlot): |
| (JSC::StructureTransitionTable::setSingleTransition): |
| (JSC::StructureTransitionTable::setTransitionTable): |
| (JSC::StructureTransitionTable::): |
| * wtf/PtrAndFlags.h: |
| (WTF::PtrAndFlags::PtrAndFlags): |
| |
| 2009-09-10 Zoltan Horvath <zoltan@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| Implement fastDeleteSkippingDestructor for FastAllocBase and fastDeleteAllValues for HashSet |
| https://bugs.webkit.org/show_bug.cgi?id=25930 |
| |
| FastAllocBase has been extended with fastDeleteSkippingDestructor function which |
| releases memory without destructor call. fastDeleteAllValues has been implemented |
| similar as deleteAllValues but it uses fastDelete function to release memory. |
| |
| * wtf/FastAllocBase.h: |
| (WTF::fastDeleteSkippingDestructor): |
| * wtf/HashSet.h: |
| (WTF::fastDeleteAllValues): |
| |
| 2009-09-10 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| ARM compiler does not understand GCC visibility attribute |
| https://bugs.webkit.org/show_bug.cgi?id=29079 |
| |
| * API/JSBase.h: Make the test more specific to hit only |
| the GCC compiler |
| |
| 2009-09-10 Adam Barth <abarth@webkit.org> |
| |
| Unreviewed revert of the previous change. It broke the tests. |
| |
| * wtf/dtoa.cpp: |
| (WTF::dtoa): |
| |
| 2009-09-10 Ben Laurie <benl@google.com> |
| |
| Reviewed by Adam Barth. |
| |
| <https://bugs.webkit.org/show_bug.cgi?id=26836> |
| |
| If dtoa was given a small buffer and the number was either infinite or |
| NaN, then the buffer would be overflowed. |
| |
| * wtf/dtoa.cpp: |
| |
| 2009-09-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| Change reinterpret_cast to static_cast in r48212. |
| |
| * jit/ExecutableAllocator.h: |
| (JSC::ExecutableAllocator::cacheFlush): |
| |
| 2009-09-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| Remove WTF_PLATFORM_FORCE_PACK as it is no longer used |
| https://bugs.webkit.org/show_bug.cgi?id=29066 |
| |
| * wtf/Platform.h: |
| |
| 2009-09-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Ariya Hidayat. |
| |
| Implement flushing the instruction cache for Symbian |
| https://bugs.webkit.org/show_bug.cgi?id=29075 |
| |
| * jit/ExecutableAllocator.h: |
| (JSC::ExecutableAllocator::cacheFlush): Call IMB_Range to flush |
| the instruction cache on Symbian |
| |
| 2009-09-09 Kent Hansen <khansen@trolltech.com> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=29024 |
| Make JavaScriptCore compile on platforms with case-insensitive file systems and typeinfo.h in STL |
| |
| These platforms include Microsoft Visual Studio 2003, and Symbian with Metrowerks compiler. |
| |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * runtime/JSTypeInfo.h: Copied from JavaScriptCore/runtime/TypeInfo.h. |
| * runtime/Structure.h: |
| * runtime/TypeInfo.h: Removed. |
| |
| 2009-09-08 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| JSON.stringify(Date) loses the milliseconds information |
| https://bugs.webkit.org/show_bug.cgi?id=29063 |
| |
| Make sure we include milliseconds in the output of toISOString. |
| |
| * runtime/DatePrototype.cpp: |
| (JSC::dateProtoFuncToISOString): |
| |
| 2009-09-08 Kevin Ollivier <kevino@theolliviers.com> |
| |
| wx build fix, generate derived sources earlier in order to make sure |
| they're found by the build system when generating the list of sources to build. |
| |
| * wscript: |
| |
| 2009-09-08 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Build fix when USE(LOCKFREE_THREADSAFESHARED) is not defined |
| https://bugs.webkit.org/show_bug.cgi?id=29011 |
| |
| * wtf/Threading.h: Use LOCKFREE_THREADSAFESHARED guard for |
| atomicIncrement and atomicDecrement |
| |
| 2009-09-07 Zoltan Horvath <zoltan@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| Allow custom memory allocation control in Yarr's RegexInterpreter |
| https://bugs.webkit.org/show_bug.cgi?id=29025 |
| |
| Inherits RegexInterpreter classes from FastAllocBase (bug #20422), which has |
| been instantiated by 'new': |
| |
| class ByteDisjunction |
| -> instantiated in JavaScriptCore/yarr/RegexInterpreter.cpp:1462 |
| |
| struct BytecodePattern |
| -> instantiated in JavaScriptCore/yarr/RegexInterpreter.cpp:1279 |
| |
| * yarr/RegexInterpreter.h: |
| |
| 2009-09-07 Drew Wilson <atwilson@google.com> |
| |
| Reverting r48121 to fix Windows build errors. |
| |
| * JavaScriptCore.exp: |
| |
| 2009-09-07 Drew Wilson <atwilson@google.com> |
| |
| Reviewed by David Levin. |
| |
| Enable SHARED_WORKERS by default |
| https://bugs.webkit.org/show_bug.cgi?id=28959 |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2009-09-07 Fumitoshi Ukai <ukai@chromium.org> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Export WTF::tryFastMalloc used in WebSocketChannel. |
| https://bugs.webkit.org/show_bug.cgi?id=28038 |
| |
| * JavaScriptCore.exp: |
| |
| 2009-09-04 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by NOBODY (Build fix). |
| |
| Fix windows export files |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-09-04 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| [[ToString]] conversion should use the actual toString function for String objects. |
| |
| Remove incorrect specialisations of toString conversions on StringObject. |
| |
| * JavaScriptCore.exp: |
| * runtime/StringObject.cpp: |
| * runtime/StringObject.h: |
| |
| 2009-09-04 Steve Falkenburg <sfalken@apple.com> |
| |
| Windows build fix. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Add new export. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Add new export. |
| |
| 2009-09-04 Steve Falkenburg <sfalken@apple.com> |
| |
| Windows build fix. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Remove unneeded export. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Remove unneeded export. |
| |
| 2009-09-04 Darin Adler <darin@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32) |
| https://bugs.webkit.org/show_bug.cgi?id=28909 |
| |
| Part two. |
| |
| Make some improvements to garbage collection code: |
| |
| 1) Create a runtime assertion that catches any classes that |
| override markChildren but have the HasDefaultMark bit set. |
| 2) Remove checks of the mark bit outside the MarkStack::append |
| function; they are redundant. |
| 3) Improve the efficiency of the asObject and asArray functions |
| when called on JSCell* to avoid a round trip to JSValue. |
| 4) Make more callers use the checked asCell and asObject |
| casting functions rather than unchecked casts. |
| 5) Removed the JSCell::marked function and other GC-related |
| functions because these operations are no longer things that |
| code other than the core GC code needs to do directly. Fixed |
| callers that were calling them. |
| |
| * runtime/Collector.cpp: |
| (JSC::Heap::markConservatively): Removed unneeded call to MarkStack::drain. |
| (JSC::Heap::markProtectedObjects): Removed unneeded check of the mark |
| bit and call to MarkStack::drain. |
| (JSC::Heap::collect): Removed unneeded checks of the mark bit and also |
| changed call to SmallStrings::mark to call markChildren instead to match |
| the rest of the objects. |
| (JSC::typeName): Removed unneeded cast to JSObject*. |
| |
| * runtime/JSArray.h: |
| (JSC::asArray): Added an overload for JSCell* and changed the JSValue |
| version to call it. Removed some unneeded casts. |
| (JSC::JSArray::markChildrenDirect): Marked this function inline. It's in |
| a header, and if not marked inline this could lead to linking problems. |
| (JSC::MarkStack::markChildren): Added. This helper function is used by |
| the drain function to avoid repating code. Also added the code here to |
| check fro default mark violations in debug code. If a markChildren |
| function adds something to the mark stack, but the type info claimed |
| hasDefaultMark was true, then we will get an assertion now. Also fixed |
| the assertion about the mark bit to use the Heap function directly |
| because we don't have a JSCell::marked function any more. |
| (JSC::MarkStack::drain): Changed a local variable from "v" to "value", |
| and from "currentCell" to "cell". Changed to call markChildren in two |
| places instead of repeating a chain of if statements twice. Changed |
| code that reads and writes the mark bit to use Heap::isCellMarked and |
| Heap::markCell so we can eliminate the JSCell::marked and |
| JSCell::markCellDirect functions. |
| |
| * runtime/JSCell.h: Removed JSCell's markCellDirect and marked member |
| functions. Added a comment explaining that asCell should be deprecated |
| in favor of the JSValue asCell member function. |
| (JSC::MarkStack::append): Added the assertion that catches callers |
| that have set the HasDefaultMark bit incorrectly. Changed |
| code that reads and writes the mark bit to use Heap::isCellMarked and |
| Heap::markCell so we can eliminate the JSCell::marked and |
| JSCell::markCellDirect functions. Moved the overload of |
| MarkStack::append for JSValue here so it can call through to the cell |
| version. The old version had a copy of all the code instead, but that |
| repeated the conversion from JSValue to JSCell* and the check for |
| whether a value is a cell multiple times. |
| (JSC::Structure::markAggregate): Moved this function here to avoid |
| dependencies for Structure.h, since this calls MarkStack::append. |
| |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::markChildren): Added code to clear |
| m_isCheckingForDefaultMarkViolation so the marking done by JSObject |
| doesn't trigger the assertion. |
| |
| * runtime/JSValue.h: Moved some stray includes that were outside the |
| header guard inside it. Not sure how that happened! Removed the |
| GC-related member functions markChildren, hasChildren, marked, and |
| markDirect. |
| |
| * runtime/JSWrapperObject.h: Made markChildren private. |
| (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the |
| HasDefaultMark bit was set. |
| |
| * runtime/MarkStack.h: Added m_isCheckingForDefaultMarkViolation and |
| initialized it to false. Moved the append function body from here to |
| JSCell.h. Added a declaration of a private markChildren function used |
| inside the drain function. |
| |
| * runtime/SmallStrings.cpp: |
| (JSC::SmallStrings::markChildren): Changed the name and style of this |
| function to match other functions. This allows us to share the normal |
| mark stack code path. |
| |
| * runtime/SmallStrings.h: Changed the name and interface of mark to |
| the more-normal markChildren style. |
| |
| * runtime/Structure.h: Moved the body of markAggregate into the |
| JSCell.h to avoid a circular dependency with JSCell.h. |
| |
| 2009-09-04 Darin Adler <darin@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32) |
| https://bugs.webkit.org/show_bug.cgi?id=28909 |
| |
| Part one. |
| |
| Make some improvements to garbage collection code: |
| |
| 1) Fix the two classes that had the default mark bit set but |
| should not. |
| 2) Remove checks of the mark bit outside the MarkStack::append |
| function; they are redundant. |
| 3) Make more callers use the checked asCell and asObject |
| casting functions rather than unchecked casts. |
| 4) Removed some GC-related functions because these operations are |
| no longer things that code other than the core GC code needs |
| to do directly. Fixed callers that were calling them. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::markAggregate): Removed unneeded check of the mark |
| bit before calling MarkStack::append. |
| |
| * interpreter/Register.h: Removed unneeded marked and markChildren |
| functions. |
| |
| * jit/JITStubs.cpp: |
| (op_eq): Removed unneeded assertions, instead using checked casting |
| functions such as asObject. |
| |
| * runtime/ArgList.h: Added now-needed forward declaration of MarkStack. |
| |
| * runtime/GetterSetter.cpp: |
| (JSC::GetterSetter::markChildren): Remmoved unneeded check of the mark bit. |
| |
| * runtime/GlobalEvalFunction.h: |
| (JSC::GlobalEvalFunction::createStructure): Added. Fixes a bug where the |
| HasDefaultMark bit was set. |
| |
| * runtime/JSCell.cpp: |
| (JSC::JSCell::getObject): Use asObject to avoid a direct static_cast. |
| |
| * runtime/JSObject.h: |
| (JSC::asObject): Added an overload for JSCell* and changed the JSValue |
| version to call it. |
| (JSC::JSValue::get): Use asObject to avoid a direct static_cast. |
| |
| * runtime/JSWrapperObject.h: Made markChildren private. |
| (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the |
| HasDefaultMark bit was set. Later we may want to optimize this for |
| wrapper types that never have cells in their internal values, but there |
| is no measured performance regression in SunSpider or V8 doing this |
| all the time. |
| |
| * runtime/MarkStack.cpp: Tweaked formatting. |
| |
| 2009-09-04 Kevin Ollivier <kevino@theolliviers.com> |
| |
| wx build fix. Switch USE_ defines over to the compiler so that they can be |
| checked by files not including config.h (like WebCorePrefix.h). |
| |
| * wtf/Platform.h: |
| |
| 2009-09-03 Yong Li <yong.li@torchmobile.com> |
| |
| Reviewed by David Levin. |
| |
| Remove unnecessary dependency on unistd.h |
| https://bugs.webkit.org/show_bug.cgi?id=28962 |
| |
| * runtime/Completion.cpp: |
| |
| 2009-09-03 Fumitoshi Ukai <ukai@chromium.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Add strnstr for Linux and Windows in StringExtras.h |
| https://bugs.webkit.org/show_bug.cgi?id=28901 |
| |
| * wtf/StringExtras.h: |
| (strnstr): |
| |
| 2009-09-03 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| Allow custom memory allocation control for JavaScriptCore's HashEntry class |
| https://bugs.webkit.org/show_bug.cgi?id=27830 |
| |
| Inherits HashEntry class from FastAllocBase because it has been |
| instantiated by 'new' JavaScriptCore/runtime/Lookup.cpp:32. |
| |
| * runtime/Lookup.h: |
| |
| 2009-09-02 Gavin Barraclough <barraclough@apple.com> |
| |
| Should crash if JIT code buffer allocation fails. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=28926 |
| <rdar://problem/7031922> |
| |
| * jit/ExecutableAllocatorPosix.cpp: |
| (JSC::ExecutablePool::systemAlloc): |
| * jit/ExecutableAllocatorWin.cpp: |
| (JSC::ExecutablePool::systemAlloc): |
| |
| 2009-09-02 Kevin Ollivier <kevino@theolliviers.com> |
| |
| waf build fixes for Windows/MSVC. |
| |
| * wscript: |
| |
| 2009-09-02 Kevin Ollivier <kevino@theolliviers.com> |
| |
| Build fix for building on Windows. |
| |
| * wtf/ThreadingPthreads.cpp: |
| |
| 2009-09-02 Norbert Leser <norbert.leser@nokia.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Use fastMalloc when neither MMAP nor VIRTUALALLOC are enabled |
| |
| RegisterFile constructor currently throws #error when both |
| MMAP and VIRTUALALLOC conditions fail. |
| On any platform that does not provide these features |
| (for instance, Symbian), |
| the fallback should be regular malloc (or fastMalloc). |
| It is functionally equivalent in this case, even though it may |
| have certain drawbacks such as lack of dynamic pre-allocation. |
| |
| * interpreter/RegisterFile.cpp: |
| (JSC::RegisterFile::~RegisterFile): |
| * interpreter/RegisterFile.h: |
| (JSC::RegisterFile::RegisterFile): |
| |
| 2009-08-31 Robert Agoston <Agoston.Robert@stud.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Fixed typo. |
| https://bugs.webkit.org/show_bug.cgi?id=28691 |
| |
| * parser/Parser.h: |
| (JSC::Parser::parse): |
| |
| 2009-08-27 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| JSON Stringifier does not follow ES5 spec for handling of Number, String and Boolean objects |
| https://bugs.webkit.org/show_bug.cgi?id=28797 |
| |
| Fixed unwrapBoxedPrimitive to do the right thing, which necessitated a couple of new exception |
| checks, and corrected the logic in gap to correctly convert Number and String objects. |
| |
| * runtime/JSONObject.cpp: |
| (JSC::unwrapBoxedPrimitive): |
| (JSC::gap): |
| (JSC::Stringifier::Stringifier): |
| (JSC::Stringifier::appendStringifiedValue): |
| |
| 2009-08-27 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Adam Roben. |
| |
| JSON.stringify replacer array does not accept values that are not string primitives. |
| https://bugs.webkit.org/show_bug.cgi?id=28788 |
| |
| Update the JSON stringifier to initialise its replacer array according to the most |
| recent version of the spec. |
| |
| * runtime/Identifier.h: |
| (JSC::Identifier::from): |
| * runtime/JSONObject.cpp: |
| (JSC::Stringifier::Stringifier): |
| |
| 2009-08-27 Alexey Proskuryakov <ap@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=28753 |
| <rdar://problem/7173448> Excessive number of threads (and a crash) |
| |
| * wtf/Threading.h: (WTF::atomicIncrement): Changed atomicIncrement to match decrement |
| and return the new value. Also added using directives for these functions, to match |
| te rest of WTF. |
| |
| 2009-08-27 Brent Fulgham <bfulgham@webkit.org> |
| |
| Reviewed by Adam Roben. |
| |
| Link the testapi against CFLite when building the WinCairo port. |
| |
| * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add new Release_CFLite |
| target. Update all targets to inherit from either the |
| JavaScriptCF.vsprops (Apple target) or the JavaScriptCFLite.vsprops |
| file (WinCairo target). |
| * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Remove |
| input file CoreFoundation.lib. This is provided by either the |
| JavaScriptCF.vsprops or JavaScriptCFLite.vsprops file. |
| |
| 2009-08-27 Steve Falkenburg <sfalken@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Fix Windows-specific crash due to missing memory clearing call. |
| |
| * runtime/Collector.cpp: |
| (JSC::Heap::allocateBlock): |
| |
| 2009-08-27 Brent Fulgham <bfulgham@webkit.org> |
| |
| Build fix: JavaScriptCore_debug.def missing some exports. Apple |
| Windows build does not use this file, so it was not noticed previously. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-08-27 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| x86-64 GTK broken due to code offsets changing, pointers sometimes packed into immediates. |
| https://bugs.webkit.org/show_bug.cgi?id=28317 |
| |
| Missed one, fix part II. |
| |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::move): |
| * assembler/X86Assembler.h: |
| (JSC::CAN_SIGN_EXTEND_8_32): |
| |
| 2009-08-27 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Adam Roben. |
| |
| JSON.stringify replacer array does not accept values that are not string primitives. |
| https://bugs.webkit.org/show_bug.cgi?id=28788 |
| |
| Update the JSON stringifier to initialise its replacer array according to the most |
| recent version of the spec. |
| |
| * runtime/Identifier.h: |
| (JSC::Identifier::from): |
| * runtime/JSONObject.cpp: |
| (JSC::Stringifier::Stringifier): |
| |
| 2009-08-27 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| JSON parser accepts trailing comma in array literals |
| https://bugs.webkit.org/show_bug.cgi?id=28779 |
| |
| Update parser to correctly fail if there's a trailing comma. |
| |
| * runtime/LiteralParser.cpp: |
| (JSC::LiteralParser::parse): |
| |
| 2009-08-26 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| 'this' in JSON.parse reviver is the global object |
| https://bugs.webkit.org/show_bug.cgi?id=28752 |
| |
| This is a technically simple change, we merely update the code for calling |
| the reviver function to pass the correct this object. Doing so however |
| exposes the holder to arbitrary mutation by the reviver function so it is |
| necessary for us to now guard all property accesses against the possibility |
| of failure. |
| |
| * runtime/JSArray.h: |
| JSON needs to delete a property from the array, so we friend its |
| Walker class so that we can make a non-virtual call to the arrays |
| delete and getOwnPropertySlot methods. |
| * runtime/JSONObject.cpp: |
| (JSC::Walker::callReviver): |
| We need to pass the correct this object |
| (JSC::Walker::walk): |
| Update calls to callReviver, and update property logic logic |
| to correctly handle the holder being mutated by the reviver |
| function. |
| |
| 2009-08-26 Alice Liu <alice.liu@apple.com> |
| |
| Windows build fix: added some exported symbols |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-08-26 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix: Removed some exported symbols that no longer exist. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-08-26 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Olliejver Hunt. |
| |
| x86-64 GTK broken due to code offsets changing, pointers sometimes packed into immediates. |
| https://bugs.webkit.org/show_bug.cgi?id=28317 |
| |
| We rely on a slightly OS X specific behaviour, that x86-64 applications have a 4Gb zero page, |
| so pointers are never representable as a 32-bit integer, and always have to be represented by |
| a separate immediate load instruction, rather than within the immediate field of an arithmetic |
| or memory operation. |
| |
| We explicitly check for a couple of cases where a value might be representable in 32-bit, but |
| these probably never kick in on Mac OS, and only kick in to hose GTK. Deleting these does not |
| show a performance degradation on SunSpider. Remove. |
| |
| * assembler/MacroAssemblerX86_64.h: |
| (JSC::MacroAssemblerX86_64::storePtr): |
| (JSC::MacroAssemblerX86_64::branchPtr): |
| |
| 2009-08-26 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| A bit of Collector refatoring. |
| |
| SunSpider says no change. v8 says 1.003x faster (1.02x faster on splay). |
| |
| * JavaScriptCore.exp: |
| |
| * runtime/JSCell.cpp: |
| (JSC::JSCell::toPrimitive): |
| (JSC::JSCell::getPrimitiveNumber): |
| (JSC::JSCell::toBoolean): |
| (JSC::JSCell::toNumber): |
| (JSC::JSCell::toString): |
| (JSC::JSCell::toObject): Removed pure virtual functions from |
| JSCell, so the collector can construct one. This allowed |
| me to remove a bunch of ASSERT_NOT_REACHED throughout the |
| code, too. |
| |
| * runtime/JSCell.h: |
| (JSC::JSCell::JSCell): ditto |
| (JSC::Heap::heap): Inlined this function because it's trivial. |
| |
| * JavaScriptCore.exp: |
| |
| * runtime/Collector.cpp: |
| (JSC::Heap::destroy): |
| (JSC::Heap::allocateBlock): |
| (JSC::Heap::freeBlock): |
| (JSC::Heap::freeBlocks): Renamed freeHeap to freeBlocks, since |
| it doesn't actually free the Heap object. |
| (JSC::Heap::heapAllocate): |
| (JSC::Heap::sweep): |
| * runtime/Collector.h: Refactored block allocation and destruction |
| into helper functions. |
| |
| * runtime/GetterSetter.cpp: |
| * runtime/JSAPIValueWrapper.cpp: |
| * runtime/JSPropertyNameIterator.cpp: Removed dummy implementations |
| of pure virtual functions. (See above.) |
| |
| === End re-roll-in of r47738:47740 with Windows crash fixed === |
| |
| 2009-08-26 Geoffrey Garen <ggaren@apple.com> |
| |
| Build fix: start out with a 32-bit value to avoid a shortening warning. |
| |
| * runtime/Collector.cpp: |
| (JSC::Heap::sweep): |
| |
| 2009-08-24 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Substantially reduced VM thrash in the GC heap. |
| |
| 1.08x faster on v8 (1.60x faster on v8-splay). |
| |
| 1.40x faster on bench-alloc-nonretained. |
| |
| 1.90x faster on bench-alloc-retained. |
| |
| SunSpider says no change. |
| |
| * runtime/Collector.cpp: |
| (JSC::Heap::heapAllocate): Fixed a long-standing bug: update a few local |
| variables unconditionally after calling collect(), since they may be used |
| even if we don't "goto scan". (In the bug I saw, usedBlocks got out of |
| sync with heap.usedBlocks). |
| (JSC::Heap::sweep): Keep enough free heap space to accomodate |
| the number of objects we'll allocate before the next GC, plus 25%, for |
| good measure. |
| * runtime/Collector.h: Bumped the block size to 256k. This seems to give |
| the best cache performance, and it prevents us from initiating lots of |
| VM traffic to recover very small chunks of memory. |
| |
| === Begin re-roll-in of r47738:47740 with Windows crash fixed === |
| |
| 2009-08-25 Drew Wilson <atwilson@google.com> |
| |
| Reviewed by David Levin. |
| |
| postMessage() spec now supports sending arrays of ports |
| https://bugs.webkit.org/show_bug.cgi?id=26902 |
| |
| Added OwnPtr to VectorTraits so we can store OwnPtrs in Vectors. |
| |
| * wtf/VectorTraits.h: |
| |
| 2009-08-26 Xan Lopez <xlopez@igalia.com> |
| |
| Rubber-stamped by Gustavo Noronha. |
| |
| Remove duplicated files from file list. |
| |
| * GNUmakefile.am: |
| |
| 2009-08-26 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by NOBODY (Build fix). |
| |
| More export fixes. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-08-26 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by NOBODY (Build fix). |
| |
| Hopefully fix all the exports from JSC on windows |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-08-26 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by NOBODY (Build fixes). |
| |
| Forgot I added files to JavaScriptCore. |
| |
| * GNUmakefile.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.pri: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCoreSources.bkl: |
| |
| 2009-08-25 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| [ES5] Implement getOwnPropertyDescriptor |
| https://bugs.webkit.org/show_bug.cgi?id=28724 |
| |
| Implement the core runtime support for getOwnPropertyDescriptor. |
| This adds a virtual getOwnPropertyDescriptor method to every class |
| that implements getOwnPropertySlot that shadows the behaviour of |
| getOwnPropertySlot. The alternative would be to make getOwnPropertySlot |
| (or PropertySlots in general) provide property attribute information, |
| but quick testing showed this to be a regression. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * runtime/Arguments.cpp: |
| (JSC::Arguments::getOwnPropertyDescriptor): |
| * runtime/Arguments.h: |
| * runtime/ArrayPrototype.cpp: |
| (JSC::ArrayPrototype::getOwnPropertyDescriptor): |
| * runtime/ArrayPrototype.h: |
| * runtime/CommonIdentifiers.h: |
| * runtime/DatePrototype.cpp: |
| (JSC::DatePrototype::getOwnPropertyDescriptor): |
| * runtime/DatePrototype.h: |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::getOwnPropertyDescriptor): |
| * runtime/JSArray.h: |
| * runtime/JSByteArray.cpp: |
| (JSC::JSByteArray::getOwnPropertyDescriptor): |
| * runtime/JSByteArray.h: |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::getOwnPropertyDescriptor): |
| * runtime/JSFunction.h: |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::getOwnPropertyDescriptor): |
| * runtime/JSNotAnObject.cpp: |
| (JSC::JSNotAnObject::getOwnPropertyDescriptor): |
| * runtime/JSNotAnObject.h: |
| * runtime/JSONObject.cpp: |
| (JSC::JSONObject::getOwnPropertySlot): |
| (JSC::JSONObject::getOwnPropertyDescriptor): |
| * runtime/JSONObject.h: |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::getOwnPropertyDescriptor): |
| (JSC::JSObject::getPropertyDescriptor): |
| * runtime/JSObject.h: |
| * runtime/JSString.cpp: |
| (JSC::JSString::getStringPropertyDescriptor): |
| (JSC::JSString::getOwnPropertyDescriptor): |
| * runtime/JSString.h: |
| * runtime/JSVariableObject.cpp: |
| (JSC::JSVariableObject::symbolTableGet): |
| * runtime/JSVariableObject.h: |
| * runtime/Lookup.h: |
| (JSC::getStaticPropertyDescriptor): |
| (JSC::getStaticFunctionDescriptor): |
| (JSC::getStaticValueDescriptor): |
| Add property descriptor equivalents of the lookup |
| table access functions |
| |
| * runtime/MathObject.cpp: |
| (JSC::MathObject::getOwnPropertySlot): |
| (JSC::MathObject::getOwnPropertyDescriptor): |
| * runtime/MathObject.h: |
| * runtime/NumberConstructor.cpp: |
| (JSC::NumberConstructor::getOwnPropertyDescriptor): |
| * runtime/NumberConstructor.h: |
| * runtime/ObjectConstructor.cpp: |
| (JSC::ObjectConstructor::ObjectConstructor): |
| (JSC::objectConstructorGetOwnPropertyDescriptor): |
| * runtime/PropertyDescriptor.cpp: Added. |
| (JSC::PropertyDescriptor::writable): |
| (JSC::PropertyDescriptor::enumerable): |
| (JSC::PropertyDescriptor::configurable): |
| (JSC::PropertyDescriptor::hasAccessors): |
| (JSC::PropertyDescriptor::setUndefined): |
| (JSC::PropertyDescriptor::getter): |
| (JSC::PropertyDescriptor::setter): |
| (JSC::PropertyDescriptor::setDescriptor): |
| (JSC::PropertyDescriptor::setAccessorDescriptor): |
| * runtime/PropertyDescriptor.h: Added. |
| (JSC::PropertyDescriptor::PropertyDescriptor): |
| (JSC::PropertyDescriptor::attributes): |
| (JSC::PropertyDescriptor::isValid): |
| (JSC::PropertyDescriptor::value): |
| * runtime/RegExpConstructor.cpp: |
| (JSC::RegExpConstructor::getOwnPropertyDescriptor): |
| * runtime/RegExpConstructor.h: |
| * runtime/RegExpMatchesArray.h: |
| (JSC::RegExpMatchesArray::getOwnPropertyDescriptor): |
| * runtime/RegExpObject.cpp: |
| (JSC::RegExpObject::getOwnPropertyDescriptor): |
| * runtime/RegExpObject.h: |
| * runtime/StringObject.cpp: |
| (JSC::StringObject::getOwnPropertyDescriptor): |
| * runtime/StringObject.h: |
| * runtime/StringPrototype.cpp: |
| (JSC::StringPrototype::getOwnPropertyDescriptor): |
| * runtime/StringPrototype.h: |
| |
| 2009-08-24 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| How many copies of the parameters do you need? |
| https://bugs.webkit.org/show_bug.cgi?id=28701 |
| |
| The function parameters in JSC get copied a lot - and unnecessarily so. |
| |
| Originally this happened due to duplicating FunctionBodyNodes on recompilation, |
| though the problem has been exacerbated by copying the parameters from the |
| original function body onto the executable, then back onto the real body that |
| will be generated (this happens on every function). And this is all made worse |
| since the data structures in question are a little ugly - C style arrays of C++ |
| objects containing ref counts, so they need a full copy-construct (rather than |
| a simple memcpy). |
| |
| This can all be greatly simplified by just punting the parameters off into |
| their own ref-counted object, and forgoing all the copying. |
| |
| ~no performance change, possible slight progression. |
| |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::BytecodeGenerator): |
| * bytecompiler/BytecodeGenerator.h: |
| (JSC::BytecodeGenerator::makeFunction): |
| * parser/Nodes.cpp: |
| (JSC::FunctionParameters::FunctionParameters): |
| (JSC::FunctionBodyNode::FunctionBodyNode): |
| (JSC::FunctionBodyNode::finishParsing): |
| * parser/Nodes.h: |
| (JSC::FunctionBodyNode::parameters): |
| (JSC::FunctionBodyNode::parameterCount): |
| * runtime/Executable.cpp: |
| (JSC::FunctionExecutable::~FunctionExecutable): |
| (JSC::FunctionExecutable::compile): |
| (JSC::FunctionExecutable::reparseExceptionInfo): |
| (JSC::FunctionExecutable::fromGlobalCode): |
| (JSC::FunctionExecutable::paramString): |
| * runtime/Executable.h: |
| (JSC::FunctionExecutable::FunctionExecutable): |
| (JSC::FunctionExecutable::parameterCount): |
| |
| 2009-08-25 Brent Fulgham <bfulgham@webkit.org> |
| |
| Reviewed by NOBODY (Buildfix). |
| |
| * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_CFLite target |
| that inherits from the debug_wincairo property sheet and therefore |
| links to the proper debug library. |
| * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_CFLite target |
| that inherits from the debug_wincairo property sheet and therefore |
| links to the proper debug library. |
| |
| 2009-08-25 Chris Marrin <cmarrin@apple.com> |
| |
| Reviewed by Simon Fraser. |
| |
| Export tryFastMalloc for Canvas3D work |
| https://bugs.webkit.org/show_bug.cgi?id=28018 |
| |
| * JavaScriptCore.exp: |
| |
| 2009-08-25 David Levin <levin@chromium.org> |
| |
| Reviewed by Adam Roben. |
| |
| PLATFORM(CFNETWORK) should be USE(CFNETWORK). |
| https://bugs.webkit.org/show_bug.cgi?id=28713 |
| |
| * wtf/Platform.h: Added a #define to catch this issue in the |
| future. The define would generate an error on gcc without the |
| space in the expansion, but Visual C++ needs the space to cause an error. |
| |
| 2009-08-24 Brent Fulgham <bfulgham@webkit.org> |
| |
| Reviewed by Steve Falkenburg. |
| |
| Revise CFLite Debug build to emit DLL's with _debug label. |
| https://bugs.webkit.org/show_bug.cgi?id=28695. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Modify |
| Cairo debug build to inherit from new debug_cairo property sheet. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops: |
| Modify to look for debug CFLite when in debug build. |
| |
| 2009-08-24 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Adler & Darin Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=28691 |
| Do not retain ScopeNodes outside of parsing |
| |
| There is now no need for these to exist outside of parsing - their use in the runtime is replaced by Executable types. |
| |
| * bytecode/EvalCodeCache.h: |
| (JSC::EvalCodeCache::get): |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::BytecodeGenerator): |
| (JSC::BytecodeGenerator::emitNewFunction): |
| (JSC::BytecodeGenerator::emitNewFunctionExpression): |
| * bytecompiler/BytecodeGenerator.h: |
| (JSC::BytecodeGenerator::makeFunction): |
| * debugger/Debugger.cpp: |
| (JSC::Debugger::recompileAllJSFunctions): |
| (JSC::evaluateInGlobalCallFrame): |
| * debugger/DebuggerCallFrame.cpp: |
| (JSC::DebuggerCallFrame::evaluate): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::execute): |
| (JSC::Interpreter::prepareForRepeatCall): |
| (JSC::Interpreter::privateExecute): |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * parser/Nodes.cpp: |
| (JSC::ScopeNodeData::ScopeNodeData): |
| (JSC::ProgramNode::create): |
| (JSC::EvalNode::create): |
| (JSC::FunctionBodyNode::create): |
| * parser/Nodes.h: |
| (JSC::ScopeNode::adoptData): |
| (JSC::FunctionBodyNode::parameterCount): |
| * parser/Parser.cpp: |
| * parser/Parser.h: |
| (JSC::Parser::arena): |
| (JSC::Parser::Parser): |
| (JSC::Parser::parse): |
| * runtime/ArrayPrototype.cpp: |
| (JSC::isNumericCompareFunction): |
| (JSC::arrayProtoFuncSort): |
| * runtime/Completion.cpp: |
| (JSC::checkSyntax): |
| (JSC::evaluate): |
| * runtime/Executable.cpp: |
| (JSC::FunctionExecutable::~FunctionExecutable): |
| (JSC::EvalExecutable::compile): |
| (JSC::ProgramExecutable::checkSyntax): |
| (JSC::ProgramExecutable::compile): |
| (JSC::FunctionExecutable::compile): |
| (JSC::EvalExecutable::generateJITCode): |
| (JSC::ProgramExecutable::generateJITCode): |
| (JSC::FunctionExecutable::generateJITCode): |
| (JSC::FunctionExecutable::reparseExceptionInfo): |
| (JSC::EvalExecutable::reparseExceptionInfo): |
| (JSC::FunctionExecutable::recompile): |
| (JSC::FunctionExecutable::fromGlobalCode): |
| (JSC::FunctionExecutable::copyParameters): |
| (JSC::FunctionExecutable::paramString): |
| * runtime/Executable.h: |
| (JSC::ScriptExecutable::ScriptExecutable): |
| (JSC::ScriptExecutable::sourceID): |
| (JSC::ScriptExecutable::sourceURL): |
| (JSC::ScriptExecutable::lineNo): |
| (JSC::ScriptExecutable::lastLine): |
| (JSC::ScriptExecutable::usesEval): |
| (JSC::ScriptExecutable::usesArguments): |
| (JSC::ScriptExecutable::needsActivation): |
| (JSC::ScriptExecutable::recordParse): |
| (JSC::EvalExecutable::bytecode): |
| (JSC::EvalExecutable::jitCode): |
| (JSC::ProgramExecutable::bytecode): |
| (JSC::ProgramExecutable::reparseExceptionInfo): |
| (JSC::ProgramExecutable::jitCode): |
| (JSC::FunctionExecutable::FunctionExecutable): |
| (JSC::FunctionExecutable::make): |
| (JSC::FunctionExecutable::bytecode): |
| (JSC::FunctionExecutable::isGenerated): |
| (JSC::FunctionExecutable::name): |
| (JSC::FunctionExecutable::parameterCount): |
| (JSC::FunctionExecutable::jitCode): |
| * runtime/FunctionConstructor.cpp: |
| (JSC::constructFunction): |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::numericCompareFunction): |
| * runtime/JSGlobalObjectFunctions.cpp: |
| (JSC::globalFuncEval): |
| |
| 2009-08-24 Darin Adler <darin@apple.com> |
| |
| * runtime/ObjectPrototype.cpp: |
| (JSC::ObjectPrototype::put): Landed revised version I had tested but forgot |
| to land. Leave out the branch, since we don't need one. |
| |
| 2009-08-24 Darin Adler <darin@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Array index miss case creates a string every time |
| https://bugs.webkit.org/show_bug.cgi?id=28664 |
| |
| SunSpider test results I saw: |
| |
| 0.5% faster overall |
| 1% faster on crypto-aes |
| 20% faster on crypto-md5 |
| 13% faster on crypto-sha1 |
| |
| * runtime/ObjectPrototype.cpp: |
| (JSC::ObjectPrototype::ObjectPrototype): Initialize m_hasNoPropertiesWithUInt32Names |
| to true. |
| (JSC::ObjectPrototype::put): Clearly m_hasNoPropertiesWithUInt32Names if the new |
| property has a name that is the string form of a UInt32. |
| (JSC::ObjectPrototype::getOwnPropertySlot): Don't call JSObject::getOwnPropertySlot |
| if m_hasNoPropertiesWithUInt32Names is true, and it is highly likely to be true. |
| |
| * runtime/ObjectPrototype.h: Added declarations for the above. |
| |
| 2009-08-24 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> |
| |
| Unreviewed. Fix a typo in my distcheck build fix. |
| |
| * GNUmakefile.am: |
| |
| 2009-08-23 Gustavo Noronha Silva <gns@gnome.org> |
| |
| Unreviewed build fix for make distcheck. |
| |
| * GNUmakefile.am: Added files required for the build. |
| |
| 2009-08-22 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by Mark Rowe. |
| |
| REGRESSION(r47639-r47660): Webkit crashes on launch on PowerPC |
| https://bugs.webkit.org/show_bug.cgi?id=28655 |
| |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::JSFunction): Initialize properly with a VPtrHackExecutable. |
| * wtf/Platform.h: |
| |
| 2009-08-22 Darin Adler <darin@apple.com> |
| |
| Fix storage leak from syntax tree arena allocation patch. |
| |
| * parser/Nodes.h: CommaNode needs to inherit from ParserArenaDeletable |
| because it has a vector. |
| |
| 2009-08-21 Darin Adler <darin@apple.com> |
| |
| Fix Qt build. |
| |
| * parser/Nodes.cpp: |
| (JSC::ScopeNodeData::ScopeNodeData): Made non-inline again. |
| This is used outside Nodes.cpp so can't be inline unless |
| it is in the header. |
| |
| 2009-08-21 Darin Adler <darin@apple.com> |
| |
| Two loose ends from the last commit. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: Made ParserArena.h |
| and create_hash_table project-internal instead of "private". |
| * runtime/Executable.h: Removed accidentally-added constructor. |
| |
| 2009-08-21 Darin Adler <darin@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Syntax tree nodes should use arena allocation |
| https://bugs.webkit.org/show_bug.cgi?id=25674 |
| |
| Use an actual arena now. 0.6% speedup on SunSpider. |
| |
| New and improved with 100% less leaking of the universe. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| Removed all exports involving the class FunctionBodyNode, which no |
| longer needs to be used outside JavaScriptCore. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: Made Nodes.h and |
| Executable.h project-internal instead of "private". |
| |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::BytecodeGenerator): Updated since VarStack |
| contains const Identifier* now. |
| |
| * parser/Grammar.y: Made identifiers from the lexer be const |
| Identifier* and updated since VarStack contains const Identifier* now. |
| |
| * parser/Lexer.cpp: |
| (JSC::Lexer::setCode): Pass in ParserArena, used for identifiers. |
| (JSC::Lexer::makeIdentifier): Changed return type to const Identifier* |
| and changed to call ParserArena. |
| (JSC::Lexer::clear): Removed the code to manage m_identifiers and |
| added code to set m_arena to 0. |
| * parser/Lexer.h: Updated for changes above. |
| |
| * parser/NodeConstructors.h: |
| (JSC::ParserArenaFreeable::operator new): Added. Calls allocateFreeable |
| on the arena. |
| (JSC::ParserArenaDeletable::operator new): Changed to call the |
| allocateDeletable function on the arena instead of deleteWithArena. |
| (JSC::PropertyNode::PropertyNode): Added new constructor that makes |
| numeric identifiers. Some day we might want to optimize this for |
| integers so it doesn't create a string for each one. |
| (JSC::ContinueNode::ContinueNode): Initialize m_ident to nullIdentifier |
| since it's now a const Identifier& so it can't be left uninitialized. |
| (JSC::BreakNode::BreakNode): Ditto. |
| (JSC::CaseClauseNode::CaseClauseNode): Updated to use SourceElements* |
| to keep track of the statements rather than a separate statement vector. |
| (JSC::BlockNode::BlockNode): Ditto. |
| (JSC::ForInNode::ForInNode): Initialize m_ident to nullIdentifier. |
| |
| * parser/Nodes.cpp: Moved the comment explaining emitBytecode in here. |
| It seemed strangely out of place in the header. |
| (JSC::ThrowableExpressionData::emitThrowError): Added an overload for |
| UString as well as Identifier. |
| (JSC::SourceElements::singleStatement): Added. |
| (JSC::SourceElements::lastStatement): Added. |
| (JSC::RegExpNode::emitBytecode): Changed the throwError code to use |
| the substitution mechanism instead of doing a string append. |
| (JSC::SourceElements::emitBytecode): Added. Replaces the old |
| statementListEmitCode function, since we now keep the SourceElements |
| objects around. |
| (JSC::BlockNode::lastStatement): Added. |
| (JSC::BlockNode::emitBytecode): Changed to use emitBytecode instead of |
| statementListEmitCode. |
| (JSC::CaseClauseNode::emitBytecode): Added. |
| (JSC::CaseBlockNode::emitBytecodeForBlock): Changed to use emitBytecode |
| instead of statementListEmitCode. |
| (JSC::ScopeNodeData::ScopeNodeData): Changed to store the |
| SourceElements* instead of using releaseContentsIntoVector. |
| (JSC::ScopeNode::emitStatementsBytecode): Added. |
| (JSC::ScopeNode::singleStatement): Added. |
| (JSC::ProgramNode::emitBytecode): Call emitStatementsBytecode instead |
| of statementListEmitCode. |
| (JSC::EvalNode::emitBytecode): Ditto. |
| (JSC::FunctionBodyNode::emitBytecode): Call emitStatementsBytecode |
| insetad of statementListEmitCode and check for the return node using |
| the new functions. |
| |
| * parser/Nodes.h: Changed VarStack to store const Identifier* instead |
| of Identifier and rely on the arena to control lifetime. Added a new |
| ParserArenaFreeable class. Made ParserArenaDeletable inherit from |
| FastAllocBase instead of having its own operator new. Base the Node |
| class on ParserArenaFreeable. Changed the various Node classes |
| to use const Identifier& instead of Identifier to avoid the need to |
| call their destructors and allow them to function as "freeable" in the |
| arena. Removed extraneous JSC_FAST_CALL on definitions of inline functions. |
| Changed ElementNode, PropertyNode, ArgumentsNode, ParameterNode, |
| CaseClauseNode, ClauseListNode, and CaseBlockNode to use ParserArenaFreeable |
| as a base class since they do not descend from Node. Eliminated the |
| StatementVector type and instead have various classes use SourceElements* |
| instead of StatementVector. This prevents those classes from having to |
| use ParserArenaDeletable to make sure the vector destructor is called. |
| |
| * parser/Parser.cpp: |
| (JSC::Parser::parse): Pass the arena to the lexer. |
| |
| * parser/Parser.h: Added an include of ParserArena.h, which is no longer |
| included by Nodes.h. |
| (JSC::Parser::parseFunctionFromGlobalCode): Changed to use the |
| singleStatement function, since there is no longer any children function. |
| Removed some unneeded use of RefPtr. |
| |
| * parser/ParserArena.cpp: |
| (JSC::ParserArena::ParserArena): Added. Initializes the new members, |
| m_freeableMemory, m_freeablePoolEnd, and m_identifiers. |
| (JSC::ParserArena::freeablePool): Added. Computes the pool pointer, |
| since we store only the current pointer and the end of pool pointer. |
| (JSC::ParserArena::deallocateObjects): Added. Contains the common |
| memory-deallocation logic used by both the destructor and the |
| reset function. |
| (JSC::ParserArena::~ParserArena): Changed to call deallocateObjects. |
| (JSC::ParserArena::reset): Ditto. Also added code to zero out the |
| new structures, and switched to use clear() instead of shrink(0) since |
| we don't really reuse arenas. |
| (JSC::ParserArena::makeNumericIdentifier): Added. |
| (JSC::ParserArena::allocateFreeablePool): Added. Used when the pool |
| is empty. |
| (JSC::ParserArena::isEmpty): Added. No longer inline, which is fine |
| since this is used only for assertions at the moment. |
| (JSC::ParserArena::derefWithArena): Make non-inline. |
| |
| * parser/ParserArena.h: Added an actual arena of "freeable" objects, |
| ones that don't need destructors to be called. Also added a separate |
| IdentifierArena object, a segmented vector of identifiers that used |
| to be in the Lexer. |
| |
| * runtime/Executable.h: Moved the definition of the |
| FunctionExecutable::make function here. It can't go in JSFunction.h |
| since that header has to be used outside JavaScriptCore and so can't |
| include this, which includes Nodes.h. The function could be moved |
| elswhere if we don't want to include JSFunction.h in this header, but |
| for now this seems to be the best place. |
| |
| * runtime/JSFunction.h: Removed the include of Executable.h and |
| definition of the FunctionExecutable::make function. |
| |
| * wtf/FastMalloc.cpp: Fixed an incorrect comment. |
| |
| 2009-08-21 Mark Rowe <mrowe@apple.com> |
| |
| Fix the non-JIT build. |
| |
| * runtime/Executable.cpp: |
| * runtime/Executable.h: |
| |
| 2009-08-21 Gavin Barraclough <barraclough@apple.com> |
| |
| Speculative QuickTime build fix. |
| |
| * runtime/JSArray.cpp: |
| |
| 2009-08-21 Gavin Barraclough <barraclough@apple.com> |
| |
| Speculative QT build fix. |
| |
| * runtime/StringPrototype.cpp: |
| |
| 2009-08-21 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Restructure Executable types so that host functions do not hold a FunctionExecutable. |
| https://bugs.webkit.org/show_bug.cgi?id=28621 |
| |
| All JSFunction objects have a pointer to an Executable*. This is currently always a |
| FunctionExecutable, however this has a couple of drawbacks. Host functions do not |
| store a range of information that the FunctionExecutable provides (source, name, |
| CodeBlock & information presently held on the FunctionBodyNode). |
| |
| [ * nearly all... see below! ] |
| |
| Instead, make JSFunctions hold a pointer to an ExecutableBase, move fields specific |
| to JS sourced executable types (source, node) into a new subclass (ScriptExecutable), |
| and create a new NativeExecutable type. We now provide a new method in JSFunction |
| to access & downcast to FunctionExecutable, but in doing so we can make an early |
| check (with an ASSERT) to ensure that the Executable read from a function will only |
| be treated as a FunctionExecutable (and thus the JS sepcific fields will only be |
| accessed) if the JSFunction is not a host function. |
| |
| There is one JSFunction that currently does not have an Executable, which is the |
| object created to allow us to read out the vtable pointer. By making this change |
| we can also add a new Executable type fror this object (VPtrHackExecutable). |
| Since this means that really all JSFunctions have an Executable we no longer have |
| to null-check m_executable before us it - particularly in isHostFunction(). |
| |
| This patch removes CacheableEvalExecutable, since all subclasses of ExecutableBase |
| can now be ref-counted - since both JSFunction holds (and ref-counts) an ExecutableBase |
| that might be a FunctionExecutable or a NativeExecutable. This does now mean that all |
| ProgramExecutables and EvalExecutables (unnecessarily) provide an interface to be |
| ref-counted, however this seems less-bad than host functions unnecessarily providing |
| interface to access non-host specific information. |
| |
| The class hierarcy has changed from this: |
| |
| - ExecutableBase |
| - ProgramExecutable |
| - EvalExecutable |
| - CacheableEvalExecutable (also RefCounted by multiple-inheritance) |
| - FunctionExecutable (also RefCounted by multiple-inheritance, 'special' FunctionExecutable also used for host functions) |
| |
| To this: |
| |
| - RefCounted |
| - ExecutableBase |
| - NativeExecutable |
| - VPtrHackExecutable |
| - ScriptExecutable |
| - ProgramExecutable |
| - EvalExecutable |
| - FunctionExecutable |
| |
| This patch speeds up sunspidey by a couple of ms (presumably due to the changes to isHostFunction()). |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::CodeBlock): |
| * bytecode/CodeBlock.h: |
| (JSC::CodeBlock::ownerExecutable): |
| (JSC::GlobalCodeBlock::GlobalCodeBlock): |
| * bytecode/EvalCodeCache.h: |
| (JSC::EvalCodeCache::get): |
| * debugger/Debugger.cpp: |
| (JSC::Debugger::recompileAllJSFunctions): |
| * interpreter/CachedCall.h: |
| (JSC::CachedCall::CachedCall): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::callEval): |
| (JSC::Interpreter::privateExecute): |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * profiler/Profiler.cpp: |
| (JSC::createCallIdentifierFromFunctionImp): |
| * runtime/Arguments.h: |
| (JSC::Arguments::getArgumentsData): |
| (JSC::Arguments::Arguments): |
| * runtime/Executable.cpp: |
| (JSC::NativeExecutable::~NativeExecutable): |
| (JSC::VPtrHackExecutable::~VPtrHackExecutable): |
| * runtime/Executable.h: |
| (JSC::ExecutableBase::ExecutableBase): |
| (JSC::ExecutableBase::~ExecutableBase): |
| (JSC::ExecutableBase::isHostFunction): |
| (JSC::NativeExecutable::NativeExecutable): |
| (JSC::VPtrHackExecutable::VPtrHackExecutable): |
| (JSC::ScriptExecutable::ScriptExecutable): |
| (JSC::ScriptExecutable::source): |
| (JSC::ScriptExecutable::sourceID): |
| (JSC::ScriptExecutable::sourceURL): |
| (JSC::ScriptExecutable::lineNo): |
| (JSC::ScriptExecutable::lastLine): |
| (JSC::ScriptExecutable::usesEval): |
| (JSC::ScriptExecutable::usesArguments): |
| (JSC::ScriptExecutable::needsActivation): |
| (JSC::EvalExecutable::EvalExecutable): |
| (JSC::EvalExecutable::create): |
| (JSC::ProgramExecutable::ProgramExecutable): |
| (JSC::FunctionExecutable::FunctionExecutable): |
| * runtime/FunctionPrototype.cpp: |
| (JSC::functionProtoFuncToString): |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::JSFunction): |
| (JSC::JSFunction::~JSFunction): |
| (JSC::JSFunction::markChildren): |
| (JSC::JSFunction::getCallData): |
| (JSC::JSFunction::call): |
| (JSC::JSFunction::lengthGetter): |
| (JSC::JSFunction::getConstructData): |
| (JSC::JSFunction::construct): |
| * runtime/JSFunction.h: |
| (JSC::JSFunction::executable): |
| (JSC::JSFunction::jsExecutable): |
| (JSC::JSFunction::isHostFunction): |
| |
| 2009-08-20 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Browser hangs on opening Web Inspector. |
| https://bugs.webkit.org/show_bug.cgi?id=28438 |
| |
| Code generation needs to be able to walk the entire scopechain in some |
| cases, however the symbol table used by activations was a member of the |
| codeblock. Following recompilation this may no longer exist, leading |
| to a crash or hang on lookup. |
| |
| We fix this by introducing a refcounted SymbolTable subclass, SharedSymbolTable, |
| for the CodeBlocks used by function code. This allows activations to |
| maintain ownership of a copy of the symbol table even after recompilation so |
| they can continue to work. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::CodeBlock): |
| * bytecode/CodeBlock.h: |
| (JSC::CodeBlock::symbolTable): |
| (JSC::CodeBlock::sharedSymbolTable): |
| (JSC::GlobalCodeBlock::GlobalCodeBlock): |
| (JSC::FunctionCodeBlock::FunctionCodeBlock): |
| (JSC::FunctionCodeBlock::~FunctionCodeBlock): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::retrieveArguments): |
| * runtime/Executable.cpp: |
| (JSC::EvalExecutable::generateBytecode): |
| (JSC::FunctionExecutable::generateBytecode): |
| (JSC::FunctionExecutable::reparseExceptionInfo): |
| (JSC::EvalExecutable::reparseExceptionInfo): |
| * runtime/JSActivation.h: |
| (JSC::JSActivation::JSActivationData::JSActivationData): |
| (JSC::JSActivation::JSActivationData::~JSActivationData): |
| * runtime/SymbolTable.h: |
| |
| 2009-08-20 Xan Lopez <xlopez@igalia.com> |
| |
| Add new file to GTK+ build. |
| |
| * GNUmakefile.am: |
| |
| 2009-08-20 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Added a number => string cache. |
| |
| 1.07x faster on v8 (1.7x faster on v8-splay). |
| 1.004x faster on SunSpider. |
| |
| * runtime/JSCell.h: Moved JSValue::toString to JSString.h. |
| * runtime/JSGlobalData.h: Holds the cache. |
| * runtime/JSNumberCell.cpp: |
| (JSC::JSNumberCell::toString): |
| (JSC::JSNumberCell::toThisString): Removed -0 special case. |
| UString handles this now, since too many clients were |
| special-casing it. |
| |
| * runtime/JSString.h: |
| (JSC::JSValue::toString): Use the cache when converting |
| an int or double to string. |
| |
| * runtime/Operations.h: |
| (JSC::concatenateStrings): Call toString to take advantage |
| of the cache. |
| |
| * runtime/SmallStrings.h: |
| (JSC::NumericStrings::add): |
| (JSC::NumericStrings::lookup): The cache. |
| |
| * runtime/UString.cpp: |
| (JSC::UString::from): Added -0 special case mentioned above. |
| Removed appendNumeric because it's mutually exclusive with the |
| cache. |
| |
| 2009-08-20 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| REGRESSION: fast/profiler/call.html is crashing occasionally |
| https://bugs.webkit.org/show_bug.cgi?id=28476 |
| |
| Using the codeblock for information about how many parameters and |
| locals a function has is unsafe in certain circumstances. The |
| basic scenario is all function code being cleared in response to |
| the debugger or profiler being enabled, and then an activation is |
| marked before its associated function is re-executed. |
| |
| To deal with this scenario we store the variable count of a function |
| directly in the FunctionExecutable, and then use that information. |
| |
| * runtime/Arguments.h: |
| (JSC::Arguments::getArgumentsData): |
| * runtime/Executable.cpp: |
| (JSC::FunctionExecutable::generateBytecode): |
| * runtime/Executable.h: |
| (JSC::FunctionExecutable::FunctionExecutable): |
| (JSC::FunctionExecutable::variableCount): |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::markChildren): |
| |
| 2009-08-20 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Numbering of arguments to emitGetJITStubArg/emitPutJITStubArg incorrect |
| <bug lost in the great bug disasteroony of 08/20/09!> |
| |
| The argumentNumber argument to emitGetJITStubArg/emitPutJITStubArg should match |
| the argument number used within the stub functions in JITStubs.cpp, but it doesn't. |
| |
| Firstly, all the numbers changed when we added a void* 'reserved' as the first slot |
| (rather than leaving argument 0 unused), and secondly in 32_64 builds the index to |
| peek/poke needs to be multiplies by 2 (since the argument to peek/poke is a number |
| of machine words, and on 32_64 build the argument slots to stub functions are two |
| words wide). |
| |
| * jit/JIT.h: |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallSetupArgs): |
| (JSC::JIT::compileOpConstructSetupArgs): |
| (JSC::JIT::compileOpCallVarargsSetupArgs): |
| (JSC::JIT::compileOpCall): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitPutJITStubArg): |
| (JSC::JIT::emitPutJITStubArgConstant): |
| (JSC::JIT::emitGetJITStubArg): |
| (JSC::JIT::emitPutJITStubArgFromVirtualRegister): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::privateCompilePutByIdTransition): |
| |
| 2009-08-20 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest |
| https://bugs.webkit.org/show_bug.cgi?id=28332 |
| |
| Follow up style fixes that were missed in review. |
| |
| * runtime/Structure.cpp: |
| (JSC::Structure::hasTransition): |
| * runtime/Structure.h: |
| (JSC::Structure::get): |
| (JSC::StructureTransitionTable::contains): |
| * runtime/StructureTransitionTable.h: |
| (JSC::StructureTransitionTable::add): |
| |
| 2009-08-20 Oliver Hunt <oliver@apple.com> |
| |
| Add new exports to windows jsc build |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-08-20 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest |
| https://bugs.webkit.org/show_bug.cgi?id=28332 |
| |
| The method check optimisation made transitions aware of the value being |
| assigned when a transition was assigning a function. This had the side |
| effect of making every assignment of a function expression result in a |
| new transition, and thus a new Structure. The net result of this is that |
| the common JS idiom of |
| |
| function MyObject() { |
| this.myFunction = function(...){...}; |
| } |
| new MyObject(); |
| |
| Will produce a unique structure on every iteration, meaning that all |
| caching is defeated and there is a significant amount of structure churn. |
| |
| The fix is to return the transition to its original form where it is |
| keyed off a property name + attributes tuple, but have each transition |
| support an optional transition on a specific value. |
| |
| * JavaScriptCore.exp: |
| * runtime/JSObject.h: |
| (JSC::JSObject::putDirectInternal): |
| * runtime/Structure.cpp: |
| (JSC::Structure::~Structure): |
| (JSC::Structure::addPropertyTransitionToExistingStructure): |
| (JSC::Structure::addPropertyTransition): |
| (JSC::Structure::hasTransition): |
| * runtime/Structure.h: |
| (JSC::Structure::transitionedFor): |
| (JSC::Structure::hasTransition): |
| (JSC::Structure::): |
| (JSC::StructureTransitionTable::contains): |
| (JSC::StructureTransitionTable::get): |
| * runtime/StructureTransitionTable.h: |
| (JSC::StructureTransitionTableHashTraits::emptyValue): |
| (JSC::StructureTransitionTable::hasTransition): |
| (JSC::StructureTransitionTable::remove): |
| (JSC::StructureTransitionTable::add): |
| |
| 2009-08-20 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Remove FunctionCodeBlock. |
| https://bugs.webkit.org/show_bug.cgi?id=28502 |
| |
| These only exist to allow JIT code to dereference properties off the |
| CodeBlock for any callee, regardless of whether it is a host function. |
| |
| Instead just use the FunctionExecutable. Copy the m_parameters field |
| from the CodeBlock into the Executable, and use this to distinguish |
| between host functions, functions that have been bytecompiled, and |
| functions that have not. |
| |
| m_parameters is moved to ExecutableBase rather than FunctionExecutable |
| so that (as a separate change) we can move make a separate class of |
| executable for host code, which is not devived from FunctionExecutable |
| (host code does not feature any of the properties that normal executable |
| do and will provide, such as source, attributes, and a parsed name). |
| |
| 1% win on v8 tests, 0.5% on sunspider. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::derefStructures): |
| (JSC::CodeBlock::refStructures): |
| (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): |
| (JSC::CodeBlock::handlerForBytecodeOffset): |
| (JSC::CodeBlock::lineNumberForBytecodeOffset): |
| (JSC::CodeBlock::expressionRangeForBytecodeOffset): |
| (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset): |
| (JSC::CodeBlock::functionRegisterForBytecodeOffset): |
| (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset): |
| (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset): |
| * bytecode/CodeBlock.h: |
| (JSC::): |
| (JSC::CodeBlock::source): |
| (JSC::CodeBlock::sourceOffset): |
| (JSC::CodeBlock::evalCodeCache): |
| (JSC::CodeBlock::createRareDataIfNecessary): |
| |
| remove NativeCodeBlocks and the NativeCode code type. |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::linkCall): |
| |
| Revert to previous behaviour (as currently still commented!) that Hhost functions have a null codeblock. |
| |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallInitializeCallFrame): |
| (JSC::JIT::compileOpCallSetupArgs): |
| (JSC::JIT::compileOpCallVarargsSetupArgs): |
| (JSC::JIT::compileOpConstructSetupArgs): |
| (JSC::JIT::compileOpCallVarargs): |
| (JSC::JIT::compileOpCall): |
| (JSC::JIT::compileOpCallSlowCase): |
| |
| Bring the 32_64 & non-32_64 JITs into line with each other, callee in regT0. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| |
| Rewrite call trampolines to not use the CodeBlock. |
| |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| |
| Make call_JSFunction & call_arityCheck return the callee, don't expect to be passed the CodeBlock. |
| |
| * runtime/Executable.cpp: |
| (JSC::FunctionExecutable::generateBytecode): |
| (JSC::FunctionExecutable::recompile): |
| (JSC::FunctionExecutable::FunctionExecutable): |
| * runtime/Executable.h: |
| (JSC::ExecutableBase::): |
| (JSC::ExecutableBase::ExecutableBase): |
| (JSC::FunctionExecutable::isHostFunction): |
| |
| Add m_numParameters. |
| |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::~JSFunction): |
| |
| Only call generatedBytecode() on JSFunctions non-host FunctionExecutables. |
| |
| 2009-08-20 Yongjun Zhang <yongjun.zhang@nokia.com> |
| |
| Reviewed by Eric Seidel. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=28054 |
| |
| Use a helper function to work around winscw compiler forward declaration bug |
| regarding templated classes. |
| |
| Add parenthesis around (PassRefPtr::*UnspecifiedBoolType) to make winscw compiler |
| work with the default UnSpecifiedBoolType() operator, which removes the winscw |
| specific bool cast hack. |
| |
| * wtf/PassRefPtr.h: |
| (WTF::derefIfNotNull): |
| (WTF::PassRefPtr::~PassRefPtr): |
| |
| 2009-08-19 Yong Li <yong.li@torchmobile.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Change namespace ARM to ARMRegisters |
| X86 to X86Registers to avoid conflict with macros |
| https://bugs.webkit.org/show_bug.cgi?id=28428 |
| |
| * assembler/ARMAssembler.cpp: |
| * assembler/ARMAssembler.h: |
| * assembler/ARMv7Assembler.h: |
| * assembler/MacroAssemblerARM.h: |
| * assembler/MacroAssemblerARMv7.h: |
| * assembler/MacroAssemblerX86Common.h: |
| * assembler/MacroAssemblerX86_64.h: |
| * assembler/X86Assembler.h: |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| * jit/JITInlineMethods.h: |
| * jit/JITOpcodes.cpp: |
| * wrec/WRECGenerator.cpp: |
| * wrec/WRECGenerator.h: |
| * yarr/RegexJIT.cpp: |
| |
| 2009-08-19 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Devirtualise marking |
| https://bugs.webkit.org/show_bug.cgi?id=28294 |
| |
| We actually need to mark the value in a number object if we're using the |
| 32bit number representation. |
| |
| * runtime/NumberObject.h: |
| (JSC::NumberObject::createStructure): |
| |
| 2009-08-19 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| We probably shouldn't be keeping the AST for eval nodes around forevar. |
| https://bugs.webkit.org/show_bug.cgi?id=28469 |
| |
| EvalNodes don't destroyData() (delete their parser data) since they need to hold onto |
| their varStack. Copy a list of variable onto EvalCodeBlock, and this can go away. |
| |
| * bytecode/CodeBlock.h: |
| (JSC::EvalCodeBlock::variable): |
| (JSC::EvalCodeBlock::numVariables): |
| (JSC::EvalCodeBlock::adoptVariables): |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::BytecodeGenerator): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::execute): |
| * parser/Nodes.h: |
| * runtime/Executable.cpp: |
| (JSC::EvalExecutable::generateBytecode): |
| * runtime/Executable.h: |
| |
| 2009-08-19 Jungshik Shin <jshin@chromium.org> |
| |
| Reviewed by Darin Adler. |
| |
| http://bugs.webkit.org/show_bug.cgi?id=28441 |
| |
| Fix a build issue with ICU 4.2 or later on Windows with Visual C++. |
| Instead of defining all isXXX and toupper/tolower as |
| WTF_Please_use_ASCIICType_instead_of_ctype_see_comment_in_ASCIICType_h, |
| #define them to be different by prepending 'WTF_...ASCIIType_h' with |
| the originial names like 'toupper_WTF_...ASCIIType_h'. |
| |
| * wtf/DisallowCType.h: |
| |
| 2009-08-18 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Assigning a function to an object should always use the existing transition, even if the transition is not specialized |
| https://bugs.webkit.org/show_bug.cgi?id=28442 |
| |
| Check for an unspecialized transition as an alternative to always failing if specialisation does not match. |
| |
| * runtime/Structure.cpp: |
| (JSC::Structure::addPropertyTransitionToExistingStructure): |
| |
| 2009-08-18 Dirk Schulze <krit@webkit.org> |
| |
| Reviewed by Oliver Hunt. |
| |
| Added additional getter to ByteArray with an unsigned char as return. |
| ByteArray can take unsigned char directly now. |
| |
| * wtf/ByteArray.h: |
| (WTF::ByteArray::set): |
| (WTF::ByteArray::get): |
| |
| 2009-08-18 Peter Kasting <pkasting@google.com> |
| |
| Reviewed by Eric Seidel. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=28415 |
| Set svn:eol-style CRLF on all .sln and .vcproj files that don't already |
| have it. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: |
| * JavaScriptCore.vcproj/testapi/testapi.vcproj: |
| |
| 2009-08-18 Xan Lopez <xlopez@igalia.com> |
| |
| Try to fix the GTK+ build. |
| |
| * GNUmakefile.am: |
| |
| 2009-08-17 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| No, silly runtime, AST nodes are not for you. |
| |
| We still use AST nodes (ScopeNodes, particularly FunctionBodyNodes) within |
| the runtime, which means that these nodes must be persisted outside of the |
| arena, contain both parser & runtime data, etc. This is all a bit of a mess. |
| |
| Move functionality into a new FunctionExecutable class. |
| |
| * API/JSCallbackFunction.cpp: |
| * API/JSObjectRef.cpp: |
| * JavaScriptCore.exp: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::CodeBlock): |
| (JSC::CodeBlock::markAggregate): |
| (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): |
| (JSC::CodeBlock::lineNumberForBytecodeOffset): |
| (JSC::CodeBlock::shrinkToFit): |
| * bytecode/CodeBlock.h: |
| (JSC::CodeBlock::getBytecodeIndex): |
| (JSC::CodeBlock::discardBytecode): |
| (JSC::CodeBlock::instructionCount): |
| (JSC::CodeBlock::getJITCode): |
| (JSC::CodeBlock::executablePool): |
| (JSC::CodeBlock::ownerExecutable): |
| (JSC::CodeBlock::extractExceptionInfo): |
| (JSC::CodeBlock::addFunctionDecl): |
| (JSC::CodeBlock::functionDecl): |
| (JSC::CodeBlock::numberOfFunctionDecls): |
| (JSC::CodeBlock::addFunctionExpr): |
| (JSC::CodeBlock::functionExpr): |
| (JSC::GlobalCodeBlock::GlobalCodeBlock): |
| (JSC::ProgramCodeBlock::ProgramCodeBlock): |
| (JSC::EvalCodeBlock::EvalCodeBlock): |
| (JSC::FunctionCodeBlock::FunctionCodeBlock): |
| (JSC::NativeCodeBlock::NativeCodeBlock): |
| * bytecode/EvalCodeCache.h: |
| * bytecode/SamplingTool.cpp: |
| (JSC::SamplingTool::doRun): |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::BytecodeGenerator): |
| (JSC::BytecodeGenerator::emitNewFunction): |
| (JSC::BytecodeGenerator::emitNewFunctionExpression): |
| * bytecompiler/BytecodeGenerator.h: |
| * debugger/Debugger.cpp: |
| (JSC::Debugger::recompileAllJSFunctions): |
| * interpreter/CachedCall.h: |
| (JSC::CachedCall::CachedCall): |
| * interpreter/CallFrameClosure.h: |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::unwindCallFrame): |
| (JSC::Interpreter::throwException): |
| (JSC::Interpreter::execute): |
| (JSC::Interpreter::prepareForRepeatCall): |
| (JSC::Interpreter::debug): |
| (JSC::Interpreter::privateExecute): |
| (JSC::Interpreter::retrieveLastCaller): |
| * interpreter/Interpreter.h: |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompile): |
| * jit/JIT.h: |
| (JSC::JIT::compile): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| (JSC::JIT::emit_op_new_func): |
| (JSC::JIT::emit_op_new_func_exp): |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * jit/JITStubs.h: |
| (JSC::): |
| * parser/Nodes.cpp: |
| (JSC::FunctionBodyNode::reparseDataIfNecessary): |
| * parser/Nodes.h: |
| (JSC::EvalNode::partialDestroyData): |
| * parser/Parser.h: |
| * profiler/ProfileGenerator.cpp: |
| * profiler/Profiler.cpp: |
| (JSC::Profiler::createCallIdentifier): |
| (JSC::createCallIdentifierFromFunctionImp): |
| * runtime/Arguments.h: |
| (JSC::Arguments::getArgumentsData): |
| (JSC::Arguments::Arguments): |
| (JSC::JSActivation::copyRegisters): |
| * runtime/ArrayPrototype.cpp: |
| (JSC::isNumericCompareFunction): |
| * runtime/CallData.h: |
| (JSC::): |
| * runtime/Collector.cpp: |
| (JSC::Heap::collect): |
| * runtime/ConstructData.h: |
| (JSC::): |
| * runtime/ExceptionHelpers.cpp: |
| (JSC::createUndefinedVariableError): |
| (JSC::createInvalidParamError): |
| (JSC::createNotAConstructorError): |
| (JSC::createNotAFunctionError): |
| (JSC::createNotAnObjectError): |
| * runtime/Executable.cpp: Added. |
| (JSC::EvalExecutable::generateBytecode): |
| (JSC::ProgramExecutable::generateBytecode): |
| (JSC::FunctionExecutable::generateBytecode): |
| (JSC::EvalExecutable::generateJITCode): |
| (JSC::ProgramExecutable::generateJITCode): |
| (JSC::FunctionExecutable::generateJITCode): |
| (JSC::FunctionExecutable::isHostFunction): |
| (JSC::FunctionExecutable::markAggregate): |
| (JSC::FunctionExecutable::reparseExceptionInfo): |
| (JSC::EvalExecutable::reparseExceptionInfo): |
| (JSC::FunctionExecutable::recompile): |
| (JSC::FunctionExecutable::FunctionExecutable): |
| * runtime/Executable.h: |
| (JSC::ExecutableBase::~ExecutableBase): |
| (JSC::ExecutableBase::ExecutableBase): |
| (JSC::ExecutableBase::source): |
| (JSC::ExecutableBase::sourceID): |
| (JSC::ExecutableBase::lastLine): |
| (JSC::ExecutableBase::usesEval): |
| (JSC::ExecutableBase::usesArguments): |
| (JSC::ExecutableBase::needsActivation): |
| (JSC::ExecutableBase::astNode): |
| (JSC::ExecutableBase::generatedJITCode): |
| (JSC::ExecutableBase::getExecutablePool): |
| (JSC::EvalExecutable::EvalExecutable): |
| (JSC::EvalExecutable::bytecode): |
| (JSC::EvalExecutable::varStack): |
| (JSC::EvalExecutable::evalNode): |
| (JSC::EvalExecutable::jitCode): |
| (JSC::ProgramExecutable::ProgramExecutable): |
| (JSC::ProgramExecutable::reparseExceptionInfo): |
| (JSC::ProgramExecutable::bytecode): |
| (JSC::ProgramExecutable::programNode): |
| (JSC::ProgramExecutable::jitCode): |
| (JSC::FunctionExecutable::FunctionExecutable): |
| (JSC::FunctionExecutable::name): |
| (JSC::FunctionExecutable::bytecode): |
| (JSC::FunctionExecutable::generatedBytecode): |
| (JSC::FunctionExecutable::usesEval): |
| (JSC::FunctionExecutable::usesArguments): |
| (JSC::FunctionExecutable::parameterCount): |
| (JSC::FunctionExecutable::paramString): |
| (JSC::FunctionExecutable::isGenerated): |
| (JSC::FunctionExecutable::body): |
| (JSC::FunctionExecutable::jitCode): |
| (JSC::FunctionExecutable::createNativeThunk): |
| * runtime/FunctionConstructor.cpp: |
| (JSC::constructFunction): |
| * runtime/FunctionPrototype.cpp: |
| (JSC::functionProtoFuncToString): |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::JSActivation): |
| (JSC::JSActivation::markChildren): |
| (JSC::JSActivation::isDynamicScope): |
| (JSC::JSActivation::argumentsGetter): |
| * runtime/JSActivation.h: |
| (JSC::JSActivation::JSActivationData::JSActivationData): |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::isHostFunction): |
| (JSC::JSFunction::JSFunction): |
| (JSC::JSFunction::~JSFunction): |
| (JSC::JSFunction::markChildren): |
| (JSC::JSFunction::getCallData): |
| (JSC::JSFunction::call): |
| (JSC::JSFunction::lengthGetter): |
| (JSC::JSFunction::getConstructData): |
| (JSC::JSFunction::construct): |
| * runtime/JSFunction.h: |
| (JSC::JSFunction::executable): |
| (JSC::FunctionExecutable::make): |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| (JSC::JSGlobalData::numericCompareFunction): |
| * runtime/JSGlobalData.h: |
| |
| 2009-08-17 Mark Rowe <mrowe@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Fix 300,000+ leaks seen during the regression tests. |
| |
| EvalCodeCache::get was heap-allocating an EvalExecutable instance without adopting the initial reference. |
| While fixing this we noticed that EvalExecutable was a RefCounted type that was sometimes stack allocated. |
| To make this cleaner and to prevent clients from attempting to ref a stack-allocated instance, we move the |
| refcounting down to a new CacheableEvalExecutable class that derives from EvalExecutable. EvalCodeCache::get |
| now uses CacheableEvalExecutable::create and avoids the leak. |
| |
| * bytecode/EvalCodeCache.h: |
| (JSC::EvalCodeCache::get): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::callEval): |
| * runtime/Executable.h: |
| (JSC::CacheableEvalExecutable::create): |
| (JSC::CacheableEvalExecutable::CacheableEvalExecutable): |
| |
| 2009-08-17 Oliver Hunt <oliver@apple.com> |
| |
| RS=Mark Rowe. |
| |
| REGRESSION (r47292): Prototype.js is broken by ES5 Arguments changes |
| https://bugs.webkit.org/show_bug.cgi?id=28341 |
| <rdar://problem/7145615> |
| |
| Reverting r47292. Alas Prototype.js breaks with Arguments inheriting |
| from Array as ES5 attempted. Prototype.js defines $A in terms of a |
| function it places on (among other global objects) the Array prototype, |
| thus breaking $A for arrays. |
| |
| * runtime/Arguments.h: |
| (JSC::Arguments::Arguments): |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::reset): |
| (JSC::JSGlobalObject::markChildren): |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): |
| * runtime/ObjectPrototype.cpp: |
| (JSC::ObjectPrototype::ObjectPrototype): |
| * runtime/ObjectPrototype.h: |
| * tests/mozilla/ecma_3/Function/arguments-001.js: |
| |
| 2009-08-17 Peter Kasting <pkasting@google.com> |
| |
| Reviewed by Steve Falkenburg. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27323 |
| Only add Cygwin to the path when it isn't already there. This avoids |
| causing problems for people who purposefully have non-Cygwin versions of |
| executables like svn in front of the Cygwin ones in their paths. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: |
| * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: |
| * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: |
| |
| 2009-08-17 Xan Lopez <xlopez@igalia.com> |
| |
| Reviewed by Mark Rowe. |
| |
| Fix build with FAST_MALLOC_MATCH_VALIDATION enabled. |
| |
| * wtf/FastMalloc.cpp: |
| (WTF::fastMalloc): |
| (WTF::fastCalloc): |
| (WTF::fastRealloc): |
| |
| 2009-08-16 Holger Hans Peter Freyther <zecke@selfish.org> |
| |
| Reviewed by Mark Rowe. |
| |
| Fix crash on ./ecma_2/RegExp/exec-002.js. |
| https://bugs.webkit.org/show_bug.cgi?id=28353 |
| |
| Change the order of freeParenthesesDisjunctionContext and |
| popParenthesesDisjunctionContext on all call sites as the pop |
| method is accessing backTrack->lastContext which is the context |
| that is about to be freed. |
| |
| * yarr/RegexInterpreter.cpp: |
| (JSC::Yarr::Interpreter::parenthesesDoBacktrack): |
| (JSC::Yarr::Interpreter::backtrackParentheses): |
| |
| 2009-08-16 Holger Hans Peter Freyther <zecke@selfish.org> |
| |
| Reviewed by Mark Rowe. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=28352 |
| |
| Fix coding style violations. Use m_ for C++ class members. Remove |
| trailing whitespace on empty lines. |
| |
| * yarr/RegexInterpreter.cpp: |
| (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::ParenthesesDisjunctionContext): |
| (JSC::Yarr::Interpreter::tryConsumeCharacter): |
| (JSC::Yarr::Interpreter::tryConsumeBackReference): |
| (JSC::Yarr::Interpreter::parenthesesDoBacktrack): |
| (JSC::Yarr::Interpreter::backtrackParentheses): |
| (JSC::Yarr::ByteCompiler::ByteCompiler): |
| (JSC::Yarr::ByteCompiler::compile): |
| (JSC::Yarr::ByteCompiler::checkInput): |
| (JSC::Yarr::ByteCompiler::assertionBOL): |
| (JSC::Yarr::ByteCompiler::assertionEOL): |
| (JSC::Yarr::ByteCompiler::assertionWordBoundary): |
| (JSC::Yarr::ByteCompiler::atomPatternCharacter): |
| (JSC::Yarr::ByteCompiler::atomCharacterClass): |
| (JSC::Yarr::ByteCompiler::atomBackReference): |
| (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin): |
| (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin): |
| (JSC::Yarr::ByteCompiler::popParenthesesStack): |
| (JSC::Yarr::ByteCompiler::closeAlternative): |
| (JSC::Yarr::ByteCompiler::closeBodyAlternative): |
| (JSC::Yarr::ByteCompiler::atomParenthesesEnd): |
| (JSC::Yarr::ByteCompiler::regexBegin): |
| (JSC::Yarr::ByteCompiler::alterantiveBodyDisjunction): |
| (JSC::Yarr::ByteCompiler::alterantiveDisjunction): |
| (JSC::Yarr::ByteCompiler::emitDisjunction): |
| |
| 2009-08-15 Mark Rowe <mrowe@apple.com> |
| |
| Fix the build with JIT disabled. |
| |
| * runtime/Arguments.h: Only compile the jitCode method when the JIT is enabled. |
| * runtime/Executable.h: Include PrototypeFunction.h so the compiler knows what |
| NativeFunctionWrapper is when the JIT is disabled. |
| |
| 2009-08-15 Adam Bergkvist <adam.bergkvist@ericsson.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Added ENABLE_EVENTSOURCE flag. |
| https://bugs.webkit.org/show_bug.cgi?id=14997 |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2009-08-14 Gavin Barraclough <barraclough@apple.com> |
| |
| * parser/Parser.h: |
| (JSC::EvalExecutable::parse): |
| (JSC::ProgramExecutable::parse): |
| * runtime/Executable.h: |
| |
| 2009-08-14 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Remove AST nodes from use within the Runtime (outside of parsing), stage 1 |
| https://bugs.webkit.org/show_bug.cgi?id=28330 |
| |
| Remove the EvalNode and ProgramNode from use in the runtime. They still exist |
| after this patch, but are hidden behind EvalExecutable and FunctionExecutable, |
| and are also still reachable behind CodeBlock::m_ownerNode. |
| |
| The next step will be to beat back FunctionBodyNode in the same fashion. |
| Then remove the usage via CodeBlock, then only construct these nodes only on |
| demand during bytecode generation. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * bytecode/CodeBlock.h: |
| (JSC::GlobalCodeBlock::GlobalCodeBlock): |
| (JSC::GlobalCodeBlock::~GlobalCodeBlock): |
| (JSC::ProgramCodeBlock::ProgramCodeBlock): |
| (JSC::EvalCodeBlock::EvalCodeBlock): |
| (JSC::FunctionCodeBlock::FunctionCodeBlock): |
| (JSC::NativeCodeBlock::NativeCodeBlock): |
| * bytecode/EvalCodeCache.h: |
| (JSC::EvalCodeCache::get): |
| * debugger/Debugger.cpp: |
| (JSC::evaluateInGlobalCallFrame): |
| * debugger/DebuggerCallFrame.cpp: |
| (JSC::DebuggerCallFrame::evaluate): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::callEval): |
| (JSC::Interpreter::execute): |
| * interpreter/Interpreter.h: |
| * parser/Nodes.cpp: |
| (JSC::FunctionBodyNode::createNativeThunk): |
| (JSC::FunctionBodyNode::generateBytecode): |
| (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse): |
| * parser/Parser.h: |
| (JSC::Parser::parse): |
| (JSC::Parser::reparse): |
| (JSC::Parser::parseFunctionFromGlobalCode): |
| (JSC::::parse): |
| * runtime/Completion.cpp: |
| (JSC::checkSyntax): |
| (JSC::evaluate): |
| * runtime/Error.cpp: |
| (JSC::throwError): |
| * runtime/Error.h: |
| * runtime/Executable.h: Added. |
| (JSC::TemplateExecutable::TemplateExecutable): |
| (JSC::TemplateExecutable::markAggregate): |
| (JSC::TemplateExecutable::sourceURL): |
| (JSC::TemplateExecutable::lineNo): |
| (JSC::TemplateExecutable::bytecode): |
| (JSC::TemplateExecutable::jitCode): |
| (JSC::EvalExecutable::EvalExecutable): |
| (JSC::ProgramExecutable::ProgramExecutable): |
| * runtime/FunctionConstructor.cpp: |
| (JSC::constructFunction): |
| * runtime/FunctionConstructor.h: |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::numericCompareFunction): |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::~JSGlobalObject): |
| (JSC::JSGlobalObject::markChildren): |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::codeBlocks): |
| * runtime/JSGlobalObjectFunctions.cpp: |
| (JSC::globalFuncEval): |
| |
| 2009-08-14 Darin Adler <darin@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Rename the confusing isObject(<class>) to inherits(<class>). |
| It still works on non-objects, returning false. |
| |
| * runtime/ArrayConstructor.cpp: |
| (JSC::arrayConstructorIsArray): Removed unneeded isObject call |
| and updated remaining isObject call to new name, inherits. |
| |
| * runtime/JSCell.h: Renamed isObject(<class>) to inherits(<class>) |
| but more importantly, made it non-virtual (it was already inline) |
| so it is now as fast as JSObject::inherits was. |
| |
| * runtime/JSObject.h: Removed inherits function since the one |
| in the base class is fine as-is. Also made various JSCell functions |
| that should not be called on JSObject uncallable by making them |
| both private and not implemented. |
| (JSC::JSCell::inherits): Updated name. |
| (JSC::JSValue::inherits): Ditto. |
| |
| * debugger/Debugger.cpp: |
| (JSC::Debugger::recompileAllJSFunctions): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::unwindCallFrame): |
| * runtime/ArrayPrototype.cpp: |
| (JSC::arrayProtoFuncToString): |
| (JSC::arrayProtoFuncToLocaleString): |
| (JSC::arrayProtoFuncConcat): |
| * runtime/BooleanPrototype.cpp: |
| (JSC::booleanProtoFuncToString): |
| (JSC::booleanProtoFuncValueOf): |
| * runtime/DateConstructor.cpp: |
| (JSC::constructDate): |
| * runtime/DatePrototype.cpp: |
| (JSC::dateProtoFuncToString): |
| (JSC::dateProtoFuncToUTCString): |
| (JSC::dateProtoFuncToISOString): |
| (JSC::dateProtoFuncToDateString): |
| (JSC::dateProtoFuncToTimeString): |
| (JSC::dateProtoFuncToLocaleString): |
| (JSC::dateProtoFuncToLocaleDateString): |
| (JSC::dateProtoFuncToLocaleTimeString): |
| (JSC::dateProtoFuncGetTime): |
| (JSC::dateProtoFuncGetFullYear): |
| (JSC::dateProtoFuncGetUTCFullYear): |
| (JSC::dateProtoFuncToGMTString): |
| (JSC::dateProtoFuncGetMonth): |
| (JSC::dateProtoFuncGetUTCMonth): |
| (JSC::dateProtoFuncGetDate): |
| (JSC::dateProtoFuncGetUTCDate): |
| (JSC::dateProtoFuncGetDay): |
| (JSC::dateProtoFuncGetUTCDay): |
| (JSC::dateProtoFuncGetHours): |
| (JSC::dateProtoFuncGetUTCHours): |
| (JSC::dateProtoFuncGetMinutes): |
| (JSC::dateProtoFuncGetUTCMinutes): |
| (JSC::dateProtoFuncGetSeconds): |
| (JSC::dateProtoFuncGetUTCSeconds): |
| (JSC::dateProtoFuncGetMilliSeconds): |
| (JSC::dateProtoFuncGetUTCMilliseconds): |
| (JSC::dateProtoFuncGetTimezoneOffset): |
| (JSC::dateProtoFuncSetTime): |
| (JSC::setNewValueFromTimeArgs): |
| (JSC::setNewValueFromDateArgs): |
| (JSC::dateProtoFuncSetYear): |
| (JSC::dateProtoFuncGetYear): |
| * runtime/FunctionPrototype.cpp: |
| (JSC::functionProtoFuncToString): |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::argumentsGetter): |
| * runtime/JSValue.h: |
| * runtime/RegExpConstructor.cpp: |
| (JSC::constructRegExp): |
| * runtime/RegExpPrototype.cpp: |
| (JSC::regExpProtoFuncTest): |
| (JSC::regExpProtoFuncExec): |
| (JSC::regExpProtoFuncCompile): |
| (JSC::regExpProtoFuncToString): |
| * runtime/ScopeChain.cpp: |
| (JSC::ScopeChain::localDepth): |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncReplace): |
| (JSC::stringProtoFuncToString): |
| (JSC::stringProtoFuncMatch): |
| (JSC::stringProtoFuncSearch): |
| (JSC::stringProtoFuncSplit): |
| Updated to new name, inherits, from old name, isObject. |
| |
| 2009-07-31 Harald Fernengel <harald.fernengel@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Adding QNX as a platform. Currently only tested with Qt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27885 |
| |
| * JavaScriptCore/runtime/Collector.cpp: Added retrieving of stack base |
| since QNX doesn't have the pthread _nt functions |
| * JavaScriptCore/wtf/Platform.h: Added WTF_PLATFORM_QNX and corresponding |
| defines |
| * WebCore/bridge/npapi.h: Build fix for missing typedefs on QNX |
| |
| 2009-08-14 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Simon Hausmann. |
| |
| Currently generic ARM and ARMv7 platforms work only with JSVALUE32 |
| https://bugs.webkit.org/show_bug.cgi?id=28300 |
| |
| * wtf/Platform.h: |
| |
| 2009-08-14 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Simon Hausmann. |
| |
| Enable JIT on ARM for QT by default |
| https://bugs.webkit.org/show_bug.cgi?id=28259 |
| |
| * wtf/Platform.h: |
| |
| 2009-08-14 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Simon Hausmann. |
| |
| Enable YARR_JIT on ARM for QT by default |
| https://bugs.webkit.org/show_bug.cgi?id=28259 |
| |
| * wtf/Platform.h: |
| |
| 2009-08-14 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| [ES5] Arguments object should inherit from Array |
| https://bugs.webkit.org/show_bug.cgi?id=28298 |
| |
| Make the Arguments object conform to the behaviour specified in ES5. |
| The simple portion of this is to make Arguments use Array.prototype |
| as its prototype rather than Object.prototype. |
| |
| The spec then requires us to set instance.constructor to the pristine |
| Object constructor, and instance.toString and instance.toLocaleString |
| to the pristine versions from Object.prototype. To do this we now |
| make the ObjectPrototype constructor return its toString and |
| toLocaleString functions (similar to the call and apply functions |
| from FunctionPrototype). |
| |
| Oddly enough this reports itself as a slight win, but given the code |
| isn't hit in the tests that claim to have improved I put this down to |
| code motion. |
| |
| * runtime/Arguments.h: |
| (JSC::Arguments::Arguments): |
| (JSC::Arguments::initializeStandardProperties): |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::reset): |
| (JSC::JSGlobalObject::markChildren): |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): |
| (JSC::JSGlobalObject::objectConstructor): |
| (JSC::JSGlobalObject::objectToStringFunction): |
| (JSC::JSGlobalObject::objectToLocaleStringFunction): |
| * runtime/ObjectPrototype.cpp: |
| (JSC::ObjectPrototype::ObjectPrototype): |
| * runtime/ObjectPrototype.h: |
| * tests/mozilla/ecma_3/Function/arguments-001.js: |
| Update test to new es5 behaviour |
| |
| 2009-08-14 Oliver Hunt <oliver@apple.com> |
| |
| Remove MarkStack::drain from the JSC exports file |
| |
| MarkStack::drain is now marked inline, the including it in the exports file |
| produces an ld warning |
| |
| * JavaScriptCore.exp: |
| |
| 2009-08-13 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Oliver Hunt. |
| |
| Remove accidentally left in debugging statement. |
| |
| * runtime/JSArray.h: |
| (JSC::MarkStack::drain): |
| |
| 2009-08-13 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| [ES5] Implement Array.isArray |
| https://bugs.webkit.org/show_bug.cgi?id=28296 |
| |
| Add support for Array.isArray to the Array constructor |
| |
| * runtime/ArrayConstructor.cpp: |
| (JSC::ArrayConstructor::ArrayConstructor): |
| (JSC::arrayConstructorIsArray): |
| * runtime/ArrayConstructor.h: |
| * runtime/CommonIdentifiers.h: |
| * runtime/JSArray.h: |
| (JSC::MarkStack::drain): |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::reset): |
| |
| 2009-08-13 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by NOBODY (Buildfix). |
| |
| Attempt to fix windows build |
| |
| * runtime/Collector.cpp: |
| |
| 2009-08-13 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Devirtualise marking |
| https://bugs.webkit.org/show_bug.cgi?id=28294 |
| |
| Add a bit to TypeInfo to indicate that an object uses the standard |
| JSObject::markChildren method. This allows us to devirtualise marking |
| of most objects (though a branch is still needed). We also add a branch |
| to identify arrays thus devirtualising marking in that case as well. |
| |
| In order to make the best use of this devirtualisation I've also reworked |
| the MarkStack::drain() logic to make the iteration more efficient. |
| |
| * API/JSCallbackConstructor.h: |
| (JSC::JSCallbackConstructor::createStructure): |
| * API/JSCallbackFunction.h: |
| (JSC::JSCallbackFunction::createStructure): |
| * JavaScriptCore.exp: |
| * runtime/BooleanObject.h: |
| (JSC::BooleanObject::createStructure): |
| * runtime/FunctionPrototype.h: |
| (JSC::FunctionPrototype::createStructure): |
| * runtime/InternalFunction.h: |
| (JSC::InternalFunction::createStructure): |
| * runtime/JSAPIValueWrapper.h: |
| (JSC::JSAPIValueWrapper::JSAPIValueWrapper): |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::markChildren): |
| * runtime/JSArray.h: |
| (JSC::JSArray::markChildrenDirect): |
| (JSC::MarkStack::drain): |
| * runtime/JSByteArray.cpp: |
| (JSC::JSByteArray::createStructure): |
| * runtime/JSCell.h: |
| (JSC::MarkStack::append): |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| * runtime/JSNumberCell.h: |
| (JSC::JSNumberCell::createStructure): |
| * runtime/JSONObject.h: |
| (JSC::JSONObject::createStructure): |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::markChildren): |
| * runtime/JSObject.h: |
| (JSC::JSObject::markChildrenDirect): |
| (JSC::JSObject::createStructure): |
| * runtime/JSString.h: |
| (JSC::JSString::createStructure): |
| * runtime/JSType.h: |
| (JSC::): |
| * runtime/MarkStack.h: |
| (JSC::MarkStack::MarkStack): |
| (JSC::MarkStack::MarkSet::MarkSet): |
| (JSC::MarkStack::MarkStackArray::last): |
| * runtime/MathObject.h: |
| (JSC::MathObject::createStructure): |
| * runtime/NumberConstructor.h: |
| (JSC::NumberConstructor::createStructure): |
| * runtime/NumberObject.h: |
| (JSC::NumberObject::createStructure): |
| * runtime/RegExpConstructor.h: |
| (JSC::RegExpConstructor::createStructure): |
| * runtime/RegExpObject.h: |
| (JSC::RegExpObject::createStructure): |
| * runtime/StringObjectThatMasqueradesAsUndefined.h: |
| (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): |
| * runtime/TypeInfo.h: |
| (JSC::TypeInfo::hasDefaultMark): |
| |
| 2009-08-13 Darin Adler <darin@apple.com> |
| |
| Reviewed by Mark Rowe. |
| |
| Some small bits of housekeeping. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: Make Parser.h |
| project instead of private. Remove JSONObject.lut.h. |
| |
| * assembler/ARMAssembler.h: Remove unneeded WTF prefix. |
| * assembler/AssemblerBufferWithConstantPool.h: Ditto. |
| * bytecompiler/BytecodeGenerator.h: Ditto. |
| |
| * wtf/SegmentedVector.h: Add a "using" statement as we do |
| with the other WTF headers. |
| |
| 2009-08-13 Darin Adler <darin@apple.com> |
| |
| Fix Tiger build. |
| |
| * parser/Grammar.y: Use a template function so we can compile |
| setStatementLocation even if it comes before YYLTYPE is defined. |
| |
| 2009-08-13 Darin Adler <darin@apple.com> |
| |
| Reviewed by George Staikos. |
| |
| Too much use of void* in Grammar.y |
| https://bugs.webkit.org/show_bug.cgi?id=28287 |
| |
| * parser/Grammar.y: Changed all the helper functions to |
| take a JSGlobalData* instead of a void*. A couple formatting |
| tweaks that I missed when breaking this into pieces. |
| |
| 2009-08-13 Darin Adler <darin@apple.com> |
| |
| Reviewed by George Staikos. |
| |
| Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 |
| |
| * parser/Grammar.y: Reduced and sorted includes. Tweaked comment |
| format. Marked a few more functions inline. |
| |
| 2009-08-13 Darin Adler <darin@apple.com> |
| |
| Reviewed by George Staikos. |
| |
| Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 |
| |
| * parser/Grammar.y: Pass the number to the PropertyNode instead of |
| first turning it into an Identifier. |
| |
| * parser/NodeConstructors.h: |
| (JSC::PropertyNode::PropertyNode): Add an overload that takes a double |
| so the code to convert to a string can be here instead of Grammar.y. |
| * parser/Nodes.h: Ditto. |
| |
| 2009-08-13 Darin Adler <darin@apple.com> |
| |
| Reviewed by George Staikos. |
| |
| Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 |
| |
| * parser/Grammar.y: Eliminate the DBG macro. |
| |
| 2009-08-13 Darin Adler <darin@apple.com> |
| |
| Reviewed by George Staikos. |
| |
| Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 |
| |
| * parser/Grammar.y: Eliminate the SET_EXCEPTION_LOCATION macro. |
| |
| 2009-08-13 Darin Adler <darin@apple.com> |
| |
| Reviewed by George Staikos. |
| |
| George asked me to break the patch from |
| https://bugs.webkit.org/show_bug.cgi?id=28287 |
| into smaller pieces and land it in stages. |
| |
| * parser/Grammar.y: Eliminate the LEXER macro. |
| |
| 2009-08-13 Mark Rowe <mrowe@apple.com> |
| |
| Try some more to fix the Windows build. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto. |
| |
| 2009-08-13 Mark Rowe <mrowe@apple.com> |
| |
| Try and fix the Windows build. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto. |
| |
| 2009-08-13 Darin Adler <darin@apple.com> |
| |
| Reviewed by David Levin. |
| |
| JavaScriptCore tweaks to get ready for the parser arena |
| https://bugs.webkit.org/show_bug.cgi?id=28243 |
| |
| Eliminate dependencies on Nodes.h outside JavaScriptCore, |
| and cut down on them inside JavaScriptCore. |
| |
| Change regular expression parsing to use identifiers as |
| with other strings we parse. |
| |
| Fix a couple things that are needed to use const Identifier |
| more, which will be part of the parser arena work. |
| |
| * JavaScriptCore.exp: Resorted and updated. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: Changed |
| CollectorHeapIterator.h to be project-internal. |
| |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitPushNewScope): Added const. |
| * bytecompiler/BytecodeGenerator.h: Ditto. |
| |
| * debugger/Debugger.cpp: |
| (JSC::Debugger::recompileAllJSFunctions): Moved this function |
| here from WebCore. Here is better since it uses so many internals. |
| Removed unimportant optimization for the no listener case. |
| * debugger/Debugger.h: Ditto. Also removed unneeded include |
| and tweaked formatting and comments. |
| |
| * debugger/DebuggerCallFrame.cpp: |
| (JSC::DebuggerCallFrame::functionName): Call asFunction instead |
| of doing the unchecked static_cast. |
| (JSC::DebuggerCallFrame::calculatedFunctionName): Ditto. |
| |
| * jit/JITStubs.cpp: |
| (JSC::op_call_JSFunction): Call isHostFunction on the body rather |
| than on the JSFunction. |
| (JSC::vm_lazyLinkCall): Ditto. |
| (JSC::op_construct_JSConstruct): Ditto. |
| |
| * parser/Grammar.y: Changed callers to use new scanRegExp with |
| out arguments instead of relying on state in the Lexer. And |
| callers that just want to skip a regular expression to use |
| skipRegExp. |
| |
| * parser/Lexer.cpp: |
| (JSC::Lexer::scanRegExp): Changed to use out arguments, and to |
| add a prefix argument so we can add in the "=" character as needed. |
| Also rewrote to streamline the logic a bit inspired by suggestions |
| by David Levin. |
| (JSC::Lexer::skipRegExp): Added. Version of the function above that |
| does not actually put the regular expression into a string. |
| (JSC::Lexer::clear): Removed code to clear m_pattern and m_flags. |
| * parser/Lexer.h: Changed scanRegExp to have out arguments. Added |
| skipRegExp. Eliminated pattern, flags, m_pattern, and m_flags. |
| |
| * parser/NodeConstructors.h: |
| (JSC::RegExpNode::RegExpNode): Changed to take const Identifier&. |
| * parser/Nodes.cpp: |
| (JSC::RegExpNode::emitBytecode): Changed since m_pattern and |
| m_flags are now Identifier instead of UString. |
| (JSC::FunctionBodyNode::make): Moved this function here instead |
| of putting it in the JSFunction.h header. |
| * parser/Nodes.h: Changed RegExpNode to use Identifier. |
| |
| * profiler/Profiler.cpp: |
| (JSC::Profiler::createCallIdentifier): Changed to use isHostFunction |
| on the body instead of on the JSFunction object. |
| * runtime/FunctionPrototype.cpp: |
| (JSC::functionProtoFuncToString): Ditto. |
| |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::isHostFunction): Moved here from header. |
| (JSC::JSFunction::isHostFunctionNonInline): Added. |
| (JSC::JSFunction::JSFunction): Removed unneeded initialization of |
| m_body to 0. |
| (JSC::JSFunction::setBody): Moved here from header. |
| |
| * runtime/JSFunction.h: Removed unneeded includes. Moved private |
| constructor down to the private section. Made virtual functions |
| private. Removed unneeded overload of setBody and moved the body |
| of the function into the .cpp file. Changed assertions to use |
| the non-inline version of isHostFunction. |
| |
| * runtime/PropertySlot.cpp: |
| (JSC::PropertySlot::functionGetter): Use asFunction instead |
| of doing the unchecked static_cast. |
| |
| * wtf/SegmentedVector.h: |
| (WTF::SegmentedVector::isEmpty): Added. |
| |
| 2009-08-13 Mark Rowe <mrowe@apple.com> |
| |
| Rubber-stamped by Darin Adler. |
| |
| Use the version of operator new that takes a JSGlobalData when allocating FuncDeclNode and FuncExprNode |
| from within the grammar to prevent these nodes from being leaked. |
| |
| * parser/Grammar.y: |
| |
| 2009-08-13 Simon Hausmann <simon.hausmann@nokia.com> |
| |
| Reviewed by Ariya Hidayat. |
| |
| Remove the special-case for Qt wrt JSVALUE_32 introduced in |
| r46709. It must've been a dependency issue on the bot, as |
| after a manual build all the tests pass on amd64 and ia32. |
| |
| * wtf/Platform.h: |
| |
| 2009-08-12 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Add optimize call and property access support for ARM JIT. |
| https://bugs.webkit.org/show_bug.cgi?id=24986 |
| |
| For tightly coupled sequences the BEGIN_UNINTERRUPTED_SEQUENCE and |
| END_UNINTERRUPTED_SEQUENCE macros have been introduced which ensure |
| space for instructions and constants of the named sequence. This |
| method is vital for those architecture which are using constant pool. |
| |
| The 'latePatch' method - which was linked to JmpSrc - is replaced with |
| a port specific solution (each calls are marked to place their address |
| on the constant pool). |
| |
| * assembler/ARMAssembler.cpp: |
| (JSC::ARMAssembler::linkBranch): |
| (JSC::ARMAssembler::executableCopy): Add extra align for constant pool. |
| * assembler/ARMAssembler.h: |
| (JSC::ARMAssembler::JmpSrc::JmpSrc): |
| (JSC::ARMAssembler::sizeOfConstantPool): |
| (JSC::ARMAssembler::jmp): |
| (JSC::ARMAssembler::linkCall): |
| * assembler/ARMv7Assembler.h: |
| * assembler/AbstractMacroAssembler.h: |
| * assembler/AssemblerBufferWithConstantPool.h: |
| (JSC::AssemblerBufferWithConstantPool::flushIfNoSpaceFor): Fix the |
| computation of the remaining space. |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::branch32): |
| (JSC::MacroAssemblerARM::nearCall): |
| (JSC::MacroAssemblerARM::call): |
| (JSC::MacroAssemblerARM::branchPtrWithPatch): |
| (JSC::MacroAssemblerARM::ensureSpace): |
| (JSC::MacroAssemblerARM::sizeOfConstantPool): |
| (JSC::MacroAssemblerARM::prepareCall): |
| * assembler/X86Assembler.h: |
| * jit/JIT.h: |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCall): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::beginUninterruptedSequence): |
| (JSC::JIT::endUninterruptedSequence): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emit_op_method_check): |
| (JSC::JIT::compileGetByIdHotPath): |
| (JSC::JIT::compileGetByIdSlowCase): |
| (JSC::JIT::emit_op_put_by_id): |
| |
| 2009-08-12 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber Stamped by Dave Kilzer. |
| |
| Disable WTF_USE_JSVALUE32_64 on iPhone for now (support not yet added for ARMv7). |
| |
| * wtf/Platform.h: |
| |
| 2009-08-12 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Maciej Stachoviak. |
| |
| Ooops - moved code that had been accidentally added to op_new_func instead of |
| op_new_func_exp, to where it shoulds be. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| * wtf/Platform.h: |
| |
| 2009-08-12 Ada Chan <adachan@apple.com> |
| |
| Added workaround for the limitation that VirtualFree with MEM_RELEASE |
| can only accept the base address returned by VirtualAlloc when the region |
| was reserved and it can only free the entire region, and not a part of it. |
| |
| Reviewed by Oliver Hunt. |
| |
| * runtime/MarkStack.h: |
| (JSC::MarkStack::MarkStackArray::shrinkAllocation): |
| * runtime/MarkStackWin.cpp: |
| (JSC::MarkStack::releaseStack): |
| |
| 2009-08-12 Balazs Kelemen <kelemen.balazs.3@stud.u-szeged.hu> |
| |
| Reviewed by Ariya Hidayat. |
| |
| Build fix: use std::numeric_limits<long long>::min() instead of LLONG_MIN |
| since LLONG_MIN is not defined in standard c++. |
| |
| * runtime/UString.cpp: |
| (JSC::UString::from): |
| |
| 2009-08-12 Benjamin Otte <otte@gnome.org> |
| |
| Reviewed by Jan Alonzo. |
| |
| Buildfix for Gtk platforms debug builds. |
| |
| * GNUmakefile.am: Choose MarkStackPosix.cpp or MarkStackWin.cpp |
| depending on platform. |
| |
| 2009-08-12 Simon Hausmann <simon.hausmann@nokia.com> |
| |
| Prospective build fix for Mac and 32-bit Windows. |
| |
| * runtime/UString.cpp: Include wtf/StringExtras.h for snprintf. |
| (JSC::UString::from): Use %lld instead of %I64d for snprintf |
| on non-windows platforms. |
| |
| 2009-08-12 Prasanth Ullattil <prasanth.ullattil@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Fix compile error on 64Bit Windows, when UString::from |
| is called with an intptr_t. |
| |
| Added new UString::From overload with long long parameter. |
| |
| Thanks to Holger for the long long idea. |
| |
| * runtime/UString.cpp: |
| (JSC::UString::from): |
| * runtime/UString.h: |
| |
| 2009-08-11 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Mark Rowe. |
| |
| Minor style fixes. |
| |
| * runtime/UString.h: |
| (JSC::UString::Rep::createEmptyBuffer): |
| * wtf/FastMalloc.h: |
| (WTF::TryMallocReturnValue::getValue): |
| |
| 2009-08-11 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Make it harder to misuse try* allocation routines |
| https://bugs.webkit.org/show_bug.cgi?id=27469 |
| |
| Jump through a few hoops to make it much harder to accidentally |
| miss null-checking of values returned by the try-* allocation |
| routines. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::putSlowCase): |
| (JSC::JSArray::increaseVectorLength): |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncFontsize): |
| (JSC::stringProtoFuncLink): |
| * runtime/UString.cpp: |
| (JSC::allocChars): |
| (JSC::reallocChars): |
| (JSC::expandCapacity): |
| (JSC::UString::Rep::reserveCapacity): |
| (JSC::UString::expandPreCapacity): |
| (JSC::createRep): |
| (JSC::concatenate): |
| (JSC::UString::spliceSubstringsWithSeparators): |
| (JSC::UString::replaceRange): |
| (JSC::UString::append): |
| (JSC::UString::operator=): |
| * runtime/UString.h: |
| (JSC::UString::Rep::createEmptyBuffer): |
| * wtf/FastMalloc.cpp: |
| (WTF::tryFastZeroedMalloc): |
| (WTF::tryFastMalloc): |
| (WTF::tryFastCalloc): |
| (WTF::tryFastRealloc): |
| (WTF::TCMallocStats::tryFastMalloc): |
| (WTF::TCMallocStats::tryFastCalloc): |
| (WTF::TCMallocStats::tryFastRealloc): |
| * wtf/FastMalloc.h: |
| (WTF::TryMallocReturnValue::TryMallocReturnValue): |
| (WTF::TryMallocReturnValue::~TryMallocReturnValue): |
| (WTF::TryMallocReturnValue::operator PossiblyNull<T>): |
| (WTF::TryMallocReturnValue::getValue): |
| * wtf/Platform.h: |
| * wtf/PossiblyNull.h: Added. |
| (WTF::PossiblyNull::PossiblyNull): |
| (WTF::PossiblyNull::~PossiblyNull): |
| (WTF::::getValue): |
| |
| 2009-08-11 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by NOBODY (build fix part deux). |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-08-11 Gavin Barraclough <barraclough@apple.com> |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-08-11 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Restrict use of FuncDeclNode & FuncExprNode to the parser. |
| https://bugs.webkit.org/show_bug.cgi?id=28209 |
| |
| These objects were also being referenced from the CodeBlock. By changing this |
| to just retain pointers to FunctionBodyNodes these classes can be restricted to |
| use during parsing. |
| |
| No performance impact (or sub-percent progression). |
| |
| * JavaScriptCore.exp: |
| Update symbols. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::mark): |
| (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): |
| (JSC::CodeBlock::shrinkToFit): |
| * bytecode/CodeBlock.h: |
| (JSC::CodeBlock::addFunction): |
| (JSC::CodeBlock::function): |
| Unify m_functions & m_functionExpressions into a single Vector<RefPtr<FuncExprNode> >. |
| |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::BytecodeGenerator): |
| (JSC::BytecodeGenerator::addConstant): |
| (JSC::BytecodeGenerator::emitNewFunction): |
| (JSC::BytecodeGenerator::emitNewFunctionExpression): |
| * bytecompiler/BytecodeGenerator.h: |
| FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::execute): |
| (JSC::Interpreter::privateExecute): |
| Update to reflect chnages in CodeBlock. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_new_func_exp): |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * jit/JITStubs.h: |
| (JSC::): |
| Update to reflect chnages in CodeBlock. |
| |
| * parser/Grammar.y: |
| FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes. |
| |
| * parser/NodeConstructors.h: |
| (JSC::FuncExprNode::FuncExprNode): |
| (JSC::FuncDeclNode::FuncDeclNode): |
| * parser/Nodes.cpp: |
| (JSC::ScopeNodeData::mark): |
| (JSC::FunctionBodyNode::finishParsing): |
| * parser/Nodes.h: |
| (JSC::FunctionBodyNode::ident): |
| Move m_ident & make methods from FuncDeclNode & FuncExprNode to FunctionBodyNode. |
| |
| * runtime/JSFunction.h: |
| (JSC::FunctionBodyNode::make): |
| Make this method inline (was FuncDeclNode::makeFunction). |
| |
| 2009-08-11 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Native JSON.stringify does not omit functions |
| https://bugs.webkit.org/show_bug.cgi?id=28117 |
| |
| Objects that are callable should be treated as undefined when |
| serialising to JSON. |
| |
| * runtime/JSONObject.cpp: |
| (JSC::Stringifier::appendStringifiedValue): |
| |
| 2009-08-11 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| REGRESSION: Hang/crash in BytecodeGenerator::constRegisterFor loading simple page |
| https://bugs.webkit.org/show_bug.cgi?id=28169 |
| |
| Handle the case where someone has attempted to shadow a property |
| on the global object with a constant. |
| |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::constRegisterFor): |
| * parser/Nodes.cpp: |
| (JSC::ConstDeclNode::emitCodeSingle): |
| |
| 2009-08-11 John Gregg <johnnyg@google.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Desktop Notifications API |
| https://bugs.webkit.org/show_bug.cgi?id=25463 |
| |
| Adds ENABLE_NOTIFICATION flag. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * wtf/Platform.h: |
| |
| 2009-08-11 Maxime Simon <simon.maxime@gmail.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Modifications on JavaScriptCore to allow Haiku port. |
| https://bugs.webkit.org/show_bug.cgi?id=28121 |
| |
| * runtime/Collector.cpp: Haiku doesn't have sys/mman.h, using OS.h instead. |
| (JSC::currentThreadStackBase): Haiku uses its own threading system. |
| * wtf/Platform.h: Defining all Haiku platform values. |
| * wtf/haiku/MainThreadHaiku.cpp: Adding a missing header (NotImplemented.h). |
| |
| 2009-08-11 Jessie Berlin <jberlin@apple.com> |
| |
| Reviewed by Adam Roben. |
| |
| Fix windows build. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-08-11 Csaba Osztrogonac <oszi@inf.u-szeged.hu> |
| |
| Reviewed by Tor Arne Vestbø. |
| |
| Buildfix for Qt-win platforms. |
| |
| * JavaScriptCore.pri: Choose MarkStackPosix.cpp or MarkStackWin.cpp depend on platform. |
| |
| 2009-08-10 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by NOBODY (And another build fix). |
| |
| Add new exports for MSVC |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2009-08-10 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by NOBODY (yet another build fix). |
| |
| Remove obsolete entries from MSVC exports file |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-08-10 Oliver Hunt <oliver@apple.com> |
| |
| Add includes needed for non-allinonefile builds |
| |
| * runtime/GetterSetter.h: |
| * runtime/ScopeChain.h: |
| |
| 2009-08-10 Oliver Hunt <oliver@apple.com> |
| |
| Fix export file for last build fix |
| |
| * JavaScriptCore.exp: |
| |
| 2009-08-10 Oliver Hunt <oliver@apple.com> |
| |
| Hoist page size initialization into platform specific code. |
| |
| * jit/ExecutableAllocatorPosix.cpp: |
| * jit/ExecutableAllocatorWin.cpp: |
| * runtime/MarkStack.h: |
| (JSC::MarkStack::pageSize): |
| * runtime/MarkStackPosix.cpp: |
| (JSC::MarkStack::initializePagesize): |
| * runtime/MarkStackWin.cpp: |
| (JSC::MarkStack::initializePagesize): |
| |
| 2009-08-07 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Stack overflow crash in JavaScript garbage collector mark pass |
| https://bugs.webkit.org/show_bug.cgi?id=12216 |
| |
| Make the GC mark phase iterative by using an explicit mark stack. |
| To do this marking any single object is performed in multiple stages |
| * The object is appended to the MarkStack, this sets the marked |
| bit for the object using the new markDirect() function, and then |
| returns |
| * When the MarkStack is drain()ed the object is popped off the stack |
| and markChildren(MarkStack&) is called on the object to collect |
| all of its children. drain() then repeats until the stack is empty. |
| |
| Additionally I renamed a number of methods from 'mark' to 'markAggregate' |
| in order to make it more clear that marking of those object was not |
| going to result in an actual recursive mark. |
| |
| * GNUmakefile.am |
| * JavaScriptCore.exp: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.pri: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::markAggregate): |
| * bytecode/CodeBlock.h: |
| * bytecode/EvalCodeCache.h: |
| (JSC::EvalCodeCache::markAggregate): |
| * debugger/DebuggerActivation.cpp: |
| (JSC::DebuggerActivation::markChildren): |
| * debugger/DebuggerActivation.h: |
| * interpreter/Register.h: |
| * interpreter/RegisterFile.h: |
| (JSC::RegisterFile::markGlobals): |
| (JSC::RegisterFile::markCallFrames): |
| * parser/Nodes.cpp: |
| (JSC::ScopeNodeData::markAggregate): |
| (JSC::EvalNode::markAggregate): |
| (JSC::FunctionBodyNode::markAggregate): |
| * parser/Nodes.h: |
| (JSC::ScopeNode::markAggregate): |
| * runtime/ArgList.cpp: |
| (JSC::MarkedArgumentBuffer::markLists): |
| * runtime/ArgList.h: |
| * runtime/Arguments.cpp: |
| (JSC::Arguments::markChildren): |
| * runtime/Arguments.h: |
| * runtime/Collector.cpp: |
| (JSC::Heap::markConservatively): |
| (JSC::Heap::markCurrentThreadConservativelyInternal): |
| (JSC::Heap::markCurrentThreadConservatively): |
| (JSC::Heap::markOtherThreadConservatively): |
| (JSC::Heap::markStackObjectsConservatively): |
| (JSC::Heap::markProtectedObjects): |
| (JSC::Heap::collect): |
| * runtime/Collector.h: |
| * runtime/GetterSetter.cpp: |
| (JSC::GetterSetter::markChildren): |
| * runtime/GetterSetter.h: |
| (JSC::GetterSetter::GetterSetter): |
| (JSC::GetterSetter::createStructure): |
| * runtime/GlobalEvalFunction.cpp: |
| (JSC::GlobalEvalFunction::markChildren): |
| * runtime/GlobalEvalFunction.h: |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::markChildren): |
| * runtime/JSActivation.h: |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::markChildren): |
| * runtime/JSArray.h: |
| * runtime/JSCell.h: |
| (JSC::JSCell::markCellDirect): |
| (JSC::JSCell::markChildren): |
| (JSC::JSValue::markDirect): |
| (JSC::JSValue::markChildren): |
| (JSC::JSValue::hasChildren): |
| (JSC::MarkStack::append): |
| (JSC::MarkStack::drain): |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::markChildren): |
| * runtime/JSFunction.h: |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| * runtime/JSGlobalData.h: |
| * runtime/JSGlobalObject.cpp: |
| (JSC::markIfNeeded): |
| (JSC::JSGlobalObject::markChildren): |
| * runtime/JSGlobalObject.h: |
| * runtime/JSNotAnObject.cpp: |
| (JSC::JSNotAnObject::markChildren): |
| * runtime/JSNotAnObject.h: |
| * runtime/JSONObject.cpp: |
| (JSC::Stringifier::markAggregate): |
| (JSC::JSONObject::markStringifiers): |
| * runtime/JSONObject.h: |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::markChildren): |
| (JSC::JSObject::defineGetter): |
| (JSC::JSObject::defineSetter): |
| * runtime/JSObject.h: |
| * runtime/JSPropertyNameIterator.cpp: |
| (JSC::JSPropertyNameIterator::markChildren): |
| * runtime/JSPropertyNameIterator.h: |
| (JSC::JSPropertyNameIterator::createStructure): |
| (JSC::JSPropertyNameIterator::JSPropertyNameIterator): |
| (JSC::JSPropertyNameIterator::create): |
| * runtime/JSStaticScopeObject.cpp: |
| (JSC::JSStaticScopeObject::markChildren): |
| * runtime/JSStaticScopeObject.h: |
| * runtime/JSType.h: |
| (JSC::): |
| * runtime/JSValue.h: |
| * runtime/JSWrapperObject.cpp: |
| (JSC::JSWrapperObject::markChildren): |
| * runtime/JSWrapperObject.h: |
| * runtime/MarkStack.cpp: Added. |
| (JSC::MarkStack::compact): |
| * runtime/MarkStack.h: Added. |
| (JSC::): |
| (JSC::MarkStack::MarkStack): |
| (JSC::MarkStack::append): |
| (JSC::MarkStack::appendValues): |
| (JSC::MarkStack::~MarkStack): |
| (JSC::MarkStack::MarkSet::MarkSet): |
| (JSC::MarkStack::pageSize): |
| |
| MarkStackArray is a non-shrinking, mmap-based vector type |
| used for storing objects to be marked. |
| (JSC::MarkStack::MarkStackArray::MarkStackArray): |
| (JSC::MarkStack::MarkStackArray::~MarkStackArray): |
| (JSC::MarkStack::MarkStackArray::expand): |
| (JSC::MarkStack::MarkStackArray::append): |
| (JSC::MarkStack::MarkStackArray::removeLast): |
| (JSC::MarkStack::MarkStackArray::isEmpty): |
| (JSC::MarkStack::MarkStackArray::size): |
| (JSC::MarkStack::MarkStackArray::shrinkAllocation): |
| * runtime/MarkStackPosix.cpp: Added. |
| (JSC::MarkStack::allocateStack): |
| (JSC::MarkStack::releaseStack): |
| * runtime/MarkStackWin.cpp: Added. |
| (JSC::MarkStack::allocateStack): |
| (JSC::MarkStack::releaseStack): |
| |
| * runtime/ScopeChain.h: |
| * runtime/ScopeChainMark.h: |
| (JSC::ScopeChain::markAggregate): |
| * runtime/SmallStrings.cpp: |
| (JSC::SmallStrings::mark): |
| * runtime/Structure.h: |
| (JSC::Structure::markAggregate): |
| |
| 2009-08-10 Mark Rowe <mrowe@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Fix hundreds of "pointer being freed was not allocated" errors seen on the build bot. |
| |
| * wtf/FastMalloc.h: Implement nothrow variants of the delete and delete[] operators since |
| we implement the nothrow variants of new and new[]. The nothrow variant of delete is called |
| explicitly in the implementation of std::sort which was resulting in FastMalloc-allocated |
| memory being passed to the system allocator to free. |
| |
| 2009-08-10 Jan Michael Alonzo <jmalonzo@webkit.org> |
| |
| [Gtk] Unreviewed build fix. Move JSAPIValueWrapper.cpp/.h in the debug |
| section. This file is already part of AllInOneFile in Release builds. |
| |
| * GNUmakefile.am: |
| |
| 2009-08-10 Darin Adler <darin@apple.com> |
| |
| * wtf/FastMalloc.h: Fix build. |
| |
| 2009-08-10 Darin Adler <darin@apple.com> |
| |
| Reviewed by Mark Rowe. |
| |
| FastMalloc.h has cross-platform code but marked as WinCE-only |
| https://bugs.webkit.org/show_bug.cgi?id=28160 |
| |
| 1) The support for nothrow was inside #if PLATFORM(WINCE) even though it is |
| not platform-specific. |
| 2) The code tried to override operator delete nothrow, which does not exist. |
| 3) The code in the header checks the value of USE_SYSTEM_MALLOC, but the code |
| in FastMalloc.cpp checks only if the macro is defined. |
| |
| * wtf/FastMalloc.h: See above. |
| * wtf/FastMalloc.cpp: Ditto. |
| |
| 2009-08-10 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Anders Carlsson. |
| |
| Fix an annoying indentation issue. |
| |
| * runtime/DateConstructor.cpp: |
| (JSC::constructDate): |
| |
| 2009-08-10 Xan Lopez <xlopez@igalia.com> |
| |
| Unreviewed build fix. |
| |
| Add new files to makefile. |
| |
| * GNUmakefile.am: |
| |
| 2009-08-10 Simon Hausmann <simon.hausmann@nokia.com> |
| |
| Fix compilation with the interpreter instead of the JIT by including |
| PrototypeFunction.h as forward-declared through NativeFunctionWrapper.h. |
| |
| * runtime/ObjectConstructor.cpp: |
| |
| 2009-08-09 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by George Staikos. |
| |
| JSON.stringify replacer returning undefined does not omit object properties |
| https://bugs.webkit.org/show_bug.cgi?id=28118 |
| |
| Correct behaviour of stringify when using a replacer function that returns |
| undefined. This is a simple change to move the undefined value check to |
| after the replacer function is called. This means that the replacer function |
| is now called for properties with the value undefined, however i've confirmed |
| that this behaviour is correct. |
| |
| In addition I've made the cyclic object exception have a more useful error |
| message. |
| |
| * runtime/JSONObject.cpp: |
| (JSC::Stringifier::appendStringifiedValue): |
| |
| 2009-08-08 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Eric Seidel and Sam Weinig. |
| |
| [ES5] Implement Object.getPrototypeOf |
| https://bugs.webkit.org/show_bug.cgi?id=28114 |
| |
| Implement getPrototypeOf |
| |
| * runtime/CommonIdentifiers.h: |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::reset): |
| * runtime/ObjectConstructor.cpp: |
| (JSC::ObjectConstructor::ObjectConstructor): |
| (JSC::objectConsGetPrototypeOf): |
| * runtime/ObjectConstructor.h: |
| |
| 2009-08-07 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Eric Seidel. |
| |
| Allow custom memory allocation control for Noncopyable class |
| https://bugs.webkit.org/show_bug.cgi?id=27879 |
| |
| Several classes which are inherited from Noncopyable are instantiated by |
| operator new, so Noncopyable class has been inherited from FastAllocBase. |
| |
| * wtf/Noncopyable.h: |
| |
| 2009-08-07 George Staikos <george.staikos@torchmobile.com> |
| |
| Reviewed by Eric Seidel. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27305 |
| Implement WinCE-specific unicode layer. |
| Written by George Staikos <george.staikos@torchmobile.com> |
| with bug fixes by Yong Li <yong.li@torchmobile.com> |
| refactored by Joe Mason <joe.mason@torchmobile.com> |
| |
| * wtf/Platform.h: |
| * wtf/unicode/Unicode.h: |
| * wtf/unicode/wince/UnicodeWince.cpp: Added. |
| (WTF::Unicode::toLower): |
| (WTF::Unicode::toUpper): |
| (WTF::Unicode::foldCase): |
| (WTF::Unicode::isPrintableChar): |
| (WTF::Unicode::isSpace): |
| (WTF::Unicode::isLetter): |
| (WTF::Unicode::isUpper): |
| (WTF::Unicode::isLower): |
| (WTF::Unicode::isDigit): |
| (WTF::Unicode::isPunct): |
| (WTF::Unicode::toTitleCase): |
| (WTF::Unicode::direction): |
| (WTF::Unicode::category): |
| (WTF::Unicode::decompositionType): |
| (WTF::Unicode::combiningClass): |
| (WTF::Unicode::mirroredChar): |
| (WTF::Unicode::digitValue): |
| * wtf/unicode/wince/UnicodeWince.h: Added. |
| (WTF::Unicode::): |
| (WTF::Unicode::isSeparatorSpace): |
| (WTF::Unicode::isHighSurrogate): |
| (WTF::Unicode::isLowSurrogate): |
| (WTF::Unicode::isArabicChar): |
| (WTF::Unicode::hasLineBreakingPropertyComplexContext): |
| (WTF::Unicode::umemcasecmp): |
| (WTF::Unicode::surrogateToUcs4): |
| |
| 2009-08-07 Yongjun Zhang <yongjun.zhang@nokia.com> |
| |
| Reviewed by Eric Seidel. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=28069 |
| |
| Add inline to help winscw compiler resolve specialized argument in |
| templated functions. |
| |
| * runtime/LiteralParser.cpp: |
| (JSC::LiteralParser::Lexer::lexString): |
| |
| 2009-08-07 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Eric Seidel. |
| |
| Allow custom memory allocation control for RegExpObjectData struct |
| http://bugs.webkit.org/show_bug.cgi?id=26750 |
| |
| Inherits RegExpObjectData struct from FastAllocBase because |
| it has been instantiated by 'new' in JavaScriptCore/runtime/RegExpObject.cpp:62 |
| |
| * runtime/RegExpObject.h: |
| |
| 2009-08-06 Norbert Leser <norbert.leser@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| Updated patch for bug #27059: |
| Symbian platform always uses little endian encoding, |
| regardless of compiler. |
| We need to make sure that we correctly detect EABI architecture |
| for armv5 targets on Symbian, |
| where __EABI__ is set but not __ARM_EABI__ |
| |
| * wtf/Platform.h: |
| |
| 2009-08-06 Adam Barth <abarth@webkit.org> |
| |
| Unreviewed revert. |
| |
| http://bugs.webkit.org/show_bug.cgi?id=27879 |
| |
| Revert 46877 because it broke GTK. |
| |
| * wtf/Noncopyable.h: |
| |
| 2009-08-06 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Make get_by_id/put_by_id/method_check/call defer optimization using a data flag rather than a code modification. |
| ( https://bugs.webkit.org/show_bug.cgi?id=27635 ) |
| |
| This improves performance of ENABLE(ASSEMBLER_WX_EXCLUSIVE) builds by 2-2.5%, reducing the overhead to about 2.5%. |
| (No performance impact with ASSEMBLER_WX_EXCLUSIVE disabled). |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::printStructureStubInfo): |
| - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. |
| |
| * bytecode/CodeBlock.h: |
| (JSC::): |
| (JSC::CallLinkInfo::seenOnce): |
| (JSC::CallLinkInfo::setSeen): |
| (JSC::MethodCallLinkInfo::seenOnce): |
| (JSC::MethodCallLinkInfo::setSeen): |
| - Change a pointer in CallLinkInfo/MethodCallLinkInfo to use a PtrAndFlags, use a flag to track when an op has been executed once. |
| |
| * bytecode/StructureStubInfo.cpp: |
| (JSC::StructureStubInfo::deref): |
| - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. |
| |
| * bytecode/StructureStubInfo.h: |
| (JSC::StructureStubInfo::StructureStubInfo): |
| (JSC::StructureStubInfo::initGetByIdSelf): |
| (JSC::StructureStubInfo::initGetByIdProto): |
| (JSC::StructureStubInfo::initGetByIdChain): |
| (JSC::StructureStubInfo::initGetByIdSelfList): |
| (JSC::StructureStubInfo::initGetByIdProtoList): |
| (JSC::StructureStubInfo::initPutByIdTransition): |
| (JSC::StructureStubInfo::initPutByIdReplace): |
| (JSC::StructureStubInfo::seenOnce): |
| (JSC::StructureStubInfo::setSeen): |
| - Make StructureStubInfo store the type as an integer, rather than an OpcodeID, add a flag to track when an op has been executed once. |
| |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitGetById): |
| (JSC::BytecodeGenerator::emitPutById): |
| - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| (JSC::JIT::unlinkCall): |
| - Remove the "don't lazy link" stage of calls. |
| |
| * jit/JIT.h: |
| (JSC::JIT::compileCTIMachineTrampolines): |
| - Remove the "don't lazy link" stage of calls. |
| |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallSlowCase): |
| - Remove the "don't lazy link" stage of calls. |
| |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::JITThunks): |
| (JSC::JITThunks::tryCachePutByID): |
| (JSC::JITThunks::tryCacheGetByID): |
| (JSC::JITStubs::DEFINE_STUB_FUNCTION): |
| (JSC::JITStubs::getPolymorphicAccessStructureListSlot): |
| - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check. |
| |
| * jit/JITStubs.h: |
| (JSC::JITThunks::ctiStringLengthTrampoline): |
| (JSC::JITStubs::): |
| - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check. |
| |
| * wtf/PtrAndFlags.h: |
| (WTF::PtrAndFlags::PtrAndFlags): |
| (WTF::PtrAndFlags::operator!): |
| (WTF::PtrAndFlags::operator->): |
| - Add ! and -> operators, add constuctor with pointer argument. |
| |
| 2009-08-06 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Adam Barth. |
| |
| Allow custom memory allocation control for Noncopyable class |
| https://bugs.webkit.org/show_bug.cgi?id=27879 |
| |
| Several classes which inherited from Noncopyable are instantiated by |
| operator new, so Noncopyable class has been inherited from FastAllocBase. |
| |
| * wtf/Noncopyable.h: |
| |
| 2009-08-06 Mark Rowe <mrowe@apple.com> |
| |
| Rubber-stamped by Sam Weinig. |
| |
| Add explicit dependencies for our build verification scripts to ensure that they always run after linking has completed. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2009-08-06 Mark Rowe <mrowe@apple.com> |
| |
| Bring a little order to our otherwise out of control lives. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2009-08-06 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| Allow custom memory allocation control for JavaScriptCore's PolymorphicAccessStructureList struct |
| https://bugs.webkit.org/show_bug.cgi?id=27877 |
| |
| Inherits PolymorphicAccessStructureList struct from FastAllocBase because it has been instantiated by |
| 'new' in JavaScriptCore/jit/JITStubs.cpp:1229. |
| |
| * bytecode/Instruction.h: |
| |
| 2009-08-05 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| Allow custom memory allocation control for JavaScriptCore's ScopeNodeData struct |
| https://bugs.webkit.org/show_bug.cgi?id=27875 |
| |
| Inherits ScopeNodeData struct from FastAllocBase because it has been instantiated by |
| 'new' in JavaScriptCore/parser/Nodes.cpp:1848. |
| |
| * parser/Nodes.h: |
| |
| 2009-08-05 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Add floating point support for generic ARM port. |
| https://bugs.webkit.org/show_bug.cgi?id=24986 |
| |
| * assembler/ARMAssembler.cpp: |
| (JSC::ARMAssembler::doubleTransfer): |
| * assembler/ARMAssembler.h: |
| (JSC::ARM::): |
| (JSC::ARMAssembler::): |
| (JSC::ARMAssembler::faddd_r): |
| (JSC::ARMAssembler::fsubd_r): |
| (JSC::ARMAssembler::fmuld_r): |
| (JSC::ARMAssembler::fcmpd_r): |
| (JSC::ARMAssembler::fdtr_u): |
| (JSC::ARMAssembler::fdtr_d): |
| (JSC::ARMAssembler::fmsr_r): |
| (JSC::ARMAssembler::fsitod_r): |
| (JSC::ARMAssembler::fmstat): |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::): |
| (JSC::MacroAssemblerARM::supportsFloatingPoint): |
| (JSC::MacroAssemblerARM::loadDouble): |
| (JSC::MacroAssemblerARM::storeDouble): |
| (JSC::MacroAssemblerARM::addDouble): |
| (JSC::MacroAssemblerARM::subDouble): |
| (JSC::MacroAssemblerARM::mulDouble): |
| (JSC::MacroAssemblerARM::convertInt32ToDouble): |
| (JSC::MacroAssemblerARM::branchDouble): |
| * jit/JIT.h: |
| |
| 2009-08-05 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Add JIT support for generic ARM port without optimizations. |
| https://bugs.webkit.org/show_bug.cgi?id=24986 |
| |
| All JIT optimizations are disabled. |
| |
| Signed off by Zoltan Herczeg <zherczeg@inf.u-szeged.hu> |
| Signed off by Gabor Loki <loki@inf.u-szeged.hu> |
| |
| * assembler/ARMAssembler.cpp: |
| (JSC::ARMAssembler::baseIndexTransfer32): |
| * assembler/AbstractMacroAssembler.h: |
| (JSC::AbstractMacroAssembler::Imm32::Imm32): |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::store32): |
| (JSC::MacroAssemblerARM::move): |
| (JSC::MacroAssemblerARM::branch32): |
| (JSC::MacroAssemblerARM::add32): |
| (JSC::MacroAssemblerARM::sub32): |
| (JSC::MacroAssemblerARM::load32): |
| * bytecode/CodeBlock.h: |
| (JSC::CodeBlock::getBytecodeIndex): |
| * jit/JIT.h: |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::restoreArgumentReference): |
| * jit/JITOpcodes.cpp: |
| * jit/JITStubs.cpp: |
| * jit/JITStubs.h: |
| (JSC::JITStackFrame::returnAddressSlot): |
| * wtf/Platform.h: |
| |
| 2009-08-04 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber Stamped by Oiver Hunt. |
| |
| Revert r46643 since this breaks the Yarr::Interpreter running the v8 tests. |
| https://bugs.webkit.org/show_bug.cgi?id=27874 |
| |
| * yarr/RegexInterpreter.cpp: |
| (JSC::Yarr::Interpreter::allocDisjunctionContext): |
| (JSC::Yarr::Interpreter::freeDisjunctionContext): |
| (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext): |
| (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext): |
| |
| 2009-08-04 Oliver Hunt <oliver@apple.com> |
| |
| PPC64 Build fix |
| |
| * wtf/Platform.h: |
| |
| 2009-08-04 Benjamin C Meyer <benjamin.meyer@torchmobile.com> |
| |
| Reviewed by Adam Treat |
| |
| Explicitly include limits.h header when using INT_MAX and INT_MIN |
| |
| * interpreter/Interpreter.cpp |
| |
| 2009-08-03 Harald Fernengel <harald.fernengel@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| Fix compile error for ambigous call to abs() |
| https://bugs.webkit.org/show_bug.cgi?id=27873 |
| |
| Fix ambiguity in abs(long int) call by calling labs() instead |
| |
| * wtf/DateMath.cpp: replace call to abs() with labs() |
| |
| 2009-08-03 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Eric Seidel. |
| |
| [Qt] Consolidate common gcc flags to WebKit.pri |
| https://bugs.webkit.org/show_bug.cgi?id=27934 |
| |
| * JavaScriptCore.pro: |
| |
| 2009-08-03 Ada Chan <adachan@apple.com> |
| |
| Fixed the Tiger build. |
| |
| * wtf/FastMalloc.cpp: |
| |
| 2009-08-03 Ada Chan <adachan@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Don't use background thread to scavenge memory on Tiger until we figure out why it causes a crash. |
| https://bugs.webkit.org/show_bug.cgi?id=27900 |
| |
| * wtf/FastMalloc.cpp: |
| |
| 2009-08-03 Fumitoshi Ukai <ukai@chromium.org> |
| |
| Reviewed by Jan Alonzo. |
| |
| Fix build break on Gtk/x86_64. |
| https://bugs.webkit.org/show_bug.cgi?id=27936 |
| |
| Use JSVALUE64 for X86_64 LINUX, except Qt. |
| |
| * wtf/Platform.h: |
| |
| 2009-08-02 Xan Lopez <xlopez@igalia.com> |
| |
| Fix the GTK+ build. |
| |
| * wtf/Platform.h: |
| |
| 2009-08-02 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Disabled JSVALUE32_64 on Qt builds, since all layout tests mysteriously |
| crash with it enabled. |
| |
| * wtf/Platform.h: |
| |
| 2009-08-02 Geoffrey Garen <ggaren@apple.com> |
| |
| Qt build fix. |
| |
| Added JSAPIValueWrapper.cpp to the build. |
| |
| * JavaScriptCore.pri: |
| |
| 2009-08-02 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix. |
| |
| Exported symbols for JSAPIValueWrapper. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-08-02 Geoffrey Garen <ggaren@apple.com> |
| |
| GTK build fix. |
| |
| * jit/JITStubs.cpp: #include <stdarg.h>, for a definition of va_start. |
| |
| 2009-08-02 Geoffrey Garen <ggaren@apple.com> |
| |
| Qt build fix. |
| |
| * runtime/Collector.cpp: #include <limits.h>, for a definition of ULONG_MAX. |
| |
| 2009-08-02 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix: Nixed JSImmediate::prototype, JSImmediate::toObject, |
| and JSImmediate::toThisObject, and removed their exported symbols. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| * runtime/JSImmediate.cpp: |
| * runtime/JSImmediate.h: |
| |
| 2009-08-02 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Mark Rowe. |
| |
| Enabled JSVALUE32_64 by default on all platforms other than x86_64 (which uses JSVALUE64). |
| |
| * wtf/Platform.h: |
| |
| 2009-08-02 Kevin Ollivier <kevino@theolliviers.com> |
| |
| Reviewed by Jan Alonzo. |
| |
| Script for building the JavaScriptCore library for wx. |
| https://bugs.webkit.org/show_bug.cgi?id=27619 |
| |
| * wscript: Added. |
| |
| 2009-08-02 Yong Li <yong.li@torchmobile.com> |
| |
| Reviewed by George Staikos. |
| |
| DateMath depends on strftime and localtime, which need to be imported manually on WinCE |
| https://bugs.webkit.org/show_bug.cgi?id=26558 |
| |
| * wtf/DateMath.cpp: |
| |
| 2009-08-01 David Kilzer <ddkilzer@apple.com> |
| |
| wtf/Threading.h: added include of Platform.h |
| |
| Reviewed by Mark Rowe. |
| |
| * wtf/Threading.h: Added #include "Platform.h" since this header |
| uses PLATFORM() and other macros. |
| |
| 2009-08-01 Mark Rowe <mrowe@apple.com> |
| |
| Rubber-stamped by Oliver Hunt. |
| |
| Roll out r46668 as it was misinformed. ScopeChain is only used with placement new. |
| |
| * runtime/ScopeChain.h: |
| |
| 2009-08-01 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Allow custom memory allocation control for JavaScriptCore's HashMap class |
| http://bugs.webkit.org/show_bug.cgi?id=27871 |
| |
| Inherits HashMap class from FastAllocBase because it has been |
| instantiated by 'new' in JavaScriptCore/API/JSClassRef.cpp:148. |
| |
| * wtf/RefPtrHashMap.h: |
| (WTF::): |
| |
| 2009-08-01 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Allow custom memory allocation control for JavaScriptCore's ScopeChain class |
| https://bugs.webkit.org/show_bug.cgi?id=27834 |
| |
| Inherits ScopeChain class from FastAllocBase because it has been |
| instantiated by 'new' in JavaScriptCore/runtime/JSFunction.h:109. |
| |
| * runtime/ScopeChain.h: |
| |
| 2009-08-01 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| Allow custom memory allocation control for JavaScriptCore's RegExpConstructorPrivate struct |
| https://bugs.webkit.org/show_bug.cgi?id=27833 |
| |
| Inherits RegExpConstructorPrivate class from FastAllocBase because it has been |
| instantiated by 'new' in JavaScriptCore/runtime/RegExpConstructor.cpp:152. |
| |
| * runtime/RegExpConstructor.cpp: |
| |
| 2009-07-31 Yong Li <yong.li@torchmobile.com> |
| |
| Reviewed by George Staikos. |
| |
| Resurrect the old GetTickCount implementation of currentTime, controlled by WTF_USE_QUERY_PERFORMANCE_COUNTER |
| currentSystemTime taken from older WebKit; currentTime written by Yong Li <yong.li@torchmobile.com>; cleanup by Joe Mason <joe.mason@torchmobile.com> |
| https://bugs.webkit.org/show_bug.cgi?id=27848 |
| |
| * wtf/CurrentTime.cpp: |
| (WTF::currentSystemTime): get current time with GetCurrentFT |
| (WTF::currentTime): track msec elapsed since first currentSystemTime call using GetTickCount |
| * wtf/Platform.h: |
| |
| 2009-07-31 Ada Chan <adachan@apple.com> |
| |
| Fixes the Windows release-PGO build. |
| |
| Reviewed by Jon Honeycutt. |
| |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: Suppresses the warning about unreachable code that we get by adding "return 0" to WTF::TCMalloc_PageHeap::runScavengerThread(). |
| * wtf/FastMalloc.cpp: |
| (WTF::TCMalloc_PageHeap::runScavengerThread): Fixes the error about the method not returning a value in the release-PGO build. |
| |
| 2009-07-31 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Change malloc to fastMalloc and free to fastFree in Yarr's RegexInterpreter.cpp |
| https://bugs.webkit.org/show_bug.cgi?id=27874 |
| |
| Use fastMalloc and fastFree instead of malloc and free in RegexInterpreter.cpp's methods. |
| |
| * yarr/RegexInterpreter.cpp: |
| (JSC::Yarr::Interpreter::allocDisjunctionContext): |
| (JSC::Yarr::Interpreter::freeDisjunctionContext): |
| (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext): |
| (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext): |
| |
| 2009-07-30 Xan Lopez <xlopez@igalia.com> |
| |
| Reviewed by Jan Alonzo. |
| |
| Fix compiler warning. |
| |
| GCC does not like C++-style comments in preprocessor directives. |
| |
| * wtf/Platform.h: |
| |
| 2009-07-30 John McCall <rjmccall@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Optimize the X86_64 trampolines: avoid the need for filler arguments |
| and move the stub-args area closer to the stack pointer. |
| |
| * jit/JIT.h: adjust patch offsets because of slight code-size change |
| * jit/JITCode.h: |
| (JSC::JITCode::execute): don't pass filler args |
| * jit/JITStubs.cpp: |
| (ctiTrampoline): (X86_64): push args onto stack, use args directly |
| (ctiVMThrowTrampoline): (X86_64): adjust %rsp by correct displacement |
| (ctiOpThrowNotCaught): (X86_64): adjust %rsp by correct displacement |
| * jit/JITStubs.h: |
| (JITStackFrame): (X86_64): move args area earlier |
| (ctiTrampoline): remove filler args from prototype |
| |
| 2009-07-30 Gavin Barraclough <barraclough@apple.com> |
| |
| Temporarily revert r46618 since this is b0rking on Linux. |
| |
| 2009-07-23 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Make get_by_id/put_by_id/method_check/call defer optimization using a data flag rather than a code modification. |
| ( https://bugs.webkit.org/show_bug.cgi?id=27635 ) |
| |
| This improves performance of ENABLE(ASSEMBLER_WX_EXCLUSIVE) builds by 2-2.5%, reducing the overhead to about 2.5%. |
| (No performance impact with ASSEMBLER_WX_EXCLUSIVE disabled). |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::printStructureStubInfo): |
| - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. |
| |
| * bytecode/CodeBlock.h: |
| (JSC::): |
| (JSC::CallLinkInfo::seenOnce): |
| (JSC::CallLinkInfo::setSeen): |
| (JSC::MethodCallLinkInfo::seenOnce): |
| (JSC::MethodCallLinkInfo::setSeen): |
| - Change a pointer in CallLinkInfo/MethodCallLinkInfo to use a PtrAndFlags, use a flag to track when an op has been executed once. |
| |
| * bytecode/StructureStubInfo.cpp: |
| (JSC::StructureStubInfo::deref): |
| - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. |
| |
| * bytecode/StructureStubInfo.h: |
| (JSC::StructureStubInfo::StructureStubInfo): |
| (JSC::StructureStubInfo::initGetByIdSelf): |
| (JSC::StructureStubInfo::initGetByIdProto): |
| (JSC::StructureStubInfo::initGetByIdChain): |
| (JSC::StructureStubInfo::initGetByIdSelfList): |
| (JSC::StructureStubInfo::initGetByIdProtoList): |
| (JSC::StructureStubInfo::initPutByIdTransition): |
| (JSC::StructureStubInfo::initPutByIdReplace): |
| (JSC::StructureStubInfo::seenOnce): |
| (JSC::StructureStubInfo::setSeen): |
| - Make StructureStubInfo store the type as an integer, rather than an OpcodeID, add a flag to track when an op has been executed once. |
| |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitGetById): |
| (JSC::BytecodeGenerator::emitPutById): |
| - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| (JSC::JIT::unlinkCall): |
| - Remove the "don't lazy link" stage of calls. |
| |
| * jit/JIT.h: |
| (JSC::JIT::compileCTIMachineTrampolines): |
| - Remove the "don't lazy link" stage of calls. |
| |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallSlowCase): |
| - Remove the "don't lazy link" stage of calls. |
| |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::JITThunks): |
| (JSC::JITThunks::tryCachePutByID): |
| (JSC::JITThunks::tryCacheGetByID): |
| (JSC::JITStubs::DEFINE_STUB_FUNCTION): |
| (JSC::JITStubs::getPolymorphicAccessStructureListSlot): |
| - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check. |
| |
| * jit/JITStubs.h: |
| (JSC::JITThunks::ctiStringLengthTrampoline): |
| (JSC::JITStubs::): |
| - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check. |
| |
| * wtf/PtrAndFlags.h: |
| (WTF::PtrAndFlags::PtrAndFlags): |
| (WTF::PtrAndFlags::operator!): |
| (WTF::PtrAndFlags::operator->): |
| - Add ! and -> operators, add constuctor with pointer argument. |
| |
| 2009-07-30 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Fixed failing tests seen on Windows buildbot. |
| |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * jit/JITStubs.h: |
| (JSC::): Use "int" instead of "bool" to guarantee a 32-bit result, |
| regardless of compiler. gcc on mac uses 32-bit values for bool, |
| but gcc on linux and MSVC on Windows use 8-bit values. |
| |
| 2009-07-30 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix: added missing symbols on Windows. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-07-30 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix: removed stale symbols on Windows. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| === End merge of nitro-extreme branch 2009-07-30 === |
| |
| 2009-07-20 Geoffrey Garen <ggaren@apple.com> |
| |
| Fixed a post-review typo in r46066 that caused tons of test failures. |
| |
| SunSpider reports no change. |
| |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::JSArray): Initialize the full vector capacity, to avoid |
| uninitialized members at the end. |
| |
| 2009-07-20 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows WebKit build fix: Added some missing exports. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-07-17 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Get the branch working on windows. |
| https://bugs.webkit.org/show_bug.cgi?id=27391 |
| |
| SunSpider says 0.3% faster. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Updated |
| MSVC export lists to fix linker errors. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added / removed |
| new / old project files. |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): Used #pragma pack to tell |
| MSVC that these structures represent actual memory layout, and should not be |
| automatically aligned. Changed the return value load to load a 64bit quantity |
| into the canonical registers. |
| |
| * jit/JIT.h: Moved OBJECT_OFFSETOF definition to StdLibExtras.h because |
| it's needed by more than just the JIT, and it supplements a standard library |
| macro (offsetof). |
| |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallInitializeCallFrame): Fixed an incorrectly signed |
| cast to resolve an MSVC warning. |
| |
| * jit/JITStubs.h: Used #pragma pack to tell MSVC that these structures |
| represent actual memory layout, and should not be automatically aligned. |
| |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::JSArray): Replaced memset_pattern8 with a for loop, since |
| memset_pattern8 is not portable. (I verified that this version of the loop |
| gives the best performance / generated code in GCC.) |
| |
| * runtime/JSObject.h: |
| (JSC::JSObject::JSObject): Removed accidental usage of FIELD_OFFSET -- |
| OBJECT_OFFSETOF is our new macro name. (FIELD_OFFSET conflicts with a |
| definition in winnt.h.) |
| |
| * runtime/JSValue.cpp: Added some headers needed by non-all-in-one builds. |
| |
| * runtime/JSValue.h: |
| (JSC::JSValue::): Made the tag signed, to match MSVC's signed enum values. |
| (GCC doesn't seem to care one way or the other.) |
| |
| * wtf/MainThread.cpp: Moved the StdLibExtras.h #include -- I did this a |
| while ago to resolve a conflict with winnt.h. I can't remember if it's truly |
| still needed, but what the heck. |
| |
| * wtf/StdLibExtras.h: Moved OBJECT_OFFSETOF definition here. |
| |
| 2009-07-06 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig (?). |
| |
| Fixed an assertion seen during the stress test. |
| |
| Don't assume that, if op1 is constant, op2 is not, and vice versa. Sadly, |
| not all constants get folded. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_jnless): |
| (JSC::JIT::emitSlow_op_jnless): |
| (JSC::JIT::emit_op_jnlesseq): |
| (JSC::JIT::emitSlow_op_jnlesseq): |
| |
| 2009-07-06 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Include op_convert_this in result caching. |
| |
| No change on SunSpider or v8. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_convert_this): |
| |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * jit/JITStubs.h: |
| (JSC::): Made the op_convert_this JIT stub return an EncodedJSValue, so |
| to maintain the result caching contract that { tag, payload } can be |
| found in { regT1, regT0 }. |
| |
| 2009-07-06 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Implemented result chaining. |
| |
| 1% faster on SunSpider. 4%-5% faster on v8. |
| |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::move): |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::movl_rr): Added an optimization to eliminate |
| no-op mov instructions, to simplify chaining. |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::JIT): |
| * jit/JIT.h: Added data members and helper functions for recording |
| chained results. We record both a mapping from virtual to machine register |
| and the opcode for which the mapping is valid, to help ensure that the |
| mapping isn't used after the mapped register has been stomped by other |
| instructions. |
| |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallVarargs): |
| (JSC::JIT::compileOpCallVarargsSlowCase): |
| (JSC::JIT::emit_op_ret): |
| (JSC::JIT::emit_op_construct_verify): |
| (JSC::JIT::compileOpCall): |
| (JSC::JIT::compileOpCallSlowCase): Chain function call results. |
| |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitLoadTag): |
| (JSC::JIT::emitLoadPayload): |
| (JSC::JIT::emitLoad): |
| (JSC::JIT::emitLoad2): |
| (JSC::JIT::isLabeled): |
| (JSC::JIT::map): |
| (JSC::JIT::unmap): |
| (JSC::JIT::isMapped): |
| (JSC::JIT::getMappedPayload): |
| (JSC::JIT::getMappedTag): Use helper functions when loading virtual |
| registers into machine registers, in case the loads can be eliminated |
| by chaining. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_mov): |
| (JSC::JIT::emit_op_end): |
| (JSC::JIT::emit_op_instanceof): |
| (JSC::JIT::emit_op_get_global_var): |
| (JSC::JIT::emit_op_put_global_var): |
| (JSC::JIT::emit_op_get_scoped_var): |
| (JSC::JIT::emit_op_put_scoped_var): |
| (JSC::JIT::emit_op_to_primitive): |
| (JSC::JIT::emit_op_resolve_global): |
| (JSC::JIT::emit_op_jneq_ptr): |
| (JSC::JIT::emit_op_next_pname): |
| (JSC::JIT::emit_op_to_jsnumber): |
| (JSC::JIT::emit_op_catch): Chain results from these opcodes. |
| |
| (JSC::JIT::emit_op_profile_will_call): |
| (JSC::JIT::emit_op_profile_did_call): Load the profiler into regT2 to |
| avoid stomping a chained result. |
| |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emit_op_method_check): |
| (JSC::JIT::emit_op_get_by_val): |
| (JSC::JIT::emit_op_get_by_id): Chain results from these opcodes. |
| |
| * jit/JITStubCall.h: |
| (JSC::JITStubCall::addArgument): Always use { regT1, regT0 }, to facilitate |
| chaining. |
| |
| (JSC::JITStubCall::call): Unmap all mapped registers, since our callee |
| stub might stomp them. |
| |
| 2009-07-01 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Don't reload values in emitBinaryDoubleOp. |
| |
| SunSpider reports a 0.6% progression. |
| |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_jnless): |
| (JSC::JIT::emit_op_jnlesseq): |
| (JSC::JIT::emitBinaryDoubleOp): |
| |
| 2009-07-01 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Convert op_div to load op1 and op2 up front. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_div): |
| |
| 2009-07-01 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Don't emit code in emitBinaryDoubleOp if code is unreachable, observable |
| via an empty (unlinked) jumplist passed in. This only effects op_jnless |
| and op_jnlesseq at present. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitSlow_op_jnless): |
| (JSC::JIT::emitSlow_op_jnlesseq): |
| (JSC::JIT::emitBinaryDoubleOp): |
| |
| 2009-07-01 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Converted op_mod to put { tag, payload } in { regT1, regT0 }, and |
| tidied up its constant case. |
| |
| SunSpider reports a 0.2% regression, but a micro-benchmark of op_mod |
| shows a 12% speedup, and the SunSpider test that uses op_mod most should |
| benefit a lot from result caching in the end, since it almost always |
| performs (expression) % constant. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_mod): |
| (JSC::JIT::emitSlow_op_mod): |
| |
| 2009-06-30 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Converted some more arithmetic ops to put { tag, payload } in |
| { regT1, regT0 }. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_mul): |
| (JSC::JIT::emitSlow_op_mul): |
| |
| 2009-06-30 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Converted some more arithmetic ops to put { tag, payload } in |
| { regT1, regT0 }, and added a case for subtract constant. |
| |
| SunSpider says no change. v8 says 0.3% slower. |
| |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_add): |
| (JSC::JIT::emitAdd32Constant): |
| (JSC::JIT::emitSlow_op_add): |
| (JSC::JIT::emit_op_sub): |
| (JSC::JIT::emitSub32Constant): |
| (JSC::JIT::emitSlow_op_sub): |
| |
| 2009-06-30 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Remove more uses of addressFor(), load double constants directly from |
| the constantpool in the CodeBlock, rather than from the register file. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitAdd32Constant): |
| (JSC::JIT::emitBinaryDoubleOp): |
| |
| 2009-06-30 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Fixed a bug in postfix ops, where we would treat x = x++ and x = x-- |
| as a no-op, even if x were not an int, and the ++/-- could have side-effects. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_post_inc): |
| (JSC::JIT::emitSlow_op_post_inc): |
| (JSC::JIT::emit_op_post_dec): |
| (JSC::JIT::emitSlow_op_post_dec): |
| |
| 2009-06-30 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Converted some arithmetic ops to put { tag, payload } in |
| { regT1, regT0 }. |
| |
| SunSpider says 0.7% faster. v8 says no change. |
| |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_jnless): |
| (JSC::JIT::emit_op_jnlesseq): |
| (JSC::JIT::emit_op_lshift): |
| (JSC::JIT::emit_op_rshift): |
| (JSC::JIT::emit_op_bitand): |
| (JSC::JIT::emit_op_bitor): |
| (JSC::JIT::emit_op_bitxor): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::isOperandConstantImmediateInt): |
| (JSC::JIT::getOperandConstantImmediateInt): |
| |
| 2009-06-30 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Start removing cases of addressFor(). |
| |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitAdd32Constant): |
| (JSC::JIT::emitBinaryDoubleOp): |
| (JSC::JIT::emit_op_div): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitLoadDouble): |
| (JSC::JIT::emitLoadInt32ToDouble): |
| (JSC::JIT::emitStoreDouble): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_jfalse): |
| (JSC::JIT::emit_op_jtrue): |
| |
| 2009-06-30 Geoffrey Garen <ggaren@apple.com> |
| |
| Rolled back in my last patch with regression fixed. |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileSlowCases): |
| * jit/JIT.h: |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_loop_if_less): |
| (JSC::JIT::emit_op_loop_if_lesseq): |
| (JSC::JIT::emit_op_resolve_global): |
| (JSC::JIT::emitSlow_op_resolve_global): |
| (JSC::JIT::emit_op_eq): |
| (JSC::JIT::emitSlow_op_eq): |
| (JSC::JIT::emit_op_neq): |
| (JSC::JIT::emitSlow_op_neq): |
| |
| 2009-06-30 Geoffrey Garen <ggaren@apple.com> |
| |
| Rolled out my last patch because it was a 2% SunSpider regression. |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileSlowCases): |
| * jit/JIT.h: |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_loop_if_less): |
| (JSC::JIT::emit_op_loop_if_lesseq): |
| (JSC::JIT::emit_op_resolve_global): |
| (JSC::JIT::emit_op_eq): |
| (JSC::JIT::emitSlow_op_eq): |
| (JSC::JIT::emit_op_neq): |
| (JSC::JIT::emitSlow_op_neq): |
| |
| 2009-06-30 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Gavin "Sam Weinig" Barraclough. |
| |
| Standardized the rest of our opcodes to put { tag, payload } in |
| { regT1, regT0 } where possible. |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileSlowCases): |
| * jit/JIT.h: |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_loop_if_less): |
| (JSC::JIT::emit_op_loop_if_lesseq): |
| (JSC::JIT::emit_op_resolve_global): |
| (JSC::JIT::emitSlow_op_resolve_global): |
| (JSC::JIT::emit_op_eq): |
| (JSC::JIT::emitSlow_op_eq): |
| (JSC::JIT::emit_op_neq): |
| (JSC::JIT::emitSlow_op_neq): |
| |
| 2009-06-30 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Replace calls to store32(tagFor()) and store32(payloadFor()) |
| with emitStoreInt32(), emitStoreBool(), and emitStoreCell(). |
| |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_negate): |
| (JSC::JIT::emit_op_lshift): |
| (JSC::JIT::emit_op_rshift): |
| (JSC::JIT::emit_op_bitand): |
| (JSC::JIT::emitBitAnd32Constant): |
| (JSC::JIT::emit_op_bitor): |
| (JSC::JIT::emitBitOr32Constant): |
| (JSC::JIT::emit_op_bitxor): |
| (JSC::JIT::emitBitXor32Constant): |
| (JSC::JIT::emit_op_bitnot): |
| (JSC::JIT::emit_op_post_inc): |
| (JSC::JIT::emit_op_post_dec): |
| (JSC::JIT::emit_op_pre_inc): |
| (JSC::JIT::emit_op_pre_dec): |
| (JSC::JIT::emit_op_add): |
| (JSC::JIT::emitAdd32Constant): |
| (JSC::JIT::emit_op_sub): |
| (JSC::JIT::emitSub32ConstantLeft): |
| (JSC::JIT::emitSub32ConstantRight): |
| (JSC::JIT::emit_op_mul): |
| (JSC::JIT::emitSlow_op_mul): |
| (JSC::JIT::emit_op_div): |
| (JSC::JIT::emit_op_mod): |
| * jit/JITCall.cpp: |
| (JSC::JIT::emit_op_load_varargs): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitStoreInt32): |
| (JSC::JIT::emitStoreCell): |
| (JSC::JIT::emitStoreBool): |
| (JSC::JIT::emitStore): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_instanceof): |
| (JSC::JIT::emit_op_not): |
| (JSC::JIT::emit_op_eq): |
| (JSC::JIT::emitSlow_op_eq): |
| (JSC::JIT::emit_op_neq): |
| (JSC::JIT::emitSlow_op_neq): |
| (JSC::JIT::compileOpStrictEq): |
| (JSC::JIT::emit_op_eq_null): |
| (JSC::JIT::emit_op_neq_null): |
| * jit/JITStubCall.h: |
| (JSC::JITStubCall::call): |
| |
| 2009-06-30 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Standardized the rest of the property access instructions to put { tag, |
| payload } in { regT1, regT0 }. |
| |
| Small v8 speedup, 0.2% SunSpider slowdown. |
| |
| * jit/JIT.h: |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitLoad): |
| (JSC::JIT::emitLoad2): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emit_op_get_by_val): |
| (JSC::JIT::emitSlow_op_get_by_val): |
| (JSC::JIT::emit_op_put_by_val): |
| (JSC::JIT::emitSlow_op_put_by_val): |
| (JSC::JIT::emit_op_put_by_id): |
| (JSC::JIT::emitSlow_op_put_by_id): |
| (JSC::JIT::patchPutByIdReplace): |
| |
| 2009-06-29 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Various cleanups. |
| - Use fpRegT* instead of X86::xmm*. |
| - Use a switch statement in emitBinaryDoubleOp instead of a bunch of |
| if/elses. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitAdd32Constant): |
| (JSC::JIT::emitBinaryDoubleOp): |
| (JSC::JIT::emit_op_div): |
| |
| 2009-06-29 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Add inline code dealing with doubles for op_jfalse and op_jtrue. |
| |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::): |
| (JSC::MacroAssemblerX86Common::zeroDouble): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_jfalse): |
| (JSC::JIT::emit_op_jtrue): |
| |
| 2009-06-28 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Standardized op_get_by_id to put { tag, payload } in { regT1, regT0 }. |
| |
| SunSpider and v8 report maybe 0.2%-0.4% regressions, but the optimization |
| this enables will win much more than that back. |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| * jit/JIT.h: |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emit_op_method_check): |
| (JSC::JIT::emit_op_get_by_id): |
| (JSC::JIT::compileGetByIdHotPath): |
| (JSC::JIT::compileGetByIdSlowCase): |
| (JSC::JIT::patchGetByIdSelf): |
| (JSC::JIT::privateCompilePatchGetArrayLength): |
| (JSC::JIT::privateCompileGetByIdProto): |
| (JSC::JIT::privateCompileGetByIdSelfList): |
| (JSC::JIT::privateCompileGetByIdProtoList): |
| (JSC::JIT::privateCompileGetByIdChainList): |
| (JSC::JIT::privateCompileGetByIdChain): |
| |
| 2009-06-26 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Standardized op_call to put { tag, payload } in { regT1, regT0 }. |
| |
| SunSpider and v8 report no change. |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallInitializeCallFrame): |
| (JSC::JIT::compileOpCallSetupArgs): |
| (JSC::JIT::compileOpConstructSetupArgs): |
| (JSC::JIT::compileOpCallVarargsSetupArgs): |
| (JSC::JIT::compileOpCallVarargs): |
| (JSC::JIT::compileOpCall): |
| (JSC::JIT::compileOpCallSlowCase): |
| |
| 2009-06-26 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Handle multiplying by zero a little better by |
| inlining the case that both operands are non-negative |
| into the slowpath. |
| |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::branchOr32): |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_mul): |
| (JSC::JIT::emitSlow_op_mul): |
| |
| 2009-06-25 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Optimize x++ to ++x inside for loops. |
| |
| Sadly, no measurable speedup, but this should help with result chaining. |
| |
| * parser/Nodes.cpp: |
| (JSC::ForNode::emitBytecode): |
| |
| 2009-06-25 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitSlow_op_bitnot): |
| (JSC::JIT::emit_op_post_inc): |
| |
| 2009-06-25 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_bitnot): |
| (JSC::JIT::emit_op_post_dec): |
| (JSC::JIT::emit_op_pre_inc): |
| (JSC::JIT::emitSlow_op_pre_inc): |
| (JSC::JIT::emit_op_pre_dec): |
| (JSC::JIT::emitSlow_op_pre_dec): |
| |
| 2009-06-25 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_negate): |
| (JSC::JIT::emitSlow_op_negate): |
| * jit/JITCall.cpp: |
| (JSC::JIT::emit_op_construct_verify): |
| (JSC::JIT::emitSlow_op_construct_verify): |
| |
| 2009-06-25 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_loop_if_true): |
| (JSC::JIT::emit_op_jfalse): |
| (JSC::JIT::emit_op_jtrue): |
| (JSC::JIT::emit_op_jeq_null): |
| (JSC::JIT::emit_op_jneq_null): |
| (JSC::JIT::emit_op_eq_null): |
| (JSC::JIT::emit_op_neq_null): |
| |
| 2009-06-25 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig (sort of, maybe). |
| |
| Fixed some ASSERTs in http/tests/security. |
| |
| These ASSERTs were introduced by http://trac.webkit.org/changeset/45057, |
| but the underlying problem was actually older. http://trac.webkit.org/changeset/45057 |
| just exposed the problem by enabling optimization in more cases. |
| |
| The ASSERTs fired because we tested PropertySlot::slotBase() for validity, |
| but slotBase() ASSERTs if it's invalid, so we would ASSERT before |
| the test could happen. Solution: Remove the ASSERT. Maybe it was valid |
| once, but it clearly goes against a pattern we've deployed of late. |
| |
| The underlying problem was that WebCore would re-use a PropertySlot in |
| the case of a forwarding access, and the second use would not completely |
| overwrite the first use. Solution: Make sure to overwrite m_offset when |
| setting a value on a PropertySlot. (Other values already get implicitly |
| overwritten during reuse.) |
| |
| * runtime/PropertySlot.h: |
| (JSC::PropertySlot::PropertySlot): |
| (JSC::PropertySlot::setValueSlot): |
| (JSC::PropertySlot::setValue): |
| (JSC::PropertySlot::setRegisterSlot): |
| (JSC::PropertySlot::setUndefined): |
| (JSC::PropertySlot::slotBase): |
| (JSC::PropertySlot::clearOffset): |
| |
| 2009-06-24 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Enable JIT_OPTIMIZE_METHOD_CALLS on the branch, implementation matches current implemenatation in ToT. |
| |
| * jit/JIT.h: |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emit_op_method_check): |
| (JSC::JIT::emitSlow_op_method_check): |
| (JSC::JIT::emit_op_get_by_id): |
| (JSC::JIT::compileGetByIdHotPath): |
| (JSC::JIT::emitSlow_op_get_by_id): |
| (JSC::JIT::compileGetByIdSlowCase): |
| |
| 2009-06-23 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bit off a tiny bit more of standardizing opcode behavior to help with result |
| caching. |
| |
| SunSpider reports no change, v8 maybe a tiny speedup. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_to_jsnumber): |
| (JSC::JIT::emitSlow_op_to_jsnumber): |
| (JSC::JIT::emit_op_convert_this): |
| (JSC::JIT::emitSlow_op_convert_this): |
| |
| 2009-06-23 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bit off a tiny bit more of standardizing opcode behavior to help with result |
| caching -- including removing my old enemy, op_resolve_function, because |
| it was non-standard, and removing it felt better than helping it limp along. |
| |
| SunSpider reports no change, v8 maybe a tiny speedup. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::dump): |
| * bytecode/Opcode.h: |
| * bytecompiler/BytecodeGenerator.cpp: |
| * bytecompiler/BytecodeGenerator.h: |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileMainPass): |
| * jit/JIT.h: |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_get_scoped_var): |
| (JSC::JIT::emit_op_put_scoped_var): |
| (JSC::JIT::emit_op_to_primitive): |
| (JSC::JIT::emitSlow_op_to_primitive): |
| * jit/JITStubs.cpp: |
| * jit/JITStubs.h: |
| * parser/Nodes.cpp: |
| (JSC::FunctionCallResolveNode::emitBytecode): |
| |
| 2009-06-23 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bit off a tiny bit of standardizing opcode behavior to help with result |
| caching. |
| |
| 0.6% SunSpider speedup. 0.3% v8 speedup. |
| |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitLoad): Accomodate a base register that overlaps with payload |
| by loading tag before payload, to avoid stomping base/payload. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_mov): Abide by the standard "tag in regT1, payload in |
| regT0" semantics. |
| |
| (JSC::JIT::emit_op_get_global_var): |
| (JSC::JIT::emit_op_put_global_var): Ditto. Also, removed some irrelevent |
| loads while I was at it. The global object's "d" pointer never changes |
| after construction. |
| |
| 2009-06-23 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Remove 'arguments' field from Register union (again). |
| This time do so without breaking tests (radical, I know). |
| |
| * interpreter/CallFrame.h: |
| (JSC::ExecState::optionalCalleeArguments): |
| (JSC::ExecState::setArgumentCount): |
| (JSC::ExecState::init): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::dumpRegisters): |
| (JSC::Interpreter::unwindCallFrame): |
| (JSC::Interpreter::privateExecute): |
| (JSC::Interpreter::retrieveArguments): |
| * interpreter/Register.h: |
| (JSC::Register::withInt): |
| (JSC::Register::): |
| (JSC::Register::Register): |
| (JSC::Register::i): |
| * jit/JITStubs.cpp: |
| (JSC::JITStubs::cti_op_tear_off_arguments): |
| * runtime/Arguments.h: |
| (JSC::JSActivation::copyRegisters): |
| (JSC::Register::arguments): |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::argumentsGetter): |
| * runtime/JSActivation.h: |
| |
| 2009-06-23 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Removed some result register tracking cruft in preparation for a new |
| result tracking mechanism. |
| |
| SunSpider reports no change. |
| |
| * assembler/AbstractMacroAssembler.h: |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::JmpDst::JmpDst): No need to track jump targets in |
| machine code; we already do this in bytecode. |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::JIT): |
| (JSC::JIT::emitTimeoutCheck): Make sure to save and restore the result |
| registers, so an opcode with a timeout check can still benefit from result |
| register caching. |
| |
| (JSC::JIT::privateCompileMainPass): |
| (JSC::JIT::privateCompileSlowCases): Removed calls to killLastResultRegister() |
| in preparation for something new. |
| |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_jnless): |
| (JSC::JIT::emit_op_jnlesseq): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitGetFromCallFrameHeaderPtr): |
| (JSC::JIT::emitGetFromCallFrameHeader32): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_jmp): |
| (JSC::JIT::emit_op_jfalse): |
| (JSC::JIT::emit_op_jtrue): |
| (JSC::JIT::emit_op_jeq_null): |
| (JSC::JIT::emit_op_jneq_null): |
| (JSC::JIT::emit_op_jneq_ptr): |
| (JSC::JIT::emit_op_jsr): |
| (JSC::JIT::emit_op_sret): |
| (JSC::JIT::emit_op_jmp_scopes): ditto |
| |
| * jit/JITStubCall.h: |
| (JSC::JITStubCall::JITStubCall): |
| (JSC::JITStubCall::getArgument): added a mechanism for reloading an argument |
| you passed to a JIT stub, for use in emitTimeoutCheck. |
| |
| 2009-06-23 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Remove now-useless inplace variants of binary ops. |
| |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_bitand): |
| (JSC::JIT::emit_op_bitor): |
| (JSC::JIT::emit_op_bitxor): |
| (JSC::JIT::emit_op_add): |
| (JSC::JIT::emit_op_sub): |
| (JSC::JIT::emit_op_mul): |
| |
| 2009-06-23 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Move off memory operands to aid in re-enabling result caching. |
| |
| - No regression measured. |
| |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_negate): |
| (JSC::JIT::emit_op_jnless): |
| (JSC::JIT::emit_op_jnlesseq): |
| (JSC::JIT::emit_op_lshift): |
| (JSC::JIT::emit_op_rshift): |
| (JSC::JIT::emit_op_bitand): |
| (JSC::JIT::emitBitAnd32Constant): |
| (JSC::JIT::emitBitAnd32InPlace): |
| (JSC::JIT::emit_op_bitor): |
| (JSC::JIT::emitBitOr32Constant): |
| (JSC::JIT::emitBitOr32InPlace): |
| (JSC::JIT::emit_op_bitxor): |
| (JSC::JIT::emitBitXor32Constant): |
| (JSC::JIT::emitBitXor32InPlace): |
| (JSC::JIT::emit_op_bitnot): |
| (JSC::JIT::emit_op_post_inc): |
| (JSC::JIT::emit_op_post_dec): |
| (JSC::JIT::emit_op_pre_inc): |
| (JSC::JIT::emitSlow_op_pre_inc): |
| (JSC::JIT::emit_op_pre_dec): |
| (JSC::JIT::emitSlow_op_pre_dec): |
| (JSC::JIT::emit_op_add): |
| (JSC::JIT::emitAdd32Constant): |
| (JSC::JIT::emitAdd32InPlace): |
| (JSC::JIT::emitSlow_op_add): |
| (JSC::JIT::emitSlowAdd32Constant): |
| (JSC::JIT::emit_op_sub): |
| (JSC::JIT::emitSlow_op_sub): |
| (JSC::JIT::emitSub32ConstantLeft): |
| (JSC::JIT::emitSub32ConstantRight): |
| (JSC::JIT::emitSub32InPlaceLeft): |
| (JSC::JIT::emitSub32InPlaceRight): |
| (JSC::JIT::emitBinaryDoubleOp): |
| (JSC::JIT::emit_op_mul): |
| (JSC::JIT::emitMul32InPlace): |
| (JSC::JIT::emit_op_div): |
| (JSC::JIT::emit_op_mod): |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallVarargs): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_loop_if_less): |
| (JSC::JIT::emit_op_loop_if_lesseq): |
| (JSC::JIT::emit_op_instanceof): |
| (JSC::JIT::emit_op_to_primitive): |
| (JSC::JIT::emit_op_not): |
| (JSC::JIT::emit_op_jneq_ptr): |
| (JSC::JIT::emit_op_eq): |
| (JSC::JIT::emit_op_neq): |
| (JSC::JIT::emit_op_to_jsnumber): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emit_op_get_by_val): |
| (JSC::JIT::emit_op_put_by_val): |
| |
| 2009-06-23 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Fixed some missing and/or misplaced labels in bytecode generation, so |
| we don't have to work around them in JIT code generation. |
| |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitJumpSubroutine): |
| * parser/Nodes.cpp: |
| (JSC::TryNode::emitBytecode): |
| |
| 2009-06-22 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| For member function calls, emit "this" directly into the "this" slot |
| for the function call, instead of moving it there later. This reduces |
| time spent in op_mov during certain calls, like "a.b.c()". |
| |
| 1%-2% speedup on v8, mostly richards and delta-blue. |
| |
| * parser/Nodes.cpp: |
| (JSC::FunctionCallDotNode::emitBytecode): |
| |
| 2009-06-22 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Remove 'arguments' field from Register union. Having JSCell derived types in the union is |
| dangerous since it opens the possibility for the field to be written as a raw pointer but |
| then read as a JSValue. This will lead to statle data being read for the tag, which may |
| be dangerous. Having removed Arguments* types form Register, all arguments objects must |
| always explicitly be stored in the register file as JSValues. |
| |
| * interpreter/CallFrame.h: |
| (JSC::ExecState::optionalCalleeArguments): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::unwindCallFrame): |
| (JSC::Interpreter::privateExecute): |
| (JSC::Interpreter::retrieveArguments): |
| * interpreter/Register.h: |
| (JSC::Register::): |
| * jit/JITStubs.cpp: |
| (JSC::JITStubs::cti_op_tear_off_arguments): |
| * runtime/Arguments.h: |
| (JSC::JSActivation::copyRegisters): |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::argumentsGetter): |
| * runtime/JSActivation.h: |
| |
| 2009-06-03 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Add back known this value optimization by abstracting |
| slow case if not JSCell jumps. |
| |
| * jit/JIT.h: |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallVarargs): |
| (JSC::JIT::compileOpCallVarargsSlowCase): |
| (JSC::JIT::compileOpCall): |
| (JSC::JIT::compileOpCallSlowCase): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitJumpSlowCaseIfNotJSCell): |
| (JSC::JIT::linkSlowCaseIfNotJSCell): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_instanceof): |
| (JSC::JIT::emitSlow_op_instanceof): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emit_op_get_by_val): |
| (JSC::JIT::emitSlow_op_get_by_val): |
| (JSC::JIT::emit_op_put_by_val): |
| (JSC::JIT::emitSlow_op_put_by_val): |
| (JSC::JIT::emit_op_get_by_id): |
| (JSC::JIT::emitSlow_op_get_by_id): |
| (JSC::JIT::emit_op_put_by_id): |
| (JSC::JIT::emitSlow_op_put_by_id): |
| |
| 2009-06-01 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Fixed some of the regression in crypto-aes.js. (8.5% speedup in |
| crypto-aes.js.) |
| |
| SunSpider reports no change overall. |
| |
| Division was producing double results, which took the slow path through |
| array access code. |
| |
| Strangely, all my attempts at versions of this patch that modified array |
| access code to accept ints encoded as doubles along the fast or slow paths |
| were regressions. So I did this instead. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_div): When dividing an int by an int, go ahead and try |
| to turn the result into an int. Don't just do int division, though, because |
| testing shows it to be slower than SSE double division, and the corner |
| cases are pretty complicated / lengthy on top of that. Also, don't try |
| to canonicalize division of known tiny numerators into ints, since that's a |
| waste of time. |
| |
| 2009-05-26 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Fixed a regression caused by my recent fix for NaN. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitBinaryDoubleOp): Actually do the comparison in reverse |
| order, like the ChangeLog said we would, bokay? |
| |
| 2009-05-26 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig and Oliver Hunt. |
| |
| Fixed two edge cases in %: |
| |
| - Don't do -2147483648 % x as a fast case, since you might do -2147483648 % -1, |
| which will signal a hardware exception due to overflow. |
| |
| - In the case of a zero remainder, be sure to store negative zero if the |
| dividend was zero. |
| |
| SunSpider reports no change. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_mod): |
| (JSC::JIT::emitSlow_op_mod): |
| |
| 2009-05-25 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Fixed a regression when comparing to NaN. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitBinaryDoubleOp): For op_jnless and op_jnless_eq, do the |
| comparison in reverse order, and jump if the result is below or |
| below-or-equal. This ensures that we do jump in the case of NaN. |
| |
| 2009-05-25 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| SunSpider says no change. |
| |
| Fixed regressions in fast/js/var-declarations-shadowing.html and |
| fast/js/equality.html, caused by recent == and != optimizations. |
| |
| * jit/JITStubs.cpp: |
| (JSC::JITStubs::cti_op_eq): Don't treat "compare to string" as always |
| numeric or string comparison. If the second operand is an object, you |
| need to ToPrimitive it, and start all over again. Also, I wrote out each |
| of the possible cases explicitly, to cut down on redundant branching. |
| |
| 2009-05-25 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Mark Rowe. |
| |
| Fix bug in fast/js/constant-folding.html where we were not negating |
| -0 properly. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_negate): |
| |
| 2009-05-23 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Refactored new slow case codegen for == and !=. |
| |
| SunSpider reports no change, maybe a tiny speedup. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emitSlow_op_eq): |
| (JSC::JIT::emitSlow_op_neq): Made a vptr comparison a *Ptr operation, |
| instead of *32, to make it portable to 64bit. Reorganized the string |
| and generic cases to make their control flow a little clearer. |
| |
| 2009-05-23 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Optimized == and != for our new value representation -- especially for strings. |
| |
| 14% speedup on date-format-tofte. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_eq): |
| (JSC::JIT::emitSlow_op_eq): |
| (JSC::JIT::emit_op_neq): |
| (JSC::JIT::emitSlow_op_neq): |
| * jit/JITStubCall.h: |
| (JSC::JITStubCall::JITStubCall): |
| * jit/JITStubs.cpp: |
| (JSC::JITStubs::cti_op_eq): |
| (JSC::JITStubs::cti_op_eq_strings): |
| (JSC::JITStubs::cti_op_call_eval): |
| * jit/JITStubs.h: |
| (JSC::): |
| * runtime/JSValue.h: |
| |
| 2009-05-22 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Fix non-SSE enabled builds. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitSlow_op_add): Don't early return here, we still need to call the JIT stub. |
| (JSC::JIT::emitSlow_op_sub): Ditto. |
| |
| 2009-05-22 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Here's a thought: let's not take a jit stub call just to multiply by 1, |
| bokay? |
| |
| imul doesn't set the zero flag, so to test for a zero result, we need |
| an explicit instruction. (Luckily, it does set the overflow flag, so |
| we can still use that.) |
| |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_mul): |
| (JSC::JIT::emitSlow_op_mul): |
| (JSC::JIT::emitMul32InPlace): |
| |
| 2009-05-22 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey "Premature Commit" Garen. |
| |
| Add back constant integer cases for op_add. |
| |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_add): |
| (JSC::JIT::emitAdd32Constant): |
| (JSC::JIT::emitSlow_op_add): |
| (JSC::JIT::emitSlowAdd32Constant): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::getConstantOperandImmediateDouble): |
| (JSC::JIT::isOperandConstantImmediateDouble): |
| |
| 2009-05-22 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Added fast double cases for op_jnless and op_jnlesseq. |
| |
| * assembler/AbstractMacroAssembler.h: |
| (JSC::AbstractMacroAssembler::JumpList::jumps): New accesor, used by |
| addSlowCase. |
| |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::ucomisd_rm): New method for comparing register to |
| memory. |
| |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_jnless): |
| (JSC::JIT::emitSlow_op_jnless): |
| (JSC::JIT::emit_op_jnlesseq): |
| (JSC::JIT::emitSlow_op_jnlesseq): |
| (JSC::JIT::emit_op_add): |
| (JSC::JIT::emit_op_sub): |
| (JSC::JIT::emitBinaryDoubleOp): |
| (JSC::JIT::emit_op_mul): |
| (JSC::JIT::emit_op_div): Modified emitBinaryDoubleOp to accept comparison/jump |
| operations in addition to operations with explicit result registers. |
| |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::addSlowCase): Added an "addSlowCase" for JumpLists, so clients |
| can track multiple jumps to the same slow case condition together. |
| |
| 2009-05-21 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Implement op_negate inline fast cases. |
| |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::neg32): |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::): |
| (JSC::X86Assembler::negl_m): |
| (JSC::X86Assembler::xorpd_rr): |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileMainPass): |
| (JSC::JIT::privateCompileSlowCases): |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_negate): |
| (JSC::JIT::emitSlow_op_negate): |
| |
| 2009-05-20 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Update the patchOffsetGetByIdSlowCaseCall constant for the |
| case that OPCODE_SAMPLING is enabled. |
| |
| * jit/JIT.h: |
| |
| 2009-05-20 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Added support for inline subtraction of doubles. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_sub): |
| (JSC::JIT::emitSlow_op_sub): |
| (JSC::JIT::emitSlowSub32InPlaceLeft): |
| (JSC::JIT::emitBinaryDoubleOp): |
| |
| 2009-05-20 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Added support for inline division. |
| |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::): |
| (JSC::X86Assembler::divsd_rr): |
| (JSC::X86Assembler::divsd_mr): |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::dump): |
| * bytecode/Opcode.h: |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitBinaryOp): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileMainPass): |
| (JSC::JIT::privateCompileSlowCases): |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitBinaryDoubleOp): |
| (JSC::JIT::emit_op_div): |
| (JSC::JIT::emitSlow_op_div): |
| |
| 2009-05-20 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Added support for inline addition of doubles. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_add): |
| (JSC::JIT::emitSlow_op_add): |
| (JSC::JIT::emitSlowAdd32InPlace): |
| (JSC::JIT::emitBinaryDoubleOp): |
| (JSC::JIT::emit_op_mul): |
| (JSC::JIT::emitSlow_op_mul): |
| |
| 2009-05-20 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Factored inline double operations into a helper function, so that we |
| can reuse this code for other math operations. |
| |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitBinaryDoubleOp): |
| (JSC::JIT::emit_op_mul): |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallInitializeCallFrame): |
| |
| 2009-05-20 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Added support for inline multiplication of doubles. |
| |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::cvtsi2sd_mr): New function, useful for loading an |
| int32 into a double register. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_mul): |
| (JSC::JIT::emitSlow_op_mul): Filled out these cases for double arithmetic. |
| |
| * jit/JIT.h: |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::addressFor): New function, useful for addressing a JSValue's |
| full 64bits as a double. |
| |
| 2009-05-19 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Implement and enable optimized calls. |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): Add ENABLE(JIT_OPTIMIZE_CALL) guards |
| around the the optimize call only trampolines (virtualCallPreLink and virtualCallLink). |
| Update the trampolines to account for the new JSValue representation. |
| (JSC::JIT::unlinkCall): Use NULL instead of JSValue noValue. |
| |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCall): Update to account for the new JSValue representation |
| (JSC::JIT::compileOpCallSlowCase): Ditto. |
| |
| * jit/JITStubs.h: Remove incorrect !ENABLE(JIT_OPTIMIZE_CALL) guard. |
| |
| * wtf/Platform.h: Enable ENABLE_JIT_OPTIMIZE_CALL. |
| |
| 2009-05-19 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Implement and enable optimized property access. |
| |
| * assembler/AbstractMacroAssembler.h: Fix comment. |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): Remove array length trampoline |
| and implement the string length trampoline. |
| * jit/JIT.h: Add new constants for patch offsets. |
| * jit/JITInlineMethods.h: Remove FIELD_OFFSET which is now in StdLibExtras.h. |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emit_op_get_by_id): |
| (JSC::JIT::emitSlow_op_get_by_id): |
| (JSC::JIT::emit_op_put_by_id): |
| (JSC::JIT::emitSlow_op_put_by_id): |
| (JSC::JIT::compilePutDirectOffset): |
| (JSC::JIT::compileGetDirectOffset): |
| (JSC::JIT::privateCompilePutByIdTransition): |
| (JSC::JIT::patchGetByIdSelf): |
| (JSC::JIT::patchPutByIdReplace): |
| (JSC::JIT::privateCompilePatchGetArrayLength): |
| (JSC::JIT::privateCompileGetByIdProto): |
| (JSC::JIT::privateCompileGetByIdSelfList): |
| (JSC::JIT::privateCompileGetByIdProtoList): |
| (JSC::JIT::privateCompileGetByIdChainList): |
| (JSC::JIT::privateCompileGetByIdChain): |
| * jit/JITStubCall.h: |
| (JSC::JITStubCall::addArgument): Add version of addArgument that takes |
| two registers for the tag and payload. |
| * jit/JITStubs.cpp: |
| (JSC::JITStubs::JITStubs): Remove array length trampoline pointer. |
| (JSC::JITStubs::cti_op_get_by_id_self_fail): |
| * jit/JITStubs.h: |
| * runtime/JSObject.h: |
| (JSC::JSObject::JSObject): Move m_inheritorID below the property storage |
| to align it to a 16 byte boundary. |
| * wtf/Platform.h: Enable ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS |
| * wtf/StdLibExtras.h: Move FIELD_OFFSET here. |
| |
| 2009-05-17 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Remove unneeded ExecState parameter from the number JSValue constructors. |
| |
| * runtime/JSValue.h: |
| (JSC::jsNumber): |
| (JSC::jsNaN): |
| (JSC::JSValue::JSValue): |
| |
| 2009-05-15 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Implemented fast path for op_put_by_val when putting to arrays. |
| |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emit_op_put_by_val): |
| (JSC::JIT::emitSlow_op_put_by_val): |
| |
| 2009-05-15 Geoffrey Garen <ggaren@apple.com> (Mostly by Sam) |
| |
| Reviewed by Sam Weinig. |
| |
| Implemented fast path for op_get_by_val when accessing array. |
| |
| * jit/JIT.cpp: |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emit_op_get_by_val): |
| (JSC::JIT::emitSlow_op_get_by_val): |
| |
| 2009-05-14 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Fixed a failure in fast/js/math-transforms.html caused by failing to |
| preserve -0 in multiplication. |
| |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::jz): |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_mul): |
| (JSC::JIT::emitSlow_op_mul): |
| (JSC::JIT::emitMul32Constant): |
| (JSC::JIT::emitMul32InPlace): Check both for overflow and for zero when |
| doing multiplication. Use a slow case to get these right. |
| |
| 2009-05-14 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Fixed a bug in the varargs calling convention. |
| |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallVarargs): Move the argument count into regT1, |
| since that's where ctiVirtualCall expects it to be. |
| |
| 2009-05-14 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Fixed a small bug in instanceof's looping code. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_instanceof): NULL means the object has no prototype, |
| so only loop when *not* equal to NULL. |
| |
| 2009-05-14 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Fixed a small bug in instanceof's result writing code. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_instanceof): Make sure to fill out the payload bits |
| in all cases. |
| |
| 2009-05-14 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Removed an invalid assertion in cti_op_urshift which |
| depended on a fast path for op_urshift which has |
| never existed. |
| |
| * jit/JITStubs.cpp: |
| (JSC::JITStubs::cti_op_urshift): |
| |
| 2009-05-14 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Fixed loop_if_true, which had the same reversed test that jtrue had. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_loop_if_true): |
| |
| 2009-05-14 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| In op_neq, we apparently want to check that one value |
| does *not* equal another. Go figure. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_neq): |
| |
| 2009-05-14 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| The slow case of op_mod should call op_mod's jit stub, |
| not op_mul. That would be dumb. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitSlow_op_mod): |
| |
| 2009-05-14 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Fixed problems when using 'arguments' due to a half-initialized register. |
| |
| * interpreter/CallFrame.h: |
| (JSC::ExecState::setCalleeArguments): |
| (JSC::ExecState::init): Require a full JSValue when setting up the |
| 'arguments' virtual register, since this register is accessible from JIT |
| code and bytecode, and needs to be a true JSValue. |
| |
| * interpreter/CallFrameClosure.h: |
| (JSC::CallFrameClosure::resetCallFrame): ditto |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): ditto |
| |
| * interpreter/Register.h: Removed the constructor that allowed assignment |
| of a JSArguments* to a register. That is not safe. See above. |
| |
| * jit/JITStubs.cpp: |
| (JSC::JITStubs::cti_op_create_arguments): |
| (JSC::JITStubs::cti_op_create_arguments_no_params): ditto |
| |
| 2009-05-14 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| We really want to go to the slow case in op_jfalse and |
| op_jtrue if the value is *not* boolean. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_jfalse): |
| (JSC::JIT::emit_op_jtrue): |
| |
| 2009-05-14 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Flipped the condition when emitting a an op_loop_if_less or op_loop_if_lesseq |
| if the first operand is a constant. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_loop_if_less): |
| (JSC::JIT::emit_op_loop_if_lesseq): |
| |
| 2009-05-14 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Added missing return in op_jnless and op_jnlesseq. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_jnless): |
| (JSC::JIT::emit_op_jnlesseq): |
| |
| 2009-05-14 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Load constants into the the register file as a temporary measure to |
| aid bring up. This allows us to use to treat constants like any |
| other virtual register. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_enter): |
| (JSC::JIT::emit_op_enter_with_activation): |
| |
| 2009-05-14 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Implemented op_strict_eq. Original patch by Snowy, by way of Sam and Gavin. |
| |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::set8): Added set8, since it's slightly |
| faster than set32, and the new value representation usually doesn't |
| need set32. |
| |
| * jit/JIT.cpp: |
| * jit/JIT.h: |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitLoadTag): |
| (JSC::JIT::emitLoadPayload): Added helper functions for dealing with |
| constants. Eventually, we should write special cases for all constants, |
| but these are helpful in the short term. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::compileOpStrictEq): |
| (JSC::JIT::emitSlow_op_stricteq): |
| (JSC::JIT::emitSlow_op_nstricteq): teh opcodez. |
| |
| * runtime/JSValue.h: |
| (JSC::JSValue::): |
| (JSC::JSValue::isDouble): Added a LowestTag for clarity. |
| |
| 2009-05-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Fixed some bugs in host function calls. |
| |
| testapi now passes! |
| |
| * jit/JIT.cpp: Changed some registers around to avoid overwriting edx:eax, |
| which is how JSValues are now returned. Also changed the code that |
| passes thisValue to pass the full 64bits of the value. Also added |
| an #error compiler directive to other platform builds, since the JSValue |
| return signature probably won't return in edx:eax on those platforms, |
| and we'll have to investigate a solution. |
| |
| 2009-05-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Removed parameters from functions that are intended never to use their |
| parameters. |
| |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emitSlow_op_get_by_val): |
| (JSC::JIT::emitSlow_op_put_by_val): |
| |
| 2009-05-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Ported op_instance_of from TOT. It's basically the same, but some register |
| stuff changed to memory stuff. |
| |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitPutJITStubArgFromVirtualRegister): |
| (JSC::JIT::emitStore): Changed to use helper functions. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_instanceof): |
| (JSC::JIT::emitSlow_op_instanceof): Ported from TOT. |
| |
| 2009-05-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Added a comment to explain an exception-handling subtelty that we found |
| hard to remember when reviewing my last patch. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_catch): |
| |
| 2009-05-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Implemented try/catch. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_throw): Updated to use JITStackFrame abstraction. |
| (JSC::JIT::emit_op_catch): Filled out. |
| |
| 2009-05-13 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Implemented op_loop_if_true, op_jfalse, op_jtrue, op_jeq_null and op_jneq_null |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emitSlow_op_instanceof): Moved from below to be next to its |
| fast brother. |
| |
| (JSC::JIT::emit_op_loop_if_true): Similar to the old version |
| in that it tries to do the integer case first and reduce the |
| number of jumps you might need to take. |
| (JSC::JIT::emitSlow_op_loop_if_true): |
| |
| (JSC::JIT::emit_op_jfalse): Very similar to op_loop_if_true, only |
| the inverse and without a timeout check. |
| (JSC::JIT::emitSlow_op_jfalse): |
| |
| (JSC::JIT::emit_op_jtrue): Very similar to op_loop_if_true except |
| without the timeout check. |
| (JSC::JIT::emitSlow_op_jtrue): |
| |
| (JSC::JIT::emit_op_jeq_null): Very similar to the implementation |
| of op_eq, except it takes jumps instead of copying the condition |
| to a dst. |
| (JSC::JIT::emit_op_jneq_null): Ditto but for op_neq. |
| |
| 2009-05-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Implemented op_call_varargs. |
| |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallVarargsSetupArgs): |
| (JSC::JIT::compileOpCallVarargs): |
| (JSC::JIT::emit_op_call): |
| (JSC::JIT::emit_op_call_eval): |
| (JSC::JIT::emit_op_load_varargs): |
| (JSC::JIT::emit_op_call_varargs): |
| (JSC::JIT::emit_op_construct): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_jneq_ptr): |
| |
| 2009-05-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Implemented op_call_eval. |
| |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallVarargsSetupArgs): |
| (JSC::JIT::compileOpCall): |
| * jit/JITStubCall.h: |
| (JSC::CallEvalJITStub::CallEvalJITStub): |
| |
| 2009-05-13 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Implemented op_not. (Gavin did most of the work!) |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_not): |
| (JSC::JIT::emitSlow_op_not): |
| |
| 2009-05-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Implemented op_global_resolve. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_loop_if_less): |
| (JSC::JIT::emit_op_loop_if_lesseq): Added back accidentally removed |
| early returns. |
| |
| (JSC::JIT::emit_op_resolve_global): |
| * jit/JITStubs.cpp: |
| (JSC::JITStubs::cti_op_resolve_global): Pretty similar to the old code, |
| but we need two reads and a TimesEight step in order to account for the |
| 64bit value size. |
| |
| * jit/JITStubs.h: |
| (JSC::): Slightly tweaked this code to specialize for a JSGlobalObject*, |
| to avoid having to pass an irrelevant tag pointer to the stub. |
| |
| 2009-05-13 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Implemented op_to_jsnumber. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_to_jsnumber): |
| (JSC::JIT::emitSlow_op_to_jsnumber): |
| |
| 2009-05-13 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Implemented op_convert_this. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_convert_this): |
| (JSC::JIT::emitSlow_op_convert_this): |
| |
| 2009-05-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Got basic JS function and constructor calls working. |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| * jit/JIT.h: |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallSetupArgs): |
| (JSC::JIT::compileOpCallVarargsSetupArgs): |
| (JSC::JIT::compileOpConstructSetupArgs): |
| (JSC::JIT::emit_op_ret): |
| (JSC::JIT::emit_op_construct_verify): |
| (JSC::JIT::emitSlow_op_construct_verify): |
| (JSC::JIT::emitSlow_op_call): |
| (JSC::JIT::emitSlow_op_call_eval): |
| (JSC::JIT::emitSlow_op_call_varargs): |
| (JSC::JIT::emitSlow_op_construct): |
| (JSC::JIT::compileOpCall): Filled out these cases, with call_eval #if'd out. |
| |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitPutJITStubArgFromVirtualRegister): |
| (JSC::JIT::emitLoad): Restored some legacy "*CTIArg*" functions, |
| since I wanted to avoid the complexity of revamping the API here while |
| trying to bring it up. Eventually, we should re-remove all of these functions. |
| |
| (JSC::JIT::recordJumpTarget): Removed unnecessary macro cruft. You will |
| not silence me, Sam Weinig! The world will know that you are a crufty, |
| crufty, crufty programmer!!! |
| |
| * jit/JITOpcodes.cpp: |
| * jit/JITStubs.cpp: |
| (JSC::): |
| * jit/JITStubs.h: Changed up some offsets in the JITStackFrame class, since |
| and off-by-one error was causing stack misalignment. |
| |
| 2009-05-13 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Implement op_eq_null and op_neq_null. |
| |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::set8): |
| (JSC::MacroAssemblerX86Common::setTest8): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_stricteq): |
| (JSC::JIT::emitSlow_op_stricteq): |
| (JSC::JIT::emit_op_nstricteq): |
| (JSC::JIT::emitSlow_op_nstricteq): |
| (JSC::JIT::emit_op_eq_null): |
| (JSC::JIT::emit_op_neq_null): |
| * jsc.cpp: |
| |
| 2009-05-12 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Implement op_new_error. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_new_error): |
| * jit/JITStubCall.h: |
| (JSC::JITStubCall::addArgument): Add a version of addArgument |
| that takes a constant JSValue. |
| |
| 2009-05-12 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Remove now unused emitGetVariableObjectRegister and emitPutVariableObjectRegister. |
| |
| * jit/JIT.cpp: |
| * jit/JIT.h: |
| |
| 2009-05-12 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Implement op_to_primitive and op_next_pname. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emitSlow_op_construct_verify): |
| (JSC::JIT::emit_op_to_primitive): |
| (JSC::JIT::emitSlow_op_to_primitive): |
| (JSC::JIT::emitSlow_op_loop_if_true): |
| (JSC::JIT::emit_op_jtrue): |
| (JSC::JIT::emit_op_next_pname): |
| |
| 2009-05-12 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Add op_get_global_var, op_put_global_var, emit_op_get_scoped_var, emit_op_put_scoped_var and |
| op_unexpected_load. |
| |
| * jit/JIT.h: |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::tagFor): |
| (JSC::JIT::payloadFor): |
| (JSC::JIT::emitLoad): |
| (JSC::JIT::emitStore): |
| (JSC::JIT::emitLoadReturnValue): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_get_global_var): |
| (JSC::JIT::emit_op_put_global_var): |
| (JSC::JIT::emit_op_get_scoped_var): |
| (JSC::JIT::emit_op_put_scoped_var): |
| (JSC::JIT::emit_op_unexpected_load): |
| |
| 2009-05-12 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Added overflow handling to op_sub. |
| |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitSlow_op_sub): |
| (JSC::JIT::emitSlowSub32InPlaceLeft): |
| |
| 2009-05-12 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Remove a function call by folding op_get_by_id and op_put_by_id into |
| their respective compile functions. |
| |
| * jit/JIT.h: |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emit_op_get_by_id): |
| (JSC::JIT::emitSlow_op_get_by_id): |
| (JSC::JIT::emit_op_put_by_id): |
| (JSC::JIT::emitSlow_op_put_by_id): |
| |
| 2009-05-12 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make JITStubCall work in 64bit by making the stack index |
| step dependent on the size of void*. |
| |
| * jit/JITStubCall.h: |
| (JSC::JITStubCall::JITStubCall): |
| (JSC::JITStubCall::addArgument): |
| |
| 2009-05-12 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Implement simple version of property access opcodes |
| which just call a stub functions. |
| |
| * jit/JITOpcodes.cpp: |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emitSlow_op_put_by_id): |
| (JSC::JIT::emitSlow_op_get_by_id): |
| (JSC::JIT::emit_op_get_by_val): |
| (JSC::JIT::emitSlow_op_get_by_val): |
| (JSC::JIT::emit_op_put_by_val): |
| (JSC::JIT::emitSlow_op_put_by_val): |
| (JSC::JIT::emit_op_put_by_index): |
| (JSC::JIT::emit_op_put_getter): |
| (JSC::JIT::emit_op_put_setter): |
| (JSC::JIT::emit_op_del_by_id): |
| (JSC::JIT::compileGetByIdHotPath): |
| (JSC::JIT::compilePutByIdHotPath): |
| * jit/JITStubCall.h: |
| (JSC::JITStubCall::addArgument): |
| * jsc.cpp: |
| |
| 2009-05-12 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Added work-around for XCode debugging echo problem. |
| |
| * jsc.cpp: |
| (runInteractive): |
| |
| 2009-05-12 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Added overflow handling to op_add. |
| |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitSlow_op_add): |
| (JSC::JIT::emitSlowAdd32InPlace): |
| |
| 2009-05-12 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Add slow cases for op_jnless or emit_op_jnlesseq. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitSlow_op_jnless): |
| (JSC::JIT::emitSlow_op_jnlesseq): |
| |
| 2009-05-12 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Add implementations for op_jnless, emit_op_jnlesseq, op_loop_if_less and op_loop_if_lesseq. |
| No slow cases for op_jnless or emit_op_jnlesseq yet. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_jnless): |
| (JSC::JIT::emitSlow_op_jnless): |
| (JSC::JIT::emit_op_jnlesseq): |
| (JSC::JIT::emitSlow_op_jnlesseq): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_loop_if_less): |
| (JSC::JIT::emitSlow_op_loop_if_less): |
| (JSC::JIT::emit_op_loop_if_lesseq): |
| (JSC::JIT::emitSlow_op_loop_if_lesseq): |
| |
| 2009-05-12 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Turn the RECORD_JUMP_TARGET macro into an inline function. |
| |
| * jit/JIT.h: |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::recordJumpTarget): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_jmp): |
| (JSC::JIT::emit_op_jsr): |
| (JSC::JIT::emit_op_jmp_scopes): |
| |
| 2009-05-12 Sam Weinig <sam@webkit.org> |
| |
| Add MacroAssemblerX86Common::set8 to fix the build. |
| |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::set8): |
| |
| 2009-05-12 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Added overflow recovery for pre_inc and pre_dec. |
| |
| Turned some short-circuit code into early returns, as is the WebKit style. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_post_inc): |
| (JSC::JIT::emitSlow_op_post_inc): |
| (JSC::JIT::emit_op_post_dec): |
| (JSC::JIT::emitSlow_op_post_dec): |
| (JSC::JIT::emitSlow_op_pre_inc): |
| (JSC::JIT::emitSlow_op_pre_dec): |
| |
| 2009-05-12 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Implement op_jmp, op_loop, op_eq and op_neq. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_jmp): |
| (JSC::JIT::emit_op_loop): |
| (JSC::JIT::emit_op_eq): |
| (JSC::JIT::emitSlow_op_eq): |
| (JSC::JIT::emit_op_neq): |
| (JSC::JIT::emitSlow_op_neq): |
| (JSC::JIT::emit_op_enter): |
| (JSC::JIT::emit_op_enter_with_activation): |
| |
| 2009-05-12 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Implement the slow cases for arithmetic opcodes. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitSlow_op_lshift): |
| (JSC::JIT::emitSlow_op_rshift): |
| (JSC::JIT::emitSlow_op_bitand): |
| (JSC::JIT::emitSlow_op_bitor): |
| (JSC::JIT::emitSlow_op_bitxor): |
| (JSC::JIT::emitSlow_op_bitnot): |
| (JSC::JIT::emitSlow_op_sub): |
| (JSC::JIT::emitSlow_op_mul): |
| (JSC::JIT::emitSlow_op_mod): |
| (JSC::JIT::emit_op_mod): |
| |
| 2009-05-12 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Implement op_bitnot. |
| |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::not32): |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::notl_m): |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_bitnot): |
| |
| 2009-05-12 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Add arithmetic opcode implementations from the old nitro-extreme branch. |
| |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_jnless): |
| (JSC::JIT::emitSlow_op_jnless): |
| (JSC::JIT::emit_op_jnlesseq): |
| (JSC::JIT::emitSlow_op_jnlesseq): |
| (JSC::JIT::emit_op_lshift): |
| (JSC::JIT::emitSlow_op_lshift): |
| (JSC::JIT::emit_op_rshift): |
| (JSC::JIT::emitSlow_op_rshift): |
| (JSC::JIT::emit_op_bitand): |
| (JSC::JIT::emitBitAnd32Constant): |
| (JSC::JIT::emitBitAnd32InPlace): |
| (JSC::JIT::emit_op_bitor): |
| (JSC::JIT::emitSlow_op_bitor): |
| (JSC::JIT::emitBitOr32Constant): |
| (JSC::JIT::emitBitOr32InPlace): |
| (JSC::JIT::emit_op_bitxor): |
| (JSC::JIT::emitSlow_op_bitxor): |
| (JSC::JIT::emitBitXor32Constant): |
| (JSC::JIT::emitBitXor32InPlace): |
| (JSC::JIT::emit_op_bitnot): |
| (JSC::JIT::emitSlow_op_bitnot): |
| (JSC::JIT::emit_op_post_inc): |
| (JSC::JIT::emitSlow_op_post_inc): |
| (JSC::JIT::emit_op_post_dec): |
| (JSC::JIT::emitSlow_op_post_dec): |
| (JSC::JIT::emit_op_pre_inc): |
| (JSC::JIT::emitSlow_op_pre_inc): |
| (JSC::JIT::emit_op_pre_dec): |
| (JSC::JIT::emitSlow_op_pre_dec): |
| (JSC::JIT::emit_op_add): |
| (JSC::JIT::emitAdd32Constant): |
| (JSC::JIT::emitAdd32InPlace): |
| (JSC::JIT::emitSlow_op_add): |
| (JSC::JIT::emit_op_sub): |
| (JSC::JIT::emitSlow_op_sub): |
| (JSC::JIT::emitSub32ConstantLeft): |
| (JSC::JIT::emitSub32ConstantRight): |
| (JSC::JIT::emitSub32InPlaceLeft): |
| (JSC::JIT::emitSub32InPlaceRight): |
| (JSC::JIT::emit_op_mul): |
| (JSC::JIT::emitSlow_op_mul): |
| (JSC::JIT::emitMul32Constant): |
| (JSC::JIT::emitMul32InPlace): |
| (JSC::JIT::emit_op_mod): |
| (JSC::JIT::emitSlow_op_mod): |
| * jit/JITOpcodes.cpp: |
| |
| 2009-05-12 Geoffrey Garen <ggaren@apple.com> |
| |
| Removed JIT_OPTIMIZE_ARITHMETIC setting, since it was all about 32bit |
| value representations. |
| |
| Added JSAPIValueWrapper to the repository. |
| |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| * runtime/JSAPIValueWrapper.cpp: Added. |
| (JSC::JSAPIValueWrapper::toPrimitive): |
| (JSC::JSAPIValueWrapper::getPrimitiveNumber): |
| (JSC::JSAPIValueWrapper::toBoolean): |
| (JSC::JSAPIValueWrapper::toNumber): |
| (JSC::JSAPIValueWrapper::toString): |
| (JSC::JSAPIValueWrapper::toObject): |
| * runtime/JSAPIValueWrapper.h: Added. |
| (JSC::JSAPIValueWrapper::value): |
| (JSC::JSAPIValueWrapper::isAPIValueWrapper): |
| (JSC::JSAPIValueWrapper::JSAPIValueWrapper): |
| (JSC::jsAPIValueWrapper): |
| * wtf/Platform.h: |
| |
| 2009-05-12 Geoffrey Garen <ggaren@apple.com> |
| |
| Turned on the JIT and got it building and running the most trivial of |
| programs. |
| |
| All configurable optimizations are turned off, and a few opcodes are ad |
| hoc #if'd out. |
| |
| So far, I've only merged op_mov and op_end, but some stub-reliant |
| opcodes work as-is from TOT. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::~CodeBlock): |
| * bytecode/CodeBlock.h: |
| * jit/JIT.cpp: |
| (JSC::JIT::compileOpStrictEq): |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_lshift): |
| (JSC::JIT::emitSlow_op_lshift): |
| (JSC::JIT::emit_op_rshift): |
| (JSC::JIT::emitSlow_op_rshift): |
| (JSC::JIT::emit_op_jnless): |
| (JSC::JIT::emitSlow_op_jnless): |
| (JSC::JIT::emit_op_jnlesseq): |
| (JSC::JIT::emitSlow_op_jnlesseq): |
| (JSC::JIT::emit_op_bitand): |
| (JSC::JIT::emitSlow_op_bitand): |
| (JSC::JIT::emit_op_post_inc): |
| (JSC::JIT::emitSlow_op_post_inc): |
| (JSC::JIT::emit_op_post_dec): |
| (JSC::JIT::emitSlow_op_post_dec): |
| (JSC::JIT::emit_op_pre_inc): |
| (JSC::JIT::emitSlow_op_pre_inc): |
| (JSC::JIT::emit_op_pre_dec): |
| (JSC::JIT::emitSlow_op_pre_dec): |
| (JSC::JIT::emit_op_mod): |
| (JSC::JIT::emitSlow_op_mod): |
| (JSC::JIT::emit_op_add): |
| (JSC::JIT::emit_op_mul): |
| (JSC::JIT::emit_op_sub): |
| (JSC::JIT::compileBinaryArithOpSlowCase): |
| (JSC::JIT::emitSlow_op_add): |
| (JSC::JIT::emitSlow_op_mul): |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallInitializeCallFrame): |
| (JSC::JIT::compileOpConstructSetupArgs): |
| (JSC::JIT::compileOpCallVarargs): |
| (JSC::JIT::compileOpCall): |
| (JSC::JIT::compileOpCallSlowCase): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::getConstantOperandImmediateInt): |
| (JSC::JIT::isOperandConstantImmediateInt): |
| (JSC::JIT::emitInitRegister): |
| (JSC::JIT::addSlowCase): |
| (JSC::JIT::addJump): |
| (JSC::JIT::emitJumpSlowToHot): |
| (JSC::JIT::tagFor): |
| (JSC::JIT::payloadFor): |
| (JSC::JIT::emitLoad): |
| (JSC::JIT::emitLoadReturnValue): |
| (JSC::JIT::emitStore): |
| (JSC::JIT::emitStoreReturnValue): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_mov): |
| (JSC::JIT::emit_op_end): |
| (JSC::JIT::emit_op_jmp): |
| (JSC::JIT::emit_op_loop): |
| (JSC::JIT::emit_op_loop_if_less): |
| (JSC::JIT::emit_op_loop_if_lesseq): |
| (JSC::JIT::emit_op_instanceof): |
| (JSC::JIT::emit_op_get_global_var): |
| (JSC::JIT::emit_op_put_global_var): |
| (JSC::JIT::emit_op_get_scoped_var): |
| (JSC::JIT::emit_op_put_scoped_var): |
| (JSC::JIT::emit_op_tear_off_activation): |
| (JSC::JIT::emit_op_ret): |
| (JSC::JIT::emit_op_construct_verify): |
| (JSC::JIT::emit_op_to_primitive): |
| (JSC::JIT::emit_op_loop_if_true): |
| (JSC::JIT::emit_op_resolve_global): |
| (JSC::JIT::emit_op_not): |
| (JSC::JIT::emit_op_jfalse): |
| (JSC::JIT::emit_op_jeq_null): |
| (JSC::JIT::emit_op_jneq_null): |
| (JSC::JIT::emit_op_jneq_ptr): |
| (JSC::JIT::emit_op_unexpected_load): |
| (JSC::JIT::emit_op_eq): |
| (JSC::JIT::emit_op_bitnot): |
| (JSC::JIT::emit_op_jtrue): |
| (JSC::JIT::emit_op_neq): |
| (JSC::JIT::emit_op_bitxor): |
| (JSC::JIT::emit_op_bitor): |
| (JSC::JIT::emit_op_throw): |
| (JSC::JIT::emit_op_next_pname): |
| (JSC::JIT::emit_op_push_scope): |
| (JSC::JIT::emit_op_to_jsnumber): |
| (JSC::JIT::emit_op_push_new_scope): |
| (JSC::JIT::emit_op_catch): |
| (JSC::JIT::emit_op_switch_imm): |
| (JSC::JIT::emit_op_switch_char): |
| (JSC::JIT::emit_op_switch_string): |
| (JSC::JIT::emit_op_new_error): |
| (JSC::JIT::emit_op_eq_null): |
| (JSC::JIT::emit_op_neq_null): |
| (JSC::JIT::emit_op_convert_this): |
| (JSC::JIT::emit_op_profile_will_call): |
| (JSC::JIT::emit_op_profile_did_call): |
| (JSC::JIT::emitSlow_op_construct_verify): |
| (JSC::JIT::emitSlow_op_get_by_val): |
| (JSC::JIT::emitSlow_op_loop_if_less): |
| (JSC::JIT::emitSlow_op_loop_if_lesseq): |
| (JSC::JIT::emitSlow_op_put_by_val): |
| (JSC::JIT::emitSlow_op_not): |
| (JSC::JIT::emitSlow_op_instanceof): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emit_op_get_by_val): |
| (JSC::JIT::emit_op_put_by_val): |
| (JSC::JIT::emit_op_put_by_index): |
| (JSC::JIT::emit_op_put_getter): |
| (JSC::JIT::emit_op_put_setter): |
| (JSC::JIT::emit_op_del_by_id): |
| (JSC::JIT::compileGetByIdHotPath): |
| (JSC::JIT::compilePutByIdHotPath): |
| * jit/JITStubCall.h: |
| (JSC::JITStubCall::JITStubCall): |
| (JSC::JITStubCall::addArgument): |
| (JSC::JITStubCall::call): |
| (JSC::JITStubCall::): |
| (JSC::CallEvalJITStub::CallEvalJITStub): |
| * jit/JITStubs.cpp: |
| (JSC::): |
| (JSC::JITStubs::cti_op_add): |
| (JSC::JITStubs::cti_op_pre_inc): |
| (JSC::JITStubs::cti_op_mul): |
| (JSC::JITStubs::cti_op_get_by_val): |
| (JSC::JITStubs::cti_op_get_by_val_string): |
| (JSC::JITStubs::cti_op_get_by_val_byte_array): |
| (JSC::JITStubs::cti_op_sub): |
| (JSC::JITStubs::cti_op_put_by_val): |
| (JSC::JITStubs::cti_op_put_by_val_array): |
| (JSC::JITStubs::cti_op_put_by_val_byte_array): |
| (JSC::JITStubs::cti_op_negate): |
| (JSC::JITStubs::cti_op_div): |
| (JSC::JITStubs::cti_op_pre_dec): |
| (JSC::JITStubs::cti_op_post_inc): |
| (JSC::JITStubs::cti_op_eq): |
| (JSC::JITStubs::cti_op_lshift): |
| (JSC::JITStubs::cti_op_bitand): |
| (JSC::JITStubs::cti_op_rshift): |
| (JSC::JITStubs::cti_op_bitnot): |
| (JSC::JITStubs::cti_op_mod): |
| (JSC::JITStubs::cti_op_neq): |
| (JSC::JITStubs::cti_op_post_dec): |
| (JSC::JITStubs::cti_op_urshift): |
| (JSC::JITStubs::cti_op_bitxor): |
| (JSC::JITStubs::cti_op_bitor): |
| (JSC::JITStubs::cti_op_switch_imm): |
| * jit/JITStubs.h: |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::JSArray): |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::~JSFunction): |
| * runtime/JSValue.h: |
| (JSC::JSValue::payload): |
| * wtf/Platform.h: |
| |
| 2009-05-07 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Add some new MacroAssembler and assembler functions that will be needed shortly. |
| |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::add32): |
| (JSC::MacroAssemblerX86Common::and32): |
| (JSC::MacroAssemblerX86Common::mul32): |
| (JSC::MacroAssemblerX86Common::neg32): |
| (JSC::MacroAssemblerX86Common::or32): |
| (JSC::MacroAssemblerX86Common::sub32): |
| (JSC::MacroAssemblerX86Common::xor32): |
| (JSC::MacroAssemblerX86Common::branchAdd32): |
| (JSC::MacroAssemblerX86Common::branchMul32): |
| (JSC::MacroAssemblerX86Common::branchSub32): |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::): |
| (JSC::X86Assembler::addl_rm): |
| (JSC::X86Assembler::andl_mr): |
| (JSC::X86Assembler::andl_rm): |
| (JSC::X86Assembler::andl_im): |
| (JSC::X86Assembler::negl_r): |
| (JSC::X86Assembler::notl_r): |
| (JSC::X86Assembler::orl_rm): |
| (JSC::X86Assembler::orl_im): |
| (JSC::X86Assembler::subl_rm): |
| (JSC::X86Assembler::xorl_mr): |
| (JSC::X86Assembler::xorl_rm): |
| (JSC::X86Assembler::xorl_im): |
| (JSC::X86Assembler::imull_mr): |
| |
| 2009-05-11 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Cameron Zwarich. |
| |
| Remove the NumberHeap. |
| |
| * JavaScriptCore.exp: |
| * runtime/Collector.cpp: |
| (JSC::Heap::Heap): |
| (JSC::Heap::destroy): |
| (JSC::Heap::recordExtraCost): |
| (JSC::Heap::heapAllocate): |
| (JSC::Heap::markConservatively): |
| (JSC::Heap::sweep): |
| (JSC::Heap::collect): |
| (JSC::Heap::objectCount): |
| (JSC::Heap::statistics): |
| (JSC::typeName): |
| (JSC::Heap::isBusy): |
| * runtime/Collector.h: |
| (JSC::Heap::globalData): |
| * runtime/JSCell.h: |
| |
| 2009-05-11 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Land initial commit of new number representation for 32 bit platforms, |
| with JIT disabled. |
| |
| * API/APICast.h: |
| (toJS): |
| (toRef): |
| * API/JSCallbackObjectFunctions.h: |
| (JSC::::hasInstance): |
| (JSC::::toNumber): |
| (JSC::::toString): |
| * API/tests/testapi.c: |
| (EvilExceptionObject_convertToType): |
| * AllInOneFile.cpp: |
| * JavaScriptCore.exp: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * bytecode/CodeBlock.cpp: |
| (JSC::valueToSourceString): |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitLoad): |
| (JSC::BytecodeGenerator::emitUnexpectedLoad): |
| (JSC::keyForImmediateSwitch): |
| * bytecompiler/BytecodeGenerator.h: |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::dumpRegisters): |
| (JSC::Interpreter::privateExecute): |
| * parser/Nodes.cpp: |
| (JSC::ArrayNode::emitBytecode): |
| (JSC::processClauseList): |
| * runtime/ArgList.h: |
| * runtime/Collector.h: |
| (JSC::sizeof): |
| * runtime/DateMath.cpp: |
| * runtime/ExceptionHelpers.h: |
| * runtime/InitializeThreading.cpp: |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::JSArray): |
| * runtime/JSCell.cpp: |
| * runtime/JSCell.h: |
| (JSC::JSCell::isAPIValueWrapper): |
| (JSC::JSValue::isString): |
| (JSC::JSValue::isGetterSetter): |
| (JSC::JSValue::isObject): |
| (JSC::JSValue::getString): |
| (JSC::JSValue::getObject): |
| (JSC::JSValue::getCallData): |
| (JSC::JSValue::getConstructData): |
| (JSC::JSValue::getUInt32): |
| (JSC::JSValue::marked): |
| (JSC::JSValue::toPrimitive): |
| (JSC::JSValue::getPrimitiveNumber): |
| (JSC::JSValue::toBoolean): |
| (JSC::JSValue::toNumber): |
| (JSC::JSValue::toString): |
| (JSC::JSValue::needsThisConversion): |
| (JSC::JSValue::toThisString): |
| (JSC::JSValue::getJSNumber): |
| (JSC::JSValue::toObject): |
| (JSC::JSValue::toThisObject): |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| * runtime/JSGlobalData.h: |
| * runtime/JSGlobalObject.h: |
| (JSC::Structure::prototypeForLookup): |
| * runtime/JSGlobalObjectFunctions.cpp: |
| (JSC::globalFuncParseInt): |
| * runtime/JSImmediate.h: |
| * runtime/JSNumberCell.cpp: Removed. |
| * runtime/JSNumberCell.h: Removed. |
| * runtime/JSObject.h: |
| (JSC::JSValue::get): |
| (JSC::JSValue::put): |
| * runtime/JSString.h: |
| (JSC::JSValue::toThisJSString): |
| * runtime/JSValue.cpp: |
| (JSC::JSValue::toInteger): |
| (JSC::JSValue::toIntegerPreserveNaN): |
| (JSC::JSValue::toObjectSlowCase): |
| (JSC::JSValue::toThisObjectSlowCase): |
| (JSC::JSValue::synthesizeObject): |
| (JSC::JSValue::synthesizePrototype): |
| (JSC::JSValue::description): |
| (JSC::nonInlineNaN): |
| * runtime/JSValue.h: |
| (JSC::JSValue::): |
| (JSC::EncodedJSValueHashTraits::emptyValue): |
| (JSC::jsNaN): |
| (JSC::operator==): |
| (JSC::operator!=): |
| (JSC::toInt32): |
| (JSC::toUInt32): |
| (JSC::JSValue::encode): |
| (JSC::JSValue::decode): |
| (JSC::JSValue::JSValue): |
| (JSC::JSValue::operator bool): |
| (JSC::JSValue::operator==): |
| (JSC::JSValue::operator!=): |
| (JSC::JSValue::isUndefined): |
| (JSC::JSValue::isNull): |
| (JSC::JSValue::isUndefinedOrNull): |
| (JSC::JSValue::isCell): |
| (JSC::JSValue::isInt32): |
| (JSC::JSValue::isUInt32): |
| (JSC::JSValue::isDouble): |
| (JSC::JSValue::isTrue): |
| (JSC::JSValue::isFalse): |
| (JSC::JSValue::tag): |
| (JSC::JSValue::asInt32): |
| (JSC::JSValue::asUInt32): |
| (JSC::JSValue::asDouble): |
| (JSC::JSValue::asCell): |
| (JSC::JSValue::isNumber): |
| (JSC::JSValue::isBoolean): |
| (JSC::JSValue::getBoolean): |
| (JSC::JSValue::uncheckedGetNumber): |
| (JSC::JSValue::toJSNumber): |
| (JSC::JSValue::getNumber): |
| (JSC::JSValue::toInt32): |
| (JSC::JSValue::toUInt32): |
| * runtime/Operations.h: |
| (JSC::JSValue::equal): |
| (JSC::JSValue::equalSlowCaseInline): |
| (JSC::JSValue::strictEqual): |
| (JSC::JSValue::strictEqualSlowCaseInline): |
| (JSC::jsLess): |
| (JSC::jsLessEq): |
| (JSC::jsAdd): |
| * runtime/PropertySlot.h: |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncCharAt): |
| (JSC::stringProtoFuncCharCodeAt): |
| (JSC::stringProtoFuncIndexOf): |
| * wtf/Platform.h: |
| |
| === Start merge of nitro-extreme branch 2009-07-30 === |
| |
| 2009-07-29 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by George Staikos. |
| |
| Resolve class/struct mixup in forward declarations |
| https://bugs.webkit.org/show_bug.cgi?id=27708 |
| |
| * API/JSClassRef.h: |
| * bytecode/SamplingTool.h: |
| * interpreter/Interpreter.h: |
| * jit/JIT.h: |
| * profiler/ProfileGenerator.h: |
| * profiler/Profiler.h: |
| * runtime/ClassInfo.h: |
| * runtime/ExceptionHelpers.h: |
| * runtime/JSByteArray.h: |
| * runtime/JSCell.h: |
| * runtime/JSFunction.h: |
| * runtime/JSGlobalData.h: |
| * runtime/JSObject.h: |
| * runtime/JSString.h: |
| |
| 2009-07-28 Ada Chan <adachan@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27236 |
| - Implement TCMalloc_SystemRelease and TCMalloc_SystemCommit for Windows. |
| - Use a background thread to periodically scavenge memory to release back to the system. |
| |
| * wtf/FastMalloc.cpp: |
| (WTF::TCMalloc_PageHeap::init): |
| (WTF::TCMalloc_PageHeap::runScavengerThread): |
| (WTF::TCMalloc_PageHeap::scavenge): |
| (WTF::TCMalloc_PageHeap::shouldContinueScavenging): |
| (WTF::TCMalloc_PageHeap::New): |
| (WTF::TCMalloc_PageHeap::AllocLarge): |
| (WTF::TCMalloc_PageHeap::Delete): |
| (WTF::TCMalloc_PageHeap::GrowHeap): |
| (WTF::sleep): |
| (WTF::TCMalloc_PageHeap::scavengerThread): |
| * wtf/TCSystemAlloc.cpp: |
| (TCMalloc_SystemRelease): |
| (TCMalloc_SystemCommit): |
| * wtf/TCSystemAlloc.h: |
| |
| 2009-07-28 Xan Lopez <xlopez@igalia.com> |
| |
| Add new files, fixes distcheck. |
| |
| * GNUmakefile.am: |
| |
| 2009-07-28 Csaba Osztrogonac <oszi@inf.u-szeged.hu> |
| |
| Reviewed by Simon Hausmann. |
| |
| [Qt] Determining whether to use JIT or interpreter |
| moved from JavaScriptCore.pri to Platform.h |
| |
| * JavaScriptCore.pri: |
| * wtf/Platform.h: |
| |
| 2009-07-27 Brian Weinstein <bweinstein@apple.com> |
| |
| Fix of misuse of sort command. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-07-27 Brian Weinstein <bweinstein@apple.com> |
| |
| Build fix for Windows. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-07-27 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber stamped by Oliver Hunt. |
| |
| Fix tyop in JIT, renamed preverveReturnAddressAfterCall -> preserveReturnAddressAfterCall. |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompile): |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| * jit/JIT.h: |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::preserveReturnAddressAfterCall): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::privateCompilePutByIdTransition): |
| |
| 2009-07-27 Alexey Proskuryakov <ap@webkit.org> |
| |
| Gtk build fix. |
| |
| * runtime/JSLock.cpp: (JSC::JSLock::JSLock): Fix "no threading" case. |
| |
| 2009-07-27 Alexey Proskuryakov <ap@webkit.org> |
| |
| Release build fix. |
| |
| * runtime/JSLock.h: (JSC::JSLock::~JSLock): |
| |
| 2009-07-27 Alexey Proskuryakov <ap@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27735 |
| Give a helpful name to JSLock constructor argument |
| |
| * API/JSBase.cpp: |
| (JSGarbageCollect): |
| * API/JSContextRef.cpp: |
| * API/JSObjectRef.cpp: |
| (JSPropertyNameArrayRelease): |
| (JSPropertyNameAccumulatorAddName): |
| * JavaScriptCore.exp: |
| * jsc.cpp: |
| (functionGC): |
| (cleanupGlobalData): |
| (jscmain): |
| * runtime/Collector.cpp: |
| (JSC::Heap::destroy): |
| * runtime/JSLock.cpp: |
| (JSC::JSLock::JSLock): |
| (JSC::JSLock::lock): |
| (JSC::JSLock::unlock): |
| (JSC::JSLock::DropAllLocks::DropAllLocks): |
| (JSC::JSLock::DropAllLocks::~DropAllLocks): |
| * runtime/JSLock.h: |
| (JSC::): |
| (JSC::JSLock::JSLock): |
| (JSC::JSLock::~JSLock): |
| |
| 2009-07-25 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Eric Seidel. |
| |
| Allow custom memory allocation control for OpaqueJSPropertyNameArray struct |
| https://bugs.webkit.org/show_bug.cgi?id=27342 |
| |
| Inherits OpaqueJSPropertyNameArray struct from FastAllocBase because it has been |
| instantiated by 'new' JavaScriptCore/API/JSObjectRef.cpp:473. |
| |
| * API/JSObjectRef.cpp: |
| |
| 2009-07-24 Ada Chan <adachan@apple.com> |
| |
| In preparation for https://bugs.webkit.org/show_bug.cgi?id=27236: |
| Remove TCMALLOC_TRACK_DECOMMITED_SPANS. We'll always track decommitted spans. |
| We have tested this and show it has little impact on performance. |
| |
| Reviewed by Mark Rowe. |
| |
| * wtf/FastMalloc.cpp: |
| (WTF::TCMalloc_PageHeap::New): |
| (WTF::TCMalloc_PageHeap::AllocLarge): |
| (WTF::propagateDecommittedState): |
| (WTF::mergeDecommittedStates): |
| (WTF::TCMalloc_PageHeap::Delete): |
| (WTF::TCMalloc_PageHeap::IncrementalScavenge): |
| |
| 2009-07-24 Csaba Osztrogonac <oszi@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler and Adam Barth. |
| |
| Build fix for x86 platforms. |
| https://bugs.webkit.org/show_bug.cgi?id=27602 |
| |
| * jit/JIT.cpp: |
| |
| 2009-07-23 Kevin Ollivier <kevino@theolliviers.com> |
| |
| wx build fix, adding missing header. |
| |
| * jit/JIT.cpp: |
| |
| 2009-07-22 Yong Li <yong.li@torchmobile.com> |
| |
| Reviewed by George Staikos. |
| |
| Add wince specific memory files into wtf/wince |
| https://bugs.webkit.org/show_bug.cgi?id=27550 |
| |
| * wtf/wince/FastMallocWince.h: Added. |
| * wtf/wince/MemoryManager.cpp: Added. |
| * wtf/wince/MemoryManager.h: Added. |
| |
| 2009-07-23 Norbert Leser <norbert.leser@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Fix for missing mmap features in Symbian |
| https://bugs.webkit.org/show_bug.cgi?id=24540 |
| |
| Fix, conditionally for PLATFORM(SYMBIAN), as an alternative |
| to missing support for the MAP_ANON property flag in mmap. |
| It utilizes Symbian specific memory allocation features. |
| |
| * runtime/Collector.cpp |
| |
| 2009-07-22 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| With ENABLE(ASSEMBLER_WX_EXCLUSIVE), only change permissions once per repatch event. |
| ( https://bugs.webkit.org/show_bug.cgi?id=27564 ) |
| |
| Currently we change permissions forwards and backwards for each instruction modified, |
| instead we should only change permissions once per complete repatching event. |
| |
| 2.5% progression running with ENABLE(ASSEMBLER_WX_EXCLUSIVE) enabled, |
| which recoups 1/3 of the penalty of running with this mode enabled. |
| |
| * assembler/ARMAssembler.cpp: |
| (JSC::ARMAssembler::linkBranch): |
| - Replace usage of MakeWritable with cacheFlush. |
| |
| * assembler/ARMAssembler.h: |
| (JSC::ARMAssembler::patchPointerInternal): |
| (JSC::ARMAssembler::repatchLoadPtrToLEA): |
| - Replace usage of MakeWritable with cacheFlush. |
| |
| * assembler/ARMv7Assembler.h: |
| (JSC::ARMv7Assembler::relinkJump): |
| (JSC::ARMv7Assembler::relinkCall): |
| (JSC::ARMv7Assembler::repatchInt32): |
| (JSC::ARMv7Assembler::repatchPointer): |
| (JSC::ARMv7Assembler::repatchLoadPtrToLEA): |
| (JSC::ARMv7Assembler::setInt32): |
| - Replace usage of MakeWritable with cacheFlush. |
| |
| * assembler/LinkBuffer.h: |
| (JSC::LinkBuffer::performFinalization): |
| - Make explicit call to cacheFlush. |
| |
| * assembler/MacroAssemblerCodeRef.h: |
| (JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef): |
| - Make size always available. |
| |
| * assembler/RepatchBuffer.h: |
| (JSC::RepatchBuffer::RepatchBuffer): |
| (JSC::RepatchBuffer::~RepatchBuffer): |
| - Add calls to MakeWritable & makeExecutable. |
| |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::relinkJump): |
| (JSC::X86Assembler::relinkCall): |
| (JSC::X86Assembler::repatchInt32): |
| (JSC::X86Assembler::repatchPointer): |
| (JSC::X86Assembler::repatchLoadPtrToLEA): |
| - Remove usage of MakeWritable. |
| |
| * bytecode/CodeBlock.h: |
| (JSC::CodeBlock::getJITCode): |
| - Provide access to CodeBlock's JITCode. |
| |
| * jit/ExecutableAllocator.h: |
| (JSC::ExecutableAllocator::makeExecutable): |
| (JSC::ExecutableAllocator::cacheFlush): |
| - Remove MakeWritable, make cacheFlush public. |
| |
| * jit/JIT.cpp: |
| (JSC::ctiPatchNearCallByReturnAddress): |
| (JSC::ctiPatchCallByReturnAddress): |
| (JSC::JIT::privateCompile): |
| (JSC::JIT::unlinkCall): |
| (JSC::JIT::linkCall): |
| - Add CodeBlock argument to RepatchBuffer. |
| |
| * jit/JIT.h: |
| - Pass CodeBlock argument for use by RepatchBuffer. |
| |
| * jit/JITCode.h: |
| (JSC::JITCode::start): |
| (JSC::JITCode::size): |
| - Provide access to code start & size. |
| |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::privateCompilePutByIdTransition): |
| (JSC::JIT::patchGetByIdSelf): |
| (JSC::JIT::patchMethodCallProto): |
| (JSC::JIT::patchPutByIdReplace): |
| (JSC::JIT::privateCompilePatchGetArrayLength): |
| (JSC::JIT::privateCompileGetByIdProto): |
| (JSC::JIT::privateCompileGetByIdSelfList): |
| (JSC::JIT::privateCompileGetByIdProtoList): |
| (JSC::JIT::privateCompileGetByIdChainList): |
| (JSC::JIT::privateCompileGetByIdChain): |
| - Add CodeBlock argument to RepatchBuffer. |
| |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::tryCachePutByID): |
| (JSC::JITThunks::tryCacheGetByID): |
| (JSC::JITStubs::DEFINE_STUB_FUNCTION): |
| - Pass CodeBlock argument for use by RepatchBuffer. |
| |
| 2009-07-21 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Cache not only the structure of the method, but the |
| structure of its prototype as well. |
| https://bugs.webkit.org/show_bug.cgi?id=27077 |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::~CodeBlock): |
| * bytecode/CodeBlock.h: |
| (JSC::MethodCallLinkInfo::MethodCallLinkInfo): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::patchMethodCallProto): |
| |
| 2009-07-21 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Move call linking / repatching down from AbstractMacroAssembler into MacroAssemblerARCH classes. |
| ( https://bugs.webkit.org/show_bug.cgi?id=27527 ) |
| |
| This allows the implementation to be defined per architecture. Specifically this addresses the |
| fact that x86-64 MacroAssembler implements far calls as a load to register, followed by a call |
| to register. Patching the call actually requires the pointer load to be patched, rather than |
| the call to be patched. This is implementation detail specific to MacroAssemblerX86_64, and as |
| such is best handled there. |
| |
| * assembler/AbstractMacroAssembler.h: |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::linkCall): |
| (JSC::MacroAssemblerARM::repatchCall): |
| * assembler/MacroAssemblerARMv7.h: |
| (JSC::MacroAssemblerARMv7::linkCall): |
| (JSC::MacroAssemblerARMv7::repatchCall): |
| * assembler/MacroAssemblerX86.h: |
| (JSC::MacroAssemblerX86::linkCall): |
| (JSC::MacroAssemblerX86::repatchCall): |
| * assembler/MacroAssemblerX86_64.h: |
| (JSC::MacroAssemblerX86_64::linkCall): |
| (JSC::MacroAssemblerX86_64::repatchCall): |
| |
| 2009-07-21 Adam Treat <adam.treat@torchmobile.com> |
| |
| Reviewed by George Staikos. |
| |
| Every wtf file includes other wtf files with <> style includes |
| except this one. Fix the exception. |
| |
| * wtf/ByteArray.h: |
| |
| 2009-07-21 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Move LinkBuffer/RepatchBuffer out of AbstractMacroAssembler. |
| ( https://bugs.webkit.org/show_bug.cgi?id=27485 ) |
| |
| This change is the first step in a process to move code that should be in |
| the architecture-specific MacroAssembler classes up out of Assmbler and |
| AbstractMacroAssembler. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| - added new files |
| |
| * assembler/ARMAssembler.h: |
| (JSC::ARMAssembler::linkPointer): |
| - rename patchPointer to bring it in line with the current link/repatch naming scheme |
| |
| * assembler/ARMv7Assembler.h: |
| (JSC::ARMv7Assembler::linkCall): |
| (JSC::ARMv7Assembler::linkPointer): |
| (JSC::ARMv7Assembler::relinkCall): |
| (JSC::ARMv7Assembler::repatchInt32): |
| (JSC::ARMv7Assembler::repatchPointer): |
| (JSC::ARMv7Assembler::setInt32): |
| (JSC::ARMv7Assembler::setPointer): |
| - rename patchPointer to bring it in line with the current link/repatch naming scheme |
| |
| * assembler/AbstractMacroAssembler.h: |
| (JSC::AbstractMacroAssembler::linkJump): |
| (JSC::AbstractMacroAssembler::linkCall): |
| (JSC::AbstractMacroAssembler::linkPointer): |
| (JSC::AbstractMacroAssembler::getLinkerAddress): |
| (JSC::AbstractMacroAssembler::getLinkerCallReturnOffset): |
| (JSC::AbstractMacroAssembler::repatchJump): |
| (JSC::AbstractMacroAssembler::repatchCall): |
| (JSC::AbstractMacroAssembler::repatchNearCall): |
| (JSC::AbstractMacroAssembler::repatchInt32): |
| (JSC::AbstractMacroAssembler::repatchPointer): |
| (JSC::AbstractMacroAssembler::repatchLoadPtrToLEA): |
| - remove the LinkBuffer/RepatchBuffer classes, but leave a set of (private, friended) methods to interface to the Assembler |
| |
| * assembler/LinkBuffer.h: Added. |
| (JSC::LinkBuffer::LinkBuffer): |
| (JSC::LinkBuffer::~LinkBuffer): |
| (JSC::LinkBuffer::link): |
| (JSC::LinkBuffer::patch): |
| (JSC::LinkBuffer::locationOf): |
| (JSC::LinkBuffer::locationOfNearCall): |
| (JSC::LinkBuffer::returnAddressOffset): |
| (JSC::LinkBuffer::finalizeCode): |
| (JSC::LinkBuffer::finalizeCodeAddendum): |
| (JSC::LinkBuffer::code): |
| (JSC::LinkBuffer::performFinalization): |
| - new file containing the LinkBuffer class, previously a member of AbstractMacroAssembler |
| |
| * assembler/RepatchBuffer.h: Added. |
| (JSC::RepatchBuffer::RepatchBuffer): |
| (JSC::RepatchBuffer::relink): |
| (JSC::RepatchBuffer::repatch): |
| (JSC::RepatchBuffer::repatchLoadPtrToLEA): |
| (JSC::RepatchBuffer::relinkCallerToTrampoline): |
| (JSC::RepatchBuffer::relinkCallerToFunction): |
| (JSC::RepatchBuffer::relinkNearCallerToTrampoline): |
| - new file containing the RepatchBuffer class, previously a member of AbstractMacroAssembler |
| |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::linkJump): |
| (JSC::X86Assembler::linkCall): |
| (JSC::X86Assembler::linkPointerForCall): |
| (JSC::X86Assembler::linkPointer): |
| (JSC::X86Assembler::relinkJump): |
| (JSC::X86Assembler::relinkCall): |
| (JSC::X86Assembler::repatchInt32): |
| (JSC::X86Assembler::repatchPointer): |
| (JSC::X86Assembler::setPointer): |
| (JSC::X86Assembler::setInt32): |
| (JSC::X86Assembler::setRel32): |
| - rename patchPointer to bring it in line with the current link/repatch naming scheme |
| |
| * jit/JIT.cpp: |
| (JSC::ctiPatchNearCallByReturnAddress): |
| (JSC::ctiPatchCallByReturnAddress): |
| - include new headers |
| - remove MacroAssembler:: specification from RepatchBuffer usage |
| |
| * jit/JITPropertyAccess.cpp: |
| * yarr/RegexJIT.cpp: |
| - include new headers |
| |
| 2009-07-21 Robert Agoston <Agoston.Robert@stud.u-szeged.hu> |
| |
| Reviewed by David Levin. |
| |
| Fixed #undef typo. |
| https://bugs.webkit.org/show_bug.cgi?id=27506 |
| |
| * bytecode/Opcode.h: |
| |
| 2009-07-21 Adam Roben <aroben@apple.com> |
| |
| Roll out r46153, r46154, and r46155 |
| |
| These changes were causing build failures and assertion failures on |
| Windows. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * runtime/JSArray.cpp: |
| * runtime/StringPrototype.cpp: |
| * runtime/UString.cpp: |
| * runtime/UString.h: |
| * wtf/FastMalloc.cpp: |
| * wtf/FastMalloc.h: |
| * wtf/Platform.h: |
| * wtf/PossiblyNull.h: Removed. |
| |
| 2009-07-21 Roland Steiner <rolandsteiner@google.com> |
| |
| Reviewed by David Levin. |
| |
| Add ENABLE_RUBY to list of build options |
| https://bugs.webkit.org/show_bug.cgi?id=27324 |
| |
| * Configurations/FeatureDefines.xcconfig: Added flag ENABLE_RUBY. |
| |
| 2009-07-20 Oliver Hunt <oliver@apple.com> |
| |
| Build fix attempt #2 |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-07-20 Oliver Hunt <oliver@apple.com> |
| |
| Build fix attempt #1 |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-07-20 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Make it harder to misuse try* allocation routines |
| https://bugs.webkit.org/show_bug.cgi?id=27469 |
| |
| Jump through a few hoops to make it much harder to accidentally |
| miss null-checking of values returned by the try-* allocation |
| routines. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::putSlowCase): |
| (JSC::JSArray::increaseVectorLength): |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncFontsize): |
| (JSC::stringProtoFuncLink): |
| * runtime/UString.cpp: |
| (JSC::allocChars): |
| (JSC::reallocChars): |
| (JSC::expandCapacity): |
| (JSC::UString::Rep::reserveCapacity): |
| (JSC::UString::expandPreCapacity): |
| (JSC::createRep): |
| (JSC::concatenate): |
| (JSC::UString::spliceSubstringsWithSeparators): |
| (JSC::UString::replaceRange): |
| (JSC::UString::append): |
| (JSC::UString::operator=): |
| * runtime/UString.h: |
| (JSC::UString::Rep::createEmptyBuffer): |
| * wtf/FastMalloc.cpp: |
| (WTF::tryFastZeroedMalloc): |
| (WTF::tryFastMalloc): |
| (WTF::tryFastCalloc): |
| (WTF::tryFastRealloc): |
| (WTF::TCMallocStats::tryFastMalloc): |
| (WTF::TCMallocStats::tryFastCalloc): |
| (WTF::TCMallocStats::tryFastRealloc): |
| * wtf/FastMalloc.h: |
| (WTF::TryMallocReturnValue::TryMallocReturnValue): |
| (WTF::TryMallocReturnValue::~TryMallocReturnValue): |
| (WTF::TryMallocReturnValue::operator Maybe<T>): |
| (WTF::TryMallocReturnValue::getValue): |
| * wtf/PossiblyNull.h: |
| (WTF::PossiblyNull::PossiblyNull): |
| (WTF::PossiblyNull::~PossiblyNull): |
| (WTF::PossiblyNull::getValue): |
| * wtf/Platform.h: |
| |
| 2009-07-20 Gavin Barraclough <barraclough@apple.com> |
| |
| RS Oliver Hunt. |
| |
| Add ARM assembler files to xcodeproj, for convenience editing. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2009-07-20 Jessie Berlin <jberlin@apple.com> |
| |
| Reviewed by David Levin. |
| |
| Fix an incorrect assertion in Vector::remove. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27477 |
| |
| * wtf/Vector.h: |
| (WTF::::remove): |
| Assert that the position at which to start removing elements + the |
| length (the number of elements to remove) is less than or equal to the |
| size of the entire Vector. |
| |
| 2009-07-20 Peter Kasting <pkasting@google.com> |
| |
| Reviewed by Mark Rowe. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27468 |
| Back out r46060, which caused problems for some Apple developers. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: |
| * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: |
| * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: |
| |
| 2009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Oliver Hunt. |
| |
| Allow custom memory allocation control in NewThreadContext |
| https://bugs.webkit.org/show_bug.cgi?id=27338 |
| |
| Inherits NewThreadContext struct from FastAllocBase because it |
| has been instantiated by 'new' JavaScriptCore/wtf/Threading.cpp:76. |
| |
| * wtf/Threading.cpp: |
| |
| 2009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Oliver Hunt. |
| |
| Allow custom memory allocation control in JavaScriptCore's JSClassRef.h |
| https://bugs.webkit.org/show_bug.cgi?id=27340 |
| |
| Inherit StaticValueEntry and StaticFunctionEntry struct from FastAllocBase because these |
| have been instantiated by 'new' in JavaScriptCore/API/JSClassRef.cpp:153 |
| and in JavaScriptCore/API/JSClassRef.cpp:166. |
| |
| * API/JSClassRef.h: |
| |
| 2009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| Allow custom memory allocation control in JavaScriptCore's RegexPattern.h |
| https://bugs.webkit.org/show_bug.cgi?id=27343 |
| |
| Inherits RegexPattern.h's structs (which have been instantiated by operator new) from FastAllocBase: |
| |
| CharacterClass (new call: JavaScriptCore/yarr/RegexCompiler.cpp:144) |
| PatternAlternative (new call: JavaScriptCore/yarr/RegexPattern.h:221) |
| PatternDisjunction (new call: JavaScriptCore/yarr/RegexCompiler.cpp:446) |
| |
| * yarr/RegexPattern.h: |
| |
| 2009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| Allow custom memory allocation control for JavaScriptCore's MatchFrame struct |
| https://bugs.webkit.org/show_bug.cgi?id=27344 |
| |
| Inherits MatchFrame struct from FastAllocBase because it has |
| been instantiated by 'new' JavaScriptCore/pcre/pcre_exec.cpp:359. |
| |
| * pcre/pcre_exec.cpp: |
| |
| 2009-07-20 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Holger Freyther. |
| |
| Remove some outdated S60 platform specific code |
| https://bugs.webkit.org/show_bug.cgi?id=27423 |
| |
| * wtf/Platform.h: |
| |
| 2009-07-20 Csaba Osztrogonac <oszi@inf.u-szeged.hu> |
| |
| Reviewed by Simon Hausmann. |
| |
| Qt build fix with MSVC and MinGW. |
| |
| * jsc.pro: Make sure jsc is a console application, and turn off |
| exceptions and stl support to fix the build. |
| |
| 2009-07-20 Xan Lopez <xlopez@igalia.com> |
| |
| Reviewed by Gustavo Noronha. |
| |
| Do not use C++-style comments in preprocessor directives. |
| |
| GCC does not like this in some configurations, using C-style |
| comments is safer. |
| |
| * wtf/Platform.h: |
| |
| 2009-07-17 Peter Kasting <pkasting@google.com> |
| |
| Reviewed by Steve Falkenburg. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27323 |
| Only add Cygwin to the path when it isn't already there. This avoids |
| causing problems for people who purposefully have non-Cygwin versions of |
| executables like svn in front of the Cygwin ones in their paths. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: |
| * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: |
| * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: |
| |
| 2009-07-17 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Add YARR support for generic ARM platforms (disabled by default). |
| https://bugs.webkit.org/show_bug.cgi?id=24986 |
| |
| Add generic ARM port for MacroAssembler. It supports the whole |
| MacroAssembler functionality except floating point. |
| |
| The class JmpSrc is extended with a flag which enables to patch |
| the jump destination offset during execution. This feature is |
| required for generic ARM port. |
| |
| Signed off by Zoltan Herczeg <zherczeg@inf.u-szeged.hu> |
| Signed off by Gabor Loki <loki@inf.u-szeged.hu> |
| |
| * JavaScriptCore.pri: |
| * assembler/ARMAssembler.cpp: Added. |
| (JSC::ARMAssembler::getLdrImmAddress): |
| (JSC::ARMAssembler::linkBranch): |
| (JSC::ARMAssembler::patchConstantPoolLoad): |
| (JSC::ARMAssembler::getOp2): |
| (JSC::ARMAssembler::genInt): |
| (JSC::ARMAssembler::getImm): |
| (JSC::ARMAssembler::moveImm): |
| (JSC::ARMAssembler::dataTransfer32): |
| (JSC::ARMAssembler::baseIndexTransfer32): |
| (JSC::ARMAssembler::executableCopy): |
| * assembler/ARMAssembler.h: Added. |
| (JSC::ARM::): |
| (JSC::ARMAssembler::ARMAssembler): |
| (JSC::ARMAssembler::): |
| (JSC::ARMAssembler::JmpSrc::JmpSrc): |
| (JSC::ARMAssembler::JmpSrc::enableLatePatch): |
| (JSC::ARMAssembler::JmpDst::JmpDst): |
| (JSC::ARMAssembler::JmpDst::isUsed): |
| (JSC::ARMAssembler::JmpDst::used): |
| (JSC::ARMAssembler::emitInst): |
| (JSC::ARMAssembler::and_r): |
| (JSC::ARMAssembler::ands_r): |
| (JSC::ARMAssembler::eor_r): |
| (JSC::ARMAssembler::eors_r): |
| (JSC::ARMAssembler::sub_r): |
| (JSC::ARMAssembler::subs_r): |
| (JSC::ARMAssembler::rsb_r): |
| (JSC::ARMAssembler::rsbs_r): |
| (JSC::ARMAssembler::add_r): |
| (JSC::ARMAssembler::adds_r): |
| (JSC::ARMAssembler::adc_r): |
| (JSC::ARMAssembler::adcs_r): |
| (JSC::ARMAssembler::sbc_r): |
| (JSC::ARMAssembler::sbcs_r): |
| (JSC::ARMAssembler::rsc_r): |
| (JSC::ARMAssembler::rscs_r): |
| (JSC::ARMAssembler::tst_r): |
| (JSC::ARMAssembler::teq_r): |
| (JSC::ARMAssembler::cmp_r): |
| (JSC::ARMAssembler::orr_r): |
| (JSC::ARMAssembler::orrs_r): |
| (JSC::ARMAssembler::mov_r): |
| (JSC::ARMAssembler::movs_r): |
| (JSC::ARMAssembler::bic_r): |
| (JSC::ARMAssembler::bics_r): |
| (JSC::ARMAssembler::mvn_r): |
| (JSC::ARMAssembler::mvns_r): |
| (JSC::ARMAssembler::mul_r): |
| (JSC::ARMAssembler::muls_r): |
| (JSC::ARMAssembler::mull_r): |
| (JSC::ARMAssembler::ldr_imm): |
| (JSC::ARMAssembler::ldr_un_imm): |
| (JSC::ARMAssembler::dtr_u): |
| (JSC::ARMAssembler::dtr_ur): |
| (JSC::ARMAssembler::dtr_d): |
| (JSC::ARMAssembler::dtr_dr): |
| (JSC::ARMAssembler::ldrh_r): |
| (JSC::ARMAssembler::ldrh_d): |
| (JSC::ARMAssembler::ldrh_u): |
| (JSC::ARMAssembler::strh_r): |
| (JSC::ARMAssembler::push_r): |
| (JSC::ARMAssembler::pop_r): |
| (JSC::ARMAssembler::poke_r): |
| (JSC::ARMAssembler::peek_r): |
| (JSC::ARMAssembler::clz_r): |
| (JSC::ARMAssembler::bkpt): |
| (JSC::ARMAssembler::lsl): |
| (JSC::ARMAssembler::lsr): |
| (JSC::ARMAssembler::asr): |
| (JSC::ARMAssembler::lsl_r): |
| (JSC::ARMAssembler::lsr_r): |
| (JSC::ARMAssembler::asr_r): |
| (JSC::ARMAssembler::size): |
| (JSC::ARMAssembler::ensureSpace): |
| (JSC::ARMAssembler::label): |
| (JSC::ARMAssembler::align): |
| (JSC::ARMAssembler::jmp): |
| (JSC::ARMAssembler::patchPointerInternal): |
| (JSC::ARMAssembler::patchConstantPoolLoad): |
| (JSC::ARMAssembler::patchPointer): |
| (JSC::ARMAssembler::repatchInt32): |
| (JSC::ARMAssembler::repatchPointer): |
| (JSC::ARMAssembler::repatchLoadPtrToLEA): |
| (JSC::ARMAssembler::linkJump): |
| (JSC::ARMAssembler::relinkJump): |
| (JSC::ARMAssembler::linkCall): |
| (JSC::ARMAssembler::relinkCall): |
| (JSC::ARMAssembler::getRelocatedAddress): |
| (JSC::ARMAssembler::getDifferenceBetweenLabels): |
| (JSC::ARMAssembler::getCallReturnOffset): |
| (JSC::ARMAssembler::getOp2Byte): |
| (JSC::ARMAssembler::placeConstantPoolBarrier): |
| (JSC::ARMAssembler::RM): |
| (JSC::ARMAssembler::RS): |
| (JSC::ARMAssembler::RD): |
| (JSC::ARMAssembler::RN): |
| (JSC::ARMAssembler::getConditionalField): |
| * assembler/ARMv7Assembler.h: |
| (JSC::ARMv7Assembler::JmpSrc::enableLatePatch): |
| * assembler/AbstractMacroAssembler.h: |
| (JSC::AbstractMacroAssembler::Call::enableLatePatch): |
| (JSC::AbstractMacroAssembler::Jump::enableLatePatch): |
| * assembler/MacroAssembler.h: |
| * assembler/MacroAssemblerARM.h: Added. |
| (JSC::MacroAssemblerARM::): |
| (JSC::MacroAssemblerARM::add32): |
| (JSC::MacroAssemblerARM::and32): |
| (JSC::MacroAssemblerARM::lshift32): |
| (JSC::MacroAssemblerARM::mul32): |
| (JSC::MacroAssemblerARM::not32): |
| (JSC::MacroAssemblerARM::or32): |
| (JSC::MacroAssemblerARM::rshift32): |
| (JSC::MacroAssemblerARM::sub32): |
| (JSC::MacroAssemblerARM::xor32): |
| (JSC::MacroAssemblerARM::load32): |
| (JSC::MacroAssemblerARM::load32WithAddressOffsetPatch): |
| (JSC::MacroAssemblerARM::loadPtrWithPatchToLEA): |
| (JSC::MacroAssemblerARM::load16): |
| (JSC::MacroAssemblerARM::store32WithAddressOffsetPatch): |
| (JSC::MacroAssemblerARM::store32): |
| (JSC::MacroAssemblerARM::pop): |
| (JSC::MacroAssemblerARM::push): |
| (JSC::MacroAssemblerARM::move): |
| (JSC::MacroAssemblerARM::swap): |
| (JSC::MacroAssemblerARM::signExtend32ToPtr): |
| (JSC::MacroAssemblerARM::zeroExtend32ToPtr): |
| (JSC::MacroAssemblerARM::branch32): |
| (JSC::MacroAssemblerARM::branch16): |
| (JSC::MacroAssemblerARM::branchTest32): |
| (JSC::MacroAssemblerARM::jump): |
| (JSC::MacroAssemblerARM::branchAdd32): |
| (JSC::MacroAssemblerARM::mull32): |
| (JSC::MacroAssemblerARM::branchMul32): |
| (JSC::MacroAssemblerARM::branchSub32): |
| (JSC::MacroAssemblerARM::breakpoint): |
| (JSC::MacroAssemblerARM::nearCall): |
| (JSC::MacroAssemblerARM::call): |
| (JSC::MacroAssemblerARM::ret): |
| (JSC::MacroAssemblerARM::set32): |
| (JSC::MacroAssemblerARM::setTest32): |
| (JSC::MacroAssemblerARM::tailRecursiveCall): |
| (JSC::MacroAssemblerARM::makeTailRecursiveCall): |
| (JSC::MacroAssemblerARM::moveWithPatch): |
| (JSC::MacroAssemblerARM::branchPtrWithPatch): |
| (JSC::MacroAssemblerARM::storePtrWithPatch): |
| (JSC::MacroAssemblerARM::supportsFloatingPoint): |
| (JSC::MacroAssemblerARM::supportsFloatingPointTruncate): |
| (JSC::MacroAssemblerARM::loadDouble): |
| (JSC::MacroAssemblerARM::storeDouble): |
| (JSC::MacroAssemblerARM::addDouble): |
| (JSC::MacroAssemblerARM::subDouble): |
| (JSC::MacroAssemblerARM::mulDouble): |
| (JSC::MacroAssemblerARM::convertInt32ToDouble): |
| (JSC::MacroAssemblerARM::branchDouble): |
| (JSC::MacroAssemblerARM::branchTruncateDoubleToInt32): |
| (JSC::MacroAssemblerARM::ARMCondition): |
| (JSC::MacroAssemblerARM::prepareCall): |
| (JSC::MacroAssemblerARM::call32): |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::JmpSrc::enableLatePatch): |
| * jit/ExecutableAllocator.h: |
| (JSC::ExecutableAllocator::cacheFlush): |
| * wtf/Platform.h: |
| * yarr/RegexJIT.cpp: |
| (JSC::Yarr::RegexGenerator::generateEnter): |
| (JSC::Yarr::RegexGenerator::generateReturn): |
| |
| 2009-07-17 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Extend AssemblerBuffer with constant pool handling mechanism. |
| https://bugs.webkit.org/show_bug.cgi?id=24986 |
| |
| Add a platform independed constant pool framework. |
| This pool can store 32 or 64 bits values which is enough to hold |
| any integer, pointer or double constant. |
| |
| * assembler/AssemblerBuffer.h: |
| (JSC::AssemblerBuffer::putIntUnchecked): |
| (JSC::AssemblerBuffer::putInt64Unchecked): |
| (JSC::AssemblerBuffer::append): |
| (JSC::AssemblerBuffer::grow): |
| * assembler/AssemblerBufferWithConstantPool.h: Added. |
| (JSC::): |
| |
| 2009-07-17 Eric Roman <eroman@chromium.org> |
| |
| Reviewed by Darin Adler. |
| |
| Build fix for non-Darwin. |
| Add a guard for inclusion of RetainPtr.h which includes CoreFoundation.h |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27382 |
| |
| * wtf/unicode/icu/CollatorICU.cpp: |
| |
| 2009-07-17 Alexey Proskuryakov <ap@webkit.org> |
| |
| Reviewed by John Sullivan. |
| |
| Get user default collation order via a CFLocale API when available. |
| |
| * wtf/unicode/icu/CollatorICU.cpp: (WTF::Collator::userDefault): |
| |
| 2009-07-17 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| [Qt] Fix the include path for the Symbian port |
| https://bugs.webkit.org/show_bug.cgi?id=27358 |
| |
| * JavaScriptCore.pri: |
| |
| 2009-07-17 Csaba Osztrogonac <oszi@inf.u-szeged.hu> |
| |
| Reviewed by David Levin. |
| |
| Build fix on platforms don't have MMAP. |
| https://bugs.webkit.org/show_bug.cgi?id=27365 |
| |
| * interpreter/RegisterFile.h: Including stdio.h irrespectively of HAVE(MMAP) |
| |
| 2009-07-16 Fumitoshi Ukai <ukai@chromium.org> |
| |
| Reviewed by David Levin. |
| |
| Add --web-sockets flag and ENABLE_WEB_SOCKETS define. |
| https://bugs.webkit.org/show_bug.cgi?id=27206 |
| |
| Add ENABLE_WEB_SOCKETS |
| |
| * Configurations/FeatureDefines.xcconfig: add ENABLE_WEB_SOCKETS |
| |
| 2009-07-16 Maxime Simon <simon.maxime@gmail.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Added Haiku-specific files for JavaScriptCore. |
| https://bugs.webkit.org/show_bug.cgi?id=26620 |
| |
| * wtf/haiku/MainThreadHaiku.cpp: Added. |
| (WTF::initializeMainThreadPlatform): |
| (WTF::scheduleDispatchFunctionsOnMainThread): |
| |
| 2009-07-16 Gavin Barraclough <barraclough@apple.com> |
| |
| RS by Oliver Hunt. |
| |
| Revert r45969, this fix does not appear to be valid. |
| https://bugs.webkit.org/show_bug.cgi?id=27077 |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::~CodeBlock): |
| (JSC::CodeBlock::unlinkCallers): |
| * jit/JIT.cpp: |
| * jit/JIT.h: |
| |
| 2009-07-16 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Oliver Hunt. |
| |
| Allow custom memory allocation control in ExceptionInfo and RareData struct |
| https://bugs.webkit.org/show_bug.cgi?id=27336 |
| |
| Inherits ExceptionInfo and RareData struct from FastAllocBase because these |
| have been instantiated by 'new' in JavaScriptCore/bytecode/CodeBlock.cpp:1289 and |
| in JavaScriptCore/bytecode/CodeBlock.h:453. |
| |
| Remove unnecessary WTF:: namespace from CodeBlock inheritance. |
| |
| * bytecode/CodeBlock.h: |
| |
| 2009-07-16 Mark Rowe <mrowe@apple.com> |
| |
| Rubber-stamped by Geoff Garen. |
| |
| Fix FeatureDefines.xcconfig to not be out of sync with the rest of the world. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2009-07-16 Yong Li <yong.li@torchmobile.com> |
| |
| Reviewed by George Staikos. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27320 |
| _countof is only included in CE6; for CE5 we need to define it ourself |
| |
| * wtf/Platform.h: |
| |
| 2009-07-16 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> |
| |
| Reviewed by Oliver Hunt. |
| |
| Workers + garbage collector: weird crashes |
| https://bugs.webkit.org/show_bug.cgi?id=27077 |
| |
| We need to unlink cached method call sites when a function is destroyed. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::~CodeBlock): |
| (JSC::CodeBlock::unlinkCallers): |
| * jit/JIT.cpp: |
| (JSC::JIT::unlinkMethodCall): |
| * jit/JIT.h: |
| |
| 2009-07-15 Steve Falkenburg <sfalken@apple.com> |
| |
| Windows Build fix. |
| |
| Visual Studio reset our intermediate directory on us. |
| This sets it back. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.vcproj/testapi/testapi.vcproj: |
| |
| 2009-07-15 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Eric Seidel. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=26794 |
| Make Yacc-generated parsers to use fastMalloc/fastFree. |
| |
| Define YYMALLOC and YYFREE to fastMalloc and fastFree |
| respectively. |
| |
| * parser/Grammar.y: |
| |
| 2009-07-15 Darin Adler <darin@apple.com> |
| |
| Fix a build for a particular Apple configuration. |
| |
| * wtf/FastAllocBase.h: Change include to use "" style for |
| including another wtf header. This is the style we use for |
| including other public headers in the same directory. |
| |
| 2009-07-15 George Staikos <george.staikos@torchmobile.com> |
| |
| Reviewed by Adam Treat. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27303 |
| Implement createThreadInternal for WinCE. |
| Contains changes by George Staikos <george.staikos@torchmobile.com> and Joe Mason <joe.mason@torchmobile.com> |
| |
| * wtf/ThreadingWin.cpp: |
| (WTF::createThreadInternal): |
| |
| 2009-07-15 Joe Mason <joe.mason@torchmobile.com> |
| |
| Reviewed by George Staikos. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27298 |
| Platform defines for WINCE. |
| Contains changes by Yong Li <yong.li@torchmobile.com>, |
| George Staikos <george.staikos@torchmobile.com> and Joe Mason <joe.mason@torchmobile.com> |
| |
| * wtf/Platform.h: |
| |
| 2009-07-15 Yong Li <yong.li@torchmobile.com> |
| |
| Reviewed by Adam Treat. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27306 |
| Use RegisterClass instead of RegisterClassEx on WinCE. |
| |
| * wtf/win/MainThreadWin.cpp: |
| (WTF::initializeMainThreadPlatform): |
| |
| 2009-07-15 Yong Li <yong.li@torchmobile.com> |
| |
| Reviewed by George Staikos. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27301 |
| Use OutputDebugStringW on WinCE since OutputDebugStringA is not supported |
| Originally written by Yong Li <yong.li@torchmobile.com> and refactored by |
| Joe Mason <joe.mason@torchmobile.com> |
| |
| * wtf/Assertions.cpp: vprintf_stderr_common |
| |
| 2009-07-15 Yong Li <yong.li@torchmobile.com> |
| |
| Reviewed by George Staikos. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27020 |
| msToGregorianDateTime should set utcOffset to 0 when outputIsUTC is false |
| |
| * wtf/DateMath.cpp: |
| (WTF::gregorianDateTimeToMS): |
| |
| 2009-07-15 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| [Qt] Cleanup - Remove obsolete code from the make system |
| https://bugs.webkit.org/show_bug.cgi?id=27299 |
| |
| * JavaScriptCore.pro: |
| * jsc.pro: |
| |
| 2009-07-07 Norbert Leser <norbert.leser@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27056 |
| |
| Alternate bool operator for codewarrior compiler (WINSCW). |
| Compiler (latest b482) reports error for UnspecifiedBoolType construct: |
| "illegal explicit conversion from 'WTF::OwnArrayPtr<JSC::Register>' to 'bool'" |
| |
| Same fix as in r38391. |
| |
| * JavaScriptCore/wtf/OwnArrayPtr.h: |
| |
| 2009-07-15 Norbert Leser <norbert.leser@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| Qualify include path with wtf to fix compilation |
| on Symbian. |
| https://bugs.webkit.org/show_bug.cgi?id=27055 |
| |
| * interpreter/Interpreter.h: |
| |
| 2009-07-15 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Dave Kilzer. |
| |
| Turn off non-portable date manipulations for SYMBIAN |
| https://bugs.webkit.org/show_bug.cgi?id=27064 |
| |
| Introduce HAVE(TM_GMTOFF), HAVE(TM_ZONE) and HAVE(TIMEGM) guards |
| and place the rules for controlling the guards in Platform.h. |
| Turn off these newly introduced guards for SYMBIAN. |
| |
| * wtf/DateMath.cpp: |
| (WTF::calculateUTCOffset): |
| * wtf/DateMath.h: |
| (WTF::GregorianDateTime::GregorianDateTime): |
| (WTF::GregorianDateTime::operator tm): |
| * wtf/Platform.h: |
| |
| 2009-07-15 Norbert Leser <norbert.leser@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Undef ASSERT on Symbian, to avoid excessive warnings |
| https://bugs.webkit.org/show_bug.cgi?id=27052 |
| |
| * wtf/Assertions.h: |
| |
| 2009-07-15 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| REGRESSION: fast/js/postfix-syntax.html fails with interpreter |
| https://bugs.webkit.org/show_bug.cgi?id=27294 |
| |
| When postfix operators operating on locals assign to the same local |
| the order of operations has to be to store the incremented value, then |
| store the unmodified number. Rather than implementing this subtle |
| semantic in the interpreter I've just made the logic explicit in the |
| bytecode generator, so x=x++ effectively becomes x=ToNumber(x) (for a |
| local var x). |
| |
| * parser/Nodes.cpp: |
| (JSC::emitPostIncOrDec): |
| |
| 2009-07-15 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| REGRESSION(43559): fast/js/kde/arguments-scope.html fails with interpreter |
| https://bugs.webkit.org/show_bug.cgi?id=27259 |
| |
| The interpreter was incorrectly basing its need to create the arguments object |
| based on the presence of the callframe's argument reference rather than the local |
| arguments reference. Based on this it then overrode the local variable reference. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| |
| 2009-07-14 Steve Falkenburg <sfalken@apple.com> |
| |
| Reorganize JavaScriptCore headers into: |
| API: include/JavaScriptCore/ |
| Private: include/private/JavaScriptCore/ |
| |
| Reviewed by Darin Adler. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: |
| * JavaScriptCore.vcproj/testapi/testapi.vcproj: |
| * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: |
| |
| 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| Change JSCell's superclass to NoncopyableCustomAllocated |
| https://bugs.webkit.org/show_bug.cgi?id=27248 |
| |
| JSCell class customizes operator new, since Noncopyable will be |
| inherited from FastAllocBase, NoncopyableCustomAllocated has |
| to be used. |
| |
| * runtime/JSCell.h: |
| |
| 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| Change all Noncopyable inheriting visibility to public. |
| https://bugs.webkit.org/show_bug.cgi?id=27225 |
| |
| Change all Noncopyable inheriting visibility to public because |
| it is needed to the custom allocation framework (bug #20422). |
| |
| * bytecode/SamplingTool.h: |
| * bytecompiler/RegisterID.h: |
| * interpreter/CachedCall.h: |
| * interpreter/RegisterFile.h: |
| * parser/Lexer.h: |
| * parser/Parser.h: |
| * runtime/ArgList.h: |
| * runtime/BatchedTransitionOptimizer.h: |
| * runtime/Collector.h: |
| * runtime/CommonIdentifiers.h: |
| * runtime/JSCell.h: |
| * runtime/JSGlobalObject.h: |
| * runtime/JSLock.h: |
| * runtime/JSONObject.cpp: |
| * runtime/SmallStrings.cpp: |
| * runtime/SmallStrings.h: |
| * wtf/CrossThreadRefCounted.h: |
| * wtf/GOwnPtr.h: |
| * wtf/Locker.h: |
| * wtf/MessageQueue.h: |
| * wtf/OwnArrayPtr.h: |
| * wtf/OwnFastMallocPtr.h: |
| * wtf/OwnPtr.h: |
| * wtf/RefCounted.h: |
| * wtf/ThreadSpecific.h: |
| * wtf/Threading.h: |
| * wtf/Vector.h: |
| * wtf/unicode/Collator.h: |
| |
| 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| Change ParserArenaRefCounted's superclass to RefCountedCustomAllocated |
| https://bugs.webkit.org/show_bug.cgi?id=27249 |
| |
| ParserArenaDeletable customizes operator new, to avoid double inheritance |
| ParserArenaDeletable's superclass has been changed to RefCountedCustomAllocated. |
| |
| * parser/Nodes.h: |
| |
| 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| Add RefCountedCustomAllocated to RefCounted.h |
| https://bugs.webkit.org/show_bug.cgi?id=27232 |
| |
| Some class which are inherited from RefCounted customize |
| operator new, but RefCounted is inherited from Noncopyable |
| which will be inherited from FastAllocBase. To avoid |
| conflicts Noncopyable inheriting was moved down to RefCounted |
| and to avoid double inheritance this class has been added. |
| |
| * wtf/RefCounted.h: |
| (WTF::RefCountedCustomAllocated::deref): |
| (WTF::RefCountedCustomAllocated::~RefCountedCustomAllocated): |
| |
| 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| Add NoncopyableCustomAllocated to Noncopyable.h. |
| https://bugs.webkit.org/show_bug.cgi?id=27228 |
| |
| Some classes which inherited from Noncopyable overrides operator new |
| since Noncopyable'll be inherited from FastAllocBase, Noncopyable.h |
| needs to be extended with this new class to support the overriding. |
| |
| * wtf/Noncopyable.h: |
| (WTFNoncopyable::NoncopyableCustomAllocated::NoncopyableCustomAllocated): |
| (WTFNoncopyable::NoncopyableCustomAllocated::~NoncopyableCustomAllocated): |
| |
| 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| Allow custom memory allocation control for JavaScriptCore's IdentifierTable class |
| https://bugs.webkit.org/show_bug.cgi?id=27260 |
| |
| Inherits IdentifierTable class from FastAllocBase because it has been |
| instantiated by 'new' in JavaScriptCore/runtime/Identifier.cpp:70. |
| |
| * runtime/Identifier.cpp: |
| |
| 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| Allow custom memory allocation control for JavaScriptCore's Profiler class |
| https://bugs.webkit.org/show_bug.cgi?id=27253 |
| |
| Inherits Profiler class from FastAllocBase because it has been instantiated by |
| 'new' in JavaScriptCore/profiler/Profiler.cpp:56. |
| |
| * profiler/Profiler.h: |
| |
| 2009-07-06 George Staikos <george.staikos@torchmobile.com> |
| |
| Reviewed by Adam Treat. |
| |
| Authors: George Staikos <george.staikos@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com>, Makoto Matsumoto <matumoto@math.keio.ac.jp>, Takuji Nishimura |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27030 |
| Implement custom RNG for WinCE using Mersenne Twister |
| |
| * wtf/RandomNumber.cpp: |
| (WTF::randomNumber): |
| * wtf/RandomNumberSeed.h: |
| (WTF::initializeRandomNumberGenerator): |
| * wtf/wince/mt19937ar.c: Added. |
| (init_genrand): |
| (init_by_array): |
| (genrand_int32): |
| (genrand_int31): |
| (genrand_real1): |
| (genrand_real2): |
| (genrand_real3): |
| (genrand_res53): |
| |
| 2009-07-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> |
| |
| Unreviewed make dist build fix. |
| |
| * GNUmakefile.am: |
| |
| 2009-07-13 Drew Wilson <atwilson@google.com> |
| |
| Reviewed by David Levin. |
| |
| Add ENABLE(SHARED_WORKERS) flag and define SharedWorker APIs |
| https://bugs.webkit.org/show_bug.cgi?id=26932 |
| |
| Added ENABLE(SHARED_WORKERS) flag (off by default). |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2009-07-07 Norbert Leser <norbert.leser@nokia.com> |
| |
| Reviewed by Maciej Stachoviak. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27058 |
| |
| Removed superfluous parenthesis around single expression. |
| Compilers on Symbian platform fail to properly parse and compile. |
| |
| * JavaScriptCore/wtf/Platform.h: |
| |
| 2009-07-13 Norbert Leser <norbert.leser@nokia.com> |
| |
| Reviewed by Maciej Stachoviak. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27054 |
| |
| Renamed Translator to HashTranslator |
| |
| Codewarrior compiler (WINSCW) latest b482 cannot resolve typename |
| mismatch between template declaration and definition |
| (HashTranslator / Translator) |
| |
| * wtf/HashSet.h: |
| |
| 2009-07-13 Norbert Leser <norbert.leser@nokia.com> |
| |
| Reviewed by Eric Seidel. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27053 |
| |
| Ambiguity in LabelScope initialization |
| |
| Codewarrior compiler (WINSCW) latest b482 on Symbian cannot resolve |
| type of "0" unambiguously. Set expression explicitly to |
| PassRefPtr<Label>::PassRefPtr() |
| |
| * bytecompiler/BytecodeGenerator.cpp |
| |
| 2009-07-11 Simon Fraser <simon.fraser@apple.com> |
| |
| Enable support for accelerated compositing and 3d transforms on Leopard. |
| <https://bugs.webkit.org/show_bug.cgi?id=20166> |
| <rdar://problem/6120614> |
| |
| Reviewed by Oliver Hunt. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * wtf/Platform.h: |
| |
| 2009-07-10 Mark Rowe <mrowe@apple.com> |
| |
| Second part of the "make Windows happier" dance. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-07-10 Mark Rowe <mrowe@apple.com> |
| |
| Try and make the Windows build happy. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-07-10 Kevin McCullough <kmccullough@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| * debugger/Debugger.h: Made this function virtual for use in WebCore's |
| WebInspector. |
| |
| 2009-07-10 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Darin Adler. |
| |
| ParserArenaDeletable should override delete |
| https://bugs.webkit.org/show_bug.cgi?id=26790 |
| |
| ParserArenaDeletable overrides new, but it does not override delete. |
| ParserArenaDeletable must be freed by fastFree |
| because it is allocated by fastMalloc. |
| |
| * parser/NodeConstructors.h: |
| (JSC::ParserArenaDeletable::operator delete): |
| * parser/Nodes.h: |
| |
| 2009-07-10 Adam Roben <aroben@apple.com> |
| |
| Sort all our Xcode projects |
| |
| Accomplished using sort-Xcode-project-file. |
| |
| Requested by Dave Kilzer. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2009-07-09 Maciej Stachowiak <mjs@apple.com> |
| |
| Not reviewed, build fix. |
| |
| Windows build fix for the last change. |
| |
| * wtf/dtoa.cpp: Forgot to include Vector.h |
| |
| 2009-07-09 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| REGRESSION: crash in edge cases of floating point parsing. |
| https://bugs.webkit.org/show_bug.cgi?id=27110 |
| <rdar://problem/7044458> |
| |
| Tests: fast/css/number-parsing-crash.html |
| fast/css/number-parsing-crash.html |
| fast/js/number-parsing-crash.html |
| |
| * wtf/dtoa.cpp: |
| (WTF::BigInt::BigInt): Converted this to more a proper class, using a Vector |
| with inline capacity |
| |
| (WTF::lshift): Rearranged logic somewhat nontrivially to deal with the new way of sizing BigInts. |
| Added an assertion to verify that invariants are maintained. |
| |
| All other functions are adapted fairly mechanically to the above changes. |
| (WTF::BigInt::clear): |
| (WTF::BigInt::size): |
| (WTF::BigInt::resize): |
| (WTF::BigInt::words): |
| (WTF::BigInt::append): |
| (WTF::multadd): |
| (WTF::s2b): |
| (WTF::i2b): |
| (WTF::mult): |
| (WTF::cmp): |
| (WTF::diff): |
| (WTF::b2d): |
| (WTF::d2b): |
| (WTF::ratio): |
| (WTF::strtod): |
| (WTF::quorem): |
| (WTF::dtoa): |
| |
| 2009-07-09 Drew Wilson <atwilson@google.com> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Turned on CHANNEL_MESSAGING by default because the MessageChannel API |
| can now be implemented for Web Workers and is reasonably stable. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2009-07-09 Oliver Hunt <oliver@apple.com> |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| |
| 2009-07-09 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Bug 27016 - Interpreter crashes due to invalid array indexes |
| <https://bugs.webkit.org/show_bug.cgi?id=27016> |
| |
| Unsigned vs signed conversions results in incorrect behaviour in |
| 64bit interpreter builds. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| |
| 2009-07-09 Dimitri Glazkov <dglazkov@chromium.org> |
| |
| Reviewed by Darin Fisher. |
| |
| [Chromium] Upstream JavaScriptCore.gypi, the project file for Chromium build. |
| https://bugs.webkit.org/show_bug.cgi?id=27135 |
| |
| * JavaScriptCore.gypi: Added. |
| |
| 2009-07-09 Joe Mason <joe.mason@torchmobile.com> |
| |
| Reviewed by George Staikos. |
| |
| Authors: Yong Li <yong.li@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com> |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27031 |
| Add an override for deleteOwnedPtr(HDC) on Windows |
| |
| * wtf/OwnPtrCommon.h: |
| * wtf/OwnPtrWin.cpp: |
| (WTF::deleteOwnedPtr): |
| |
| 2009-07-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Reviewed by Darin Adler. |
| |
| Guard singal.h dependency with HAVE(SIGNAL_H) to enable building jsc |
| on SYMBIAN. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27026 |
| |
| Based on Norbert Leser's work. |
| |
| * jsc.cpp: |
| (printUsageStatement): |
| (parseArguments): |
| * wtf/Platform.h: |
| |
| 2009-07-07 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Stop loading constants into the register file. |
| |
| Instead, use high register values (highest bit bar the sign bit set) to indicate |
| constants in the instruction stream, and when we encounter such a value load it |
| directly from the CodeBlock. |
| |
| Since constants are no longer copied into the register file, this patch renders |
| the 'unexpected constant' mechanism redundant, and removes it. |
| |
| 2% improvement, thanks to Sam Weinig. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::dump): |
| (JSC::CodeBlock::CodeBlock): |
| (JSC::CodeBlock::mark): |
| (JSC::CodeBlock::shrinkToFit): |
| * bytecode/CodeBlock.h: |
| (JSC::CodeBlock::isTemporaryRegisterIndex): |
| (JSC::CodeBlock::constantRegister): |
| (JSC::CodeBlock::isConstantRegisterIndex): |
| (JSC::CodeBlock::getConstant): |
| (JSC::ExecState::r): |
| * bytecode/Opcode.h: |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::preserveLastVar): |
| (JSC::BytecodeGenerator::BytecodeGenerator): |
| (JSC::BytecodeGenerator::addConstantValue): |
| (JSC::BytecodeGenerator::emitEqualityOp): |
| (JSC::BytecodeGenerator::emitLoad): |
| (JSC::BytecodeGenerator::emitResolveBase): |
| (JSC::BytecodeGenerator::emitResolveWithBase): |
| (JSC::BytecodeGenerator::emitNewError): |
| * bytecompiler/BytecodeGenerator.h: |
| (JSC::BytecodeGenerator::emitNode): |
| * interpreter/CallFrame.h: |
| (JSC::ExecState::noCaller): |
| (JSC::ExecState::hasHostCallFrameFlag): |
| (JSC::ExecState::addHostCallFrameFlag): |
| (JSC::ExecState::removeHostCallFrameFlag): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::resolve): |
| (JSC::Interpreter::resolveSkip): |
| (JSC::Interpreter::resolveGlobal): |
| (JSC::Interpreter::resolveBase): |
| (JSC::Interpreter::resolveBaseAndProperty): |
| (JSC::Interpreter::resolveBaseAndFunc): |
| (JSC::Interpreter::dumpRegisters): |
| (JSC::Interpreter::throwException): |
| (JSC::Interpreter::createExceptionScope): |
| (JSC::Interpreter::privateExecute): |
| (JSC::Interpreter::retrieveArguments): |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileMainPass): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitLoadDouble): |
| (JSC::JIT::emitLoadInt32ToDouble): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_new_error): |
| (JSC::JIT::emit_op_enter): |
| (JSC::JIT::emit_op_enter_with_activation): |
| * parser/Nodes.cpp: |
| (JSC::DeleteResolveNode::emitBytecode): |
| (JSC::DeleteValueNode::emitBytecode): |
| (JSC::PrefixResolveNode::emitBytecode): |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::JSActivation): |
| * wtf/Platform.h: |
| |
| 2009-07-07 Mark Rowe <mrowe@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Fix <https://bugs.webkit.org/show_bug.cgi?id=27025> / <rdar://problem/7033448>. |
| Bug 27025: Crashes and regression test failures related to regexps in 64-bit |
| |
| For x86_64 RegexGenerator uses rbx, a callee-save register, as a scratch register but |
| neglects to save and restore it. The change in handling of the output vector in r45545 |
| altered code generation so that the RegExp::match was now storing important data in rbx, |
| which caused crashes and bogus results when it was clobbered. |
| |
| * yarr/RegexJIT.cpp: |
| (JSC::Yarr::RegexGenerator::generateEnter): Save rbx. |
| (JSC::Yarr::RegexGenerator::generateReturn): Restore rbx. |
| |
| 2009-07-06 Ada Chan <adachan@apple.com> |
| |
| Reviewed by Darin Adler and Mark Rowe. |
| |
| Decommitted spans are added to the list of normal spans rather than |
| the returned spans in TCMalloc_PageHeap::Delete(). |
| https://bugs.webkit.org/show_bug.cgi?id=26998 |
| |
| In TCMalloc_PageHeap::Delete(), the deleted span can be decommitted in |
| the process of merging with neighboring spans that are also decommitted. |
| The merged span needs to be placed in the list of returned spans (spans |
| whose memory has been returned to the system). Right now it's always added |
| to the list of the normal spans which can theoretically cause thrashing. |
| |
| * wtf/FastMalloc.cpp: |
| (WTF::TCMalloc_PageHeap::Delete): |
| |
| 2009-07-05 Lars Knoll <lars.knoll@nokia.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=26843 |
| |
| Fix run-time crashes in JavaScriptCore with the Metrowerks compiler on Symbian. |
| |
| The Metrowerks compiler on the Symbian platform moves the globally |
| defined Hashtables into read-only memory, despite one of the members |
| being mutable. This causes crashes at run-time due to write access to |
| read-only memory. |
| |
| Avoid the use of const with this compiler by introducing the |
| JSC_CONST_HASHTABLE macro. |
| |
| Based on idea by Norbert Leser. |
| |
| * runtime/Lookup.h: Define JSC_CONST_HASHTABLE as const for !WINSCW. |
| * create_hash_table: Use JSC_CONST_HASHTABLE for hashtables. |
| * runtime/JSGlobalData.cpp: Import various global hashtables via the macro. |
| |
| 2009-07-04 Dan Bernstein <mitz@apple.com> |
| |
| - debug build fix |
| |
| * runtime/RegExpConstructor.cpp: |
| (JSC::RegExpConstructor::getLastParen): |
| |
| 2009-07-03 Yong Li <yong.li@torchmobile.com> |
| |
| Reviewed by Maciej Stachowiak (and revised slightly) |
| |
| RegExp::match to be optimized |
| https://bugs.webkit.org/show_bug.cgi?id=26957 |
| |
| Allow regexp matching to use Vectors with inline capacity instead of |
| allocating a new ovector buffer every time. |
| |
| ~5% speedup on SunSpider string-unpack-code test, 0.3% on SunSpider overall. |
| |
| * runtime/RegExp.cpp: |
| (JSC::RegExp::match): |
| * runtime/RegExp.h: |
| * runtime/RegExpConstructor.cpp: |
| (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate): |
| (JSC::RegExpConstructorPrivate::lastOvector): |
| (JSC::RegExpConstructorPrivate::tempOvector): |
| (JSC::RegExpConstructorPrivate::changeLastOvector): |
| (JSC::RegExpConstructor::performMatch): |
| (JSC::RegExpMatchesArray::RegExpMatchesArray): |
| (JSC::RegExpMatchesArray::fillArrayInstance): |
| (JSC::RegExpConstructor::getBackref): |
| (JSC::RegExpConstructor::getLastParen): |
| (JSC::RegExpConstructor::getLeftContext): |
| (JSC::RegExpConstructor::getRightContext): |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncSplit): |
| |
| 2009-06-30 Kwang Yul Seo <skyul@company100.net> |
| |
| Reviewed by Eric Seidel. |
| |
| Override operator new/delete with const std::nothrow_t& as the second |
| argument. |
| https://bugs.webkit.org/show_bug.cgi?id=26792 |
| |
| On Windows CE, operator new/delete, new[]/delete[] with const |
| std::nothrow_t& must be overrided because some standard template |
| libraries use these operators. |
| |
| The problem occurs when memory allocated by new(size_t s, const |
| std::nothrow_t&) is freed by delete(void* p). This causes the umatched |
| malloc/free problem. |
| |
| The patch overrides all new, delete, new[] and delete[] to use |
| fastMaloc and fastFree consistently. |
| |
| * wtf/FastMalloc.h: |
| (throw): |
| |
| 2009-06-30 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Sam Weinig. |
| |
| <https://bugs.webkit.org/show_bug.cgi?id=24986> |
| |
| Remove unnecessary references to AssemblerBuffer. |
| |
| * interpreter/Interpreter.cpp: |
| * interpreter/Interpreter.h: |
| |
| 2009-06-29 David Levin <levin@chromium.org> |
| |
| Reviewed by Oliver Hunt. |
| |
| Still seeing occasional leaks from UString::sharedBuffer code |
| https://bugs.webkit.org/show_bug.cgi?id=26420 |
| |
| The problem is that the pointer to the memory allocation isn't visible |
| by "leaks" due to the lower bits being used as flags. The fix is to |
| make the pointer visible in memory (in debug only). The downside of |
| this fix that the memory allocated by sharedBuffer will still look like |
| a leak in non-debug builds when any flags are set. |
| |
| * wtf/PtrAndFlags.h: |
| (WTF::PtrAndFlags::set): |
| |
| 2009-06-29 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Mark Rowe. |
| |
| Remove more unused scons support. |
| |
| * SConstruct: Removed. |
| |
| 2009-06-29 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| <rdar://problem/7016214> JSON.parse fails to parse valid JSON with most Unicode characters |
| <https://bugs.webkit.org/show_bug.cgi?id=26802> |
| |
| In the original JSON.parse patch unicode was handled correctly, however in some last |
| minute "clean up" I oversimplified isSafeStringCharacter. This patch corrects this bug. |
| |
| * runtime/LiteralParser.cpp: |
| (JSC::isSafeStringCharacter): |
| (JSC::LiteralParser::Lexer::lexString): |
| |
| 2009-06-26 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Dan Bernstein. |
| |
| <rdar://problem/7009684> REGRESSION(r45039): Crashes inside JSEvent::put on PowerPC (26746) |
| <https://bugs.webkit.org/show_bug.cgi?id=26746> |
| |
| Fix for r45039 incorrectly uncached a get_by_id by converting it to put_by_id. Clearly this |
| is less than correct. This patch corrects that error. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::tryCacheGetByID): |
| |
| 2009-06-26 Eric Seidel <eric@webkit.org> |
| |
| No review, only rolling out r45259. |
| |
| Roll out r45259 after crash appeared on the bots: |
| plugins/undefined-property-crash.html |
| ASSERTION FAILED: s <= HeapConstants<heapType>::cellSize |
| (leopard-intel-debug-tests/build/JavaScriptCore/runtime/Collector.cpp:278 |
| void* JSC::Heap::heapAllocate(size_t) [with JSC::HeapType heapType = PrimaryHeap]) |
| |
| * runtime/DateInstance.cpp: |
| * runtime/Identifier.cpp: |
| * runtime/Lookup.h: |
| * runtime/RegExpConstructor.cpp: |
| * runtime/RegExpObject.h: |
| * runtime/ScopeChain.h: |
| * runtime/UString.h: |
| |
| 2009-06-26 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> |
| |
| Reviewed by Simon Hausmann. |
| |
| Add support for QDataStream operators to Vector. |
| |
| * wtf/Vector.h: |
| (WTF::operator<<): |
| (WTF::operator>>): |
| |
| 2009-06-24 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Make the opcode sampler work once again. |
| |
| * jit/JIT.h: |
| (JSC::JIT::compileGetByIdProto): |
| (JSC::JIT::compileGetByIdSelfList): |
| (JSC::JIT::compileGetByIdProtoList): |
| (JSC::JIT::compileGetByIdChainList): |
| (JSC::JIT::compileGetByIdChain): |
| (JSC::JIT::compilePutByIdTransition): |
| (JSC::JIT::compileCTIMachineTrampolines): |
| (JSC::JIT::compilePatchGetArrayLength): |
| * jit/JITStubCall.h: |
| (JSC::JITStubCall::call): |
| |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Extend FastAllocBase.h with 'using WTF::FastAllocBase' to avoid |
| unnecessary WTF:: usings. |
| Remove existing unnecessary WTF:: usings. |
| |
| * interpreter/Interpreter.h: |
| * profiler/CallIdentifier.h: |
| * runtime/ScopeChain.h: |
| * wtf/FastAllocBase.h: |
| |
| 2009-06-24 David Levin <levin@chromium.org> |
| |
| Fix all builds. |
| |
| * bytecode/CodeBlock.h: |
| * bytecompiler/BytecodeGenerator.h: |
| * interpreter/Register.h: |
| |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=26677 |
| |
| Inherits CodeBlock class from FastAllocBase because it |
| has been instantiated by 'new' in JavaScriptCore/bytecode/CodeBlock.h:217. |
| |
| * bytecode/CodeBlock.h: |
| |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=26676 |
| |
| Inherits BytecodeGenerator class from FastAllocBase because it has been |
| instantiated by 'new' in JavaScriptCore/parser/Nodes.cpp:1892. |
| |
| * bytecompiler/BytecodeGenerator.h: |
| |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=26675 |
| |
| Inherits Register class from FastAllocBase because it has been |
| instantiated by 'new' in JavaScriptCore/runtime/JSVariableObject.h:149. |
| |
| * interpreter/Register.h: |
| |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=26674 |
| |
| Inherits HashMap class from FastAllocBase because it has been |
| instantiated by 'new' in JavaScriptCore/runtime/Structure.cpp:458. |
| |
| * wtf/HashMap.h: |
| |
| 2009-06-24 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| <rdar://problem/6940519> REGRESSION (Safari 4 Public Beta - TOT): google.com/adplanner shows blank page instead of site details in "basic research' |
| |
| The problem was caused by the page returned with a function using a |
| var declaration list containing around ~3000 variables. The solution |
| to this is to flatten the comma expression representation and make |
| codegen comma expressions and initializer lists iterative rather than |
| recursive. |
| |
| * parser/Grammar.y: |
| * parser/NodeConstructors.h: |
| (JSC::CommaNode::CommaNode): |
| * parser/Nodes.cpp: |
| (JSC::CommaNode::emitBytecode): |
| * parser/Nodes.h: |
| (JSC::ExpressionNode::isCommaNode): |
| (JSC::CommaNode::isCommaNode): |
| (JSC::CommaNode::append): |
| |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=26645 |
| |
| Inherits ScopeChainNode class from FastAllocBase because it has been |
| instantiated by 'new' in JavaScriptCore/runtime/ScopeChain.h:95. |
| |
| * wtf/RefPtr.h: |
| |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=26648 |
| |
| Inherits Deque class from FastAllocBase because it has been |
| instantiated by 'new' with DEFINE_STATIC_LOCAL macro in |
| JavaScriptCore/wtf/MainThread.cpp:62. |
| |
| * wtf/Deque.h: |
| |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=26644 |
| |
| Inherits RefPtr class from FastAllocBase because it has been |
| instantiated by 'new' in JavaScriptCore/runtime/StructureChain.cpp:41. |
| |
| * wtf/RefPtr.h: |
| |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| Inherits HashSet class from FastAllocBase, because it has been |
| instantiated by 'new' in JavaScriptCore/runtime/Collector.h:116. |
| |
| * wtf/HashSet.h: |
| |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| Inherits Vector class from FastAllocBase because it has been |
| instantiated by 'new' in JavaScriptCore/runtime/Structure.cpp:633. |
| |
| * wtf/Vector.h: |
| |
| 2009-06-24 Norbert Leser <norbert.leser@nokia.com> |
| |
| Reviewed by Maciej Stachoviak. |
| |
| The BytecodeGenerator objects were instantiated on stack, which takes up ~38kB per instance |
| (each instance includes copy of JSC::CodeBlock with large SymbolTable, etc.). |
| Specifically, since there is nested invocation (e.g., GlobalCode --> FunctionCode), |
| the stack overflows immediately on Symbian hardware (max. 80 kB). |
| Proposed change allocates generator objects on heap. |
| Performance impact (if any) should be negligible and change is proposed as general fix, |
| rather than ifdef'd for SYMBIAN. |
| |
| * parser/Nodes.cpp: |
| (JSC::ProgramNode::generateBytecode): |
| (JSC::EvalNode::generateBytecode): |
| (JSC::EvalNode::bytecodeForExceptionInfoReparse): |
| (JSC::FunctionBodyNode::generateBytecode): |
| (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse): |
| |
| 2009-06-23 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| <rdar://problem/6992806> REGRESSION: Enumeration can skip new properties in cases of prototypes that have more than 64 (26593) |
| <https://bugs.webkit.org/show_bug.cgi?id=26593> |
| |
| Do not attempt to cache structure chains if they contain a dictionary at any level. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::tryCachePutByID): |
| (JSC::Interpreter::tryCacheGetByID): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::tryCachePutByID): |
| * runtime/Structure.cpp: |
| (JSC::Structure::getEnumerablePropertyNames): |
| (JSC::Structure::addPropertyTransition): |
| * runtime/StructureChain.cpp: |
| (JSC::StructureChain::isCacheable): |
| * runtime/StructureChain.h: |
| |
| 2009-06-23 Yong Li <yong.li@torchmobile.com> |
| |
| Reviewed by George Staikos. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=26654 |
| Add the proper export define for the JavaScriptCore API when building for WINCE. |
| |
| * API/JSBase.h: |
| |
| 2009-06-23 Joe Mason <joe.mason@torchmobile.com> |
| |
| Reviewed by Adam Treat. |
| |
| Authors: Yong Li <yong.li@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com> |
| |
| https://bugs.webkit.org/show_bug.cgi?id=26611 |
| Implement currentThreadStackBase on WINCE by adding a global, |
| g_stackBase, which must be set to the address of a local variable |
| by the caller before calling any WebKit function that invokes JSC. |
| |
| * runtime/Collector.cpp: |
| (JSC::isPageWritable): |
| (JSC::getStackBase): |
| Starts at the top of the stack and returns the entire range of |
| consecutive writable pages as an estimate of the actual stack. |
| This will be much bigger than the actual stack range, so some |
| dead objects can't be collected, but it guarantees live objects |
| aren't collected prematurely. |
| |
| (JSC::currentThreadStackBase): |
| On WinCE, returns g_stackBase if set or call getStackBase as a |
| fallback if not. |
| |
| 2009-06-23 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Fix stupid performance problem in the LiteralParser |
| |
| The LiteralParser was making a new UString in order to use |
| toDouble, however UString's toDouble allows a much wider range |
| of numberic strings than the LiteralParser accepts, and requires |
| an additional heap allocation or two for the construciton of the |
| UString. To rectify this we just call WTF::dtoa directly using |
| a stack allocated buffer to hold the validated numeric literal. |
| |
| * runtime/LiteralParser.cpp: |
| (JSC::LiteralParser::Lexer::lexNumber): |
| (JSC::LiteralParser::parse): |
| * runtime/LiteralParser.h: |
| |
| 2009-06-22 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Bug 26640: JSON.stringify needs to special case Boolean objects |
| <https://bugs.webkit.org/show_bug.cgi?id=26640> |
| |
| Add special case handling of the Boolean object so we match current |
| ES5 errata. |
| |
| * runtime/JSONObject.cpp: |
| (JSC::unwrapBoxedPrimitive): renamed from unwrapNumberOrString |
| (JSC::gap): |
| (JSC::Stringifier::appendStringifiedValue): |
| |
| 2009-06-22 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Bug 26591: Support revivers in JSON.parse |
| <https://bugs.webkit.org/show_bug.cgi?id=26591> |
| |
| Add reviver support to JSON.parse. This completes the JSON object. |
| |
| * runtime/JSONObject.cpp: |
| (JSC::Walker::Walker): |
| (JSC::Walker::callReviver): |
| (JSC::Walker::walk): |
| (JSC::JSONProtoFuncParse): |
| |
| 2009-06-21 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Bug 26592: Support standard toJSON functions |
| <https://bugs.webkit.org/show_bug.cgi?id=26592> |
| |
| Add support for the standard Date.toJSON function. |
| |
| * runtime/DatePrototype.cpp: |
| (JSC::dateProtoFuncToJSON): |
| |
| 2009-06-21 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bug 26594: JSC needs to support Date.toISOString |
| <https://bugs.webkit.org/show_bug.cgi?id=26594> |
| |
| Add support for Date.toISOString. |
| |
| * runtime/DatePrototype.cpp: |
| (JSC::dateProtoFuncToISOString): |
| |
| 2009-06-21 Oliver Hunt <oliver@apple.com> |
| |
| Remove dead code. |
| |
| * runtime/LiteralParser.cpp: |
| (JSC::LiteralParser::parse): |
| |
| 2009-06-21 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Darin Adler and Cameron Zwarich. |
| |
| Bug 26587: Support JSON.parse |
| <https://bugs.webkit.org/show_bug.cgi?id=26587> |
| |
| Extend the LiteralParser to support the full strict JSON |
| grammar, fix a few places where the grammar was incorrectly |
| lenient. Doesn't yet support the JSON.parse reviver function |
| but that does not block the JSON.parse functionality itself. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::callEval): |
| * runtime/JSGlobalObjectFunctions.cpp: |
| (JSC::globalFuncEval): |
| * runtime/JSONObject.cpp: |
| (JSC::JSONProtoFuncParse): |
| * runtime/LiteralParser.cpp: |
| (JSC::LiteralParser::Lexer::lex): |
| (JSC::isSafeStringCharacter): |
| (JSC::LiteralParser::Lexer::lexString): |
| (JSC::LiteralParser::parse): |
| * runtime/LiteralParser.h: |
| (JSC::LiteralParser::LiteralParser): |
| (JSC::LiteralParser::tryJSONParse): |
| (JSC::LiteralParser::): |
| (JSC::LiteralParser::Lexer::Lexer): |
| |
| 2009-06-21 David Levin <levin@chromium.org> |
| |
| Reviewed by NOBODY (speculative build fix for windows). |
| |
| Simply removed some whitespace form this file to make windows build wtf and |
| hopefully copy the new MessageQueque.h so that WebCore picks it up. |
| |
| * wtf/Assertions.cpp: |
| |
| 2009-06-21 Drew Wilson <atwilson@google.com> |
| |
| Reviewed by David Levin. |
| |
| <https://bugs.webkit.org/show_bug.cgi?id=25043> |
| Added support for multi-threaded MessagePorts. |
| |
| * wtf/MessageQueue.h: |
| (WTF::::appendAndCheckEmpty): |
| Added API to test whether the queue was empty before adding an element. |
| |
| 2009-06-20 David D. Kilzer <ddkilzer@webkit.org> |
| |
| Fix namespace comment in SegmentedVector.h |
| |
| * wtf/SegmentedVector.h: Updated namespace comment to reflect |
| new namespace after r44897. |
| |
| 2009-06-20 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> |
| |
| Bug 24986: ARM JIT port |
| <https://bugs.webkit.org/show_bug.cgi?id=24986> |
| |
| Reviewed by Oliver Hunt. |
| |
| An Iterator added for SegmentedVector. Currently |
| only the pre ++ operator is supported. |
| |
| * wtf/SegmentedVector.h: |
| (WTF::SegmentedVectorIterator::~SegmentedVectorIterator): |
| (WTF::SegmentedVectorIterator::operator*): |
| (WTF::SegmentedVectorIterator::operator->): |
| (WTF::SegmentedVectorIterator::operator++): |
| (WTF::SegmentedVectorIterator::operator==): |
| (WTF::SegmentedVectorIterator::operator!=): |
| (WTF::SegmentedVectorIterator::operator=): |
| (WTF::SegmentedVectorIterator::SegmentedVectorIterator): |
| (WTF::SegmentedVector::alloc): |
| (WTF::SegmentedVector::begin): |
| (WTF::SegmentedVector::end): |
| |
| 2009-06-20 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> |
| |
| Bug 24986: ARM JIT port |
| <https://bugs.webkit.org/show_bug.cgi?id=24986> |
| |
| Reviewed by Oliver Hunt. |
| |
| Move SegmentedVector to /wtf subdirectory |
| and change "namespace JSC" to "namespace WTF" |
| |
| Additional build file updates by David Kilzer. |
| |
| * GNUmakefile.am: Updated path to SegmentedVector.h. |
| * JavaScriptCore.order: Updated SegmentedVector namespace from |
| JSC to WTF in mangled C++ method name. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| Removed reference to bytecompiler\SegmentedVector.h. |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added reference to |
| wtf\SegmentedVector.h. |
| * JavaScriptCore.xcodeproj/project.pbxproj: Moved |
| SegmentedVector.h definition from bytecompiler subdirectory to |
| wtf subdirectory. |
| * bytecompiler/BytecodeGenerator.h: Updated #include path to |
| SegmentedVector.h and prepended WTF:: namespace to its use. |
| * parser/Lexer.h: Ditto. |
| * wtf/SegmentedVector.h: Renamed from JavaScriptCore/bytecompiler/SegmentedVector.h. |
| (WTF::SegmentedVector::SegmentedVector): |
| (WTF::SegmentedVector::~SegmentedVector): |
| (WTF::SegmentedVector::size): |
| (WTF::SegmentedVector::at): |
| (WTF::SegmentedVector::operator[]): |
| (WTF::SegmentedVector::last): |
| (WTF::SegmentedVector::append): |
| (WTF::SegmentedVector::removeLast): |
| (WTF::SegmentedVector::grow): |
| (WTF::SegmentedVector::clear): |
| (WTF::SegmentedVector::deleteAllSegments): |
| (WTF::SegmentedVector::segmentExistsFor): |
| (WTF::SegmentedVector::segmentFor): |
| (WTF::SegmentedVector::subscriptFor): |
| (WTF::SegmentedVector::ensureSegmentsFor): |
| (WTF::SegmentedVector::ensureSegment): |
| |
| 2009-06-19 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by NOBODY (build fix take 2 - rename FIELD_OFFSET to something that doesn't conflict with winnt.h). |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompile): |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| (JSC::JIT::emitGetVariableObjectRegister): |
| (JSC::JIT::emitPutVariableObjectRegister): |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_rshift): |
| (JSC::JIT::emitSlow_op_jnless): |
| (JSC::JIT::emitSlow_op_jnlesseq): |
| (JSC::JIT::compileBinaryArithOp): |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallInitializeCallFrame): |
| (JSC::JIT::compileOpCall): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::restoreArgumentReference): |
| (JSC::JIT::checkStructure): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_instanceof): |
| (JSC::JIT::emit_op_get_scoped_var): |
| (JSC::JIT::emit_op_put_scoped_var): |
| (JSC::JIT::emit_op_construct_verify): |
| (JSC::JIT::emit_op_resolve_global): |
| (JSC::JIT::emit_op_jeq_null): |
| (JSC::JIT::emit_op_jneq_null): |
| (JSC::JIT::emit_op_to_jsnumber): |
| (JSC::JIT::emit_op_catch): |
| (JSC::JIT::emit_op_eq_null): |
| (JSC::JIT::emit_op_neq_null): |
| (JSC::JIT::emit_op_convert_this): |
| (JSC::JIT::emit_op_profile_will_call): |
| (JSC::JIT::emit_op_profile_did_call): |
| (JSC::JIT::emitSlow_op_get_by_val): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emit_op_get_by_val): |
| (JSC::JIT::emit_op_put_by_val): |
| (JSC::JIT::emit_op_method_check): |
| (JSC::JIT::compileGetByIdHotPath): |
| (JSC::JIT::emit_op_put_by_id): |
| (JSC::JIT::compilePutDirectOffset): |
| (JSC::JIT::compileGetDirectOffset): |
| (JSC::JIT::privateCompilePutByIdTransition): |
| (JSC::JIT::privateCompilePatchGetArrayLength): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::JITThunks): |
| |
| 2009-06-19 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by NOBODY (Windows build fix). |
| |
| * jit/JIT.h: |
| * jit/JITInlineMethods.h: |
| |
| 2009-06-19 Gabor Loki <loki@inf.u-szeged.hu> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Reorganize ARM architecture specific macros. |
| Use PLATFORM_ARM_ARCH(7) instead of PLATFORM(ARM_V7). |
| |
| Bug 24986: ARM JIT port |
| <https://bugs.webkit.org/show_bug.cgi?id=24986> |
| |
| * assembler/ARMv7Assembler.h: |
| * assembler/AbstractMacroAssembler.h: |
| (JSC::AbstractMacroAssembler::Imm32::Imm32): |
| * assembler/MacroAssembler.h: |
| * assembler/MacroAssemblerCodeRef.h: |
| (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr): |
| * jit/ExecutableAllocator.h: |
| (JSC::ExecutableAllocator::cacheFlush): |
| * jit/JIT.h: |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::restoreArgumentReferenceForTrampoline): |
| * jit/JITStubs.cpp: |
| * jit/JITStubs.h: |
| * wtf/Platform.h: |
| * yarr/RegexJIT.cpp: |
| (JSC::Yarr::RegexGenerator::generateEnter): |
| (JSC::Yarr::RegexGenerator::generateReturn): |
| |
| 2009-06-19 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Fix armv7 JIT build issues. |
| |
| Unfortunate the arm compiler does not like the use of offsetof on JITStackFrame (since it now contains non POD types), |
| and the FIELD_OFFSET macro does not appear constantish enough for it to be happy with its use in COMPILE_ASSERT macros. |
| |
| * Replace offsetofs with FIELD_OFFSETs (safe on C++ objects). |
| * Move COMPILE_ASSERTs defending layout of JITStackFrame structure on armv7 into JITThunks constructor. |
| |
| * jit/JIT.cpp: |
| * jit/JIT.h: |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::restoreArgumentReference): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_catch): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::JITThunks): |
| |
| 2009-06-19 Adam Treat <adam.treat@torchmobile.com> |
| |
| Blind attempt at build fix. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-06-19 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Oliver Hunt. |
| |
| Inherits CallIdentifier struct from FastAllocBase because it has been |
| instantiated by 'new' in JavaScriptCore/profiler/CallIdentifier.h:86. |
| |
| * wtf/HashCountedSet.h: |
| |
| 2009-06-19 Adam Treat <adam.treat@torchmobile.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=26540 |
| Modify the test shell to add a new function 'checkSyntax' that will |
| only parse the source instead of executing it. In this way we can test |
| pure parsing performance against some of the larger scripts in the wild. |
| |
| * jsc.cpp: |
| (GlobalObject::GlobalObject): |
| (functionCheckSyntax): |
| |
| 2009-06-19 Zoltan Horvath <hzoltan@inf.u-szeged.hu> |
| |
| Reviewed by Darin Adler. |
| |
| Inherits HashCountedSet class from FastAllocBase because it has been |
| instantiated by 'new' in JavaScriptCore/runtime/Collector.cpp:1095. |
| |
| * wtf/HashCountedSet.h: |
| |
| 2009-06-19 Yong Li <yong.li@torchmobile.com> |
| |
| Reviewed by George Staikos. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=26558 |
| Declare these symbols extern for WINCE as they are provided by libce. |
| |
| * runtime/DateConstructor.cpp: |
| * runtime/DatePrototype.cpp: |
| (JSC::formatLocaleDate): |
| |
| 2009-06-19 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| <rdar://problem/6988973> ScopeChain leak in interpreter builds |
| |
| Move the Scopechain destruction code in JSFunction outside of the ENABLE(JIT) |
| path. |
| |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::~JSFunction): |
| * wtf/Platform.h: |
| |
| 2009-06-19 Yong Li <yong.li@torchmobile.com> |
| |
| Reviewed by George Staikos. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=26543 |
| Windows CE uses 'GetLastError' instead of 'errno.' |
| |
| * interpreter/RegisterFile.h: |
| (JSC::RegisterFile::RegisterFile): |
| (JSC::RegisterFile::grow): |
| |
| 2009-06-19 David Levin <levin@chromium.org> |
| |
| Reviewed by NOBODY (Windows build fix). |
| |
| Add export for Windows corresponding to OSX export done in r44844. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: |
| |
| 2009-06-18 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin "Viceroy of Venezuela" Barraclough. |
| |
| Bug 26532: Native functions do not correctly unlink from optimised callsites when they're collected |
| <https://bugs.webkit.org/show_bug.cgi?id=26532> <rdar://problem/6625385> |
| |
| We need to make sure that each native function instance correctly unlinks any references to it |
| when it is collected. Allowing this to happen required a few changes: |
| * Every native function needs a codeblock to track the link information |
| * To have this codeblock, every function now also needs its own functionbodynode |
| so we no longer get to have a single shared instance. |
| * Identifying a host function is now done by looking for CodeBlock::codeType() == NativeCode |
| |
| * JavaScriptCore.exp: |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::CodeBlock): |
| Constructor for NativeCode CodeBlock |
| (JSC::CodeBlock::derefStructures): |
| (JSC::CodeBlock::refStructures): |
| (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): |
| (JSC::CodeBlock::handlerForBytecodeOffset): |
| (JSC::CodeBlock::lineNumberForBytecodeOffset): |
| (JSC::CodeBlock::expressionRangeForBytecodeOffset): |
| (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset): |
| (JSC::CodeBlock::functionRegisterForBytecodeOffset): |
| (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset): |
| (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset): |
| (JSC::CodeBlock::setJITCode): |
| Add assertions to ensure we don't try and use NativeCode CodeBlocks as |
| a normal codeblock. |
| |
| * bytecode/CodeBlock.h: |
| (JSC::): |
| (JSC::CodeBlock::source): |
| (JSC::CodeBlock::sourceOffset): |
| (JSC::CodeBlock::evalCodeCache): |
| (JSC::CodeBlock::createRareDataIfNecessary): |
| More assertions. |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| (JSC::JIT::linkCall): |
| Update logic to allow native function caching |
| |
| * jit/JITStubs.cpp: |
| * parser/Nodes.cpp: |
| (JSC::FunctionBodyNode::createNativeThunk): |
| (JSC::FunctionBodyNode::isHostFunction): |
| * parser/Nodes.h: |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::JSFunction): |
| (JSC::JSFunction::~JSFunction): |
| (JSC::JSFunction::mark): |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::~JSGlobalData): |
| * runtime/JSGlobalData.h: |
| |
| 2009-06-18 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by NOBODY (Windows build fix). |
| |
| * wtf/DateMath.cpp: |
| (WTF::calculateUTCOffset): |
| |
| 2009-06-18 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Timezone calculation incorrect in Venezuela. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=26531 |
| <rdar://problem/6646169> Time is incorrectly reported to JavaScript in both Safari 3 and Firefox 3 |
| |
| The problem is that we're calculating the timezone relative to 01/01/2000, |
| but the VET timezone changed from -4 hours to -4:30 hours on 12/09/2007. |
| According to the spec, section 15.9.1.9 states "the time since the beginning |
| of the year", presumably meaning the *current* year. Change the calculation |
| to be based on whatever the current year is, rather than a canned date. |
| |
| No performance impact. |
| |
| * wtf/DateMath.cpp: |
| (WTF::calculateUTCOffset): |
| |
| 2009-06-18 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber Stamped by Mark Rowe (originally reviewed by Sam Weinig). |
| |
| (Reintroducing patch added in r44492, and reverted in r44796.) |
| |
| Change the implementation of op_throw so the stub function always modifies its |
| return address - if it doesn't find a 'catch' it will switch to a trampoline |
| to force a return from JIT execution. This saves memory, by avoiding the need |
| for a unique return for every op_throw. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_throw): |
| JITStubs::cti_op_throw now always changes its return address, |
| remove return code generated after the stub call (this is now |
| handled by ctiOpThrowNotCaught). |
| * jit/JITStubs.cpp: |
| (JSC::): |
| Add ctiOpThrowNotCaught definitions. |
| (JSC::JITStubs::DEFINE_STUB_FUNCTION): |
| Change cti_op_throw to always change its return address. |
| * jit/JITStubs.h: |
| Add ctiOpThrowNotCaught declaration. |
| |
| 2009-06-18 Kevin McCullough <kmccullough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| <rdar://problem/6940880> REGRESSION: Breakpoints don't break in 64-bit |
| |
| - Exposed functions now needed by WebCore. |
| |
| * JavaScriptCore.exp: |
| |
| 2009-06-17 Darin Adler <darin@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Bug 26429: Make JSON.stringify non-recursive so it can handle objects |
| of arbitrary complexity |
| https://bugs.webkit.org/show_bug.cgi?id=26429 |
| |
| For marking I decided not to use gcProtect, because this is inside the engine |
| so it's easy enough to just do marking. And that darned gcProtect does locking! |
| Oliver tried to convince me to used MarkedArgumentBuffer, but the constructor |
| for that class says "FIXME: Remove all clients of this API, then remove this API." |
| |
| * runtime/Collector.cpp: |
| (JSC::Heap::collect): Add a call to JSONObject::markStringifiers. |
| |
| * runtime/CommonIdentifiers.cpp: |
| (JSC::CommonIdentifiers::CommonIdentifiers): Added emptyIdentifier. |
| * runtime/CommonIdentifiers.h: Ditto. |
| |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): Initialize firstStringifierToMark to 0. |
| * runtime/JSGlobalData.h: Added firstStringifierToMark. |
| |
| * runtime/JSONObject.cpp: Cut down the includes to the needed ones only. |
| (JSC::unwrapNumberOrString): Added. Helper for unwrapping number and string |
| objects to get their number and string values. |
| (JSC::ReplacerPropertyName::ReplacerPropertyName): Added. The class is used |
| to wrap an identifier or integer so we don't have to do any work unless we |
| actually call a replacer. |
| (JSC::ReplacerPropertyName::value): Added. |
| (JSC::gap): Added. Helper function for the Stringifier constructor. |
| (JSC::PropertyNameForFunctionCall::PropertyNameForFunctionCall): Added. |
| The class is used to wrap an identifier or integer so we don't have to |
| allocate a number or string until we actually call toJSON or a replacer. |
| (JSC::PropertyNameForFunctionCall::asJSValue): Added. |
| (JSC::Stringifier::Stringifier): Updated and moved out of the class |
| definition. Added code to hook this into a singly linked list for marking. |
| (JSC::Stringifier::~Stringifier): Remove from the singly linked list. |
| (JSC::Stringifier::mark): Mark all the objects in the holder stacks. |
| (JSC::Stringifier::stringify): Updated. |
| (JSC::Stringifier::appendQuotedString): Tweaked and streamlined a bit. |
| (JSC::Stringifier::toJSON): Renamed from toJSONValue. |
| (JSC::Stringifier::appendStringifiedValue): Renamed from stringify. |
| Added code to use the m_holderStack to do non-recursive stringify of |
| objects and arrays. This code also uses the timeout checker since in |
| pathological cases it could be slow even without calling into the |
| JavaScript virtual machine. |
| (JSC::Stringifier::willIndent): Added. |
| (JSC::Stringifier::indent): Added. |
| (JSC::Stringifier::unindent): Added. |
| (JSC::Stringifier::startNewLine): Added. |
| (JSC::Stringifier::Holder::Holder): Added. |
| (JSC::Stringifier::Holder::appendNextProperty): Added. This is the |
| function that handles the format of arrays and objects. |
| (JSC::JSONObject::getOwnPropertySlot): Moved this down to the bottom |
| of the file so the JSONObject class is not interleaved with the |
| Stringifier class. |
| (JSC::JSONObject::markStringifiers): Added. Calls mark. |
| (JSC::JSONProtoFuncStringify): Streamlined the code here. The code |
| to compute the gap string is now a separate function. |
| |
| * runtime/JSONObject.h: Made everything private. Added markStringifiers. |
| |
| 2009-06-17 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| <rdar://problem/6974140> REGRESSION(r43849): Crash in cti_op_call_NotJSFunction when getting directions on maps.google.com |
| |
| Roll out r43849 as it appears that we cannot rely on the address of |
| an objects property storage being constant even if the structure is |
| unchanged. |
| |
| * jit/JIT.h: |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::compileGetDirectOffset): |
| (JSC::JIT::privateCompileGetByIdProto): |
| (JSC::JIT::privateCompileGetByIdProtoList): |
| (JSC::JIT::privateCompileGetByIdChainList): |
| (JSC::JIT::privateCompileGetByIdChain): |
| |
| 2009-06-17 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber Stamped by Mark Rowe. |
| |
| Fully revert r44492 & r44748 while we fix a bug they cause on internal builds <rdar://problem/6955963>. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_throw): |
| * jit/JITStubs.cpp: |
| (JSC::): |
| (JSC::JITStubs::DEFINE_STUB_FUNCTION): |
| * jit/JITStubs.h: |
| |
| 2009-06-17 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Mark Rowe. |
| |
| <rdar://problem/6947426> sunspider math-cordic.js exhibits different intermediate results running 32-bit vs. 64-bit |
| |
| On 64-bit, NaN-encoded values must be detagged before they can be used in rshift. |
| |
| No performance impact. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_rshift): |
| |
| 2009-06-17 Adam Treat <adam.treat@torchmobile.com> |
| |
| Reviewed by George Staikos. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=23155 |
| Move WIN_CE -> WINCE as previously discussed with Qt WINCE folks. |
| |
| * jsc.cpp: |
| (main): |
| |
| 2009-06-17 George Staikos <george.staikos@torchmobile.com> |
| |
| Reviewed by Adam Treat. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=23155 |
| Move WIN_CE -> WINCE as previously discussed with Qt WINCE folks. |
| |
| * config.h: |
| * jsc.cpp: |
| * wtf/Assertions.cpp: |
| * wtf/Assertions.h: |
| * wtf/CurrentTime.cpp: |
| (WTF::lowResUTCTime): |
| * wtf/DateMath.cpp: |
| (WTF::getLocalTime): |
| * wtf/MathExtras.h: |
| * wtf/Platform.h: |
| * wtf/StringExtras.h: |
| * wtf/Threading.h: |
| * wtf/win/MainThreadWin.cpp: |
| |
| 2009-06-17 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| <rdar://problem/6974175> ASSERT in JITStubs.cpp at appsaccess.apple.com |
| |
| Remove PropertySlot::putValue - PropertySlots should only be used for getting, |
| not putting. Rename JSGlobalObject::getOwnPropertySlot to hasOwnPropertyForWrite, |
| which is what it really was being used to ask, and remove some other getOwnPropertySlot |
| & getOwnPropertySlotForWrite methods, which were unused and likely to lead to confusion. |
| |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::hasOwnPropertyForWrite): |
| * runtime/JSObject.h: |
| * runtime/JSStaticScopeObject.cpp: |
| * runtime/JSStaticScopeObject.h: |
| * runtime/PropertySlot.h: |
| |
| 2009-06-16 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver hunt. |
| |
| Temporarily partially disable r44492, since this is causing some problems on internal builds. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_throw): |
| * jit/JITStubs.cpp: |
| (JSC::JITStubs::DEFINE_STUB_FUNCTION): |
| |
| 2009-06-16 Sam Weinig <sam@webkit.org> |
| |
| Fix windows build. |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::JIT): |
| |
| 2009-06-16 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Oliver Hunt. |
| |
| Initialize m_bytecodeIndex to -1 in JIT, and correctly initialize |
| it for each type of stub using the return address to find the correct |
| offset. |
| |
| * jit/JIT.cpp: |
| (JSC::JIT::JIT): |
| * jit/JIT.h: |
| (JSC::JIT::compileGetByIdProto): |
| (JSC::JIT::compileGetByIdSelfList): |
| (JSC::JIT::compileGetByIdProtoList): |
| (JSC::JIT::compileGetByIdChainList): |
| (JSC::JIT::compileGetByIdChain): |
| (JSC::JIT::compilePutByIdTransition): |
| (JSC::JIT::compileCTIMachineTrampolines): |
| (JSC::JIT::compilePatchGetArrayLength): |
| * jit/JITStubCall.h: |
| (JSC::JITStubCall::call): |
| |
| == Rolled over to ChangeLog-2009-06-16 == |