diff options
Diffstat (limited to 'Source/JavaScriptCore/ChangeLog')
-rw-r--r-- | Source/JavaScriptCore/ChangeLog | 28394 |
1 files changed, 6618 insertions, 21776 deletions
diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog index 12e0cfd..bb10264 100644 --- a/Source/JavaScriptCore/ChangeLog +++ b/Source/JavaScriptCore/ChangeLog @@ -1,9803 +1,4498 @@ -2011-02-13 Jeremy Moskovich <jeremy@chromium.org> +2011-04-19 Oliver Hunt <oliver@apple.com> - Reviewed by Adam Barth. - - Add a compile-time option to completely disable WebArchive support. - https://bugs.webkit.org/show_bug.cgi?id=52712 - - Add an ENABLE(WEB_ARCHIVE) compile-time setting and use it for all WebArchive code. - Ports Affected: - WebArchive support is currently enabled for all ports that define PLATFORM(CF) apart from Qt. - This patch preserves this behavior except that it also disables support in the Chromium port. - - * wtf/Platform.h: Add ENABLE_WEB_ARCHIVE definition and turn it off explicitly for Qt & Chromium ports. - -2011-02-13 Cameron Zwarich <zwarich@apple.com> - - Reviewed by Dan Bernstein. - - Bug 53760 - JSC fails to build with TOT Clang - https://bugs.webkit.org/show_bug.cgi?id=53760 - - Fix -Woverloaded-virtual warnings. This is also a 6% speedup on the v8 raytrace - benchmark; it is nothing-to-noise on everything else. - - * API/JSCallbackObject.h: Remove pointlessly overloaded method. - * API/JSCallbackObjectFunctions.h: Ditto. - * runtime/Arguments.cpp: - (JSC::Arguments::put): Change signature to match the base class. This implementation - was no longer being called by anyone. This wasn't noticed because it is merely an - optimization of the base class' implementation. - * runtime/Arguments.h: Ditto. - -2011-02-12 Adam Barth <abarth@webkit.org> - - Reviewed by Mark Rowe. - - Use /dev/urandom as the OSRandomSource on OS(DARWIN) - https://bugs.webkit.org/show_bug.cgi?id=54279 - - I'm not sure it makes much of a difference whether we use arc4random or - /dev/urandom on Mac. However, there's some aesthetic benefit to using - the same underlying API on as many platforms as reasonable. - - * config.h: - * wtf/OSRandomSource.cpp: - (WTF::cryptographicallyRandomValuesFromOS): - -2011-02-12 Adam Barth <abarth@webkit.org> - - Reviewed by Kenneth Russell. - - Enable ArrayBuffers by default - https://bugs.webkit.org/show_bug.cgi?id=54310 - - Export the required functions. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - -2011-02-11 Daniel Bates <dbates@rim.com> - - Reviewed by Geoffrey Garen. - - Remove explicit disable ENABLE_ASSEMBLER_WX_EXCLUSIVE on non-iOS ports - https://bugs.webkit.org/show_bug.cgi?id=54107 - - It is unnecessary to explicitly disable ENABLE_ASSEMBLER_WX_EXCLUSIVE - by the definition of ENABLE(). - - * wtf/Platform.h: - -2011-02-11 Geoffrey Garen <ggaren@apple.com> - - Not reviewed. - - Randomly touch some build files in the hopes of fixing the Qt build. - - * JavaScriptCore.gypi: - * JavaScriptCore.pri: - * JavaScriptCore.pro: - -2011-02-11 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Sam Weinig. - - Garbage collection timer cycles forever, even when nothing is happening - https://bugs.webkit.org/show_bug.cgi?id=54320 - - (Rolling back in r78386 with the build fixed.) - - * runtime/GCActivityCallbackCF.cpp: - (JSC::DefaultGCActivityCallbackPlatformData::trigger): Be sure to make - our timer inert after forcing a GC, to avoid GC'ing repeatedly. - -2011-02-11 Geoffrey Garen <ggaren@apple.com> - - Not reviewed. - - Used svn merge -r78386:78385 to roll out r78386 because it broke the build. - - * runtime/GCActivityCallbackCF.cpp: - (JSC::DefaultGCActivityCallbackPlatformData::trigger): - -2011-02-11 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Sam Weinig. - - Garbage collection timer cycles forever, even when nothing is happening - https://bugs.webkit.org/show_bug.cgi?id=54320 - - * runtime/GCActivityCallbackCF.cpp: - (JSC::DefaultGCActivityCallbackPlatformData::trigger): Be sure to make - our timer inert after forcing a GC, to avoid GC'ing repeatedly. - -2011-02-11 Geoffrey Garen <ggaren@apple.com> - - Try to fix the Windows build: added an exported symbol. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - -2011-02-11 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Oliver Hunt. - - A little more encapsulation for the heap: Removed CollectorHeapIterator - https://bugs.webkit.org/show_bug.cgi?id=54298 - - CollectorHeapIterator is a God object that knows the internals of each - of the pieces of the heap. This undermines the encapsulation I'm trying - to achieve by splitting concepts into different classes. - - As an alternative, I've given each class a forEach iteration function, - which takes a functor as an argument. Now, each class just needs to - know how to iterate the things it knows about. - - * GNUmakefile.am: - * JavaScriptCore.exp: - * JavaScriptCore.gypi: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Removed CollectorHeapIterator. - - * debugger/Debugger.cpp: - (JSC::Recompiler::Recompiler): - (JSC::Recompiler::~Recompiler): - (JSC::Recompiler::operator()): - (JSC::Debugger::recompileAllJSFunctions): Updated to use forEach interface - instead of an iterator. - - * runtime/CollectorHeapIterator.h: Removed. - - * runtime/Heap.cpp: - (JSC::TypeCounter::TypeCounter): - (JSC::TypeCounter::typeName): - (JSC::TypeCounter::operator()): - (JSC::TypeCounter::take): - (JSC::Heap::protectedObjectTypeCounts): - (JSC::Heap::objectTypeCounts): Added forEach and removed iterator. - - * runtime/Heap.h: - (JSC::Heap::forEach): - * runtime/JSGlobalData.cpp: - (JSC::Recompiler::operator()): - (JSC::JSGlobalData::recompileAllJSFunctions): - - * runtime/MarkedBlock.h: - (JSC::MarkedBlock::forEach): Added forEach. Removed friend declaration - for CollectorHeapIterator. Now, we can make all our data private and - change it without breaking any other classes. - - * runtime/MarkedSpace.cpp: - * runtime/MarkedSpace.h: - (JSC::MarkedSpace::forEach): Added forEach and removed iterator. - -2011-02-11 Adam Barth <abarth@webkit.org> - - Reviewed by Andreas Kling. - - CryptographicRandomNumber has its threading ifdefs backwards - https://bugs.webkit.org/show_bug.cgi?id=54280 - - Turns out we want the mutex when thread is enabled. :) - - * wtf/CryptographicallyRandomNumber.cpp: - (WTF::ARC4Stream::ARC4RandomNumberGenerator::randomNumber): - (WTF::ARC4Stream::ARC4RandomNumberGenerator::randomValues): - -2011-02-10 Adam Barth <abarth@webkit.org> - - Reviewed by Eric Seidel. - - WebKit should have a cryptographic RNG - https://bugs.webkit.org/show_bug.cgi?id=22049 - - Teach JavaScriptCore how to export this function. - - * JavaScriptCore.exp: - * JavaScriptCore.xcodeproj/project.pbxproj: - -2011-02-10 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Sam Weinig. - - A little more encapsulation for MarkedBlock: Made all constants private - so clients don't know whether allocations are fixed-sized or not - https://bugs.webkit.org/show_bug.cgi?id=54270 - - SunSpider reports no change. - - * runtime/CollectorHeapIterator.h: - (JSC::CollectorHeapIterator::advance): Updated for removal of HeapConstants. - - * runtime/Error.cpp: Switched to using ASSERT_CLASS_FITS_IN_CELL, like - all other classes. - - * runtime/Heap.cpp: - (JSC::Heap::allocate): Updated for removal of HeapConstants. - (JSC::Heap::reset): Updated to use size(), instead of calculating size - on our own. - - * runtime/Heap.h: Moved the ASSERT here to MarkedBlock, since it enforces - on special knowledge of fixed-sizery, which only MarkedBlock is supposed - to know about. - - * runtime/JSCell.h: - (JSC::JSCell::MarkedBlock::allocate): Updated for removal of HeapConstants. - Also changed to reset nextCell to 0 at the end of a block, since that - seems more consistent. - - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::storeVPtrs): Changed to use a fixed array of char. - This hard-coded size is a little wonky, but the compiler will tell us - if it's ever wrong, so I think it's OK. - - * runtime/MarkedBlock.cpp: - (JSC::MarkedBlock::destroy): - (JSC::MarkedBlock::MarkedBlock): - (JSC::MarkedBlock::sweep): Updated for removal of HeapConstants. - - * runtime/MarkedBlock.h: - (JSC::MarkedBlock::isEmpty): - (JSC::MarkedBlock::clearMarks): - (JSC::MarkedBlock::size): - (JSC::MarkedBlock::capacity): Made constants private to this class. - Removed HeapConstants. Added size() and capacity() functions. - - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::allocate): - (JSC::MarkedSpace::objectCount): - (JSC::MarkedSpace::size): - (JSC::MarkedSpace::capacity): - * runtime/MarkedSpace.h: Use MarkedBlock helper functions instead of - direct knowledge of MarkedBlock internals. - -2011-02-10 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Sam Weinig. - - A little more encapsulation for MarkedBlock: Made mark bits private - https://bugs.webkit.org/show_bug.cgi?id=54264 - - SunSpider reports no change. - - * runtime/Heap.cpp: - (JSC::Heap::markRoots): - (JSC::Heap::reset): Renamed clearMarkBits => clearMarks, since clients - don't need to know that marks are represented as bits. Renamed - markedCells => markCount, since clients don't need to know that blocks - are split into cells. - - * runtime/MarkedBlock.h: - (JSC::MarkedBlock::isEmpty): - (JSC::MarkedBlock::clearMarks): - (JSC::MarkedBlock::markCount): New helper functions for encapsulating - the information clients actually need. - - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::destroy): - (JSC::MarkedSpace::shrink): - (JSC::MarkedSpace::clearMarks): - (JSC::MarkedSpace::markCount): - (JSC::MarkedSpace::objectCount): - * runtime/MarkedSpace.h: Use new helper functions instead of accessing - MarkedBlock data directly. - -2011-02-10 Michael Saboff <msaboff@apple.com> - - Reviewed by Geoffrey Garen. - - Cached JavaScript Parser Data Being Left in Memory Cache - https://bugs.webkit.org/show_bug.cgi?id=54245 - - Added clear method which removes SourceProviderCache items. - Cleaned up extraneous whitespace. - - * JavaScriptCore.exp: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * parser/SourceProviderCache.cpp: - (JSC::SourceProviderCache::~SourceProviderCache): - (JSC::SourceProviderCache::clear): - (JSC::SourceProviderCache::byteSize): - (JSC::SourceProviderCache::add): - * parser/SourceProviderCache.h: - -2011-02-10 Joseph Pecoraro <joepeck@webkit.org> - - Follow-up fix to r78291. I should pass (int) 0, not '0' to memset. - - * runtime/GCActivityCallbackCF.cpp: - (JSC::DefaultGCActivityCallback::commonConstructor): fix mistaken post-review change. - -2011-02-10 Joseph Pecoraro <joepeck@webkit.org> - - Reviewed by Geoffrey Garen. - - Make DefaultGCActivityCallback for PLATFORM(CF) Easier to Subclass - https://bugs.webkit.org/show_bug.cgi?id=54257 - - A subclass may want to specify the CFRunLoop that the Garbage Collection - will happen on. It was difficult to manipulate this in a subclass because - the current DefaultGCActivityCallback class does this in its constructor. - This patch generalizes things a bit more so that a specific run loop can - be passed in to the constructor. This makes it so all run loop management - can stay in DefaultGCActivityCallback and a subclass can specify any runloop. - - * runtime/GCActivityCallback.h: expose a PLATFORM(CF) constructor that can - specify the runloop GC can be scheduled on. - * runtime/GCActivityCallbackCF.cpp: - (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback): two constructors, - one that specifies the run loop and passes that on to commonConstructor and - the old constructor defaults to the current run loop. - (JSC::DefaultGCActivityCallback::commonConstructor): do normal construction, - adding the timer to the given runloop. - -2011-02-10 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Oliver Hunt. - - A little more encapsulation for MarkedBlock: Moved allocate() and sweep() into MarkedBlock - https://bugs.webkit.org/show_bug.cgi?id=54253 - - SunSpider reports no change. - - * runtime/CollectorHeapIterator.h: Removed DeadObjectIterator, since it - is now unused. - - * runtime/Heap.cpp: - (JSC::Heap::reset): Moved the call to shrink() here, since it seems a - little more clear for MarkedSpace's client to tell it explicitly when to - shrink. - - * runtime/JSCell.h: - (JSC::JSCell::MarkedBlock::allocate): Split out from MarkedSpace::allocate. - - * runtime/MarkedBlock.cpp: - (JSC::MarkedBlock::sweep): Split out from MarkedSpace::sweep, and - converted to more directly iterate a MarkedBlock based on knowing its - internal structure. - - * runtime/MarkedBlock.h: - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::allocate): - (JSC::MarkedSpace::sweep): - * runtime/MarkedSpace.h: Split out the code mentioned above. - -2011-02-10 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Andreas Kling. - - Fix compilation error on OpenBSD - https://bugs.webkit.org/show_bug.cgi?id=53766 - - Add a HAVE_STRNSTR in Platform.h and define it only on Darwin and FreeBSD. - - * wtf/Platform.h: - * wtf/StringExtras.h: Use HAVE(STRNSTR) now. - -2011-02-10 Adam Roben <aroben@apple.com> - - Print locations of assertions and logs in a way that Visual Studio understands - - With this change, double-clicking one of these locations in Visual Studio's Output Window - will focus that line of code in the editor. - - Fixes <http://webkit.org/b/54208> Double-clicking locations of assertions/logs in Visual - Studio's Output Window does nothing - - Reviewed by Alexey Proskuryakov. - - * wtf/Assertions.cpp: - (printCallSite): Use OS(WINDOWS) instead of the meaningless OS(WIN). When we aren't using - the debug CRT (and thus can't call _CrtDbgReport), print the file and line number using the - same format that cl.exe uses when it prints compiler errors. - -2011-02-10 Dan Bernstein <mitz@apple.com> + Reviewed by Gavin Barraclough. - LLVM Compiler build fix. + Remove unneeded deprecated methods from MarkStack + https://bugs.webkit.org/show_bug.cgi?id=58853 - * runtime/MarkedBlock.cpp: - (JSC::MarkedBlock::create): + Remove deprecated methods -2011-02-10 Peter Varga <pvarga@webkit.org> + * heap/MarkStack.h: - Reviewed by Csaba Osztrogonác. +2011-04-19 Mark Rowe <mrowe@apple.com> - Remove PCRE source from trunk - https://bugs.webkit.org/show_bug.cgi?id=54188 + Things work best when the Xcode project refers to the file at a path that exists. - * Android.mk: - * Android.v8.wtf.mk: - * CMakeLists.txt: - * DerivedSources.make: - * DerivedSources.pro: - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.order: - * JavaScriptCore.pri: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: - * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: - * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: * JavaScriptCore.xcodeproj/project.pbxproj: - * pcre/AUTHORS: Removed. - * pcre/COPYING: Removed. - * pcre/dftables: Removed. - * pcre/pcre.h: Removed. - * pcre/pcre.pri: Removed. - * pcre/pcre_compile.cpp: Removed. - * pcre/pcre_exec.cpp: Removed. - * pcre/pcre_internal.h: Removed. - * pcre/pcre_tables.cpp: Removed. - * pcre/pcre_ucp_searchfuncs.cpp: Removed. - * pcre/pcre_xclass.cpp: Removed. - * pcre/ucpinternal.h: Removed. - * pcre/ucptable.cpp: Removed. - * wscript: - -2011-02-10 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Adam Barth. - - Add randomValuesFromOS for OS(WINDOWS) - https://bugs.webkit.org/show_bug.cgi?id=54155 - Use CryptGenRandom for generating cryptographically secure random numbers. - This will work on WinCE and MinGW too. - - * config.h: - * wtf/OSRandomSource.cpp: - (WTF::randomValuesFromOS): - -2011-02-10 Jarred Nicholls <jarred@sencha.com> - - Reviewed by Adam Barth. - - REGRESSION(r78149): Return value of read() shouldn't be ignored. - https://bugs.webkit.org/show_bug.cgi?id=54167 - - stdio read should have its return value handled. Build error in gcc 4.4.5. - - * wtf/OSRandomSource.cpp: - (WTF::randomValuesFromOS): - -2011-02-10 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Adam Barth. - - Rename randomValuesFromOS to cryptographicallyRandomValuesFromOS - https://bugs.webkit.org/show_bug.cgi?id=54156 - - randomValuesFromOS generates random numbers of cryptographic quality. - Make this clear by adding "cryptographically" to the function name. - - * wtf/CryptographicallyRandomNumber.cpp: - (WTF::ARC4Stream::ARC4RandomNumberGenerator::stir): - * wtf/OSRandomSource.cpp: - (WTF::cryptographicallyRandomValuesFromOS): - * wtf/OSRandomSource.h: - -2011-02-09 Mark Rowe <mrowe@apple.com> - - Reviewed by Sam Weinig. - - <rdar://problem/8805364> Malloc zone enumeration code should be safe in the face of errors from the memory reader. - - * wtf/FastMalloc.cpp: - (WTF::PageHeapAllocator::recordAdministrativeRegions): Use the new helper function to walk the linked list safely. - (WTF::TCMalloc_ThreadCache_FreeList::enumerateFreeObjects): Ditto. - (WTF::TCMalloc_Central_FreeList::enumerateFreeObjects): Ditto. - (WTF::TCMallocStats::PageMapFreeObjectFinder::visit): Bail out if the span could not be read. - (WTF::TCMallocStats::PageMapMemoryUsageRecorder::visit): Ditto. - * wtf/MallocZoneSupport.h: - (WTF::RemoteMemoryReader::operator()): Remove an assert that is not valid. - (WTF::RemoteMemoryReader::nextEntryInLinkedList): Add a helper function for retrieving the next entry in - a linked list. It maps a failed read of the remote memory in to a null pointer, which all callers can - handle gracefully. - -2011-02-09 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig. - - Bug 54164 - Optimize global_var accesses on JSVALUE64 - - Directly embed the pointer to d->registers, optimize out the load - from the variable object, as we do already in JSVALUE32_64. - - This is a ~1.5% win on sunspidey. - - * jit/JIT.cpp: - * jit/JIT.h: - * 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): - -2011-02-09 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Oliver Hunt. - - A little more encapsulation for MarkedBlock: Made MarkedBlock responsible - for its own initialization and destruction - https://bugs.webkit.org/show_bug.cgi?id=54137 - - * runtime/CollectorHeapIterator.h: Removed ObjectIterator since it is - now unused. - - * runtime/JSCell.h: Maded MarkedBlock a friend so it can construct and - destruct JSCells. - - * runtime/MarkedBlock.cpp: - (JSC::MarkedBlock::create): - (JSC::MarkedBlock::destroy): - (JSC::MarkedBlock::MarkedBlock): Migrated initialization and destruction - code from MarkedSpace, updating it not to use ObjectIterator. We don't - want to use an abstract iterator since iteration will be unique to each - block in the future. - - * runtime/MarkedBlock.h: Made the consructor private and moved it into - the .cpp file because it's big now. - - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::allocateBlock): - (JSC::MarkedSpace::freeBlock): Migrated code. - - * runtime/MarkedSpace.h: - (JSC::CollectorHeap::collectorBlock): Keep a vector of MarkedBlock - pointers instead of aligned allocations -- how MarkedBlocks are allocated - is now an implementation detail of MarkedBlock. - -2011-02-09 Adam Barth <abarth@webkit.org> - - Another attempt to fix the Qt Windows build. - - * config.h: - * wtf/OSRandomSource.cpp: - (WTF::randomValuesFromOS): - -2011-02-09 Adam Barth <abarth@webkit.org> - - Attempt to fix the Qt Windows build. - - * wtf/OSRandomSource.cpp: - (WTF::randomValuesFromOS): - -2011-02-09 Adam Barth <abarth@webkit.org> +2011-04-19 Renata Hodovan <reni@webkit.org> Reviewed by Eric Seidel. - Add WTF::cryptographicallyRandomNumber - https://bugs.webkit.org/show_bug.cgi?id=54083 + Move the alignment related macros in Vector.h to new Alignment.h. + https://bugs.webkit.org/show_bug.cgi?id=56000 - Introduce a cryptographically strong random number generator to WTF. - The random number generator is based on arc4random as found in: - - http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/crypt/arc4random.c?rev=1.22 - - I've changed to source to WebKit style and abstracted the operating - system interaction to OSRandomSource. We'll use this functionality to - expose a cryptographically strong random number generator to - JavaScript. - - * Android.mk: - * Android.v8.wtf.mk: - * GNUmakefile.am: * JavaScriptCore.gypi: * JavaScriptCore.vcproj/WTF/WTF.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: - * config.h: + * wtf/Alignment.h: Added. * wtf/CMakeLists.txt: - * wtf/CryptographicallyRandomNumber.cpp: Added. - (WTF::initMutexIfNeeded): - (WTF::init): - (WTF::addRandomData): - (WTF::stir): - (WTF::stirIfNeeded): - (WTF::getByte): - (WTF::getWord): - (WTF::cryptographicallyRandomNumber): - (WTF::cryptographicallyRandomValues): - * wtf/CryptographicallyRandomNumber.h: Added. - * wtf/OSRandomSource.cpp: Added. - (WTF::randomValuesFromOS): - * wtf/OSRandomSource.h: Added. - * wtf/wtf.pri: - -2011-02-09 Geoffrey Garen <ggaren@apple.com> - - Try to fix the build. - - * wtf/Bitmap.h: Include string.h for memset. Not sure why this started - failing now. - -2011-02-09 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Sam Weinig. - - A tiny bit of encapsulation for MarkedBlock: made its heap data member private - https://bugs.webkit.org/show_bug.cgi?id=54129 - - * runtime/MarkedBlock.h: - (JSC::MarkedBlock::isCellAligned): - (JSC::MarkedBlock::MarkedBlock): - (JSC::MarkedBlock::heap): Made the heap data member private, and provided - a constructor and an accessor. - - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::allocateBlock): - * runtime/MarkedSpace.h: - (JSC::MarkedSpace::heap): Use the constructor and accessor. + * wtf/Vector.h: -2011-02-09 Peter Varga <pvarga@webkit.org> +2011-04-19 Oliver Hunt <oliver@apple.com> Reviewed by Gavin Barraclough. - Replace PCRE with Yarr in WebCore - https://bugs.webkit.org/show_bug.cgi?id=53496 - - * JavaScriptCore.exp: - * JavaScriptCore.gyp/JavaScriptCore.gyp: - * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.xcodeproj/project.pbxproj: - * create_regex_tables: - * runtime/RegExp.cpp: - * wtf/Platform.h: - * yarr/Yarr.h: - * yarr/YarrJIT.cpp: - * yarr/YarrJIT.h: - * yarr/YarrParser.h: - * yarr/YarrPattern.h: - * yarr/YarrSyntaxChecker.h: - * yarr/yarr.pri: Added. - -2011-02-08 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Sam Weinig. - - Removed some dead code from Heap - https://bugs.webkit.org/show_bug.cgi?id=54064 - - * runtime/MarkedSpace.cpp: Removed some now-unused constants and - declarations. - - (JSC::MarkedSpace::allocate): Removed some ASSERTs that are also ASSERTed - by our caller. Removed redundant typedefs. - -2011-02-08 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Sam Weinig. - - Use a vector to track blocks in the Heap, instead of hand-rolled vector-like code - https://bugs.webkit.org/show_bug.cgi?id=54062 - - SunSpider reports no change. - - * runtime/CollectorHeapIterator.h: - (JSC::CollectorHeapIterator::isValid): - (JSC::CollectorHeapIterator::isLive): Updated for new mark invariant: To - know if an object is live, you just need to test its mark bit. - - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::MarkedSpace): Moved waterMark and highWaterMark from - CollectorHeap into MarkedSpace, since they're global state. Removed call - to memset since CollectorHeap is a true class with its own constructor now. - - (JSC::MarkedSpace::destroy): Change uses of m_heap.usedBlocks to - m_heap.blocks.size(), and m_heap.numBlocks to m_heap.blocks.capacity(). - - (JSC::MarkedSpace::allocateBlock): - (JSC::MarkedSpace::freeBlock): No need to manage our vector manually anymore. - - (JSC::MarkedSpace::allocate): - (JSC::MarkedSpace::shrink): - (JSC::MarkedSpace::clearMarkBits): - (JSC::MarkedSpace::markedCells): - (JSC::MarkedSpace::sweep): - (JSC::MarkedSpace::objectCount): - (JSC::MarkedSpace::capacity): - (JSC::MarkedSpace::reset): - (JSC::MarkedSpace::primaryHeapEnd): - * runtime/MarkedSpace.h: - (JSC::CollectorHeap::CollectorHeap): - (JSC::MarkedSpace::highWaterMark): - (JSC::MarkedSpace::setHighWaterMark): - (JSC::MarkedSpace::contains): Same as above. - -2011-02-08 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Darin Adler. - - Give each MarkedBlock enough mark bits to cover the whole block - https://bugs.webkit.org/show_bug.cgi?id=54029 - - SunSpider reports no change. - - This simplifies access to mark bits, since any cell-aligned pointer - into a block now has a valid mark bit to test. - - * runtime/MarkedBlock.h: Changed CELLS_PER_BLOCK to account for the extra - mark bits. This happens not to change its actual value. - (JSC::MarkedBlock::cellNumber): - (JSC::MarkedBlock::isMarked): - (JSC::MarkedBlock::testAndSetMarked): - (JSC::MarkedBlock::setMarked): Changed const JSCell* to const void* to - remove a cast from our caller, and to more accurately reflect the fact - that MarkedBlock is agnostic about the types pointed to by the pointers - you pass to it. - - (JSC::MarkedBlock::isPossibleCell): Removed a null check. We now consider - the null pointer to be a possible cell with a 0 (impossible) block. This - removes a null check from marking. - - * runtime/MarkedSpace.cpp: - * runtime/MarkedSpace.h: - (JSC::MarkedSpace::contains): Simplified the contains check, and inlined - the whole thing, now that it's so simple. - -2011-02-08 Daniel Bates <dbates@rim.com> - - Rubber-stamped by Martin Robinson. - - Rename enum ProtectionSeting [sic] to ProtectionSetting. - - * jit/ExecutableAllocator.cpp: - (JSC::ExecutableAllocator::reprotectRegion): - * jit/ExecutableAllocator.h: - -2011-02-08 Balazs Kelemen <kbalazs@webkit.org> - - Reviewed by Andreas Kling. + Remove DeprecatedPtr + https://bugs.webkit.org/show_bug.cgi?id=58718 - [Qt] Should not always define USE_SYSTEM_MALLOC - https://bugs.webkit.org/show_bug.cgi?id=54007 - - * wtf/Platform.h: - -2011-02-08 Dan Bernstein <mitz@apple.com> - - Reviewed by Maciej Stachowiak. - - LLVM Compiler build fix. + Remove the class an all functions that still exist to support it. + * heap/MarkStack.h: + (JSC::MarkStack::append): + * runtime/JSValue.h: * runtime/WriteBarrier.h: - (JSC::WriteBarrier::WriteBarrier): -2011-02-07 Ryosuke Niwa <rniwa@webkit.org> +2011-04-19 Jungshik Shin <jshin@chromium.org> - Reviewed by Darin Adler. + Reviewed by David Levin - JSVariableObject::setRegisters should take PassOwnArrayPtr for registersArray. - https://bugs.webkit.org/show_bug.cgi?id=53902 + Add U+FEFF (Zero width no-break space) to CharacterNames.h. + It's added to the list of characters to treat as zero-width + in WebCore. - * runtime/Arguments.h: - (JSC::JSActivation::copyRegisters): Uses OwnArrayPtr<Register> instead of Register*. - * runtime/JSGlobalObject.cpp: - (JSC::JSGlobalObject::copyGlobalsFrom): Ditto. - * runtime/JSGlobalObject.h: - (JSC::JSGlobalObject::setRegisters): Takes PassOwnArrayPtr<Register> instead of Register* - for registerArray. - * runtime/JSVariableObject.h: - (JSC::JSVariableObject::copyRegisterArray): Returns PassOwnArrayPtr<Register> instead of Register*. - (JSC::JSVariableObject::setRegisters): Takes PassOwnArrayPtr<Register> instead of Register* - for registerArray. - -2011-02-07 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Sam Weinig. + https://bugs.webkit.org/show_bug.cgi?id=48860 - Removed some dead code from Heap - https://bugs.webkit.org/show_bug.cgi?id=53969 - - SunSpider reports no change. - - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::shrink): - (JSC::MarkedSpace::sweep): - * runtime/MarkedSpace.h: Removed resizeBlocks and growBlocks, and - renamed shrinkBlocks to shrink, making it unconditionally shrink as - much as possible. - -2011-02-07 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Oliver Hunt. - - Simplified the marked space's mark invariant - https://bugs.webkit.org/show_bug.cgi?id=53968 - - SunSpider reports no change. - - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::allocate): Mark objects when allocating them. This - means that, at all times other than the mark phase, an object is live - if and only if it is marked. - - (JSC::MarkedSpace::containsSlowCase): Use the new mark invariant to - simplify testing whether an object is live. - -2011-02-07 Beth Dakin <bdakin@apple.com> - - Reviewed by Eric Seidel. - - Fix for https://bugs.webkit.org/show_bug.cgi?id=53950 - USE_WK_SCROLLBAR_PAINTER in ScrollbarThemeMac should be in - Platform.h instead - - * wtf/Platform.h: - -2011-02-07 Darin Adler <darin@apple.com> - - Reviewed by Antti Koivisto. + * wtf/unicode/CharacterNames.h: - Add built-in decoder for UTF-8 for improved performance - https://bugs.webkit.org/show_bug.cgi?id=53898 +2011-04-19 Csaba Osztrogonác <ossy@webkit.org> - * wtf/unicode/UnicodeMacrosFromICU.h: Added U8_MAX_LENGTH and - U8_APPEND_UNSAFE. Also fixed header. + [Qt] REGRESSION(84176): http/tests/xmlhttprequest/event-listener-gc.html fails + https://bugs.webkit.org/show_bug.cgi?id=58871 -2011-02-07 Adam Roben <aroben@apple.com> + Unreviewed, rolling out r84176, r84178, r84186, r84212 and r84231. + http://trac.webkit.org/changeset/84176 (original patch) + http://trac.webkit.org/changeset/84178 (original patch - part 2) + http://trac.webkit.org/changeset/84186 (build fix) + http://trac.webkit.org/changeset/84212 + http://trac.webkit.org/changeset/84231 (skip failing test) - Delete precompiled headers whenever any .vsprops file changes + original bugs: + - https://bugs.webkit.org/show_bug.cgi?id=58718 + - https://bugs.webkit.org/show_bug.cgi?id=58853 - Precompiled headers need to be rebuilt if, e.g., an ENABLE_* macro is changed in one of our - .vsprops files. Unfortunately, Visual Studio isn't smart enough to figure this out, so we - give it some assistance by deleting the precompiled headers whenever any .vsprops file - changes. - - I also made some drive-by fixes while I was in the area. - - Fixes <http://webkit.org/b/53826> react-to-vsprops-changes.py doesn't force precompiled - headers to be rebuilt, but should + * heap/MarkStack.h: + (JSC::MarkStack::deprecatedAppendValues): + (JSC::MarkStack::append): + (JSC::MarkStack::deprecatedAppend): + * runtime/JSValue.h: + * runtime/WriteBarrier.h: + (JSC::DeprecatedPtr::DeprecatedPtr): + (JSC::DeprecatedPtr::get): + (JSC::DeprecatedPtr::operator*): + (JSC::DeprecatedPtr::operator->): + (JSC::DeprecatedPtr::slot): + (JSC::DeprecatedPtr::operator UnspecifiedBoolType*): + (JSC::DeprecatedPtr::operator!): + (JSC::operator==): - Reviewed by David Kilzer. +2011-04-18 Oliver Hunt <oliver@apple.com> - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Stop ignoring the - return code from react-to-vsprops-changes.py so we will notice when errors are introduced. - But skip the script entirely in production builds, where it is both unnecessary and can't - function correctly (due to not having the entire source tree available to it). + Reviewed by Gavin Barraclough. - * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: - (main): Removed an extra '*' in the glob for finding manifest files. The extra '*' was - leftover from before we rearranged WebKitBuild in r75138. Moved code to delete an old file - to the new delete_if_older_than function. Added code to delete any precompiled headers older - than the newest .vsprops file. - (delete_if_older_than): Added. Code came from main. + Remove unneeded deprecated methods from MarkStack + https://bugs.webkit.org/show_bug.cgi?id=58853 -2011-02-07 Antti Koivisto <antti@apple.com> + Remove deprecated methods - Not reviewed. - - ASSERTS_DISABLED -> ASSERT_DISABLED + * heap/MarkStack.h: - * wtf/BloomFilter.h: +2011-04-18 Oliver Hunt <oliver@apple.com> -2011-02-06 Ryosuke Niwa <rniwa@webkit.org> + Reviewed by Adam Roben. - Unreviewed; speculative Qt build fix. + Off by one initialising repeat callframe + https://bugs.webkit.org/show_bug.cgi?id=58838 + <rdar://problem/8756810> - * JavaScriptCore.pro: + If the end of a callframe made for a repeat call landed on + a page boundary the following page may not have been committed + which means that the off by one could lead to a crash. However + it could only happen in this case and only on windows which is + why it was so hard to repro. Alas given the steps needed to + reproduce are such that it's not really possible to make a + testcase. -2011-02-06 Ryosuke Niwa <rniwa@webkit.org> + This fix makes the code a little less squirrely by not trying + to avoid the unnecessary initialisation of |this|. - Reviewed by Darin Adler. + * interpreter/Interpreter.cpp: + (JSC::Interpreter::prepareForRepeatCall): - OwnArraryPtr.h uses deleteOwnedPtr but doesn’t include OwnPtrCommon.h - https://bugs.webkit.org/show_bug.cgi?id=52867 +2011-04-18 Gavin Barraclough <barraclough@apple.com> - Removed LOOSE_OWN_ARRAY_PTR and OwnArrayPtr<T>::set. Replaced all calls to OwnArrayPtr::set - and loose instantiation of OwnArrayPtr by calls to operator= and adoptArrayPtr. Also removed - OwnArrayPtrCommon.h since PassOwnArrayPtr.h needs to include OwnArrayPtr.h and there is - no point in putting deleteOwnedArrayPtr into a separate header. - - Note: if this patch breaks build, the code is either instiantiating OwnArrayPtr - without calling adoptArrayPtr or calling set on ArrayOwnPtr instead of operator=. - - No tests are added since this is a refactoring. + Reviewed by Geoff Garen. - * API/JSStringRefCF.cpp: - (JSStringCreateWithCFString): Calls adoptArrayPtr. - * GNUmakefile.am: Removed OwnArrayPtrCommon.h - * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto. - * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. - * runtime/Arguments.cpp: - (JSC::Arguments::deleteProperty): Calls adoptArrayPtr. - * runtime/Arguments.h: - (JSC::Arguments::copyRegisters): Ditto. - * runtime/JSPropertyNameIterator.cpp: - (JSC::JSPropertyNameIterator::JSPropertyNameIterator): Ditto. - * runtime/JSVariableObject.h: - (JSC::JSVariableObject::setRegisters): Calls operator= instead of set. - * runtime/StructureChain.cpp: - (JSC::StructureChain::StructureChain): Ditto. - * wtf/CMakeLists.txt: - * wtf/DateMath.h: - (JSC::GregorianDateTime::GregorianDateTime): No longer instnatiates OwnArrayPtr - with a null pointer. - * wtf/OwnArrayPtr.h: - * wtf/OwnArrayPtrCommon.h: Removed. - * wtf/PassOwnArrayPtr.h: No longer includes OwnArrayCommon.h - (WTF::deleteOwnedArrayPtr): Moved from OwnArrayPtrCommon.h + Bug 58829 - DFG JIT - Optimize add/sub immediate, multiply. -2011-02-06 Antti Koivisto <antti@apple.com> + Add code generation for add/subtract instruction with immediate operands + (where a child is a constant), and don't bail to non-speculative if an + integer multiple results in a +0 result (only if it should be generating -0). - Reviewed by Maciej Stachowiak. + * dfg/DFGSpeculativeJIT.cpp: + (JSC::DFG::SpeculativeJIT::compile): + * dfg/DFGSpeculativeJIT.h: + (JSC::DFG::SpeculativeJIT::isDoubleConstantWithInt32Value): - Use bloom filter for descendant selector filtering - https://bugs.webkit.org/show_bug.cgi?id=53880 - - Implement a bloom filter with k=2 and 8 bit counting. +2011-04-18 Gavin Barraclough <barraclough@apple.com> - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/BloomFilter.h: Added. - (WTF::BloomFilter::maximumCount): - (WTF::BloomFilter::BloomFilter): - (WTF::BloomFilter::mayContain): - (WTF::BloomFilter::add): - (WTF::BloomFilter::remove): - (WTF::BloomFilter::firstSlot): - (WTF::BloomFilter::secondSlot): - (WTF::::add): - (WTF::::remove): - (WTF::::clear): - (WTF::::likelyEmpty): - (WTF::::isClear): - -2011-02-04 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Oliver Hunt. - - Rolled back in r77612 with ASSERT/crash fixed. - https://bugs.webkit.org/show_bug.cgi?id=53759 - - Don't shrink the heap to 0 unconditionally. Instead, shrink to 1 if - necessary. For now, the heap assumes that it always has at least one - block live. - - * runtime/Heap.cpp: - (JSC::Heap::Heap): - (JSC::Heap::reset): - * runtime/Heap.h: - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::allocate): - (JSC::MarkedSpace::shrinkBlocks): - (JSC::MarkedSpace::sweep): - (JSC::MarkedSpace::reset): - * runtime/MarkedSpace.h: - (JSC::MarkedSpace::highWaterMark): - (JSC::MarkedSpace::setHighWaterMark): + Reviewed by Geoff Garen. -2011-02-04 David Kilzer <ddkilzer@apple.com> + Bug 58817 - DFG JIT - if speculative compilation fails, throw away code. - BUILD FIX: REALLY remove the last vestiges of JSVALUE32! + If we detect a logical conflict, throw away generated code, + and only compile through the NonSpeculativeJIT. - <rdar://problem/8957409> Remove last vestiges of JSVALUE32 - <http://webkit.org/b/53779> + * assembler/AbstractMacroAssembler.h: + (JSC::AbstractMacroAssembler::rewindToLabel): + * assembler/AssemblerBuffer.h: + (JSC::AssemblerBuffer::rewindToOffset): + * assembler/MacroAssemblerX86Common.h: + (JSC::MacroAssemblerX86Common::branchAdd32): + (JSC::MacroAssemblerX86Common::branchSub32): + * assembler/X86Assembler.h: + (JSC::X86Assembler::rewindToLabel): + (JSC::X86Assembler::X86InstructionFormatter::rewindToLabel): + * dfg/DFGJITCompiler.cpp: + (JSC::DFG::JITCompiler::linkSpeculationChecks): + (JSC::DFG::JITCompiler::compileFunction): + * dfg/DFGNode.h: + * dfg/DFGNonSpeculativeJIT.cpp: + (JSC::DFG::NonSpeculativeJIT::compile): + * dfg/DFGSpeculativeJIT.cpp: + (JSC::DFG::SpeculativeJIT::compile): + * dfg/DFGSpeculativeJIT.h: + (JSC::DFG::SpeculationCheckIndexIterator::SpeculationCheckIndexIterator): + +2011-04-18 Oliver Hunt <oliver@apple.com> - * DerivedSources.make: Removed dependency on - JavaScriptCore.JSVALUE32.exp. + Reviewed by Gavin Barraclough. -2011-02-04 David Kilzer <ddkilzer@apple.com> + Remove DeprecatedPtr + https://bugs.webkit.org/show_bug.cgi?id=58718 - <rdar://problem/8957409> Remove last vestiges of JSVALUE32 - <http://webkit.org/b/53779> + As simple as it sounds. - Reviewed by Darin Adler. + * runtime/JSValue.h: + * runtime/WriteBarrier.h: - Support for JSVALUE32 was originaly removed in r70111. +2011-04-17 Cameron Zwarich <zwarich@apple.com> - * Configurations/JavaScriptCore.xcconfig: Changed armv6 to use - JavaScriptCore.JSVALUE32_64.exp and ppc64 to use - JavaScriptCore.JSVALUE64.exp to match Platform.h. - * DerivedSources.make: Removed rule for - JavaScriptCore.JSVALUE32.exp. - * JavaScriptCore.JSVALUE32only.exp: Removed. - * JavaScriptCore.xcodeproj/project.pbxproj: Removed references - to JavaScriptCore.JSVALUE32only.exp. + Reviewed by Dan Bernstein. -2011-02-04 David Kilzer <ddkilzer@apple.com> + JSC no longer builds with Clang due to -Woverloaded-virtual warning + https://bugs.webkit.org/show_bug.cgi?id=58760 - Use static_cast and other style cleanup in YarrInterpreter.cpp - <http://webkit.org/b/53772> + Rename Structure's specificValue overload of put to putSpecificValue to avoid + Clang's warning for overloading a virtual function. - Reviewed by John Sullivan. + * runtime/Structure.cpp: + (JSC::Structure::addPropertyTransition): + (JSC::Structure::addPropertyWithoutTransition): + (JSC::Structure::putSpecificValue): + * runtime/Structure.h: - * yarr/YarrInterpreter.cpp: - (JSC::Yarr::Interpreter::InputStream::readChecked): Use - static_cast. - (JSC::Yarr::Interpreter::InputStream::checkInput): Remove - unnecessary else block. - (JSC::Yarr::Interpreter::matchAssertionEOL): Ditto. - (JSC::Yarr::Interpreter::backtrackBackReference): Ditto. - (JSC::Yarr::ByteCompiler::emitDisjunction): Use static_cast. +2011-04-17 Patrick Gansterer <paroga@webkit.org> -2011-02-04 Sheriff Bot <webkit.review.bot@gmail.com> + Reviewed by Adam Barth. - Unreviewed, rolling out r77625 and r77626. - http://trac.webkit.org/changeset/77625 - http://trac.webkit.org/changeset/77626 - https://bugs.webkit.org/show_bug.cgi?id=53765 + Remove WTF_PLATFORM_SGL + https://bugs.webkit.org/show_bug.cgi?id=58743 - It broke Windows builds (Requested by Ossy_ on #webkit). + WTF_PLATFORM_SGL and PLATFORM(SGL) are not used in the code anywhere. - * JavaScriptCore.exp: - * JavaScriptCore.gyp/JavaScriptCore.gyp: - * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.xcodeproj/project.pbxproj: - * create_regex_tables: - * runtime/RegExp.cpp: * wtf/Platform.h: - * yarr/Yarr.h: - * yarr/YarrJIT.cpp: - * yarr/YarrJIT.h: - * yarr/YarrParser.h: - * yarr/YarrPattern.h: - * yarr/YarrSyntaxChecker.h: - * yarr/yarr.pri: Removed. - -2011-02-04 Jessie Berlin <jberlin@apple.com> - Windows build fix. Unreviewed. +2011-04-17 Patrick Gansterer <paroga@webkit.org> - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: - -2011-02-04 Peter Varga <pvarga@webkit.org> - - Reviewed by Gavin Barraclough. + Reviewed by Adam Barth. - Replace PCRE with Yarr in WebCore - https://bugs.webkit.org/show_bug.cgi?id=53496 + Rename PLATFORM(CA) to USE(CA) + https://bugs.webkit.org/show_bug.cgi?id=58742 - * JavaScriptCore.exp: - * JavaScriptCore.gyp/JavaScriptCore.gyp: - * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.xcodeproj/project.pbxproj: - * create_regex_tables: - * runtime/RegExp.cpp: * wtf/Platform.h: - * yarr/Yarr.h: - * yarr/YarrJIT.cpp: - * yarr/YarrJIT.h: - * yarr/YarrParser.h: - * yarr/YarrPattern.h: - * yarr/YarrSyntaxChecker.h: - * yarr/yarr.pri: Added. - -2011-02-04 Ilya Tikhonovsky <loislo@chromium.org> - - Unreviewed rollout two patches r77614 and r77612. - - REGRESSION: Snow Leopard Intel Release anumber of failing tests. - - * runtime/Heap.cpp: - (JSC::Heap::Heap): - (JSC::Heap::reset): - * runtime/Heap.h: - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::allocate): - (JSC::MarkedSpace::sweep): - (JSC::MarkedSpace::reset): - * runtime/MarkedSpace.h: - -2011-02-04 Geoffrey Garen <ggaren@apple.com> - - Try to fix 32bit build. - - * runtime/Heap.cpp: - (JSC::Heap::reset): Use an explicit cast to avoid shortening warnings, - since 1.5 is double (64bit), and the result is size_t (32bit). - -2011-02-03 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Cameron Zwarich. - - Changed MarkedSpace to delegate grow/shrink decisions to Heap - https://bugs.webkit.org/show_bug.cgi?id=53759 - - SunSpider reports no change. - - * runtime/Heap.cpp: - (JSC::Heap::Heap): - (JSC::Heap::reset): - * runtime/Heap.h: Reorganized a few data members for better cache locality. - Added a grow policy. - - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::allocate): - (JSC::MarkedSpace::sweep): - (JSC::MarkedSpace::reset): Don't shrink automatically. Instead, wait for - the heap to make an explicit sweep call. - - * runtime/MarkedSpace.h: - (JSC::MarkedSpace::highWaterMark): - (JSC::MarkedSpace::setHighWaterMark): Use a watermark to determine how - many bytes to allocate before failing and giving the heap an opportunity - to collect garbage. This also means that we allocate blocks on demand, - instead of ahead of time. - -2011-02-03 James Kozianski <koz@chromium.org> - - Reviewed by Dimitri Glazkov. - - Add navigator.registerProtocolHandler behind a flag. - https://bugs.webkit.org/show_bug.cgi?id=52609 - - * Configurations/FeatureDefines.xcconfig: - -2011-02-03 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Oliver Hunt. - - Not all blocks are freed when the heap is freed (counting is hard!) - https://bugs.webkit.org/show_bug.cgi?id=53732 - - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::destroy): Freeing a block compacts the list, so just - keep freeing block 0 until there are no blocks left. - -2011-02-03 Geoffrey Garen <ggaren@apple.com> - - Try to fix the Mac build. - - * JavaScriptCore.xcodeproj/project.pbxproj: The new MarkedBlock.h header - needs to be private, not project, so other projects can include headers - that depend on it. - -2011-02-03 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Sam Weinig. - - Start using MarkedBlock instead of CollectorBlock - https://bugs.webkit.org/show_bug.cgi?id=53693 - - SunSpider reports no change. - - * runtime/MarkedBlock.h: - (JSC::MarkedBlock::blockFor): - (JSC::MarkedBlock::setMarked): - (JSC::MarkedBlock::isCellAligned): - (JSC::MarkedBlock::isPossibleCell): Updated for const-ness. - - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::allocateBlock): - (JSC::MarkedSpace::containsSlowCase): - (JSC::MarkedSpace::clearMarkBits): Updated for const-ness. - - * runtime/MarkedSpace.h: - (JSC::CollectorHeap::collectorBlock): - (JSC::MarkedSpace::heap): - (JSC::MarkedSpace::isMarked): - (JSC::MarkedSpace::testAndSetMarked): - (JSC::MarkedSpace::setMarked): - (JSC::MarkedSpace::contains): Switched from CollectorBlock to MarkedBlock, - and deleted dead CollectorBlock-related code. - -2011-02-03 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Darin Adler. - - Avoid strlen() in AtomicString::fromUTF8 - https://bugs.webkit.org/show_bug.cgi?id=50516 - Add an overload to calculateStringHashFromUTF8 to get - strlen() of the input data with only one call. +2011-04-17 Patrick Gansterer <paroga@webkit.org> - This change shows about 3% performance win on the xml-parser benchmark. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * wtf/text/AtomicString.cpp: - (WTF::AtomicString::fromUTF8): - * wtf/unicode/UTF8.cpp: - (WTF::Unicode::calculateStringHashAndLengthFromUTF8Internal): - (WTF::Unicode::calculateStringHashFromUTF8): - (WTF::Unicode::calculateStringHashAndLengthFromUTF8): - * wtf/unicode/UTF8.h: - -2011-02-02 Gavin Barraclough <barraclough@apple.com> - - Windows build fix. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - -2011-02-02 Gavin Barraclough <barraclough@apple.com> - - oops, build fix! - - * wtf/Assertions.cpp: - -2011-02-02 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig. - - Bug 53650 - Add a BACKTRACE macro to Assertions.h - - Add a BACKTRACE macro to Assertions.h, which will print a backtrace on - debug Mac builds, make CRASH (and thus ASSERT) automatically call this. + Reviewed by Adam Barth. - * JavaScriptCore.exp: - * wtf/Assertions.cpp: - * wtf/Assertions.h: + Rename PLATFORM(CG) to USE(CG) + https://bugs.webkit.org/show_bug.cgi?id=58729 -2011-02-02 Michael Saboff <msaboff@apple.com> + * wtf/Platform.h: - Reviewed by Gavin Barraclough. +2011-04-16 Patrick Gansterer <paroga@webkit.org> - Improper backtrack of nested non-capturing greedy paren to prior paren - https://bugs.webkit.org/show_bug.cgi?id=53261 + Reviewed by Eric Seidel. - A paren that follows a non-capturing greedy paren nested within a - non-capturing fixed paren was back tracking to the last paren - processed instead of the immediately prior paren. - Refactored default backtracking of parens to prior paren to work for - both nested (within) and immediately prior (after) parens. + Rename PLATFORM(CAIRO) to USE(CAIRO) + https://bugs.webkit.org/show_bug.cgi?id=55192 - * yarr/YarrJIT.cpp: - (JSC::Yarr::YarrGenerator::GenerationState::addParenthesesTail): - (JSC::Yarr::YarrGenerator::TermGenerationState::TermGenerationState): - (JSC::Yarr::YarrGenerator::TermGenerationState::setJumpListToPriorParen): - (JSC::Yarr::YarrGenerator::TermGenerationState::getJumpListToPriorParen): - (JSC::Yarr::YarrGenerator::ParenthesesTail::ParenthesesTail): - (JSC::Yarr::YarrGenerator::ParenthesesTail::generateCode): - (JSC::Yarr::YarrGenerator::generateParenthesesDisjunction): - (JSC::Yarr::YarrGenerator::generateParenthesesSingle): - (JSC::Yarr::YarrGenerator::generateDisjunction): + * wtf/Platform.h: + * wtf/gobject/GTypedefs.h: -2011-02-02 Jeff Miller <jeffm@apple.com> +2011-04-15 Sheriff Bot <webkit.review.bot@gmail.com> - Reviewed by Darin Adler and Steve Falkenburg. + Unreviewed, rolling out r84067. + http://trac.webkit.org/changeset/84067 + https://bugs.webkit.org/show_bug.cgi?id=58724 - Add DerivedSources.make to some Visual Studio projects - https://bugs.webkit.org/show_bug.cgi?id=53607 + qt build are failing. (Requested by loislo2 on #webkit). - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Add DerivedSources.make. + * heap/MarkStack.h: + (JSC::MarkStack::append): + * runtime/JSValue.h: + * runtime/WriteBarrier.h: + (JSC::DeprecatedPtr::DeprecatedPtr): + (JSC::DeprecatedPtr::get): + (JSC::DeprecatedPtr::operator*): + (JSC::DeprecatedPtr::operator->): + (JSC::DeprecatedPtr::slot): + (JSC::DeprecatedPtr::operator UnspecifiedBoolType*): + (JSC::DeprecatedPtr::operator!): + (JSC::operator==): -2011-02-02 Steve Lacey <sjl@chromium.org> +2011-04-15 Shishir Agrawal <shishir@chromium.org> - Reviewed by Eric Carlson. + Reviewed by James Robinson. - Implement basic media statistics on media elements. - https://bugs.webkit.org/show_bug.cgi?id=53322 + Add a flag to guard Page Visibility API changes. + https://bugs.webkit.org/show_bug.cgi?id=58464 * Configurations/FeatureDefines.xcconfig: -2011-02-02 Kevin Ollivier <kevino@theolliviers.com> - - [wx] Build fixes for wxWebKit. - - * wtf/wx/StringWx.cpp: - (WTF::String::String): - -2011-02-01 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Sam Weinig. - - A little more Heap refactoring - https://bugs.webkit.org/show_bug.cgi?id=53577 - - SunSpider reports no change. - - Split out MarkedBlock into its own file / class. - - Did the following renames: - isCellMarked => isMarked - checkMarkCell => testAndSetMarked - markCell => setMarked - cellOffset => cellNumber - collectorBlock => blockFor - - * Android.mk: - * CMakeLists.txt: - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * runtime/Heap.cpp: - (JSC::WeakGCHandlePool::update): - * runtime/Heap.h: - (JSC::Heap::isMarked): - (JSC::Heap::testAndSetMarked): - (JSC::Heap::setMarked): - * runtime/JSArray.h: - (JSC::MarkStack::markChildren): - (JSC::MarkStack::drain): - * runtime/JSCell.h: - (JSC::JSCell::MarkStack::internalAppend): - * runtime/MarkedBlock.cpp: Added. - * runtime/MarkedBlock.h: Added. - (JSC::MarkedBlock::blockFor): - (JSC::MarkedBlock::cellNumber): - (JSC::MarkedBlock::isMarked): - (JSC::MarkedBlock::testAndSetMarked): - (JSC::MarkedBlock::setMarked): - (JSC::MarkedBlock::isCellAligned): - (JSC::MarkedBlock::isPossibleCell): - * runtime/MarkedSpace.h: - (JSC::MarkedSpace::isMarked): - (JSC::MarkedSpace::testAndSetMarked): - (JSC::MarkedSpace::setMarked): - * runtime/SmallStrings.cpp: - (JSC::isMarked): - * runtime/WeakGCMap.h: - (JSC::WeakGCMap::isValid): - (JSC::::get): - (JSC::::take): - (JSC::::set): - -2011-02-02 Sam Weinig <sam@webkit.org> - - Fix windows clean build. +2011-04-15 Gavin Barraclough <barraclough@apple.com> - * DerivedSources.make: - -2011-02-02 Alejandro G. Castro <alex@igalia.com> + Errrk! - build fix from !x86-64. - Reviewed by Martin Robinson. + * dfg/DFGNode.h: - [GTK] Fix dist compilation - https://bugs.webkit.org/show_bug.cgi?id=53579 +2011-04-15 David Levin <levin@chromium.org> - * GNUmakefile.am: Added WriteBarrier.h to the sources, it was - added in r77151 + Revert of r83974. -2011-02-01 Sheriff Bot <webkit.review.bot@gmail.com> + JavaScriptCore shouldn't depend on ../ThirdParty/gtest/xcode/gtest.xcodeproj + https://bugs.webkit.org/show_bug.cgi?id=58716 - Unreviewed, rolling out r77297. - http://trac.webkit.org/changeset/77297 - https://bugs.webkit.org/show_bug.cgi?id=53538 - - caused leopard crashes (Requested by paroga on #webkit). - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * wtf/text/AtomicString.cpp: - (WTF::AtomicString::fromUTF8): - * wtf/unicode/UTF8.cpp: - (WTF::Unicode::calculateStringHashFromUTF8): - * wtf/unicode/UTF8.h: - -2011-02-01 Sam Weinig <sam@webkit.org> - - Fix Mac production builds. - - * JavaScriptCore.xcodeproj/project.pbxproj: - -2011-02-01 Sam Weinig <sam@webkit.org> - - Try to fix the windows build. - - * DerivedSources.make: - -2011-02-01 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Darin Adler. - - Avoid strlen() in AtomicString::fromUTF8 - https://bugs.webkit.org/show_bug.cgi?id=50516 - - Add an overload to calculateStringHashFromUTF8 to get - strlen() of the input data with only one call. - - This change shows about 3% performance win on the xml-parser benchmark. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * wtf/text/AtomicString.cpp: - (WTF::AtomicString::fromUTF8): - * wtf/unicode/UTF8.cpp: - (WTF::Unicode::calculateStringHashAndLengthFromUTF8Internal): - (WTF::Unicode::calculateStringHashFromUTF8): - (WTF::Unicode::calculateStringHashAndLengthFromUTF8): - * wtf/unicode/UTF8.h: - -2011-02-01 Sam Weinig <sam@webkit.org> - - Reviewed by Beth Dakin. - - Part 2 for <rdar://problem/8492788> - Adopt WKScrollbarPainterController - - Use header detection to define scrollbar painting controller #define. - - * DerivedSources.make: * JavaScriptCore.xcodeproj/project.pbxproj: + * wtf/tests/RunAllWtfTests.cpp: Removed. + * wtf/tests/StringTests.cpp: Removed. -2011-02-01 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Oliver Hunt. - - Refactor JSGlobalObject-related tear-down - https://bugs.webkit.org/show_bug.cgi?id=53478 - - While investigating crashes caused by r77082, I noticed some strange - destructor-time behaviors. This patch makes them less strange. - - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::CodeBlock): - (JSC::CodeBlock::markAggregate): - * bytecode/CodeBlock.h: - (JSC::CodeBlock::globalObject): - (JSC::GlobalCodeBlock::GlobalCodeBlock): - (JSC::GlobalCodeBlock::~GlobalCodeBlock): Store the set of global code - blocks on the Heap, instead of on independent global objects. The heap - is guaranteed to outlast any GC-owned data structure. The heap is also - a natural place to store objects that needs out-of-band marking, since - the heap is responsible for marking all roots. - - * runtime/Heap.cpp: - (JSC::Heap::markRoots): - (JSC::Heap::globalObjectCount): - (JSC::Heap::protectedGlobalObjectCount): - * runtime/Heap.h: - (JSC::Heap::codeBlocks): - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::JSGlobalData): - * runtime/JSGlobalData.h: - * runtime/JSGlobalObject.cpp: - (JSC::JSGlobalObject::~JSGlobalObject): - (JSC::JSGlobalObject::init): - (JSC::JSGlobalObject::markChildren): - * runtime/JSGlobalObject.h: - * runtime/MarkedSpace.cpp: Store the set of global objects in a weak map - owned by JSGlobalData, instead of an instrusive circular linked list. - This is simpler, and it avoids destructor-time access between garbage - collected objects, which is hard to get right. - - (JSC::MarkedSpace::destroy): Make sure to clear mark bits before tearing - everything down. Otherwise, weak data structures will incorrectly report - that objects pending destruction are still alive. - -2011-02-01 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Oliver Hunt. - - REGRESSION(77082): GC-related crashes seen: on WebKit2 bot; on GTK 32bit - bot; loading trac pages; typing in search field - https://bugs.webkit.org/show_bug.cgi?id=53519 - - The crashes were all caused by failure to run an object's destructor. - - * runtime/CollectorHeapIterator.h: - (JSC::ObjectIterator::ObjectIterator): Don't skip forward upon - construction. The iterator class used to do that when it was designed - for prior-to-beginning initialization. I forgot to remove this line - of code when I changed the iterator to normal initialization. - - Skipping forward upon construction was causing the heap to skip running - the destructor for the very first object in a block when destroying the - block. This usually did not crash, since block destruction is rare and - most objects have pretty trivial destructors. However, in the rare case - when the heap would destroy a block whose first object was a global - object or a DOM node, BOOM. - -2011-01-31 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoffrey Garen. - - Update JSObject storage for new marking API - https://bugs.webkit.org/show_bug.cgi?id=53467 - - JSObject no longer uses EncodedJSValue for its property storage. - This produces a stream of mechanical changes to PropertySlot and - anonymous storage APIs. - - * JavaScriptCore.exp: - * runtime/ArrayPrototype.cpp: - (JSC::ArrayPrototype::ArrayPrototype): - * runtime/BooleanConstructor.cpp: - (JSC::constructBoolean): - (JSC::constructBooleanFromImmediateBoolean): - * runtime/BooleanObject.cpp: - (JSC::BooleanObject::BooleanObject): - * runtime/BooleanObject.h: - * runtime/BooleanPrototype.cpp: - (JSC::BooleanPrototype::BooleanPrototype): - * runtime/DateInstance.cpp: - (JSC::DateInstance::DateInstance): - * runtime/DatePrototype.cpp: - (JSC::DatePrototype::DatePrototype): - * runtime/JSActivation.cpp: - (JSC::JSActivation::getOwnPropertySlot): - * runtime/JSArray.cpp: - (JSC::JSArray::getOwnPropertySlot): - * runtime/JSFunction.cpp: - (JSC::JSFunction::getOwnPropertySlot): - * runtime/JSGlobalObject.h: - (JSC::JSGlobalObject::JSGlobalObject): - * runtime/JSObject.cpp: - (JSC::JSObject::fillGetterPropertySlot): - * runtime/JSObject.h: - (JSC::JSObject::getDirectLocation): - (JSC::JSObject::offsetForLocation): - (JSC::JSObject::putAnonymousValue): - (JSC::JSObject::clearAnonymousValue): - (JSC::JSObject::getAnonymousValue): - (JSC::JSObject::putThisToAnonymousValue): - (JSC::JSObject::locationForOffset): - (JSC::JSObject::inlineGetOwnPropertySlot): - * runtime/JSObjectWithGlobalObject.cpp: - (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject): - * runtime/JSWrapperObject.h: - (JSC::JSWrapperObject::JSWrapperObject): - (JSC::JSWrapperObject::setInternalValue): - * runtime/Lookup.cpp: - (JSC::setUpStaticFunctionSlot): - * runtime/NumberConstructor.cpp: - (JSC::constructWithNumberConstructor): - * runtime/NumberObject.cpp: - (JSC::NumberObject::NumberObject): - (JSC::constructNumber): - * runtime/NumberObject.h: - * runtime/NumberPrototype.cpp: - (JSC::NumberPrototype::NumberPrototype): - * runtime/PropertySlot.h: - (JSC::PropertySlot::getValue): - (JSC::PropertySlot::setValue): - (JSC::PropertySlot::setRegisterSlot): - * runtime/StringObject.cpp: - (JSC::StringObject::StringObject): - * runtime/StringPrototype.cpp: - (JSC::StringPrototype::StringPrototype): - * runtime/WriteBarrier.h: - (JSC::WriteBarrierBase::setWithoutWriteBarrier): - -2011-02-01 Daniel Bates <dbates@rim.com> - - Reviewed by Antonio Gomes. - - Modify RandomNumberSeed.h to use USE(MERSENNE_TWISTER_19937) - https://bugs.webkit.org/show_bug.cgi?id=53506 - - Currently, use of the Mersenne Twister pseudorandom number generator - is hardcoded to the Windows CE port. With the passing of bug #53253, - we can generalize support for this PRNG to all ports that use srand(3) - and rand(3), including Windows CE. - - * wtf/RandomNumberSeed.h: - (WTF::initializeRandomNumberGenerator): - -2011-02-01 Dave Tapuska <dtapuska@rim.com> +2011-04-15 Oliver Hunt <oliver@apple.com> Reviewed by Gavin Barraclough. - MacroAssemblerARM would generate code that did 32bit loads - on addresses that were not aligned. More specifically it would - generate a ldr r8,[r1, #7] which isn't valid on ARMv5 and lower. - The intended instruction really is ldrb r8,[r1, #7]; ensure we - call load8 instead of load32. - - https://bugs.webkit.org/show_bug.cgi?id=46095 - - * assembler/MacroAssemblerARM.h: - (JSC::MacroAssemblerARM::set32Test32): - (JSC::MacroAssemblerARM::set32Test8): - -2011-02-01 Darin Fisher <darin@chromium.org> - - Reviewed by Eric Seidel. - - Fix some Visual Studio compiler warnings. - https://bugs.webkit.org/show_bug.cgi?id=53476 - - * wtf/MathExtras.h: - (clampToInteger): - (clampToPositiveInteger): - * wtf/ThreadingWin.cpp: - (WTF::absoluteTimeToWaitTimeoutInterval): - -2011-01-31 Oliver Hunt <oliver@apple.com> - - Reviewed by Sam Weinig. - - Bogus callframe during stack unwinding - https://bugs.webkit.org/show_bug.cgi?id=53454 + Remove DeprecatedPtr + https://bugs.webkit.org/show_bug.cgi?id=58718 - Trying to access a callframe's globalData after destroying its - ScopeChain is not a good thing. While we could access the - globalData directly through the (known valid) scopechain we're - holding on to, it feels fragile. Instead we push the valid - ScopeChain onto the callframe again to ensure that the callframe - itself remains valid. + As simple as it sounds. - * interpreter/Interpreter.cpp: - (JSC::Interpreter::unwindCallFrame): - -2011-01-31 Michael Saboff <msaboff@apple.com> - - Reviewed by Geoffrey Garen. + * heap/MarkStack.h: + (JSC::MarkStack::append): + * runtime/JSValue.h: + * runtime/WriteBarrier.h: - Potentially Unsafe HashSet of RuntimeObject* in RootObject definition - https://bugs.webkit.org/show_bug.cgi?id=53271 +2011-04-15 Gavin Barraclough <barraclough@apple.com> - Reapplying this change again. - Changed isValid() to use .get() as a result of change r77151. + Reviewed by Oliver Hunt. - Added new isValid() methods to check if a contained object in - a WeakGCMap is valid when using an unchecked iterator. + Add a simple tool to gather statistics on whether functions + are completed through the new or old JIT. - * runtime/WeakGCMap.h: - (JSC::WeakGCMap::isValid): + * dfg/DFGNode.h: + * dfg/DFGNonSpeculativeJIT.cpp: + (JSC::DFG::NonSpeculativeJIT::compile): + * dfg/DFGSpeculativeJIT.cpp: + (JSC::DFG::SpeculativeJIT::compile): + * jit/JIT.cpp: + (JSC::JIT::privateCompile): -2011-01-31 Oliver Hunt <oliver@apple.com> +2011-04-15 Oliver Hunt <oliver@apple.com> - Convert markstack to a slot visitor API - https://bugs.webkit.org/show_bug.cgi?id=53219 + GC allocate Structure + https://bugs.webkit.org/show_bug.cgi?id=58483 - rolling r77098, r77099, r77100, r77109, and - r77111 back in, along with a few more Qt fix attempts. + Rolling r83894 r83827 r83810 r83809 r83808 back in with + a workaround for the gcc bug seen by the gtk bots + * API/JSCallbackConstructor.cpp: + (JSC::JSCallbackConstructor::JSCallbackConstructor): + * API/JSCallbackConstructor.h: + (JSC::JSCallbackConstructor::createStructure): + * API/JSCallbackFunction.h: + (JSC::JSCallbackFunction::createStructure): * API/JSCallbackObject.h: - (JSC::JSCallbackObjectData::setPrivateProperty): - (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty): - (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty): - (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren): - (JSC::JSCallbackObject::setPrivateProperty): + (JSC::JSCallbackObject::createStructure): * API/JSCallbackObjectFunctions.h: - (JSC::::put): - (JSC::::staticFunctionGetter): - * API/JSObjectRef.cpp: - (JSObjectMakeConstructor): - (JSObjectSetPrivateProperty): - * API/JSWeakObjectMapRefInternal.h: + (JSC::::JSCallbackObject): + * API/JSContextRef.cpp: + * JavaScriptCore.JSVALUE32_64only.exp: + * JavaScriptCore.JSVALUE64only.exp: * JavaScriptCore.exp: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::~CodeBlock): + (JSC::CodeBlock::markStructures): (JSC::CodeBlock::markAggregate): * bytecode/CodeBlock.h: - (JSC::CodeBlock::globalObject): - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): - (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): - (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): - (JSC::BytecodeGenerator::findScopedProperty): - * debugger/Debugger.cpp: - (JSC::evaluateInGlobalCallFrame): + (JSC::MethodCallLinkInfo::setSeen): + (JSC::GlobalResolveInfo::GlobalResolveInfo): + * bytecode/Instruction.h: + (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set): + (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList): + (JSC::PolymorphicAccessStructureList::markAggregate): + (JSC::Instruction::Instruction): + * bytecode/StructureStubInfo.cpp: + (JSC::StructureStubInfo::deref): + (JSC::StructureStubInfo::markAggregate): + * bytecode/StructureStubInfo.h: + (JSC::StructureStubInfo::initGetByIdSelf): + (JSC::StructureStubInfo::initGetByIdProto): + (JSC::StructureStubInfo::initGetByIdChain): + (JSC::StructureStubInfo::initPutByIdTransition): + (JSC::StructureStubInfo::initPutByIdReplace): * debugger/DebuggerActivation.cpp: (JSC::DebuggerActivation::DebuggerActivation): - (JSC::DebuggerActivation::markChildren): * debugger/DebuggerActivation.h: - * debugger/DebuggerCallFrame.cpp: - (JSC::DebuggerCallFrame::evaluate): - * interpreter/CallFrame.h: - (JSC::ExecState::exception): + (JSC::DebuggerActivation::createStructure): + * heap/Handle.h: + * heap/MarkStack.cpp: + (JSC::MarkStack::markChildren): + (JSC::MarkStack::drain): + * heap/MarkedBlock.cpp: + (JSC::MarkedBlock::MarkedBlock): + (JSC::MarkedBlock::sweep): + * heap/Strong.h: + (JSC::Strong::Strong): + (JSC::Strong::set): * interpreter/Interpreter.cpp: - (JSC::Interpreter::resolve): - (JSC::Interpreter::resolveSkip): (JSC::Interpreter::resolveGlobal): (JSC::Interpreter::resolveGlobalDynamic): - (JSC::Interpreter::resolveBaseAndProperty): - (JSC::Interpreter::unwindCallFrame): - (JSC::appendSourceToError): - (JSC::Interpreter::execute): + (JSC::Interpreter::tryCachePutByID): + (JSC::Interpreter::uncachePutByID): (JSC::Interpreter::tryCacheGetByID): + (JSC::Interpreter::uncacheGetByID): (JSC::Interpreter::privateExecute): + * jit/JIT.h: + * jit/JITPropertyAccess.cpp: + (JSC::JIT::privateCompilePutByIdTransition): + (JSC::JIT::patchMethodCallProto): + (JSC::JIT::privateCompileGetByIdProto): + (JSC::JIT::privateCompileGetByIdSelfList): + (JSC::JIT::privateCompileGetByIdProtoList): + (JSC::JIT::privateCompileGetByIdChainList): + (JSC::JIT::privateCompileGetByIdChain): + * jit/JITPropertyAccess32_64.cpp: + (JSC::JIT::privateCompilePutByIdTransition): + (JSC::JIT::patchMethodCallProto): + (JSC::JIT::privateCompileGetByIdProto): + (JSC::JIT::privateCompileGetByIdSelfList): + (JSC::JIT::privateCompileGetByIdProtoList): + (JSC::JIT::privateCompileGetByIdChainList): + (JSC::JIT::privateCompileGetByIdChain): * jit/JITStubs.cpp: + (JSC::JITThunks::tryCachePutByID): (JSC::JITThunks::tryCacheGetByID): (JSC::DEFINE_STUB_FUNCTION): + (JSC::getPolymorphicAccessStructureListSlot): + * jit/JSInterfaceJIT.h: + (JSC::JSInterfaceJIT::storePtrWithWriteBarrier): * jsc.cpp: - (GlobalObject::GlobalObject): - * runtime/ArgList.cpp: - (JSC::MarkedArgumentBuffer::markLists): - * runtime/Arguments.cpp: - (JSC::Arguments::markChildren): - (JSC::Arguments::getOwnPropertySlot): - (JSC::Arguments::getOwnPropertyDescriptor): - (JSC::Arguments::put): + (cleanupGlobalData): * runtime/Arguments.h: - (JSC::Arguments::setActivation): + (JSC::Arguments::createStructure): (JSC::Arguments::Arguments): + (JSC::JSActivation::copyRegisters): * runtime/ArrayConstructor.cpp: (JSC::ArrayConstructor::ArrayConstructor): (JSC::constructArrayWithSizeQuirk): + * runtime/ArrayConstructor.h: * runtime/ArrayPrototype.cpp: + (JSC::ArrayPrototype::ArrayPrototype): (JSC::arrayProtoFuncSplice): + * runtime/ArrayPrototype.h: + (JSC::ArrayPrototype::createStructure): * runtime/BatchedTransitionOptimizer.h: (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): - (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer): * runtime/BooleanConstructor.cpp: (JSC::BooleanConstructor::BooleanConstructor): - (JSC::constructBoolean): - (JSC::constructBooleanFromImmediateBoolean): + * runtime/BooleanConstructor.h: + * runtime/BooleanObject.cpp: + (JSC::BooleanObject::BooleanObject): + * runtime/BooleanObject.h: + (JSC::BooleanObject::createStructure): * runtime/BooleanPrototype.cpp: (JSC::BooleanPrototype::BooleanPrototype): - * runtime/ConservativeSet.cpp: - (JSC::ConservativeSet::grow): - * runtime/ConservativeSet.h: - (JSC::ConservativeSet::~ConservativeSet): - (JSC::ConservativeSet::mark): + * runtime/BooleanPrototype.h: * runtime/DateConstructor.cpp: (JSC::DateConstructor::DateConstructor): + * runtime/DateConstructor.h: * runtime/DateInstance.cpp: (JSC::DateInstance::DateInstance): + * runtime/DateInstance.h: + (JSC::DateInstance::createStructure): * runtime/DatePrototype.cpp: - (JSC::dateProtoFuncSetTime): - (JSC::setNewValueFromTimeArgs): - (JSC::setNewValueFromDateArgs): - (JSC::dateProtoFuncSetYear): + (JSC::DatePrototype::DatePrototype): + * runtime/DatePrototype.h: + (JSC::DatePrototype::createStructure): + * runtime/Error.cpp: + (JSC::StrictModeTypeErrorFunction::StrictModeTypeErrorFunction): * runtime/ErrorConstructor.cpp: (JSC::ErrorConstructor::ErrorConstructor): + * runtime/ErrorConstructor.h: * runtime/ErrorInstance.cpp: (JSC::ErrorInstance::ErrorInstance): + (JSC::ErrorInstance::create): + * runtime/ErrorInstance.h: + (JSC::ErrorInstance::createStructure): * runtime/ErrorPrototype.cpp: (JSC::ErrorPrototype::ErrorPrototype): + * runtime/ErrorPrototype.h: + * runtime/ExceptionHelpers.cpp: + (JSC::InterruptedExecutionError::InterruptedExecutionError): + (JSC::TerminatedExecutionError::TerminatedExecutionError): + * runtime/Executable.cpp: + * runtime/Executable.h: + (JSC::ExecutableBase::ExecutableBase): + (JSC::ExecutableBase::createStructure): + (JSC::NativeExecutable::createStructure): + (JSC::NativeExecutable::NativeExecutable): + (JSC::ScriptExecutable::ScriptExecutable): + (JSC::EvalExecutable::createStructure): + (JSC::ProgramExecutable::createStructure): + (JSC::FunctionExecutable::createStructure): * runtime/FunctionConstructor.cpp: (JSC::FunctionConstructor::FunctionConstructor): + * runtime/FunctionConstructor.h: * runtime/FunctionPrototype.cpp: (JSC::FunctionPrototype::FunctionPrototype): - * runtime/GetterSetter.cpp: - (JSC::GetterSetter::markChildren): + * runtime/FunctionPrototype.h: + (JSC::FunctionPrototype::createStructure): * runtime/GetterSetter.h: (JSC::GetterSetter::GetterSetter): - (JSC::GetterSetter::getter): - (JSC::GetterSetter::setGetter): - (JSC::GetterSetter::setter): - (JSC::GetterSetter::setSetter): - * runtime/GlobalEvalFunction.cpp: - (JSC::GlobalEvalFunction::GlobalEvalFunction): - (JSC::GlobalEvalFunction::markChildren): - * runtime/GlobalEvalFunction.h: - (JSC::GlobalEvalFunction::cachedGlobalObject): - * runtime/Heap.cpp: - (JSC::Heap::markProtectedObjects): - (JSC::Heap::markTempSortVectors): - (JSC::Heap::markRoots): + (JSC::GetterSetter::createStructure): + * runtime/InitializeThreading.cpp: + (JSC::initializeThreadingOnce): * runtime/InternalFunction.cpp: (JSC::InternalFunction::InternalFunction): + * runtime/InternalFunction.h: + (JSC::InternalFunction::createStructure): * runtime/JSAPIValueWrapper.h: - (JSC::JSAPIValueWrapper::value): + (JSC::JSAPIValueWrapper::createStructure): (JSC::JSAPIValueWrapper::JSAPIValueWrapper): * runtime/JSActivation.cpp: - (JSC::JSActivation::markChildren): - (JSC::JSActivation::put): + (JSC::JSActivation::JSActivation): + * runtime/JSActivation.h: + (JSC::JSActivation::createStructure): * runtime/JSArray.cpp: (JSC::JSArray::JSArray): - (JSC::JSArray::getOwnPropertySlot): - (JSC::JSArray::getOwnPropertyDescriptor): - (JSC::JSArray::put): - (JSC::JSArray::putSlowCase): - (JSC::JSArray::deleteProperty): - (JSC::JSArray::increaseVectorLength): - (JSC::JSArray::setLength): - (JSC::JSArray::pop): - (JSC::JSArray::push): - (JSC::JSArray::unshiftCount): - (JSC::JSArray::sort): - (JSC::JSArray::fillArgList): - (JSC::JSArray::copyToRegisters): - (JSC::JSArray::compactForSorting): * runtime/JSArray.h: - (JSC::JSArray::getIndex): - (JSC::JSArray::setIndex): - (JSC::JSArray::uncheckedSetIndex): - (JSC::JSArray::markChildrenDirect): + (JSC::JSArray::createStructure): * runtime/JSByteArray.cpp: (JSC::JSByteArray::JSByteArray): + (JSC::JSByteArray::createStructure): + * runtime/JSByteArray.h: + (JSC::JSByteArray::JSByteArray): + * runtime/JSCell.cpp: + (JSC::isZombie): * runtime/JSCell.h: - (JSC::JSCell::MarkStack::append): - (JSC::JSCell::MarkStack::internalAppend): - (JSC::JSCell::MarkStack::deprecatedAppend): + (JSC::JSCell::JSCell::JSCell): + (JSC::JSCell::JSCell::addressOfStructure): + (JSC::JSCell::JSCell::structure): + (JSC::JSCell::JSCell::markChildren): + (JSC::JSCell::JSValue::isZombie): * runtime/JSFunction.cpp: (JSC::JSFunction::JSFunction): - (JSC::JSFunction::getOwnPropertySlot): + * runtime/JSFunction.h: + (JSC::JSFunction::createStructure): + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::storeVPtrs): + (JSC::JSGlobalData::JSGlobalData): + (JSC::JSGlobalData::clearBuiltinStructures): + (JSC::JSGlobalData::createLeaked): * runtime/JSGlobalData.h: + (JSC::allocateGlobalHandle): * runtime/JSGlobalObject.cpp: - (JSC::markIfNeeded): (JSC::JSGlobalObject::reset): - (JSC::JSGlobalObject::resetPrototype): (JSC::JSGlobalObject::markChildren): + (JSC::JSGlobalObject::copyGlobalsFrom): * runtime/JSGlobalObject.h: - (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): - (JSC::JSGlobalObject::regExpConstructor): - (JSC::JSGlobalObject::errorConstructor): - (JSC::JSGlobalObject::evalErrorConstructor): - (JSC::JSGlobalObject::rangeErrorConstructor): - (JSC::JSGlobalObject::referenceErrorConstructor): - (JSC::JSGlobalObject::syntaxErrorConstructor): - (JSC::JSGlobalObject::typeErrorConstructor): - (JSC::JSGlobalObject::URIErrorConstructor): - (JSC::JSGlobalObject::evalFunction): - (JSC::JSGlobalObject::objectPrototype): - (JSC::JSGlobalObject::functionPrototype): - (JSC::JSGlobalObject::arrayPrototype): - (JSC::JSGlobalObject::booleanPrototype): - (JSC::JSGlobalObject::stringPrototype): - (JSC::JSGlobalObject::numberPrototype): - (JSC::JSGlobalObject::datePrototype): - (JSC::JSGlobalObject::regExpPrototype): - (JSC::JSGlobalObject::methodCallDummy): - (JSC::Structure::prototypeForLookup): - (JSC::constructArray): + (JSC::JSGlobalObject::JSGlobalObject): + (JSC::JSGlobalObject::createStructure): + (JSC::Structure::prototypeChain): + (JSC::Structure::isValid): + (JSC::constructEmptyArray): + * runtime/JSNotAnObject.h: + (JSC::JSNotAnObject::JSNotAnObject): + (JSC::JSNotAnObject::createStructure): * runtime/JSONObject.cpp: - (JSC::Stringifier::Holder::object): - (JSC::Stringifier::Holder::objectSlot): - (JSC::Stringifier::markAggregate): - (JSC::Stringifier::stringify): - (JSC::Stringifier::Holder::appendNextProperty): - (JSC::Walker::callReviver): - (JSC::Walker::walk): + (JSC::JSONObject::JSONObject): + * runtime/JSONObject.h: + (JSC::JSONObject::createStructure): * runtime/JSObject.cpp: (JSC::JSObject::defineGetter): (JSC::JSObject::defineSetter): + (JSC::JSObject::seal): + (JSC::JSObject::freeze): + (JSC::JSObject::preventExtensions): (JSC::JSObject::removeDirect): - (JSC::JSObject::putDirectFunction): - (JSC::JSObject::putDirectFunctionWithoutTransition): - (JSC::putDescriptor): - (JSC::JSObject::defineOwnProperty): + (JSC::JSObject::createInheritorID): * runtime/JSObject.h: - (JSC::JSObject::getDirectOffset): - (JSC::JSObject::putDirectOffset): - (JSC::JSObject::putUndefinedAtDirectOffset): - (JSC::JSObject::flattenDictionaryObject): + (JSC::JSObject::createStructure): + (JSC::JSObject::JSObject): + (JSC::JSNonFinalObject::createStructure): + (JSC::JSNonFinalObject::JSNonFinalObject): + (JSC::JSFinalObject::create): + (JSC::JSFinalObject::createStructure): + (JSC::JSFinalObject::JSFinalObject): + (JSC::constructEmptyObject): + (JSC::createEmptyObjectStructure): + (JSC::JSObject::~JSObject): + (JSC::JSObject::setPrototype): + (JSC::JSObject::setStructure): + (JSC::JSObject::inheritorID): (JSC::JSObject::putDirectInternal): - (JSC::JSObject::putDirect): - (JSC::JSObject::putDirectFunction): - (JSC::JSObject::putDirectWithoutTransition): - (JSC::JSObject::putDirectFunctionWithoutTransition): - (JSC::JSValue::putDirect): - (JSC::JSObject::allocatePropertyStorageInline): + (JSC::JSObject::transitionTo): (JSC::JSObject::markChildrenDirect): + * runtime/JSObjectWithGlobalObject.cpp: + (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject): + * runtime/JSObjectWithGlobalObject.h: + (JSC::JSObjectWithGlobalObject::createStructure): + (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject): * runtime/JSPropertyNameIterator.cpp: (JSC::JSPropertyNameIterator::JSPropertyNameIterator): + (JSC::JSPropertyNameIterator::create): (JSC::JSPropertyNameIterator::get): * runtime/JSPropertyNameIterator.h: - * runtime/JSStaticScopeObject.cpp: - (JSC::JSStaticScopeObject::markChildren): - * runtime/JSString.cpp: - (JSC::StringObject::create): + (JSC::JSPropertyNameIterator::createStructure): + (JSC::JSPropertyNameIterator::setCachedStructure): + (JSC::Structure::setEnumerationCache): + * runtime/JSStaticScopeObject.h: + (JSC::JSStaticScopeObject::JSStaticScopeObject): + (JSC::JSStaticScopeObject::createStructure): + * runtime/JSString.h: + (JSC::RopeBuilder::JSString): + (JSC::RopeBuilder::createStructure): + * runtime/JSType.h: + * runtime/JSTypeInfo.h: + (JSC::TypeInfo::TypeInfo): * runtime/JSValue.h: - * runtime/JSWrapperObject.cpp: - (JSC::JSWrapperObject::markChildren): + * runtime/JSVariableObject.h: + (JSC::JSVariableObject::createStructure): + (JSC::JSVariableObject::JSVariableObject): + (JSC::JSVariableObject::copyRegisterArray): * runtime/JSWrapperObject.h: - (JSC::JSWrapperObject::internalValue): - (JSC::JSWrapperObject::setInternalValue): - * runtime/LiteralParser.cpp: - (JSC::LiteralParser::parse): - * runtime/Lookup.cpp: - (JSC::setUpStaticFunctionSlot): - * runtime/Lookup.h: - (JSC::lookupPut): - * runtime/MarkStack.h: - (JSC::MarkStack::MarkStack): - (JSC::MarkStack::deprecatedAppendValues): - (JSC::MarkStack::appendValues): + (JSC::JSWrapperObject::createStructure): + (JSC::JSWrapperObject::JSWrapperObject): + * runtime/JSZombie.cpp: + * runtime/JSZombie.h: + (JSC::JSZombie::JSZombie): + (JSC::JSZombie::createStructure): * runtime/MathObject.cpp: (JSC::MathObject::MathObject): + * runtime/MathObject.h: + (JSC::MathObject::createStructure): * runtime/NativeErrorConstructor.cpp: (JSC::NativeErrorConstructor::NativeErrorConstructor): + (JSC::NativeErrorConstructor::markChildren): + (JSC::constructWithNativeErrorConstructor): + * runtime/NativeErrorConstructor.h: + (JSC::NativeErrorConstructor::createStructure): * runtime/NativeErrorPrototype.cpp: (JSC::NativeErrorPrototype::NativeErrorPrototype): + * runtime/NativeErrorPrototype.h: * runtime/NumberConstructor.cpp: (JSC::NumberConstructor::NumberConstructor): - (JSC::constructWithNumberConstructor): + * runtime/NumberConstructor.h: + (JSC::NumberConstructor::createStructure): * runtime/NumberObject.cpp: - (JSC::constructNumber): + (JSC::NumberObject::NumberObject): + * runtime/NumberObject.h: + (JSC::NumberObject::createStructure): * runtime/NumberPrototype.cpp: (JSC::NumberPrototype::NumberPrototype): + * runtime/NumberPrototype.h: * runtime/ObjectConstructor.cpp: (JSC::ObjectConstructor::ObjectConstructor): - (JSC::objectConstructorGetOwnPropertyDescriptor): - * runtime/Operations.h: - (JSC::normalizePrototypeChain): - (JSC::resolveBase): - * runtime/PrototypeFunction.cpp: - (JSC::PrototypeFunction::PrototypeFunction): - * runtime/PutPropertySlot.h: - (JSC::PutPropertySlot::setExistingProperty): - (JSC::PutPropertySlot::setNewProperty): - (JSC::PutPropertySlot::base): + * runtime/ObjectConstructor.h: + (JSC::ObjectConstructor::createStructure): + * runtime/ObjectPrototype.cpp: + (JSC::ObjectPrototype::ObjectPrototype): + * runtime/ObjectPrototype.h: + * runtime/PropertyMapHashTable.h: + (JSC::PropertyTable::PropertyTable): * runtime/RegExpConstructor.cpp: (JSC::RegExpConstructor::RegExpConstructor): - * runtime/ScopeChain.cpp: - (JSC::ScopeChainNode::print): + (JSC::RegExpMatchesArray::RegExpMatchesArray): + * runtime/RegExpConstructor.h: + (JSC::RegExpConstructor::createStructure): + * runtime/RegExpObject.cpp: + (JSC::RegExpObject::RegExpObject): + * runtime/RegExpObject.h: + (JSC::RegExpObject::createStructure): + * runtime/RegExpPrototype.cpp: + (JSC::RegExpPrototype::RegExpPrototype): + * runtime/RegExpPrototype.h: * runtime/ScopeChain.h: - (JSC::ScopeChainNode::~ScopeChainNode): - (JSC::ScopeChainIterator::operator*): - (JSC::ScopeChainIterator::operator->): - (JSC::ScopeChain::top): - * runtime/ScopeChainMark.h: - (JSC::ScopeChain::markAggregate): - * runtime/SmallStrings.cpp: - (JSC::isMarked): - (JSC::SmallStrings::markChildren): - * runtime/SmallStrings.h: - (JSC::SmallStrings::emptyString): - (JSC::SmallStrings::singleCharacterString): - (JSC::SmallStrings::singleCharacterStrings): + (JSC::ScopeChainNode::ScopeChainNode): + (JSC::ScopeChainNode::createStructure): + * runtime/StrictEvalActivation.cpp: + (JSC::StrictEvalActivation::StrictEvalActivation): * runtime/StringConstructor.cpp: (JSC::StringConstructor::StringConstructor): + * runtime/StringConstructor.h: * runtime/StringObject.cpp: (JSC::StringObject::StringObject): * runtime/StringObject.h: + (JSC::StringObject::createStructure): + * runtime/StringObjectThatMasqueradesAsUndefined.h: + (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined): + (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): * runtime/StringPrototype.cpp: (JSC::StringPrototype::StringPrototype): + * runtime/StringPrototype.h: + (JSC::StringPrototype::createStructure): * runtime/Structure.cpp: + (JSC::StructureTransitionTable::remove): + (JSC::StructureTransitionTable::add): (JSC::Structure::Structure): + (JSC::Structure::~Structure): + (JSC::Structure::materializePropertyMap): + (JSC::Structure::addPropertyTransitionToExistingStructure): (JSC::Structure::addPropertyTransition): + (JSC::Structure::removePropertyTransition): + (JSC::Structure::changePrototypeTransition): + (JSC::Structure::despecifyFunctionTransition): + (JSC::Structure::getterSetterTransition): (JSC::Structure::toDictionaryTransition): + (JSC::Structure::toCacheableDictionaryTransition): + (JSC::Structure::toUncacheableDictionaryTransition): + (JSC::Structure::sealTransition): + (JSC::Structure::freezeTransition): + (JSC::Structure::preventExtensionsTransition): (JSC::Structure::flattenDictionaryStructure): + (JSC::Structure::copyPropertyTable): + (JSC::Structure::put): + (JSC::Structure::markChildren): * runtime/Structure.h: - (JSC::Structure::storedPrototype): - (JSC::Structure::storedPrototypeSlot): + (JSC::Structure::create): + (JSC::Structure::setPrototypeWithoutTransition): + (JSC::Structure::createStructure): + (JSC::JSCell::createDummyStructure): + (JSC::StructureTransitionTable::keyForWeakGCMapFinalizer): + * runtime/StructureChain.cpp: + (JSC::StructureChain::StructureChain): + (JSC::StructureChain::markChildren): + * runtime/StructureChain.h: + (JSC::StructureChain::create): + (JSC::StructureChain::head): + (JSC::StructureChain::createStructure): + * runtime/StructureTransitionTable.h: + (JSC::StructureTransitionTable::WeakGCMapFinalizerCallback::finalizerContextFor): + (JSC::StructureTransitionTable::WeakGCMapFinalizerCallback::keyForFinalizer): + (JSC::StructureTransitionTable::~StructureTransitionTable): + (JSC::StructureTransitionTable::slot): + (JSC::StructureTransitionTable::setMap): + (JSC::StructureTransitionTable::singleTransition): + (JSC::StructureTransitionTable::clearSingleTransition): + (JSC::StructureTransitionTable::setSingleTransition): * runtime/WeakGCMap.h: - (JSC::WeakGCMap::uncheckedGet): - (JSC::WeakGCMap::uncheckedGetSlot): - (JSC::::get): - (JSC::::take): - (JSC::::set): - (JSC::::uncheckedRemove): - * runtime/WriteBarrier.h: Added. - (JSC::DeprecatedPtr::DeprecatedPtr): - (JSC::DeprecatedPtr::get): - (JSC::DeprecatedPtr::operator*): - (JSC::DeprecatedPtr::operator->): - (JSC::DeprecatedPtr::slot): - (JSC::DeprecatedPtr::operator UnspecifiedBoolType*): - (JSC::DeprecatedPtr::operator!): + (JSC::DefaultWeakGCMapFinalizerCallback::finalizerContextFor): + (JSC::DefaultWeakGCMapFinalizerCallback::keyForFinalizer): + (JSC::WeakGCMap::contains): + (JSC::WeakGCMap::find): + (JSC::WeakGCMap::remove): + (JSC::WeakGCMap::add): + (JSC::WeakGCMap::set): + (JSC::WeakGCMap::finalize): + * runtime/WriteBarrier.h: + (JSC::writeBarrier): (JSC::WriteBarrierBase::set): - (JSC::WriteBarrierBase::get): (JSC::WriteBarrierBase::operator*): (JSC::WriteBarrierBase::operator->): - (JSC::WriteBarrierBase::clear): - (JSC::WriteBarrierBase::slot): - (JSC::WriteBarrierBase::operator UnspecifiedBoolType*): - (JSC::WriteBarrierBase::operator!): - (JSC::WriteBarrier::WriteBarrier): - (JSC::operator==): - -2011-01-31 Dan Winship <danw@gnome.org> + (JSC::WriteBarrierBase::setWithoutWriteBarrier): - Reviewed by Gustavo Noronha Silva. +2011-04-15 Fridrich Strba <fridrich.strba@bluewin.ch> - wss (websockets ssl) support for gtk via new gio TLS support - https://bugs.webkit.org/show_bug.cgi?id=50344 + Reviewed by Gavin Barraclough. - Add a GPollableOutputStream typedef for TLS WebSockets support + Correctly prefix symbols. Since gcc 4.5.0, Windows x64 symbols + are not prefixed by underscore anymore. This is consistent with + what MSVC does. + https://bugs.webkit.org/show_bug.cgi?id=58573 - * wtf/gobject/GTypedefs.h: + * jit/JITStubs.cpp: -2011-01-31 Gavin Barraclough <barraclough@apple.com> +2011-04-15 Gavin Barraclough <barraclough@apple.com> Reviewed by Geoff Garen. - https://bugs.webkit.org/show_bug.cgi?id=53352 - Heavy external fragmentation in FixedVMPoolAllocator can lead to a CRASH(). - - The FixedVMPoolAllocator currently uses a best fix policy - - switch to first fit, this is less prone to external fragmentation. - - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::AllocationTableSizeClass::AllocationTableSizeClass): - (JSC::AllocationTableSizeClass::blockSize): - (JSC::AllocationTableSizeClass::blockCount): - (JSC::AllocationTableSizeClass::blockAlignment): - (JSC::AllocationTableSizeClass::size): - (JSC::AllocationTableLeaf::AllocationTableLeaf): - (JSC::AllocationTableLeaf::~AllocationTableLeaf): - (JSC::AllocationTableLeaf::allocate): - (JSC::AllocationTableLeaf::free): - (JSC::AllocationTableLeaf::isEmpty): - (JSC::AllocationTableLeaf::isFull): - (JSC::AllocationTableLeaf::size): - (JSC::AllocationTableLeaf::classForSize): - (JSC::AllocationTableLeaf::dump): - (JSC::LazyAllocationTable::LazyAllocationTable): - (JSC::LazyAllocationTable::~LazyAllocationTable): - (JSC::LazyAllocationTable::allocate): - (JSC::LazyAllocationTable::free): - (JSC::LazyAllocationTable::isEmpty): - (JSC::LazyAllocationTable::isFull): - (JSC::LazyAllocationTable::size): - (JSC::LazyAllocationTable::dump): - (JSC::LazyAllocationTable::classForSize): - (JSC::AllocationTableDirectory::AllocationTableDirectory): - (JSC::AllocationTableDirectory::~AllocationTableDirectory): - (JSC::AllocationTableDirectory::allocate): - (JSC::AllocationTableDirectory::free): - (JSC::AllocationTableDirectory::isEmpty): - (JSC::AllocationTableDirectory::isFull): - (JSC::AllocationTableDirectory::size): - (JSC::AllocationTableDirectory::classForSize): - (JSC::AllocationTableDirectory::dump): - (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): - (JSC::FixedVMPoolAllocator::alloc): - (JSC::FixedVMPoolAllocator::free): - (JSC::FixedVMPoolAllocator::allocated): - (JSC::FixedVMPoolAllocator::isValid): - (JSC::FixedVMPoolAllocator::classForSize): - (JSC::FixedVMPoolAllocator::offsetToPointer): - (JSC::FixedVMPoolAllocator::pointerToOffset): - (JSC::ExecutableAllocator::committedByteCount): - (JSC::ExecutableAllocator::isValid): - (JSC::ExecutableAllocator::underMemoryPressure): - (JSC::ExecutablePool::systemAlloc): - (JSC::ExecutablePool::systemRelease): - * wtf/PageReservation.h: - (WTF::PageReservation::PageReservation): - (WTF::PageReservation::commit): - (WTF::PageReservation::decommit): - (WTF::PageReservation::committed): - -2011-01-31 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r76969. - http://trac.webkit.org/changeset/76969 - https://bugs.webkit.org/show_bug.cgi?id=53418 - - "It is causing crashes in GTK+ and Leopard bots" (Requested by - alexg__ on #webkit). - - * runtime/WeakGCMap.h: - -2011-01-30 Csaba Osztrogonác <ossy@webkit.org> + Bug 58705 - DFG JIT Add support for flow control (branch, jump). + + Add support for control flow by breaking the CodeBlock up into multiple + basic blocks, generating code for each basic block in turn through the + speculative JIT & then the non-speculative JIT. + + * dfg/DFGByteCodeParser.cpp: + (JSC::DFG::ByteCodeParser::setTemporary): + (JSC::DFG::ByteCodeParser::addToGraph): + (JSC::DFG::ByteCodeParser::parseBlock): + (JSC::DFG::ByteCodeParser::parse): + * dfg/DFGGraph.cpp: + (JSC::DFG::Graph::dump): + * dfg/DFGGraph.h: + (JSC::DFG::BasicBlock::BasicBlock): + (JSC::DFG::BasicBlock::getBytecodeOffset): + (JSC::DFG::Graph::blockIndexForBytecodeOffset): + * dfg/DFGJITCodeGenerator.h: + (JSC::DFG::JITCodeGenerator::JITCodeGenerator): + (JSC::DFG::JITCodeGenerator::addBranch): + (JSC::DFG::JITCodeGenerator::linkBranches): + (JSC::DFG::JITCodeGenerator::BranchRecord::BranchRecord): + * dfg/DFGNode.h: + (JSC::DFG::Node::Node): + (JSC::DFG::Node::isJump): + (JSC::DFG::Node::isBranch): + (JSC::DFG::Node::takenBytecodeOffset): + (JSC::DFG::Node::notTakenBytecodeOffset): + * dfg/DFGNonSpeculativeJIT.cpp: + (JSC::DFG::NonSpeculativeJIT::compile): + * dfg/DFGNonSpeculativeJIT.h: + * dfg/DFGSpeculativeJIT.cpp: + (JSC::DFG::SpeculativeJIT::compile): + * dfg/DFGSpeculativeJIT.h: + +2011-04-15 Gavin Barraclough <barraclough@apple.com> - Unreviewed, rolling out r77098, r77099, r77100, r77109, and - r77111. - http://trac.webkit.org/changeset/77098 - http://trac.webkit.org/changeset/77099 - http://trac.webkit.org/changeset/77100 - http://trac.webkit.org/changeset/77109 - http://trac.webkit.org/changeset/77111 - https://bugs.webkit.org/show_bug.cgi?id=53219 + Reviewed by Geoff Garen. - Qt build is broken + Bug 58701 - DFG JIT - add GetLocal/SetLocal nodes + + Use these for both access to arguments & local variables, adds ability + to set locals, such that values will persist between basic blocks. + + * dfg/DFGByteCodeParser.cpp: + (JSC::DFG::ByteCodeParser::ByteCodeParser): + (JSC::DFG::ByteCodeParser::get): + (JSC::DFG::ByteCodeParser::set): + (JSC::DFG::ByteCodeParser::getVariable): + (JSC::DFG::ByteCodeParser::setVariable): + (JSC::DFG::ByteCodeParser::getArgument): + (JSC::DFG::ByteCodeParser::setArgument): + (JSC::DFG::ByteCodeParser::getThis): + (JSC::DFG::ByteCodeParser::setThis): + (JSC::DFG::ByteCodeParser::VariableRecord::VariableRecord): + (JSC::DFG::ByteCodeParser::parseBlock): + * dfg/DFGGraph.cpp: + (JSC::DFG::Graph::dump): + (JSC::DFG::Graph::derefChildren): + * dfg/DFGGraph.h: + (JSC::DFG::Graph::ref): + (JSC::DFG::Graph::deref): + * dfg/DFGNode.h: + (JSC::DFG::Node::hasLocal): + (JSC::DFG::Node::local): + * dfg/DFGNonSpeculativeJIT.cpp: + (JSC::DFG::NonSpeculativeJIT::compile): + * dfg/DFGSpeculativeJIT.cpp: + (JSC::DFG::SpeculativeJIT::compile): + +2011-04-15 Gavin Barraclough <barraclough@apple.com> - * API/JSCallbackObject.h: - (JSC::JSCallbackObjectData::setPrivateProperty): - (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty): - (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty): - (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren): - (JSC::JSCallbackObject::setPrivateProperty): - * API/JSCallbackObjectFunctions.h: - (JSC::::put): - (JSC::::staticFunctionGetter): - * API/JSObjectRef.cpp: - (JSObjectMakeConstructor): - (JSObjectSetPrivateProperty): - * API/JSWeakObjectMapRefInternal.h: - * JavaScriptCore.exp: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * JavaScriptCore.xcodeproj/project.pbxproj: - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::markAggregate): - * bytecode/CodeBlock.h: - (JSC::CodeBlock::globalObject): - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): - (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): - (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): - (JSC::BytecodeGenerator::findScopedProperty): - * debugger/Debugger.cpp: - (JSC::evaluateInGlobalCallFrame): - * debugger/DebuggerActivation.cpp: - (JSC::DebuggerActivation::DebuggerActivation): - (JSC::DebuggerActivation::markChildren): - * debugger/DebuggerActivation.h: - * debugger/DebuggerCallFrame.cpp: - (JSC::DebuggerCallFrame::evaluate): - * interpreter/CallFrame.h: - (JSC::ExecState::exception): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::resolve): - (JSC::Interpreter::resolveSkip): - (JSC::Interpreter::resolveGlobal): - (JSC::Interpreter::resolveGlobalDynamic): - (JSC::Interpreter::resolveBaseAndProperty): - (JSC::Interpreter::unwindCallFrame): - (JSC::appendSourceToError): - (JSC::Interpreter::execute): - (JSC::Interpreter::tryCacheGetByID): - (JSC::Interpreter::privateExecute): - * jit/JITStubs.cpp: - (JSC::JITThunks::tryCacheGetByID): - (JSC::DEFINE_STUB_FUNCTION): - * jsc.cpp: - (GlobalObject::GlobalObject): - * runtime/ArgList.cpp: - (JSC::MarkedArgumentBuffer::markLists): - * runtime/Arguments.cpp: - (JSC::Arguments::markChildren): - (JSC::Arguments::getOwnPropertySlot): - (JSC::Arguments::getOwnPropertyDescriptor): - (JSC::Arguments::put): - * runtime/Arguments.h: - (JSC::Arguments::setActivation): - (JSC::Arguments::Arguments): - * runtime/ArrayConstructor.cpp: - (JSC::ArrayConstructor::ArrayConstructor): - (JSC::constructArrayWithSizeQuirk): - * runtime/ArrayPrototype.cpp: - (JSC::arrayProtoFuncSplice): - * runtime/BatchedTransitionOptimizer.h: - (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): - (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer): - * runtime/BooleanConstructor.cpp: - (JSC::BooleanConstructor::BooleanConstructor): - (JSC::constructBoolean): - (JSC::constructBooleanFromImmediateBoolean): - * runtime/BooleanPrototype.cpp: - (JSC::BooleanPrototype::BooleanPrototype): - * runtime/ConservativeSet.cpp: - (JSC::ConservativeSet::grow): - * runtime/ConservativeSet.h: - (JSC::ConservativeSet::~ConservativeSet): - (JSC::ConservativeSet::mark): - * runtime/DateConstructor.cpp: - (JSC::DateConstructor::DateConstructor): - * runtime/DateInstance.cpp: - (JSC::DateInstance::DateInstance): - * runtime/DatePrototype.cpp: - (JSC::dateProtoFuncSetTime): - (JSC::setNewValueFromTimeArgs): - (JSC::setNewValueFromDateArgs): - (JSC::dateProtoFuncSetYear): - * runtime/ErrorConstructor.cpp: - (JSC::ErrorConstructor::ErrorConstructor): - * runtime/ErrorInstance.cpp: - (JSC::ErrorInstance::ErrorInstance): - * runtime/ErrorPrototype.cpp: - (JSC::ErrorPrototype::ErrorPrototype): - * runtime/FunctionConstructor.cpp: - (JSC::FunctionConstructor::FunctionConstructor): - * runtime/FunctionPrototype.cpp: - (JSC::FunctionPrototype::FunctionPrototype): - * runtime/GetterSetter.cpp: - (JSC::GetterSetter::markChildren): - * runtime/GetterSetter.h: - (JSC::GetterSetter::GetterSetter): - (JSC::GetterSetter::getter): - (JSC::GetterSetter::setGetter): - (JSC::GetterSetter::setter): - (JSC::GetterSetter::setSetter): - * runtime/GlobalEvalFunction.cpp: - (JSC::GlobalEvalFunction::GlobalEvalFunction): - (JSC::GlobalEvalFunction::markChildren): - * runtime/GlobalEvalFunction.h: - (JSC::GlobalEvalFunction::cachedGlobalObject): - * runtime/Heap.cpp: - (JSC::Heap::markProtectedObjects): - (JSC::Heap::markTempSortVectors): - (JSC::Heap::markRoots): - * runtime/InternalFunction.cpp: - (JSC::InternalFunction::InternalFunction): - * runtime/JSAPIValueWrapper.h: - (JSC::JSAPIValueWrapper::value): - (JSC::JSAPIValueWrapper::JSAPIValueWrapper): - * runtime/JSActivation.cpp: - (JSC::JSActivation::markChildren): - (JSC::JSActivation::put): - * runtime/JSArray.cpp: - (JSC::JSArray::JSArray): - (JSC::JSArray::getOwnPropertySlot): - (JSC::JSArray::getOwnPropertyDescriptor): - (JSC::JSArray::put): - (JSC::JSArray::putSlowCase): - (JSC::JSArray::deleteProperty): - (JSC::JSArray::increaseVectorLength): - (JSC::JSArray::setLength): - (JSC::JSArray::pop): - (JSC::JSArray::push): - (JSC::JSArray::unshiftCount): - (JSC::JSArray::sort): - (JSC::JSArray::fillArgList): - (JSC::JSArray::copyToRegisters): - (JSC::JSArray::compactForSorting): - * runtime/JSArray.h: - (JSC::JSArray::getIndex): - (JSC::JSArray::setIndex): - (JSC::JSArray::uncheckedSetIndex): - (JSC::JSArray::markChildrenDirect): - * runtime/JSByteArray.cpp: - (JSC::JSByteArray::JSByteArray): - * runtime/JSCell.h: - (JSC::JSCell::JSValue::toThisObject): - (JSC::JSCell::MarkStack::append): - * runtime/JSFunction.cpp: - (JSC::JSFunction::JSFunction): - (JSC::JSFunction::getOwnPropertySlot): - * runtime/JSGlobalData.h: - * runtime/JSGlobalObject.cpp: - (JSC::markIfNeeded): - (JSC::JSGlobalObject::reset): - (JSC::JSGlobalObject::resetPrototype): - (JSC::JSGlobalObject::markChildren): - * runtime/JSGlobalObject.h: - (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): - (JSC::JSGlobalObject::regExpConstructor): - (JSC::JSGlobalObject::errorConstructor): - (JSC::JSGlobalObject::evalErrorConstructor): - (JSC::JSGlobalObject::rangeErrorConstructor): - (JSC::JSGlobalObject::referenceErrorConstructor): - (JSC::JSGlobalObject::syntaxErrorConstructor): - (JSC::JSGlobalObject::typeErrorConstructor): - (JSC::JSGlobalObject::URIErrorConstructor): - (JSC::JSGlobalObject::evalFunction): - (JSC::JSGlobalObject::objectPrototype): - (JSC::JSGlobalObject::functionPrototype): - (JSC::JSGlobalObject::arrayPrototype): - (JSC::JSGlobalObject::booleanPrototype): - (JSC::JSGlobalObject::stringPrototype): - (JSC::JSGlobalObject::numberPrototype): - (JSC::JSGlobalObject::datePrototype): - (JSC::JSGlobalObject::regExpPrototype): - (JSC::JSGlobalObject::methodCallDummy): - (JSC::Structure::prototypeForLookup): - (JSC::constructArray): - * runtime/JSONObject.cpp: - (JSC::Stringifier::Holder::object): - (JSC::Stringifier::markAggregate): - (JSC::Stringifier::stringify): - (JSC::Stringifier::Holder::appendNextProperty): - (JSC::Walker::callReviver): - (JSC::Walker::walk): - * runtime/JSObject.cpp: - (JSC::JSObject::defineGetter): - (JSC::JSObject::defineSetter): - (JSC::JSObject::removeDirect): - (JSC::JSObject::putDirectFunction): - (JSC::JSObject::putDirectFunctionWithoutTransition): - (JSC::putDescriptor): - (JSC::JSObject::defineOwnProperty): - * runtime/JSObject.h: - (JSC::JSObject::getDirectOffset): - (JSC::JSObject::putDirectOffset): - (JSC::JSObject::flattenDictionaryObject): - (JSC::JSObject::putDirectInternal): - (JSC::JSObject::putDirect): - (JSC::JSObject::putDirectFunction): - (JSC::JSObject::putDirectWithoutTransition): - (JSC::JSObject::putDirectFunctionWithoutTransition): - (JSC::JSValue::putDirect): - (JSC::JSObject::allocatePropertyStorageInline): - (JSC::JSObject::markChildrenDirect): - * runtime/JSPropertyNameIterator.cpp: - (JSC::JSPropertyNameIterator::JSPropertyNameIterator): - (JSC::JSPropertyNameIterator::get): - * runtime/JSPropertyNameIterator.h: - * runtime/JSStaticScopeObject.cpp: - (JSC::JSStaticScopeObject::markChildren): - * runtime/JSString.cpp: - (JSC::StringObject::create): - * runtime/JSValue.h: - * runtime/JSWrapperObject.cpp: - (JSC::JSWrapperObject::markChildren): - * runtime/JSWrapperObject.h: - (JSC::JSWrapperObject::internalValue): - (JSC::JSWrapperObject::setInternalValue): - * runtime/LiteralParser.cpp: - (JSC::LiteralParser::parse): - * runtime/Lookup.cpp: - (JSC::setUpStaticFunctionSlot): - * runtime/Lookup.h: - (JSC::lookupPut): - * runtime/MarkStack.h: - (JSC::MarkStack::appendValues): - * runtime/MathObject.cpp: - (JSC::MathObject::MathObject): - * runtime/NativeErrorConstructor.cpp: - (JSC::NativeErrorConstructor::NativeErrorConstructor): - * runtime/NativeErrorPrototype.cpp: - (JSC::NativeErrorPrototype::NativeErrorPrototype): - * runtime/NumberConstructor.cpp: - (JSC::NumberConstructor::NumberConstructor): - (JSC::constructWithNumberConstructor): - * runtime/NumberObject.cpp: - (JSC::constructNumber): - * runtime/NumberPrototype.cpp: - (JSC::NumberPrototype::NumberPrototype): - * runtime/ObjectConstructor.cpp: - (JSC::ObjectConstructor::ObjectConstructor): - (JSC::objectConstructorGetOwnPropertyDescriptor): - * runtime/Operations.h: - (JSC::normalizePrototypeChain): - (JSC::resolveBase): - * runtime/PrototypeFunction.cpp: - (JSC::PrototypeFunction::PrototypeFunction): - * runtime/PutPropertySlot.h: - (JSC::PutPropertySlot::setExistingProperty): - (JSC::PutPropertySlot::setNewProperty): - (JSC::PutPropertySlot::base): - * runtime/RegExpConstructor.cpp: - (JSC::RegExpConstructor::RegExpConstructor): - * runtime/ScopeChain.cpp: - (JSC::ScopeChainNode::print): - * runtime/ScopeChain.h: - (JSC::ScopeChainNode::~ScopeChainNode): - (JSC::ScopeChainIterator::operator*): - (JSC::ScopeChainIterator::operator->): - (JSC::ScopeChain::top): - * runtime/ScopeChainMark.h: - (JSC::ScopeChain::markAggregate): - * runtime/SmallStrings.cpp: - (JSC::isMarked): - (JSC::SmallStrings::markChildren): - * runtime/SmallStrings.h: - (JSC::SmallStrings::emptyString): - (JSC::SmallStrings::singleCharacterString): - (JSC::SmallStrings::singleCharacterStrings): - * runtime/StringConstructor.cpp: - (JSC::StringConstructor::StringConstructor): - * runtime/StringObject.cpp: - (JSC::StringObject::StringObject): - * runtime/StringObject.h: - * runtime/StringPrototype.cpp: - (JSC::StringPrototype::StringPrototype): - * runtime/Structure.cpp: - (JSC::Structure::Structure): - (JSC::Structure::addPropertyTransition): - (JSC::Structure::toDictionaryTransition): - (JSC::Structure::flattenDictionaryStructure): - * runtime/Structure.h: - (JSC::Structure::storedPrototype): - * runtime/WeakGCMap.h: - (JSC::WeakGCMap::uncheckedGet): - (JSC::WeakGCMap::isValid): - (JSC::::get): - (JSC::::take): - (JSC::::set): - (JSC::::uncheckedRemove): - * runtime/WriteBarrier.h: Removed. + Reviewed by Sam Weinig. -2011-01-30 Simon Fraser <simon.fraser@apple.com> + Bug 58696 - DFG JIT split handling of vars/temporaries + + Presently all callee registers are treated as having single block scope, + since the DFG JIT can only compile single block functions. In order to + expand the JIT to support control flow we will need to change to retaining + locals (but not temporaries) across basic block boundaries. + + * dfg/DFGByteCodeParser.cpp: + (JSC::DFG::ByteCodeParser::ByteCodeParser): + (JSC::DFG::ByteCodeParser::get): + (JSC::DFG::ByteCodeParser::set): + (JSC::DFG::ByteCodeParser::getVariable): + (JSC::DFG::ByteCodeParser::setVariable): + (JSC::DFG::ByteCodeParser::getTemporary): + (JSC::DFG::ByteCodeParser::setTemporary): + (JSC::DFG::ByteCodeParser::getArgument): + (JSC::DFG::ByteCodeParser::getInt32Constant): + (JSC::DFG::ByteCodeParser::getDoubleConstant): + (JSC::DFG::ByteCodeParser::getJSConstant): + (JSC::DFG::ByteCodeParser::constantUndefined): + (JSC::DFG::ByteCodeParser::constantNull): + (JSC::DFG::ByteCodeParser::one): + (JSC::DFG::ByteCodeParser::parseBlock): + (JSC::DFG::ByteCodeParser::parse): + (JSC::DFG::parse): + * dfg/DFGNode.h: + * dfg/DFGScoreBoard.h: + (JSC::DFG::ScoreBoard::ScoreBoard): + (JSC::DFG::ScoreBoard::~ScoreBoard): + (JSC::DFG::ScoreBoard::allocate): + (JSC::DFG::ScoreBoard::use): + +2011-04-15 Michael Saboff <msaboff@apple.com> - Build fix the build fix. I assume Oliver meant m_cell, not m_value. + Reviewed by Oliver Hunt. - * runtime/WriteBarrier.h: - (JSC::WriteBarrierBase::clear): + globalObject moved to JSObjectWithGlobalObject.cpp inhibits inlining + https://bugs.webkit.org/show_bug.cgi?id=58677 -2011-01-30 Oliver Hunt <oliver@apple.com> + Moved JSObjectWithGlobalObject::globalObject() to + runtime/JSObjectWithGlobalObject.h to allow the compiler to inline + it for a performance benefit. An equivalent instance had been in + a header file before r60057. - More Qt build fixes + * JavaScriptCore.exp: + * runtime/JSObjectWithGlobalObject.cpp: + * runtime/JSObjectWithGlobalObject.h: + (JSC::JSObjectWithGlobalObject::globalObject): - * runtime/WriteBarrier.h: - (JSC::WriteBarrierBase::clear): +2011-04-14 Oliver Hunt <oliver@apple.com> -2011-01-30 Oliver Hunt <oliver@apple.com> + Reviewed by Geoffrey Garen. - Convert markstack to a slot visitor API - https://bugs.webkit.org/show_bug.cgi?id=53219 + Make JSNodeFilterCondition handle its lifetime correctly + https://bugs.webkit.org/show_bug.cgi?id=58622 - rolling r77006 and r77020 back in. + Add export - * API/JSCallbackObject.h: - (JSC::JSCallbackObjectData::setPrivateProperty): - (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty): - (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty): - (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren): - (JSC::JSCallbackObject::setPrivateProperty): - * API/JSCallbackObjectFunctions.h: - (JSC::::put): - (JSC::::staticFunctionGetter): - * API/JSObjectRef.cpp: - (JSObjectMakeConstructor): - (JSObjectSetPrivateProperty): - * API/JSWeakObjectMapRefInternal.h: * JavaScriptCore.exp: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * JavaScriptCore.xcodeproj/project.pbxproj: - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::markAggregate): - * bytecode/CodeBlock.h: - (JSC::CodeBlock::globalObject): - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): - (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): - (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): - (JSC::BytecodeGenerator::findScopedProperty): - * debugger/Debugger.cpp: - (JSC::evaluateInGlobalCallFrame): - * debugger/DebuggerActivation.cpp: - (JSC::DebuggerActivation::DebuggerActivation): - (JSC::DebuggerActivation::markChildren): - * debugger/DebuggerActivation.h: - * debugger/DebuggerCallFrame.cpp: - (JSC::DebuggerCallFrame::evaluate): - * interpreter/CallFrame.h: - (JSC::ExecState::exception): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::resolve): - (JSC::Interpreter::resolveSkip): - (JSC::Interpreter::resolveGlobal): - (JSC::Interpreter::resolveGlobalDynamic): - (JSC::Interpreter::resolveBaseAndProperty): - (JSC::Interpreter::unwindCallFrame): - (JSC::appendSourceToError): - (JSC::Interpreter::execute): - (JSC::Interpreter::tryCacheGetByID): - (JSC::Interpreter::privateExecute): - * jit/JITStubs.cpp: - (JSC::JITThunks::tryCacheGetByID): - (JSC::DEFINE_STUB_FUNCTION): - * jsc.cpp: - (GlobalObject::GlobalObject): - * runtime/ArgList.cpp: - (JSC::MarkedArgumentBuffer::markLists): - * runtime/Arguments.cpp: - (JSC::Arguments::markChildren): - (JSC::Arguments::getOwnPropertySlot): - (JSC::Arguments::getOwnPropertyDescriptor): - (JSC::Arguments::put): - * runtime/Arguments.h: - (JSC::Arguments::setActivation): - (JSC::Arguments::Arguments): - * runtime/ArrayConstructor.cpp: - (JSC::ArrayConstructor::ArrayConstructor): - (JSC::constructArrayWithSizeQuirk): - * runtime/ArrayPrototype.cpp: - (JSC::arrayProtoFuncSplice): - * runtime/BatchedTransitionOptimizer.h: - (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): - (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer): - * runtime/BooleanConstructor.cpp: - (JSC::BooleanConstructor::BooleanConstructor): - (JSC::constructBoolean): - (JSC::constructBooleanFromImmediateBoolean): - * runtime/BooleanPrototype.cpp: - (JSC::BooleanPrototype::BooleanPrototype): - * runtime/ConservativeSet.cpp: - (JSC::ConservativeSet::grow): - * runtime/ConservativeSet.h: - (JSC::ConservativeSet::~ConservativeSet): - (JSC::ConservativeSet::mark): - * runtime/DateConstructor.cpp: - (JSC::DateConstructor::DateConstructor): - * runtime/DateInstance.cpp: - (JSC::DateInstance::DateInstance): - * runtime/DatePrototype.cpp: - (JSC::dateProtoFuncSetTime): - (JSC::setNewValueFromTimeArgs): - (JSC::setNewValueFromDateArgs): - (JSC::dateProtoFuncSetYear): - * runtime/ErrorConstructor.cpp: - (JSC::ErrorConstructor::ErrorConstructor): - * runtime/ErrorInstance.cpp: - (JSC::ErrorInstance::ErrorInstance): - * runtime/ErrorPrototype.cpp: - (JSC::ErrorPrototype::ErrorPrototype): - * runtime/FunctionConstructor.cpp: - (JSC::FunctionConstructor::FunctionConstructor): - * runtime/FunctionPrototype.cpp: - (JSC::FunctionPrototype::FunctionPrototype): - * runtime/GetterSetter.cpp: - (JSC::GetterSetter::markChildren): - * runtime/GetterSetter.h: - (JSC::GetterSetter::GetterSetter): - (JSC::GetterSetter::getter): - (JSC::GetterSetter::setGetter): - (JSC::GetterSetter::setter): - (JSC::GetterSetter::setSetter): - * runtime/GlobalEvalFunction.cpp: - (JSC::GlobalEvalFunction::GlobalEvalFunction): - (JSC::GlobalEvalFunction::markChildren): - * runtime/GlobalEvalFunction.h: - (JSC::GlobalEvalFunction::cachedGlobalObject): - * runtime/Heap.cpp: - (JSC::Heap::markProtectedObjects): - (JSC::Heap::markTempSortVectors): - (JSC::Heap::markRoots): - * runtime/InternalFunction.cpp: - (JSC::InternalFunction::InternalFunction): - * runtime/JSAPIValueWrapper.h: - (JSC::JSAPIValueWrapper::value): - (JSC::JSAPIValueWrapper::JSAPIValueWrapper): - * runtime/JSActivation.cpp: - (JSC::JSActivation::markChildren): - (JSC::JSActivation::put): - * runtime/JSArray.cpp: - (JSC::JSArray::JSArray): - (JSC::JSArray::getOwnPropertySlot): - (JSC::JSArray::getOwnPropertyDescriptor): - (JSC::JSArray::put): - (JSC::JSArray::putSlowCase): - (JSC::JSArray::deleteProperty): - (JSC::JSArray::increaseVectorLength): - (JSC::JSArray::setLength): - (JSC::JSArray::pop): - (JSC::JSArray::push): - (JSC::JSArray::unshiftCount): - (JSC::JSArray::sort): - (JSC::JSArray::fillArgList): - (JSC::JSArray::copyToRegisters): - (JSC::JSArray::compactForSorting): - * runtime/JSArray.h: - (JSC::JSArray::getIndex): - (JSC::JSArray::setIndex): - (JSC::JSArray::uncheckedSetIndex): - (JSC::JSArray::markChildrenDirect): - * runtime/JSByteArray.cpp: - (JSC::JSByteArray::JSByteArray): - * runtime/JSCell.h: - (JSC::JSCell::MarkStack::append): - (JSC::JSCell::MarkStack::internalAppend): - (JSC::JSCell::MarkStack::deprecatedAppend): - * runtime/JSFunction.cpp: - (JSC::JSFunction::JSFunction): - (JSC::JSFunction::getOwnPropertySlot): - * runtime/JSGlobalData.h: - * runtime/JSGlobalObject.cpp: - (JSC::markIfNeeded): - (JSC::JSGlobalObject::reset): - (JSC::JSGlobalObject::resetPrototype): - (JSC::JSGlobalObject::markChildren): - * runtime/JSGlobalObject.h: - (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): - (JSC::JSGlobalObject::regExpConstructor): - (JSC::JSGlobalObject::errorConstructor): - (JSC::JSGlobalObject::evalErrorConstructor): - (JSC::JSGlobalObject::rangeErrorConstructor): - (JSC::JSGlobalObject::referenceErrorConstructor): - (JSC::JSGlobalObject::syntaxErrorConstructor): - (JSC::JSGlobalObject::typeErrorConstructor): - (JSC::JSGlobalObject::URIErrorConstructor): - (JSC::JSGlobalObject::evalFunction): - (JSC::JSGlobalObject::objectPrototype): - (JSC::JSGlobalObject::functionPrototype): - (JSC::JSGlobalObject::arrayPrototype): - (JSC::JSGlobalObject::booleanPrototype): - (JSC::JSGlobalObject::stringPrototype): - (JSC::JSGlobalObject::numberPrototype): - (JSC::JSGlobalObject::datePrototype): - (JSC::JSGlobalObject::regExpPrototype): - (JSC::JSGlobalObject::methodCallDummy): - (JSC::Structure::prototypeForLookup): - (JSC::constructArray): - * runtime/JSONObject.cpp: - (JSC::Stringifier::Holder::object): - (JSC::Stringifier::Holder::objectSlot): - (JSC::Stringifier::markAggregate): - (JSC::Stringifier::stringify): - (JSC::Stringifier::Holder::appendNextProperty): - (JSC::Walker::callReviver): - (JSC::Walker::walk): - * runtime/JSObject.cpp: - (JSC::JSObject::defineGetter): - (JSC::JSObject::defineSetter): - (JSC::JSObject::removeDirect): - (JSC::JSObject::putDirectFunction): - (JSC::JSObject::putDirectFunctionWithoutTransition): - (JSC::putDescriptor): - (JSC::JSObject::defineOwnProperty): - * runtime/JSObject.h: - (JSC::JSObject::getDirectOffset): - (JSC::JSObject::putDirectOffset): - (JSC::JSObject::putUndefinedAtDirectOffset): - (JSC::JSObject::flattenDictionaryObject): - (JSC::JSObject::putDirectInternal): - (JSC::JSObject::putDirect): - (JSC::JSObject::putDirectFunction): - (JSC::JSObject::putDirectWithoutTransition): - (JSC::JSObject::putDirectFunctionWithoutTransition): - (JSC::JSValue::putDirect): - (JSC::JSObject::allocatePropertyStorageInline): - (JSC::JSObject::markChildrenDirect): - * runtime/JSPropertyNameIterator.cpp: - (JSC::JSPropertyNameIterator::JSPropertyNameIterator): - (JSC::JSPropertyNameIterator::get): - * runtime/JSPropertyNameIterator.h: - * runtime/JSStaticScopeObject.cpp: - (JSC::JSStaticScopeObject::markChildren): - * runtime/JSString.cpp: - (JSC::StringObject::create): - * runtime/JSValue.h: - * runtime/JSWrapperObject.cpp: - (JSC::JSWrapperObject::markChildren): - * runtime/JSWrapperObject.h: - (JSC::JSWrapperObject::internalValue): - (JSC::JSWrapperObject::setInternalValue): - * runtime/LiteralParser.cpp: - (JSC::LiteralParser::parse): - * runtime/Lookup.cpp: - (JSC::setUpStaticFunctionSlot): - * runtime/Lookup.h: - (JSC::lookupPut): - * runtime/MarkStack.h: - (JSC::MarkStack::MarkStack): - (JSC::MarkStack::deprecatedAppendValues): - (JSC::MarkStack::appendValues): - * runtime/MathObject.cpp: - (JSC::MathObject::MathObject): - * runtime/NativeErrorConstructor.cpp: - (JSC::NativeErrorConstructor::NativeErrorConstructor): - * runtime/NativeErrorPrototype.cpp: - (JSC::NativeErrorPrototype::NativeErrorPrototype): - * runtime/NumberConstructor.cpp: - (JSC::NumberConstructor::NumberConstructor): - (JSC::constructWithNumberConstructor): - * runtime/NumberObject.cpp: - (JSC::constructNumber): - * runtime/NumberPrototype.cpp: - (JSC::NumberPrototype::NumberPrototype): - * runtime/ObjectConstructor.cpp: - (JSC::ObjectConstructor::ObjectConstructor): - (JSC::objectConstructorGetOwnPropertyDescriptor): - * runtime/Operations.h: - (JSC::normalizePrototypeChain): - (JSC::resolveBase): - * runtime/PrototypeFunction.cpp: - (JSC::PrototypeFunction::PrototypeFunction): - * runtime/PutPropertySlot.h: - (JSC::PutPropertySlot::setExistingProperty): - (JSC::PutPropertySlot::setNewProperty): - (JSC::PutPropertySlot::base): - * runtime/RegExpConstructor.cpp: - (JSC::RegExpConstructor::RegExpConstructor): - * runtime/ScopeChain.cpp: - (JSC::ScopeChainNode::print): - * runtime/ScopeChain.h: - (JSC::ScopeChainNode::~ScopeChainNode): - (JSC::ScopeChainIterator::operator*): - (JSC::ScopeChainIterator::operator->): - (JSC::ScopeChain::top): - * runtime/ScopeChainMark.h: - (JSC::ScopeChain::markAggregate): - * runtime/SmallStrings.cpp: - (JSC::isMarked): - (JSC::SmallStrings::markChildren): - * runtime/SmallStrings.h: - (JSC::SmallStrings::emptyString): - (JSC::SmallStrings::singleCharacterString): - (JSC::SmallStrings::singleCharacterStrings): - * runtime/StringConstructor.cpp: - (JSC::StringConstructor::StringConstructor): - * runtime/StringObject.cpp: - (JSC::StringObject::StringObject): - * runtime/StringObject.h: - * runtime/StringPrototype.cpp: - (JSC::StringPrototype::StringPrototype): - * runtime/Structure.cpp: - (JSC::Structure::Structure): - (JSC::Structure::addPropertyTransition): - (JSC::Structure::toDictionaryTransition): - (JSC::Structure::flattenDictionaryStructure): - * runtime/Structure.h: - (JSC::Structure::storedPrototype): - (JSC::Structure::storedPrototypeSlot): - * runtime/WeakGCMap.h: - (JSC::WeakGCMap::uncheckedGet): - (JSC::WeakGCMap::uncheckedGetSlot): - (JSC::WeakGCMap::isValid): - (JSC::::get): - (JSC::::take): - (JSC::::set): - (JSC::::uncheckedRemove): - * runtime/WriteBarrier.h: Added. - (JSC::DeprecatedPtr::DeprecatedPtr): - (JSC::DeprecatedPtr::get): - (JSC::DeprecatedPtr::operator*): - (JSC::DeprecatedPtr::operator->): - (JSC::DeprecatedPtr::slot): - (JSC::DeprecatedPtr::operator UnspecifiedBoolType*): - (JSC::DeprecatedPtr::operator!): - (JSC::WriteBarrierBase::set): - (JSC::WriteBarrierBase::get): - (JSC::WriteBarrierBase::operator*): - (JSC::WriteBarrierBase::operator->): - (JSC::WriteBarrierBase::slot): - (JSC::WriteBarrierBase::operator UnspecifiedBoolType*): - (JSC::WriteBarrierBase::operator!): - (JSC::WriteBarrier::WriteBarrier): - (JSC::operator==): -2011-01-30 Geoffrey Garen <ggaren@apple.com> +2011-04-14 Alexey Proskuryakov <ap@apple.com> - Reviewed by Oliver Hunt. + Reviewed by Dan Bernstein. - Filter all Heap collection through a common reset function, in - preparation for adding features triggered by collection. - https://bugs.webkit.org/show_bug.cgi?id=53396 - - SunSpider reports no change. + WebKit2: Password field input does not switch to ASCII-compatible source + https://bugs.webkit.org/show_bug.cgi?id=58583 + <rdar://problem/9059651> - * runtime/Heap.cpp: - (JSC::Heap::reportExtraMemoryCostSlowCase): When we're over the extraCost - limit, just call collectAllGarbage() instead of rolling our own special - way of resetting the heap. In theory, this may be slower in some cases, - but it also fixes cases of pathological heap growth that we've seen, - where the only objects being allocated are temporary and huge - (<rdar://problem/8885843>). + * wtf/Platform.h: Removed WTF_USE_CARBON_SECURE_INPUT_MODE. It's now only used by Chromium, + and shouldn't be enabled on any other platforms, so there is no reason to make it + configurable via Platform.h. - (JSC::Heap::allocate): - (JSC::Heap::collectAllGarbage): Use the shared reset function. +2011-04-15 Dmitry Lomov <dslomov@google.com> - (JSC::Heap::reset): - * runtime/Heap.h: Carved a new shared reset function out of the old - collectAllGarbage. - -2011-01-30 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r77025. - http://trac.webkit.org/changeset/77025 - https://bugs.webkit.org/show_bug.cgi?id=53401 - - It made js1_5/Regress/regress-159334.js fail on 64 bit Linux - (Requested by Ossy on #webkit). - - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::FreeListEntry::FreeListEntry): - (JSC::AVLTreeAbstractorForFreeList::get_less): - (JSC::AVLTreeAbstractorForFreeList::set_less): - (JSC::AVLTreeAbstractorForFreeList::get_greater): - (JSC::AVLTreeAbstractorForFreeList::set_greater): - (JSC::AVLTreeAbstractorForFreeList::get_balance_factor): - (JSC::AVLTreeAbstractorForFreeList::set_balance_factor): - (JSC::AVLTreeAbstractorForFreeList::null): - (JSC::AVLTreeAbstractorForFreeList::compare_key_key): - (JSC::AVLTreeAbstractorForFreeList::compare_key_node): - (JSC::AVLTreeAbstractorForFreeList::compare_node_node): - (JSC::reverseSortFreeListEntriesByPointer): - (JSC::reverseSortCommonSizedAllocations): - (JSC::FixedVMPoolAllocator::release): - (JSC::FixedVMPoolAllocator::reuse): - (JSC::FixedVMPoolAllocator::addToFreeList): - (JSC::FixedVMPoolAllocator::coalesceFreeSpace): - (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): - (JSC::FixedVMPoolAllocator::alloc): - (JSC::FixedVMPoolAllocator::free): - (JSC::FixedVMPoolAllocator::isValid): - (JSC::FixedVMPoolAllocator::allocInternal): - (JSC::FixedVMPoolAllocator::isWithinVMPool): - (JSC::FixedVMPoolAllocator::addToCommittedByteCount): - (JSC::ExecutableAllocator::committedByteCount): - (JSC::maybeModifyVMPoolSize): - (JSC::ExecutableAllocator::isValid): - (JSC::ExecutableAllocator::underMemoryPressure): - (JSC::ExecutablePool::systemAlloc): - (JSC::ExecutablePool::systemRelease): - * wtf/PageReservation.h: - (WTF::PageReservation::PageReservation): - (WTF::PageReservation::commit): - (WTF::PageReservation::decommit): - -2011-01-30 Leo Yang <leo.yang@torchmobile.com.cn> - - Reviewed by Daniel Bates. - - Code style issue in JavaScriptCore/wtf/CurrentTime.h - https://bugs.webkit.org/show_bug.cgi?id=53394 - - According to rule #3 at http://webkit.org/coding/coding-style.html, - This patch fix style issue in CurrentTime.h. - - No functionality change, no new tests. - - * wtf/CurrentTime.h: - (WTF::currentTimeMS): - (WTF::getLocalTime): - -2011-01-30 Benjamin Poulain <ikipou@gmail.com> + Reviewed by David Levin. - Reviewed by Kenneth Rohde Christiansen. + Add a sample test case for GTest framework + https://bugs.webkit.org/show_bug.cgi?id=58509 - [Qt] JavaScriptCore does not link on Mac if building WebKit 2 - https://bugs.webkit.org/show_bug.cgi?id=53377 + Add an example of GTest testcase, complete with a runner, to JavaScriptCore. - The option "-whole-archive" is not availabe with the libtool of Mac OS X, - instead, we can use "-all_load" on Mac. + * JavaScriptCore.xcodeproj/project.pbxproj: + * wtf/tests/RunAllWtfTests.cpp: Added. + (main): + * wtf/tests/StringTests.cpp: Added. - * JavaScriptCore.pri: +2011-04-15 Anna Cavender <annacc@chromium.org> -2011-01-29 Geoffrey Garen <ggaren@apple.com> + Reviewed by Eric Carlson. - Sorry Leopard bot -- I committed a change by accident. + Renaming TRACK feature define to VIDEO_TRACK + https://bugs.webkit.org/show_bug.cgi?id=53556 - * JavaScriptCore.exp: You may have your symbols back now. + * Configurations/FeatureDefines.xcconfig: -2011-01-29 Geoffrey Garen <ggaren@apple.com> +2011-04-14 Gavin Barraclough <barraclough@apple.com> - Reviewed by Cameron Zwarich. + Rubber stamped by Geoffrey Garen. - Simplified Heap iteration - https://bugs.webkit.org/show_bug.cgi?id=53393 - - * runtime/CollectorHeapIterator.h: - (JSC::CollectorHeapIterator::isValid): - (JSC::CollectorHeapIterator::isLive): - (JSC::CollectorHeapIterator::advance): Removed "max" argument to - advance because it's a constant. - (JSC::LiveObjectIterator::LiveObjectIterator): - (JSC::LiveObjectIterator::operator++): - (JSC::DeadObjectIterator::DeadObjectIterator): - (JSC::DeadObjectIterator::operator++): - (JSC::ObjectIterator::ObjectIterator): - (JSC::ObjectIterator::operator++): Factored out common checks into - two helper functions -- isValid() for "Am I past the end?" and isLive() - for "Is the cell I'm pointing to live?". + Hide DFG_JIT_RESTRICTIONS behind ARITHMETIC_OP() macro, and rename + m_regressionGuard to m_parseFailed, such that it can be reused for + other failure cases. - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::freeBlock): - (JSC::MarkedSpace::sweep): Always sweep from the beginning of the heap - to the end, to avoid making sweep subtly reliant on internal Heap state. - (JSC::MarkedSpace::primaryHeapBegin): - (JSC::MarkedSpace::primaryHeapEnd): Always be explicit about where - iteration begins. + * dfg/DFGByteCodeParser.cpp: + (JSC::DFG::ByteCodeParser::ByteCodeParser): + (JSC::DFG::ByteCodeParser::parse): -2011-01-29 Geoffrey Garen <ggaren@apple.com> +2011-04-14 Gavin Barraclough <barraclough@apple.com> - Reviewed by Cameron Zwarich. - - Simplified heap destruction - https://bugs.webkit.org/show_bug.cgi?id=53392 + Reviewed by Geoffrey Garen. - * JavaScriptCore.exp: - * runtime/Heap.cpp: - (JSC::Heap::destroy): - * runtime/Heap.h: - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::destroy): - * runtime/MarkedSpace.h: Don't go out of our way to destroy GC-protected - cells last -- the difficult contortions required to do so just don't seem - justified. We make no guarantees about GC protection after the client - throws away JSGlobalData, and it doesn't seem like any meaningful - guarantee is even possible. + Bug 58620 - DFG JIT - loading of arguments should not be lazy + + This optimization is overly simplistic. It only works because we never + write out definitions to arguments (since we currently only compile + single block functions). Revert this for now, we may want to reintroduce + something like this again in the future, but it will need to be aware + how to schedule definitions to arguments versus lazy loads that have not + yet been performed. + + * dfg/DFGGenerationInfo.h: + (JSC::DFG::GenerationInfo::needsSpill): + * dfg/DFGGraph.cpp: + (JSC::DFG::Graph::dump): + * dfg/DFGGraph.h: + * dfg/DFGJITCodeGenerator.cpp: + (JSC::DFG::JITCodeGenerator::fillInteger): + (JSC::DFG::JITCodeGenerator::fillDouble): + (JSC::DFG::JITCodeGenerator::fillJSValue): + * dfg/DFGJITCodeGenerator.h: + (JSC::DFG::JITCodeGenerator::initConstantInfo): + * dfg/DFGJITCompiler.cpp: + (JSC::DFG::JITCompiler::fillNumericToDouble): + (JSC::DFG::JITCompiler::fillInt32ToInteger): + (JSC::DFG::JITCompiler::fillToJS): + * dfg/DFGNonSpeculativeJIT.cpp: + (JSC::DFG::NonSpeculativeJIT::isKnownInteger): + (JSC::DFG::NonSpeculativeJIT::isKnownNumeric): + (JSC::DFG::NonSpeculativeJIT::compile): + * dfg/DFGSpeculativeJIT.cpp: + (JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal): + (JSC::DFG::SpeculativeJIT::fillSpeculateCell): + (JSC::DFG::SpeculativeJIT::compile): + +2011-04-14 Gavin Barraclough <barraclough@apple.com> -2011-01-29 Geoffrey Garen <ggaren@apple.com> + Reviewed by Geoffrey Garen. - Reviewed by Maciej Stachowiak. + Bug 58600 - DFG JIT bugs in ValueToInt, PutByVal - Switched heap to use the Bitmap class and removed CollectorBitmap - https://bugs.webkit.org/show_bug.cgi?id=53391 - - SunSpider says 1.005x as fast. Seems like a fluke. + The bug in PutByVal is that an operand is in JSValueOperand - when this + locks an integer into a register it will always retag the value without + checking if the register is already locked. This is a problem where the + value being stored by a PutByVal is the same as the subscript. + The subscript is locked into a register first, as a strict integer. + Locking the value results in the subscript being modified. - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::allocate): Updated for rename and returning a value - rather than taking a value by reference. + The bug in ValueToInt related to the function of sillentFillAllRegisters. + The problem is that this method will restore all register values from + prior to the call, overwriting the result of the call out. Allow a + register to be passed to specifically be excluded from being preserved. - * runtime/MarkedSpace.h: Code reuse is good. + * assembler/ARMAssembler.h: + (JSC::ARMAssembler::debugOffset): + * assembler/ARMv7Assembler.h: + (JSC::ARMv7Assembler::ARMInstructionFormatter::debugOffset): + * assembler/AbstractMacroAssembler.h: + (JSC::AbstractMacroAssembler::debugOffset): + * assembler/AssemblerBuffer.h: + (JSC::AssemblerBuffer::debugOffset): + * assembler/LinkBuffer.h: + (JSC::LinkBuffer::debugAddress): + * assembler/MIPSAssembler.h: + (JSC::MIPSAssembler::debugOffset): + * assembler/MacroAssemblerX86_64.h: + (JSC::MacroAssemblerX86_64::orPtr): + * assembler/X86Assembler.h: + (JSC::X86Assembler::debugOffset): + (JSC::X86Assembler::X86InstructionFormatter::debugOffset): + * dfg/DFGByteCodeParser.cpp: + (JSC::DFG::ByteCodeParser::parse): + * dfg/DFGGenerationInfo.h: + * dfg/DFGJITCodeGenerator.cpp: + (JSC::DFG::JITCodeGenerator::fillJSValue): + * dfg/DFGJITCodeGenerator.h: + (JSC::DFG::JITCodeGenerator::isConstant): + * dfg/DFGJITCompiler.cpp: + (JSC::DFG::JITCompiler::compileFunction): + * dfg/DFGJITCompiler.h: + (JSC::DFG::JITCompiler::isConstant): + * dfg/DFGNonSpeculativeJIT.cpp: + (JSC::DFG::NonSpeculativeJIT::valueToNumber): + (JSC::DFG::NonSpeculativeJIT::valueToInt32): + (JSC::DFG::NonSpeculativeJIT::numberToInt32): + (JSC::DFG::NonSpeculativeJIT::isKnownInteger): + (JSC::DFG::NonSpeculativeJIT::isKnownNumeric): + (JSC::DFG::NonSpeculativeJIT::compile): + * dfg/DFGNonSpeculativeJIT.h: + (JSC::DFG::NonSpeculativeJIT::silentSpillGPR): + (JSC::DFG::NonSpeculativeJIT::silentSpillFPR): + (JSC::DFG::NonSpeculativeJIT::silentFillGPR): + (JSC::DFG::NonSpeculativeJIT::silentFillFPR): + (JSC::DFG::NonSpeculativeJIT::silentSpillAllRegisters): + (JSC::DFG::NonSpeculativeJIT::silentFillAllRegisters): + * dfg/DFGSpeculativeJIT.cpp: + (JSC::DFG::SpeculativeJIT::compile): + +2011-04-14 Geoffrey Garen <ggaren@apple.com> - * wtf/Bitmap.h: - (WTF::::testAndSet): Added, since this is the one thing Bitmap was missing - which CollectorBitmap had. (Renamed from the less conventional "getset".) + Reviewed by Oliver Hunt. - (WTF::::nextPossiblyUnset): Renamed and changed to return a value for - clarity. It's all the same with inlining. + Drain the mark stack while marking weak handles, not after. + https://bugs.webkit.org/show_bug.cgi?id=58574 -2011-01-28 Geoffrey Garen <ggaren@apple.com> + Otherwise, items that would have caused more weak handle marking are + processed after all weak handle marking has finished, and referenced + weak handles get recycled. - Reviewed by Maciej Stachowiak. + * heap/HandleHeap.cpp: + (JSC::HandleHeap::markWeakHandles): Removed looping from here, since we + want Heap::markRoots to be responsible for draining the mark stack. - Some more Heap cleanup. - https://bugs.webkit.org/show_bug.cgi?id=53357 + * heap/Heap.cpp: + (JSC::Heap::markRoots): Moved looping to here, as explained above. - * JavaScriptCore.exp: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated exported symbols. + For efficiency's sake, drain the mark stack before starting to mark weak + handles. Otherwise, items drained while marking weak handles may force + an extra trip through the weak handle list. - * runtime/Heap.cpp: - (JSC::Heap::reportExtraMemoryCostSlowCase): Renamed recordExtraCost to - reportExtraMemoryCostSlowCase to match our naming conventions. + For correctness's sake, drain the mark stack each time through the weak + handle list. Otherwise, opaque roots that would make weak handles reachable + are not discovered until after weak handle marking is over. - (JSC::Heap::capacity): Renamed size to capacity because this function - returns the capacity of the heap, including unused portions. +2011-04-14 Oliver Hunt <oliver@apple.com> - * runtime/Heap.h: - (JSC::Heap::globalData): - (JSC::Heap::markedSpace): - (JSC::Heap::machineStackMarker): - (JSC::Heap::reportExtraMemoryCost): Moved statics to the top of the file. - Moved ctor and dtor to the beginning of the class definition. Grouped - functions by purpose. + Reviewed by Geoffrey Garen. - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::capacity): Renamed size to capacity because this - function returns the capacity of the heap, including unused portions. + Make protected object list in caches window reflect reality + https://bugs.webkit.org/show_bug.cgi?id=58565 - * runtime/MarkedSpace.h: Removed statistics and the Statistics class because - the same information can be gotten just by calling size() and capacity(). + Make sure the heap includes objects protected by Strong handles + in its list of protected objects. - * runtime/MemoryStatistics.cpp: - * runtime/MemoryStatistics.h: Ditto. + * heap/HandleHeap.h: + * heap/Heap.cpp: + (JSC::HandleHeap::protectedObjectTypeCounts): -2011-01-29 Daniel Bates <dbates@rim.com> +2011-04-14 Satish Sampath <satish@chromium.org> - Reviewed by Eric Seidel. + Reviewed by Anders Carlsson. - Move wince/mt19937ar.c to ThirdParty and make it a policy choice - https://bugs.webkit.org/show_bug.cgi?id=53253 + Don't emit RegExp tables for chromium where they are not used + https://bugs.webkit.org/show_bug.cgi?id=58544 - Make inclusion of MT19937 a policy decision. + * JavaScriptCore.gyp/JavaScriptCore.gyp: + * create_regex_tables: Added the "--notables" command line argument. - Currently, we hardcoded to use MT19937 when building for - Windows CE. Instead, we should make this a policy decision - with the Windows CE port using this by default. +2011-04-13 Geoffrey Garen <ggaren@apple.com> - * JavaScriptCore.pri: Append Source/ThirdParty to the end - of the list include directories. - * wtf/CMakeLists.txt: Ditto. - * wtf/Platform.h: Defined WTF_USE_MERSENNE_TWISTER_19937 when - building for Windows CE. - * wtf/RandomNumber.cpp: - (WTF::randomNumber): Substituted USE(MERSENNE_TWISTER_19937) for OS(WINCE). + Try to fix ASSERTs seen on Windows bots. + + * wtf/HashTable.h: + (WTF::hashTableSwap): Force MSVC to use the right version of swap. -2011-01-29 Cameron Zwarich <zwarich@apple.com> +2011-04-13 Ryuan Choi <ryuan.choi@samsung.com> - Reviewed by David Kilzer. + Reviewed by Kenneth Rohde Christiansen. - Bug 53374 - Remove uses of unsafe string functions in debugging code - https://bugs.webkit.org/show_bug.cgi?id=53374 + [CMAKE] Separate DerivedSources. + https://bugs.webkit.org/show_bug.cgi?id=58427 - * runtime/RegExp.cpp: - (JSC::RegExp::printTraceData): + * CMakeLists.txt: Change DERIVED_SOURCES_DIR to DERIVED_SOURCES_JAVASCRIPTCORE_DIR. -2011-01-29 Cameron Zwarich <zwarich@apple.com> +2011-04-13 Geoffrey Garen <ggaren@apple.com> Reviewed by Oliver Hunt. - JavaScriptCoreUseJIT environment variable broken - https://bugs.webkit.org/show_bug.cgi?id=53372 - - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::JSGlobalData): Check the actual value in the string returned - by getenv() rather than just doing a NULL check on the return value. + Switched DOM wrappers to use HashMap of Weak<T> instead of WeakGCMap<T> + https://bugs.webkit.org/show_bug.cgi?id=58482 + + This will allow wrappers to make individual decisions about their lifetimes. -2011-01-29 Patrick Gansterer <paroga@webkit.org> + * heap/HandleHeap.h: + (JSC::HandleHeap::copyWeak): New function for copying a weak handle. + It's wasn't previously possible to perform this operation using HandleHeap + API because the HandleHeap doesn't expose its underlying Node structure. - Reviewed by David Kilzer. + * heap/Local.h: + (JSC::::set): + * heap/Strong.h: + (JSC::Strong::set): Added ASSERTs to verify that dead objects are not + resurrected by placement into handles. - Move CharacterNames.h into WTF directory - https://bugs.webkit.org/show_bug.cgi?id=49618 + (JSC::swap): Added a swap helper, so use of Strong<T> inside a hash table + is efficient. - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/CMakeLists.txt: - * wtf/unicode/CharacterNames.h: Renamed from WebCore/platform/text/CharacterNames.h. - * wtf/unicode/UTF8.cpp: + * heap/Weak.h: + (JSC::Weak::Weak): Fixed a bug where copying a weak pointer would not + copy its weak callback and context. -2011-01-28 Simon Fraser <simon.fraser@apple.com> + (JSC::Weak::operator=): Added an assignment operator, since the default + C++ assignment operator did the wrong thing. - Reviewed by Gavin Barraclough. + (JSC::Weak::set): Added ASSERTs to verify that dead objects are not + resurrected by placement into handles. - Add various clampToInt() methods to MathExtras.h - https://bugs.webkit.org/show_bug.cgi?id=52910 - - Add functions for clamping doubles and floats to valid int - ranges, for signed and positive integers. + (JSC::swap): Added a swap helper, so use of Strong<T> inside a hash table + is efficient, and can be done without copying, which is illegal during + the handle finalization phase. - * wtf/MathExtras.h: - (clampToInteger): - (clampToPositiveInteger): +2011-04-13 Oliver Hunt <oliver@apple.com> -2011-01-28 Sheriff Bot <webkit.review.bot@gmail.com> + Reviewed by Gavin Barraclough. - Unreviewed, rolling out r77006 and r77020. - http://trac.webkit.org/changeset/77006 - http://trac.webkit.org/changeset/77020 - https://bugs.webkit.org/show_bug.cgi?id=53360 + Make PropertyMapEntry use a WriteBarrier for specificValue + https://bugs.webkit.org/show_bug.cgi?id=58407 - "Broke Windows tests" (Requested by rniwa on #webkit). + Make PropertyMapEntry use a WriteBarrier for specificValue, and then + propagate the required JSGlobalData through all the methods it ends + up being needed. - * API/JSCallbackObject.h: - (JSC::JSCallbackObjectData::setPrivateProperty): - (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty): - (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty): - (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren): - (JSC::JSCallbackObject::setPrivateProperty): - * API/JSCallbackObjectFunctions.h: - (JSC::::put): - (JSC::::staticFunctionGetter): + * API/JSClassRef.cpp: + (OpaqueJSClass::prototype): + * API/JSContextRef.cpp: * API/JSObjectRef.cpp: - (JSObjectMakeConstructor): - (JSObjectSetPrivateProperty): - * API/JSWeakObjectMapRefInternal.h: + (JSObjectMake): + (JSObjectSetPrototype): * JavaScriptCore.exp: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * JavaScriptCore.xcodeproj/project.pbxproj: - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::markAggregate): - * bytecode/CodeBlock.h: - (JSC::CodeBlock::globalObject): * bytecompiler/BytecodeGenerator.cpp: (JSC::BytecodeGenerator::BytecodeGenerator): - (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): - (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): - (JSC::BytecodeGenerator::findScopedProperty): - * debugger/Debugger.cpp: - (JSC::evaluateInGlobalCallFrame): - * debugger/DebuggerActivation.cpp: - (JSC::DebuggerActivation::DebuggerActivation): - (JSC::DebuggerActivation::markChildren): - * debugger/DebuggerActivation.h: - * debugger/DebuggerCallFrame.cpp: - (JSC::DebuggerCallFrame::evaluate): - * interpreter/CallFrame.h: - (JSC::ExecState::exception): * interpreter/Interpreter.cpp: - (JSC::Interpreter::resolve): - (JSC::Interpreter::resolveSkip): - (JSC::Interpreter::resolveGlobal): - (JSC::Interpreter::resolveGlobalDynamic): - (JSC::Interpreter::resolveBaseAndProperty): - (JSC::Interpreter::unwindCallFrame): (JSC::appendSourceToError): - (JSC::Interpreter::execute): (JSC::Interpreter::tryCacheGetByID): (JSC::Interpreter::privateExecute): * jit/JITStubs.cpp: (JSC::JITThunks::tryCacheGetByID): (JSC::DEFINE_STUB_FUNCTION): - * jsc.cpp: - (GlobalObject::GlobalObject): - * runtime/ArgList.cpp: - (JSC::MarkedArgumentBuffer::markLists): - * runtime/Arguments.cpp: - (JSC::Arguments::markChildren): - (JSC::Arguments::getOwnPropertySlot): - (JSC::Arguments::getOwnPropertyDescriptor): - (JSC::Arguments::put): - * runtime/Arguments.h: - (JSC::Arguments::setActivation): - (JSC::Arguments::Arguments): - * runtime/ArrayConstructor.cpp: - (JSC::ArrayConstructor::ArrayConstructor): - (JSC::constructArrayWithSizeQuirk): - * runtime/ArrayPrototype.cpp: - (JSC::arrayProtoFuncSplice): * runtime/BatchedTransitionOptimizer.h: (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): - (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer): - * runtime/BooleanConstructor.cpp: - (JSC::BooleanConstructor::BooleanConstructor): - (JSC::constructBoolean): - (JSC::constructBooleanFromImmediateBoolean): - * runtime/BooleanPrototype.cpp: - (JSC::BooleanPrototype::BooleanPrototype): - * runtime/ConservativeSet.cpp: - (JSC::ConservativeSet::grow): - * runtime/ConservativeSet.h: - (JSC::ConservativeSet::~ConservativeSet): - (JSC::ConservativeSet::mark): - * runtime/DateConstructor.cpp: - (JSC::DateConstructor::DateConstructor): - * runtime/DateInstance.cpp: - (JSC::DateInstance::DateInstance): - * runtime/DatePrototype.cpp: - (JSC::dateProtoFuncSetTime): - (JSC::setNewValueFromTimeArgs): - (JSC::setNewValueFromDateArgs): - (JSC::dateProtoFuncSetYear): - * runtime/ErrorConstructor.cpp: - (JSC::ErrorConstructor::ErrorConstructor): - * runtime/ErrorInstance.cpp: - (JSC::ErrorInstance::ErrorInstance): - * runtime/ErrorPrototype.cpp: - (JSC::ErrorPrototype::ErrorPrototype): - * runtime/FunctionConstructor.cpp: - (JSC::FunctionConstructor::FunctionConstructor): - * runtime/FunctionPrototype.cpp: - (JSC::FunctionPrototype::FunctionPrototype): - * runtime/GetterSetter.cpp: - (JSC::GetterSetter::markChildren): - * runtime/GetterSetter.h: - (JSC::GetterSetter::GetterSetter): - (JSC::GetterSetter::getter): - (JSC::GetterSetter::setGetter): - (JSC::GetterSetter::setter): - (JSC::GetterSetter::setSetter): - * runtime/GlobalEvalFunction.cpp: - (JSC::GlobalEvalFunction::GlobalEvalFunction): - (JSC::GlobalEvalFunction::markChildren): - * runtime/GlobalEvalFunction.h: - (JSC::GlobalEvalFunction::cachedGlobalObject): - * runtime/Heap.cpp: - (JSC::Heap::markProtectedObjects): - (JSC::Heap::markTempSortVectors): - (JSC::Heap::markRoots): * runtime/InternalFunction.cpp: - (JSC::InternalFunction::InternalFunction): - * runtime/JSAPIValueWrapper.h: - (JSC::JSAPIValueWrapper::value): - (JSC::JSAPIValueWrapper::JSAPIValueWrapper): + (JSC::InternalFunction::name): + (JSC::InternalFunction::displayName): * runtime/JSActivation.cpp: - (JSC::JSActivation::markChildren): - (JSC::JSActivation::put): - * runtime/JSArray.cpp: - (JSC::JSArray::JSArray): - (JSC::JSArray::getOwnPropertySlot): - (JSC::JSArray::getOwnPropertyDescriptor): - (JSC::JSArray::put): - (JSC::JSArray::putSlowCase): - (JSC::JSArray::deleteProperty): - (JSC::JSArray::increaseVectorLength): - (JSC::JSArray::setLength): - (JSC::JSArray::pop): - (JSC::JSArray::push): - (JSC::JSArray::unshiftCount): - (JSC::JSArray::sort): - (JSC::JSArray::fillArgList): - (JSC::JSArray::copyToRegisters): - (JSC::JSArray::compactForSorting): - * runtime/JSArray.h: - (JSC::JSArray::getIndex): - (JSC::JSArray::setIndex): - (JSC::JSArray::uncheckedSetIndex): - (JSC::JSArray::markChildrenDirect): - * runtime/JSByteArray.cpp: - (JSC::JSByteArray::JSByteArray): - * runtime/JSCell.h: - (JSC::JSCell::JSValue::toThisObject): - (JSC::JSCell::MarkStack::append): + (JSC::JSActivation::getOwnPropertySlot): * runtime/JSFunction.cpp: - (JSC::JSFunction::JSFunction): + (JSC::JSFunction::name): + (JSC::JSFunction::displayName): (JSC::JSFunction::getOwnPropertySlot): - * runtime/JSGlobalData.h: * runtime/JSGlobalObject.cpp: - (JSC::markIfNeeded): + (JSC::JSGlobalObject::putWithAttributes): (JSC::JSGlobalObject::reset): (JSC::JSGlobalObject::resetPrototype): - (JSC::JSGlobalObject::markChildren): * runtime/JSGlobalObject.h: - (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): - (JSC::JSGlobalObject::regExpConstructor): - (JSC::JSGlobalObject::errorConstructor): - (JSC::JSGlobalObject::evalErrorConstructor): - (JSC::JSGlobalObject::rangeErrorConstructor): - (JSC::JSGlobalObject::referenceErrorConstructor): - (JSC::JSGlobalObject::syntaxErrorConstructor): - (JSC::JSGlobalObject::typeErrorConstructor): - (JSC::JSGlobalObject::URIErrorConstructor): - (JSC::JSGlobalObject::evalFunction): - (JSC::JSGlobalObject::objectPrototype): - (JSC::JSGlobalObject::functionPrototype): - (JSC::JSGlobalObject::arrayPrototype): - (JSC::JSGlobalObject::booleanPrototype): - (JSC::JSGlobalObject::stringPrototype): - (JSC::JSGlobalObject::numberPrototype): - (JSC::JSGlobalObject::datePrototype): - (JSC::JSGlobalObject::regExpPrototype): - (JSC::JSGlobalObject::methodCallDummy): - (JSC::Structure::prototypeForLookup): - (JSC::constructArray): - * runtime/JSONObject.cpp: - (JSC::Stringifier::Holder::object): - (JSC::Stringifier::markAggregate): - (JSC::Stringifier::stringify): - (JSC::Stringifier::Holder::appendNextProperty): - (JSC::Walker::callReviver): - (JSC::Walker::walk): * runtime/JSObject.cpp: + (JSC::JSObject::put): + (JSC::JSObject::deleteProperty): (JSC::JSObject::defineGetter): (JSC::JSObject::defineSetter): + (JSC::JSObject::lookupGetter): + (JSC::JSObject::lookupSetter): + (JSC::JSObject::getPropertySpecificValue): + (JSC::JSObject::getOwnPropertyNames): + (JSC::JSObject::seal): + (JSC::JSObject::freeze): + (JSC::JSObject::preventExtensions): (JSC::JSObject::removeDirect): - (JSC::JSObject::putDirectFunction): - (JSC::JSObject::putDirectFunctionWithoutTransition): - (JSC::putDescriptor): + (JSC::JSObject::getOwnPropertyDescriptor): (JSC::JSObject::defineOwnProperty): * runtime/JSObject.h: - (JSC::JSObject::getDirectOffset): - (JSC::JSObject::putDirectOffset): - (JSC::JSObject::flattenDictionaryObject): + (JSC::JSObject::getDirect): + (JSC::JSObject::getDirectLocation): + (JSC::JSObject::isSealed): + (JSC::JSObject::isFrozen): + (JSC::JSObject::setPrototypeWithCycleCheck): + (JSC::JSObject::setPrototype): + (JSC::JSObject::inlineGetOwnPropertySlot): (JSC::JSObject::putDirectInternal): - (JSC::JSObject::putDirect): - (JSC::JSObject::putDirectFunction): (JSC::JSObject::putDirectWithoutTransition): (JSC::JSObject::putDirectFunctionWithoutTransition): - (JSC::JSValue::putDirect): - (JSC::JSObject::allocatePropertyStorageInline): - (JSC::JSObject::markChildrenDirect): - * runtime/JSPropertyNameIterator.cpp: - (JSC::JSPropertyNameIterator::JSPropertyNameIterator): - (JSC::JSPropertyNameIterator::get): - * runtime/JSPropertyNameIterator.h: - * runtime/JSStaticScopeObject.cpp: - (JSC::JSStaticScopeObject::markChildren): - * runtime/JSString.cpp: - (JSC::StringObject::create): - * runtime/JSValue.h: - * runtime/JSWrapperObject.cpp: - (JSC::JSWrapperObject::markChildren): - * runtime/JSWrapperObject.h: - (JSC::JSWrapperObject::internalValue): - (JSC::JSWrapperObject::setInternalValue): - * runtime/LiteralParser.cpp: - (JSC::LiteralParser::parse): * runtime/Lookup.cpp: (JSC::setUpStaticFunctionSlot): - * runtime/Lookup.h: - (JSC::lookupPut): - * runtime/MarkStack.h: - (JSC::MarkStack::appendValues): - * runtime/MathObject.cpp: - (JSC::MathObject::MathObject): - * runtime/NativeErrorConstructor.cpp: - (JSC::NativeErrorConstructor::NativeErrorConstructor): - * runtime/NativeErrorPrototype.cpp: - (JSC::NativeErrorPrototype::NativeErrorPrototype): - * runtime/NumberConstructor.cpp: - (JSC::NumberConstructor::NumberConstructor): - (JSC::constructWithNumberConstructor): - * runtime/NumberObject.cpp: - (JSC::constructNumber): - * runtime/NumberPrototype.cpp: - (JSC::NumberPrototype::NumberPrototype): * runtime/ObjectConstructor.cpp: - (JSC::ObjectConstructor::ObjectConstructor): - (JSC::objectConstructorGetOwnPropertyDescriptor): + (JSC::objectConstructorCreate): + (JSC::objectConstructorSeal): + (JSC::objectConstructorFreeze): + (JSC::objectConstructorPreventExtensions): + (JSC::objectConstructorIsSealed): + (JSC::objectConstructorIsFrozen): * runtime/Operations.h: (JSC::normalizePrototypeChain): - (JSC::resolveBase): - * runtime/PrototypeFunction.cpp: - (JSC::PrototypeFunction::PrototypeFunction): - * runtime/PutPropertySlot.h: - (JSC::PutPropertySlot::setExistingProperty): - (JSC::PutPropertySlot::setNewProperty): - (JSC::PutPropertySlot::base): - * runtime/RegExpConstructor.cpp: - (JSC::RegExpConstructor::RegExpConstructor): - * runtime/ScopeChain.cpp: - (JSC::ScopeChainNode::print): - * runtime/ScopeChain.h: - (JSC::ScopeChainNode::~ScopeChainNode): - (JSC::ScopeChainIterator::operator*): - (JSC::ScopeChainIterator::operator->): - (JSC::ScopeChain::top): - * runtime/ScopeChainMark.h: - (JSC::ScopeChain::markAggregate): - * runtime/SmallStrings.cpp: - (JSC::isMarked): - (JSC::SmallStrings::markChildren): - * runtime/SmallStrings.h: - (JSC::SmallStrings::emptyString): - (JSC::SmallStrings::singleCharacterString): - (JSC::SmallStrings::singleCharacterStrings): - * runtime/StringConstructor.cpp: - (JSC::StringConstructor::StringConstructor): - * runtime/StringObject.cpp: - (JSC::StringObject::StringObject): - * runtime/StringObject.h: - * runtime/StringPrototype.cpp: - (JSC::StringPrototype::StringPrototype): + * runtime/PropertyMapHashTable.h: + (JSC::PropertyMapEntry::PropertyMapEntry): + (JSC::PropertyTable::PropertyTable): + (JSC::PropertyTable::copy): * runtime/Structure.cpp: - (JSC::Structure::Structure): + (JSC::Structure::materializePropertyMap): + (JSC::Structure::despecifyDictionaryFunction): (JSC::Structure::addPropertyTransition): + (JSC::Structure::removePropertyTransition): + (JSC::Structure::changePrototypeTransition): + (JSC::Structure::despecifyFunctionTransition): + (JSC::Structure::getterSetterTransition): (JSC::Structure::toDictionaryTransition): - (JSC::Structure::flattenDictionaryStructure): + (JSC::Structure::toCacheableDictionaryTransition): + (JSC::Structure::toUncacheableDictionaryTransition): + (JSC::Structure::sealTransition): + (JSC::Structure::freezeTransition): + (JSC::Structure::preventExtensionsTransition): + (JSC::Structure::isSealed): + (JSC::Structure::isFrozen): + (JSC::Structure::addPropertyWithoutTransition): + (JSC::Structure::removePropertyWithoutTransition): + (JSC::Structure::copyPropertyTable): + (JSC::Structure::get): + (JSC::Structure::despecifyFunction): + (JSC::Structure::despecifyAllFunctions): + (JSC::Structure::put): + (JSC::Structure::getPropertyNames): * runtime/Structure.h: - (JSC::Structure::storedPrototype): - * runtime/WeakGCMap.h: - (JSC::WeakGCMap::uncheckedGet): - (JSC::WeakGCMap::isValid): - (JSC::::get): - (JSC::::take): - (JSC::::set): - (JSC::::uncheckedRemove): - * runtime/WriteBarrier.h: Removed. - -2011-01-28 Gavin Barraclough <barraclough@apple.com> + (JSC::Structure::get): + (JSC::Structure::materializePropertyMapIfNecessary): - Reviewed by Geoff Garen. +2011-04-13 Paul Knight <pknight@apple.com> - https://bugs.webkit.org/show_bug.cgi?id=53352 - Heavy external fragmentation in FixedVMPoolAllocator can lead to a CRASH(). - - The FixedVMPoolAllocator currently uses a best fix policy - - switch to first fit, this is less prone to external fragmentation. - - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::AllocationTableSizeClass::AllocationTableSizeClass): - (JSC::AllocationTableSizeClass::blockSize): - (JSC::AllocationTableSizeClass::blockCount): - (JSC::AllocationTableSizeClass::blockAlignment): - (JSC::AllocationTableSizeClass::size): - (JSC::AllocationTableLeaf::AllocationTableLeaf): - (JSC::AllocationTableLeaf::~AllocationTableLeaf): - (JSC::AllocationTableLeaf::allocate): - (JSC::AllocationTableLeaf::free): - (JSC::AllocationTableLeaf::isEmpty): - (JSC::AllocationTableLeaf::isFull): - (JSC::AllocationTableLeaf::size): - (JSC::AllocationTableLeaf::classForSize): - (JSC::AllocationTableLeaf::dump): - (JSC::LazyAllocationTable::LazyAllocationTable): - (JSC::LazyAllocationTable::~LazyAllocationTable): - (JSC::LazyAllocationTable::allocate): - (JSC::LazyAllocationTable::free): - (JSC::LazyAllocationTable::isEmpty): - (JSC::LazyAllocationTable::isFull): - (JSC::LazyAllocationTable::size): - (JSC::LazyAllocationTable::dump): - (JSC::LazyAllocationTable::classForSize): - (JSC::AllocationTableDirectory::AllocationTableDirectory): - (JSC::AllocationTableDirectory::~AllocationTableDirectory): - (JSC::AllocationTableDirectory::allocate): - (JSC::AllocationTableDirectory::free): - (JSC::AllocationTableDirectory::isEmpty): - (JSC::AllocationTableDirectory::isFull): - (JSC::AllocationTableDirectory::size): - (JSC::AllocationTableDirectory::classForSize): - (JSC::AllocationTableDirectory::dump): - (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): - (JSC::FixedVMPoolAllocator::alloc): - (JSC::FixedVMPoolAllocator::free): - (JSC::FixedVMPoolAllocator::allocated): - (JSC::FixedVMPoolAllocator::isValid): - (JSC::FixedVMPoolAllocator::classForSize): - (JSC::FixedVMPoolAllocator::offsetToPointer): - (JSC::FixedVMPoolAllocator::pointerToOffset): - (JSC::ExecutableAllocator::committedByteCount): - (JSC::ExecutableAllocator::isValid): - (JSC::ExecutableAllocator::underMemoryPressure): - (JSC::ExecutablePool::systemAlloc): - (JSC::ExecutablePool::systemRelease): - * wtf/PageReservation.h: - (WTF::PageReservation::PageReservation): - (WTF::PageReservation::commit): - (WTF::PageReservation::decommit): - (WTF::PageReservation::committed): - -2011-01-27 Oliver Hunt <oliver@apple.com> + Reviewed by Gavin Barraclough. - Reviewed by Geoffrey Garen. + BACKTRACE() macro should check for Debug configuration in macro, not WTFReportBacktrace definition + https://bugs.webkit.org/show_bug.cgi?id=58405 - Convert markstack to a slot visitor API - https://bugs.webkit.org/show_bug.cgi?id=53219 + The BACKTRACE() macro requires JavaScriptCore be built with a Debug + configuration in order for it to be enabled. Move the NDEBUG check to + the header so it will be enabled when the calling framework or + application is built with a Debug configuration, similar to how + ASSERT() and friends work. - Move the MarkStack over to a slot based marking API. + * wtf/Assertions.cpp: + * wtf/Assertions.h: - In order to avoiding aliasing concerns there are two new types - that need to be used when holding on to JSValues and JSCell that - need to be marked: WriteBarrier and DeprecatedPtr. WriteBarrier - is expected to be used for any JSValue or Cell that's lifetime and - marking is controlled by another GC object. DeprecatedPtr is used - for any value that we need to rework ownership for. +2011-04-12 Ben Taylor <bentaylor.solx86@gmail.com> - The change over to this model has produced a large amount of - code changes, but they are mostly mechanical (forwarding JSGlobalData, - etc). + Reviewed by Alexey Proskuryakov. - * API/JSCallbackObject.h: - (JSC::JSCallbackObjectData::setPrivateProperty): - (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty): - (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty): - (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren): - (JSC::JSCallbackObject::setPrivateProperty): - * API/JSCallbackObjectFunctions.h: - (JSC::::put): - (JSC::::staticFunctionGetter): - * API/JSObjectRef.cpp: - (JSObjectMakeConstructor): - (JSObjectSetPrivateProperty): - * API/JSWeakObjectMapRefInternal.h: - * JavaScriptCore.exp: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * JavaScriptCore.xcodeproj/project.pbxproj: - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::markAggregate): - * bytecode/CodeBlock.h: - (JSC::CodeBlock::globalObject): - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): - (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): - (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): - (JSC::BytecodeGenerator::findScopedProperty): - * debugger/DebuggerActivation.cpp: - (JSC::DebuggerActivation::DebuggerActivation): - (JSC::DebuggerActivation::markChildren): - * debugger/DebuggerActivation.h: - * interpreter/Interpreter.cpp: - (JSC::Interpreter::resolve): - (JSC::Interpreter::resolveSkip): - (JSC::Interpreter::resolveGlobalDynamic): - (JSC::Interpreter::resolveBaseAndProperty): - (JSC::Interpreter::unwindCallFrame): - (JSC::appendSourceToError): - (JSC::Interpreter::execute): - (JSC::Interpreter::privateExecute): - * interpreter/Register.h: - (JSC::Register::jsValueSlot): - * jit/JITStubs.cpp: - (JSC::JITThunks::tryCacheGetByID): - (JSC::DEFINE_STUB_FUNCTION): - * jsc.cpp: - (GlobalObject::GlobalObject): - * runtime/Arguments.cpp: - (JSC::Arguments::markChildren): - (JSC::Arguments::getOwnPropertySlot): - (JSC::Arguments::getOwnPropertyDescriptor): - (JSC::Arguments::put): - * runtime/Arguments.h: - (JSC::Arguments::setActivation): - (JSC::Arguments::Arguments): - * runtime/ArrayConstructor.cpp: - (JSC::ArrayConstructor::ArrayConstructor): - (JSC::constructArrayWithSizeQuirk): - * runtime/ArrayPrototype.cpp: - (JSC::arrayProtoFuncSplice): - * runtime/BatchedTransitionOptimizer.h: - (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): - (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer): - * runtime/BooleanConstructor.cpp: - (JSC::BooleanConstructor::BooleanConstructor): - (JSC::constructBoolean): - (JSC::constructBooleanFromImmediateBoolean): - * runtime/BooleanPrototype.cpp: - (JSC::BooleanPrototype::BooleanPrototype): - * runtime/ConservativeSet.h: - (JSC::ConservativeSet::mark): - * runtime/DateConstructor.cpp: - (JSC::DateConstructor::DateConstructor): - * runtime/DateInstance.cpp: - (JSC::DateInstance::DateInstance): - * runtime/DatePrototype.cpp: - (JSC::dateProtoFuncSetTime): - (JSC::setNewValueFromTimeArgs): - (JSC::setNewValueFromDateArgs): - (JSC::dateProtoFuncSetYear): - * runtime/ErrorConstructor.cpp: - (JSC::ErrorConstructor::ErrorConstructor): - * runtime/ErrorInstance.cpp: - (JSC::ErrorInstance::ErrorInstance): - * runtime/ErrorPrototype.cpp: - (JSC::ErrorPrototype::ErrorPrototype): - * runtime/FunctionConstructor.cpp: - (JSC::FunctionConstructor::FunctionConstructor): - * runtime/FunctionPrototype.cpp: - (JSC::FunctionPrototype::FunctionPrototype): - * runtime/GetterSetter.cpp: - (JSC::GetterSetter::markChildren): - * runtime/GetterSetter.h: - (JSC::GetterSetter::GetterSetter): - (JSC::GetterSetter::getter): - (JSC::GetterSetter::setGetter): - (JSC::GetterSetter::setter): - (JSC::GetterSetter::setSetter): - * runtime/GlobalEvalFunction.cpp: - (JSC::GlobalEvalFunction::GlobalEvalFunction): - (JSC::GlobalEvalFunction::markChildren): - * runtime/GlobalEvalFunction.h: - (JSC::GlobalEvalFunction::cachedGlobalObject): - * runtime/Heap.cpp: - (JSC::Heap::markProtectedObjects): - (JSC::Heap::markTempSortVectors): - (JSC::Heap::markRoots): - * runtime/InternalFunction.cpp: - (JSC::InternalFunction::InternalFunction): - * runtime/JSAPIValueWrapper.h: - (JSC::JSAPIValueWrapper::value): - (JSC::JSAPIValueWrapper::JSAPIValueWrapper): - * runtime/JSActivation.cpp: - (JSC::JSActivation::put): - * runtime/JSArray.cpp: - (JSC::JSArray::JSArray): - (JSC::JSArray::getOwnPropertySlot): - (JSC::JSArray::getOwnPropertyDescriptor): - (JSC::JSArray::put): - (JSC::JSArray::putSlowCase): - (JSC::JSArray::deleteProperty): - (JSC::JSArray::increaseVectorLength): - (JSC::JSArray::setLength): - (JSC::JSArray::pop): - (JSC::JSArray::push): - (JSC::JSArray::unshiftCount): - (JSC::JSArray::sort): - (JSC::JSArray::fillArgList): - (JSC::JSArray::copyToRegisters): - (JSC::JSArray::compactForSorting): - * runtime/JSArray.h: - (JSC::JSArray::getIndex): - (JSC::JSArray::setIndex): - (JSC::JSArray::uncheckedSetIndex): - (JSC::JSArray::markChildrenDirect): - * runtime/JSByteArray.cpp: - (JSC::JSByteArray::JSByteArray): - * runtime/JSCell.h: - (JSC::JSCell::MarkStack::append): - (JSC::JSCell::MarkStack::appendCell): - * runtime/JSFunction.cpp: - (JSC::JSFunction::JSFunction): - (JSC::JSFunction::getOwnPropertySlot): - * runtime/JSGlobalObject.cpp: - (JSC::markIfNeeded): - (JSC::JSGlobalObject::reset): - (JSC::JSGlobalObject::resetPrototype): - (JSC::JSGlobalObject::markChildren): - * runtime/JSGlobalObject.h: - (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): - (JSC::JSGlobalObject::regExpConstructor): - (JSC::JSGlobalObject::errorConstructor): - (JSC::JSGlobalObject::evalErrorConstructor): - (JSC::JSGlobalObject::rangeErrorConstructor): - (JSC::JSGlobalObject::referenceErrorConstructor): - (JSC::JSGlobalObject::syntaxErrorConstructor): - (JSC::JSGlobalObject::typeErrorConstructor): - (JSC::JSGlobalObject::URIErrorConstructor): - (JSC::JSGlobalObject::evalFunction): - (JSC::JSGlobalObject::objectPrototype): - (JSC::JSGlobalObject::functionPrototype): - (JSC::JSGlobalObject::arrayPrototype): - (JSC::JSGlobalObject::booleanPrototype): - (JSC::JSGlobalObject::stringPrototype): - (JSC::JSGlobalObject::numberPrototype): - (JSC::JSGlobalObject::datePrototype): - (JSC::JSGlobalObject::regExpPrototype): - (JSC::JSGlobalObject::methodCallDummy): - (JSC::constructArray): - * runtime/JSONObject.cpp: - (JSC::Stringifier::Holder::object): - (JSC::Stringifier::Holder::objectSlot): - (JSC::Stringifier::markAggregate): - (JSC::Stringifier::stringify): - (JSC::Stringifier::Holder::appendNextProperty): - (JSC::Walker::callReviver): - (JSC::Walker::walk): - * runtime/JSObject.cpp: - (JSC::JSObject::defineGetter): - (JSC::JSObject::defineSetter): - (JSC::JSObject::removeDirect): - (JSC::JSObject::putDirectFunction): - (JSC::JSObject::putDirectFunctionWithoutTransition): - (JSC::putDescriptor): - (JSC::JSObject::defineOwnProperty): - * runtime/JSObject.h: - (JSC::JSObject::putDirectOffset): - (JSC::JSObject::putUndefinedAtDirectOffset): - (JSC::JSObject::flattenDictionaryObject): - (JSC::JSObject::putDirectInternal): - (JSC::JSObject::putDirect): - (JSC::JSObject::putDirectFunction): - (JSC::JSObject::putDirectWithoutTransition): - (JSC::JSObject::putDirectFunctionWithoutTransition): - (JSC::JSValue::putDirect): - (JSC::JSObject::allocatePropertyStorageInline): - (JSC::JSObject::markChildrenDirect): - * runtime/JSStaticScopeObject.cpp: - (JSC::JSStaticScopeObject::markChildren): - * runtime/JSString.cpp: - (JSC::StringObject::create): - * runtime/JSValue.h: - * runtime/JSWrapperObject.cpp: - (JSC::JSWrapperObject::markChildren): - * runtime/JSWrapperObject.h: - (JSC::JSWrapperObject::internalValue): - (JSC::JSWrapperObject::setInternalValue): - * runtime/LiteralParser.cpp: - (JSC::LiteralParser::parse): - * runtime/Lookup.cpp: - (JSC::setUpStaticFunctionSlot): - * runtime/Lookup.h: - (JSC::lookupPut): - * runtime/MarkStack.h: - * runtime/MathObject.cpp: - (JSC::MathObject::MathObject): - * runtime/NativeErrorConstructor.cpp: - (JSC::NativeErrorConstructor::NativeErrorConstructor): - * runtime/NativeErrorPrototype.cpp: - (JSC::NativeErrorPrototype::NativeErrorPrototype): - * runtime/NumberConstructor.cpp: - (JSC::NumberConstructor::NumberConstructor): - (JSC::constructWithNumberConstructor): - * runtime/NumberObject.cpp: - (JSC::constructNumber): - * runtime/NumberPrototype.cpp: - (JSC::NumberPrototype::NumberPrototype): - * runtime/ObjectConstructor.cpp: - (JSC::ObjectConstructor::ObjectConstructor): - (JSC::objectConstructorGetOwnPropertyDescriptor): - * runtime/Operations.h: - (JSC::normalizePrototypeChain): - (JSC::resolveBase): - * runtime/PrototypeFunction.cpp: - (JSC::PrototypeFunction::PrototypeFunction): - * runtime/PutPropertySlot.h: - (JSC::PutPropertySlot::setExistingProperty): - (JSC::PutPropertySlot::setNewProperty): - (JSC::PutPropertySlot::base): - * runtime/RegExpConstructor.cpp: - (JSC::RegExpConstructor::RegExpConstructor): - * runtime/ScopeChain.cpp: - (JSC::ScopeChainNode::print): - * runtime/ScopeChain.h: - (JSC::ScopeChainNode::~ScopeChainNode): - (JSC::ScopeChainIterator::operator*): - (JSC::ScopeChainIterator::operator->): - (JSC::ScopeChain::top): - * runtime/ScopeChainMark.h: - (JSC::ScopeChain::markAggregate): - * runtime/SmallStrings.cpp: - (JSC::isMarked): - (JSC::SmallStrings::markChildren): - * runtime/SmallStrings.h: - (JSC::SmallStrings::emptyString): - (JSC::SmallStrings::singleCharacterString): - (JSC::SmallStrings::singleCharacterStrings): - * runtime/StringConstructor.cpp: - (JSC::StringConstructor::StringConstructor): - * runtime/StringObject.cpp: - (JSC::StringObject::StringObject): - * runtime/StringObject.h: - * runtime/StringPrototype.cpp: - (JSC::StringPrototype::StringPrototype): - * runtime/Structure.cpp: - (JSC::Structure::flattenDictionaryStructure): - * runtime/Structure.h: - (JSC::Structure::storedPrototypeSlot): - * runtime/WeakGCMap.h: - (JSC::WeakGCMap::uncheckedGet): - (JSC::WeakGCMap::uncheckedGetSlot): - (JSC::::get): - (JSC::::take): - (JSC::::set): - (JSC::::uncheckedRemove): - * runtime/WriteBarrier.h: Added. - (JSC::DeprecatedPtr::DeprecatedPtr): - (JSC::DeprecatedPtr::get): - (JSC::DeprecatedPtr::operator*): - (JSC::DeprecatedPtr::operator->): - (JSC::DeprecatedPtr::slot): - (JSC::DeprecatedPtr::operator UnspecifiedBoolType*): - (JSC::DeprecatedPtr::operator!): - (JSC::WriteBarrierBase::set): - (JSC::WriteBarrierBase::get): - (JSC::WriteBarrierBase::operator*): - (JSC::WriteBarrierBase::operator->): - (JSC::WriteBarrierBase::slot): - (JSC::WriteBarrierBase::operator UnspecifiedBoolType*): - (JSC::WriteBarrierBase::operator!): - (JSC::WriteBarrier::WriteBarrier): - (JSC::operator==): + https://bugs.webkit.org/show_bug.cgi?id=58131 -2011-01-28 Adam Roben <aroben@apple.com> + Provide a workaround for an obscure Studio 12 compiler bug, which + couldn't call src->~T() on a const T *src. - Chromium build fix after r76967 + * wtf/Vector.h: - * wtf/ThreadingPrimitives.h: Use OS(WINDOWS) instead of PLATFORM(WIN), to match other - similar macros in this file. +2011-04-12 Gavin Barraclough <barraclough@apple.com> -2011-01-28 Michael Saboff <msaboff@apple.com> + Reviewed by Oliver Hunt. - Potentially Unsafe HashSet of RuntimeObject* in RootObject definition - https://bugs.webkit.org/show_bug.cgi?id=53271 + https://bugs.webkit.org/show_bug.cgi?id=58395 + Exceptions thrown from property getters called from Array prototype functions can be missed - Reapplying this this change. No change from prior patch in - JavaScriptCore. + This is caught by an ASSERT in the top of Interpreter::executeCall. + Check for exceptions after accessing properties that could be getters. - Added new isValid() methods to check if a contained object in - a WeakGCMap is valid when using an unchecked iterator. + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncSort): + (JSC::arrayProtoFuncFilter): + (JSC::arrayProtoFuncMap): + (JSC::arrayProtoFuncEvery): + (JSC::arrayProtoFuncForEach): + (JSC::arrayProtoFuncSome): + (JSC::arrayProtoFuncReduce): + (JSC::arrayProtoFuncReduceRight): + - Add exception checks. - * runtime/WeakGCMap.h: - (JSC::WeakGCMap::isValid): +2011-04-12 Oliver Hunt <oliver@apple.com> -2011-01-27 Adam Roben <aroben@apple.com> + Reviewed by Geoffrey Garen. - Extract code to convert a WTF absolute time to a Win32 wait interval into a separate - function + Make API callback objects use weak handles to run their finalizers + https://bugs.webkit.org/show_bug.cgi?id=58389 - Fixes <http://webkit.org/b/53208> <rdar://problem/8922490> BinarySemaphore should wrap a - Win32 event + Make the API object's private data struct act as a finalizer for + an api object if the callback object has a API defined finalizer. - Reviewed by Dave Hyatt. + * API/JSCallbackObject.cpp: + (JSC::JSCallbackObjectData::finalize): + * API/JSCallbackObject.h: + * API/JSCallbackObjectFunctions.h: + (JSC::::init): + * heap/Handle.h: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export the new function. +2011-04-12 Geoffrey Garen <ggaren@apple.com> - * wtf/ThreadingPrimitives.h: Declare the new function. + Reviewed by Geoffrey Garen. - * wtf/ThreadingWin.cpp: - (WTF::ThreadCondition::timedWait): Moved code to convert the absolute time to a wait - interval from here... - (WTF::absoluteTimeToWaitTimeoutInterval): ...to here. + Cleaned up hash traits, and added hash traits for handles + https://bugs.webkit.org/show_bug.cgi?id=58381 -2011-01-28 Sam Weinig <sam@webkit.org> + * heap/Handle.h: + (JSC::HandleBase::swap): + (JSC::Handle::Handle): + (JSC::Handle::swap): Implemented swap, so we can rehash efficiently, and + without creating new handles (which is not allowed during handle finalization). - Reviewed by Maciej Stachowiak. + * heap/Strong.h: + (JSC::Strong::swap): Use new SimpleClassHashTraits to avoid duplication. - Add basic rubber banding support - <rdar://problem/8219429> - https://bugs.webkit.org/show_bug.cgi?id=53277 + * heap/Weak.h: + (JSC::Weak::isHashTableDeletedValue): + (JSC::Weak::Weak): + (JSC::Weak::swap): + (JSC::Weak::hashTableDeletedValue): Ditto. - * wtf/Platform.h: Add ENABLE for rubber banding. + * wtf/HashTraits.h: + (WTF::SimpleClassHashTraits::constructDeletedValue): + (WTF::SimpleClassHashTraits::isDeletedValue): Added SimpleClassHashTraits, + which are analogous to SimpleClassVectorTraits, since they are used in a + bunch of places. -2011-01-28 Sheriff Bot <webkit.review.bot@gmail.com> + * wtf/RetainPtr.h: Use new SimpleClassHashTraits to avoid duplication. - Unreviewed, rolling out r76893. - http://trac.webkit.org/changeset/76893 - https://bugs.webkit.org/show_bug.cgi?id=53287 + * wtf/text/StringHash.h: Use new SimpleClassHashTraits to avoid duplication. - It made some tests crash on GTK and Qt debug bots (Requested - by Ossy on #webkit). +2011-04-12 Geoffrey Garen <ggaren@apple.com> - * runtime/WeakGCMap.h: + Reviewed by Sam Weinig. -2011-01-27 Adam Barth <abarth@webkit.org> + Cleaned up some Vector traits, and added missing Vector traits for handles + https://bugs.webkit.org/show_bug.cgi?id=58372 - Reviewed by Eric Seidel. + * heap/Local.h: Inherit from SimpleClassVectorTraits to avoid duplication. - Add WTFString method to compare equality with Vector<UChar> - https://bugs.webkit.org/show_bug.cgi?id=53266 + * heap/Strong.h: Ditto. - I'm planning to use this method in the new XSS filter implementation, - but it seems generally useful. + * heap/Weak.h: Ditto. - * wtf/text/StringImpl.h: - (WTF::equalIgnoringNullity): - * wtf/text/WTFString.h: - (WTF::equalIgnoringNullity): + * parser/JSParser.cpp: Fixed a traits error. No test case because this + particular trait is not currently exercised by the parser. -2011-01-27 Michael Saboff <msaboff@apple.com> + * runtime/UString.h: No need to override canInitializeWithMemset, since + our base class sets it to true. - Potentially Unsafe HashSet of RuntimeObject* in RootObject definition - https://bugs.webkit.org/show_bug.cgi?id=53271 + * wtf/VectorTraits.h: Inherit from VectorTraitsBase to avoid duplication. - Added new isValid() methods to check if a contained object in - a WeakGCMap is valid when using an unchecked iterator. + * wtf/text/WTFString.h: No need to override canInitializeWithMemset, since + our base class sets it to true. - * runtime/WeakGCMap.h: - (JSC::WeakGCMap::isValid): +2011-04-12 Thouraya ANDOLSI <thouraya.andolsi@st.com> -2011-01-26 Sam Weinig <sam@webkit.org> + Reviewed by Eric Seidel. - Reviewed by Maciej Stachowiak. + [Qt] Enable JIT build for SH4 platforms. + https://bugs.webkit.org/show_bug.cgi?id=58317 + enable JIT build for QT backend for SH4 platforms. - Add events to represent the start/end of a gesture scroll - https://bugs.webkit.org/show_bug.cgi?id=53215 + * JavaScriptCore.pro: + * wtf/Platform.h: - * wtf/Platform.h: Add ENABLE for gesture events. +2011-04-11 Ben Taylor <bentaylor.solx86@gmail.com> -2011-01-26 Yael Aharon <yael.aharon@nokia.com> + Reviewed by Alexey Proskuryakov. - Reviewed by Laszlo Gombos. + https://bugs.webkit.org/show_bug.cgi?id=58289 - [Qt][Symbian] Fix --minimal build - https://bugs.webkit.org/show_bug.cgi?id=52839 + Fix compilation on Solaris/Studio 12 C++ in wtf/FastMalloc.cpp, + WTF::TCMalloc_PageHeap::runScavengerThread(void*) expected to return a value. - Move definition of USE_SYSTEM_MALLOC out of pri file. - Put it in platform.h instead. + * wtf/FastMalloc.cpp: + (WTF::TCMalloc_PageHeap::runScavengerThread): - * wtf/Platform.h: - * wtf/TCSystemAlloc.cpp: - * wtf/wtf.pri: +2011-04-11 Mark Rowe <mrowe@apple.com> -2011-01-26 Patrick Gansterer <paroga@webkit.org> + Fix the build. - Reviewed by Andreas Kling. + * JavaScriptCore.xcodeproj/project.pbxproj: Headers used outside of JavaScriptCore need to be marked as private. - [WINCE] Add JIT support to build system - https://bugs.webkit.org/show_bug.cgi?id=53079 +2011-04-11 Anna Cavender <annacc@chromium.org> - * CMakeListsWinCE.txt: + Reviewed by Eric Carlson. -2011-01-25 Adam Roben <aroben@apple.com> + Setup ENABLE(TRACK) feature define + https://bugs.webkit.org/show_bug.cgi?id=53556 - Windows Production build fix - Reviewed by Steve Falkenburg. + * Configurations/FeatureDefines.xcconfig: - * JavaScriptCore.vcproj/JavaScriptCore.make: Set BUILDSTYLE to Release_PGO at the very start - of the file so that ConfigurationBuildDir takes that into account. Also set it the right way - (by redefining the macro) rather than the wrong way (by modifying the environment variable). +2011-04-11 Geoffrey Garen <ggaren@apple.com> -2011-01-25 Steve Falkenburg <sfalken@apple.com> + Try to fix a few builds. + + Updated a few more build configurations for file moves. - Rubber-stamped by Adam Roben. + * CMakeListsWinCE.txt: - Windows production build fix. - Use correct environment variable escaping +2011-04-11 Gavin Barraclough <barraclough@apple.com> - * JavaScriptCore.vcproj/JavaScriptCore.make: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: + Reviewed by Sam Weinig. -2011-01-25 Oliver Hunt <oliver@apple.com> + Bug 58263 - Use EncodedValueDescriptor on both JSVALUE32_64, JSVALUE64 - Reviewed by Gavin Barraclough. + The JSJITInterface already uses EncodedValueDescriptor to access the tag/payload + separately on JSVALUE64, even though EncodedValueDescriptor is not used in + JSVALUE64's implementation of JSValue. Remove the separate definition for m_ptr + on X86_64. Using the union allows us to remove a layer of makeImmediate()/ + immedaiteValue() methods. - JSON.stringify processing time exponentially grows with size of object - https://bugs.webkit.org/show_bug.cgi?id=51922 + * dfg/DFGNonSpeculativeJIT.cpp: + (JSC::DFG::NonSpeculativeJIT::compile): + * dfg/DFGSpeculativeJIT.cpp: + (JSC::DFG::SpeculativeJIT::compile): + * jit/JITInlineMethods.h: + (JSC::JIT::emitTagAsBoolImmediate): + * jit/JITOpcodes.cpp: + (JSC::JIT::emit_op_not): + (JSC::JIT::emit_op_jeq_null): + (JSC::JIT::emit_op_jneq_null): + (JSC::JIT::emit_op_get_pnames): + (JSC::JIT::emit_op_eq_null): + (JSC::JIT::emit_op_neq_null): + (JSC::JIT::emitSlow_op_not): + * runtime/JSCell.h: + * runtime/JSValue.h: + * runtime/JSValueInlineMethods.h: + (JSC::JSValue::encode): + (JSC::JSValue::decode): + (JSC::JSValue::operator==): + (JSC::JSValue::operator!=): + (JSC::JSValue::JSValue): + (JSC::JSValue::operator bool): + (JSC::JSValue::asInt32): + (JSC::JSValue::isUndefinedOrNull): + (JSC::JSValue::isBoolean): + (JSC::JSValue::isCell): + (JSC::JSValue::isInt32): + (JSC::JSValue::asDouble): + (JSC::JSValue::isNumber): + (JSC::JSValue::asCell): - Remove last use of reserveCapacity from JSON stringification, as it results - in appalling append behaviour when there are a large number of property names - and nothing else. +2011-04-11 Geoffrey Garen <ggaren@apple.com> - * runtime/JSONObject.cpp: - (JSC::Stringifier::appendQuotedString): + Try to fix a few builds. + + Updated a few more build configurations for file moves. -2011-01-25 Antti Koivisto <antti@apple.com> + * CMakeListsEfl.txt: + * wscript: - Not reviewed. - - Try to fix windows build. +2011-04-11 Geoffrey Garen <ggaren@apple.com> - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + Build fix: Updated a file name. -2011-01-25 Antti Koivisto <antti@apple.com> + * CMakeLists.txt: - Reviewed by Oliver Hunt. +2011-04-11 Geoffrey Garen <ggaren@apple.com> - REGRESSION: Leak in JSParser::Scope::copyCapturedVariablesToVector() - https://bugs.webkit.org/show_bug.cgi?id=53061 - - Cache did not know about the subclass so failed to fully delete the items. - Got rid of the subclass and moved the classes to separate files. + Rubber-stamped by Sam Weinig. + + Moved remaining heap implementation files to the heap folder. + * Android.mk: * CMakeLists.txt: - * GNUmakefile.am: - * JavaScriptCore.exp: + * GNUmakefile.list.am: * JavaScriptCore.gypi: * JavaScriptCore.pro: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: - * parser/JSParser.cpp: - (JSC::JSParser::Scope::saveFunctionInfo): - (JSC::JSParser::Scope::restoreFunctionInfo): - (JSC::JSParser::findCachedFunctionInfo): - (JSC::JSParser::parseFunctionInfo): - * parser/SourceProvider.h: - * parser/SourceProviderCache.cpp: Added. - (JSC::SourceProviderCache::~SourceProviderCache): - (JSC::SourceProviderCache::byteSize): - * parser/SourceProviderCache.h: Added. - (JSC::SourceProviderCache::SourceProviderCache): - (JSC::SourceProviderCache::add): - (JSC::SourceProviderCache::get): - * parser/SourceProviderCacheItem.h: Added. - (JSC::SourceProviderCacheItem::SourceProviderCacheItem): - (JSC::SourceProviderCacheItem::approximateByteSize): - (JSC::SourceProviderCacheItem::closeBraceToken): - -2011-01-25 Marcilio Mendonca <mamendonca@rim.com> - - Reviewed by Darin Adler. - - Bug 53087: Refactoring: replaced a hanging "else" with a "return" - statement - https://bugs.webkit.org/show_bug.cgi?id=53087. - - Refactoring work: Replaced a hanging "else" within an #if PLATFORM(M - with a "return" so that the code is more readable and less error pro - (e.g., "else" doesn't use braces so adding extra lines to the else - block won't have any effect; even worse, code still compiles - successfully. - - * wtf/Assertions.cpp: - -2011-01-24 Chris Marrin <cmarrin@apple.com> - - Reviewed by Eric Seidel. - - Change ENABLE_3D_CANVAS to ENABLE_WEBGL - https://bugs.webkit.org/show_bug.cgi?id=53041 - - * Configurations/FeatureDefines.xcconfig: - -2011-01-25 Adam Roben <aroben@apple.com> - - Windows Production build fix - - * JavaScriptCore.vcproj/JavaScriptCore.make: Added a missing "set". - -2011-01-25 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Eric Seidel. - - Add missing defines for COMPILER(RVCT) && CPU(ARM_THUMB2) - https://bugs.webkit.org/show_bug.cgi?id=52949 - - * jit/JITStubs.cpp: - -2011-01-24 Adam Roben <aroben@apple.com> - - Windows Production build fix + * heap/ConservativeRoots.cpp: Copied from runtime/ConservativeSet.cpp. + * heap/ConservativeRoots.h: Copied from runtime/ConservativeSet.h. + * heap/Handle.h: + * heap/Heap.cpp: + * heap/MachineStackMarker.cpp: Copied from runtime/MachineStackMarker.cpp. + * heap/MachineStackMarker.h: Copied from runtime/MachineStackMarker.h. + * heap/MarkStack.cpp: Copied from runtime/MarkStack.cpp. + * heap/MarkStack.h: Copied from runtime/MarkStack.h. + * heap/MarkStackPosix.cpp: Copied from runtime/MarkStackPosix.cpp. + * heap/MarkStackSymbian.cpp: Copied from runtime/MarkStackSymbian.cpp. + * heap/MarkStackWin.cpp: Copied from runtime/MarkStackWin.cpp. + * heap/MarkedBlock.cpp: Copied from runtime/MarkedBlock.cpp. + * heap/MarkedBlock.h: Copied from runtime/MarkedBlock.h. + * heap/MarkedSpace.cpp: Copied from runtime/MarkedSpace.cpp. + * heap/MarkedSpace.h: Copied from runtime/MarkedSpace.h. + * interpreter/RegisterFile.cpp: + * runtime/ConservativeSet.cpp: Removed. + * runtime/ConservativeSet.h: Removed. + * runtime/MachineStackMarker.cpp: Removed. + * runtime/MachineStackMarker.h: Removed. + * runtime/MarkStack.cpp: Removed. + * runtime/MarkStack.h: Removed. + * runtime/MarkStackPosix.cpp: Removed. + * runtime/MarkStackSymbian.cpp: Removed. + * runtime/MarkStackWin.cpp: Removed. + * runtime/MarkedBlock.cpp: Removed. + * runtime/MarkedBlock.h: Removed. + * runtime/MarkedSpace.cpp: Removed. + * runtime/MarkedSpace.h: Removed. + +2011-04-11 Gavin Barraclough <barraclough@apple.com> - * JavaScriptCore.vcproj/JavaScriptCore.make: Update for move of JavaScriptCore into Source. + Windows build fix. -2011-01-24 Peter Varga <pvarga@webkit.org> + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - Reviewed by Oliver Hunt. +2011-04-09 Gavin Barraclough <barraclough@apple.com> - Optimize regex patterns which contain empty alternatives - https://bugs.webkit.org/show_bug.cgi?id=51395 + Reviewed by Sam Weinig. - Eliminate the empty alternatives from the regex pattern and convert it to do - the matching in an easier way. + Bug 58198 - Clean up JSValue implementation for JSVALUE64 - * yarr/YarrPattern.cpp: - (JSC::Yarr::YarrPatternConstructor::atomParenthesesEnd): + Remove JSNumberCell, JSImmediate, unify some methods between JSVALUE32_64/JSVALUE64 -2011-01-24 Andras Becsi <abecsi@webkit.org> + JSNumberCell.h largely just contained the constructors for JSValue on JSVALUE64, + which should not have been here. JSImmediate mostly contained uncalled methods, + along with the internal implementation of the JSValue constructors split unnecessarily + across a number of layers of function calls. These could largely be merged back + together. Many methods and constructors from JSVALUE32_64 and JSVALUE64 can by unified. - Reviewed by Csaba Osztrogonác. + The .cpp files were empty. - [Qt] Move project files into Source - https://bugs.webkit.org/show_bug.cgi?id=52891 + Moving all these methods into JSValue.h seems to be a repro measurable regression, so + I have kept these methods in a separate JSValueInlineMethods.h. Adding the 64-bit tag + values as static const members of JSValue also measures as a repro regression, so I + have made these #defines. - * JavaScriptCore.pri: + * Android.mk: + * CMakeLists.txt: + * GNUmakefile.list.am: + * JavaScriptCore.exp: + * JavaScriptCore.gypi: * JavaScriptCore.pro: - * jsc.pro: - -2011-01-23 Mark Rowe <mrowe@apple.com> - - Follow-up to r76477. - - Fix the scripts that detect problematic code such as static initializers - and destructors, weak vtables, inappropriate files in the framework wrappers, - and public headers including private headers. These had all been broken - since the projects were moved in to the Source directory as the paths to the - scripts were not updated at that time. - + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: + - Removed JSImmediate.h, JSNumberCell.h. + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitLoad): + - Removed class JSImmediate. + * dfg/DFGNonSpeculativeJIT.cpp: + (JSC::DFG::NonSpeculativeJIT::compile): + - Removed class JSImmediate. + * dfg/DFGSpeculativeJIT.cpp: + (JSC::DFG::SpeculativeJIT::compile): + - Removed class JSImmediate. + * jit/JITArithmetic.cpp: + (JSC::JIT::compileBinaryArithOpSlowCase): + - Removed class JSImmediate. + * jit/JITInlineMethods.h: + (JSC::JIT::emitJumpIfJSCell): + (JSC::JIT::emitJumpIfNotJSCell): + (JSC::JIT::emitJumpIfImmediateInteger): + (JSC::JIT::emitJumpIfNotImmediateInteger): + (JSC::JIT::emitFastArithDeTagImmediate): + (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero): + (JSC::JIT::emitFastArithReTagImmediate): + (JSC::JIT::emitTagAsBoolImmediate): + - Removed class JSImmediate. + * jit/JITOpcodes.cpp: + (JSC::JIT::emit_op_not): + (JSC::JIT::emit_op_jeq_null): + (JSC::JIT::emit_op_jneq_null): + (JSC::JIT::emit_op_get_pnames): + (JSC::JIT::emit_op_eq_null): + (JSC::JIT::emit_op_neq_null): + (JSC::JIT::emitSlow_op_not): + - Removed class JSImmediate. + * jit/JSInterfaceJIT.h: + - Removed class JSImmediate. + * runtime/JSCell.h: + - Removed JSImmediate.h, JSNumberCell.h. + * runtime/JSImmediate.cpp: Removed. + * runtime/JSImmediate.h: Removed. + * runtime/JSNumberCell.cpp: Removed. + * runtime/JSNumberCell.h: Removed. + - Removed. + * runtime/JSObject.h: + - Removed JSImmediate.h, JSNumberCell.h. + * runtime/JSString.h: + - Removed JSImmediate.h, JSNumberCell.h. + * runtime/JSValue.h: + - Added tags for JSVALUE64, moved out some JSVALUE32_64 methods, unified with JSVALUE64. + * runtime/JSValueInlineMethods.h: Added. + (JSC::JSValue::toInt32): + (JSC::JSValue::toUInt32): + (JSC::JSValue::isUInt32): + (JSC::JSValue::asUInt32): + (JSC::JSValue::uncheckedGetNumber): + (JSC::JSValue::toJSNumber): + (JSC::jsNaN): + (JSC::JSValue::getNumber): + (JSC::JSValue::getBoolean): + (JSC::JSValue::JSValue): + (JSC::JSValue::encode): + (JSC::JSValue::decode): + (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::isDouble): + (JSC::JSValue::isTrue): + (JSC::JSValue::isFalse): + (JSC::JSValue::tag): + (JSC::JSValue::payload): + (JSC::JSValue::asInt32): + (JSC::JSValue::asDouble): + (JSC::JSValue::asCell): + (JSC::JSValue::isNumber): + (JSC::JSValue::isBoolean): + (JSC::JSValue::makeImmediate): + (JSC::JSValue::immediateValue): + (JSC::reinterpretDoubleToIntptr): + (JSC::reinterpretIntptrToDouble): + - Methods moved here from JSImmediate.h/JSNumberCell.h/JSValue.h. + * runtime/Operations.h: + - Removed JSImmediate.h, JSNumberCell.h. + * wtf/StdLibExtras.h: + - Export bitwise_cast. -2011-01-23 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Darin Adler. - - Use WTF::StringHasher in WebCore - https://bugs.webkit.org/show_bug.cgi?id=52934 - - Add an additional function to calculate the hash - of data with a runtimedependent size. - - * wtf/StringHasher.h: - (WTF::StringHasher::createBlobHash): - -2011-01-23 Patrick Gansterer <paroga@webkit.org> - - Reviewed by David Kilzer. - - Fix comment in String::ascii() - https://bugs.webkit.org/show_bug.cgi?id=52980 - - * wtf/text/WTFString.cpp: - (WTF::String::ascii): - -2011-01-23 Patrick Gansterer <paroga@webkit.org> - - Reviewed by David Kilzer. - - Add String::containsOnlyLatin1() - https://bugs.webkit.org/show_bug.cgi?id=52979 - - * wtf/text/WTFString.h: - (WTF::String::containsOnlyLatin1): - (WTF::charactersAreAllLatin1): - -2011-01-23 Patrick Gansterer <paroga@webkit.org> +2011-04-11 Thouraya ANDOLSI <thouraya.andolsi@st.com> Reviewed by Oliver Hunt. - Remove obsolete JSVALUE32 code - https://bugs.webkit.org/show_bug.cgi?id=52948 + SH4 JIT SUPPORT. + https://bugs.webkit.org/show_bug.cgi?id=44329 - r70111 removed support for JSVALUE32. - ARM, MIPS and X86 support JSVALUE32_64 only. + Add JIT remaining part for SH4 platforms. + * assembler/MacroAssemblerSH4.h: + * jit/JIT.h: + * jit/JITInlineMethods.h: + * jit/JITOpcodes32_64.cpp: + * jit/JITPropertyAccess32_64.cpp: * jit/JITStubs.cpp: + * jit/JITStubs.h: + * jit/JSInterfaceJIT.h: -2011-01-22 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Dan Bernstein. - - ASSERT running run-webkit-tests --threaded. - https://bugs.webkit.org/show_bug.cgi?id=52971 - - SunSpider and v8 report no change. - - * runtime/ConservativeSet.cpp: - (JSC::ConservativeSet::grow): - (JSC::ConservativeSet::add): - * runtime/ConservativeSet.h: Tweaked the inline capacity to 128, and - the growth policy to 2X, to make SunSpider and v8 happy. - (JSC::ConservativeSet::ConservativeSet): - (JSC::ConservativeSet::~ConservativeSet): - (JSC::ConservativeSet::mark): Use OSAllocator directly, instead of malloc. - Malloc is forbidden during a multi-threaded mark phase because it can - cause deadlock. - -2011-01-22 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Geoffrey Garen. - - Rubber-stamped by Maciej Stachowiak. +2011-04-10 Geoffrey Garen <ggaren@apple.com> - A few of Maciej's review suggestions for my last patch. - https://bugs.webkit.org/show_bug.cgi?id=52946 + Rubber-stamped by Beth Dakin. - SunSpider reports no change. + Moved Heap.h and Heap.cpp to the heap folder, because anything less + would be uncivilized. * Android.mk: * CMakeLists.txt: - * GNUmakefile.am: + * GNUmakefile.list.am: * JavaScriptCore.gypi: * JavaScriptCore.pro: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: Updated build systems. - - * runtime/ConservativeSet.cpp: Added. - (JSC::isPointerAligned): - (JSC::ConservativeSet::add): - * runtime/ConservativeSet.h: Added. - (JSC::ConservativeSet::ConservativeSet): - (JSC::ConservativeSet::mark): Split ConservativeSet out into its own - file, and moved the conservative check into ConservativeSet::add, making - ConservativeSet's responsibility clearer. - - * runtime/Heap.cpp: - (JSC::Heap::markRoots): - * runtime/MachineStackMarker.cpp: - (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal): - (JSC::MachineStackMarker::markOtherThreadConservatively): - * runtime/MachineStackMarker.h: - * runtime/MarkStack.h: Updated for changes above. - -2011-01-22 Patrick Gansterer <paroga@webkit.org> - - Unreviewed WinCE build fix for r76430. - - * runtime/MachineStackMarker.cpp: - (JSC::swapIfBackwards): - -2011-01-21 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Beth Dakin. - - Reorganized MarkedSpace, making many of its functions private. - - * runtime/JSCell.h: - (JSC::JSCell::Heap::heap): - * runtime/MarkedSpace.h: - (JSC::MarkedSpace::globalData): - (JSC::MarkedSpace::heap): - -2011-01-21 Geoffrey Garen <ggaren@apple.com> - - Try to fix build: moved helper function out of #ifdef. - - * runtime/MachineStackMarker.cpp: - (JSC::swapIfBackwards): - -2011-01-21 Geoffrey Garen <ggaren@apple.com> - - Rubber-stamped by Maciej Stachowiak. - - A few of Maciej's review suggestions for my last patch. - https://bugs.webkit.org/show_bug.cgi?id=52946 - - SunSpider reports no change. - - * runtime/MachineStackMarker.cpp: - (JSC::swapIfBackwards): Added a helper function for handling platforms - where the stack can grow in any direction. - - (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal): - (JSC::MachineStackMarker::markOtherThreadConservatively): Use the helper - function. - - (JSC::isPointerAligned): Use "!" instead of "==0" because a robot told me to. - - (JSC::MachineStackMarker::markConservatively): Changed to use a more - standard looping idiom, and to use the helper function above. - - * runtime/MarkedSpace.h: - (JSC::MarkedSpace::isCellAligned): Use "!" instead of "==0" because a robot told me to. - -2011-01-21 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Maciej Stachowiak. - - Cleaned up some conservative marking code. - https://bugs.webkit.org/show_bug.cgi?id=52946 - - SunSpider reports no change. - - * interpreter/RegisterFile.h: No need for a special marking function, - since we already expose a start() and end(). - - * runtime/Heap.cpp: - (JSC::Heap::registerFile): - (JSC::Heap::markRoots): - * runtime/Heap.h: - (JSC::Heap::contains): Migrated markConservatively() to the machine stack - marker class. Now, Heap just provides a contains() function, which the - machine stack marker uses for checking whether a pointer points into the heap. - - * runtime/MachineStackMarker.cpp: - (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal): - (JSC::MachineStackMarker::markOtherThreadConservatively): - (JSC::isPointerAligned): - (JSC::MachineStackMarker::markConservatively): - * runtime/MachineStackMarker.h: Move the conservative marking code here. - - * runtime/MarkStack.h: - (JSC::ConservativeSet::add): - (JSC::ConservativeSet::mark): Changed to using a vector instead of hash - set. Vector seems to be a bit faster, and it generates smaller code. - - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::containsSlowCase): - * runtime/MarkedSpace.h: - (JSC::MarkedSpace::isCellAligned): - (JSC::MarkedSpace::isPossibleCell): - (JSC::MarkedSpace::contains): Kept the code for determining whether a - pointer pointed into marked space, and moved the code for marking - a set of conservative pointers into the machine stack marker. - - * wtf/HashSet.h: - (WTF::::add): Added two missing inlines that I noticed while testing - vector vs hash set. - -2011-01-21 Mark Rowe <mrowe@apple.com> - - Reviewed by Sam Weinig. - - Work around a Clang bug <rdar://problem/8876150> that leads to it incorrectly emitting an access - control warning when a client tries to use operator bool exposed above via "using PageBlock::operator bool". - - * wtf/PageAllocation.h: - (WTF::PageAllocation::operator bool): - * wtf/PageReservation.h: - (WTF::PageReservation::operator bool): - -2011-01-21 Michael Saboff <msaboff@apple.com> - - Reviewed by Oliver Hunt. - - [RegexFuzz] Hang with forward assertion - https://bugs.webkit.org/show_bug.cgi?id=52825 - <rdar://problem/8894332> - - The backtrackTo label from the first term in a list of terms is - being overwritten by processing of subsequent terms. Changed - copyBacktrackToLabel() to check for an existing bcaktrackTo label - before copying and renamed it to propagateBacktrackToLabel() since - it no longer copies. - - * yarr/YarrJIT.cpp: - (JSC::Yarr::YarrGenerator::BacktrackDestination::propagateBacktrackToLabel): - (JSC::Yarr::YarrGenerator::generateParenthesesSingle): - -2011-01-21 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Sam Weinig. - - Moved the mark stack from global data to the heap, since it pertains - to the heap, and not the virtual machine as a whole. - https://bugs.webkit.org/show_bug.cgi?id=52930 - - SunSpider reports no change. - - * runtime/Heap.cpp: - (JSC::Heap::Heap): - (JSC::Heap::markRoots): - * runtime/Heap.h: - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::JSGlobalData): - * runtime/JSGlobalData.h: + * JavaScriptCore.xcodeproj/project.pbxproj: + * heap/Heap.cpp: Copied from JavaScriptCore/runtime/Heap.cpp. + * heap/Heap.h: Copied from JavaScriptCore/runtime/Heap.h. + * runtime/Heap.cpp: Removed. + * runtime/Heap.h: Removed. -2011-01-21 Peter Gal <galpeter@inf.u-szeged.hu> +2011-04-10 Patrick Gansterer <paroga@webkit.org> Reviewed by Darin Adler. - REGRESSION(r76177): All JavaScriptCore tests fail on ARM - https://bugs.webkit.org/show_bug.cgi?id=52814 - - Get the approximateByteSize value before releasing the OwnPtr. - - * parser/JSParser.cpp: - (JSC::JSParser::parseFunctionInfo): - -2011-01-21 Xan Lopez <xlopez@igalia.com> + Remove duplicated code from AtomicString::fromUTF8() + https://bugs.webkit.org/show_bug.cgi?id=53711 - Reviewed by Martin Robinson. - - Remove unnecessary <stdio.h> include - https://bugs.webkit.org/show_bug.cgi?id=52884 - - * jit/JIT.cpp: remove unnecessary include. - -2011-01-20 Ryosuke Niwa <rniwa@webkit.org> + * JavaScriptCore.exp: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * wtf/text/AtomicString.cpp: + (WTF::AtomicString::fromUTF8Internal): + * wtf/text/AtomicString.h: + (WTF::AtomicString::fromUTF8): + * wtf/unicode/UTF8.cpp: + (WTF::Unicode::calculateStringHashAndLengthFromUTF8): + * wtf/unicode/UTF8.h: - Reviewed by Maciej Stachowiak. +2011-04-10 Maciej Stachowiak <mjs@apple.com> - Added OwnPtrCommon.h because OwnArrayPtr::set calls deleteOwnedPtr. + Not reviewed. - * wtf/OwnArrayPtr.h: + Fix build (at least on Lion) by adding some newish header files to + PrivateHeaders. -2011-01-20 Patrick Gansterer <paroga@webkit.org> + * JavaScriptCore.xcodeproj/project.pbxproj: - Reviewed by Oliver Hunt. +2011-04-09 Geoffrey Garen <ggaren@apple.com> - [WINCE] Remove obsolete JSVALUE32 code - https://bugs.webkit.org/show_bug.cgi?id=52450 + Not reviewed. - Remove the "offset hack" in create_jit_stubs, since we - only support JSVALUE32_64 in the meantime. + Try recommitting some things svn left out of its last commit. - * create_jit_stubs: Removed offset argument - * jit/JITStubs.cpp: + * heap/Handle.h: + (JSC::HandleBase::operator!): + (JSC::HandleBase::HandleBase): + (JSC::HandleBase::slot): + (JSC::HandleBase::setSlot): + (JSC::Handle::Handle): + * heap/HandleHeap.cpp: + (JSC::HandleHeap::markWeakHandles): + (JSC::HandleHeap::finalizeWeakHandles): + (JSC::HandleHeap::isValidWeakNode): + * heap/HandleHeap.h: + (JSC::HandleHeap::globalData): -2011-01-20 Geoffrey Garen <ggaren@apple.com> +2011-04-08 Geoffrey Garen <ggaren@apple.com> Reviewed by Oliver Hunt. - When marking conservatively, guard against reviving dead objects. - https://bugs.webkit.org/show_bug.cgi?id=52840 + A few heap-related renames and file moves. + + WeakGCPtr<T> => Weak<T> + Global<T> => Strong<T> + collector/ => heap/ + collector/* => heap/* + runtime/WeakGCPtr.h => heap/Weak.h - SunSpider and v8 say no change. + (Eventually, even more files should move into the heap directory. Like + Heap.h and Heap.cpp, for example.) + * API/JSClassRef.h: + * CMakeLists.txt: + * GNUmakefile.am: + * GNUmakefile.list.am: + * JavaScriptCore.gypi: + * JavaScriptCore.pri: + * JavaScriptCore.pro: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: + * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: + * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: + * JavaScriptCore.xcodeproj/project.pbxproj: + * bytecode/SamplingTool.h: + * bytecompiler/BytecodeGenerator.h: + * collector: Removed. + * collector/handles: Removed. + * collector/handles/Global.h: Removed. + * collector/handles/Handle.h: Removed. + * collector/handles/HandleHeap.cpp: Removed. + * collector/handles/HandleHeap.h: Removed. + * collector/handles/HandleStack.cpp: Removed. + * collector/handles/HandleStack.h: Removed. + * collector/handles/Local.h: Removed. + * collector/handles/LocalScope.h: Removed. + * heap: Copied from collector. + * heap/Handle.h: Copied from collector/handles/Handle.h. + * heap/HandleHeap.cpp: Copied from collector/handles/HandleHeap.cpp. + * heap/HandleHeap.h: Copied from collector/handles/HandleHeap.h. + * heap/HandleStack.cpp: Copied from collector/handles/HandleStack.cpp. + * heap/HandleStack.h: Copied from collector/handles/HandleStack.h. + * heap/Local.h: Copied from collector/handles/Local.h. + * heap/LocalScope.h: Copied from collector/handles/LocalScope.h. + * heap/Strong.h: Copied from collector/handles/Global.h. + (JSC::Strong::Strong): + (JSC::Strong::~Strong): + (JSC::Strong::operator=): + * heap/Weak.h: Copied from runtime/WeakGCPtr.h. + (JSC::Weak::Weak): + (JSC::Weak::~Weak): + * heap/handles: Removed. * interpreter/RegisterFile.h: - (JSC::RegisterFile::markCallFrames): Updated to use the ConservativeSet API. - - * runtime/Heap.cpp: - (JSC::Heap::recordExtraCost): No need to guard against conservative - marking reviving dead objects anymore, since the conservative marking - mechanism guards against this now. - - (JSC::Heap::markConservatively): - (JSC::Heap::markProtectedObjects): - (JSC::Heap::markTempSortVectors): Don't drain the mark stack inside a - marking function. We want to establish a separation of concerns between - visiting roots and draining the mark stack. - - (JSC::Heap::markRoots): Gather the set of conservative references before - clearning mark bits, because conservative marking now uses the mark bits - to determine if a reference is valid, and avoid reviving dead objects. - - (JSC::Heap::collectAllGarbage): No need to guard against conservative - marking reviving dead objects anymore, since the conservative marking - mechanism guards against this now. + * jit/JITStubs.cpp: + (JSC::JITThunks::hostFunctionStub): + * jit/JITStubs.h: + * runtime/Structure.h: + * runtime/WeakGCPtr.h: Removed. - * runtime/Heap.h: Updated to use the ConservativeSet API. +2011-04-08 Alpha Lam <hclam@chromium.org> - * runtime/MachineStackMarker.cpp: - (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal): - (JSC::MachineStackMarker::markCurrentThreadConservatively): - (JSC::MachineStackMarker::markOtherThreadConservatively): - (JSC::MachineStackMarker::markMachineStackConservatively): - * runtime/MachineStackMarker.h: Ditto. + Unreviewed, rolling out r83335. + http://trac.webkit.org/changeset/83335 + https://bugs.webkit.org/show_bug.cgi?id=53556 - * runtime/MarkStack.h: - (JSC::ConservativeSet::add): - (JSC::ConservativeSet::mark): Added ConservativeSet, for gathering the - set of conservative references. This is different from MarkStack, since - we don't mark the set until it is completely gathered. + GTK and QT bots are broken - * runtime/MarkedSpace.cpp: - (JSC::MarkedSpace::freeBlock): - (JSC::MarkedSpace::resizeBlocks): - (JSC::MarkedSpace::markConservatively): - * runtime/MarkedSpace.h: When marking conservatively, guard against - reviving dead objects. - -2011-01-20 Siddharth Mathur <siddharth.mathur@nokia.com> + * Configurations/FeatureDefines.xcconfig: - Reviewed by Geoffrey Garen. +2011-04-08 Gavin Barraclough <barraclough@apple.com> - [Symbian] Fix StackBounds::initialize() - https://bugs.webkit.org/show_bug.cgi?id=52842 + Ooops, typo, build fix. - * wtf/StackBounds.cpp: - (WTF::StackBounds::initialize): Use TThreadStackInfo.iLimit for stack limit + * dfg/DFGByteCodeParser.cpp: + (JSC::DFG::ByteCodeParser::parse): -2011-01-20 Michael Saboff <msaboff@apple.com> +2011-04-08 Gavin Barraclough <barraclough@apple.com> Reviewed by Oliver Hunt. - <rdar://problem/8890203> [RegexFuzz] Crash in generated code (52773) - https://bugs.webkit.org/show_bug.cgi?id=52773 + Bug 58154 - Add support for comparison operators to the DFG JIT. + + Add support for <, <=, ==, ===, and also !. Add support for all corresponding + bytecode ops, including the not- and -null forms. Initially add functionally + correct support, we'll revisit the performance. + + * dfg/DFGByteCodeParser.cpp: + (JSC::DFG::ByteCodeParser::ByteCodeParser): + (JSC::DFG::ByteCodeParser::constantNull): + (JSC::DFG::ByteCodeParser::parse): + - Add support for parsing of bytecode opcodes, + * dfg/DFGJITCodeGenerator.h: + (JSC::DFG::JITCodeGenerator::callOperation): + - Add new operation call types, return bool values. + * dfg/DFGNode.h: + - Add new node types. + * dfg/DFGNonSpeculativeJIT.cpp: + (JSC::DFG::NonSpeculativeJIT::compile): + - Add code generation for new nodes. + * dfg/DFGOperations.cpp: + (JSC::DFG::operationCompareLess): + (JSC::DFG::operationCompareLessEq): + (JSC::DFG::operationCompareEq): + (JSC::DFG::operationCompareStrictEq): + (JSC::DFG::dfgConvertJSValueToBoolean): + * dfg/DFGOperations.h: + - Add operation callbacks to implement new ops. + * dfg/DFGSpeculativeJIT.cpp: + (JSC::DFG::SpeculativeJIT::compile): + - Add code generation for new nodes. + * jit/JITOpcodes.cpp: + (JSC::JIT::privateCompileCTIMachineTrampolines): + - Switched to a simpler <0 check, rather than relying on an internal value in JSImmediate. + * jit/JITPropertyAccess.cpp: + (JSC::JIT::privateCompilePatchGetArrayLength): + - Switched to a simpler <0 check, rather than relying on an internal value in JSImmediate. + * runtime/JSImmediate.h: + - Make tag values public, rather than relying on a friend - this matches JSVALUE32_64. - Fixed case where an existing DataLabelPtr is overwritten. The - replacing DataLabelPtr is now resolved immediately in - linkDataLabelToBacktrackIfExists(). Cleanup - eliminated bool - return value for the routine as it was never used. +2011-04-07 Anna Cavender <annacc@chromium.org> - * yarr/YarrJIT.cpp: - (JSC::Yarr::YarrGenerator::TermGenerationState::linkDataLabelToBacktrackIfExists): + Reviewed by Eric Carlson. -2011-01-20 Andras Becsi <abecsi@webkit.org> + Setup ENABLE(TRACK) feature define + https://bugs.webkit.org/show_bug.cgi?id=53556 - Reviewed by Csaba Osztrogonác. - [Qt][WK2] WebKit2 enabled build fails to link + * Configurations/FeatureDefines.xcconfig: - Work around undefined reference linking issues until the buildsystem gets redesigned. - These issues first occured in minimal builds (see BUG 50519). +2011-04-07 Balazs Kelemen <kbalazs@webkit.org> - * JavaScriptCore.pri: link as whole-archive for WebKit2 builds + Reviewed by Kenneth Rohde Christiansen. -2011-01-20 Zoltan Horvath <zoltan@webkit.org> + [WK2][Qt][GTK] Introduce common use flag for the shared UNIX domain socket IPC implementation + https://bugs.webkit.org/show_bug.cgi?id=58030 - Reviewed by Csaba Osztrogonác. + * wtf/Platform.h: Introduce USE(UNIX_DOMAIN_SOCKETS) for WebKit2. - Refactoring of the custom allocation framework - https://bugs.webkit.org/show_bug.cgi?id=49897 +2011-04-08 Adam Roben <aroben@apple.com> - Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589). - The modification replaces Noncopyable and FastAllocBase classes and these inherits with their - equivalent macro implementation at the necessary places. + Clean build fix - * wtf/FastAllocBase.h: Turn FastAllocBase's implementation into a macro. + * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: Don't try to delete directories that + don't exist. Also switched from del /s to rmdir /s, which has the benefit of deleting the + directory itself in addition to the files it contains. -2011-01-20 Mark Rowe <mrowe@apple.com> +2011-04-07 Geoffrey Garen <ggaren@apple.com> Reviewed by Maciej Stachowiak. - Follow-up to r75766 / <rdar://problem/5469576>. - - We were failing to initialize the key, causing all sorts of unexpected behavior. + Some Handle<T> cleanup + https://bugs.webkit.org/show_bug.cgi?id=58109 - * wtf/FastMalloc.cpp: - (WTF::setThreadHeap): - (WTF::TCMalloc_ThreadCache::GetThreadHeap): - (WTF::TCMalloc_ThreadCache::InitTSD): Ensure that the key is initialized. - -2011-01-18 Geoffrey Garen <ggaren@apple.com> + * bytecode/SamplingTool.h: Sorted alphabetically because that's the + WebKit style. Added a Global.h #include that was previously missing + but harmless. - Reviewed by Darin Adler. - - Rolled back in r76078, with crash fixed. - https://bugs.webkit.org/show_bug.cgi?id=52668 + * collector/handles/Global.h: + (JSC::Global::Global): Added a null constructor. No need for a special + tag, and the tag is incompatible with some data structures. - * runtime/JSGlobalObject.cpp: - (JSC::JSGlobalObject::markChildren): Account for the fact that the global - object moves its variables into and out of the register file. While out - of the register file, the symbol table's size is not an accurate count - for the size of the register array, since the BytecodeGenerator might - be compiling, adding items to the symbol table. + (JSC::Global::isHashTableDeletedValue): + (JSC::Global::~Global): + (JSC::Global::set): + (JSC::Global::operator=): + (JSC::Global::clear): + (JSC::Global::hashTableDeletedValue): Reordered constructors to be near + each other. + + (JSC::Global::setWithWriteBarrier): Renamed internalSet to + setWithWriteBarrier for clarity, and funneled more code into using set + and setWithWriteBarrier to reduce duplication. + + * collector/handles/Handle.h: + (JSC::HandleBase::operator!): + (JSC::HandleBase::HandleBase): Removed isEmpty(), since we already have + boolean and ! operators. + + (JSC::HandleBase::slot): + (JSC::HandleBase::setSlot): + (JSC::Handle::Handle): Added general support for null Handles. This was + previously outlawed by ASSERTs, but our code has grown to support and + rely on null Handles. -2011-01-18 Darin Adler <darin@apple.com> + * collector/handles/HandleHeap.cpp: + (JSC::HandleHeap::markWeakHandles): + (JSC::HandleHeap::finalizeWeakHandles): + (JSC::HandleHeap::isValidWeakNode): Migrated from isValidWeakHandle, + and beefed this up a bit. - Reviewed by Geoffrey Garen. - - Stack overflow when converting an Error object to string - https://bugs.webkit.org/show_bug.cgi?id=46410 + * collector/handles/HandleHeap.h: + (JSC::HandleHeap::globalData): Added accessor, used by some new set functions. - * Android.mk: Added StringRecursionChecker.cpp and - StringRecursionChecker.h. - * CMakeLists.txt: Ditto. - * GNUmakefile.am: Ditto. - * JavaScriptCore.gypi: Ditto. - * JavaScriptCore.pro: Ditto. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto. - * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. + * collector/handles/Local.h: Moved hash traits to the bottom of the file, + since this file is about the Local class, not the traits. - * runtime/ArrayPrototype.cpp: - (JSC::arrayProtoFuncToString): Use StringRecursionChecker instead - of the older hand-written code to do the same thing. - (JSC::arrayProtoFuncToLocaleString): Ditto. - (JSC::arrayProtoFuncJoin): Ditto. + (JSC::::Local): Updated for removal of invalidate(). - * runtime/ErrorPrototype.cpp: - (JSC::errorProtoFuncToString): Use StringRecursionChecker. + (JSC::::operator): Deployed "using" to avoid a lot of this-> + template funny business. - * runtime/JSGlobalData.h: Renamed arrayVisitedElements to - stringRecursionCheckVisitedObjects. + (JSC::::setWithSlotCheck): Renamed from internalSet, more specific now. - * runtime/RegExpPrototype.cpp: - (JSC::regExpProtoFuncToString): Use StringRecursionChecker. - - * runtime/StringRecursionChecker.cpp: Added. - * runtime/StringRecursionChecker.h: Added. - -2011-01-19 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. + * interpreter/RegisterFile.h: + (JSC::RegisterFile::RegisterFile): Updated to use null constructor. - Remove non-spec support for callable RegExp - https://bugs.webkit.org/show_bug.cgi?id=28285 + * jit/JITStubs.cpp: + (JSC::JITThunks::hostFunctionStub): - Remove support for callable regexps. If it breaks sites we can - just roll this out. + * runtime/JSPropertyNameIterator.h: + (JSC::Structure::setEnumerationCache): + * runtime/Structure.h: Removed clearEnumerationCache + because it was an unused holdover from when the enumeration cache was + not a handle. - * runtime/RegExpObject.cpp: - * runtime/RegExpObject.h: - * tests/mozilla/expected.html: update results. + * runtime/WeakGCMap.h: + (JSC::WeakGCMap::set): Finish initializing our handle before putting it + in the table. This seemed more logical, and at one point was required + to avoid triggering an ASSERT. -2011-01-19 Antti Koivisto <antti@apple.com> + * runtime/WeakGCPtr.h: Inherit from Handle instead of rolling our own + handle-like behavior, to avoid duplication. - Reviewed by Oliver Hunt. + (JSC::WeakGCPtr::WeakGCPtr): + (JSC::WeakGCPtr::~WeakGCPtr): + (JSC::WeakGCPtr::get): + (JSC::WeakGCPtr::clear): + (JSC::WeakGCPtr::set): + (JSC::WeakGCPtr::setWithWriteBarrier): Removed duplicate code and + standardized on Handle idioms. - Cache function offsets to speed up javascript parsing - https://bugs.webkit.org/show_bug.cgi?id=52622 - - Use cache to save function offsets and some other info. - This avoids quite a bit of work when reparsing the source. +2011-04-07 Adam Barth <abarth@webkit.org> - * parser/ASTBuilder.h: - * parser/JSParser.cpp: - (JSC::JSParser::CachedFunctionInfo::CachedFunctionInfo): - (JSC::JSParser::CachedFunctionInfo::approximateByteSize): - (JSC::JSParser::CachedFunctionInfo::closeBraceToken): - (JSC::JSParser::Scope::copyCapturedVariablesToVector): - (JSC::JSParser::Scope::saveFunctionInfo): - (JSC::JSParser::Scope::restoreFunctionInfo): - (JSC::JSParser::findCachedFunctionInfo): - (JSC::JSParser::JSParser): - (JSC::JSParser::parseProgram): - (JSC::JSParser::parseFunctionInfo): - * parser/Lexer.h: - (JSC::Lexer::setOffset): - (JSC::Lexer::setLineNumber): - (JSC::Lexer::sourceProvider): - * parser/SourceProvider.h: - (JSC::SourceProviderCache::SourceProviderCache): - (JSC::SourceProviderCache::~SourceProviderCache): - (JSC::SourceProviderCache::byteSize): - (JSC::SourceProviderCache::add): - (JSC::SourceProviderCache::get): - (JSC::SourceProvider::SourceProvider): - (JSC::SourceProvider::~SourceProvider): - (JSC::SourceProvider::cache): - (JSC::SourceProvider::notifyCacheSizeChanged): - (JSC::SourceProvider::cacheSizeChanged): - * parser/SyntaxChecker.h: - -2011-01-19 Mark Rowe <mrowe@apple.com> + Reviewed by Martin Robinson. - Reviewed by Darin Adler. + Refactor Gtk build system to separate list of files + https://bugs.webkit.org/show_bug.cgi?id=58090 - Follow-up to r75766 / <rdar://problem/5469576>. + This is the first step towards generating part of the GTK build system + using GYP. In the first iteration, our plan is to just generate the + list of files. This patch is the first step, which is to separate out + the part of JavaScriptCore build system that we intend to generate from + the rest of the build system. - * DerivedSources.make: Evaluate the SDKROOT variable correctly. + * GNUmakefile.am: + * GNUmakefile.list.am: Added. -2011-01-19 Oliver Hunt <oliver@apple.com> +2011-04-07 Zoltan Herczeg <zherczeg@webkit.org> Reviewed by Gavin Barraclough. - [jsfunfuzz] Defining a function called __proto__ inside an eval triggers an assertion - https://bugs.webkit.org/show_bug.cgi?id=52672 + Mapping booleans the same way as integers + https://bugs.webkit.org/show_bug.cgi?id=56913 - Rather than coming up with a somewhat convoluted mechanism to ensure that - developers can override the global objects prototype with a function named - __proto__ and expect it to work, we just disallow it at the syntax level. + Instead of having a seperate tag field for booleans, + the logical values are stored in the payload field + (for JSValue32_64 representation). - * parser/JSParser.cpp: - (JSC::JSParser::parseFunctionInfo): + 1.007x speedup on SunSpider. -2011-01-19 Michael Saboff <msaboff@apple.com> + * jit/JIT.h: + * jit/JITInlineMethods.h: + (JSC::JIT::emitStoreBool): + * jit/JITOpcodes32_64.cpp: + (JSC::JIT::emit_op_instanceof): + (JSC::JIT::emit_op_not): + (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_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/JSInterfaceJIT.h: + * runtime/JSValue.h: + (JSC::JSValue::JSValue): + (JSC::JSValue::isTrue): + (JSC::JSValue::isFalse): + (JSC::JSValue::getBoolean): - Reviewed by Darin Adler. +2011-04-07 Eric Seidel <eric@webkit.org> - <rdar://problem/8882994> Regression: Simple nested backtrack hangs - https://bugs.webkit.org/show_bug.cgi?id=52675 + Reviewed by Adam Barth. - The changeset (r76076) for https://bugs.webkit.org/show_bug.cgi?id=52540 - broke simple backtracking in some cases. Reworked that change to - link both jumps and labels. + Add stub support for generating Gtk build system from gyp + https://bugs.webkit.org/show_bug.cgi?id=58086 - * yarr/YarrJIT.cpp: - (JSC::Yarr::YarrGenerator::BacktrackDestination::hasBacktrackToLabel): - (JSC::Yarr::YarrGenerator::TermGenerationState::propagateBacktrackingFrom): - (JSC::Yarr::YarrGenerator::generateParenthesesSingle): + This does not produce a buildable JavaScriptCore, but it + does allow running gyp/configure --port=gtk and having + it generate a gtk.Makefile which we can use for testing + the rest of the plumbing. -2011-01-19 Pavel Podivilov <podivilov@chromium.org> + * gyp/gtk.gyp: Added. - Reviewed by Yury Semikhatsky. +2011-04-07 Andrew Scherkus <scherkus@chromium.org> - Web Inspector: [JSC] scripts have incorrect starting line (always 1). - https://bugs.webkit.org/show_bug.cgi?id=52721 + Revert ENABLE_TRACK patch due to compile failures. - * debugger/Debugger.cpp: - (JSC::Debugger::recompileAllJSFunctions): - * debugger/Debugger.h: - * parser/Parser.h: - (JSC::Parser::parse): - * parser/SourceCode.h: - (JSC::SourceCode::SourceCode): - * parser/SourceProvider.h: - (JSC::SourceProvider::startPosition): + * Configurations/FeatureDefines.xcconfig: -2011-01-19 Csaba Osztrogonác <ossy@webkit.org> +2011-04-07 Adam Barth <abarth@webkit.org> - Reviewed by Laszlo Gombos and Tor Arne Vestbø. + Fix whitespace in GNUmakefile.am. - [Qt] Remove unnecessary "../Source" from paths - after moving source files into Source is finished. + * GNUmakefile.am: - * JavaScriptCore.pri: +2011-04-07 Gavin Barraclough <barraclough@apple.com> -2011-01-19 Benjamin Kalman <kalman@chromium.org> + Fix a couple of typos in comments that Darin spotted. - Reviewed by Darin Adler. + * jit/JITOpcodes.cpp: + (JSC::JIT::emit_op_not): + * runtime/JSImmediate.h: - Don't return void from void function String::split - https://bugs.webkit.org/show_bug.cgi?id=52684 +2011-04-06 Gavin Barraclough <barraclough@apple.com> - * wtf/text/WTFString.cpp: - (WTF::String::split): + Reviewed by Geoff Garen. + Bug 58057 - Store boolean payload in low bit of JSImmediate -2011-01-18 Kenneth Russell <kbr@google.com> + And remove some uncalled functions from JSImmediate.h - Unreviewed, rolling out r76078. - http://trac.webkit.org/changeset/76078 - https://bugs.webkit.org/show_bug.cgi?id=52668 + * jit/JITInlineMethods.h: + (JSC::JIT::emitTagAsBoolImmediate): + * jit/JITOpcodes.cpp: + (JSC::JIT::emit_op_not): + * runtime/JSImmediate.h: + (JSC::JSImmediate::makeInt): + (JSC::JSImmediate::makeBool): + (JSC::JSImmediate::intValue): + (JSC::JSImmediate::boolValue): + (JSC::JSImmediate::asInt32): + (JSC::JSImmediate::toDouble): + (JSC::JSValue::asInt32): + (JSC::JSValue::isUInt32): + (JSC::JSValue::asUInt32): - Caused crashes of fast/canvas/webgl/constants.html, - fast/canvas/webgl/gl-enum-tests.html, and possibly other layout - test crashes in Release mode. WebGL crashes were observed with - "run-webkit-tests fast/canvas/webgl". It was necessary to run - multiple tests to provoke the crash. +2011-04-07 Liang Qi <liang.qi@nokia.com> - * interpreter/RegisterFile.h: - (JSC::RegisterFile::markGlobals): - * runtime/JSActivation.cpp: - (JSC::JSActivation::markChildren): - * runtime/JSGlobalObject.cpp: - (JSC::JSGlobalObject::markChildren): + Reviewed by Laszlo Gombos. -2011-01-18 Oliver Hunt <oliver@apple.com> + [Qt][Symbian] Enable webkit build with GCCE on Symbian. + https://bugs.webkit.org/show_bug.cgi?id=57841 - Reviewed by Gavin Barraclough. + * wtf/MathExtras.h: GCCE compiler doesn't support those std static functions. - [jsfunfuzz] Assertion asking activation for arguments when arguments is overridden - https://bugs.webkit.org/show_bug.cgi?id=52690 +2011-04-06 Dai Mikurube <dmikurube@chromium.org> - Clean up code to retrieve arguments from activation and function objects. - Remove the incorrect assertion from JSActivation's argumentsGetter. + Reviewed by David Levin. - * interpreter/Interpreter.cpp: - (JSC::Interpreter::retrieveArguments): - * runtime/JSActivation.cpp: - (JSC::JSActivation::argumentsGetter): + Add QUOTA build flag for unified quota API + https://bugs.webkit.org/show_bug.cgi?id=57918 -2011-01-18 Geoffrey Garen <ggaren@apple.com> + * Configurations/FeatureDefines.xcconfig: Added QUOTA build flag +2011-04-06 Kevin Ollivier <kevino@theolliviers.com> + Reviewed by Darin Adler. + + Make sure JS_EXPORT_PRIVATE is an empty define when we aren't using the export macros. + + https://bugs.webkit.org/show_bug.cgi?id=27551 - Removed RegisterFile::markGlobals because it was obtuse, and it - unnecessarily relied on conservative marking. - https://bugs.webkit.org/show_bug.cgi?id=52668 - - * interpreter/RegisterFile.h: Removed markGlobals. - - * runtime/JSActivation.cpp: - (JSC::JSActivation::markChildren): Added a comment explaning why some - JSActivations don't always mark their registers arrays. - - * runtime/JSGlobalObject.cpp: - (JSC::JSGlobalObject::markChildren): Instead of calling markGlobals, mark - the registers array directly. - -2011-01-18 Michael Saboff <msaboff@apple.com> - - Reviewed by Oliver Hunt. - - <rdar://problem/8875432> Regression: Some text-only e-mails cause hang beneath RegExp::match (52540) - https://bugs.webkit.org/show_bug.cgi?id=52540 - https://bugs.webkit.org/show_bug.cgi?id=52662 - - Directly use backtrack label with parentheses nested under a - non-capturing parentheses. Also linked current parentheses - tail code object for possible parens nested within a non-capturing - parentheses. - - * yarr/YarrJIT.cpp: - (JSC::Yarr::YarrGenerator::BacktrackDestination::linkBacktrackToLabel): - (JSC::Yarr::YarrGenerator::generateParenthesesSingle): + * config.h: -2011-01-18 Daniel Bates <dbates@rim.com> +2011-04-06 Oliver Hunt <oliver@apple.com> Reviewed by Gavin Barraclough. - Only use moving memory model assumption in ExecutableAllocator::intializePageSize() for Symbian OS - https://bugs.webkit.org/show_bug.cgi?id=52517 - - Patch by David Tapuska - - Currently, we compile code with respect to the Symbian-specific moving memory model - assumption for all ARMv5 or lower architectures. Instead, we should only compile - such code when building for Symbian OS on those architectures because this model - is Symbian-specific. - - * jit/ExecutableAllocator.cpp: - (JSC::ExecutableAllocator::intializePageSize): - -2011-01-18 Dimitry Andric <dim@freebsd.org> - - Reviewed by Andreas Kling. - - Fix linking JavaScriptCore on FreeBSD/amd64 - https://bugs.webkit.org/show_bug.cgi?id=52591 - - Linking of JavaScriptCore on FreeBSD/amd64 fails, for the same reason as - in bug 28422: cti_vm_throw needs a "@plt" suffix, otherwise the linker - complains about the relocation type. - - * jit/JITStubs.cpp: use @plt suffix on x86_64 platforms, for both Linux - and FreeBSD. - -2011-01-18 Oliver Hunt <oliver@apple.com> - - Reviewed by Antti Koivisto. - - [jsfunfuzz] Assertion in codegen for array of NaN constants - https://bugs.webkit.org/show_bug.cgi?id=52643 - - Don't cache NaN literals in the code generator, as NaN doesn't compare - as equal to itself it causes problems when rehashing the number cache. - - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::emitLoad): - -2011-01-17 Jarred Nicholls <jarred@sencha.com> - - Reviewed by Csaba Osztrogonác. - - REGRESSION(r75709): Return value of fscanf() shouldn't be ignored. - https://bugs.webkit.org/show_bug.cgi?id=52585 - - gcc 4.4.4+ has warn_unused_value attribute on fscanf, so we should check - the return value to get around the gcc warning - - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::maybeModifyVMPoolSize): + Stop JSObject::isUsingInlineStorage() from using the structure + https://bugs.webkit.org/show_bug.cgi?id=57986 -2011-01-17 Michael Saboff <msaboff@apple.com> + Make the isUsingInlineStorage() implementation just look at + whether the property storage is inside the object. - Reviewed by Oliver Hunt. - - [regexfuzz] Crash running regex with lookahead - https://bugs.webkit.org/show_bug.cgi?id=52548 + * runtime/JSObject.h: + (JSC::JSObject::isUsingInlineStorage): + (JSC::JSObject::JSObject): - Eliminated agressive chaining of backtracks. This code was overwriting - already valid backtrack information. +2011-04-06 Gavin Barraclough <barraclough@apple.com> - * yarr/YarrJIT.cpp: - (JSC::Yarr::YarrGenerator::ParenthesesTail::processBacktracks): + Rubber stamped by Geoff Garen. -2011-01-17 Tony Gentilcore <tonyg@chromium.org> + Update comments documenting JSVALUE64/JSVALUE32_64 JSValue representations. - Reviewed by Alexey Proskuryakov. + * runtime/JSImmediate.h: + * runtime/JSValue.h: - Fix some headers with missing or misspelled #ifndef guards - https://bugs.webkit.org/show_bug.cgi?id=52545 +2011-04-06 Lucas De Marchi <lucas.demarchi@profusion.mobi> - * wtf/RefPtrHashMap.h: + cmake: Fix build for ARMv7 -2011-01-17 Dan Bernstein <mitz@apple.com> + * CMakeLists.txt: add missing file. - Rubber-stamped by Mark Rowe. +2011-04-06 Liang Qi <liang.qi@nokia.com> - Update xcodeproj svn:ignore to include xcuserdata. + Reviewed by Benjamin Poulain. - * JavaScriptCore.xcodeproj: Modified property svn:ignore. + Correct a include file name. + https://bugs.webkit.org/show_bug.cgi?id=57839 -2011-01-16 Adam Barth <abarth@webkit.org> + * wtf/PageAllocatorSymbian.h: It should be case sensitive. This fix + builds on Unix hosts. - Rubber-stamped by Eric Seidel. +2011-04-06 Adam Roben <aroben@apple.com> - Move WebKit into Source - https://bugs.webkit.org/show_bug.cgi?id=52530 + Build fix after r83056 - * JavaScriptCore.gyp/JavaScriptCore.gyp: + * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: Added property svn:executable. -2011-01-16 Oliver Hunt <oliver@apple.com> +2011-04-06 Adam Roben <aroben@apple.com> - Reviewed by Sam Weinig. + Move JavaScriptCoreGenerated's file-copying logic out to a new script - [jsfunfuzz] Parser doesn't correctly validate for-loop syntax - https://bugs.webkit.org/show_bug.cgi?id=52516 + Hopefully this will make it easier to modify this logic in the future. I also made the + script much quieter than the old logic, since it didn't seem helpful to see long lists of + filenames during the copying phase. - Ensure that we always check for a semicolon after encountering - multiple declarations in the initialiser portion of a for-loop. + If we like this new style, we could copy it for our other projects. - * parser/JSParser.cpp: - (JSC::JSParser::parseForStatement): + Fixes <http://webkit.org/b/57950> JavaScriptCoreGenerated's file-copying logic is hard to + modify and noisy -2011-01-16 Oliver Hunt <oliver@apple.com> + Reviewed by Steve Falkenburg. - Reviewed by Geoffrey Garen. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Moved logic to copy + files from here... + * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: ...to here. (Added.) - Strict mode restrictions on arguments and eval usage aren't complete - https://bugs.webkit.org/show_bug.cgi?id=52528 + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Added copy-files.cmd + for convenience. - Fix a few bugs in strict mode where we incorrect allow mutation of - arguments and eval in the parser. +2011-04-05 Geoffrey Garen <ggaren@apple.com> - Alas the "optimisation" used by the syntax checker for validating - binary and unary expressions was too aggressive: we do actually need - a stack for operations and operands although it needn't be as complete - as that used for the full AST builder. + Try to fix the Windows build. - Also disallow assignment to arguments in all cases as allowing arguments - to be assignable is always an error in strict mode, regardless of context. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Who likes export files? I do! - * parser/ASTBuilder.h: - (JSC::ASTBuilder::BinaryExprContext::BinaryExprContext): - (JSC::ASTBuilder::UnaryExprContext::UnaryExprContext): - * parser/JSParser.cpp: - (JSC::JSParser::parseAssignmentExpression): - (JSC::JSParser::parseBinaryExpression): - (JSC::JSParser::parseUnaryExpression): - * parser/SyntaxChecker.h: - (JSC::SyntaxChecker::BinaryExprContext::BinaryExprContext): - (JSC::SyntaxChecker::BinaryExprContext::~BinaryExprContext): - (JSC::SyntaxChecker::UnaryExprContext::UnaryExprContext): - (JSC::SyntaxChecker::UnaryExprContext::~UnaryExprContext): - (JSC::SyntaxChecker::appendBinaryExpressionInfo): - (JSC::SyntaxChecker::operatorStackPop): - -2011-01-15 Geoffrey Garen <ggaren@apple.com> +2011-04-05 Geoffrey Garen <ggaren@apple.com> Reviewed by Oliver Hunt. - Rolled back in r75886. - https://bugs.webkit.org/show_bug.cgi?id=52527 - - r75886 broke the GTK Linux bot because Linux was -- quite surprisingly -- - set up to use the constants for embedded devices. + Introduced the concept of opaque roots, in preparation for marking the DOM with them + https://bugs.webkit.org/show_bug.cgi?id=57903 - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::maybeModifyVMPoolSize): Separated Linux constants from embedded - constants. + * JavaScriptCore.exp: Who likes export files? I do! -2011-01-15 Sheriff Bot <webkit.review.bot@gmail.com> + * collector/handles/HandleHeap.cpp: + (JSC::isValidWeakHandle): Factored out a helper function for ASSERTs. - Unreviewed, rolling out r75886. - http://trac.webkit.org/changeset/75886 - https://bugs.webkit.org/show_bug.cgi?id=52526 + (JSC::WeakHandleOwner::~WeakHandleOwner): Moved from header to avoid + weak linkage problems. - "Broke GTK+ 64bit" (Requested by xan_ on #webkit). + (JSC::WeakHandleOwner::isReachableFromOpaqueRoots): New callback. + Currently unused. - * jit/ExecutableAllocatorFixedVMPool.cpp: + (JSC::WeakHandleOwner::finalize): Switched from pure virtual to a + default empty implementation, since not all clients necessarily want + or need non-trivial finalizers. -2011-01-15 Geoffrey Garen <ggaren@apple.com> + (JSC::HandleHeap::markWeakHandles): Split updateWeakHandles into two + passes. The first pass marks all reachable weak handles. The second pass + finalizes all unreachable weak handles. This must be two passes because + we don't know the set of finalizable weak handles until we're done + marking all weak handles. - Reviewed by Sam Weinig. - - <rdar://problem/8870429> Shrink the executable pool on embedded devices - - * jit/ExecutableAllocatorFixedVMPool.cpp: Dropped the pool size from 32MB - to 16MB. - -2011-01-15 Oliver Hunt <oliver@apple.com> - - Reviewed by Maciej Stachowiak. - - Incorrect behavior changing attributes of an accessor - https://bugs.webkit.org/show_bug.cgi?id=52515 - - defineProperty doesn't correctly handle changing attributes of an accessor - property. This is because we don't pass the full descriptor to the - putDescriptor helper function, which means we have insufficient information - to do the right thing. Once that's passed the correct behavior is relatively - simple to implement. + (JSC::HandleHeap::finalizeWeakHandles): Use new helper function. - * runtime/JSObject.cpp: - (JSC::putDescriptor): - (JSC::JSObject::defineOwnProperty): + * collector/handles/HandleHeap.h: Ditto. -2011-01-14 Oliver Hunt <oliver@apple.com> - - Reviewed by Maciej Stachowiak. - - [jsfunfuzz] Incorrect handling of consecutive duplicate labels - https://bugs.webkit.org/show_bug.cgi?id=52505 - - Compare StringImpl*'s instead of Identifier*'s when looking for duplicate - labels. - - * parser/JSParser.cpp: - (JSC::JSParser::parseExpressionOrLabelStatement): - -2011-01-14 Simon Fraser <simon.fraser@apple.com> - - No review. - - Initialize m_operationInProgress after r75855. - - * runtime/Heap.cpp: - (JSC::Heap::Heap): - -2011-01-14 Geoffrey Garen <ggaren@apple.com> - - Reverted accidentally committed code from my last checkin. - - * runtime/Heap.cpp: + * runtime/Heap.cpp: + (JSC::Heap::destroy): (JSC::Heap::markRoots): + (JSC::Heap::reset): Split out handle marking from handle finalization. -2011-01-14 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Sam Weinig. - - Try to fix the GTK bot. + * runtime/MarkStack.cpp: + (JSC::MarkStack::reset): + * runtime/MarkStack.h: + (JSC::MarkStack::addOpaqueRoot): + (JSC::MarkStack::containsOpaqueRoot): + (JSC::MarkStack::opaqueRootCount): + (JSC::HeapRootMarker::markStack): New helper functions for managing the + set of opaque roots. - * runtime/Heap.cpp: - (JSC::Heap::Heap): - (JSC::Heap::markRoots): Kids, remember to initialize your data members. - Knowing is half the battle. + * runtime/WeakGCMap.h: + (JSC::WeakGCMap::finalize): Renamed to match parent class declaration. -2011-01-14 Oliver Hunt <oliver@apple.com> +2011-04-05 Balazs Kelemen <kbalazs@webkit.org> - Reviewed by Stephanie Lewis. + Reviewed by Darin Adler. - [jsfunfuzz] We should be clearing the lexers temporary character buffers when switching to strict mode - https://bugs.webkit.org/show_bug.cgi?id=52501 + Build fix for YarrParser.h + https://bugs.webkit.org/show_bug.cgi?id=57822 - Clear the temporary character buffers used for reading escaped characters and - numbers. + * yarr/YarrParser.h: + (JSC::Yarr::Parser::CharacterClassParserDelegate::CharacterClassParserDelegate): - * parser/Lexer.h: - (JSC::Lexer::setOffset): +2011-04-05 Steve Falkenburg <sfalken@apple.com> -2011-01-14 Geoffrey Garen <ggaren@apple.com> + Follow-up Windows build fix. + Don't skip react-to-vsprops-changes.py for all production builds, + only those initiated via JavaScriptCore.make. - Try to fix non-Dtrace builds: #include Tracing.h instead of TracingDtrace.h. + * JavaScriptCore.vcproj/JavaScriptCore.make: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: - * runtime/Heap.cpp: +2011-04-05 Oliver Hunt <oliver@apple.com> -2011-01-13 Geoffrey Garen <ggaren@apple.com> + Reviewed by Darin Adler. - Reviewed by Oliver Hunt. + REGRESSION (r82849): 85,000+ JSC-related leaks seen on SnowLeopard Intel Leaks + https://bugs.webkit.org/show_bug.cgi?id=57857 - Split out a MarkedSpace strategy object from Heap. - https://bugs.webkit.org/show_bug.cgi?id=52421 - - SunSpider reports no change. + Whoops, accidentally removed a deref(). - * Android.mk: - * CMakeLists.txt: - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: Updated our 7 build systems. Which is cool. + * bytecode/StructureStubInfo.cpp: + (JSC::StructureStubInfo::deref): - * runtime/Heap.cpp: - (JSC::Heap::Heap): - (JSC::Heap::destroy): - (JSC::Heap::recordExtraCost): - (JSC::Heap::allocate): - (JSC::Heap::markConservatively): - (JSC::Heap::markRoots): - (JSC::Heap::objectCount): - (JSC::Heap::statistics): - (JSC::Heap::size): - (JSC::Heap::isBusy): - (JSC::Heap::collectAllGarbage): - (JSC::Heap::primaryHeapBegin): - (JSC::Heap::primaryHeapEnd): - * runtime/Heap.h: - (JSC::Heap::globalData): - (JSC::Heap::markedSpace): - (JSC::Heap::isCellMarked): - (JSC::Heap::checkMarkCell): - (JSC::Heap::markCell): Moved all code pertaining to managing chunks of - collector memory out of this class. Heap now just delegates to MarkedSpace. +2011-04-05 Steve Falkenburg <sfalken@apple.com> - * runtime/JSCell.h: - (JSC::JSCell::Heap::heap): Updated for MarkedSpace delegation. + Windows build fix. - * runtime/JSValue.h: Moved the ValueStringPair typedef to help with #includes. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Add per-configuration vsprops files. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Removed inheritance from common.vsprops. + Set production environment variable before calling make. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebug.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebugAll.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebugCairoCFLite.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedProduction.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedRelease.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedReleaseCairoCFLite.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedReleasePGO.vsprops: Added. - * runtime/MarkedSpace.cpp: Copied from runtime/Heap.cpp. - (JSC::MarkedSpace::MarkedSpace): - (JSC::MarkedSpace::destroy): - (JSC::MarkedSpace::allocateBlock): - (JSC::MarkedSpace::freeBlock): - (JSC::MarkedSpace::allocate): - (JSC::MarkedSpace::resizeBlocks): - (JSC::MarkedSpace::growBlocks): - (JSC::MarkedSpace::shrinkBlocks): - (JSC::MarkedSpace::markConservatively): - (JSC::MarkedSpace::clearMarkBits): - (JSC::MarkedSpace::markedCells): - (JSC::MarkedSpace::sweep): - (JSC::MarkedSpace::objectCount): - (JSC::MarkedSpace::addToStatistics): - (JSC::MarkedSpace::statistics): - (JSC::MarkedSpace::size): - (JSC::MarkedSpace::reset): - (JSC::MarkedSpace::primaryHeapBegin): - (JSC::MarkedSpace::primaryHeapEnd): - * runtime/MarkedSpace.h: Copied from runtime/Heap.h. - (JSC::MarkedSpace::globalData): - (JSC::MarkedSpace::didShrink): - (JSC::MarkedSpace::cellBlock): - (JSC::MarkedSpace::cellOffset): - (JSC::MarkedSpace::isCellMarked): - (JSC::MarkedSpace::checkMarkCell): - (JSC::MarkedSpace::markCell): Moved all code pertaining to managing chunks of - collector memory into this class. - - * runtime/MemoryStatistics.cpp: - (JSC::heapStatistics): - * runtime/MemoryStatistics.h: Updated for MarkedSpace delegation. - -2011-01-14 Oliver Hunt <oliver@apple.com> +2011-04-05 Oliver Hunt <oliver@apple.com> Reviewed by Gavin Barraclough. - [jsfunfuzz] parser doesn't enforce continue restrictions correctly. - https://bugs.webkit.org/show_bug.cgi?id=52493 - - This patch reworks handling of break, continue and label statements - to correctly handle all the valid and invalid cases. Previously certain - errors would be missed by the parser in strict mode, but the bytecode - generator needed to handle those cases for non-strict code so nothing - failed, it simply became non-standard behaviour. + Make caches window show more info about non-jsobject GC values + https://bugs.webkit.org/show_bug.cgi?id=57874 - Now that we treat break and continue errors as early faults in non-strict - mode as well that safety net has been removed so the parser bugs result in - crashes at codegen time. + Add ClassInfo to the various internal JS types that currently + don't have any, and make the text for caches window show the + classname for non-JSObject instances. - * parser/JSParser.cpp: - (JSC::JSParser::ScopeLabelInfo::ScopeLabelInfo): - (JSC::JSParser::next): - (JSC::JSParser::nextTokenIsColon): - (JSC::JSParser::continueIsValid): - Continue is only valid in loops so we can't use breakIsValid() - (JSC::JSParser::pushLabel): - We now track whether the label is for a loop (and is therefore a - valid target for continue. - (JSC::JSParser::popLabel): - (JSC::JSParser::getLabel): - Replace hasLabel with getLabel so that we can validate the target - when parsing continue statements. - (JSC::JSParser::Scope::continueIsValid): - (JSC::JSParser::Scope::pushLabel): - (JSC::JSParser::Scope::getLabel): - (JSC::JSParser::JSParser): - (JSC::JSParser::parseBreakStatement): - (JSC::JSParser::parseContinueStatement): - (JSC::LabelInfo::LabelInfo): - (JSC::JSParser::parseExpressionOrLabelStatement): - Consecutive labels now get handled iteratively so that we can determine - whether they're valid targets for continue. - * parser/Lexer.cpp: - (JSC::Lexer::nextTokenIsColon): - * parser/Lexer.h: - (JSC::Lexer::setOffset): - -2011-01-14 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Adam Roben. - - Use the Windows thread pool instead of an extra thread for FastMalloc scavenging - https://bugs.webkit.org/show_bug.cgi?id=45186 - - * wtf/FastMalloc.cpp: - (WTF::TCMalloc_PageHeap::scheduleScavenger): Added missing this pointer to CreateTimerQueueTimer(). - -2011-01-14 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Adam Roben. - - Use the Windows thread pool instead of an extra thread for FastMalloc scavenging - https://bugs.webkit.org/show_bug.cgi?id=45186 - - r75819 accidentally changed the initial state of the scavenge timer. - - * wtf/FastMalloc.cpp: - (WTF::TCMalloc_PageHeap::initializeScavenger): Changed initial state of m_scavengingSuspended to true. - -2011-01-14 Patrick Gansterer <paroga@webkit.org> - - Unreviewed Windows Release build fix. + * runtime/Executable.cpp: + * runtime/Executable.h: + (JSC::ExecutableBase::createStructure): + (JSC::NativeExecutable::createStructure): + (JSC::NativeExecutable::NativeExecutable): + (JSC::EvalExecutable::createStructure): + (JSC::ProgramExecutable::createStructure): + (JSC::FunctionExecutable::createStructure): + * runtime/Heap.cpp: + (JSC::TypeCounter::typeName): + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::JSGlobalData): + * runtime/JSGlobalData.h: + * runtime/ScopeChain.cpp: + * runtime/ScopeChain.h: + (JSC::ScopeChainNode::createStructure): + * runtime/StructureChain.cpp: + * runtime/StructureChain.h: + (JSC::StructureChain::createStructure): - * wtf/FastMalloc.cpp: - (WTF::TCMalloc_PageHeap::scavengerTimerFired): +2011-04-05 Nikolas Zimmermann <nzimmermann@rim.com> -2011-01-14 Patrick Gansterer <paroga@webkit.org> + Reviewed by Andreas Kling. - Unreviewed Windows Release build fix. + Cleanup StringConcatenate + https://bugs.webkit.org/show_bug.cgi?id=57836 - * wtf/FastMalloc.cpp: - (WTF::TCMalloc_PageHeap::scavengerTimerFired): + Don't use PassRefPtr in local variables, properly store in RefPtrs and release on return. + Add a makeString() variant taking 9 arguments, needed by a follow-up patch. -2011-01-14 Patrick Gansterer <paroga@webkit.org> + * wtf/text/StringConcatenate.h: + (WTF::tryMakeString): + (WTF::makeString): - Reviewed by Adam Roben. +2011-04-04 Sheriff Bot <webkit.review.bot@gmail.com> - Use the Windows thread pool instead of an extra thread for FastMalloc scavenging - https://bugs.webkit.org/show_bug.cgi?id=45186 + Unreviewed, rolling out r82876. + http://trac.webkit.org/changeset/82876 + https://bugs.webkit.org/show_bug.cgi?id=57816 - Use CreateTimerQueueTimer() to start periodicScavenge() and stop it with DeleteTimerQueueTimer(). + Caused a lot of test crashes (Requested by tkent on #webkit). + * JavaScriptCore.exp: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: * wtf/FastMalloc.cpp: - (WTF::TCMalloc_PageHeap::initializeScavenger): + (WTF::tryFastMalloc): + (WTF::fastMalloc): + (WTF::tryFastCalloc): + (WTF::fastCalloc): + (WTF::fastFree): + (WTF::tryFastRealloc): + (WTF::fastRealloc): + (WTF::fastMallocSize): (WTF::TCMalloc_PageHeap::isScavengerSuspended): (WTF::TCMalloc_PageHeap::scheduleScavenger): - (WTF::TCMalloc_PageHeap::rescheduleScavenger): (WTF::TCMalloc_PageHeap::suspendScavenger): - (WTF::scavengerTimerFired): - (WTF::TCMalloc_PageHeap::periodicScavenge): (WTF::TCMalloc_PageHeap::signalScavenger): + (WTF::TCMallocStats::malloc): + (WTF::TCMallocStats::free): + (WTF::TCMallocStats::fastCalloc): + (WTF::TCMallocStats::tryFastCalloc): + (WTF::TCMallocStats::calloc): + (WTF::TCMallocStats::fastRealloc): + (WTF::TCMallocStats::tryFastRealloc): + (WTF::TCMallocStats::realloc): + (WTF::TCMallocStats::fastMallocSize): + * wtf/FastMalloc.h: + (WTF::Internal::fastMallocMatchValidationType): + (WTF::Internal::fastMallocMatchValidationValue): + (WTF::Internal::setFastMallocMatchValidationType): + (WTF::fastMallocMatchValidateFree): + * wtf/Platform.h: -2011-01-14 Laszlo Gombos <laszlo.1.gombos@nokia.com> - - Reviewed by Kenneth Rohde Christiansen. - - Align import/export directives - https://bugs.webkit.org/show_bug.cgi?id=52208 - - * API/JSBase.h: Align import/export directives with - WebKit2/Shared/API/c/WKBase.h - -2011-01-14 Michael Saboff <msaboff@apple.com> - - Reviewed by Oliver Hunt. - - Incorrect backtracking for nested alternatives - https://bugs.webkit.org/show_bug.cgi?id=52387 - - In the process of propigating a datalabel it wasn't getting connected - to a destination when the destination was an indirect jump. Added - code to recognize a direct backtrack destination that was an indirect - jump and added mechanism to associate DataLabelPtrs with indirect - jump entries. - Removed dead method - BacktrackDestination::linkDataLabelToHereIfExists() - - * yarr/YarrJIT.cpp: - (JSC::Yarr::YarrGenerator::IndirectJumpEntry::IndirectJumpEntry): - (JSC::Yarr::YarrGenerator::IndirectJumpEntry::addDataLabel): - (JSC::Yarr::YarrGenerator::GenerationState::addIndirectJumpEntry): - (JSC::Yarr::YarrGenerator::GenerationState::emitIndirectJumpTable): - Changes to link indirect jumps with DataLabelPtr's. - (JSC::Yarr::YarrGenerator::BacktrackDestination::clearSubDataLabelPtr): - (JSC::Yarr::YarrGenerator::TermGenerationState::linkDataLabelToBacktrackIfExists): - Updated to handle immediate linking of indirect jumps to - DataLabelPtr. - (JSC::Yarr::YarrGenerator::generateParenthesesDisjunction): Changed to - reflect updated linkDataLabelToBacktrackIfExists(). - -2011-01-14 Pavel Podivilov <podivilov@chromium.org> - - Reviewed by Yury Semikhatsky. - - Web Inspector: provide script column offset to frontend. - https://bugs.webkit.org/show_bug.cgi?id=52377 - - * parser/SourceCode.h: - (JSC::SourceCode::SourceCode): - (JSC::SourceCode::firstColumn): - -2011-01-13 Darin Adler <darin@apple.com> - - Reviewed by Geoff Garen. - - <rdar://problem/5469576> Use __PTK_FRAMEWORK_JAVASCRIPTCORE_KEY0 if available. - - * DerivedSources.make: Create a header file, HeaderDetection.h, that tells - us whether pthread_machdep.h is available. - * wtf/FastMalloc.cpp: If __PTK_FRAMEWORK_JAVASCRIPTCORE_KEY0 is available, then - don't do the pthread_getspecific_function_pointer trick. - (WTF::setThreadHeap): Ditto, but set thread-specific data. - (WTF::TCMalloc_ThreadCache::GetThreadHeap): Ditto, but get rather than set. - -2011-01-13 Xan Lopez <xlopez@igalia.com> - - Reviewed by Gavin Barraclough. - - JIT requires VM overcommit (particularly on x86-64), Linux does not by default support this without swap? - https://bugs.webkit.org/show_bug.cgi?id=42756 - - The FixedVMPool Allocator does not work well on systems where - allocating very large amounts of memory upfront is not reasonable, - like Linux without overcommit enabled. As a workaround, on Linux, - default to the values used in embedded environments (in the MB - range), and only jump to the GB range if we detect at runtime that - overcommit is enabled. Should fix crashes on Linux/x86_64 with - less than 3 or 4GB of RAM. - - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::FixedVMPoolAllocator::free): use new variables for VM pool - size and coalesce limit. - (JSC::ExecutableAllocator::isValid): swap the variables from - embedded to generic values at runtime, on linux, if overcommit is - enabled. - (JSC::ExecutableAllocator::underMemoryPressure): use new variables - for VM pool size and coalesce limit. - -2011-01-12 Xan Lopez <xlopez@igalia.com> - - Reviewed by Martin Robinson. - - Add new Yarr.h header to the list file. - - * GNUmakefile.am: ditto. - -2011-01-12 Martin Robinson <mrobinson@igalia.com> - - Missing Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h in WebKitGtk tarball - https://bugs.webkit.org/show_bug.cgi?id=52299 - - * GNUmakefile.am: Fix the GTK+ build on ARMv7 by including missing source - files in the source list. +2011-04-04 Oliver Hunt <oliver@apple.com> -2011-01-12 Peter Varga <pvarga@webkit.org> + Reviewed by Antti Koivisto. - Reviewed by Gavin Barraclough. + Stop JSCell.h from including Structure.h + https://bugs.webkit.org/show_bug.cgi?id=57809 - Add Yarr.h to YARR - https://bugs.webkit.org/show_bug.cgi?id=51021 + * runtime/GetterSetter.h: + * runtime/JSAPIValueWrapper.h: + * runtime/JSCell.h: + (JSC::JSCell::JSValue::toThisObject): + * runtime/JSString.h: + * runtime/ScopeChain.h: + * runtime/Structure.h: + (JSC::JSCell::isObject): + (JSC::JSCell::isString): + (JSC::JSCell::classInfo): + (JSC::JSCell::createDummyStructure): + (JSC::JSValue::needsThisConversion): + (JSC::MarkStack::internalAppend): + * runtime/StructureChain.h: - Move other common constants and functions from YARR's different files - to Yarr.h. - Use Yarr.h header instead of including other YARR headers where it - is possible. +2011-04-04 Oliver Hunt <oliver@apple.com> - * JavaScriptCore.gypi: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * runtime/RegExp.cpp: - * yarr/Yarr.h: Added. - * yarr/YarrInterpreter.cpp: - * yarr/YarrInterpreter.h: - * yarr/YarrJIT.cpp: - (JSC::Yarr::jitCompile): - (JSC::Yarr::execute): - * yarr/YarrJIT.h: - * yarr/YarrParser.h: - * yarr/YarrPattern.cpp: - (JSC::Yarr::YarrPattern::compile): - (JSC::Yarr::YarrPattern::YarrPattern): - * yarr/YarrPattern.h: + Fix clang build. -2011-01-12 Sheriff Bot <webkit.review.bot@gmail.com> + * wtf/FastMalloc.cpp: + (WTF::fastMalloc): + (WTF::fastCalloc): + (WTF::fastRealloc): - Unreviewed, rolling out r75595. - http://trac.webkit.org/changeset/75595 - https://bugs.webkit.org/show_bug.cgi?id=52286 +2011-04-04 Oliver Hunt <oliver@apple.com> - It broke fast/regex/pcre-test-1.html (Requested by Ossy on - #webkit). + Remove accidental change to Platform.h - * JavaScriptCore.gypi: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * runtime/RegExp.cpp: - * yarr/Yarr.h: Removed. - * yarr/YarrInterpreter.cpp: - * yarr/YarrInterpreter.h: - * yarr/YarrJIT.cpp: - (JSC::Yarr::jitCompile): - * yarr/YarrJIT.h: - (JSC::Yarr::execute): - * yarr/YarrParser.h: - * yarr/YarrPattern.cpp: - (JSC::Yarr::compile): - (JSC::Yarr::YarrPattern::YarrPattern): - * yarr/YarrPattern.h: + * wtf/Platform.h: -2011-01-12 Peter Varga <pvarga@webkit.org> +2011-04-04 Geoffrey Garen <ggaren@apple.com> - Reviewed by Gavin Barraclough. + Reviewed by Oliver Hunt. - Add Yarr.h to YARR - https://bugs.webkit.org/show_bug.cgi?id=51021 + Fixed a weak-handle-related leak in RegisterFile + https://bugs.webkit.org/show_bug.cgi?id=57793 - Move other common constants and functions from YARR's different files - to Yarr.h. - Use Yarr.h header instead of including other YARR headers where it - is possible. + * interpreter/RegisterFile.cpp: Nixed leaky GlobalObjectNotifier. + * interpreter/RegisterFile.h: + (JSC::RegisterFile::GlobalObjectOwner::finalize): + (JSC::RegisterFile::RegisterFile): Replaced GlobalObjectNotifier with + a per-RegisterFile weak handle owner, which does not leak. - * JavaScriptCore.gypi: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * runtime/RegExp.cpp: - * yarr/Yarr.h: Added. - * yarr/YarrInterpreter.cpp: - * yarr/YarrInterpreter.h: - * yarr/YarrJIT.cpp: - (JSC::Yarr::jitCompile): - (JSC::Yarr::execute): - * yarr/YarrJIT.h: - * yarr/YarrParser.h: - * yarr/YarrPattern.cpp: - (JSC::Yarr::YarrPattern::compile): - (JSC::Yarr::YarrPattern::YarrPattern): - * yarr/YarrPattern.h: + * runtime/WeakGCPtr.h: + (JSC::WeakGCPtr::set): Allow set() to take a context argument, since + RegisterFile now needs this. (Seems like it was an accidental omission + all along.) -2011-01-11 Michael Saboff <msaboff@apple.com> +2011-04-04 Oliver Hunt <oliver@apple.com> Reviewed by Geoffrey Garen. - Missing call to popTempSortVector() for exception case in JSArray::sort. - https://bugs.webkit.org/show_bug.cgi?id=50718 - - Fix to patch of 50718 that added pushTempSortVector() and - popTempSortVector() to JSArray::sort() to mark elements during sort. - Need to add popTempSortVector() for the return case if toString() - had an exception. - - * runtime/JSArray.cpp: - (JSC::JSArray::sort): Added popTempSortVector() - -2011-01-11 Xan Lopez <xlopez@igalia.com> + Make malloc validation useful + https://bugs.webkit.org/show_bug.cgi?id=57502 - Reviewed by Darin Adler. + This patch changes FAST_MALLOC_MATCH_VALIDATION with a general + corruption check that tags the beginning and end of all allocations + to check for write overflows and overwrites the contents of + memory on free in order to (hopefully) show up use-after-free issues + sooner. - Microoptimization in ~JSString - https://bugs.webkit.org/show_bug.cgi?id=52222 + We also turn it on by default for debug builds. - The case where m_fibers is 0 seems to be the most common one - (almost 1/2 of the time, followed at some distance by m_fibers = 1 - in 1/4 of the cases in a typical SunSpider execution). We can save - one comparison in this common case by doing a bit of refactoring - in the JSString destructor; overall a 0.3% progression, but only - the string tests show improvement. + * JavaScriptCore.exp: + * wtf/FastMalloc.cpp: + (WTF::tryFastMalloc): + (WTF::fastMalloc): + (WTF::tryFastCalloc): + (WTF::fastCalloc): + (WTF::fastFree): + (WTF::tryFastRealloc): + (WTF::fastRealloc): + (WTF::TCMalloc_PageHeap::isScavengerSuspended): + (WTF::TCMalloc_PageHeap::scheduleScavenger): + (WTF::TCMalloc_PageHeap::suspendScavenger): + (WTF::TCMalloc_PageHeap::signalScavenger): + (WTF::TCMallocStats::malloc): + (WTF::TCMallocStats::free): + (WTF::TCMallocStats::fastCalloc): + (WTF::TCMallocStats::tryFastCalloc): + (WTF::TCMallocStats::calloc): + (WTF::TCMallocStats::fastRealloc): + (WTF::TCMallocStats::tryFastRealloc): + (WTF::TCMallocStats::realloc): + * wtf/FastMalloc.h: + (WTF::Internal::fastMallocValidationHeader): + (WTF::Internal::fastMallocValidationSuffix): + (WTF::Internal::fastMallocMatchValidationType): + (WTF::Internal::setFastMallocMatchValidationType): + (WTF::fastMallocMatchValidateFree): + (WTF::fastMallocValidate): + * wtf/Platform.h: - * runtime/JSString.h: - (JSC::RopeBuilder::~JSString): +2011-04-04 Geoffrey Garen <ggaren@apple.com> -2011-01-10 Michael Saboff <msaboff@apple.com> + Reviewed by Oliver Hunt. - Reviewed by Geoffrey Garen. + Renamed clearWeakPointers => updateWeakHandles and removed misleading comment + https://bugs.webkit.org/show_bug.cgi?id=57790 - ASSERTION Failure in JSC::binaryChop - https://bugs.webkit.org/show_bug.cgi?id=25614 + * collector/handles/HandleHeap.cpp: + (JSC::HandleHeap::updateWeakHandles): Updated for rename. - Changed JITStubs::cti_register_file_check() to use the current stack's - return PC to find the bytecode for handling the exception in the prior - frame. Also added the appropriate arrity check routine call to the - JIT to bytecode vector (m_callReturnIndexVector) in the CodeBlock. + * collector/handles/HandleHeap.h: Removed comment claiming that this + function should only be called during teardown, because it's actually + called after every GC pass. - * jit/JIT.cpp: - (JSC::JIT::privateCompile): Changed the arrity check call location - so that it gets added to the m_calls list so that it's included in - CodeBlock::m_callReturnIndexVector. - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): Use the current call frame's return PC. + * runtime/Heap.cpp: + (JSC::Heap::destroy): + (JSC::Heap::markRoots): Updated for rename. -2011-01-10 Daniel Bates <dbates@rim.com> +2011-04-04 Geoffrey Garen <ggaren@apple.com> - Reviewed by Martin Robinson. + Reviewed by Oliver Hunt. - Remove extraneous COMPILER(GCC) condition when checking GCC_VERSION_AT_LEAST() - https://bugs.webkit.org/show_bug.cgi?id=52178 + Standardized handling of handles for immediate values + https://bugs.webkit.org/show_bug.cgi?id=57788 - It is sufficient to test GCC_VERSION_AT_LEAST() instead of both COMPILER(GCC) and - GCC_VERSION_AT_LEAST(). Notice GCC_VERSION_AT_LEAST() is defined to be 0 when we - are not compiling with GCC. + * collector/handles/HandleHeap.cpp: + (JSC::HandleHeap::clearWeakPointers): Don't check for null or non-cell + values here, because our write barrier guarantees that such values are + not in the weak list. - Fixes style issues at the callsites (i.e. replace comma with comma-space in - macro function argument list). Also, makes a spelling correction in a comment. + (JSC::HandleHeap::writeBarrier): Standardized on checking for null before + checking for cell, and on using early return instead of if/else. - * jit/ExecutableAllocator.h: - (JSC::ExecutableAllocator::cacheFlush): - * wtf/Platform.h: + * collector/handles/HandleHeap.h: + (JSC::HandleHeap::deallocate): + (JSC::HandleHeap::makeWeak): Ditto. -2011-01-10 Geoffrey Garen <ggaren@apple.com> +2011-04-04 Geoffrey Garen <ggaren@apple.com> - Build fix: removed some uses of nextNumber that I missed last time. - - * runtime/Heap.cpp: - (JSC::Heap::reset): - (JSC::Heap::collectAllGarbage): + Not reviewed. -2011-01-10 Daniel Bates <dbates@rim.com> + Removed a redundant variable from HandleHeap + https://bugs.webkit.org/show_bug.cgi?id=57786 + + Forgot to commit the file that actually removes the data member! + + * collector/handles/HandleHeap.h: - Reviewed by Darin Adler. +2011-04-04 Geoffrey Garen <ggaren@apple.com> - Use __builtin_expect when compiling using RVCT in GNU mode - https://bugs.webkit.org/show_bug.cgi?id=51866 + Reviewed by Oliver Hunt. - We should only use __builtin_expect if we are compiling with GCC or RVCT 3 or higher in GNU mode - as pointed out by Siddharth Mathur per <http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0202h/Cjabddedbde.html>. + Removed a redundant variable from HandleHeap + https://bugs.webkit.org/show_bug.cgi?id=57786 + + We don't need a specific variable to indicate that we're in the middle + of the finalization phase, since m_nextToFinalize already does this. - * wtf/AlwaysInline.h: - * wtf/Platform.h: Removed define WTF_COMPILER_RVCT4_OR_GREATER. Instead added macro - function RVCT_VERSION_AT_LEAST so that we can test for an arbitrary minimum RVCT - version. + * collector/handles/HandleHeap.cpp: + (JSC::HandleHeap::HandleHeap): + (JSC::HandleHeap::clearWeakPointers): + (JSC::HandleHeap::writeBarrier): -2011-01-10 Geoffrey Garen <ggaren@apple.com> +2011-04-04 Geoffrey Garen <ggaren@apple.com> Reviewed by Oliver Hunt. - Moved Collector.* => Heap.*, since the file contains a class named "Heap". - - * API/JSCallbackObject.cpp: - * Android.mk: - * CMakeLists.txt: - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * interpreter/Interpreter.cpp: + Renamed Finalizer => WeakHandleOwner (in preparation for adding a reachability callback) + https://bugs.webkit.org/show_bug.cgi?id=57775 + + Also renamed noFinalizer => emptyWeakOwner, since this is really an + optimization for a weak owner with empty callbacks. + + * collector/handles/HandleHeap.cpp: + (JSC::HandleHeap::clearWeakPointers): Updated for renames. Removed + redundant initialization of m_nextToFinalize. Moved deletion check inside + weak owner check, since the weak owner can't delete the node if there is + no weak owner! + + * collector/handles/HandleHeap.h: + (JSC::WeakHandleOwner::~WeakHandleOwner): + (JSC::HandleHeap::makeWeak): Updated for renames. + + (JSC::HandleHeap::hasWeakOwner): Changed getFinalizer to hasWeakOwner, + to clarify this function's role in assertions. + + (JSC::HandleHeap::Node::Node): + (JSC::HandleHeap::Node::makeWeak): + (JSC::HandleHeap::Node::isWeak): + (JSC::HandleHeap::Node::weakOwner): + (JSC::HandleHeap::Node::weakOwnerContext): + (JSC::HandleHeap::Node::emptyWeakOwner): + * interpreter/RegisterFile.cpp: + (JSC::RegisterFile::globalObjectCollectedNotifier): * interpreter/RegisterFile.h: - * jit/JITStubs.cpp: - * runtime/Collector.cpp: Removed. - * runtime/Collector.h: Removed. - * runtime/CollectorHeapIterator.h: - * runtime/GCActivityCallbackCF.cpp: - * runtime/Heap.cpp: Copied from JavaScriptCore/runtime/Collector.cpp. - * runtime/Heap.h: Copied from JavaScriptCore/runtime/Collector.h. - * runtime/InitializeThreading.cpp: - * runtime/JSCell.h: - * runtime/JSGlobalData.cpp: - * runtime/JSGlobalData.h: - * runtime/JSLock.cpp: - * runtime/JSNumberCell.h: - * runtime/MachineStackMarker.cpp: - * runtime/MemoryStatistics.h: - * runtime/Protect.h: - * runtime/UString.cpp: * runtime/WeakGCMap.h: * runtime/WeakGCPtr.h: + (JSC::WeakGCPtr::WeakGCPtr): + (JSC::WeakGCPtr::set): Updated for renames. -2011-01-10 Xan Lopez <xlopez@igalia.com> - - Reviewed by Gavin Barraclough. - - Remove unused isString() case in JSString::toPrimitiveString() - https://bugs.webkit.org/show_bug.cgi?id=52167 - - We never call toPrimitiveString() with strings, so remove the - check and add an ASSERT ensuring this never happens. 0.7% overall - progression in sunspider, since one of the call sites is very hot. - - * runtime/JSString.h: - (JSC::JSValue::toPrimitiveString): - -2011-01-10 Peter Varga <pvarga@inf.u-szeged.hu> - - Reviewed by Gavin Barraclough. - - Rename the existing YARR files and classes - https://bugs.webkit.org/show_bug.cgi?id=51872 - - Replace the "Regex" prefix with "Yarr" in the name of YARR files and classes. - - * Android.mk: - * CMakeLists.txt: - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.xcodeproj/project.pbxproj: - * runtime/RegExp.cpp: - (JSC::RegExp::compile): - (JSC::RegExp::match): - (JSC::RegExp::printTraceData): - * yarr/YarrInterpreter.cpp: Renamed from Source/JavaScriptCore/yarr/RegexInterpreter.cpp. - (JSC::Yarr::Interpreter::appendParenthesesDisjunctionContext): - (JSC::Yarr::Interpreter::popParenthesesDisjunctionContext): - (JSC::Yarr::Interpreter::DisjunctionContext::DisjunctionContext): - (JSC::Yarr::Interpreter::DisjunctionContext::operator new): - (JSC::Yarr::Interpreter::allocDisjunctionContext): - (JSC::Yarr::Interpreter::freeDisjunctionContext): - (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::ParenthesesDisjunctionContext): - (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::operator new): - (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::restoreOutput): - (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::getDisjunctionContext): - (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext): - (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext): - (JSC::Yarr::Interpreter::InputStream::InputStream): - (JSC::Yarr::Interpreter::InputStream::next): - (JSC::Yarr::Interpreter::InputStream::rewind): - (JSC::Yarr::Interpreter::InputStream::read): - (JSC::Yarr::Interpreter::InputStream::readPair): - (JSC::Yarr::Interpreter::InputStream::readChecked): - (JSC::Yarr::Interpreter::InputStream::reread): - (JSC::Yarr::Interpreter::InputStream::prev): - (JSC::Yarr::Interpreter::InputStream::getPos): - (JSC::Yarr::Interpreter::InputStream::setPos): - (JSC::Yarr::Interpreter::InputStream::atStart): - (JSC::Yarr::Interpreter::InputStream::atEnd): - (JSC::Yarr::Interpreter::InputStream::checkInput): - (JSC::Yarr::Interpreter::InputStream::uncheckInput): - (JSC::Yarr::Interpreter::InputStream::isNotAvailableInput): - (JSC::Yarr::Interpreter::testCharacterClass): - (JSC::Yarr::Interpreter::checkCharacter): - (JSC::Yarr::Interpreter::checkCasedCharacter): - (JSC::Yarr::Interpreter::checkCharacterClass): - (JSC::Yarr::Interpreter::tryConsumeBackReference): - (JSC::Yarr::Interpreter::matchAssertionBOL): - (JSC::Yarr::Interpreter::matchAssertionEOL): - (JSC::Yarr::Interpreter::matchAssertionWordBoundary): - (JSC::Yarr::Interpreter::backtrackPatternCharacter): - (JSC::Yarr::Interpreter::backtrackPatternCasedCharacter): - (JSC::Yarr::Interpreter::matchCharacterClass): - (JSC::Yarr::Interpreter::backtrackCharacterClass): - (JSC::Yarr::Interpreter::matchBackReference): - (JSC::Yarr::Interpreter::backtrackBackReference): - (JSC::Yarr::Interpreter::recordParenthesesMatch): - (JSC::Yarr::Interpreter::resetMatches): - (JSC::Yarr::Interpreter::parenthesesDoBacktrack): - (JSC::Yarr::Interpreter::matchParenthesesOnceBegin): - (JSC::Yarr::Interpreter::matchParenthesesOnceEnd): - (JSC::Yarr::Interpreter::backtrackParenthesesOnceBegin): - (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd): - (JSC::Yarr::Interpreter::matchParenthesesTerminalBegin): - (JSC::Yarr::Interpreter::matchParenthesesTerminalEnd): - (JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin): - (JSC::Yarr::Interpreter::backtrackParenthesesTerminalEnd): - (JSC::Yarr::Interpreter::matchParentheticalAssertionBegin): - (JSC::Yarr::Interpreter::matchParentheticalAssertionEnd): - (JSC::Yarr::Interpreter::backtrackParentheticalAssertionBegin): - (JSC::Yarr::Interpreter::backtrackParentheticalAssertionEnd): - (JSC::Yarr::Interpreter::matchParentheses): - (JSC::Yarr::Interpreter::backtrackParentheses): - (JSC::Yarr::Interpreter::lookupForBeginChars): - (JSC::Yarr::Interpreter::matchDisjunction): - (JSC::Yarr::Interpreter::matchNonZeroDisjunction): - (JSC::Yarr::Interpreter::interpret): - (JSC::Yarr::Interpreter::Interpreter): - (JSC::Yarr::ByteCompiler::ParenthesesStackEntry::ParenthesesStackEntry): - (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::atomParenthesesOnceBegin): - (JSC::Yarr::ByteCompiler::atomParenthesesTerminalBegin): - (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin): - (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin): - (JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd): - (JSC::Yarr::ByteCompiler::popParenthesesStack): - (JSC::Yarr::ByteCompiler::dumpDisjunction): - (JSC::Yarr::ByteCompiler::closeAlternative): - (JSC::Yarr::ByteCompiler::closeBodyAlternative): - (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd): - (JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd): - (JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd): - (JSC::Yarr::ByteCompiler::regexBegin): - (JSC::Yarr::ByteCompiler::regexEnd): - (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction): - (JSC::Yarr::ByteCompiler::alternativeDisjunction): - (JSC::Yarr::ByteCompiler::emitDisjunction): - (JSC::Yarr::byteCompile): - (JSC::Yarr::interpret): - * yarr/YarrInterpreter.h: Renamed from Source/JavaScriptCore/yarr/RegexInterpreter.h. - (JSC::Yarr::ByteTerm::ByteTerm): - (JSC::Yarr::ByteTerm::BOL): - (JSC::Yarr::ByteTerm::CheckInput): - (JSC::Yarr::ByteTerm::EOL): - (JSC::Yarr::ByteTerm::WordBoundary): - (JSC::Yarr::ByteTerm::BackReference): - (JSC::Yarr::ByteTerm::BodyAlternativeBegin): - (JSC::Yarr::ByteTerm::BodyAlternativeDisjunction): - (JSC::Yarr::ByteTerm::BodyAlternativeEnd): - (JSC::Yarr::ByteTerm::AlternativeBegin): - (JSC::Yarr::ByteTerm::AlternativeDisjunction): - (JSC::Yarr::ByteTerm::AlternativeEnd): - (JSC::Yarr::ByteTerm::SubpatternBegin): - (JSC::Yarr::ByteTerm::SubpatternEnd): - (JSC::Yarr::ByteTerm::invert): - (JSC::Yarr::ByteTerm::capture): - (JSC::Yarr::ByteDisjunction::ByteDisjunction): - (JSC::Yarr::BytecodePattern::BytecodePattern): - (JSC::Yarr::BytecodePattern::~BytecodePattern): - * yarr/YarrJIT.cpp: Renamed from Source/JavaScriptCore/yarr/RegexJIT.cpp. - (JSC::Yarr::YarrGenerator::optimizeAlternative): - (JSC::Yarr::YarrGenerator::matchCharacterClassRange): - (JSC::Yarr::YarrGenerator::matchCharacterClass): - (JSC::Yarr::YarrGenerator::jumpIfNoAvailableInput): - (JSC::Yarr::YarrGenerator::jumpIfAvailableInput): - (JSC::Yarr::YarrGenerator::checkInput): - (JSC::Yarr::YarrGenerator::atEndOfInput): - (JSC::Yarr::YarrGenerator::notAtEndOfInput): - (JSC::Yarr::YarrGenerator::jumpIfCharEquals): - (JSC::Yarr::YarrGenerator::jumpIfCharNotEquals): - (JSC::Yarr::YarrGenerator::readCharacter): - (JSC::Yarr::YarrGenerator::storeToFrame): - (JSC::Yarr::YarrGenerator::storeToFrameWithPatch): - (JSC::Yarr::YarrGenerator::loadFromFrame): - (JSC::Yarr::YarrGenerator::loadFromFrameAndJump): - (JSC::Yarr::YarrGenerator::IndirectJumpEntry::IndirectJumpEntry): - (JSC::Yarr::YarrGenerator::IndirectJumpEntry::addJump): - (JSC::Yarr::YarrGenerator::AlternativeBacktrackRecord::AlternativeBacktrackRecord): - (JSC::Yarr::YarrGenerator::GenerationState::GenerationState): - (JSC::Yarr::YarrGenerator::GenerationState::addIndirectJumpEntry): - (JSC::Yarr::YarrGenerator::GenerationState::emitIndirectJumpTable): - (JSC::Yarr::YarrGenerator::GenerationState::incrementParenNestingLevel): - (JSC::Yarr::YarrGenerator::GenerationState::decrementParenNestingLevel): - (JSC::Yarr::YarrGenerator::GenerationState::addParenthesesTail): - (JSC::Yarr::YarrGenerator::GenerationState::emitParenthesesTail): - (JSC::Yarr::YarrGenerator::GenerationState::addJumpToNextInteration): - (JSC::Yarr::YarrGenerator::GenerationState::addJumpsToNextInteration): - (JSC::Yarr::YarrGenerator::GenerationState::addDataLabelToNextIteration): - (JSC::Yarr::YarrGenerator::GenerationState::linkToNextIteration): - (JSC::Yarr::YarrGenerator::BacktrackDestination::BacktrackDestination): - (JSC::Yarr::YarrGenerator::BacktrackDestination::clear): - (JSC::Yarr::YarrGenerator::BacktrackDestination::clearDataLabel): - (JSC::Yarr::YarrGenerator::BacktrackDestination::hasDestination): - (JSC::Yarr::YarrGenerator::BacktrackDestination::isStackOffset): - (JSC::Yarr::YarrGenerator::BacktrackDestination::isLabel): - (JSC::Yarr::YarrGenerator::BacktrackDestination::isJumpList): - (JSC::Yarr::YarrGenerator::BacktrackDestination::hasDataLabel): - (JSC::Yarr::YarrGenerator::BacktrackDestination::copyTarget): - (JSC::Yarr::YarrGenerator::BacktrackDestination::copyTo): - (JSC::Yarr::YarrGenerator::BacktrackDestination::addBacktrackJump): - (JSC::Yarr::YarrGenerator::BacktrackDestination::setStackOffset): - (JSC::Yarr::YarrGenerator::BacktrackDestination::setLabel): - (JSC::Yarr::YarrGenerator::BacktrackDestination::setNextBacktrackLabel): - (JSC::Yarr::YarrGenerator::BacktrackDestination::copyBacktrackToLabel): - (JSC::Yarr::YarrGenerator::BacktrackDestination::setBacktrackToLabel): - (JSC::Yarr::YarrGenerator::BacktrackDestination::setBacktrackJumpList): - (JSC::Yarr::YarrGenerator::BacktrackDestination::setBacktrackSourceLabel): - (JSC::Yarr::YarrGenerator::BacktrackDestination::setDataLabel): - (JSC::Yarr::YarrGenerator::BacktrackDestination::setSubDataLabelPtr): - (JSC::Yarr::YarrGenerator::BacktrackDestination::linkToNextBacktrack): - (JSC::Yarr::YarrGenerator::BacktrackDestination::getStackOffset): - (JSC::Yarr::YarrGenerator::BacktrackDestination::getLabel): - (JSC::Yarr::YarrGenerator::BacktrackDestination::getBacktrackJumps): - (JSC::Yarr::YarrGenerator::BacktrackDestination::getDataLabel): - (JSC::Yarr::YarrGenerator::BacktrackDestination::jumpToBacktrack): - (JSC::Yarr::YarrGenerator::BacktrackDestination::linkDataLabelToHereIfExists): - (JSC::Yarr::YarrGenerator::BacktrackDestination::plantJumpToBacktrackIfExists): - (JSC::Yarr::YarrGenerator::BacktrackDestination::linkAlternativeBacktracks): - (JSC::Yarr::YarrGenerator::BacktrackDestination::linkAlternativeBacktracksTo): - (JSC::Yarr::YarrGenerator::TermGenerationState::TermGenerationState): - (JSC::Yarr::YarrGenerator::TermGenerationState::resetAlternative): - (JSC::Yarr::YarrGenerator::TermGenerationState::alternativeValid): - (JSC::Yarr::YarrGenerator::TermGenerationState::nextAlternative): - (JSC::Yarr::YarrGenerator::TermGenerationState::alternative): - (JSC::Yarr::YarrGenerator::TermGenerationState::isLastAlternative): - (JSC::Yarr::YarrGenerator::TermGenerationState::resetTerm): - (JSC::Yarr::YarrGenerator::TermGenerationState::termValid): - (JSC::Yarr::YarrGenerator::TermGenerationState::nextTerm): - (JSC::Yarr::YarrGenerator::TermGenerationState::term): - (JSC::Yarr::YarrGenerator::TermGenerationState::isLastTerm): - (JSC::Yarr::YarrGenerator::TermGenerationState::getSubParenNum): - (JSC::Yarr::YarrGenerator::TermGenerationState::isMainDisjunction): - (JSC::Yarr::YarrGenerator::TermGenerationState::setParenthesesTail): - (JSC::Yarr::YarrGenerator::TermGenerationState::getParenthesesTail): - (JSC::Yarr::YarrGenerator::TermGenerationState::lookaheadTerm): - (JSC::Yarr::YarrGenerator::TermGenerationState::isSinglePatternCharacterLookaheadTerm): - (JSC::Yarr::YarrGenerator::TermGenerationState::inputOffset): - (JSC::Yarr::YarrGenerator::TermGenerationState::clearBacktrack): - (JSC::Yarr::YarrGenerator::TermGenerationState::jumpToBacktrack): - (JSC::Yarr::YarrGenerator::TermGenerationState::plantJumpToBacktrackIfExists): - (JSC::Yarr::YarrGenerator::TermGenerationState::linkDataLabelToBacktrackIfExists): - (JSC::Yarr::YarrGenerator::TermGenerationState::addBacktrackJump): - (JSC::Yarr::YarrGenerator::TermGenerationState::setBacktrackDataLabel): - (JSC::Yarr::YarrGenerator::TermGenerationState::setBackTrackStackOffset): - (JSC::Yarr::YarrGenerator::TermGenerationState::setBacktrackLabel): - (JSC::Yarr::YarrGenerator::TermGenerationState::linkAlternativeBacktracks): - (JSC::Yarr::YarrGenerator::TermGenerationState::linkAlternativeBacktracksTo): - (JSC::Yarr::YarrGenerator::TermGenerationState::setBacktrackLink): - (JSC::Yarr::YarrGenerator::TermGenerationState::chainBacktracks): - (JSC::Yarr::YarrGenerator::TermGenerationState::chainBacktrackJumps): - (JSC::Yarr::YarrGenerator::TermGenerationState::getBacktrackDestination): - (JSC::Yarr::YarrGenerator::TermGenerationState::propagateBacktrackingFrom): - (JSC::Yarr::YarrGenerator::ParenthesesTail::ParenthesesTail): - (JSC::Yarr::YarrGenerator::ParenthesesTail::processBacktracks): - (JSC::Yarr::YarrGenerator::ParenthesesTail::setNextIteration): - (JSC::Yarr::YarrGenerator::ParenthesesTail::addAfterParenJump): - (JSC::Yarr::YarrGenerator::ParenthesesTail::generateCode): - (JSC::Yarr::YarrGenerator::generateAssertionBOL): - (JSC::Yarr::YarrGenerator::generateAssertionEOL): - (JSC::Yarr::YarrGenerator::matchAssertionWordchar): - (JSC::Yarr::YarrGenerator::generateAssertionWordBoundary): - (JSC::Yarr::YarrGenerator::generatePatternCharacterSingle): - (JSC::Yarr::YarrGenerator::generatePatternCharacterPair): - (JSC::Yarr::YarrGenerator::generatePatternCharacterFixed): - (JSC::Yarr::YarrGenerator::generatePatternCharacterGreedy): - (JSC::Yarr::YarrGenerator::generatePatternCharacterNonGreedy): - (JSC::Yarr::YarrGenerator::generateCharacterClassSingle): - (JSC::Yarr::YarrGenerator::generateCharacterClassFixed): - (JSC::Yarr::YarrGenerator::generateCharacterClassGreedy): - (JSC::Yarr::YarrGenerator::generateCharacterClassNonGreedy): - (JSC::Yarr::YarrGenerator::generateParenthesesDisjunction): - (JSC::Yarr::YarrGenerator::generateParenthesesSingle): - (JSC::Yarr::YarrGenerator::generateParenthesesGreedyNoBacktrack): - (JSC::Yarr::YarrGenerator::generateParentheticalAssertion): - (JSC::Yarr::YarrGenerator::generateTerm): - (JSC::Yarr::YarrGenerator::generateDisjunction): - (JSC::Yarr::YarrGenerator::generateEnter): - (JSC::Yarr::YarrGenerator::generateReturn): - (JSC::Yarr::YarrGenerator::YarrGenerator): - (JSC::Yarr::YarrGenerator::generate): - (JSC::Yarr::YarrGenerator::compile): - (JSC::Yarr::jitCompile): - * yarr/YarrJIT.h: Renamed from Source/JavaScriptCore/yarr/RegexJIT.h. - (JSC::Yarr::YarrCodeBlock::YarrCodeBlock): - (JSC::Yarr::YarrCodeBlock::~YarrCodeBlock): - (JSC::Yarr::YarrCodeBlock::setFallBack): - (JSC::Yarr::YarrCodeBlock::isFallBack): - (JSC::Yarr::YarrCodeBlock::set): - (JSC::Yarr::YarrCodeBlock::execute): - (JSC::Yarr::YarrCodeBlock::getAddr): - (JSC::Yarr::execute): - * yarr/YarrParser.h: Renamed from Source/JavaScriptCore/yarr/RegexParser.h. - (JSC::Yarr::Parser::CharacterClassParserDelegate::CharacterClassParserDelegate): - (JSC::Yarr::Parser::CharacterClassParserDelegate::begin): - (JSC::Yarr::Parser::CharacterClassParserDelegate::atomPatternCharacter): - (JSC::Yarr::Parser::CharacterClassParserDelegate::atomBuiltInCharacterClass): - (JSC::Yarr::Parser::CharacterClassParserDelegate::end): - (JSC::Yarr::Parser::CharacterClassParserDelegate::assertionWordBoundary): - (JSC::Yarr::Parser::CharacterClassParserDelegate::atomBackReference): - (JSC::Yarr::Parser::Parser): - (JSC::Yarr::Parser::parseEscape): - (JSC::Yarr::Parser::parseAtomEscape): - (JSC::Yarr::Parser::parseCharacterClassEscape): - (JSC::Yarr::Parser::parseCharacterClass): - (JSC::Yarr::Parser::parseParenthesesBegin): - (JSC::Yarr::Parser::parseParenthesesEnd): - (JSC::Yarr::Parser::parseQuantifier): - (JSC::Yarr::Parser::parseTokens): - (JSC::Yarr::Parser::parse): - (JSC::Yarr::Parser::saveState): - (JSC::Yarr::Parser::restoreState): - (JSC::Yarr::Parser::atEndOfPattern): - (JSC::Yarr::Parser::peek): - (JSC::Yarr::Parser::peekIsDigit): - (JSC::Yarr::Parser::peekDigit): - (JSC::Yarr::Parser::consume): - (JSC::Yarr::Parser::consumeDigit): - (JSC::Yarr::Parser::consumeNumber): - (JSC::Yarr::Parser::consumeOctal): - (JSC::Yarr::Parser::tryConsume): - (JSC::Yarr::Parser::tryConsumeHex): - (JSC::Yarr::parse): - * yarr/YarrPattern.cpp: Renamed from Source/JavaScriptCore/yarr/RegexPattern.cpp. - (JSC::Yarr::CharacterClassConstructor::CharacterClassConstructor): - (JSC::Yarr::CharacterClassConstructor::reset): - (JSC::Yarr::CharacterClassConstructor::append): - (JSC::Yarr::CharacterClassConstructor::putChar): - (JSC::Yarr::CharacterClassConstructor::isUnicodeUpper): - (JSC::Yarr::CharacterClassConstructor::isUnicodeLower): - (JSC::Yarr::CharacterClassConstructor::putRange): - (JSC::Yarr::CharacterClassConstructor::charClass): - (JSC::Yarr::CharacterClassConstructor::addSorted): - (JSC::Yarr::CharacterClassConstructor::addSortedRange): - (JSC::Yarr::BeginCharHelper::BeginCharHelper): - (JSC::Yarr::BeginCharHelper::addBeginChar): - (JSC::Yarr::BeginCharHelper::merge): - (JSC::Yarr::BeginCharHelper::addCharacter): - (JSC::Yarr::BeginCharHelper::linkHotTerms): - (JSC::Yarr::YarrPatternConstructor::YarrPatternConstructor): - (JSC::Yarr::YarrPatternConstructor::~YarrPatternConstructor): - (JSC::Yarr::YarrPatternConstructor::reset): - (JSC::Yarr::YarrPatternConstructor::assertionBOL): - (JSC::Yarr::YarrPatternConstructor::assertionEOL): - (JSC::Yarr::YarrPatternConstructor::assertionWordBoundary): - (JSC::Yarr::YarrPatternConstructor::atomPatternCharacter): - (JSC::Yarr::YarrPatternConstructor::atomBuiltInCharacterClass): - (JSC::Yarr::YarrPatternConstructor::atomCharacterClassBegin): - (JSC::Yarr::YarrPatternConstructor::atomCharacterClassAtom): - (JSC::Yarr::YarrPatternConstructor::atomCharacterClassRange): - (JSC::Yarr::YarrPatternConstructor::atomCharacterClassBuiltIn): - (JSC::Yarr::YarrPatternConstructor::atomCharacterClassEnd): - (JSC::Yarr::YarrPatternConstructor::atomParenthesesSubpatternBegin): - (JSC::Yarr::YarrPatternConstructor::atomParentheticalAssertionBegin): - (JSC::Yarr::YarrPatternConstructor::atomParenthesesEnd): - (JSC::Yarr::YarrPatternConstructor::atomBackReference): - (JSC::Yarr::YarrPatternConstructor::copyDisjunction): - (JSC::Yarr::YarrPatternConstructor::copyTerm): - (JSC::Yarr::YarrPatternConstructor::quantifyAtom): - (JSC::Yarr::YarrPatternConstructor::disjunction): - (JSC::Yarr::YarrPatternConstructor::regexBegin): - (JSC::Yarr::YarrPatternConstructor::regexEnd): - (JSC::Yarr::YarrPatternConstructor::regexError): - (JSC::Yarr::YarrPatternConstructor::setupAlternativeOffsets): - (JSC::Yarr::YarrPatternConstructor::setupDisjunctionOffsets): - (JSC::Yarr::YarrPatternConstructor::setupOffsets): - (JSC::Yarr::YarrPatternConstructor::checkForTerminalParentheses): - (JSC::Yarr::YarrPatternConstructor::optimizeBOL): - (JSC::Yarr::YarrPatternConstructor::addBeginTerm): - (JSC::Yarr::YarrPatternConstructor::setupDisjunctionBeginTerms): - (JSC::Yarr::YarrPatternConstructor::setupAlternativeBeginTerms): - (JSC::Yarr::YarrPatternConstructor::setupBeginChars): - (JSC::Yarr::compile): - (JSC::Yarr::YarrPattern::YarrPattern): - * yarr/YarrPattern.h: Renamed from Source/JavaScriptCore/yarr/RegexPattern.h. - (JSC::Yarr::CharacterRange::CharacterRange): - (JSC::Yarr::CharacterClassTable::create): - (JSC::Yarr::CharacterClassTable::CharacterClassTable): - (JSC::Yarr::CharacterClass::CharacterClass): - (JSC::Yarr::PatternTerm::PatternTerm): - (JSC::Yarr::PatternTerm::ForwardReference): - (JSC::Yarr::PatternTerm::BOL): - (JSC::Yarr::PatternTerm::EOL): - (JSC::Yarr::PatternTerm::WordBoundary): - (JSC::Yarr::PatternTerm::invert): - (JSC::Yarr::PatternTerm::capture): - (JSC::Yarr::PatternTerm::quantify): - (JSC::Yarr::PatternAlternative::PatternAlternative): - (JSC::Yarr::PatternAlternative::lastTerm): - (JSC::Yarr::PatternAlternative::removeLastTerm): - (JSC::Yarr::PatternAlternative::setOnceThrough): - (JSC::Yarr::PatternAlternative::onceThrough): - (JSC::Yarr::PatternDisjunction::PatternDisjunction): - (JSC::Yarr::PatternDisjunction::~PatternDisjunction): - (JSC::Yarr::PatternDisjunction::addNewAlternative): - (JSC::Yarr::TermChain::TermChain): - (JSC::Yarr::BeginChar::BeginChar): - (JSC::Yarr::YarrPattern::~YarrPattern): - (JSC::Yarr::YarrPattern::reset): - (JSC::Yarr::YarrPattern::containsIllegalBackReference): - (JSC::Yarr::YarrPattern::newlineCharacterClass): - (JSC::Yarr::YarrPattern::digitsCharacterClass): - (JSC::Yarr::YarrPattern::spacesCharacterClass): - (JSC::Yarr::YarrPattern::wordcharCharacterClass): - (JSC::Yarr::YarrPattern::nondigitsCharacterClass): - (JSC::Yarr::YarrPattern::nonspacesCharacterClass): - (JSC::Yarr::YarrPattern::nonwordcharCharacterClass): - -2011-01-10 Gavin Barraclough <barraclough@apple.com> - - Windows build fix. - - * parser/SyntaxChecker.h: - -2011-01-10 Dave Tapuska <dtapuska@rim.com> +2011-04-04 Oliver Hunt <oliver@apple.com> - Reviewed by Gavin Barraclough. + Fix WinCE build. - Add CTI ASM versions for RVCT ARM THUMB2 mode. + * bytecode/Instruction.h: + * interpreter/Interpreter.cpp: + (JSC::Interpreter::tryCachePutByID): + (JSC::Interpreter::tryCacheGetByID): - https://bugs.webkit.org/show_bug.cgi?id=52154 +2011-04-04 Adam Roben <aroben@apple.com> - * jit/JITStubs.cpp: - (JSC::ctiTrampoline): - (JSC::ctiVMThrowTrampoline): - (JSC::ctiOpThrowNotCaught): + Delete mt.dep files when doing a clean build due to .vsprops file changes -2011-01-10 Gavin Barraclough <barraclough@apple.com> + Apparently this is yet another file that Visual Studio can't figure out it needs to rebuild. - Qt build fix. + Fixes <http://webkit.org/b/57777> r82850 failed to build on Windows Debug (Build) - * JavaScriptCore.pro: + Reviewed by Brian Weinstein. -2011-01-10 Gavin Barraclough <barraclough@apple.com> + * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: + (main): Added dep to the list of extensions we look for when choosing files to delete. - Reviewed by Oliver Hunt. +2011-04-01 Oliver Hunt <oliver@apple.com> - Bug 52079 - Syntax errors should be early errors. + Reviewed by Geoffrey Garen. - From chapter 16 the spec: - An implementation must report most errors at the time the relevant ECMAScript language construct is - evaluated. An early error is an error that can be detected and reported prior to the evaluation of - any construct in the Program containing the error. An implementation must report early errors in a - Program prior to the first evaluation of that Program. Early errors in eval code are reported at - the time eval is called but prior to evaluation of any construct within the eval code. All errors - that are not early errors are runtime errors. + Make StructureChain GC allocated + https://bugs.webkit.org/show_bug.cgi?id=56695 - An implementation must treat any instance of the following kinds of errors as an early error: - * Any syntax error." + Make StructureChain GC allocated, and make the various owners + mark it correctly. - * JavaScriptCore.xcodeproj/project.pbxproj: - Added new files. + * JavaScriptCore.exp: * bytecode/CodeBlock.cpp: - Removed op_throw_syntax_error. - * bytecode/Opcode.h: - Removed op_throw_syntax_error. + (JSC::CodeBlock::dump): + (JSC::CodeBlock::derefStructures): + (JSC::CodeBlock::refStructures): + (JSC::CodeBlock::markAggregate): + * bytecode/Instruction.h: + (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set): + (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList): + (JSC::PolymorphicAccessStructureList::derefStructures): + (JSC::PolymorphicAccessStructureList::markAggregate): + (JSC::Instruction::Instruction): + * bytecode/StructureStubInfo.cpp: + (JSC::StructureStubInfo::deref): + (JSC::StructureStubInfo::markAggregate): + * bytecode/StructureStubInfo.h: + (JSC::StructureStubInfo::initGetByIdChain): + (JSC::StructureStubInfo::initPutByIdTransition): * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::generate): - If m_expressionTooDeep then throw a runtime error. - (JSC::BytecodeGenerator::BytecodeGenerator): - Initialize m_expressionTooDeep. - (JSC::BytecodeGenerator::emitThrowExpressionTooDeepException): - Sets m_expressionTooDeep. - * bytecompiler/BytecodeGenerator.h: - Added m_expressionTooDeep, removed emitThrowSyntaxError. - * bytecompiler/NodesCodegen.cpp: - (JSC::RegExpNode::emitBytecode): - (JSC::ContinueNode::emitBytecode): - (JSC::BreakNode::emitBytecode): - (JSC::ReturnNode::emitBytecode): - (JSC::LabelNode::emitBytecode): - Conditions that threw syntax error are now handled during parsing; - during bytecompilation these are now just ASSERTs. + (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): + (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): + * collector/handles/Handle.h: + (JSC::HandleConverter::operator->): + (JSC::HandleConverter::operator*): * interpreter/Interpreter.cpp: (JSC::Interpreter::privateExecute): - * jit/JIT.cpp: - (JSC::JIT::privateCompileMainPass): - * jit/JIT.h: * jit/JITOpcodes.cpp: + (JSC::JIT::emit_op_jneq_ptr): * jit/JITOpcodes32_64.cpp: + (JSC::JIT::emit_op_jneq_ptr): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::privateCompileGetByIdChainList): + * jit/JITPropertyAccess32_64.cpp: + (JSC::JIT::privateCompileGetByIdChainList): * jit/JITStubs.cpp: - * jit/JITStubs.h: - Removed op_throw_syntax_error. - * parser/ASTBuilder.h: - (JSC::ASTBuilder::createRegExp): - Renamed; added syntax check. - * parser/JSParser.cpp: - (JSC::JSParser::breakIsValid): - (JSC::JSParser::hasLabel): - (JSC::JSParser::Scope::Scope): - (JSC::JSParser::Scope::setIsFunction): - (JSC::JSParser::Scope::isFunctionBoundary): - (JSC::JSParser::ScopeRef::hasContainingScope): - (JSC::JSParser::ScopeRef::containingScope): - (JSC::JSParser::AutoPopScopeRef::AutoPopScopeRef): - (JSC::JSParser::AutoPopScopeRef::~AutoPopScopeRef): - (JSC::JSParser::AutoPopScopeRef::setPopped): - (JSC::JSParser::popScopeInternal): - (JSC::JSParser::popScope): - (JSC::jsParse): - (JSC::JSParser::JSParser): - (JSC::JSParser::parseProgram): - (JSC::JSParser::parseBreakStatement): - (JSC::JSParser::parseContinueStatement): - (JSC::JSParser::parseReturnStatement): - (JSC::JSParser::parseTryStatement): - (JSC::JSParser::parseFunctionInfo): - (JSC::JSParser::parseExpressionOrLabelStatement): - (JSC::JSParser::parsePrimaryExpression): - * parser/JSParser.h: - * parser/Nodes.h: - * parser/Parser.cpp: - (JSC::Parser::parse): - * parser/SyntaxChecker.h: - (JSC::SyntaxChecker::createRegExp): - Renamed; added syntax check. - * runtime/ExceptionHelpers.cpp: - (JSC::createOutOfMemoryError): - (JSC::throwOutOfMemoryError): - * runtime/ExceptionHelpers.h: - Broke out createOutOfMemoryError. - * runtime/Executable.cpp: - (JSC::EvalExecutable::compileInternal): - (JSC::ProgramExecutable::compileInternal): - (JSC::FunctionExecutable::compileForCallInternal): - (JSC::FunctionExecutable::compileForConstructInternal): - Add check for exception after bytecode generation. - * runtime/RegExpConstructor.cpp: - (JSC::constructRegExp): - * runtime/RegExpPrototype.cpp: - (JSC::regExpProtoFuncCompile): - RegExp error prefixes not included in error string. - * yarr/RegexParser.h: - (JSC::Yarr::Parser::parse): - Removed regexBegin/regexEnd/regexError. - * yarr/RegexPattern.cpp: - (JSC::Yarr::RegexPatternConstructor::regexBegin): - Removed regexEnd/regexError. - (JSC::Yarr::compileRegex): - Add call to regexBegin (no longer called from the parser). - * yarr/YarrSyntaxChecker.cpp: Added. - (JSC::Yarr::SyntaxChecker::assertionBOL): - (JSC::Yarr::SyntaxChecker::assertionEOL): - (JSC::Yarr::SyntaxChecker::assertionWordBoundary): - (JSC::Yarr::SyntaxChecker::atomPatternCharacter): - (JSC::Yarr::SyntaxChecker::atomBuiltInCharacterClass): - (JSC::Yarr::SyntaxChecker::atomCharacterClassBegin): - (JSC::Yarr::SyntaxChecker::atomCharacterClassAtom): - (JSC::Yarr::SyntaxChecker::atomCharacterClassRange): - (JSC::Yarr::SyntaxChecker::atomCharacterClassBuiltIn): - (JSC::Yarr::SyntaxChecker::atomCharacterClassEnd): - (JSC::Yarr::SyntaxChecker::atomParenthesesSubpatternBegin): - (JSC::Yarr::SyntaxChecker::atomParentheticalAssertionBegin): - (JSC::Yarr::SyntaxChecker::atomParenthesesEnd): - (JSC::Yarr::SyntaxChecker::atomBackReference): - (JSC::Yarr::SyntaxChecker::quantifyAtom): - (JSC::Yarr::SyntaxChecker::disjunction): - (JSC::Yarr::checkSyntax): - * yarr/YarrSyntaxChecker.h: Added. - Check RegExp syntax. - -2011-01-10 Adam Roben <aroben@apple.com> - - Roll out r75289 - - It was causing assertion failures. See <http://webkit.org/b/52156>. - - * wtf/StackBounds.cpp: - (WTF::StackBounds::initialize): - -2011-01-08 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Darin Adler. - - Unify string table adding in AtomicString - https://bugs.webkit.org/show_bug.cgi?id=51927 - - Move code for adding a string into a separate function. - This removes multiple occurrence of the same logic. - - * wtf/text/AtomicString.cpp: - (WTF::addToStringTable): Added. - (WTF::AtomicString::add): Use addToStringTable(). - (WTF::AtomicString::fromUTF8): Ditto. - -2011-01-07 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Gavin Barraclough. - - Split machine stack marking functions into their own class (MachineStackMarker) - https://bugs.webkit.org/show_bug.cgi?id=52088 - - * API/APIShims.h: - (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): Moved registerThread() - call behind an #ifdef because we shouldn't be registering threads at all - if we don't support usage on multiple threads. - - * Android.mk: - * CMakeLists.txt: - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: Updated projects. - - * runtime/Collector.cpp: - (JSC::Heap::Heap): - (JSC::Heap::destroy): - (JSC::Heap::markRoots): - * runtime/Collector.h: - (JSC::Heap::machineStackMarker): Moved code to machineStackMarker. - + (JSC::JITThunks::tryCachePutByID): + (JSC::JITThunks::tryCacheGetByID): + (JSC::getPolymorphicAccessStructureListSlot): + (JSC::DEFINE_STUB_FUNCTION): + * runtime/JSCell.h: + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::JSGlobalData): * runtime/JSGlobalData.h: - (JSC::JSGlobalData::makeUsableFromMultipleThreads): Removed an unnecessary - level of indirection, to make Heap less of a God class. - - * runtime/MachineStackMarker.h: Copied from Source/JavaScriptCore/runtime/Collector.h. - * runtime/MachineStackMarker.cpp: Copied from Source/JavaScriptCore/runtime/Collector.cpp. - (JSC::MachineStackMarker::MachineStackMarker): - (JSC::MachineStackMarker::~MachineStackMarker): - (JSC::MachineStackMarker::makeUsableFromMultipleThreads): - (JSC::MachineStackMarker::registerThread): - (JSC::MachineStackMarker::unregisterThread): - (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal): - (JSC::MachineStackMarker::markCurrentThreadConservatively): - (JSC::MachineStackMarker::markOtherThreadConservatively): - (JSC::MachineStackMarker::markMachineStackConservatively): Moved code from Heap. - -2011-01-07 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Geoff Garen. - - Bug 26276 - Need a mechanism to determine stack extent on WINDOWS, SOLARIS, OPENBSD, SYMBIAN, HAIKU, WINCE platforms - - Fix for win32. The base of the stack is stored in the "deallocation stack" field of the - Thread Information Block - see: http://en.wikipedia.org/wiki/Win32_Thread_Information_Block - for more information! - - * wtf/StackBounds.cpp: - (WTF::StackBounds::initialize): - -2011-01-07 Adam Roben <aroben@apple.com> - - Update react-to-vsprops-changes.py after r74855 - - * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: - -2011-01-07 Carlos Garcia Campos <cgarcia@igalia.com> - - Reviewed by Martin Robinson. - - [GTK] Port scrollbar painting to GtkStyleContext - https://bugs.webkit.org/show_bug.cgi?id=52051 - - * wtf/gobject/GTypedefs.h: Add GtkStyleContext forward - declaration. - -2011-01-07 Daniel Bates <dbates@rim.com> - - Reviewed by Martin Robinson. - - Enable PCRE computed gotos when compiling with RCVT 4.0 or greater in GNU mode - https://bugs.webkit.org/show_bug.cgi?id=52034 - - Derived from a patch by Eli Fidler. - - RVCT 4 or greater in GNU mode supports the computed goto GNU language extension - as per <http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0348c/ch03s07s12.html>. - - * pcre/pcre_exec.cpp: Modified to check for feature, HAVE(COMPUTED_GOTO), instead - of hardcoding the GCC compiler. - * wtf/Platform.h: Define WTF_COMPILER_RVCT4_OR_GREATER if __ARMCC_VERSION >= 400000. - -2011-01-06 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Geoff Garen. - - Bug 52035 - Unregistering DOMWrapperWorlds is unsafe - - The method DOMWrapperWorld::unregisterWorld() effectively calls the DOMWrapperWorld's - destructor early, in order to release wrappers once we know we no longer intend to use them. - Whilst it is okay to have a method to throw away wrappers (assuming we know we're willing to - lose any state stored on them) it is not okay to deregister the world from the JSGlobalData. - A sequence of events that triggers the bug would look like this: - - (1) Create a DOMWrapperWorld. - (2) Register a timer in the world. - (3) Call unregisterWorld() on the world. - (4) Timer goes off, code is executed in the world, creates a Node not attached to a Document. - (5) We attempt to lookup a wrapper map for the world on the JSGlobalData, but because we've - called forgetWorld() none exists. - (6) Attempt to add a wrapper to a NULL map. - - Fix the problem by not removing the JSGlobalData's wrapper map until the world really goes away. - - * runtime/WeakGCMap.h: - (JSC::WeakGCMap::clear): - -2011-01-06 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Darin Adler. - - Bug 52021 - zeroDouble broken on ARMv7 - - The bug here is that zeroDouble was working incorrectly, - leading to op_loop_if_true failing - specifically in the - case where the value being checked is 0.0 encoded as a - double (rather than an integer immediate). - - Additionally this patch removes a redundant duplicate compare - in some (many) case. - - * assembler/ARMv7Assembler.h: - (JSC::ARMv7Assembler::vcmp_F64): - (JSC::ARMv7Assembler::vcmpz_F64): - * assembler/MacroAssemblerARM.h: - (JSC::MacroAssemblerARM::branchDoubleNonZero): - (JSC::MacroAssemblerARM::branchDoubleZeroOrNaN): - * assembler/MacroAssemblerARMv7.h: - (JSC::MacroAssemblerARMv7::branchDouble): - (JSC::MacroAssemblerARMv7::branchDoubleNonZero): - (JSC::MacroAssemblerARMv7::branchDoubleZeroOrNaN): - (JSC::MacroAssemblerARMv7::compare32): - * assembler/MacroAssemblerMIPS.h: - (JSC::MacroAssemblerMIPS::branchDoubleNonZero): - (JSC::MacroAssemblerMIPS::branchDoubleZeroOrNaN): - * assembler/MacroAssemblerX86Common.h: - (JSC::MacroAssemblerX86Common::branchDoubleNonZero): - (JSC::MacroAssemblerX86Common::branchDoubleZeroOrNaN): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::emit_op_jfalse): - (JSC::JIT::emit_op_jtrue): - -2011-01-06 Michael Saboff <msaboff@apple.com> - - Reviewed by Gavin Barraclough. - - Added debug code to compare the results of JIT regexp with - interpreted regexp and displays discrepencies. This debug code is - controlled by the ENABLE_YARR_JIT_DEBUG macro in wtf/Platform.h and - is only valid if ENABLE_YARR_JIT is enabled. - - Fixed a discovered problem in RegExp::printTraceData, changing - m_pattern to the getter pattern(). - Also deleted an extraneous semicolon. - - Enhancement: Add Regexp Debug Compare between JIT and Interpreter - https://bugs.webkit.org/show_bug.cgi?id=51834 - - * runtime/RegExp.cpp: - (JSC::RegExp::compile): - (JSC::RegExp::match): - (JSC::RegExp::printTraceData): - * wtf/Platform.h: - -2011-01-06 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Eric Seidel. - - [WINCE] Remove JSC::g_stackBase - https://bugs.webkit.org/show_bug.cgi?id=51779 - - * wtf/StackBounds.cpp: - -2011-01-06 Joone Hur <joone.hur@collabora.co.uk> - - Reviewed by Eric Seidel. - - WML Parser should treat line/column number in a consistent way - https://bugs.webkit.org/show_bug.cgi?id=51601 - - Add the equality operators to TextPosition class. - - * wtf/text/TextPosition.h: - (WTF::TextPosition::operator==): Added. - (WTF::TextPosition::operator!=): Added. - (WTF::TextPosition::belowRangePosition): Use belowBase() instead of base(). - (WTF::ZeroBasedNumber::operator==): Added. - (WTF::ZeroBasedNumber::operator!=): Added. - (WTF::OneBasedNumber::operator==): Added. - (WTF::OneBasedNumber::operator!=): Added. - -2011-01-06 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Gavin Barraclough. - - [WINCE] Determine stack extent - https://bugs.webkit.org/show_bug.cgi?id=26276 - - Scan the stack for writeable pages and use the limits. - - * wtf/StackBounds.cpp: - (WTF::detectGrowingDownward): - (WTF::isPageWritable): - (WTF::getLowerStackBound): - (WTF::getUpperStackBound): - (WTF::StackBounds::initialize): - -2011-01-05 Steve Falkenburg <sfalken@apple.com> - - Windows build fix. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Revert change to additional library search path needed to find ICU. + * runtime/JSGlobalObject.cpp: + (JSC::markIfNeeded): + * runtime/JSGlobalObject.h: + (JSC::Structure::prototypeChain): + * runtime/JSObject.h: + (JSC::JSObject::putDirectInternal): + (JSC::JSObject::markChildrenDirect): + * runtime/JSPropertyNameIterator.cpp: + (JSC::JSPropertyNameIterator::create): + (JSC::JSPropertyNameIterator::get): + (JSC::JSPropertyNameIterator::markChildren): + * runtime/JSPropertyNameIterator.h: + (JSC::JSPropertyNameIterator::setCachedPrototypeChain): + * runtime/JSZombie.cpp: + (JSC::JSZombie::leakedZombieStructure): + * runtime/JSZombie.h: + * runtime/MarkStack.h: + (JSC::MarkStack::append): + * runtime/MarkedBlock.cpp: + (JSC::MarkedBlock::sweep): + * runtime/Structure.cpp: + (JSC::Structure::addPropertyTransition): + * runtime/Structure.h: + (JSC::Structure::markAggregate): + * runtime/StructureChain.cpp: + (JSC::StructureChain::StructureChain): + (JSC::StructureChain::~StructureChain): + (JSC::StructureChain::markChildren): + * runtime/StructureChain.h: + (JSC::StructureChain::create): + (JSC::StructureChain::createStructure): + * runtime/WriteBarrier.h: + (JSC::WriteBarrierBase::get): + (JSC::WriteBarrierBase::operator*): + (JSC::WriteBarrierBase::operator->): -2011-01-05 Steve Falkenburg <sfalken@apple.com> +2011-04-01 Geoffrey Garen <ggaren@apple.com> - Reviewed by Darin Adler. + Reviewed by Oliver Hunt. - Debug and Release builds on Windows clobber each other - https://bugs.webkit.org/show_bug.cgi?id=49185 + Removed some complexity from HandleHeap + https://bugs.webkit.org/show_bug.cgi?id=57650 - Changes the structure of WebKitBuild build products directory so we - completely separate each build configuration into independent directories. + Eliminated pointer-tagging flags. - Although we previously had per-configuration directories for obj, this change adds - per-configuration directories for bin, lib, obj, and include. Each configuration's - build products are stored within a directory inside of WebKitBuild. - - Most use of $(WebKitOutputDir) in the build files has been replaced by $(ConfigurationBuildDir), - defined in common.vsprops to be $(WebKitOutputDir)\$(ConfigurationName). - - For PGO, $(ConfigurationBuildDir) points to the same directory (Release_PGO) to allow - for proper operation of the instrumentation/optimization scripts. - - * JavaScriptCore.vcproj/JavaScriptCore.make: - * JavaScriptCore.vcproj/JavaScriptCore.sln: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePGOOptimize.vsprops: Added. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd: - * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: - * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: - * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: - * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: - * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: - * JavaScriptCore.vcproj/jsc/jsc.vcproj: - * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: - * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd: - * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd: - * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: - * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd: - * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd: - -2011-01-05 Brent Fulgham <bfulgham@webkit.org> - - Unreviewed build fix. - - * wtf/Encoder.h: Add <stdint.h> include for systems that - do not natively know about uint8_t, etc. - -2011-01-05 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Andreas Kling. - - [CMake] Fix the usage of SOURCE_GROUP - https://bugs.webkit.org/show_bug.cgi?id=51739 - - * CMakeLists.txt: - -2011-01-05 Andras Becsi <abecsi@webkit.org> - - Reviewed by Csaba Osztrogonác. - - [Qt][V8] Fix the build after recent changes. - - * pcre/pcre.pri: Correct the path after Source was introduced. - -2011-01-04 Steve Falkenburg <sfalken@apple.com> - - Build fix. Update path to FindSafari after source code reorganization. - - * JavaScriptCore.vcproj/JavaScriptCore.sln: - -2011-01-04 Daniel Bates <dbates@rim.com> - - Fix the Android build after changeset 74975 <http://trac.webkit.org/changeset/74975> - (https://bugs.webkit.org/show_bug.cgi?id=51855). - - * wtf/ThreadingPthreads.cpp: Add include of PassOwnPtr.h. - (WTF::runThreadWithRegistration): Use -> instead of . to dereference pointer. - -2011-01-04 Martin Robinson <mrobinson@igalia.com> - - Try to fix the EFL build. - - * wtf/CMakeLists.txt: Remove PlatformRefPtr from the CMake source list. - -2011-01-04 James Robinson <jamesr@chromium.org> - - Reviewed by Darin Adler. - - StackBounds initialization in WTFThreadData should be guarded by #if USE(JSC) - https://bugs.webkit.org/show_bug.cgi?id=51881 - - The StackBounds class is only used by JavaScriptCore. - - * wtf/WTFThreadData.cpp: - (WTF::WTFThreadData::WTFThreadData): - * wtf/WTFThreadData.h: - (WTF::WTFThreadData::resetCurrentIdentifierTable): - -2011-01-03 Martin Robinson <mrobinson@igalia.com> - - Reviewed by Darin Adler. - - Remove the last non-GObject usage of PlatformRefPtr and move the code to GRefPtr - https://bugs.webkit.org/show_bug.cgi?id=51846 - - * GNUmakefile.am: Remove PlatformRefPtr.h from the sources list. - * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto. - * jit/ExecutableAllocator.h: Change references to PlatformRefPtr to RefPtr. - (JSC::ExecutableAllocator::cacheFlush): Ditto. - * wtf/PlatformRefPtr.h: Removed. - * wtf/RandomNumber.cpp: Change references to PlatformRefPtr to RefPtr. - (WTF::randomNumber): Ditto. - * wtf/brew/RefPtrBrew.h: Ditto. - (WTF::refIfNotNull): Added. - (WTF::derefIfNotNull): Added. - * wtf/brew/ShellBrew.h: Change references to PlatformRefPtr to RefPtr. - (WTF::createRefPtrInstance): Modified to return a RefPtr. - * wtf/gobject/GRefPtr.cpp: - (WTF::refGPtr): Moved from PlatformRefPtr here. - (WTF::derefGPtr): Ditto. - * wtf/gobject/GRefPtr.h: Ditto. - (WTF::GRefPtr::GRefPtr): Ditto. - (WTF::GRefPtr::~GRefPtr): Ditto. - (WTF::GRefPtr::clear): Ditto. - (WTF::GRefPtr::isHashTableDeletedValue): Ditto. - (WTF::GRefPtr::get): Ditto. - (WTF::GRefPtr::operator*): Ditto. - (WTF::GRefPtr::operator->): Ditto. - (WTF::GRefPtr::operator!): Ditto. - (WTF::GRefPtr::operator UnspecifiedBoolType): Ditto. - (WTF::GRefPtr::hashTableDeletedValue): Ditto. - (WTF::::operator): Ditto. - (WTF::::swap): Ditto. - (WTF::swap): Ditto. - (WTF::operator==): Ditto. - (WTF::operator!=): Ditto. - (WTF::static_pointer_cast): Ditto. - (WTF::const_pointer_cast): Ditto. - (WTF::getPtr): Ditto. - (WTF::adoptGRef): Ditto. - (WTF::refGPtr): Ditto. - (WTF::derefGPtr): Ditto. - -2011-01-04 Daniel Bates <dbates@rim.com> - - Reviewed by Adam Roben. - - LEAK: Deallocate instance of ThreadFunctionInvocation if thread creation fails - https://bugs.webkit.org/show_bug.cgi?id=51860 - - * wtf/ThreadingWin.cpp: - (WTF::createThreadInternal): - -2011-01-04 Laszlo Gombos <laszlo.1.gombos@nokia.com> - - Reviewed by Ariya Hidayat. - - [Qt][Symbian] Make sure that WebKit headers are included before platform headers on Symbian - https://bugs.webkit.org/show_bug.cgi?id=31273 - - On Symbian PREPEND_INCLUDEPATH is the best way to make sure that WebKit headers - are included before platform headers. On all other platforms continue to use - INCLUDEPATH (as before). This is a continuation of r65877. - - No new tests as there is no new functionality. - - * JavaScriptCore.pri: - -2011-01-04 Darin Adler <darin@apple.com> - - Try to fix Windows build. - - * wtf/ThreadingWin.cpp: Added include of PassOwnPtr.h. Fixed paragraphing - of conditional includes. - (WTF::wtfThreadEntryPoint): Use -> instead of . to dereference pointer. - (WTF::createThreadInternal): Tweaked #if to not need separate macro. - -2011-01-04 Daniel Bates <dbates@rim.com> - - Reviewed by Adam Roben. - - Extract ThreadFunctionInvocation into separate file and share between Apple Windows and Android - https://bugs.webkit.org/show_bug.cgi?id=51855 - - Both the Apple Windows and Android ports implement a similar adapter structure, - called ThreadFunctionInvocation and ThreadData respectively, as part of - their thread creation process. Instead, we should share such an adapter - structure and remove duplicate code. - - * JavaScriptCore.gypi: Added header wtf/ThreadFunctionInvocation.h. - * wtf/ThreadFunctionInvocation.h: Added. - (WTF::ThreadFunctionInvocation::ThreadFunctionInvocation): - * wtf/ThreadingPthreads.cpp: Removed Android-specific structure ThreadData; Instead, use ThreadFunctionInvocation. - (WTF::runThreadWithRegistration): - (WTF::createThreadInternal): - * wtf/ThreadingWin.cpp: Moved structure ThreadFunctionInvocation to its own file so that - it can be shared with the Android implementation of createThreadInternal(). - (WTF::wtfThreadEntryPoint): Use OwnPtr to hold passed instance of ThreadFunctionInvocation. - -2011-01-04 Daniel Bates <dbates@rim.com> - - Reviewed by Darin Adler. - - Use __builtin_expect when compiling using RVCT in GNU mode - https://bugs.webkit.org/show_bug.cgi?id=51866 - - Derived from a patch by Dave Tapuska. - - * wtf/AlwaysInline.h: - -2011-01-03 Darin Adler <darin@apple.com> - - Reviewed by Brady Eidson. - - * wtf/Forward.h: Added Decoder and Encoder. - -2011-01-03 Brady Eidson <beidson@apple.com> - - Reviewed by Darin Adler. - - Add Encode/Decode machinery Darin and I plan to work with for back/forward stuff in WebKit2. - - Starting out with a pure virtual interface to be implemented in WK2, but we might change that later. - - * GNUmakefile.am: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/CMakeLists.txt: - - * wtf/Decoder.h: Added. - * wtf/Encoder.h: Added. - -2011-01-03 Laszlo Gombos <laszlo.1.gombos@nokia.com> - - Unreviewed build fix. - - [Qt] Add NullPtr.cpp introduced in r71155 to the Qt build system. - - This fix is required for builds where HAVE(NULLPTR) is false - (e.g. some MSVC and Symbian builds). - - * wtf/wtf.pri: - -2011-01-02 Dan Bernstein <mitz@apple.com> - - Rubber-stamped by Simon Fraser. - - <rdar://problem/8812159> Update copyright strings - - * Info.plist: - -2011-01-02 Csaba Osztrogonác <ossy@webkit.org> - - Fix GTK+ build after r74855. - - Reviewed by Xan Lopez. - - * GNUmakefile.am: Fix include pathes. - -2011-01-02 Adam Barth <abarth@webkit.org> - - One more .. missing in the Qt build. - - * jsc.pro: - -2011-01-02 Xan Lopez <xlopez@igalia.com> - - Fix GTK+ build. - - * GNUmakefile.am: add -I$(srcdir)/Source to the JSC cppflags so - that anyone can include its headers without adding the prefix - 'Source/'. - -2011-01-02 Carl Lobo <carllobo@gmail.com> - - Reviewed by Adam Barth. - - Fix Windows Build for non-production where VSPropsRedirectionDir is not defined. - https://bugs.webkit.org/show_bug.cgi?id=51797 - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * JavaScriptCore.vcproj/jsc/jsc.vcproj: - * JavaScriptCore.vcproj/testapi/testapi.vcproj: - -2011-01-01 Adam Barth <abarth@webkit.org> - - Fix relative include paths in an attempt to fix the Qt build. - - * JavaScriptCore.pri: - * JavaScriptCore.pro: - -2011-01-01 Adam Barth <abarth@webkit.org> - - Another speculative build fix for GTK. - - * GNUmakefile.am: - -2011-01-01 Adam Barth <abarth@webkit.org> - - Speculative build fix for GTK. Update the paths in GNUmakefile to - include "Source". - - * GNUmakefile.am: - -2011-01-01 Adam Barth <abarth@webkit.org> - - Update relative paths in JavaScriptCore.gyp to account for the extra - level of directories. - - * JavaScriptCore.gyp/JavaScriptCore.gyp: - -2010-12-31 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Darin Adler. - - Add a fast case for ASCII strings in HashAndUTF8CharactersTranslator::equal - https://bugs.webkit.org/show_bug.cgi?id=50517 - - This change shows about 2% performance win on the xml-parser benchmark. - - * wtf/text/AtomicString.cpp: - (WTF::HashAndUTF8CharactersTranslator::equal): - -2010-12-30 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Ariya Hidayat. - - [CMake] Add WTF_HEADERS - https://bugs.webkit.org/show_bug.cgi?id=51741 - - Add the WTF headers to show them in Visual Studio. - - * wtf/CMakeLists.txt: - * wtf/CMakeListsWinCE.txt: - -2010-12-30 Konstantin Tokarev <annulen@yandex.ru> - - Reviewed by David Kilzer. - - [Qt] Don't build wtf/TCSystemAlloc.cpp if --system-malloc option is - used - https://bugs.webkit.org/show_bug.cgi?id=51672 - - * wtf/wtf.pri: Replaced USE_SYSTEM_MALLOC with USE_SYSTEM_MALLOC=1 - -2010-12-30 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Darin Adler. - - Use OS(WINDOWS) instead of COMPILER(MSVC) in FastMalloc.cpp - https://bugs.webkit.org/show_bug.cgi?id=51743 - - Most of the ifdefs belong to windows and not to the MSVC compiler. - - * wtf/FastMalloc.cpp: - -2010-12-29 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig. - - Bug 51724 - In strict mode string literals should allow \0, but disallow \8 and \9. - - * parser/Lexer.cpp: - (JSC::Lexer::parseString): + Tied being weak to having a finalizer (or at least a finalizer sentinel). -2010-12-29 Helder Correia <helder@sencha.com> + * collector/handles/HandleHeap.cpp: + (JSC::HandleHeap::clearWeakPointers): Removed the special self-destroying + flag. It was unused. If we bring it back, we'll probably use a shared + autodeallocating finalizer instead. - Reviewed by Eric Seidel. - - <VT> and <FF> are not valid JSON whitespace characters - https://bugs.webkit.org/show_bug.cgi?id=51671 - - Vertical Tab and Form Feed are not allowed white spaces by the JSON - RFC 4627: http://www.ietf.org/rfc/rfc4627.txt (2. JSON Grammar). + * collector/handles/HandleHeap.h: + (JSC::HandleHeap::makeWeak): makeWeak and adding a finalizer are now + a single, atomic operation -- this makes the relationship between + finalizers and weak pointers clearer, and impossible to get wrong. - Tests: ietestcenter/Javascript/15.12.1.1-0-2.html - ietestcenter/Javascript/15.12.1.1-0-3.html + (JSC::HandleHeap::Node::Node): + (JSC::HandleHeap::Node::handleHeap): No more flags. - * runtime/LiteralParser.cpp: - (JSC::isJSONWhiteSpace): - (JSC::LiteralParser::Lexer::lex): - -2010-12-28 Helder Correia <helder@sencha.com> - - Reviewed by Eric Seidel. - - JSON.stringify must exist as a function taking 3 parameters - https://bugs.webkit.org/show_bug.cgi?id=51667 - - The reported function length is 1 instead. - - Test: ietestcenter/Javascript/15.12.3-0-2.html - - * runtime/JSONObject.cpp: + (JSC::HandleHeap::Node::makeWeak): + (JSC::HandleHeap::Node::isWeak): Ditto above. We use a special sentienl + value in the finalizer slot to indicate that a handle is weak but doesn't + require an external function call for finalization. -2010-12-28 Helder Correia <helder@sencha.com> +2011-04-01 Geoffrey Garen <ggaren@apple.com> - Reviewed by Sam Weinig. - - JSON.parse must exist as a function taking 2 parameters - https://bugs.webkit.org/show_bug.cgi?id=51666 - - Support for revivers was introduced in bug 26591, but the function - length has since remained unchanged. - - Test: ietestcenter/Javascript/15.12.2-0-2.html - - * runtime/JSONObject.cpp: - -2010-12-27 Jake Helfert <jake@jakeonthenet.com> - - Reviewed and reworked by Darin Adler. + Reviewed by Oliver Hunt. - Building WebKit with Visual Studio 2010 fails due - to ambiguous assignment operator errors. - https://bugs.webkit.org/show_bug.cgi?id=51116 + Removed WeakGCMap::deprecatedRemove because it was deprecated and unused + https://bugs.webkit.org/show_bug.cgi?id=57648 - * wtf/NullPtr.h: Added a HAVE(NULLPTR) definition for use with - Platform.h HAVE macro, and included the Visual Studio 2010 compiler - as one of the ones that has nullptr. - * wtf/NullPtr.cpp: Updated condition to match. - - * wtf/PassOwnArrayPtr.h: Don't include the operator=(nullptr_t) - overload if we are compiling in loose mode and the compiler has - nullptr, because assignment of 0 will otherwise encounter - ambiguitity with this overload and the overload for loose mode - that takes a raw pointer. The conditional can be removed when we - get rid of loose mode. - * wtf/PassOwnPtr.h: Ditto. - - * wtf/PassRefPtr.h: Don't include the operator=(nullptr_t) overload - if the compiler has nullptr, because assignment of 0 would be - ambiguous with the overload that takes a raw pointer. The conditional - can be removed if we ever decide we no longer need to support - assigning 0, but might need a way to catch that usage on older compilers. - * wtf/RefPtr.h: Ditto. - * wtf/RetainPtr.h: Ditto - - * JavaScriptCore.xcodeproj/project.pbxproj: Added NullPtr.cpp, - accidentally omitted when the file was first added. - -2010-12-26 Xan Lopez <xlopez@igalia.com> + * runtime/WeakGCMap.h: - Reviewed by Eric Seidel. +2011-04-01 Adam Roben <aroben@apple.com> - [GTK] Add standalone target for JSC - https://bugs.webkit.org/show_bug.cgi?id=51607 + Maintain the invariant that Lexer::m_current is set to -1 when at the end of the code buffer - * GNUmakefile.am: add convenience target to only build jsc and its - dependencies. + Covered by existing tests. -2010-12-24 Patrick Gansterer <paroga@webkit.org> + Fixes <http://webkit.org/b/56699>. - Reviewed by Eric Seidel. - - [WINCE] Add CPU(MIPS) detection - https://bugs.webkit.org/show_bug.cgi?id=51342 + Reviewed by Oliver Hunt. - WinCE usually defines MIPS and _MIPS_. + * parser/Lexer.h: + (JSC::Lexer::setOffset): Copied code from Lexer::shift to update m_current, because + supposedly the idiom that function uses is fast. - * wtf/Platform.h: +2011-03-31 Thouraya ANDOLSI <thouraya.andolsi@st.com> -2010-12-23 Gavin Barraclough <barraclough@apple.com> + Reviewed by Oliver Hunt. - Reviewed by Sam Weinig. + SH4 JIT SUPPORT. + https://bugs.webkit.org/show_bug.cgi?id=44329 - Rename RegexCompiler.cpp to RegexPattern.cpp. - Implicitly call compileRegex from RegexPattern's constructor. + Add YARR support for SH4 platforms (disabled by default). - * Android.mk: - * CMakeLists.txt: * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * runtime/RegExp.cpp: - (JSC::RegExp::compile): - * yarr/RegexCompiler.cpp: Removed. - * yarr/RegexCompiler.h: Removed. - * yarr/RegexInterpreter.cpp: - * yarr/RegexJIT.cpp: - * yarr/RegexPattern.cpp: Copied from JavaScriptCore/yarr/RegexCompiler.cpp. - (JSC::Yarr::compileRegex): - (JSC::Yarr::RegexPattern::RegexPattern): - * yarr/RegexPattern.h: - -2010-12-23 Patrick Gansterer <paroga@webkit.org> - - Unreviewed build fix for WinCE after r74360. - - Move the OS(WINDOWS) section after the OS(WINCE) section - and add missing argument to the getStackMax call. - - * wtf/StackBounds.cpp: - (WTF::StackBounds::initialize): - -2010-12-22 Laszlo Gombos <laszlo.1.gombos@nokia.com> - - Unreviewed build fix. - - [Symbian] Make sure OSAllocatorSymbian builds - - This patch only addresses the build problem. - - https://bugs.webkit.org/show_bug.cgi?id=51128 tracks the full - (re)implementation of the Symbian allocator. - - * wtf/OSAllocatorSymbian.cpp: - (WTF::OSAllocator::reserveUncommitted): - (WTF::OSAllocator::reserveAndCommit): - (WTF::OSAllocator::commit): - -2010-12-22 Dan Bernstein <mitz@apple.com> - - Changed WebKitTools to Tools. - - * JavaScriptCore.vcproj/JavaScriptCore.sln: - -2010-12-22 Dan Bernstein <mitz@apple.com> - - Rubber-stamped by Mark Rowe. - - Changed WebKitTools to Tools in script build phases. - - * JavaScriptCore.xcodeproj/project.pbxproj: - -2010-12-22 Andrei Popescu <andreip@google.com> - - Unreviewed build fix. - - Fix Chromium Linux shared library build. - [Chromium] r74431 broke the Chromium Linux shared library build - https://bugs.webkit.org/show_bug.cgi?id=51462 - - * JavaScriptCore.gyp/JavaScriptCore.gyp: - * JavaScriptCore.gypi: - -2010-12-21 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r74462. - http://trac.webkit.org/changeset/74462 - https://bugs.webkit.org/show_bug.cgi?id=51449 - - broke chromium win (Requested by tonyg-cr on #webkit). - - * JavaScriptCore.gypi: - -2010-12-21 Tony Gentilcore <tonyg@chromium.org> - - Unreviewed build fix. - - [chromium] Build fix after r74431 - https://bugs.webkit.org/show_bug.cgi?id=51447 - - * JavaScriptCore.gypi: - -2010-12-21 Gavin Barraclough <barraclough@apple.com> - - Windows build fix. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - -2010-12-21 Gavin Barraclough <barraclough@apple.com> - - Windows build fix. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - -2010-12-21 Gavin Barraclough <barraclough@apple.com> - - Speculative build fix. - - * jit/ExecutableAllocator.cpp: - (JSC::ExecutableAllocator::underMemoryPressure): - -2010-12-21 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Bug 26276 - Need a mechanism to determine stack extent - - This patch adds accurate stack size calculation for: - DARWIN, QNX, UNIX - We still need to fix: - WINDOWS, SOLARIS, OPENBSD, SYMBIAN, HAIKU, WINCE + * assembler/MacroAssembler.h: + * assembler/MacroAssemblerSH4.cpp: Added. + * assembler/MacroAssemblerSH4.h: Added. + * assembler/SH4Assembler.h: Added. + * yarr/YarrJIT.cpp: - * wtf/StackBounds.cpp: - (WTF::StackBounds::initialize): +2011-03-30 Adam Roben <aroben@apple.com> -2010-12-21 Gavin Barraclough <barraclough@apple.com> + Clean build fix - Reviewed by Geoff Garen. - - <rdar://problem/8765333> CRASH running out of executable memory, loading io9.com - https://bugs.webkit.org/show_bug.cgi?id=51443 + * JavaScriptCore.vcproj/JavaScriptCore.sln: Serialized project dependencies so projects + don't try to build in parallel (which doesn't mesh with our buildfailed mechanism). - The problem here is that each page uses a reasonable amount of memory, (~4Mb), - and that when miultiple pages are open we keep all JIT code for all functions - in all pages alive. +2011-03-30 Oliver Hunt <oliver@apple.com> - Add a check to detect high memory pressure situations in the executable allocator - (>50% of available memory allocated), and upon a top level entry into JSC (no code - running on the stack) in this situation throw away all JIT code. + Rollout r82500 - * JavaScriptCore.exp: - * debugger/Debugger.cpp: - (JSC::Debugger::recompileAllJSFunctions): stop passing exec to recompile. - * jit/ExecutableAllocator.h: - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::ExecutablePool::systemAlloc): Count allocations. - (JSC::ExecutablePool::systemRelease): Count deallocations. - (JSC::ExecutablePool::underMemoryPressure): Check memory pressure. - * jit/ExecutableAllocatorPosix.cpp: - (JSC::ExecutablePool::underMemoryPressure): Stub out; only meaningful with FixedVMPool. - * jit/ExecutableAllocatorWin.cpp: - (JSC::ExecutablePool::underMemoryPressure): Stub out; only meaningful with FixedVMPool. - * runtime/Executable.cpp: - (JSC::FunctionExecutable::recompile): Remove ExecState argument to recompile. - * runtime/Executable.h: + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::dump): + (JSC::CodeBlock::derefStructures): + (JSC::CodeBlock::refStructures): + (JSC::CodeBlock::markAggregate): + * bytecode/Instruction.h: + (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set): + (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList): + (JSC::PolymorphicAccessStructureList::derefStructures): + (JSC::Instruction::Instruction): + * bytecode/StructureStubInfo.cpp: + (JSC::StructureStubInfo::deref): + * bytecode/StructureStubInfo.h: + (JSC::StructureStubInfo::initGetByIdChain): + (JSC::StructureStubInfo::initPutByIdTransition): + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): + (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): + * jit/JITOpcodes.cpp: + (JSC::JIT::emit_op_jneq_ptr): + * jit/JITOpcodes32_64.cpp: + (JSC::JIT::emit_op_jneq_ptr): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::privateCompileGetByIdChainList): + * jit/JITPropertyAccess32_64.cpp: + (JSC::JIT::privateCompileGetByIdChainList): + * jit/JITStubs.cpp: + (JSC::getPolymorphicAccessStructureListSlot): + (JSC::DEFINE_STUB_FUNCTION): + * runtime/JSCell.h: * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::recompileAllJSFunctions): throws away all JIT code. + (JSC::JSGlobalData::JSGlobalData): * runtime/JSGlobalData.h: + * runtime/JSGlobalObject.cpp: + (JSC::markIfNeeded): * runtime/JSGlobalObject.h: - (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): add check / call to throw away. + (JSC::Structure::prototypeChain): + * runtime/JSObject.h: + (JSC::JSObject::markChildrenDirect): + * runtime/JSPropertyNameIterator.cpp: + (JSC::JSPropertyNameIterator::create): + (JSC::JSPropertyNameIterator::get): + (JSC::JSPropertyNameIterator::markChildren): + * runtime/JSPropertyNameIterator.h: + (JSC::JSPropertyNameIterator::setCachedPrototypeChain): + * runtime/MarkStack.h: + (JSC::MarkStack::append): + * runtime/Structure.h: + * runtime/StructureChain.cpp: + (JSC::StructureChain::StructureChain): + * runtime/StructureChain.h: + (JSC::StructureChain::create): -2010-12-21 Gavin Barraclough <barraclough@apple.com> +2011-03-29 Matthew Delaney <mdelaney@apple.com> - Reviewed by Geoff Garen. + Reviewed by Simon Fraser. - <rdar://problem/8241425> JIT executable memory excessive usage due to regex caching - https://bugs.webkit.org/show_bug.cgi?id=51434 + Use the Accelerate vImage vectorized (un)premultiplyImageData functions for ImageBufferCG - Reduce the amount of memory the RegExpCache can hold on to on iOS. - Currently the RegExpCache can hold 256 RegExp objects. If each falls into a separate - ExecutablePool, with a common size of 16Kb, this means we end up holding onto 4Mb of - memory. Firstly, we can reduce this by simply reducing the size of the cache to 32 - entries. Secondly, we can use a separate set of ExecutablePools for JIT code generated - from RegExp objects. This helps in two ways (1) it increases the probability that - RegExps in the cache share the same pool, and (2) it means that a RegExp can't end - up holding on to a large ExecutablePool containing a translation of JS code. - (A RegExp could end up keeping a larger RegExp alive that happened to be sharing the - same pool, but large RegExp patterns are less common). + https://bugs.webkit.org/show_bug.cgi?id=53134 - * runtime/JSGlobalData.h: - * runtime/RegExpCache.h: - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::compile): + * wtf/Platform.h: Added in WTF flag for using the Accelerate framework -2010-12-21 Gavin Barraclough <barraclough@apple.com> +2011-03-30 Steve Falkenburg <sfalken@apple.com> - Windows build fix. + Reviewed by Adam Roben. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + Share most vsprops between Release and Production builds in releaseproduction.vsprops + https://bugs.webkit.org/show_bug.cgi?id=57508 + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreProduction.vsprops: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreRelease.vsprops: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseCairoCFLite.vsprops: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops: + * JavaScriptCore.vcproj/WTF/WTFProduction.vsprops: + * JavaScriptCore.vcproj/WTF/WTFRelease.vsprops: + * JavaScriptCore.vcproj/WTF/WTFReleaseCairoCFLite.vsprops: + * JavaScriptCore.vcproj/WTF/WTFReleasePGO.vsprops: + * JavaScriptCore.vcproj/jsc/jscProduction.vsprops: + * JavaScriptCore.vcproj/jsc/jscRelease.vsprops: + * JavaScriptCore.vcproj/jsc/jscReleaseCairoCFLite.vsprops: + * JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops: + * JavaScriptCore.vcproj/testapi/testapiProduction.vsprops: + * JavaScriptCore.vcproj/testapi/testapiRelease.vsprops: + * JavaScriptCore.vcproj/testapi/testapiReleaseCairoCFLite.vsprops: + +2011-03-30 Mark Rowe <mrowe@apple.com> -2010-12-21 Gavin Barraclough <barraclough@apple.com> + Reviewed by Adam Roben. - Eeeep! build fix! + Explicitly prevent testapi and minidom from being installed rather than relying + on Xcode's current behavior of not installing if INSTALL_PATH is not explicitly + set at the target level. - * wtf/OSAllocator.h: - (WTF::OSAllocator::decommitAndRelease): + <rdar://problem/9206357> -2010-12-21 Gavin Barraclough <barraclough@apple.com> + * JavaScriptCore.xcodeproj/project.pbxproj: - Ooops, fixed typo in comment. +2011-03-30 Timur Iskhodzhanov <timurrrr@google.com> - * wtf/OSAllocator.h: + Reviewed by Alexey Proskuryakov. -2010-12-21 Geoffrey Garen <ggaren@apple.com> + Add some dynamic annotations to JavaScriptCore/wtf + https://bugs.webkit.org/show_bug.cgi?id=53747 - Reviewed by Gavin Barraclough & Oliver Hunt. + By using these annotations we can improve the precision of finding + WebKit errors using dynamic analysis tools like ThreadSanitizer and Valgrind. + These annotations don't affect the compiled binaries unless USE(DYNAMIC_ANNOTATIONS) is "1". - Added PageAllocationAligned, a cross-platform abstraction for memory allocations with arbitrary alignment requirements - https://bugs.webkit.org/show_bug.cgi?id=51359 - - I think this patch fixes <rdar://problem/8107952> [5.0.1] WER crash in - Heap::allocateBlock (1902752929), and some other leaks and crashes as well. + These files don't add new functionality, so don't need extra tests. - * Android.mk: - * CMakeLists.txt: * GNUmakefile.am: * JavaScriptCore.gypi: * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: Updated build files. - - * runtime/AlignedMemoryAllocator.h: Removed. Supplanted by - PageAllocationAligned. - - * runtime/Collector.cpp: - (JSC::Heap::destroy): - (JSC::Heap::allocateBlock): - (JSC::Heap::freeBlock): - (JSC::Heap::addWeakGCHandle): - * runtime/Collector.h: Switched from AlignedMemoryAllocator to - PageAllocationAligned. - - * runtime/GCHandle.cpp: - * runtime/GCHandle.h: Ditto. - - * wtf/PageAllocation.h: - (WTF::PageAllocation::PageAllocation): Removed aligned memory allocation - functions. Supplanted by PageAllocationAligned. - - * wtf/PageAllocationAligned.cpp: Added. - (WTF::PageAllocationAligned::allocate): - (WTF::PageAllocationAligned::deallocate): - * wtf/PageAllocationAligned.h: Added. - (WTF::PageAllocationAligned::PageAllocationAligned): New cross-platform - class for doing aligned memory allocation. This class properly matches - allocation and deallocation library calls, fixing a long-standing bug - in PageAllocation. - - * wtf/Platform.h: Removed some defunction VM platform defines. - - * wtf/wtf.pri: Updated build files. - -2010-12-21 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - ASSERTION FAILED: base->index() == m_codeBlock->argumentsRegister() while loading taobao.com - https://bugs.webkit.org/show_bug.cgi?id=49006 - - This problem was caused by having a parameter named 'arguments'. - The fix is to treat parameters named 'arguments' as shadowing - the actual arguments property, and so logically turn the function - into one that doesn't "use" arguments. - - This required a bit of fiddling in the parser to ensure we correctly - propagate the 'feature' of shadowing is set correctly. - - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::createArgumentsIfNecessary): - Change assertion to an early return as we may now reference - a property named 'arguments' without being in a function that - has the ArgumentsFeature - * parser/JSParser.cpp: - (JSC::JSParser::Scope::Scope): - (JSC::JSParser::Scope::declareParameter): - (JSC::JSParser::Scope::shadowsArguments): - (JSC::JSParser::parseProgram): - (JSC::JSParser::parseFormalParameters): - (JSC::JSParser::parseFunctionInfo): - * parser/Nodes.h: - (JSC::ScopeNode::usesArguments): - -2010-12-21 Daniel Bates <dbates@rim.com> - - Reviewed by Eric Seidel and Darin Adler. - - Deallocate GregorianDateTime.timeZone (if allocated) when copying so that we don't leak memory. - https://bugs.webkit.org/show_bug.cgi?id=51367 - - Inspired by a patch by George Staikos. - - * wtf/DateMath.cpp: - (JSC::msToGregorianDateTime): Modified to set timeZone to nullptr since timeZone is now - of type OwnPtrArray<char>. - * wtf/DateMath.h: Change timeZone to type OwnArrayPtr<char>; Removed destructor since it is no longer needed. - (JSC::GregorianDateTime::GregorianDateTime): Modified to use OwnPtrArray semantics for timeZone. - (JSC::GregorianDateTime::operator tm): Ditto. - (JSC::GregorianDateTime::copyFrom): Ditto. - -2010-12-21 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r74402. - http://trac.webkit.org/changeset/74402 - https://bugs.webkit.org/show_bug.cgi?id=51402 - - This patch broke the Windows 7 Release Layout Tests (Requested - by jessieberlin on #webkit). - - * wtf/StackBounds.cpp: - (WTF::estimateStackBound): - (WTF::StackBounds::initialize): - -2010-12-21 Peter Varga <pvarga@inf.u-szeged.hu> - - Reviewed by Csaba Osztrogonác. - - Unify the name of parentheses in YARR: rename parenthesis to - parentheses. - - * yarr/RegexCompiler.cpp: - (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd): - -2010-12-21 Laszlo Gombos <laszlo.1.gombos@nokia.com> - - Reviewed by Andreas Kling. - - [Qt] Set BUILDING_QT__ consistently - https://bugs.webkit.org/show_bug.cgi?id=51341 - - * JavaScriptCore.pri: Remove the definition of BUILDING_QT__ as it - is already defined in WebKit.pri. - -2010-12-20 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Bug 26276 - Need a mechanism to determine stack extent - - This patch adds accurate stack size calculation for: - DARWIN, WINDOWS, QNX, UNIX - We still need to fix: - SOLARIS, OPENBSD, SYMBIAN, HAIKU, WINCE - - * wtf/StackBounds.cpp: - (WTF::StackBounds::initialize): - -2010-12-20 Gavin Barraclough <barraclough@apple.com> - - PPC build fix; stop using std::swap on PageAllocation/PageReservation, - this was failing on some compilers since the lack of default construction - for the m_executable/m_writable fields meant the value being swapped may - not have been fully initialized. - - * wtf/PageAllocation.h: - (WTF::PageAllocation::deallocate): - * wtf/PageBlock.h: - * wtf/PageReservation.h: - (WTF::PageReservation::deallocate): - -2010-12-20 Oliver Hunt <oliver@apple.com> + * JavaScriptCore.xcodeproj/project.pbxproj: + * wtf/CMakeLists.txt: + * wtf/DynamicAnnotations.cpp: Added. + (WTFAnnotateBenignRaceSized): + (WTFAnnotateHappensBefore): + (WTFAnnotateHappensAfter): + * wtf/DynamicAnnotations.h: Added. + * wtf/ThreadSafeRefCounted.h: + (WTF::ThreadSafeRefCountedBase::derefBase): + * wtf/text/StringStatics.cpp: + (WTF::StringImpl::empty): + +2011-03-30 Oliver Hunt <oliver@apple.com> Reviewed by Geoffrey Garen. - |delete name| in strict mode code should be an early error - https://bugs.webkit.org/show_bug.cgi?id=50431 - - Disallow the |delete IDENTIFIER| production in strict mode, and removed - a bunch of now unnecessary code. - - * parser/JSParser.cpp: - (JSC::JSParser::Scope::collectFreeVariables): - (JSC::jsParse): - (JSC::JSParser::parseProgram): - (JSC::JSParser::parseUnaryExpression): - * parser/JSParser.h: - * parser/Parser.cpp: - (JSC::Parser::parse): - * parser/Parser.h: - (JSC::Parser::parse): - -2010-12-20 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Olver Hunt. - - Bug 51358 - Should check stack depth rather than using recursion limits in byte compilation - - The current implementation of recursion limit checking is not safe on smaller stacks. - Switch to using a common mechanism, shared with the parser, to check recursion limits. + Make StructureChain GC allocated + https://bugs.webkit.org/show_bug.cgi?id=56695 - Make bytecompiler use StackBounds. Empirical testing shows emitStrcat to have the largest - footprint on the stack, at just under 1k on x86-64. Given this, the default recursion - check (requiring 4k of available space to recurse) seems reasonable. + Make StructureChain GC allocated, and make the various owners + mark it correctly. + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::dump): + (JSC::CodeBlock::derefStructures): + (JSC::CodeBlock::refStructures): + (JSC::CodeBlock::markAggregate): + * bytecode/Instruction.h: + (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set): + (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList): + (JSC::PolymorphicAccessStructureList::derefStructures): + (JSC::PolymorphicAccessStructureList::markAggregate): + (JSC::Instruction::Instruction): + * bytecode/StructureStubInfo.cpp: + (JSC::StructureStubInfo::deref): + (JSC::StructureStubInfo::markAggregate): + * bytecode/StructureStubInfo.h: + (JSC::StructureStubInfo::initGetByIdChain): + (JSC::StructureStubInfo::initPutByIdTransition): * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): - * bytecompiler/BytecodeGenerator.h: - (JSC::BytecodeGenerator::emitNode): - (JSC::BytecodeGenerator::emitNodeInConditionContext): - * bytecompiler/NodesCodegen.cpp: - (JSC::BinaryOpNode::emitStrcat): - -2010-12-20 Tony Gentilcore <tonyg@chromium.org> - - Unreviewed build fix. - - Include pthread to fix chromium mac build (broken by r74360) - https://bugs.webkit.org/show_bug.cgi?id=51356 - - * wtf/StackBounds.cpp: - -2010-12-20 Xan Lopez <xlopez@igalia.com> - - Reviewed by Gustavo Noronha. - - * GNUmakefile.am: add missing files. - -2010-12-18 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Bug 26276 - Need a mechanism to determine stack extent - - This patch adds a class 'StackBounds', to hold information about the machine stack. - The implementation of this class broadly adheres to the current implmentation of - stack limit checking, and as such does not solve the problem of determining stack - extent, but gives us a common place to do so. - - Currently two mechanism are provided to determine the stack origin (the point the - stack is growing away from). currentThreadStackBase() in Collector provides a - more accurate determination of the stack origin, so use this to calculate - StackBounds::m_origin; WTFThreadData::approximatedStackStart is less accurate, and - as such can be removed. Cache the StackBounds on WTFThreadData such that they - need only be determined once per thread, and for non-API contexts cache this - information in JSGlobalData, to save a thread-specific access. - - For the time being retain the estimate of stack size used by JSC's parser - (128 * sizeof(void*) * 1024), with a view to replacing this with something more - accurate in the near future. - - * parser/JSParser.cpp: - (JSC::JSParser::canRecurse): - (JSC::JSParser::JSParser): - Change to use StackBounds. - * runtime/Collector.cpp: - (JSC::Heap::registerThread): - (JSC::Heap::markCurrentThreadConservativelyInternal): - Change to use StackBounds, cached on JSGlobalData. + (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): + (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): + * jit/JITOpcodes.cpp: + (JSC::JIT::emit_op_jneq_ptr): + * jit/JITOpcodes32_64.cpp: + (JSC::JIT::emit_op_jneq_ptr): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::privateCompileGetByIdChainList): + * jit/JITPropertyAccess32_64.cpp: + (JSC::JIT::privateCompileGetByIdChainList): + * jit/JITStubs.cpp: + (JSC::getPolymorphicAccessStructureListSlot): + (JSC::DEFINE_STUB_FUNCTION): + * runtime/JSCell.h: * runtime/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData): * runtime/JSGlobalData.h: - (JSC::JSGlobalData::stack): - Add a cached copy of StackBounds. - * wtf/StackBounds.cpp: Copied from JavaScriptCore/runtime/Collector.cpp. - (WTF::estimateStackBound): - (WTF::StackBounds::initialize): - (WTF::getStackMax): - Copy code from Collector.cpp to determine stack origin. - * wtf/StackBounds.h: Added. - (WTF::StackBounds::StackBounds): - No argument constructor; returns a null StackBounds. - (WTF::StackBounds::currentThreadStackBounds): - Returns a StackBounds object representing the stack limits - of the current thread. - (WTF::StackBounds::origin): - Returns to stack origin (the point the stack is growing away - from; the highest extent of the stack on machines where the - stack grows downwards. - (WTF::StackBounds::recursionLimit): - Returns a limit value that is 'a comfortable distance from - the end of the stack'. Our concept of this is currently 1 page - away from the end, however the default value may be tuned in - the future, and clients may override passing a larger delta; - should only be called on StackBounds object representing the - stack of the thread this method is called on (checked by - checkConsistency). - (WTF::StackBounds::recursionCheck): - Checks whether we are currently 'a comfortable distance from - the end of the stack'. Our concept of this is currently 1 page - away from the end, however the default value may be tuned in - the future, and clients may override passing a larger delta - to apply when checking, if they wish to do so. This method - should only be called on StackBounds object representing the - stack of the thread this method is called on (checked by - checkConsistency). - (WTF::StackBounds::current): - Approximate current stack position. On machines where the stack - is growing downwards this is the lowest address that might need - conservative collection. - (WTF::StackBounds::isGrowingDownward): - True for all platforms other than WINCE, which has to check. - (WTF::StackBounds::checkConsistency): - This is called in methods that shoulds only be operating on a - valid set of bounds; as such we expect m_origin != m_bounds - (i.e. stack size != zero) - we're really testing that this - object is not null (the constructor initializes both fields - to zero). Also checks that current() is within the stack's - bounds. - * wtf/WTFThreadData.cpp: - (WTF::WTFThreadData::WTFThreadData): - * wtf/WTFThreadData.h: - (WTF::WTFThreadData::stack): - Add the StackBounds member variable. - -2010-12-17 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Sam Weinig. - - Factored common page set management into a new PageBlock base class - https://bugs.webkit.org/show_bug.cgi?id=51285 - - * Android.mk: - * CMakeLists.txt: - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * interpreter/RegisterFile.h: - (JSC::RegisterFile::RegisterFile): - * jit/ExecutableAllocator.cpp: - (JSC::ExecutableAllocator::intializePageSize): - * wtf/PageAllocation.cpp: Removed. - * wtf/PageAllocation.h: - (WTF::PageAllocation::deallocate): - (WTF::PageAllocation::PageAllocation): - * wtf/PageReservation.h: - (WTF::PageReservation::commit): - (WTF::PageReservation::decommit): - (WTF::PageReservation::deallocate): - (WTF::PageReservation::PageReservation): - * wtf/wtf.pri: - -2010-12-17 Michael Saboff <msaboff@apple.com> - - Reviewed by Oliver Hunt. - - RegExp Jit'ed expression crashes clicking link on yelp.com - https://bugs.webkit.org/show_bug.cgi?id=51284 - - When transitioning between an non-repeating beginning of line - anchored expression and the remaining refactored repeating - expression, we should not clear any residual datalabel in - state's m_backtrack. It will be resolved and cleared in subsequent - code when linkAlternativeBacktracks() is called for the repeating - alternative(s). - - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::BacktrackDestination::clear): - (JSC::Yarr::RegexGenerator::TermGenerationState::clearBacktrack): - -2010-12-17 Dan Bernstein <mitz@apple.com> - - Rubber-stamped by Mark Rowe. - - Updated for the renaming of WebKitTools to Tools - - * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: - -2010-12-17 Ariya Hidayat <ariya@sencha.com> - - Reviewed by Oliver Hunt. - - [JSC] parseAssignmentExpression should use TreeBuilder::CreatesAST - https://bugs.webkit.org/show_bug.cgi?id=51268 - - * parser/JSParser.cpp: - (JSC::JSParser::parseAssignmentExpression): - -2010-12-17 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Oliver Hunt. - - Removed RChunk from PageAllocation/PageReservation, since it's now unused. - https://bugs.webkit.org/show_bug.cgi?id=51276 - - * wtf/PageAllocation.h: - (WTF::PageAllocation::PageAllocation): - * wtf/PageReservation.h: - (WTF::PageReservation::PageReservation): - -2010-12-17 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - Incorrect encoding of some constants in ARMv7 JIT - https://bugs.webkit.org/show_bug.cgi?id=51273 - <rdar://problem/8650210> - - When using immediate encoding 3 we need to write the byte - that holds a duplicated value. - - * assembler/ARMv7Assembler.h: - (JSC::ARMThumbImmediate::makeEncodedImm): - -2010-12-16 Evan Martin <evan@chromium.org> - - Reviewed by Darin Fisher. - - [chromium] useless warnings when building on Windows - https://bugs.webkit.org/show_bug.cgi?id=50985 - - Disable some compiler warnings that aren't indicative of real problems. - - * JavaScriptCore.gyp/JavaScriptCore.gyp: - -2010-12-16 Pratik Solanki <psolanki@apple.com> - - Reviewed by Geoffrey Garen. - - https://bugs.webkit.org/show_bug.cgi?id=51166 - ExecutableAllocator::cacheFlush should call sys_cache_control - - * jit/ExecutableAllocator.h: - (JSC::ExecutableAllocator::cacheFlush): Use the more correct and forward looking API - - sys_cache_control(kCacheFunctionPrepareForExecution,...). - -2010-12-16 Ariya Hidayat <ariya@sencha.com> - - Reviewed by Andreas Kling. - - [JSC] Const correctness in ASTBuilder and SyntaxChecker - https://bugs.webkit.org/show_bug.cgi?id=51141 - - * parser/ASTBuilder.h: - (JSC::ASTBuilder::getName): - (JSC::ASTBuilder::getType): - (JSC::ASTBuilder::isResolve): - * parser/SyntaxChecker.h: - (JSC::SyntaxChecker::operatorStackPop): - -2010-12-15 Kenneth Russell <kbr@google.com> - - Reviewed by James Robinson. - - Web Audio API: port FFTFrame to MKL - https://bugs.webkit.org/show_bug.cgi?id=50986 - - Fixed bug in log2 emulation function provided for Windows port of - Web Audio API. - - * wtf/MathExtras.h: - (log2): - -2010-12-14 Mark Rowe <mrowe@apple.com> - - Reviewed by Sam Weinig. - - <http://webkit.org/b/51064> Reproducible crash inside WebCore::MediaPlayerPrivateQTKit::createQTMovie when loading <video> - - * wtf/text/WTFString.h: Prevent String from being implicitly convertable to bool. - It was previously implicitly convertible to bool on Mac via operator NSString*, - but since that always has a non-zero return value it would give unexpected results. - -2010-12-14 Laszlo Gombos <laszlo.1.gombos@nokia.com> - - Reviewed by Eric Seidel. - - [Qt] [Symbian] Do not use pkg-config on Symbian as it is not supported - https://bugs.webkit.org/show_bug.cgi?id=50231 - - Guard CONFIG+=link_pkgconfig with !symbian. - - * jsc.pro: - -2010-12-14 Cameron Zwarich <zwarich@apple.com> - - Not reviewed. - - Revert accidental change disabling the JIT for most platforms. - - * wtf/Platform.h: - -2010-12-13 Cameron Zwarich <zwarich@apple.com> - - Reviewed by Eric Seidel. - - Clang fails to build the JSC interpreter - https://bugs.webkit.org/show_bug.cgi?id=51016 - - Clang does not allow indirect gotos out of scopes with cleanup. GCC 4.2 allows - them, but it does not correctly generate the cleanup, causing a leak if the - cleanup decrements a reference count. - - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): Put an Identifier into its own scope. - -2010-12-14 Carlos Garcia Campos <cgarcia@igalia.com> - - Reviewed by Martin Robinson. - - [GTK] Simplify context-menu handling code - https://bugs.webkit.org/show_bug.cgi?id=49658 - - * wtf/PlatformRefPtr.h: Add leakRef() - -2010-12-13 Cameron Zwarich <zwarich@apple.com> - - Reviewed by Gavin Barraclough. - - JavaScriptCore should not use "asm volatile" outside of a function - https://bugs.webkit.org/show_bug.cgi?id=50991 - - * jit/JITStubs.cpp: Remove the volatile keyword from asm statements. - -2010-12-13 Steve Falkenburg <sfalken@apple.com> - - Windows production build fix. - Try copying ICU 4.6 in addition to 4.4 and 4.2. + * runtime/JSGlobalObject.cpp: + (JSC::markIfNeeded): + * runtime/JSGlobalObject.h: + (JSC::Structure::prototypeChain): + * runtime/JSObject.h: + (JSC::JSObject::markChildrenDirect): + * runtime/JSPropertyNameIterator.cpp: + (JSC::JSPropertyNameIterator::create): + (JSC::JSPropertyNameIterator::get): + (JSC::JSPropertyNameIterator::markChildren): + * runtime/JSPropertyNameIterator.h: + (JSC::JSPropertyNameIterator::setCachedPrototypeChain): + * runtime/MarkStack.h: + (JSC::MarkStack::append): + * runtime/Structure.h: + (JSC::Structure::cachedPrototypeChainSlot): + * runtime/StructureChain.cpp: + (JSC::StructureChain::StructureChain): + * runtime/StructureChain.h: + (JSC::StructureChain::create): + (JSC::StructureChain::createStructure): - * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd: +2011-03-30 Steve Falkenburg <sfalken@apple.com> -2010-12-13 Michael Saboff <msaboff@apple.com> + Reviewed by Adam Roben. - Reviewed by Oliver Hunt. + Update Windows production build logic for new production configurations + https://bugs.webkit.org/show_bug.cgi?id=57494 - REGRESSION: mobileme mail viewing is broken - https://bugs.webkit.org/show_bug.cgi?id=50884 + * JavaScriptCore.vcproj/JavaScriptCore.make: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreProduction.vsprops: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops: + * JavaScriptCore.vcproj/WTF/WTFProduction.vsprops: + * JavaScriptCore.vcproj/WTF/WTFReleasePGO.vsprops: + * JavaScriptCore.vcproj/jsc/jscProduction.vsprops: + * JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops: + * JavaScriptCore.vcproj/testapi/testapiProduction.vsprops: - Fixed problem where simple parenthesis (those without capture and - with a fixed count) where not propagating backtrack to labels for - nested parentheses. Also added the nesting level for the parentheses - state created in that case as well. +2011-03-30 Steve Falkenburg <sfalken@apple.com> - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::BacktrackDestination::copyBacktrackToLabel): - (JSC::Yarr::RegexGenerator::TermGenerationState::isLastTerm): - (JSC::Yarr::RegexGenerator::ParenthesesTail::generateCode): - (JSC::Yarr::RegexGenerator::generateParenthesesSingle): + Reviewed by Adam Roben. -2010-12-13 Peter Varga <pvarga@inf.u-szeged.hu> + Rename Windows configuration Release_LTCG to Production for clarity + https://bugs.webkit.org/show_bug.cgi?id=57465 - Reviewed by Gavin Barraclough. + * JavaScriptCore.vcproj/JavaScriptCore.sln: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreProduction.vsprops: Copied from Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseLTCG.vsprops. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseLTCG.vsprops: Removed. + * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.vcproj/WTF/WTFProduction.vsprops: Copied from Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFReleaseLTCG.vsprops. + * JavaScriptCore.vcproj/WTF/WTFReleaseLTCG.vsprops: Removed. + * JavaScriptCore.vcproj/jsc/jsc.vcproj: + * JavaScriptCore.vcproj/jsc/jscProduction.vsprops: Copied from Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscReleaseLTCG.vsprops. + * JavaScriptCore.vcproj/jsc/jscReleaseLTCG.vsprops: Removed. + * JavaScriptCore.vcproj/testapi/testapi.vcproj: + * JavaScriptCore.vcproj/testapi/testapiProduction.vsprops: Copied from Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiReleaseLTCG.vsprops. + * JavaScriptCore.vcproj/testapi/testapiReleaseLTCG.vsprops: Removed. - Reduce the size of the RegexStackSpaceForBackTrackInfoParentheses in YARR - https://bugs.webkit.org/show_bug.cgi?id=49385 +2011-03-30 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> - Remove the BackTrackInfoParentheses struct prevBegin and prevEnd members. + Reviewed by Maciej Stachowiak. - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::Interpreter::matchParentheses): - (JSC::Yarr::Interpreter::backtrackParentheses): - * yarr/RegexPattern.h: + Add the NEXT_OPCODE() macro to the DFG-JIT parser + https://bugs.webkit.org/show_bug.cgi?id=57322 -2010-12-10 Michael Saboff <msaboff@apple.com> + In JavaScriptCore we use macros to jump to the next opcode + (both in interpreter and JIT). This macro is added to the + DFG-JIT parser as well. - Reviewed by Gavin Barraclough. + * dfg/DFGByteCodeParser.cpp: + (JSC::DFG::ByteCodeParser::parse): - REGRESSION Hang inside Yarr::RegexCodeBlock::execute when visiting - bugs.webkit.org - https://bugs.webkit.org/show_bug.cgi?id=50816 - - First nested parentheses of the second or greater alternative - where backtracking to the prior parentheses. Changed the default - handling of initial parentheses for all alternatives to go back - to the immediate outer paren. - - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::GenerationState::addParenthesesTail): - (JSC::Yarr::RegexGenerator::TermGenerationState::TermGenerationState): - (JSC::Yarr::RegexGenerator::TermGenerationState::isLastTerm): - (JSC::Yarr::RegexGenerator::TermGenerationState::getTermIndex): - (JSC::Yarr::RegexGenerator::TermGenerationState::setParenthesesTail): - (JSC::Yarr::RegexGenerator::TermGenerationState::getParenthesesTail): - (JSC::Yarr::RegexGenerator::ParenthesesTail::ParenthesesTail): - (JSC::Yarr::RegexGenerator::ParenthesesTail::processBacktracks): - (JSC::Yarr::RegexGenerator::ParenthesesTail::generateCode): - (JSC::Yarr::RegexGenerator::generateParenthesesSingle): - -2010-12-11 Patrick Gansterer <paroga@webkit.org> +2011-03-29 Geoffrey Garen <ggaren@apple.com> Reviewed by Darin Adler. - Add an overload to makeString for Vector<char> - https://bugs.webkit.org/show_bug.cgi?id=50123 - - Also cleanup StringTypeAdapter. - - * wtf/text/StringConcatenate.h: - -2010-12-10 Siddharth Mathur <siddharth.mathur@nokia.com> - - Reviewed by Eric Seidel. - - [Qt] Build fix for Symbian: don't compile POSIX memory management implementation - https://bugs.webkit.org/show_bug.cgi?id=50707 - - * wtf/wtf.pri: - -2010-12-10 Steve Falkenburg <sfalken@apple.com> - - Windows production build fix. + ~25% regression on v8-splay in the SunSpider harness + https://bugs.webkit.org/show_bug.cgi?id=56128 - Don't stop if react-to-vsprops-changes.py exits with an error, - since this will occur in production builds. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: - -2010-12-10 Brian Weinstein <bweinstein@apple.com> - - Reviewed by Adam Roben. - - Turn on USE(CROSS_PLATFORM_CONTEXT_MENUS) for Windows. + I'm not sure if this is the root cause of the regression Stephanie + measured, but it seems to get us back to previous v8-splay times. + + SunSpider reports no change. v8-splay says 41% faster. - * wtf/Platform.h: + * runtime/Heap.cpp: + (JSC::Heap::reset): Make marking proportional to 1X the size of the heap, + not .5X the size of the heap. When the heap is large, this makes a big + difference. (Our old heap growth policy matched this. You can see by + looking at resizeBlocks in revisions prior to r77699.) -2010-12-10 Martin Robinson <mrobinson@igalia.com> +2011-03-29 Steve Falkenburg <sfalken@apple.com> - Unreviewed, rolling out r73703. - http://trac.webkit.org/changeset/73703 - https://bugs.webkit.org/show_bug.cgi?id=49658 + Reviewed by Darin Adler. - This patch is causing crashes on the GTK+ bots. + Use per-configuration vsprops in JavaScriptCore to avoid WebKitVSPropsRedirectionDir removal by MSVC IDE + https://bugs.webkit.org/show_bug.cgi?id=57350 + + Visual Studio's IDE was removing instances of $(WebKitVSPropsRedirectionDir) from + InheritedPropertySheet rules in our vcproj files when the vcproj was edited from within + the IDE. To avoid this, add a separate vsprops file for each project configuration that + contains the required inherited property sheets. - * wtf/PlatformRefPtr.h: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebug.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugAll.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugCairoCFLite.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreRelease.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseCairoCFLite.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseLTCG.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops: Added. + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.vcproj/WTF/WTFDebug.vsprops: Added. + * JavaScriptCore.vcproj/WTF/WTFDebugAll.vsprops: Added. + * JavaScriptCore.vcproj/WTF/WTFDebugCairoCFLite.vsprops: Added. + * JavaScriptCore.vcproj/WTF/WTFRelease.vsprops: Added. + * JavaScriptCore.vcproj/WTF/WTFReleaseCairoCFLite.vsprops: Added. + * JavaScriptCore.vcproj/WTF/WTFReleaseLTCG.vsprops: Added. + * JavaScriptCore.vcproj/WTF/WTFReleasePGO.vsprops: Added. + * JavaScriptCore.vcproj/jsc/jsc.vcproj: + * JavaScriptCore.vcproj/jsc/jscDebug.vsprops: Added. + * JavaScriptCore.vcproj/jsc/jscDebugAll.vsprops: Added. + * JavaScriptCore.vcproj/jsc/jscDebugCairoCFLite.vsprops: Added. + * JavaScriptCore.vcproj/jsc/jscRelease.vsprops: Added. + * JavaScriptCore.vcproj/jsc/jscReleaseCairoCFLite.vsprops: Added. + * JavaScriptCore.vcproj/jsc/jscReleaseLTCG.vsprops: Added. + * JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops: Added. + * JavaScriptCore.vcproj/testapi/testapi.vcproj: + * JavaScriptCore.vcproj/testapi/testapiDebug.vsprops: Added. + * JavaScriptCore.vcproj/testapi/testapiDebugAll.vsprops: Added. + * JavaScriptCore.vcproj/testapi/testapiDebugCairoCFLite.vsprops: Added. + * JavaScriptCore.vcproj/testapi/testapiRelease.vsprops: Added. + * JavaScriptCore.vcproj/testapi/testapiReleaseCairoCFLite.vsprops: Added. + * JavaScriptCore.vcproj/testapi/testapiReleaseLTCG.vsprops: Added. -2010-12-10 Patrick Gansterer <paroga@webkit.org> +2011-03-29 Oliver Hunt <oliver@apple.com> Reviewed by Eric Seidel. - Cleanup StringWx.cpp - https://bugs.webkit.org/show_bug.cgi?id=50525 + REGRESSION(r82173): Causes assertion and test failures in run-javascriptcore-tests on Windows (Requested by aroben on #webkit). + https://bugs.webkit.org/show_bug.cgi?id=57333 - Use StringImpl::createUninitialized to avoid memcpy and fix style issues. + constructDate now takes the global object explicitly as it may be called + by functions other than the constructor itself. - * wtf/wx/StringWx.cpp: - (WTF::String::String): - -2010-12-10 Carlos Garcia Campos <cgarcia@igalia.com> - - Reviewed by Martin Robinson. - - [GTK] Simplify context-menu handling code - https://bugs.webkit.org/show_bug.cgi?id=49658 - - * wtf/PlatformRefPtr.h: - -2010-12-09 Michael Saboff <msaboff@apple.com> + * API/JSObjectRef.cpp: + (JSObjectMakeDate): + * runtime/DateConstructor.cpp: + (JSC::constructDate): + (JSC::constructWithDateConstructor): + * runtime/DateConstructor.h: - Reviewed by Gavin Barraclough. +2011-03-29 Ben Taylor <bentaylor.solx86@gmail.com> - REGRESSION (r73065?): A regex no longer works - https://bugs.webkit.org/show_bug.cgi?id=50570 - - Changed the handling of adjacent parentheses backtracks in two ways. - First, only outer most paren backtracks default to back tracking - to the "next character" looping code. Second, added a jump around - backtracks that fall through to the next backtrack where the - second backtrack has some greedy processing before the backtracking - from outside the parentheses code. - Also cleaned up extraneous white spce, removing white space at the - end of or that makes up a whole line. - - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::GenerationState::GenerationState): - (JSC::Yarr::RegexGenerator::GenerationState::incrementParenNestingLevel): - (JSC::Yarr::RegexGenerator::GenerationState::decrementParenNestingLevel): - (JSC::Yarr::RegexGenerator::GenerationState::addParenthesesTail): - (JSC::Yarr::RegexGenerator::GenerationState::emitParenthesesTail): - (JSC::Yarr::RegexGenerator::ParenthesesTail::ParenthesesTail): - (JSC::Yarr::RegexGenerator::ParenthesesTail::setNextIteration): - (JSC::Yarr::RegexGenerator::ParenthesesTail::generateCode): - (JSC::Yarr::RegexGenerator::generateParenthesesSingle): - -2010-12-09 Michael Saboff <msaboff@apple.com> + Reviewed by Benjamin Poulain. - Reviewed by Geoffrey Garen. + https://bugs.webkit.org/show_bug.cgi?id=41953 - Addressed the "FIXME" issues in array sort for toString() methods that - mutate the array in either size or contents. The change is to mark - the temporary array contents so that they are not garbage collected - and to make sure the array is large enough to hold the contents - of the sorted temporary vector. - https://bugs.webkit.org/show_bug.cgi?id=50718 + Fix compile error on Solaris 10/Sun Studio 12 CC emanating from MathExtras.h - * runtime/Collector.cpp: - (JSC::Heap::addTempSortVector): - (JSC::Heap::removeTempSortVector): - (JSC::Heap::markTempSortVectors): - (JSC::Heap::markRoots): - * runtime/Collector.h: - * runtime/JSArray.cpp: - (JSC::JSArray::sort): - * runtime/JSValue.h: + * wtf/MathExtras.h: -2010-12-09 Michael Saboff <msaboff@apple.com> +2011-03-29 Ben Taylor <bentaylor.solx86@gmail.com> Reviewed by Darin Adler. - Changed setting of backtrack labels to not overwrite a prior - label. Where losing prior labe which then reverted back to - next character label. - https://bugs.webkit.org/show_bug.cgi?id=50579 - - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::BacktrackDestination::setBacktrackToLabel): - -2010-12-08 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig. - - Permit Character Class Escape in CharacterRange in Character Class. - https://bugs.webkit.org/show_bug.cgi?id=50483 - https://bugs.webkit.org/show_bug.cgi?id=50538 - https://bugs.webkit.org/show_bug.cgi?id=50654 - https://bugs.webkit.org/show_bug.cgi?id=50646 - - We recently tightened up our spec conformance in generating syntax - error in these cases, however testing in the wild has shown this - to be problematic. This reverts the previous change in allowing - class escapes (e.g. \d) in ranges in character classes ([]), but - does retain some closer conformance to the spec in only allowing - ranges that would be permitted per the grammar rules in the spec - (e.g. in /[\d-a-z]/ "a-z" cannot be considered as a range). - - * yarr/RegexParser.h: - (JSC::Yarr::Parser::CharacterClassParserDelegate::atomPatternCharacter): - (JSC::Yarr::Parser::CharacterClassParserDelegate::atomBuiltInCharacterClass): - (JSC::Yarr::Parser::parse): - -2010-12-08 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Sam Weinig. - - Try to fix crash-on-launch seen on Windows builder. - - * wtf/OSAllocatorWin.cpp: - (WTF::OSAllocator::release): Disabled an ASSERT, because it checks for - a bug that hasn't been fixed yet. - -2010-12-08 Geoffrey Garen <ggaren@apple.com> - - Try to fix Windows build. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated .def file. - -2010-12-08 Geoffrey Garen <ggaren@apple.com> - - Try to fix Windows build. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated .def - file to remove a symbol -- the next build failure will say which symbol - to add back. - -2010-12-08 Geoffrey Garen <ggaren@apple.com> - - Try to fix Windows build. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated .def file. - -2010-12-08 Geoffrey Garen <ggaren@apple.com> - - Try to fix GTK Linux build. - - * jit/ExecutableAllocator.cpp: - (JSC::ExecutablePool::systemAlloc): - * runtime/AlignedMemoryAllocator.h: - (JSC::::AlignedMemoryAllocator): Updated for Usage enum moving to OSAllocator. - -2010-12-07 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Sam Weinig. - - Migrated OS-specific allocation code from PageReservation and PageAllocation to OSAllocator - https://bugs.webkit.org/show_bug.cgi?id=50653 - - * JavaScriptCore.exp: Updated for new function signature. - - * interpreter/RegisterFile.h: - (JSC::RegisterFile::RegisterFile): - (JSC::RegisterFile::grow): - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::FixedVMPoolAllocator::reuse): - (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): Removed checkAllocatedOkay. - OSAllocator is now the central location for verifying that allocation succeeds. - This allowed me to remove some complicating cross-platform cruft. - - * runtime/AlignedMemoryAllocator.h: - (JSC::::allocate): Updated for code motion. - - * wtf/OSAllocator.h: Added Usage, writable, and executable parameters, to - support VM features required by clients of PageAllocation and PageReservation. - - * wtf/OSAllocatorPosix.cpp: - (WTF::OSAllocator::reserve): - (WTF::OSAllocator::reserveAndCommit): - (WTF::OSAllocator::commit): Moved PageAllocation support for randomizing - executable memory here. - - * wtf/OSAllocatorSymbian.cpp: - (WTF::OSAllocator::reserve): - (WTF::OSAllocator::reserveAndCommit): - (WTF::OSAllocator::commit): Updated for new function signatures. - - * wtf/OSAllocatorWin.cpp: - (WTF::protection): - (WTF::OSAllocator::reserve): - (WTF::OSAllocator::reserveAndCommit): - (WTF::OSAllocator::commit): - (WTF::OSAllocator::release): Updated for new function signatures. Moved - some protection-related and WINCE-related code from PageAllocation here. - - * wtf/PageAllocation.cpp: Nixed cross-platform lastError abstraction, since - it was only used by checkAllocatedOkay, which is now gone. - - * wtf/PageAllocation.h: - (WTF::PageAllocation::allocate): - (WTF::PageAllocation::allocateAligned): - (WTF::PageAllocation::deallocate): - (WTF::PageAllocation::isPowerOfTwo): - (WTF::PageAllocation::systemAllocateAligned): Removed system* functions, - and replaced calls to them with calls to OSAllocator. - - * wtf/PageReservation.h: - (WTF::PageReservation::commit): - (WTF::PageReservation::decommit): - (WTF::PageReservation::reserve): - (WTF::PageReservation::deallocate): - (WTF::PageReservation::PageReservation): Ditto. Added m_writable and - m_executable because these flags are now required when committing memory. - -2010-12-08 Chris Rogers <crogers@google.com> - - Reviewed by Kenneth Russell. - - Add web audio files to mac port Xcode projects - https://bugs.webkit.org/show_bug.cgi?id=50721 - - * JavaScriptCore.xcodeproj/project.pbxproj: - -2010-12-08 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - Marking the active global object re-enters through markConservatively - https://bugs.webkit.org/show_bug.cgi?id=50711 - - draining of the MarkStack is not allowed to be re-entrant, we got away - with this simply due to the logic in MarkStack::drain implicitly handling - changes that could be triggered by the re-entry. - - Just to be safe this patch removes the re-entry through markConservatively - so we don't accidentally introduce such an issue in future. I've also - added an assertion to catch such errors. - - * runtime/Collector.cpp: - (JSC::Heap::markConservatively): - (JSC::Heap::markCurrentThreadConservativelyInternal): - (JSC::Heap::markOtherThreadConservatively): - * runtime/JSArray.h: - (JSC::MarkStack::drain): - * runtime/MarkStack.h: - (JSC::MarkStack::MarkStack): + https://bugs.webkit.org/show_bug.cgi?id=57231 + Add conditional for SUNCC supporting alignment macros -2010-12-08 Chris Marrin <cmarrin@apple.com> + Compile fix for Solaris 10/Sun Studio 12 CC - Reviewed by Simon Fraser. - - Share code between Mac (CA) and Windows (CACF) GraphicsLayer implementations - https://bugs.webkit.org/show_bug.cgi?id=49388 - - Added a WTF_PLATFORM_CA flag. Set when platform is MAC or IOS or (WINDOWS AND CG) - which was decided was the best way to identify a build with CoreAnimation - - * wtf/Platform.h: - -2010-12-07 Anders Carlsson <andersca@apple.com> - - Build fix follow up build fix. - - * pcre/pcre_ucp_searchfuncs.cpp: - (jsc_pcre_ucp_othercase): + * wtf/Vector.h: -2010-12-07 Anders Carlsson <andersca@apple.com> +2011-03-29 Ben Taylor <bentaylor.solx86@gmail.com> Reviewed by Darin Adler. - Fix clang++ build - https://bugs.webkit.org/show_bug.cgi?id=50645 - - Explicitly cast offset to int. + https://bugs.webkit.org/show_bug.cgi?id=57256 - * pcre/pcre_ucp_searchfuncs.cpp: - (jsc_pcre_ucp_othercase): + Fix crash on misaligned reads on Solaris 10/Sparc -2010-12-07 Kenneth Russell <kbr@google.com> - - Reviewed by David Levin. - - Fix compilation of core web audio files on Windows - https://bugs.webkit.org/show_bug.cgi?id=50603 - - Added log2 definition to MathExtras.h on Windows platform. + * wtf/text/AtomicString.cpp: + (WTF::equal): - * wtf/MathExtras.h: - (log2): +2011-03-28 Oliver Hunt <oliver@apple.com> -2010-12-07 Antti Koivisto <antti@apple.com> + Reviewed by Geoffrey Garen. - Reviewed by Gavin Barraclough. + instanceof Array test fails when using iframes + https://bugs.webkit.org/show_bug.cgi?id=17250 - https://bugs.webkit.org/show_bug.cgi?id=50412 - http://www.wunderground.com/US/CA/Hayward.html causes big memory spike during page loading - - Creating a substring caused the original string be flattened if it was in the rope form. This could use - significant amount of memory by reducing buffer sharing between strings. - - Add a rope specific substring function that constructs the substring by reusing the rope fibers - instead of flattening the rope. - - No change observed in SunSpider. + This is a problem with all built in constructors, the use of + lexicalGlobalObject rather than the constructors own + global object reference means that a builtin will always use + the prototype from the lexical global object rather than that + of the constructors origin. + * API/JSObjectRef.cpp: + (JSObjectMakeFunction): + (JSObjectMakeRegExp): + * JavaScriptCore.exp: + * runtime/ArrayConstructor.cpp: + (JSC::constructArrayWithSizeQuirk): + * runtime/BooleanConstructor.cpp: + (JSC::constructBoolean): + (JSC::constructBooleanFromImmediateBoolean): + * runtime/BooleanConstructor.h: + * runtime/DateConstructor.cpp: + (JSC::constructDate): + * runtime/DateInstance.cpp: + * runtime/DateInstance.h: + * runtime/ErrorConstructor.cpp: + (JSC::constructWithErrorConstructor): + (JSC::callErrorConstructor): + * runtime/FunctionConstructor.cpp: + (JSC::constructWithFunctionConstructor): + (JSC::callFunctionConstructor): + (JSC::constructFunction): + * runtime/FunctionConstructor.h: + * runtime/JSCell.cpp: + (JSC::JSCell::getOwnPropertySlot): + (JSC::JSCell::put): + (JSC::JSCell::deleteProperty): + (JSC::JSCell::toThisObject): + (JSC::JSCell::toObject): + * runtime/JSCell.h: + (JSC::JSCell::JSValue::toObject): + * runtime/JSNotAnObject.cpp: + (JSC::JSNotAnObject::toObject): + * runtime/JSNotAnObject.h: + * runtime/JSObject.cpp: + (JSC::JSObject::toObject): + * runtime/JSObject.h: * runtime/JSString.cpp: - (JSC::JSString::substringFromRope): + (JSC::StringObject::create): + (JSC::JSString::toObject): + (JSC::JSString::toThisObject): * runtime/JSString.h: - (JSC::jsSubstring): - * runtime/StringPrototype.cpp: - (JSC::stringProtoFuncSubstr): - (JSC::stringProtoFuncSubstring): - -2010-12-06 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Gavin Barraclough. - - Simplified some ASLR-related code in PageAllocation/Reservation - https://bugs.webkit.org/show_bug.cgi?id=50599 - - Removed reserveAt, allocateAt, and friends, since they all existed to - serve one feature: ASLR for executable memory on x86_64 on Mac. Moved - ASLR code down into systemAllocate -- now, any time you allocate - executable memory on a supporting platform, the memory's location is - randomized. - - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): No need for the caller - to randomize anything. - - * wtf/PageAllocation.h: - (WTF::PageAllocation::systemAllocate): Removed some *At() functions, and - beefed up executable allocation with randomization. - - * wtf/PageReservation.h: - (WTF::PageReservation::systemReserve): Removed some *At() functions. + * runtime/JSValue.cpp: + (JSC::JSValue::toObjectSlowCase): + (JSC::JSValue::toThisObjectSlowCase): + (JSC::JSValue::synthesizeObject): + * runtime/JSValue.h: + * runtime/NumberConstructor.cpp: + (JSC::constructWithNumberConstructor): + * runtime/NumberObject.cpp: + (JSC::constructNumber): + * runtime/NumberObject.h: + * runtime/ObjectConstructor.cpp: + (JSC::constructObject): + (JSC::constructWithObjectConstructor): + (JSC::callObjectConstructor): + * runtime/RegExpConstructor.cpp: + (JSC::constructRegExp): + (JSC::constructWithRegExpConstructor): + (JSC::callRegExpConstructor): + * runtime/RegExpConstructor.h: + * runtime/StringConstructor.cpp: + (JSC::constructWithStringConstructor): + * runtime/StringObject.h: -2010-12-06 Geoffrey Garen <ggaren@apple.com> +2011-03-28 Geoffrey Garen <ggaren@apple.com> - Reviewed by Maciej Stachowiak. + Reviewed by Oliver Hunt. - reserveAndCommit doesn't commit on MADVISE_FREE_REUSE systems - https://bugs.webkit.org/show_bug.cgi?id=50588 + REGRESSION [r78794-r79249] Allocation of memory is slow when number of active objects is large + https://bugs.webkit.org/show_bug.cgi?id=56823 - * wtf/OSAllocatorPosix.cpp: - (WTF::OSAllocator::reserve): - (WTF::OSAllocator::reserveAndCommit): - (WTF::OSAllocator::commit): Tightened up some comments. Changed - reserveAndCommit to actually commit on MADVISE_FREE_REUSE systems. - -2010-12-06 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Andreas Kling. - - [WINCE] Add build system - https://bugs.webkit.org/show_bug.cgi?id=50522 - - * CMakeListsWinCE.txt: Added. - * shell/CMakeListsWinCE.txt: Added. - * wtf/CMakeListsWinCE.txt: Added. - -2010-12-06 John Tantalo <john.tantalo@gmail.com> - - Reviewed by Geoffrey Garen. - - jsc does not ignore shebang - https://bugs.webkit.org/show_bug.cgi?id=49576 - - * jsc.cpp: - (fillBufferWithContentsOfFile): - - translate shebang into a valid JavaScript comment so the lexer ignores it - -2010-12-05 Adam Roben <aroben@apple.com> - - Windows production build fix - - Put spaces after trailing backslashes when setting - %WebKitVSPropsRedirectionDir%. According to MSDN - <http://msdn.microsoft.com/en-us/library/2kzfk8c7(v=VS.80).aspx>: + Partial fix for most of the problem. (TOT still shows a regression, though.) - A backslash ( \ ) followed by a newline character is interpreted as - a space in the command; use a backslash at the end of a line to - continue a command onto the next line. NMAKE interprets the - backslash literally if any other character, including a space or - tab, follows the backslash. - - * JavaScriptCore.vcproj/JavaScriptCore.make: - -2010-12-04 Patrick Gansterer <paroga@webkit.org> - - Unreviewed, build fix after r69132. - - * shell/CMakeLists.txt: Fix directory name (jsc -> shell). - -2010-12-04 Xan Lopez <xlopez@igalia.com> + * runtime/Heap.cpp: + (JSC::Heap::reportExtraMemoryCostSlowCase): Use highWaterMark(), instead of + capacity(), since capacity() is O(n) relative to the size of the heap. - Reviewed by Martin Robinson. + In limited circumstances, capacity() is also worse than highWaterMark() + for measuring extra cost relative to heap size, since capacity() only + measures the *current* capacity of the heap, but the heap will grow if + necessary to attain highWaterMark(). - [GTK] Drop GdkDrawable usage, it's deprecated in GTK+3.x and we can use GdkWindow - https://bugs.webkit.org/show_bug.cgi?id=50451 +2011-03-28 Oliver Hunt <oliver@apple.com> - * wtf/gobject/GTypedefs.h: add GdkWindow defines. + REGRESSION(r82130): It made all tests crash (Requested by Ossy on #webkit). + https://bugs.webkit.org/show_bug.cgi?id=57251 -2010-12-03 Gavin Barraclough <barraclough@apple.com> + Build fix, had remnant of another patch in r82130 - Rubber stamped by Oliver Hunt. + * jit/JITPropertyAccess.cpp: + (JSC::JIT::privateCompileGetByIdChainList): - Bug 50509 - set* methods on MacroAssembler are awfully named. +2011-03-27 Oliver Hunt <oliver@apple.com> - Methods set32 and setTest32 compare 32-bit operands, and set a 32-bit results based on the comparison. - set8 compares 32-bit operands, and sets an 8-bit result based on the comparison. - setTest8 compares 8-bit operands, and sets a 32-bit result based on the comparison. + Reviewed by Maciej Stachowiak. - Rename to clarify. + Add additional immediate types to allow us to distinguish the source of a JIT immediate + https://bugs.webkit.org/show_bug.cgi?id=57190 - set32 -> set32Compare32 - setTest32 -> set32Test32 - set8 -> set8Compare32 - setTest8 -> set32Test8 + Allow us to distinguish whether a JIT immediate is a value that we + control (TrustedImm32 and TrustedImmPtr) vs. ones that can be controlled + or influenced by code we are compiling. Currently we do nothing with this + information -- this change is large and mechanical but would obscure any + logic changes that we would have made. + * assembler/AbstractMacroAssembler.h: + (JSC::AbstractMacroAssembler::TrustedImmPtr::TrustedImmPtr): + (JSC::AbstractMacroAssembler::ImmPtr::ImmPtr): + (JSC::AbstractMacroAssembler::TrustedImm32::TrustedImm32): + (JSC::AbstractMacroAssembler::Imm32::Imm32): * assembler/MacroAssembler.h: + (JSC::MacroAssembler::pop): + (JSC::MacroAssembler::poke): + (JSC::MacroAssembler::branchPtr): + (JSC::MacroAssembler::branch32): + (JSC::MacroAssembler::addPtr): + (JSC::MacroAssembler::andPtr): + (JSC::MacroAssembler::orPtr): + (JSC::MacroAssembler::subPtr): + (JSC::MacroAssembler::xorPtr): (JSC::MacroAssembler::setPtr): + (JSC::MacroAssembler::storePtr): + (JSC::MacroAssembler::branchTestPtr): + (JSC::MacroAssembler::branchSubPtr): + (JSC::MacroAssembler::branchTest8): * assembler/MacroAssemblerARM.h: + (JSC::MacroAssemblerARM::add32): + (JSC::MacroAssemblerARM::and32): + (JSC::MacroAssemblerARM::lshift32): + (JSC::MacroAssemblerARM::mul32): + (JSC::MacroAssemblerARM::or32): + (JSC::MacroAssemblerARM::rshift32): + (JSC::MacroAssemblerARM::urshift32): + (JSC::MacroAssemblerARM::sub32): + (JSC::MacroAssemblerARM::xor32): + (JSC::MacroAssemblerARM::store32): + (JSC::MacroAssemblerARM::push): + (JSC::MacroAssemblerARM::move): + (JSC::MacroAssemblerARM::branch8): + (JSC::MacroAssemblerARM::branch32): + (JSC::MacroAssemblerARM::branch32WithUnalignedHalfWords): + (JSC::MacroAssemblerARM::branch16): + (JSC::MacroAssemblerARM::branchTest8): + (JSC::MacroAssemblerARM::branchTest32): + (JSC::MacroAssemblerARM::branchAdd32): + (JSC::MacroAssemblerARM::branchMul32): + (JSC::MacroAssemblerARM::branchSub32): (JSC::MacroAssemblerARM::set32Compare32): (JSC::MacroAssemblerARM::set8Compare32): (JSC::MacroAssemblerARM::set32Test32): (JSC::MacroAssemblerARM::set32Test8): + (JSC::MacroAssemblerARM::moveWithPatch): + (JSC::MacroAssemblerARM::branchPtrWithPatch): + (JSC::MacroAssemblerARM::storePtrWithPatch): * assembler/MacroAssemblerARMv7.h: + (JSC::MacroAssemblerARMv7::add32): + (JSC::MacroAssemblerARMv7::and32): + (JSC::MacroAssemblerARMv7::lshift32): + (JSC::MacroAssemblerARMv7::mul32): + (JSC::MacroAssemblerARMv7::or32): + (JSC::MacroAssemblerARMv7::rshift32): + (JSC::MacroAssemblerARMv7::urshift32): + (JSC::MacroAssemblerARMv7::sub32): + (JSC::MacroAssemblerARMv7::xor32): + (JSC::MacroAssemblerARMv7::load32): + (JSC::MacroAssemblerARMv7::load32WithAddressOffsetPatch): + (JSC::MacroAssemblerARMv7::load16): + (JSC::MacroAssemblerARMv7::store32WithAddressOffsetPatch): + (JSC::MacroAssemblerARMv7::store32): + (JSC::MacroAssemblerARMv7::loadDouble): + (JSC::MacroAssemblerARMv7::storeDouble): + (JSC::MacroAssemblerARMv7::push): + (JSC::MacroAssemblerARMv7::move): + (JSC::MacroAssemblerARMv7::compare32): + (JSC::MacroAssemblerARMv7::test32): + (JSC::MacroAssemblerARMv7::branch32): + (JSC::MacroAssemblerARMv7::branch32WithUnalignedHalfWords): + (JSC::MacroAssemblerARMv7::branch16): + (JSC::MacroAssemblerARMv7::branch8): + (JSC::MacroAssemblerARMv7::branchTest32): + (JSC::MacroAssemblerARMv7::branchTest8): + (JSC::MacroAssemblerARMv7::branchAdd32): + (JSC::MacroAssemblerARMv7::branchMul32): + (JSC::MacroAssemblerARMv7::branchSub32): + (JSC::MacroAssemblerARMv7::nearCall): + (JSC::MacroAssemblerARMv7::call): (JSC::MacroAssemblerARMv7::set32Compare32): (JSC::MacroAssemblerARMv7::set8Compare32): (JSC::MacroAssemblerARMv7::set32Test32): (JSC::MacroAssemblerARMv7::set32Test8): + (JSC::MacroAssemblerARMv7::moveWithPatch): + (JSC::MacroAssemblerARMv7::branchPtrWithPatch): + (JSC::MacroAssemblerARMv7::storePtrWithPatch): + (JSC::MacroAssemblerARMv7::tailRecursiveCall): + (JSC::MacroAssemblerARMv7::makeJump): + (JSC::MacroAssemblerARMv7::makeBranch): + (JSC::MacroAssemblerARMv7::setupArmAddress): + (JSC::MacroAssemblerARMv7::makeBaseIndexBase): + (JSC::MacroAssemblerARMv7::moveFixedWidthEncoding): * assembler/MacroAssemblerMIPS.h: + (JSC::MacroAssemblerMIPS::add32): + (JSC::MacroAssemblerMIPS::and32): + (JSC::MacroAssemblerMIPS::lshift32): + (JSC::MacroAssemblerMIPS::mul32): + (JSC::MacroAssemblerMIPS::or32): + (JSC::MacroAssemblerMIPS::rshift32): + (JSC::MacroAssemblerMIPS::urshift32): + (JSC::MacroAssemblerMIPS::sub32): + (JSC::MacroAssemblerMIPS::xor32): + (JSC::MacroAssemblerMIPS::load32): + (JSC::MacroAssemblerMIPS::load32WithAddressOffsetPatch): + (JSC::MacroAssemblerMIPS::store32WithAddressOffsetPatch): + (JSC::MacroAssemblerMIPS::store32): + (JSC::MacroAssemblerMIPS::push): + (JSC::MacroAssemblerMIPS::move): + (JSC::MacroAssemblerMIPS::branch8): + (JSC::MacroAssemblerMIPS::branch32): + (JSC::MacroAssemblerMIPS::branch32WithUnalignedHalfWords): + (JSC::MacroAssemblerMIPS::branch16): + (JSC::MacroAssemblerMIPS::branchTest32): + (JSC::MacroAssemblerMIPS::branchTest8): + (JSC::MacroAssemblerMIPS::branchAdd32): + (JSC::MacroAssemblerMIPS::branchMul32): + (JSC::MacroAssemblerMIPS::branchSub32): (JSC::MacroAssemblerMIPS::set8Compare32): (JSC::MacroAssemblerMIPS::set32Compare32): (JSC::MacroAssemblerMIPS::set32Test8): (JSC::MacroAssemblerMIPS::set32Test32): + (JSC::MacroAssemblerMIPS::moveWithPatch): + (JSC::MacroAssemblerMIPS::branchPtrWithPatch): + (JSC::MacroAssemblerMIPS::storePtrWithPatch): + (JSC::MacroAssemblerMIPS::tailRecursiveCall): + (JSC::MacroAssemblerMIPS::loadDouble): + (JSC::MacroAssemblerMIPS::storeDouble): + (JSC::MacroAssemblerMIPS::branchTruncateDoubleToInt32): + * assembler/MacroAssemblerX86.h: + (JSC::MacroAssemblerX86::add32): + (JSC::MacroAssemblerX86::addWithCarry32): + (JSC::MacroAssemblerX86::and32): + (JSC::MacroAssemblerX86::or32): + (JSC::MacroAssemblerX86::sub32): + (JSC::MacroAssemblerX86::store32): + (JSC::MacroAssemblerX86::branch32): + (JSC::MacroAssemblerX86::moveWithPatch): + (JSC::MacroAssemblerX86::branchPtrWithPatch): + (JSC::MacroAssemblerX86::storePtrWithPatch): * assembler/MacroAssemblerX86Common.h: + (JSC::MacroAssemblerX86Common::add32): + (JSC::MacroAssemblerX86Common::and32): + (JSC::MacroAssemblerX86Common::lshift32): + (JSC::MacroAssemblerX86Common::mul32): + (JSC::MacroAssemblerX86Common::or32): + (JSC::MacroAssemblerX86Common::rshift32): + (JSC::MacroAssemblerX86Common::urshift32): + (JSC::MacroAssemblerX86Common::sub32): + (JSC::MacroAssemblerX86Common::xor32): + (JSC::MacroAssemblerX86Common::store32): + (JSC::MacroAssemblerX86Common::branchTruncateDoubleToInt32): + (JSC::MacroAssemblerX86Common::push): + (JSC::MacroAssemblerX86Common::move): + (JSC::MacroAssemblerX86Common::branch8): + (JSC::MacroAssemblerX86Common::branch32): + (JSC::MacroAssemblerX86Common::branch32WithUnalignedHalfWords): + (JSC::MacroAssemblerX86Common::branch16): + (JSC::MacroAssemblerX86Common::branchTest32): + (JSC::MacroAssemblerX86Common::branchTest8): + (JSC::MacroAssemblerX86Common::branchAdd32): + (JSC::MacroAssemblerX86Common::branchMul32): + (JSC::MacroAssemblerX86Common::branchSub32): (JSC::MacroAssemblerX86Common::set8Compare32): (JSC::MacroAssemblerX86Common::set32Compare32): (JSC::MacroAssemblerX86Common::set32Test8): (JSC::MacroAssemblerX86Common::set32Test32): + * assembler/MacroAssemblerX86_64.h: + (JSC::MacroAssemblerX86_64::add32): + (JSC::MacroAssemblerX86_64::and32): + (JSC::MacroAssemblerX86_64::or32): + (JSC::MacroAssemblerX86_64::sub32): + (JSC::MacroAssemblerX86_64::loadDouble): + (JSC::MacroAssemblerX86_64::addDouble): + (JSC::MacroAssemblerX86_64::convertInt32ToDouble): + (JSC::MacroAssemblerX86_64::store32): + (JSC::MacroAssemblerX86_64::call): + (JSC::MacroAssemblerX86_64::tailRecursiveCall): + (JSC::MacroAssemblerX86_64::makeTailRecursiveCall): + (JSC::MacroAssemblerX86_64::addPtr): + (JSC::MacroAssemblerX86_64::andPtr): + (JSC::MacroAssemblerX86_64::orPtr): + (JSC::MacroAssemblerX86_64::subPtr): + (JSC::MacroAssemblerX86_64::xorPtr): + (JSC::MacroAssemblerX86_64::storePtr): + (JSC::MacroAssemblerX86_64::setPtr): + (JSC::MacroAssemblerX86_64::branchPtr): + (JSC::MacroAssemblerX86_64::branchTestPtr): + (JSC::MacroAssemblerX86_64::branchSubPtr): + (JSC::MacroAssemblerX86_64::moveWithPatch): + (JSC::MacroAssemblerX86_64::branchPtrWithPatch): + (JSC::MacroAssemblerX86_64::storePtrWithPatch): + (JSC::MacroAssemblerX86_64::branchTest8): + * dfg/DFGJITCodeGenerator.h: + (JSC::DFG::JITCodeGenerator::callOperation): + * dfg/DFGJITCompiler.cpp: + (JSC::DFG::JITCompiler::jitAssertIsInt32): + (JSC::DFG::JITCompiler::emitCount): + * dfg/DFGJITCompiler.h: + (JSC::DFG::JITCompiler::emitPutImmediateToCallFrameHeader): + * dfg/DFGNonSpeculativeJIT.cpp: + (JSC::DFG::NonSpeculativeJIT::compile): + * dfg/DFGSpeculativeJIT.cpp: + (JSC::DFG::SpeculativeJIT::fillSpeculateCell): + (JSC::DFG::SpeculativeJIT::compile): + * jit/JIT.cpp: + (JSC::JIT::emitTimeoutCheck): + (JSC::JIT::privateCompile): + * jit/JIT.h: + * jit/JITArithmetic.cpp: + (JSC::JIT::emit_op_urshift): + (JSC::JIT::emitSlow_op_urshift): + (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_mod): + * jit/JITArithmetic32_64.cpp: + (JSC::JIT::emit_op_negate): + (JSC::JIT::emit_op_jnless): + (JSC::JIT::emit_op_jless): + (JSC::JIT::emit_op_jlesseq): + (JSC::JIT::emit_op_lshift): + (JSC::JIT::emitRightShift): + (JSC::JIT::emitRightShiftSlowCase): + (JSC::JIT::emit_op_bitand): + (JSC::JIT::emit_op_bitor): + (JSC::JIT::emit_op_bitxor): + (JSC::JIT::emit_op_bitnot): + (JSC::JIT::emit_op_post_inc): + (JSC::JIT::emit_op_post_dec): + (JSC::JIT::emitSlow_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::emitSub32Constant): + (JSC::JIT::emitBinaryDoubleOp): + (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::compileOpCallVarargs): + (JSC::JIT::compileOpCall): + (JSC::JIT::compileOpCallSlowCase): + * jit/JITCall32_64.cpp: + (JSC::JIT::compileOpCallVarargs): + (JSC::JIT::emit_op_ret_object_or_this): + (JSC::JIT::compileOpCall): + (JSC::JIT::compileOpCallSlowCase): + * jit/JITInlineMethods.h: + (JSC::JIT::emitPutCellToCallFrameHeader): + (JSC::JIT::emitPutIntToCallFrameHeader): + (JSC::JIT::emitPutImmediateToCallFrameHeader): + (JSC::JIT::emitLoadCharacterString): + (JSC::JIT::restoreArgumentReferenceForTrampoline): + (JSC::JIT::checkStructure): + (JSC::JIT::setSamplingFlag): + (JSC::JIT::clearSamplingFlag): + (JSC::JIT::emitCount): + (JSC::JIT::sampleInstruction): + (JSC::JIT::sampleCodeBlock): + (JSC::JIT::emitStoreInt32): + (JSC::JIT::emitStoreCell): + (JSC::JIT::emitStoreBool): + (JSC::JIT::emitJumpSlowCaseIfNotJSCell): + (JSC::JIT::emitInitRegister): + (JSC::JIT::emitJumpIfJSCell): + (JSC::JIT::emitJumpIfNotJSCell): + (JSC::JIT::emitJumpIfImmediateInteger): + (JSC::JIT::emitJumpIfNotImmediateInteger): + (JSC::JIT::emitFastArithDeTagImmediate): + (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero): + (JSC::JIT::emitFastArithReTagImmediate): + (JSC::JIT::emitTagAsBoolImmediate): * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_eq): - (JSC::JIT::emit_op_neq): - (JSC::JIT::compileOpStrictEq): + (JSC::JIT::privateCompileCTIMachineTrampolines): + (JSC::JIT::privateCompileCTINativeCall): + (JSC::JIT::emit_op_check_has_instance): + (JSC::JIT::emit_op_instanceof): + (JSC::JIT::emit_op_ret_object_or_this): + (JSC::JIT::emit_op_resolve): + (JSC::JIT::emit_op_to_primitive): + (JSC::JIT::emit_op_resolve_base): + (JSC::JIT::emit_op_ensure_property_exists): + (JSC::JIT::emit_op_resolve_skip): + (JSC::JIT::emit_op_resolve_global): + (JSC::JIT::emitSlow_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_jsr): + (JSC::JIT::emit_op_resolve_with_base): + (JSC::JIT::emit_op_new_func_exp): + (JSC::JIT::emit_op_jtrue): + (JSC::JIT::emit_op_get_pnames): + (JSC::JIT::emit_op_next_pname): + (JSC::JIT::emit_op_to_jsnumber): + (JSC::JIT::emit_op_push_new_scope): + (JSC::JIT::emit_op_catch): (JSC::JIT::emit_op_eq_null): (JSC::JIT::emit_op_neq_null): + (JSC::JIT::emit_op_init_lazy_reg): + (JSC::JIT::emit_op_convert_this): + (JSC::JIT::emit_op_convert_this_strict): + (JSC::JIT::emitSlow_op_not): + (JSC::JIT::emitSlow_op_neq): + (JSC::JIT::emit_op_get_arguments_length): + (JSC::JIT::emitSlow_op_get_arguments_length): + (JSC::JIT::emit_op_get_argument_by_val): + (JSC::JIT::emitSlow_op_resolve_global_dynamic): + (JSC::JIT::emit_op_new_regexp): + (JSC::JIT::emit_op_load_varargs): + (JSC::JIT::emitSlow_op_load_varargs): + (JSC::JIT::emit_op_new_func): * jit/JITOpcodes32_64.cpp: + (JSC::JIT::privateCompileCTIMachineTrampolines): + (JSC::JIT::privateCompileCTINativeCall): + (JSC::JIT::emit_op_loop_if_lesseq): + (JSC::JIT::emit_op_check_has_instance): + (JSC::JIT::emit_op_instanceof): + (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_tear_off_arguments): + (JSC::JIT::emit_op_resolve): + (JSC::JIT::emit_op_to_primitive): + (JSC::JIT::emit_op_resolve_base): + (JSC::JIT::emit_op_ensure_property_exists): + (JSC::JIT::emit_op_resolve_skip): + (JSC::JIT::emit_op_resolve_global): + (JSC::JIT::emitSlow_op_resolve_global): + (JSC::JIT::emit_op_not): + (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_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): + (JSC::JIT::emit_op_resolve_with_base): + (JSC::JIT::emit_op_new_func_exp): + (JSC::JIT::emit_op_get_pnames): + (JSC::JIT::emit_op_next_pname): + (JSC::JIT::emit_op_to_jsnumber): + (JSC::JIT::emit_op_push_new_scope): + (JSC::JIT::emit_op_catch): + (JSC::JIT::emit_op_create_activation): + (JSC::JIT::emit_op_create_arguments): + (JSC::JIT::emit_op_convert_this): + (JSC::JIT::emit_op_convert_this_strict): + (JSC::JIT::emit_op_get_arguments_length): + (JSC::JIT::emitSlow_op_get_arguments_length): + (JSC::JIT::emit_op_get_argument_by_val): + (JSC::JIT::softModulo): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::stringGetByValStubGenerator): + (JSC::JIT::emit_op_get_by_val): + (JSC::JIT::emitSlow_op_get_by_val): + (JSC::JIT::emit_op_get_by_pname): + (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::emit_op_get_by_id): + (JSC::JIT::emit_op_put_by_id): + (JSC::JIT::emit_op_method_check): + (JSC::JIT::compileGetByIdHotPath): + (JSC::JIT::compileGetByIdSlowCase): + (JSC::JIT::emitSlow_op_put_by_id): + (JSC::JIT::testPrototype): + (JSC::JIT::privateCompilePutByIdTransition): + (JSC::JIT::privateCompilePatchGetArrayLength): + (JSC::JIT::privateCompileGetByIdProto): + (JSC::JIT::privateCompileGetByIdSelfList): + (JSC::JIT::privateCompileGetByIdProtoList): + (JSC::JIT::privateCompileGetByIdChainList): + (JSC::JIT::privateCompileGetByIdChain): + * jit/JITPropertyAccess32_64.cpp: + (JSC::JIT::emit_op_put_getter): + (JSC::JIT::emit_op_put_setter): + (JSC::JIT::emit_op_del_by_id): + (JSC::JIT::emit_op_get_by_id): + (JSC::JIT::emit_op_put_by_id): + (JSC::JIT::emit_op_method_check): + (JSC::JIT::stringGetByValStubGenerator): + (JSC::JIT::emit_op_get_by_val): + (JSC::JIT::emitSlow_op_get_by_val): + (JSC::JIT::emit_op_put_by_val): + (JSC::JIT::compileGetByIdHotPath): + (JSC::JIT::compileGetByIdSlowCase): + (JSC::JIT::emitSlow_op_put_by_id): + (JSC::JIT::testPrototype): + (JSC::JIT::privateCompilePutByIdTransition): + (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): + * jit/JITStubCall.h: + (JSC::JITStubCall::addArgument): + * jit/JITStubs.cpp: + (JSC::getPolymorphicAccessStructureListSlot): + (JSC::DEFINE_STUB_FUNCTION): + * jit/JSInterfaceJIT.h: + (JSC::JSInterfaceJIT::emitJumpIfNotJSCell): + (JSC::JSInterfaceJIT::emitLoadInt32): + (JSC::JSInterfaceJIT::emitLoadDouble): + * jit/SpecializedThunkJIT.h: + (JSC::SpecializedThunkJIT::SpecializedThunkJIT): + (JSC::SpecializedThunkJIT::loadJSStringArgument): + (JSC::SpecializedThunkJIT::tagReturnAsInt32): + (JSC::SpecializedThunkJIT::tagReturnAsJSCell): + * jit/ThunkGenerators.cpp: + (JSC::charToString): + (JSC::powThunkGenerator): + * yarr/YarrJIT.cpp: + (JSC::Yarr::YarrGenerator::matchCharacterClass): + (JSC::Yarr::YarrGenerator::storeToFrame): + (JSC::Yarr::YarrGenerator::storeToFrameWithPatch): + (JSC::Yarr::YarrGenerator::ParenthesesTail::generateCode): + (JSC::Yarr::YarrGenerator::generatePatternCharacterSingle): + (JSC::Yarr::YarrGenerator::generatePatternCharacterFixed): + (JSC::Yarr::YarrGenerator::generatePatternCharacterGreedy): + (JSC::Yarr::YarrGenerator::generatePatternCharacterNonGreedy): + (JSC::Yarr::YarrGenerator::generateCharacterClassFixed): + (JSC::Yarr::YarrGenerator::generateCharacterClassGreedy): + (JSC::Yarr::YarrGenerator::generateCharacterClassNonGreedy): + (JSC::Yarr::YarrGenerator::generateParenthesesSingle): + (JSC::Yarr::YarrGenerator::generateDisjunction): -2010-12-03 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoff Garen. - - Incorrect logic for returning memory at the end of linking. - Reviewed by Geoff Garen. - - At the end of linking we return any space at the end of the - allocated executable region that was saved due to branch - compaction. This is currently by done by subtracting the - different from the m_freePtr in the allocation pool. This - can be incorrect if your allocation was made from a new - page that was not selected for subsequent allocations. - - This patch corrects this behaviour by verifying that the - memory being returned actually comes from the current - allocation pool. - - * assembler/LinkBuffer.h: - (JSC::LinkBuffer::linkCode): - * jit/ExecutableAllocator.h: - (JSC::ExecutablePool::tryShrink): - -2010-12-03 Michael Saboff <msaboff@apple.com> - - Reviewed by Gavin Barraclough - - Changes to significantly reduce branches to branches in JIT'ed - parentheses backtrack processing. The changes include the following: - - Taking the backtracking processing out of line and adding it as - code at the end of the JIT'ed routine. - - Allow backtracks to be direct via an indirect branch for an address - pushed onto the stack. If the use of an indirect branch is from a - conditional jump, then we emit a trampoline at the end of the - routine. - - Propogate backtracks instead of adding trampolines. Backtracks are - propogated to where they are used. This change also eliminated - trampoline branch code that aren't used. - - Added global expression state to keep track of parentheses tail - code and indirect branches. - Other changes made to support these changes. - - Split invertOrCapture flag on Patterns to two separate flags. Added - getters for these flags. Rippled these changes to both the JIT - and interpreter code. - - Split BacktrackDestination out off TermGenerationState struct. - This is done to hold references to a backtrack for later code - generation. - https://bugs.webkit.org/show_bug.cgi?id=50295 - - * assembler/ARMAssembler.h: - (JSC::ARMAssembler::JmpDst::isSet): - * assembler/ARMv7Assembler.h: - (JSC::ARMv7Assembler::JmpDst::isSet): - * assembler/AbstractMacroAssembler.h: - (JSC::AbstractMacroAssembler::Label::isSet): - (JSC::AbstractMacroAssembler::DataLabelPtr::isUsed): - (JSC::AbstractMacroAssembler::DataLabelPtr::used): - (JSC::AbstractMacroAssembler::JumpList::clear): - * assembler/MIPSAssembler.h: - (JSC::MIPSAssembler::JmpDst::isSet): - * assembler/X86Assembler.h: - (JSC::X86Assembler::JmpDst::isSet): - * yarr/RegexCompiler.cpp: - (JSC::Yarr::RegexPatternConstructor::atomParenthesesSubpatternBegin): - (JSC::Yarr::RegexPatternConstructor::atomParentheticalAssertionBegin): - (JSC::Yarr::RegexPatternConstructor::atomBackReference): - (JSC::Yarr::RegexPatternConstructor::setupAlternativeBeginTerms): - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::ByteCompiler::atomParenthesesOnceBegin): - (JSC::Yarr::ByteCompiler::atomParenthesesTerminalBegin): - (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin): - (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin): - (JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd): - (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd): - (JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd): - (JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd): - (JSC::Yarr::ByteCompiler::emitDisjunction): - * yarr/RegexInterpreter.h: - (JSC::Yarr::ByteTerm::ByteTerm): - (JSC::Yarr::ByteTerm::BackReference): - (JSC::Yarr::ByteTerm::invert): - (JSC::Yarr::ByteTerm::capture): - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::IndirectJumpEntry::IndirectJumpEntry): - (JSC::Yarr::RegexGenerator::IndirectJumpEntry::addJump): - (JSC::Yarr::RegexGenerator::GenerationState::GenerationState): - (JSC::Yarr::RegexGenerator::GenerationState::addIndirectJumpEntry): - (JSC::Yarr::RegexGenerator::GenerationState::emitIndirectJumpTable): - (JSC::Yarr::RegexGenerator::GenerationState::addParenthesesTail): - (JSC::Yarr::RegexGenerator::GenerationState::emitParenthesesTail): - (JSC::Yarr::RegexGenerator::GenerationState::addJumpToNextInteration): - (JSC::Yarr::RegexGenerator::GenerationState::addJumpsToNextInteration): - (JSC::Yarr::RegexGenerator::GenerationState::addDataLabelToNextIteration): - (JSC::Yarr::RegexGenerator::GenerationState::linkToNextIteration): - (JSC::Yarr::RegexGenerator::BacktrackDestination::BacktrackDestination): - (JSC::Yarr::RegexGenerator::BacktrackDestination::clear): - (JSC::Yarr::RegexGenerator::BacktrackDestination::clearDataLabel): - (JSC::Yarr::RegexGenerator::BacktrackDestination::haveDestination): - (JSC::Yarr::RegexGenerator::BacktrackDestination::isStackOffset): - (JSC::Yarr::RegexGenerator::BacktrackDestination::isLabel): - (JSC::Yarr::RegexGenerator::BacktrackDestination::isJumpList): - (JSC::Yarr::RegexGenerator::BacktrackDestination::haveDataLabel): - (JSC::Yarr::RegexGenerator::BacktrackDestination::copyTarget): - (JSC::Yarr::RegexGenerator::BacktrackDestination::copyTo): - (JSC::Yarr::RegexGenerator::BacktrackDestination::addBacktrackJump): - (JSC::Yarr::RegexGenerator::BacktrackDestination::setStackOffset): - (JSC::Yarr::RegexGenerator::BacktrackDestination::setLabel): - (JSC::Yarr::RegexGenerator::BacktrackDestination::setNextBacktrackLabel): - (JSC::Yarr::RegexGenerator::BacktrackDestination::setBacktrackToLabel): - (JSC::Yarr::RegexGenerator::BacktrackDestination::setBacktrackJumpList): - (JSC::Yarr::RegexGenerator::BacktrackDestination::setBacktrackSourceLabel): - (JSC::Yarr::RegexGenerator::BacktrackDestination::setDataLabel): - (JSC::Yarr::RegexGenerator::BacktrackDestination::setSubDataLabelPtr): - (JSC::Yarr::RegexGenerator::BacktrackDestination::linkToNextBacktrack): - (JSC::Yarr::RegexGenerator::BacktrackDestination::getStackOffset): - (JSC::Yarr::RegexGenerator::BacktrackDestination::getLabel): - (JSC::Yarr::RegexGenerator::BacktrackDestination::getBacktrackJumps): - (JSC::Yarr::RegexGenerator::BacktrackDestination::getDataLabel): - (JSC::Yarr::RegexGenerator::BacktrackDestination::jumpToBacktrack): - (JSC::Yarr::RegexGenerator::BacktrackDestination::linkDataLabelToHereIfExists): - (JSC::Yarr::RegexGenerator::BacktrackDestination::plantJumpToBacktrackIfExists): - (JSC::Yarr::RegexGenerator::BacktrackDestination::linkAlternativeBacktracks): - (JSC::Yarr::RegexGenerator::BacktrackDestination::linkAlternativeBacktracksTo): - (JSC::Yarr::RegexGenerator::TermGenerationState::TermGenerationState): - (JSC::Yarr::RegexGenerator::TermGenerationState::resetAlternative): - (JSC::Yarr::RegexGenerator::TermGenerationState::isLastAlternative): - (JSC::Yarr::RegexGenerator::TermGenerationState::clearBacktrack): - (JSC::Yarr::RegexGenerator::TermGenerationState::jumpToBacktrack): - (JSC::Yarr::RegexGenerator::TermGenerationState::plantJumpToBacktrackIfExists): - (JSC::Yarr::RegexGenerator::TermGenerationState::linkDataLabelToBacktrackIfExists): - (JSC::Yarr::RegexGenerator::TermGenerationState::addBacktrackJump): - (JSC::Yarr::RegexGenerator::TermGenerationState::setDataLabelPtr): - (JSC::Yarr::RegexGenerator::TermGenerationState::setBackTrackStackOffset): - (JSC::Yarr::RegexGenerator::TermGenerationState::setBacktrackLabel): - (JSC::Yarr::RegexGenerator::TermGenerationState::linkAlternativeBacktracks): - (JSC::Yarr::RegexGenerator::TermGenerationState::linkAlternativeBacktracksTo): - (JSC::Yarr::RegexGenerator::TermGenerationState::setBacktrackLink): - (JSC::Yarr::RegexGenerator::TermGenerationState::chainBacktracks): - (JSC::Yarr::RegexGenerator::TermGenerationState::chainBacktrackJumps): - (JSC::Yarr::RegexGenerator::TermGenerationState::getBacktrackDestination): - (JSC::Yarr::RegexGenerator::TermGenerationState::propagateBacktrackingFrom): - (JSC::Yarr::RegexGenerator::ParenthesesTail::ParenthesesTail): - (JSC::Yarr::RegexGenerator::ParenthesesTail::processBacktracks): - (JSC::Yarr::RegexGenerator::ParenthesesTail::setNextIteration): - (JSC::Yarr::RegexGenerator::ParenthesesTail::generateCode): - (JSC::Yarr::RegexGenerator::generateAssertionBOL): - (JSC::Yarr::RegexGenerator::generateAssertionEOL): - (JSC::Yarr::RegexGenerator::generateAssertionWordBoundary): - (JSC::Yarr::RegexGenerator::generatePatternCharacterSingle): - (JSC::Yarr::RegexGenerator::generatePatternCharacterPair): - (JSC::Yarr::RegexGenerator::generatePatternCharacterFixed): - (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy): - (JSC::Yarr::RegexGenerator::generatePatternCharacterNonGreedy): - (JSC::Yarr::RegexGenerator::generateCharacterClassSingle): - (JSC::Yarr::RegexGenerator::generateCharacterClassFixed): - (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy): - (JSC::Yarr::RegexGenerator::generateCharacterClassNonGreedy): - (JSC::Yarr::RegexGenerator::generateParenthesesDisjunction): - (JSC::Yarr::RegexGenerator::generateParenthesesSingle): - (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack): - (JSC::Yarr::RegexGenerator::generateParentheticalAssertion): - (JSC::Yarr::RegexGenerator::generateDisjunction): - (JSC::Yarr::RegexGenerator::compile): - * yarr/RegexPattern.h: - (JSC::Yarr::PatternTerm::PatternTerm): - (JSC::Yarr::PatternTerm::invert): - (JSC::Yarr::PatternTerm::capture): - -2010-12-03 Chris Rogers <crogers@google.com> - - Reviewed by Kenneth Russell. - - First steps to adding web audio files to build systems - https://bugs.webkit.org/show_bug.cgi?id=49952 - - * wtf/Complex.h: - -2010-12-03 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Andreas Kling. - - Move StringWx.cpp into wtf directory - https://bugs.webkit.org/show_bug.cgi?id=50060 - - * wtf/wx/StringWx.cpp: Renamed from WebCore/platform/text/wx/StringWx.cpp. - (WTF::String::String): - -2010-12-03 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Andreas Kling. - - Move StringBrew.cpp into wtf directory - https://bugs.webkit.org/show_bug.cgi?id=50058 - - * wtf/brew/StringBrew.cpp: Renamed from WebCore/platform/text/brew/StringBrew.cpp. - (WTF::String::String): - -2010-12-03 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Andreas Kling. - - Move StringHaiku.cpp into wtf directory - https://bugs.webkit.org/show_bug.cgi?id=50057 - - * wtf/haiku/StringHaiku.cpp: Renamed from WebCore/platform/text/haiku/StringHaiku.cpp. - (WTF::String::String): - (WTF::String::operator BString): - -2010-12-02 Geoffrey Garen <ggaren@apple.com> - - Try to fix Windows build. - - * runtime/GCActivityCallback.cpp: - (JSC::DefaultGCActivityCallback::synchronize): Added a non-CF implementation. - -2010-12-02 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Gavin Barraclough. +2011-03-28 Andras Becsi <abecsi@webkit.org> - Fixed <rdar://problem/8310571> CrashTracer: 60 crashes in Photo Booth at - com.apple.JavaScriptCore: JSC::Heap::markRoots + 746 - - * API/APIShims.h: - (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): Call our new - synchronize() function. + Reviewed by Csaba Osztrogonác. - * runtime/Collector.cpp: - (JSC::Heap::activityCallback): - * runtime/Collector.h: Added an activityCallback() accessor, for the - call above. + [Qt] Fix the linking of jsc with MinGW after r81963. - * runtime/GCActivityCallback.h: - (JSC::GCActivityCallback::synchronize): - * runtime/GCActivityCallbackCF.cpp: - (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback): - (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback): - (JSC::DefaultGCActivityCallback::operator()): - (JSC::DefaultGCActivityCallback::synchronize): Track the run loop we're - scheduled in. If we begin/resume execution within a new run loop, reschedule - on it. This prevents a crash when using a lockless context group on - multiple threads -- the crash would happen if the GC timer scheduled on - thread A, then you continued execution on thread B, then the thread A - timer fired. + * jsc.pro: add -l and remove the lib suffix. -2010-12-02 Darin Adler <darin@apple.com> +2011-03-27 Ben Taylor <bentaylor.solx86@gmail.com> - * wtf/ASCIICType.h: Fix wrong type from last check-in. + Reviewed by Alexey Proskuryakov. -2010-12-02 Darin Adler <darin@apple.com> + https://bugs.webkit.org/show_bug.cgi?id=57170 Fix last elements + in an enum to remove a trailing comma. Sun Studio 12 CC errors out. - Try to fix certain builds (Qt Windows). + Compile fix only, no actual code change. - * wtf/ASCIICType.h: Added an overload for unsigned because in obsolete - versions of ICU, UChar32 can be a typedef for unsigned. Adding this - overload should make us compatible with these old ICUs. + * wtf/MessageQueue.h: -2010-12-02 Patrick Gansterer <paroga@webkit.org> +2011-03-25 Oliver Hunt <oliver@apple.com> Reviewed by Darin Adler. - Add AtomicString::fromUTF8 - https://bugs.webkit.org/show_bug.cgi?id=45594 - - Unicode::calculateStringHashFromUTF8 creates a StringHash out of UTF8 input data and - calculates the required length for the UTF16 conversation in one step. - This is then used in a specialized translator for the string table of AtomicString. - - * JavaScriptCore.exp: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * wtf/text/AtomicString.cpp: - (WTF::CStringTranslator::equal): - (WTF::HashAndUTF8CharactersTranslator::hash): - (WTF::HashAndUTF8CharactersTranslator::equal): - (WTF::HashAndUTF8CharactersTranslator::translate): - (WTF::AtomicString::add): - (WTF::AtomicString::addSlowCase): - (WTF::AtomicString::find): - (WTF::AtomicString::fromUTF8): - * wtf/text/AtomicString.h: - * wtf/text/StringImpl.h: - * wtf/text/WTFString.h: - * wtf/unicode/UTF8.cpp: - (WTF::Unicode::readUTF8Sequence): - (WTF::Unicode::convertUTF8ToUTF16): - (WTF::Unicode::calculateStringHashFromUTF8): - (WTF::Unicode::equalUTF16WithUTF8): - * wtf/unicode/UTF8.h: - -2010-12-02 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Sam Weinig. + Allow defineOwnProperty to work on DOMObjects + https://bugs.webkit.org/show_bug.cgi?id=57129 - Added a little hardening to OSAllocator. + Fix a couple of places where we uses getter()/setter() rather + than [gs]etterPresent(). - * wtf/OSAllocatorPosix.cpp: - (WTF::OSAllocator::release): - * wtf/OSAllocatorWin.cpp: - (WTF::OSAllocator::reserve): - (WTF::OSAllocator::reserveAndCommit): - (WTF::OSAllocator::commit): - (WTF::OSAllocator::decommit): - (WTF::OSAllocator::release): CRASH() if the OS's virtual memory system - reports an error. + * runtime/JSObject.cpp: + (JSC::JSObject::defineOwnProperty): -2010-12-02 Csaba Osztrogonác <ossy@webkit.org> +2011-03-25 Geoffrey Garen <ggaren@apple.com> - Reviewed by Geoffrey Garen. + Reviewed by Oliver Hunt. - [Qt] Make platform managing of OSAllocator better than r73106 - https://bugs.webkit.org/show_bug.cgi?id=50385 + Crash when paused at a breakpoint caused by inaccurate Activation records. + https://bugs.webkit.org/show_bug.cgi?id=57120 - * wtf/OSAllocatorPosix.cpp: Remove platform specific guard. - * wtf/OSAllocatorSymbian.cpp: Remove platform specific guard. - * wtf/OSAllocatorWin.cpp: Remove platform specific guard. - * wtf/wtf.pri: Add the correct platform specific source file instead of all of them. + * runtime/JSActivation.cpp: + (JSC::JSActivation::symbolTableGet): + (JSC::JSActivation::symbolTablePut): + (JSC::JSActivation::getOwnPropertyNames): + (JSC::JSActivation::symbolTablePutWithAttributes): -2010-12-02 Patrick Gansterer <paroga@webkit.org> +2011-03-24 Geoffrey Garen <ggaren@apple.com> - Reviewed by Andreas Kling. + Reviewed by Oliver Hunt. - [WINCE] Use GetTickCount() for srand() - https://bugs.webkit.org/show_bug.cgi?id=50338 + Crash in debugger beneath MarkStack::drain @ me.com, ibm.com + https://bugs.webkit.org/show_bug.cgi?id=57080 + <rdar://problem/8525907> - time() is not a native function on WinCE, so use GetTickCount() instead. + The crash was caused by changes in the executable after recompilation. - * wtf/RandomNumberSeed.h: - (WTF::initializeRandomNumberGenerator): + The fix is for the activation to copy the data it needs instead of + relying on the data in the executable. + + SunSpider and v8 report no change. -2010-12-02 Norbert Leser <norbert.leser@nokia.com> + * runtime/Arguments.h: + (JSC::JSActivation::copyRegisters): Use our own data members instead of + reading data out of the executable. - Reviewed by Laszlo Gombos. + * runtime/JSActivation.cpp: + (JSC::JSActivation::JSActivation): Initialize our data members. - [Qt] [Symbian] Reintroduce compiler optimizations for JSC - https://bugs.webkit.org/show_bug.cgi?id=50270 + (JSC::JSActivation::markChildren): + (JSC::JSActivation::symbolTableGet): + (JSC::JSActivation::symbolTablePut): + (JSC::JSActivation::getOwnPropertyNames): + (JSC::JSActivation::symbolTablePutWithAttributes): + (JSC::JSActivation::isDynamicScope): + (JSC::JSActivation::argumentsGetter): Use our own data members instead of + reading data out of the executable. - Add compiler optimization (symbian ARM target) which was lost after split from WebCore. - Tested via Sunspider and V8 - both of which show significant performance improvement. + * runtime/JSActivation.h: Added new data members to track data previously + tracked by the executable. Since I've removed the executable pointer, + on a 64bit system, I've only made activations bigger by an int. - * JavaScriptCore.pro: +2011-03-25 David Kilzer <ddkilzer@apple.com> -2010-12-02 Peter Varga <pvarga@inf.u-szeged.hu> + Remove duplicate entry from JavaScriptCore.exp - Reviewed by Gavin Barraclough. + JSC::createStackOverflowError(JSC::ExecState*) was originally + exported in r60057, then duplicated in r60392. - Move regex parsing and fallback handling to runtime/RegExp.cpp - https://bugs.webkit.org/show_bug.cgi?id=50015 + * JavaScriptCore.exp: Removed duplicate entry. - * runtime/RegExp.cpp: - (JSC::RegExp::RegExp): - (JSC::RegExp::create): - (JSC::RegExp::compile): - (JSC::RegExp::match): - (JSC::RegExp::printTraceData): - * runtime/RegExp.h: - (JSC::RegExp::pattern): - * yarr/RegexInterpreter.cpp: - * yarr/RegexInterpreter.h: - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::compile): - (JSC::Yarr::jitCompileRegex): - * yarr/RegexJIT.h: - (JSC::Yarr::RegexCodeBlock::RegexCodeBlock): - (JSC::Yarr::RegexCodeBlock::setFallBack): - (JSC::Yarr::RegexCodeBlock::isFallBack): - (JSC::Yarr::executeRegex): +2011-03-25 Jarred Nicholls <jarred@sencha.com> -2010-12-01 Geoffrey Garen <ggaren@apple.com> + Reviewed by Ariya Hidayat. - Try to fix the GTK build. + [Qt] MSVC Build Error - need to link advapi32.lib for jsc.exe + https://bugs.webkit.org/show_bug.cgi?id=56098 - * GNUmakefile.am: Use a full path to OSAllocator*.cpp. + Need to link advapi32.lib for jsc.exe since wtf/OSRandomSource.cpp uses the Win32 Crypto API -2010-12-01 Geoffrey Garen <ggaren@apple.com> + * jsc.pro: - Try to fix the EFL Linux build. +2011-03-24 Nikolas Zimmermann <nzimmermann@rim.com> - * CMakeListsEfl.txt: Added OSAllocator to the project. + Reviewed by Darin Adler. -2010-12-01 Geoffrey Garen <ggaren@apple.com> + Introduce WTF HexNumber.h + https://bugs.webkit.org/show_bug.cgi?id=56099 - Try to fix the Qt build: Include all OS files for Qt's sake, and then - use #ifdefs in the files to exclude things based on OS. - - This is a pretty bad way to manage platforms -- hopefully we can - fix the Qt build system and move away from this in the future. + Introduce a set of functions that ease converting from a bye or a number to a hex string, + replacing several of these conversions and String::format("%x") usages all over WebCore. - * wtf/OSAllocatorPosix.cpp: - * wtf/OSAllocatorSymbian.cpp: - * wtf/OSAllocatorWin.cpp: - * wtf/wtf.pri: + * GNUmakefile.am: Add HexNumber.h to build. + * JavaScriptCore.exp: Export StringBuilder::reserveCapacity. + * JavaScriptCore.gypi: Add HexNumber.h to build. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export StringBuilder::reserveCapacity. + * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add HexNumber.h to build. + * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. + * wtf/CMakeLists.txt: Ditto. + * wtf/HexNumber.h: Added. + (WTF::Internal::hexDigitsForMode): Internal helper. + (WTF::appendByteAsHex): Free function, that appends a byte as hex string into a destination. + (WTF::placeByteAsHex): Ditto, but places the result using *foo++ = '..' or foo[index++] = '..' + (WTF::appendUnsignedAsHex): Free function, that appends a number as hex string into a destination. -2010-12-01 Geoffrey Garen <ggaren@apple.com> +2011-03-24 Geoffrey Garen <ggaren@apple.com> - Try to fix the Chromium build. + Windows build fix take 2: Add new symobl. - * JavaScriptCore.gypi: This is a Windows build file, so use OSAllocatorWin.cpp. + (I should have used the EWS bots for this!) -2010-12-01 Geoffrey Garen <ggaren@apple.com> - - Try to fix the GTK build. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * GNUmakefile.am: Added OSAllocator to another project. +2011-03-24 Geoffrey Garen <ggaren@apple.com> -2010-12-01 Geoffrey Garen <ggaren@apple.com> + Windows build fix take 1: Removed old symobl. - Try to fix the GTK Linux build. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * JavaScriptCore.gypi: Added OSAllocator to the project. +2011-03-24 Geoffrey Garen <ggaren@apple.com> -2010-12-01 Geoffrey Garen <ggaren@apple.com> + Reviewed by Oliver Hunt. - Try to fix the Qt Linux build. + Ensure that all compilation takes place within a dynamic global object scope + https://bugs.webkit.org/show_bug.cgi?id=57054 + <rdar://problem/9083011> - * wtf/OSAllocatorPosix.cpp: Use the right errno.h. + Otherwise, entry to the global object scope might throw away the code + we just compiled, causing a crash. -2010-12-01 Geoffrey Garen <ggaren@apple.com> + * JavaScriptCore.exp: Updated for signature change. - Try to fix Windows build: export some more symbols. + * debugger/Debugger.cpp: + (JSC::evaluateInGlobalCallFrame): + * debugger/DebuggerCallFrame.cpp: + (JSC::DebuggerCallFrame::evaluate): Removed explicit compilation calls + here because (a) they took place outside a dynamic global object scope + and (b) they were redundant. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * interpreter/CachedCall.h: + (JSC::CachedCall::CachedCall): Updated for signature change. -2010-12-01 Geoffrey Garen <ggaren@apple.com> + * interpreter/Interpreter.cpp: + (JSC::Interpreter::execute): + (JSC::Interpreter::executeCall): + (JSC::Interpreter::executeConstruct): Declare our dynamic global object + scope earlier, to ensure that compilation takes place within it. - Try to fix the Qt Linux build. + * runtime/Completion.cpp: + (JSC::evaluate): Removed explicit compilation calls here because (a) + they took place outside a dynamic global object scope and (b) they were + redundant. - * wtf/wtf.pri: Use the POSIX OSAllocator for Qt Linux. + * runtime/Executable.h: + (JSC::EvalExecutable::compile): + (JSC::ProgramExecutable::compile): + (JSC::FunctionExecutable::compileForCall): + (JSC::FunctionExecutable::compileForConstruct): Added an ASSERT to + verify our new invariant that all compilation takes place within a + dynamic global object scope. -2010-12-01 Geoffrey Garen <ggaren@apple.com> + * runtime/JSGlobalObject.cpp: + (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): + * runtime/JSGlobalObject.h: Changed the signature of DynamicGlobalObjectScope + to require a JSGlobalData instead of an ExecState* since it is often + easier to provide the former, and the latter was not necessary. - Windows build fix: commit doesn't have a return value. +2011-03-24 Oliver Hunt <oliver@apple.com> - * wtf/OSAllocatorWin.cpp: - (WTF::OSAllocator::commit): + Reviewed by Geoffrey Garen. -2010-12-01 Geoffrey Garen <ggaren@apple.com> + REGRESSION (r79987-r80210): Crash in JSWeakObjectMapClear + https://bugs.webkit.org/show_bug.cgi?id=55671 - Build fix: Export some symbols. + This is no longer necessary, and it seems that with the new weakmap + model it's simply unsafe, so this reduces it to a no-op. - * JavaScriptCore.exp: + * API/JSWeakObjectMapRefPrivate.cpp: -2010-12-01 Geoffrey Garen <ggaren@apple.com> +2011-03-24 Ben Taylor <bentaylor.solx86@gmail.com> - Build fix. + Reviewed by Darin Adler. - * JavaScriptCore.xcodeproj/project.pbxproj: Export OSAllocator.h as private - so other projects can see it. + https://bugs.webkit.org/show_bug.cgi?id=20302 + Correct implementation of signbit on Solaris - * wtf/OSAllocatorPosix.cpp: #include UnusedParam.h for UNUSED_PARAM. + * wtf/MathExtras.h: + (signbit): -2010-12-01 Geoffrey Garen <ggaren@apple.com> +2011-03-23 Mark Rowe <mrowe@apple.com> - Reviewed by Sam Weinig. - - Baby step toward a cross-platform virtual memory abstraction: created - an all-static OSAllocator class and changed MarkStack to use it. + Reviewed by Darin Adler. - * JavaScriptCore.exp: These functions are inlined now. + <rdar://problem/7959320> Threads that use APIs above the BSD layer must be registered with the Obj-C GC. - * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added OSAllocatorWin.cpp. + * wtf/ThreadingPthreads.cpp: + (WTF::initializeCurrentThreadInternal): - * JavaScriptCore.xcodeproj/project.pbxproj: Added OSAllocatorPosix.cpp. +2011-03-23 Mark Rowe <mrowe@apple.com> - * runtime/MarkStack.h: - (JSC::MarkStack::allocateStack): - (JSC::MarkStack::releaseStack): Use OSAllocator instead of rolling our - own platform-specific code. + Stop setting OTHER_OPTIONS in JavaScriptCore's Makefile. - * runtime/MarkStackNone.cpp: Removed. Nothing used this. + It's not necessary to pass "-target All" as xcodebuild always builds the + first target in the project unless otherwise specified. The presence of + that option also breaks "make clean" since that results in both the + -target and -alltargets options being passed to xcodebuild. - * runtime/MarkStackPosix.cpp: - * runtime/MarkStackSymbian.cpp: - * runtime/MarkStackWin.cpp: Removed custom platform-specific code, since - we use the OSAllocator abstraction now. + * Makefile: - * wtf/OSAllocator.h: Added. - * wtf/OSAllocatorPosix.cpp: Added. - (WTF::OSAllocator::reserve): - (WTF::OSAllocator::reserveAndCommit): - (WTF::OSAllocator::commit): - (WTF::OSAllocator::decommit): - (WTF::OSAllocator::release): - * wtf/OSAllocatorSymbian.cpp: Added. - (WTF::OSAllocator::reserve): - (WTF::OSAllocator::reserveAndCommit): - (WTF::OSAllocator::commit): - (WTF::OSAllocator::decommit): - (WTF::OSAllocator::release): - * wtf/OSAllocatorWin.cpp: Added. - (WTF::OSAllocator::reserve): - (WTF::OSAllocator::reserveAndCommit): - (WTF::OSAllocator::commit): - (WTF::OSAllocator::decommit): - (WTF::OSAllocator::release): The new OSAllocator abstraction. +2011-03-23 Pavel Feldman <pfeldman@chromium.org> - * wtf/wtf.pri: Added OSAllocatorSymbian.cpp. + Not reviewed: bring back Vector::contains that was removed as a part of roll back. -2010-12-01 Steve Falkenburg <sfalken@apple.com> + * wtf/Vector.h: + (WTF::::contains): - Reviewed by Adam Roben. +2011-03-23 Sheriff Bot <webkit.review.bot@gmail.com> - WinCairo build should not use link-time code generation (LTCG) - https://bugs.webkit.org/show_bug.cgi?id=50353 + Unreviewed, rolling out r81686. + http://trac.webkit.org/changeset/81686 + https://bugs.webkit.org/show_bug.cgi?id=56914 - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * JavaScriptCore.vcproj/jsc/jsc.vcproj: - * JavaScriptCore.vcproj/testapi/testapi.vcproj: - -010-12-01 Steve Falkenburg <sfalken@apple.com> - - Reviewed by Adam Roben. + Breaks webkit_tests in Chromium again. (Requested by pfeldman + on #webkit). - vcproj changes can't be applied cleanly by the Windows EWS bot - https://bugs.webkit.org/show_bug.cgi?id=50328 - - * JavaScriptCore.vcproj/JavaScriptCore.sln: Modified property svn:eol-style. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Modified property svn:eol-style. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCF.vsprops: Added property svn:eol-style. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops: Added property svn:eol-style. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Added property svn:eol-style. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Modified property svn:eol-style. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Added property svn:eol-style. - * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Modified property svn:eol-style. - * JavaScriptCore.vcproj/WTF/WTF.vcproj: Modified property svn:eol-style. - * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: Added property svn:eol-style. - * JavaScriptCore.vcproj/jsc/jsc.vcproj: Modified property svn:eol-style. - * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added property svn:eol-style. - * JavaScriptCore.vcproj/testapi/testapi.vcproj: Modified property svn:eol-style. - * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Added property svn:eol-style. - -2010-12-01 Gavin Barraclough <barraclough@apple.com> + * wtf/Vector.h: - Reviewed by Sam Weinig. +2011-03-23 Adam Barth <abarth@webkit.org> - Bug 50298 - /()()()()()()()()()(?:(\10a|b)(X|Y))+/.exec("bXXaYYaY") ASSERTs + Reviewed by Eric Seidel. - For unmatched subpattens we previously used to set the subpattern end to -1, - but now we only set the start value. E.g. consider the following: - /a(b)?c/.exec("ac"); - Previously we would generate an internal results array of: - [ 0, 2, -1, -1 ] - Since fairly recently we have generated results of: - [ 0, 2, -1, ??? ] - (With the end index of the subpattern uninitialized). + JavaScriptCore GYP build should work on a case-sensitive file system + https://bugs.webkit.org/show_bug.cgi?id=56911 - Update these ASSERTs to account for this. + The issue is that there are two UString.h headers, one named UString.h + and one named ustring.h. This patch excludes ustring.h from the header + map to avoid confusion. While I was editing this part of the GYP file, + I cleaned up the exclude rules to be more modern. - Also, when stripping out self-referencing backreferences, (e.g. /(\1)/) we - were checking the wrong property on the pattern term. We should have been - looking at term.parentheses.subpatternId, but instead were checking - term.subpatternId. The latter is actually only the subpatternId for - back reference terms. Rename this to backReferenceSubpatternId. + * gyp/JavaScriptCore.gyp: - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::Interpreter::matchBackReference): - (JSC::Yarr::Interpreter::backtrackBackReference): +2011-03-22 Geoffrey Garen <ggaren@apple.com> -2010-11-30 Gavin Barraclough <barraclough@apple.com> + Reviewed by Maciej Stachowiak. - Rubber stamped by Sam Weinig. + REGRESSION (r78382): No scripts appear in the Web Inspector's Scripts + panel on Windows, and many inspector regression tests are failing + https://bugs.webkit.org/show_bug.cgi?id=54490 + + The bug was caused by two different classes using the same name (Recompiler). - Bug 50297 - \s in YARR should match BOMs. + * debugger/Debugger.cpp: + * runtime/JSGlobalData.cpp: + (WTF::Recompiler::operator()): Put Recompiler in an anonymous namespace, + so our two recompilers' inline functions don't stomp each other at + link time. - From section 15.10.2.12 CharacterClassEscape contains: +2011-03-22 Sam Weinig <sam@webkit.org> - The production CharacterClassEscape :: s evaluates by returning the set of characters containing the - characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions. + Reviewed by Mark Rowe. - Table 2 in section 7.2 contains: + Remove USE_WK_SCROLLBAR_PAINTER_AND_CONTROLLER. + <rdar://problem/8944718> - \uFEFF Byte Order Mark <BOM> + * DerivedSources.make: + Remove generation of USE_WK_SCROLLBAR_PAINTER_AND_CONTROLLER. - * create_regex_tables: - Add BOM to spaces table. +2011-03-22 Gabor Loki <loki@webkit.org> -2010-11-30 Gavin Barraclough <barraclough@apple.com> + Reviewed by Csaba Osztrogonác. - Reviewed by Darin Adler. + [Qt] Add DFG module to build system (disabled by default). + https://bugs.webkit.org/show_bug.cgi?id=56845 - Fixed review comments following bug #48101. - Mostly typos, plus gave quantifyInfinite a symbolic name. - - * yarr/RegexCompiler.cpp: - (JSC::Yarr::RegexPatternConstructor::quantifyAtom): - (JSC::Yarr::RegexPatternConstructor::checkForTerminalParentheses): - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd): - (JSC::Yarr::Interpreter::matchParenthesesTerminalBegin): - (JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin): - (JSC::Yarr::Interpreter::backtrackParenthesesTerminalEnd): - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy): - (JSC::Yarr::RegexGenerator::generatePatternCharacterNonGreedy): - (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy): - * yarr/RegexParser.h: - (JSC::Yarr::Parser::parseTokens): - (JSC::Yarr::parse): - -2010-11-30 Steve Falkenburg <sfalken@apple.com> + * JavaScriptCore.pri: + * JavaScriptCore.pro: - Reviewed by Darin Adler. +2011-03-22 Eric Seidel <eric@webkit.org> - WTF project missing build-stopping code from its pre-build event - https://bugs.webkit.org/show_bug.cgi?id=50281 + Reviewed by Adam Barth. - * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: + Add support to build-webkit for building with gyp-generated project files + https://bugs.webkit.org/show_bug.cgi?id=56877 -2010-11-30 Patrick Gansterer <paroga@webkit.org> + Found a couple missing Private headers while trying to make WebCore build. - Reviewed by Darin Adler. + * JavaScriptCore.gypi: - Cleanup UTF8.cpp - https://bugs.webkit.org/show_bug.cgi?id=49581 +2011-03-22 Eric Seidel <eric@webkit.org> - Use macros and functions instead of range values directly. + Reviewed by Adam Barth. - * wtf/unicode/UTF8.cpp: - (WTF::Unicode::inlineUTF8SequenceLength): - (WTF::Unicode::UTF8SequenceLength): - (WTF::Unicode::convertUTF16ToUTF8): - (WTF::Unicode::readUTF8Sequence): - (WTF::Unicode::convertUTF8ToUTF16): - * wtf/unicode/UnicodeMacrosFromICU.h: Added U_IS_SUPPLEMENTARY macro. + Make it possible to build JavaScriptCore and WebCore gyp builds outside of Source + https://bugs.webkit.org/show_bug.cgi?id=56867 -2010-11-30 Geoffrey Garen <ggaren@apple.com> + This should make it possible to build the gyp-generated JavaScriptCore.xcodeproj + from a JavaScriptCore directory outside of Source. - Reviewed by Gavin Barraclough. + * gyp/JavaScriptCore.gyp: + * gyp/run-if-exists.sh: Added. + * gyp/update-info-plist.sh: Added. - Fixed a crash seen when using a PageAllocation to store itself. +2011-03-22 Eric Seidel <eric@webkit.org> - * wtf/PageAllocation.h: - (WTF::PageAllocation::systemDeallocate): Zero out m_base before unmapping - it, in case unmapping m_base unmaps the PageAllocation. + Reviewed by Adam Barth. - * wtf/BumpPointerAllocator.h: - (WTF::BumpPointerPool::destroy): Now this work-around isn't needed! + Add Profiling Configuration to JavaScriptCore gyp build + https://bugs.webkit.org/show_bug.cgi?id=56862 -2010-11-30 Xan Lopez <xlopez@igalia.com> + It appears this is identical to Release, but I suspect + there is someone/thing who uses the Profiling target + so we're adding it for completeness. - Reviewed by Darin Adler. + * gyp/JavaScriptCore.gyp: - m_hasNonEnumerableProperties is never initialized in Structure - https://bugs.webkit.org/show_bug.cgi?id=50266 +2011-03-22 Adam Barth <abarth@webkit.org> - * runtime/Structure.cpp: - (JSC::Structure::Structure): initialize member variable. + Reviewed by Eric Seidel. -2010-11-29 Steve Falkenburg <sfalken@apple.com> + Remove os_win32_files variable from the GYP build + https://bugs.webkit.org/show_bug.cgi?id=56804 - Windows build fix (part 1). Use correct environment variable syntax in cmd files. + Now that our understanding of GYP is sufficiently advanced, we don't + need os_win32_files any more. (Turns out Eric was right, as he always + is.) - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd: - * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: - * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd: - * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd: - * JavaScriptCore.vcproj/jsc/jscPreLink.cmd: - * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd: - * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd: - * JavaScriptCore.vcproj/testapi/testapiPreLink.cmd: + * JavaScriptCore.gypi: -2010-11-29 Dan Bernstein <mitz@apple.com> +2011-03-22 Adam Barth <abarth@webkit.org> - Reviewed by Darin Adler. + Reviewed by Eric Seidel. - WTF support for <rdar://problem/8650085> adding word-prefix search options to the text search API. - https://bugs.webkit.org/show_bug.cgi?id=50038 + GYP build of JavaScriptCore should be able to link from an empty WebKitBuild directory + https://bugs.webkit.org/show_bug.cgi?id=56803 - * wtf/unicode/UnicodeMacrosFromICU.h: Copied additional macros from icu/unicode/utf16.h. + Previously, we thought we should generate the derived source files in + the shared intermediate build products directory, but there are + assumptions built into other parts of the Mac build system that the + derived source files will be generated in a particular subdirectory of + the build products directory. -2010-11-29 Steve Falkenburg <sfalken@apple.com> + This patch is a partial revert of the change that moved the derived + source files to the shared intermediate directory. After this patch, + the GYP build can build JavaScriptCore without help from the main + normal build system. - Reviewed by Darin Adler. + * JavaScriptCore.gypi: + * gyp/JavaScriptCore.gyp: + * gyp/generate-derived-sources.sh: + * gyp/generate-dtrace-header.sh: - JavaScriptCore projects on Windows should use cmd files for build events - https://bugs.webkit.org/show_bug.cgi?id=50193 +2011-03-22 Jay Civelli <jcivelli@chromium.org> - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd: Added. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd: Added. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd: Added. - * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: Added property svn:eol-style. - * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: Added property svn:eol-style. - * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: - * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd: Added. - * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd: Added. - * JavaScriptCore.vcproj/jsc/jscPreLink.cmd: Added. - * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: - * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd: Added. - * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd: Added. - * JavaScriptCore.vcproj/testapi/testapiPreLink.cmd: Added. + Reviewed by David Levin. -2010-11-29 Dai Mikurube <dmikurube@google.com> + Adding a contains method to Vector. + https://bugs.webkit.org/show_bug.cgi?id=55859 - Reviewed by Kent Tamura. + * wtf/Vector.h: + (WTF::Vector::contains): - when empty, clicking "down" on outer-spin-button returns "max value" - https://bugs.webkit.org/show_bug.cgi?id=45491 +2011-03-22 Gabor Loki <loki@webkit.org> - It is required to calculate UTC/DST offsets to retrieve the current local milliseconds for - date/time type inputs. WTF::currentTimeMS() returns a UTC time, and WTF::getLocalTime() - returns a struct tm, not milliseconds. + Reviewed by Alexey Proskuryakov. - Calculating milliseconds from a struct tm is not simple since timegm() cannot be used in all - environments. This calculation is already done in calculateUTCOffset(), and complicated. - Duplicating this complicated calculation is unreasonable because of maintainability. - To achieve this without duplication, we must call calculate{UTC|DST}Offset in some way. + Fix a bunch of typos in DFG. + https://bugs.webkit.org/show_bug.cgi?id=56813 + + * dfg/DFGByteCodeParser.cpp: + (JSC::DFG::parse): + * dfg/DFGGenerationInfo.h: + (JSC::DFG::GenerationInfo::setSpilled): + * dfg/DFGGraph.cpp: + (JSC::DFG::Graph::dump): + * dfg/DFGGraph.h: + * dfg/DFGJITCodeGenerator.h: + (JSC::DFG::JITCodeGenerator::setupStubArguments): + * dfg/DFGJITCompiler.cpp: + (JSC::DFG::JITCompiler::compileFunction): + * dfg/DFGJITCompiler.h: + * dfg/DFGNode.h: + * dfg/DFGNonSpeculativeJIT.h: + * dfg/DFGOperations.h: + * dfg/DFGRegisterBank.h: + (JSC::DFG::RegisterBank::allocate): + * dfg/DFGScoreBoard.h: + (JSC::DFG::ScoreBoard::~ScoreBoard): + (JSC::DFG::ScoreBoard::allocate): + * dfg/DFGSpeculativeJIT.cpp: + (JSC::DFG::SpeculativeJIT::compile): + * dfg/DFGSpeculativeJIT.h: + +2011-03-22 Adam Barth <abarth@webkit.org> - * JavaScriptCore.exp: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * wtf/DateMath.cpp: Changed calculateUTCOffset() and calculateDSTOffset() to external functions. - (WTF::calculateUTCOffset): - (WTF::calculateDSTOffset): - * wtf/DateMath.h: + Reviewed by Eric Seidel. -2010-11-29 Chris Rogers <crogers@google.com> + Production configuration in GYP isn't set up correctly + https://bugs.webkit.org/show_bug.cgi?id=56786 - Reviewed by Kenneth Russell. + Update JavaScriptCore.gyp with information mined from + JavaScriptCore.xcodeproj. - Switch web audio code to use FloatPoint3D instead of Vector3 - https://bugs.webkit.org/show_bug.cgi?id=50186 + * JavaScriptCore.gypi: + * gyp/JavaScriptCore.gyp: - * wtf/Vector3.h: Removed. +2011-03-22 Kent Tamura <tkent@chromium.org> -2010-11-29 Steve Falkenburg <sfalken@apple.com> + Reviewed by Eric Seidel. - Reviewed by Adam Roben. + REGRESSION(r80096): Number type input unexpectedly rounds fractional values + https://bugs.webkit.org/show_bug.cgi?id=56367 - Add a mechanism for Windows pre-build/pre-link/post-build events to be separated into individual cmd files - https://bugs.webkit.org/show_bug.cgi?id=49858 + Introduce clampToInteger(unsigned). + + * wtf/MathExtras.h: + (clampToInteger): Added. - We're migrating our prebuild/prelink/postbuild steps out of vcproj and vsprops files: - - To simplify editing (editing vsprops build steps is confusing). - - For more readable diffs. +2011-03-21 Adam Barth <abarth@webkit.org> - * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: - * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: Added. - * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: Added. + Reviewed by Eric Seidel. -2010-11-29 Geoffrey Garen <ggaren@apple.com> + GYP build should not have include paths that point within the source tree + https://bugs.webkit.org/show_bug.cgi?id=56788 - Reviewed by Gavin Barraclough. + Turns out we don't need these include paths anymore now that we have + header maps working properly. - Improved accuracy of command-line SunSpider. + * gyp/JavaScriptCore.gyp: + - Also, remove jsc.cpp from the excluded list because it's not part + of the jsc_files variable instead of the javascriptcore_files + variable. - * jsc.cpp: - (functionRun): Changed the "run" function to run a given test in - its own global object. Previously, all tests ran in the same global - object, which created name conflicts, and made globals from previous - tests artificially survive into later tests. - - Also changed "run" to return the elapsed milliseconds when running a - given test, for slightly more accurate numbers. +2011-03-21 Adam Barth <abarth@webkit.org> - (functionCheckSyntax): Ditto on returning elapsed milliseconds. + Reviewed by Eric Seidel. -2010-11-29 Darin Adler <darin@apple.com> + Solve the Assertions.cpp / -Wno-missing-format-attribute mystery + https://bugs.webkit.org/show_bug.cgi?id=56780 - Reviewed by Andreas Kling. + The reason we couldn't resolve this warning in the GYP build was that + the normal build disables this warning specifically for this file. + This patch takes the same approach as the previous patch to + WebCoreObjCExtras.mm in that it uses a pragma to suppress the warning + (rather than a build system configuration). - Remove a couple unneeded overflow checks - https://bugs.webkit.org/show_bug.cgi?id=49816 + * JavaScriptCore.xcodeproj/project.pbxproj: + - Remove the special-case for this file. + * gyp/JavaScriptCore.gyp: + - Remove the work-around for this issue. + * wtf/Assertions.cpp: + - Add a pragma disabling this warning for this file. - * wtf/text/CString.cpp: - (WTF::CString::init): Use an ASSERT instead of - an overflow check with CRASH. +2011-03-21 Adam Barth <abarth@webkit.org> -2010-11-29 Adam Roben <aroben@apple.com> + Reviewed by Dimitri Glazkov. - Robustify react-to-vsprops-changes.py against changes to its location - or the location of the .vsprops files + WebCore GYP build shouldn't crash on startup + https://bugs.webkit.org/show_bug.cgi?id=56776 - Suggested by John Sullivan. + Debug builds shouldn't define NDEBUG. This same logic exists in the + project.pbxproj file. - * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: - Removed file_modification_times. - (main): Use glob.glob to find the .vsprops files and assert that we found some. + * gyp/JavaScriptCore.gyp: -2010-11-29 Adam Roben <aroben@apple.com> +2011-03-21 Robert Kroeger <rjkroege@chromium.org> - Touch wtf/Platform.h whenever any .vsprops file changes + Reviewed by Antonio Gomes. - This will cause all files to be recompiled, which will make changes to - preprocessor macros (e.g., ENABLE_*) actually take effect. + Flag to enable/disable a GestureReocognizer framework - Fixes <http://webkit.org/b/50167> Windows build fails when ENABLE_* - macros are changed (because not enough files are rebuilt) + https://bugs.webkit.org/show_bug.cgi?id=49345 - Reviewed by John Sullivan. + * wtf/Platform.h: - * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: - (main): Touch wtf/Platform.h if it's older than any .vsprops file. Also - added some comments and logging to make it clearer what the script is - doing and why. +2011-03-21 Adam Barth <abarth@webkit.org> -2010-11-29 Adam Roben <aroben@apple.com> + Reviewed by Dimitri Glazkov. - Update react-to-vsprops-changes.py after r72555 + Add new files to JavaScriptCore.gypi + https://bugs.webkit.org/show_bug.cgi?id=56766 - .vsprops files are no longer accessed relative to $WebKitLibrariesDir. + * JavaScriptCore.gypi: - Fixes <http://webkit.org/b/50166> REGRESSION (r72555): - react-to-vsprops-changes.py no longer works for people with a - non-default $WebKitLibrariesDir +2011-03-21 Sheriff Bot <webkit.review.bot@gmail.com> - Reviewed by John Sullivan. + Unreviewed, rolling out r81377. + http://trac.webkit.org/changeset/81377 + https://bugs.webkit.org/show_bug.cgi?id=56765 - * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: - (main): Always look in WebKitLibraries/win for .vsprops files, not in - $WebKitLibrariesDir. + WebPageSerializerTest.MultipleFrames is broken (Requested by + simonjam on #webkit). -2010-11-28 Gavin Barraclough <barraclough@apple.com> + * wtf/Vector.h: - Reviewed by Sam Weinig. +2011-03-21 Gabor Loki <loki@webkit.org> - Bug 48100 - YARR allows what seems like a bogus character-class range + Reviewed by Csaba Osztrogonác. - Per ECMA-262 character classes containing character ranges containing - character classes are invalid, eg: - /[\d-x]/ - /[x-\d]/ - /[\d-\d]/ - These should throw a syntax error. + Extend constant pool to be able to store 16 bit instructions with a constant + https://bugs.webkit.org/show_bug.cgi?id=46796 - * yarr/RegexParser.h: + The putShortWithConstantInt function inserts a 16 bit instruction which + refers a 32 bits constant or literal. This is a vital function for those + target which loads a PC relative value with a 16 bit instruction (like + Thumb-2 instruction set and SH4 architecture). -2010-11-27 Gavin Barraclough <barraclough@apple.com> + * assembler/AssemblerBuffer.h: + (JSC::AssemblerBuffer::putIntegral): + (JSC::AssemblerBuffer::putIntegralUnchecked): + * assembler/AssemblerBufferWithConstantPool.h: - Reviewed by Sam Weinig. +2011-03-21 Philippe Normand <pnormand@igalia.com> - Bug 48101 - Yarr gives different results for /(?:a*?){2,}/ - - The test cases in the linked mozilla bug demonstrate a couple of - problems in subpattern matching. These bugs lie in the optimized - cases - for matching parentheses with a quantity count of 1, and - for matching greedy quantified parentheses at the end of a regex - (which do not backtrack). - - In both of these cases we are failing to correctly handle empty - matches. In the case of parentheses-single matches (quantity count - one) we are failing to test for empty matches at all. In the case - of terminal subpattern matches we do currently check, however there - is a subtler bug here too. In the case of an empty match we will - presently immediately fall through to the next alternative (or - complete the regex match), whereas upon a failed match we should - be backtracking into the failing alternative, to give it a chance - to match further (e.g. consider /a??b?|a/.exec("ab") - upon first - attempting to match the first alternative this will match the empty - string - since a?? is non-greedy, however rather than moving on to - the second alternative we should be re-matching the first one, at - which point the non-greedy a?? will match, and as such the result - should be "ab", not "a"). - - Terminal subpattern matching contains a second bug, too. The frame - location values in the subpattern should be being allocated with - the outer disjunction's frame (as we do for the parentheses-single - optimization). Consider the following three regexes: - /a*(?:b*)*c*/ - /a*(?:b*)c*/ - /a*(?:b*)*/ - Considering only the frame location required by the atoms a,b, and - c, (ignoring space associated with the nested subpattern) the first - regex (a normal subpattern match) requires a frame size of 2 for - the outer disjunction, (to backtrack terms a & c), with each - iteration of the subpattern requiring a frame of size 1 (in order - to backtrack b). In the case of the second regex (where the - parentheses-single optimization will kick in) the outer frame must - be set up with a frame size of 3, since the outer frame will also - be used when running the nested subpattern. We will currently only - allocate a farme of size 1 for the outer disjuntion (to contain a), - howver the frame size should be 2 (since the subpattern will be - evaluated in the outer frame). In addition to failing to allocate - frame space the frame offsets are also presently invalid - in the - case of the last regex b's frame location will be set assuming it - to be the first term in the frame, whereas in this case b lies - after the term a, and should be taking a separate frame location. - - In order to correctly allocate the frame for terminal subpattern - matches we must move this optimization back up from the JIT into - the compiler (and thus interpreter too), since this is where the - frame allocation takes place. - - * yarr/RegexCompiler.cpp: - (JSC::Yarr::RegexPatternConstructor::setupAlternativeOffsets): - (JSC::Yarr::RegexPatternConstructor::checkForTerminalParentheses): - (JSC::Yarr::compileRegex): - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::Interpreter::matchParenthesesOnceBegin): - (JSC::Yarr::Interpreter::matchParenthesesOnceEnd): - (JSC::Yarr::Interpreter::backtrackParenthesesOnceBegin): - (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd): - (JSC::Yarr::Interpreter::matchParenthesesTerminalBegin): - (JSC::Yarr::Interpreter::matchParenthesesTerminalEnd): - (JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin): - (JSC::Yarr::Interpreter::backtrackParenthesesTerminalEnd): - (JSC::Yarr::Interpreter::matchDisjunction): - (JSC::Yarr::ByteCompiler::atomParenthesesOnceBegin): - (JSC::Yarr::ByteCompiler::atomParenthesesTerminalBegin): - (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin): - (JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd): - (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd): - (JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd): - (JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd): - (JSC::Yarr::ByteCompiler::emitDisjunction): - * yarr/RegexInterpreter.h: - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::generateParenthesesSingle): - (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack): - (JSC::Yarr::RegexGenerator::generateTerm): - * yarr/RegexPattern.h: - (JSC::Yarr::PatternTerm::PatternTerm): + Unreviewed, GTK distcheck build fix. -2010-11-24 Patrick Gansterer <paroga@webkit.org> + * GNUmakefile.am: - Reviewed by Csaba Osztrogonác. +2011-03-20 Bill Budge <bbudge@chromium.org> - Remove Bakefile build system files - https://bugs.webkit.org/show_bug.cgi?id=49983 + Reviewed by Adam Barth. - r53757 only removed the content, but not the files. - This patch removes that empty files. + Rename ThreadSafeShared to ThreadSafeRefCounted + https://bugs.webkit.org/show_bug.cgi?id=56714 - * JavaScriptCoreSources.bkl: Removed. - * jscore.bkl: Removed. + No new tests. Exposes no new functionality. -2010-11-24 Gabor Loki <loki@webkit.org> + * API/JSClassRef.h: + * API/OpaqueJSString.h: + * GNUmakefile.am: + * JavaScriptCore.gypi: + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.xcodeproj/project.pbxproj: + * wtf/Atomics.h: + * wtf/CMakeLists.txt: + * wtf/CrossThreadRefCounted.h: + (WTF::CrossThreadRefCounted::CrossThreadRefCounted): + (WTF::::crossThreadCopy): + * wtf/ThreadSafeRefCounted.h: Copied from wtf/ThreadSafeShared.h. + (WTF::ThreadSafeRefCountedBase::ThreadSafeRefCountedBase): + (WTF::ThreadSafeRefCountedBase::ref): + (WTF::ThreadSafeRefCountedBase::refCount): + (WTF::ThreadSafeRefCountedBase::derefBase): + (WTF::ThreadSafeRefCounted::ThreadSafeRefCounted): + * wtf/ThreadSafeShared.h: Removed. + * wtf/Threading.h: - Reviewed by Csaba Osztrogonác. +2011-03-19 Patrick Gansterer <paroga@webkit.org> - Merge the usage of jumps and calls at ARM-JIT - https://bugs.webkit.org/show_bug.cgi?id=50008 + Reviewed by Darin Adler. - Those JmpSrc objects which represent jumps (not calls) should point to - after the jump instruction. + Remove StringImpl::computeHash() + https://bugs.webkit.org/show_bug.cgi?id=49894 - * assembler/ARMAssembler.h: - (JSC::ARMAssembler::blx): - (JSC::ARMAssembler::loadBranchTarget): - (JSC::ARMAssembler::getAbsoluteJumpAddress): - (JSC::ARMAssembler::linkJump): - (JSC::ARMAssembler::relinkJump): - (JSC::ARMAssembler::linkCall): - (JSC::ARMAssembler::relinkCall): - (JSC::ARMAssembler::getRelocatedAddress): - (JSC::ARMAssembler::getDifferenceBetweenLabels): - (JSC::ARMAssembler::getCallReturnOffset): - * assembler/MacroAssemblerARM.h: - (JSC::MacroAssemblerARM::call): + Replace remainig StringImpl::computeHash with StringImpl::computeHashStringHasher. -2010-11-24 Carlos Garcia Campos <cgarcia@igalia.com> + * wtf/text/AtomicString.cpp: + (WTF::CStringTranslator::hash): + (WTF::UCharBufferTranslator::hash): + (WTF::HashAndCharactersTranslator::hash): + * wtf/text/StringImpl.h: + (WTF::StringImpl::setHash): + (WTF::StringImpl::hash): - Reviewed by Xan Lopez. +2011-03-19 Patrick Gansterer <paroga@webkit.org> - [GTK] Optimize foldCase, toLower and toUpper methods in glib unicode backend - https://bugs.webkit.org/show_bug.cgi?id=48625 - - GLib methods use UTF-8 strings, so we have to convert from UTF-16 to - UTF-8 to perform the case operations and then convert back the result to - UTF-16. GLib conversion methods return a new allocated string, so we - have to memcpy the result into the destination buffer too. Using our - own methods to convert between UTF-8 and UTF-16 from wtf/unicode/UTF8.h - we don't need such memcpy, since they take an already allocated buffer - rather than returning a new one. There's another optimization for the - case when the destination buffer is not large enough. In that case, - methods should return the expected destination buffer size and are - called again with a new buffer. We can avoid the conversion to UTF-16 by - pre-calculating the required size for the destination buffer. - - * wtf/unicode/glib/UnicodeGLib.cpp: - (WTF::Unicode::getUTF16LengthFromUTF8): - (WTF::Unicode::convertCase): - (WTF::Unicode::foldCase): - (WTF::Unicode::toLower): - (WTF::Unicode::toUpper): - -2010-11-23 Patrick Gansterer <paroga@webkit.org> + Reviewed by Darin Adler. - Reviewed by Sam Weinig. + Rename WTF::StringHasher methods + https://bugs.webkit.org/show_bug.cgi?id=53532 - Use WTF::StringHasher directly in JavaScriptCore - https://bugs.webkit.org/show_bug.cgi?id=49893 + Rename createHash to computeHash and createBlobHash to hashMemory. + Also add a using WTF::StringHasher in the header file. * profiler/CallIdentifier.h: (JSC::CallIdentifier::Hash::hash): * runtime/Identifier.cpp: (JSC::IdentifierCStringTranslator::hash): (JSC::IdentifierUCharBufferTranslator::hash): + * wtf/StringHasher.h: + (WTF::StringHasher::computeHash): + (WTF::StringHasher::hashMemory): + * wtf/text/StringHash.h: + (WTF::CaseFoldingHash::hash): + * wtf/text/StringImpl.h: + (WTF::StringImpl::computeHash): + * wtf/unicode/UTF8.cpp: + (WTF::Unicode::calculateStringHashAndLengthFromUTF8Internal): -2010-11-22 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Sam Weinig. - - Add WTF::FixedArray::size() - https://bugs.webkit.org/show_bug.cgi?id=49891 - - Add a method to get the size of a FixedArray. - - * wtf/FixedArray.h: - (WTF::FixedArray::size): - -2010-11-22 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Adam Roben. - - [WINCE] Set correct preprocessor definitions - https://bugs.webkit.org/show_bug.cgi?id=49887 +2011-03-18 Geoffrey Garen <ggaren@apple.com> - * wtf/Platform.h: + Reviewed by Oliver Hunt. -2010-11-22 Adam Roben <aroben@apple.com> - - Use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops files - - Apple's Windows build allows placing header files and import libraries for WebKit's - dependencies (CoreGraphics, CFNetwork, SQLite, etc.) outside the source tree via the - $WebKitLibrariesDir environment variable. This is both required for production builds and - convenient for Apple-internal developer builds. Apple's production builds also require that - WebKit's shared .vsprops files be accessed relative to $WebKitLibrariesDir. In production - builds, the files are copied into that directory tree by the - WebKitLibraries/win/tools/WinTools.make file. In Apple-internal developer builds, the - copying is done by - JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make. - - This .vsprops copying is problematic in one very important case: when a developer updates - their source tree and then tries to build. Visual Studio only reads .vsprops files when a - project is first loaded. So, when Visual Studio is first opened after the .vsprops files are - updated, it reads in the old files that were already residing in $WebKitLibrariesDir. When a - build is started, JavaScriptCoreGenerated.make copies the new .vsprops files into - $WebKitLibrariesDir, but Visual Studio will not pick up the changes. The rest of the build - will proceed with out-of-date .vsprops files, which will likely result in a build failure. - - To fix this, we now use normal relative paths to access the .vsprops files in the source - tree rather than in $WebKitLibrariesDir, but prefix those paths with a new environment - variable, $WebKitVSPropsRedirectionDir. In developer builds, this environment variable is - unset, so the normal relative paths are used to read the .vsprops files out of the source - tree directly. In production builds, this environment variable is set to a fake directory - that will cause the .vsprops files in $WebKitLibrariesDir to be found when the relative path - is resolved. + [GTK] JSC crashes in 32bit Release bots after r80743 + https://bugs.webkit.org/show_bug.cgi?id=56180 - For example, JavaScriptCore.vcproj uses this path for FeatureDefines.vsprops: - - $(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops - - In developer builds, where $WebKitVSPropsRedirectionDir is unset, this will point to the - files in WebKitLibraries\win\tools\vsprops in the source tree. In production builds, - JavaScriptCore.make sets $WebKitVSPropsRedirectionDir to - "$(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\", so the full path for - FeatureDefines.vsprops becomes: - - $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops - - which resolves to: - - $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops - - (We rely on the fact that Windows doesn't care whether the directories "1", "2", and "3" - actually exist since they are matched by an equal number of ".." path components.) - - Note that Visual Studio still won't pick up changes made to .vsprops files while Visual - Studio is open, but that problem hasn't seemed to cause developers many headaches so far. - - Fixes <http://webkit.org/b/49181> Windows build fails mysteriously when .vsprops files are - updated - - Reviewed by Dave Hyatt. + The crash was caused by referencing GC memory from a GC destructor. This + is not safe because destruction time / order is not guaranteed. - * JavaScriptCore.vcproj/JavaScriptCore.make: Set $WebKitVSPropsRedirectionDir so that - production builds can find the .vsprops files. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Stopy copying the - .vsprops files. It isn't needed anymore. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * JavaScriptCore.vcproj/jsc/jsc.vcproj: - * JavaScriptCore.vcproj/testapi/testapi.vcproj: - Changed to use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops - files. - -2010-11-19 Peter Varga <pvarga@inf.u-szeged.hu> - - Reviewed by Gavin Barraclough. - - YARR JIT should fallback to YARR Interpreter instead of PCRE. - https://bugs.webkit.org/show_bug.cgi?id=46719 - - Remove the ENABLE_YARR macro and the option of matching regular - expressions with PCRE from JavaScriptCore. - - * runtime/JSGlobalData.h: - * runtime/RegExp.cpp: - (JSC::RegExp::compile): - (JSC::RegExp::match): - * tests/mozilla/expected.html: - * wtf/Platform.h: - * yarr/RegexCompiler.cpp: - * yarr/RegexCompiler.h: - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::byteCompileRegex): - * yarr/RegexInterpreter.h: - * yarr/RegexJIT.cpp: - (JSC::Yarr::jitCompileRegex): - * yarr/RegexJIT.h: - (JSC::Yarr::RegexCodeBlock::RegexCodeBlock): - (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock): - (JSC::Yarr::RegexCodeBlock::getFallback): - (JSC::Yarr::RegexCodeBlock::isFallback): - (JSC::Yarr::RegexCodeBlock::setFallback): - (JSC::Yarr::executeRegex): - * yarr/RegexParser.h: - * yarr/RegexPattern.h: - -2010-11-20 Kwang Yul Seo <skyul@company100.net> - - Reviewed by David Kilzer. - - [BREWMP] Replace DBGPRINTF and DBGPRINTF_FATAL with dbg_Message - https://bugs.webkit.org/show_bug.cgi?id=49520 - - DBGPRINTF and DBGPRINTF_FATAL macros are prohibited in Mod1. Use dbg_Message instead. - - * wtf/Assertions.cpp: - * wtf/Assertions.h: - -2010-11-20 Gabor Loki <loki@webkit.org> - - Reviewed by Gavin Barraclough. - - Support JIT_OPTIMIZE_MOD on Thumb-2 - https://bugs.webkit.org/show_bug.cgi?id=49432 - - Rewrite the soft modulo operation into macroassembler form, and move it - to JSValue32_64 section. - Add support for soft modulo on Thumb-2 JIT also. - - * assembler/ARMv7Assembler.h: - (JSC::ARMv7Assembler::clz): - * assembler/MacroAssemblerARM.h: - (JSC::MacroAssemblerARM::countLeadingZeros32): - (JSC::MacroAssemblerARM::relativeTableJump): - * assembler/MacroAssemblerARMv7.h: - (JSC::MacroAssemblerARMv7::countLeadingZeros32): - (JSC::MacroAssemblerARMv7::relativeTableJump): - * jit/JITArithmetic.cpp: - (JSC::JIT::emit_op_mod): - * jit/JITOpcodes.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::softModulo): - * jit/JITStubs.cpp: - (JSC::JITThunks::JITThunks): - * wtf/Platform.h: - -2010-11-20 David Kilzer <ddkilzer@apple.com> - - <http://webkit.org/b/49848> Make it possible to display the last character of a secure text field unobscured - - Reviewed by Darin Adler. + * profiler/ProfileGenerator.cpp: + (JSC::ProfileGenerator::create): + (JSC::ProfileGenerator::ProfileGenerator): + (JSC::ProfileGenerator::willExecute): + (JSC::ProfileGenerator::didExecute): + * profiler/ProfileGenerator.h: + (JSC::ProfileGenerator::origin): Made ExecState* the first argument, + to match the rest of this class and JSC. + + Use a JSGlobalObject* instead of an ExecState* with an indirect reference + to a JSGlobalObject* to track our origin. This is simpler and more + efficient, and it removes the destruction order dependency that was causing + our crash. - * JavaScriptCore.exp: - * wtf/text/StringImpl.cpp: - (WTF::StringImpl::secure): Added argument that controls whether - the last character is obscured or not. Implemented behavior. - * wtf/text/StringImpl.h: - (WTF::StringImpl::LastCharacterBehavior): Added enum. - (WTF::StringImpl::secure): Updated method signature. + * profiler/Profiler.cpp: + (JSC::Profiler::startProfiling): Updated for change to JSGlobalObject*. + (JSC::Profiler::stopProfiling): New function for stopping all profiles + for a given global object. This is more straight-forward than multiplexing + through the old function. -2010-11-19 William Chan <willchan@chromium.org> + (JSC::dispatchFunctionToProfiles): Updated for change to JSGlobalObject*. + * profiler/Profiler.h: Ditto. - Reviewed by David Levin. + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::~JSGlobalObject): Ditto. - Add USE(CHROMIUM_NET) +2011-03-17 Geoffrey Garen <ggaren@apple.com> - Indicates the use of Chromium's network stack. Chromium's network - stack performs better when it has full view of all resource requests, - so USE(CHROMIUM_NET) can be used to bypass throttles. + Reviewed by Oliver Hunt. - https://bugs.webkit.org/show_bug.cgi?id=49778 + 1 Structure leaked beneath JSGlobalData::storeVPtrs() + https://bugs.webkit.org/show_bug.cgi?id=56595 - * wtf/Platform.h: + * runtime/Executable.cpp: + (JSC::EvalExecutable::EvalExecutable): + (JSC::ProgramExecutable::ProgramExecutable): + (JSC::FunctionExecutable::FunctionExecutable): + * runtime/Executable.h: + (JSC::ExecutableBase::ExecutableBase): + (JSC::NativeExecutable::NativeExecutable): + (JSC::VPtrHackExecutable::VPtrHackExecutable): + (JSC::ScriptExecutable::ScriptExecutable): Use a raw pointer instead of + PassRefPtr, like JSString does, since JSGlobalData owns the singleton + exectuable structure. -2010-11-19 Steve Falkenburg <sfalken@apple.com> +2011-03-17 Geoffrey Garen <ggaren@apple.com> - Reviewed by Adam Roben. + Reviewed by Mark Rowe. - Add Debug_Cairo_CFLite and Release_Cairo_CFLite configurations for all vcproj files - https://bugs.webkit.org/show_bug.cgi?id=49819 + Fixed some string leaks seen on the buildbot + https://bugs.webkit.org/show_bug.cgi?id=56619 - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: - * JavaScriptCore.vcproj/jsc/jsc.vcproj: - * JavaScriptCore.vcproj/testapi/testapi.vcproj: + * runtime/PropertyMapHashTable.h: + (JSC::PropertyTable::~PropertyTable): DEref! -2010-11-19 Oliver Hunt <oliver@apple.com> +2011-03-17 Oliver Hunt <oliver@apple.com> Reviewed by Geoffrey Garen. - Don't check for constant registers when we can guarantee that the register won't be in the constant pool - https://bugs.webkit.org/show_bug.cgi?id=49814 + Crash in JSC::MarkStack::drain Under Stress + https://bugs.webkit.org/show_bug.cgi?id=56470 - Add uncheckedR(int) to CallFrame, and replace all the uses of r() with uncheckedR() - when we can guarantee that the register is not referring to a constant. - This makes the interpreter about 0.5% faster, and makes the CallFrame initialisation - logic correct when we're using a faked callframe (as in the case of the globalExec). - - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::createActivation): - * debugger/DebuggerCallFrame.cpp: - (JSC::DebuggerCallFrame::thisObject): - * interpreter/CallFrame.h: - (JSC::ExecState::uncheckedR): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::resolve): - (JSC::Interpreter::resolveSkip): - (JSC::Interpreter::resolveGlobal): - (JSC::Interpreter::resolveGlobalDynamic): - (JSC::Interpreter::resolveBase): - (JSC::Interpreter::resolveBaseAndProperty): - (JSC::Interpreter::callEval): - (JSC::Interpreter::unwindCallFrame): - (JSC::Interpreter::throwException): - (JSC::Interpreter::execute): - (JSC::Interpreter::executeCall): - (JSC::Interpreter::executeConstruct): - (JSC::Interpreter::prepareForRepeatCall): - (JSC::Interpreter::createExceptionScope): - (JSC::Interpreter::privateExecute): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - * runtime/JSActivation.cpp: - (JSC::JSActivation::argumentsGetter): - -2010-11-19 Steve Falkenburg <sfalken@apple.com> - - Reviewed by Darin Adler. - - Normalize Cairo/CFLite project/solution configuration names - https://bugs.webkit.org/show_bug.cgi?id=49818 - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.vcproj/jsc/jsc.vcproj: - * JavaScriptCore.vcproj/testapi/testapi.vcproj: - -2010-11-18 Steve Falkenburg <sfalken@apple.com> - - Reviewed by Adam Roben. - - Windows vcproj configuration names should be normalized across projects - https://bugs.webkit.org/show_bug.cgi?id=49776 - - * JavaScriptCore.vcproj/JavaScriptCore.sln: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Added. - * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: - -2010-11-19 Patrick Gansterer <paroga@webkit.org> - - Unreviewed, build fix after r72360. - - * bytecode/CodeBlock.h: - (JSC::CodeBlock::bytecodeOffset): - -2010-11-18 Gavin Barraclough <barraclough@apple.com> - - Rubber stamped by Geoff Garen. - - Bug 49577 - Function.prototype should be non-configurable - - Ooops, Function.prototype should not be enumerable! - - * runtime/JSFunction.cpp: - (JSC::JSFunction::getOwnPropertySlot): - -2010-11-18 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. + We perform a number of gc allocations while when + we are setting up new globals in a piece of global + code. We do this by adding new properties to the + symbol table, and then expanding the storage to fit + at the end. - Bug 49708 - Stop recompiling functions to regenerate exception info. + If a GC happens during this time we will report an + incorrect size for the global object's symbol table + storage. - Instead only hold info as necessary – keep divot info is the inspector - is enabled, line number info is debugging or profiling, and handler - info for functions with try/catch. + This patch corrects this by growing the storage size + before we starting adding entries to the symbol table. - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::dumpStatistics): - (JSC::CodeBlock::CodeBlock): - (JSC::CodeBlock::lineNumberForBytecodeOffset): - (JSC::CodeBlock::expressionRangeForBytecodeOffset): - (JSC::CodeBlock::shrinkToFit): - * bytecode/CodeBlock.h: - (JSC::CodeBlock::bytecodeOffset): - (JSC::CodeBlock::addExpressionInfo): - (JSC::CodeBlock::addLineInfo): - (JSC::CodeBlock::hasExpressionInfo): - (JSC::CodeBlock::hasLineInfo): - (JSC::CodeBlock::needsCallReturnIndices): - (JSC::CodeBlock::callReturnIndexVector): - * bytecode/SamplingTool.cpp: - (JSC::SamplingTool::dump): * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::generate): (JSC::BytecodeGenerator::BytecodeGenerator): - * bytecompiler/BytecodeGenerator.h: - (JSC::BytecodeGenerator::emitNode): - (JSC::BytecodeGenerator::emitNodeInConditionContext): - (JSC::BytecodeGenerator::emitExpressionInfo): - (JSC::BytecodeGenerator::addLineInfo): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::unwindCallFrame): - (JSC::appendSourceToError): - (JSC::Interpreter::throwException): - (JSC::Interpreter::privateExecute): - (JSC::Interpreter::retrieveLastCaller): - * interpreter/Interpreter.h: - * jit/JIT.cpp: - (JSC::JIT::privateCompile): - * jit/JITStubs.cpp: - (JSC::jitThrow): - (JSC::DEFINE_STUB_FUNCTION): - * runtime/Collector.cpp: - (JSC::Heap::markRoots): - * runtime/Executable.cpp: - (JSC::EvalExecutable::compileInternal): - (JSC::ProgramExecutable::compileInternal): - (JSC::FunctionExecutable::compileForCallInternal): - (JSC::FunctionExecutable::compileForConstructInternal): - * runtime/Executable.h: - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::JSGlobalData): - * runtime/JSGlobalData.h: - (JSC::JSGlobalData::usingAPI): - * runtime/JSGlobalObject.h: - (JSC::JSGlobalObject::supportsRichSourceInfo): - (JSC::JSGlobalObject::globalData): - -2010-11-18 Adam Roben <aroben@apple.com> - - Add a script to delete manifest-related files when they are older than - any .vsprops file - - Changes to .vsprops files can cause the manifest files to become - invalid, and Visual Studio doesn't always figure out that it needs to - rebuild them. + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::resizeRegisters): - Reviewed by Sam Weinig. +2011-03-17 Geoffrey Garen <ggaren@apple.com> - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: - Call the new script. + Reviewed by Oliver Hunt. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: - Added the new script. + 1 Structure leaked beneath JSGlobalData::storeVPtrs() + https://bugs.webkit.org/show_bug.cgi?id=56595 - * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: Added. - (file_modification_times): Generator to return the modification time of - each file in a directory hierarchy. - (main): Get the modification time of the newest vsprops file, then find - all manifest-related files in the obj directory. Delete all - manifest-related files that are older than the newest vsprops file. + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::storeVPtrs): Take local ownership of the Structure + we're using, since the Executable is not designed to own the Structure. -2010-11-18 Mark Rowe <mrowe@apple.com> +2011-03-17 Gavin Barraclough <barraclough@apple.com> - Rubber-stamped by Adam Roben. + Rubber Stamped by Sam Weinig. - <rdar://problem/8602509&8602717&8602724> Enable compaction support. + Add missing register-register branchTest8 to MacroAssemblerX86Common/X86Assembler. - * Configurations/JavaScriptCore.xcconfig: + * assembler/MacroAssemblerX86Common.h: + (JSC::MacroAssemblerX86Common::branchTest8): + * assembler/X86Assembler.h: + (JSC::X86Assembler::testb_rr): -2010-11-18 Gavin Barraclough <barraclough@apple.com> +2011-03-17 Gavin Barraclough <barraclough@apple.com> - Reviewed by Oliver Hunt. + Reviewed by Sam Weinig. - Bug 49635 - Profiler implementation is fragile - - The profile presently requires the exception handling mechanism to explicitly - remove all stack frames that are exited during the exception unwind mechanism. - This is fragile in a number of ways: - * We have to change bytecode register allocation when compiling code to run - when profiling, to preserve the callee function (this is also required to - call did_call after the call has returned). - * In the JIT we have to maintain additional data structures - (CodeBlock::RareData::m_functionRegisterInfos) to map back to the register - containing the callee. - * In the interpreter we use 'magic values' to offset into the instruction - stream to rediscover the register containing the function. - - Instead, move profiling into the head and tail of functions. - * This correctly accounts the cost of the call itself to the caller. - * This allows us to access the callee function object from the callframe. - * This means that at the point a call is made we can track the stack depth - on the ProfileNode. - * When unwinding we can simply report the depth at which the exception is - being handled - all call frames above this level are freed. + Bug 56603 - DFG JIT related cleanup + Move node generation out to separate function, move binarySearch algorithm out + to StdLibExtras, fix Graph::dump() to print comma between non-node children, + even if there are no node children. - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::shrinkToFit): * bytecode/CodeBlock.h: + (JSC::getCallReturnOffset): + (JSC::CodeBlock::getStubInfo): + (JSC::CodeBlock::getCallLinkInfo): + (JSC::CodeBlock::getMethodCallLinkInfo): (JSC::CodeBlock::bytecodeOffset): - (JSC::CodeBlock::methodCallLinkInfo): - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::emitCall): - (JSC::BytecodeGenerator::emitCallVarargs): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::unwindCallFrame): - (JSC::Interpreter::throwException): - (JSC::Interpreter::execute): - (JSC::Interpreter::executeCall): - (JSC::Interpreter::executeConstruct): - (JSC::Interpreter::privateExecute): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - * profiler/Profile.cpp: - (JSC::Profile::Profile): - * profiler/ProfileGenerator.cpp: - (JSC::ProfileGenerator::addParentForConsoleStart): - (JSC::ProfileGenerator::willExecute): - (JSC::ProfileGenerator::didExecute): - (JSC::ProfileGenerator::exceptionUnwind): - (JSC::ProfileGenerator::stopProfiling): - * profiler/ProfileGenerator.h: - * profiler/ProfileNode.cpp: - (JSC::ProfileNode::ProfileNode): - (JSC::ProfileNode::willExecute): - * profiler/ProfileNode.h: - (JSC::ProfileNode::create): - (JSC::ProfileNode::callerCallFrame): - * profiler/Profiler.cpp: - (JSC::dispatchFunctionToProfiles): - (JSC::Profiler::_willExecute): - (JSC::Profiler::_didExecute): - (JSC::Profiler::exceptionUnwind): - * profiler/Profiler.h: - -2010-11-18 Steve Falkenburg <sfalken@apple.com> - - Reviewed by Adam Roben. - - Remove leftover Windows Debug_Internal configurations - https://bugs.webkit.org/show_bug.cgi?id=49758 - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * JavaScriptCore.vcproj/jsc/jsc.vcproj: - * JavaScriptCore.vcproj/testapi/testapi.vcproj: - -2010-11-18 Chao-ying Fu <fu@mips.com> - - Reviewed by Csaba Osztrogonác. - - Avoid increasing required alignment of target type warning - https://bugs.webkit.org/show_bug.cgi?id=43963 - - * runtime/UString.h: - (JSC::UStringHash::equal): + - Move binaryChop to binarySearch in StdLibExtras + * dfg/DFGByteCodeParser.cpp: + (JSC::DFG::ByteCodeParser::ByteCodeParser): + (JSC::DFG::ByteCodeParser::parse): + (JSC::DFG::parse): + - Make m_noArithmetic a member, initialize m_currentIndex in the constructor. + * dfg/DFGByteCodeParser.h: + - Change parse() to not take a start index (always 0). + * dfg/DFGGraph.cpp: + (JSC::DFG::Graph::dump): + - Fix Graph::dump() to print comma between non-node children, even if there are no node children. + * dfg/DFGJITCodeGenerator.h: + (JSC::DFG::JITCodeGenerator::JITCodeGenerator): + - Initialize m_compileIndex in constructor. + * dfg/DFGNonSpeculativeJIT.cpp: + (JSC::DFG::NonSpeculativeJIT::compile): + * dfg/DFGNonSpeculativeJIT.h: + - Spilt out compilation of individual node. + * dfg/DFGOperations.cpp: + (JSC::DFG::operationConvertThis): + * dfg/DFGOperations.h: + - Cleanup parameter name. + * dfg/DFGSpeculativeJIT.cpp: + (JSC::DFG::SpeculativeJIT::compile): + * dfg/DFGSpeculativeJIT.h: + - Spilt out compilation of individual node. + * runtime/Executable.cpp: + (JSC::tryDFGCompile): + - Change parse() to not take a start index (always 0). * wtf/StdLibExtras.h: + (WTF::binarySearch): + - Move binaryChop to binarySearch in StdLibExtras -2010-11-17 Sam Weinig <sam@webkit.org> - - Reviewed by Anders Carlsson. +2011-03-17 Anders Carlsson <andersca@apple.com> - Add stubbed out ScrollAnimator for the Mac - https://bugs.webkit.org/show_bug.cgi?id=49678 + Reviewed by Geoffrey Garen. - * wtf/Platform.h: Enable SMOOTH_SCROLLING on the Mac, this has no - change in behavior at the moment. + Fix clang build. -2010-11-17 David Kilzer <ddkilzer@apple.com> + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::storeVPtrs): - <http://webkit.org/b/49634> Make overflow guards in WTF::String::utf8 explicit +2011-03-17 Geoffrey Garen <ggaren@apple.com> Reviewed by Darin Adler. - Add an explicit overflow check prior to allocating our buffer, - rather than implicitly relying on the guard in convertUTF16ToUTF8. - - * wtf/text/WTFString.cpp: - (WTF::String::utf8): - -2010-11-17 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r72197. - http://trac.webkit.org/changeset/72197 - https://bugs.webkit.org/show_bug.cgi?id=49661 + 1 Structure leaked beneath JSGlobalData::storeVPtrs() + https://bugs.webkit.org/show_bug.cgi?id=56595 - broke fast/regex/test1.html (Requested by stampho on #webkit). - - * runtime/JSGlobalData.h: - * runtime/RegExp.cpp: - (JSC::RegExpRepresentation::~RegExpRepresentation): - (JSC::RegExp::compile): - (JSC::RegExp::match): - * tests/mozilla/expected.html: - * wtf/Platform.h: - * yarr/RegexCompiler.cpp: - * yarr/RegexCompiler.h: - * yarr/RegexInterpreter.cpp: - * yarr/RegexInterpreter.h: - * yarr/RegexJIT.cpp: - (JSC::Yarr::jitCompileRegex): - * yarr/RegexJIT.h: - (JSC::Yarr::RegexCodeBlock::RegexCodeBlock): - (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock): - (JSC::Yarr::RegexCodeBlock::getFallback): - (JSC::Yarr::RegexCodeBlock::setFallback): - (JSC::Yarr::executeRegex): - * yarr/RegexParser.h: - * yarr/RegexPattern.h: - -2010-11-17 Peter Varga <pvarga@inf.u-szeged.hu> - - Reviewed by Gavin Barraclough. - - YARR JIT should fallback to YARR Interpreter instead of PCRE. - https://bugs.webkit.org/show_bug.cgi?id=46719 - - Remove the ENABLE_YARR macro and the option of matching regular - expressions with PCRE from JavaScriptCore. - - * runtime/JSGlobalData.h: - * runtime/RegExp.cpp: - (JSC::RegExp::compile): - (JSC::RegExp::match): - * tests/mozilla/expected.html: - * wtf/Platform.h: - * yarr/RegexCompiler.cpp: - * yarr/RegexCompiler.h: - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::byteCompileRegex): - * yarr/RegexInterpreter.h: - * yarr/RegexJIT.cpp: - (JSC::Yarr::jitCompileRegex): - * yarr/RegexJIT.h: - (JSC::Yarr::RegexCodeBlock::RegexCodeBlock): - (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock): - (JSC::Yarr::RegexCodeBlock::getFallback): - (JSC::Yarr::RegexCodeBlock::isFallback): - (JSC::Yarr::RegexCodeBlock::setFallback): - (JSC::Yarr::executeRegex): - * yarr/RegexParser.h: - * yarr/RegexPattern.h: - -2010-11-17 Peter Varga <pvarga@inf.u-szeged.hu> - - Reviewed by Gavin Barraclough. - - Extend YARR Interpreter with beginning character look-up optimization - https://bugs.webkit.org/show_bug.cgi?id=45751 - - Add beginning character look-up optimization which sets the start - index to the first possible successful pattern match. - Extend YARR Interpreter with lookupForBeginChars function which - implements the beginning character look-up optimization. - - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::Interpreter::InputStream::readPair): - (JSC::Yarr::Interpreter::InputStream::isNotAvailableInput): - (JSC::Yarr::Interpreter::lookupForBeginChars): - (JSC::Yarr::Interpreter::matchDisjunction): - (JSC::Yarr::Interpreter::interpret): - * yarr/RegexInterpreter.h: - (JSC::Yarr::BytecodePattern::BytecodePattern): - -2010-11-17 Alexis Menard <alexis.menard@nokia.com>, Simon Hausmann <simon.hausmann@nokia.com> - - Reviewed by Kenneth Christiansen, Tor Arne Vestbø. - - [Qt] Add support for use GStreamer with the Qt build - - Enable the build/inclusion of the wtf/QObject convenience classes. - - * JavaScriptCore.pri: - * wtf/wtf.pri: - -2010-11-17 Peter Varga <pvarga@inf.u-szeged.hu> - - Reviewed by Gavin Barraclough. + * JavaScriptCore.xcodeproj/project.pbxproj: + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::storeVPtrs): Now that we have an executable, we need + to explicitly run its destructor. - Collect the beginning characters in a RegExp pattern for look-up - optimization - https://bugs.webkit.org/show_bug.cgi?id=45748 - - Extend the YARR's parser with an algorithm which collects the potential - beginning characters from a RegExp pattern for later look-up optimization. - - * yarr/RegexCompiler.cpp: - (JSC::Yarr::BeginCharHelper::BeginCharHelper): - (JSC::Yarr::BeginCharHelper::addBeginChar): - (JSC::Yarr::BeginCharHelper::merge): - (JSC::Yarr::BeginCharHelper::addCharacter): - (JSC::Yarr::BeginCharHelper::linkHotTerms): - (JSC::Yarr::RegexPatternConstructor::RegexPatternConstructor): - (JSC::Yarr::RegexPatternConstructor::addBeginTerm): - (JSC::Yarr::RegexPatternConstructor::setupDisjunctionBeginTerms): - (JSC::Yarr::RegexPatternConstructor::setupAlternativeBeginTerms): - (JSC::Yarr::RegexPatternConstructor::setupBeginChars): - (JSC::Yarr::compileRegex): - * yarr/RegexPattern.h: - (JSC::Yarr::TermChain::TermChain): - (JSC::Yarr::BeginChar::BeginChar): - (JSC::Yarr::RegexPattern::RegexPattern): - (JSC::Yarr::RegexPattern::reset): - -2010-11-17 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r72160. - http://trac.webkit.org/changeset/72160 - https://bugs.webkit.org/show_bug.cgi?id=49646 - - Broke lots of fast/profiler tests, among others (Requested by - aroben on #webkit). +2011-03-17 Jeff Miller <jeffm@apple.com> - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::dump): - (JSC::CodeBlock::functionRegisterForBytecodeOffset): - (JSC::CodeBlock::shrinkToFit): - * bytecode/CodeBlock.h: - (JSC::CodeBlock::addFunctionRegisterInfo): - * bytecode/Opcode.h: - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): - (JSC::BytecodeGenerator::emitCall): - (JSC::BytecodeGenerator::emitCallVarargs): - (JSC::BytecodeGenerator::emitReturn): - (JSC::BytecodeGenerator::emitConstruct): - * bytecompiler/BytecodeGenerator.h: - (JSC::CallArguments::profileHookRegister): - * bytecompiler/NodesCodegen.cpp: - (JSC::CallArguments::CallArguments): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::unwindCallFrame): - (JSC::Interpreter::throwException): - (JSC::Interpreter::execute): - (JSC::Interpreter::executeCall): - (JSC::Interpreter::executeConstruct): - (JSC::Interpreter::privateExecute): - * jit/JIT.cpp: - (JSC::JIT::privateCompileMainPass): - * jit/JIT.h: - * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_profile_will_call): - (JSC::JIT::emit_op_profile_did_call): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::emit_op_profile_will_call): - (JSC::JIT::emit_op_profile_did_call): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - * jit/JITStubs.h: - * profiler/Profile.cpp: - (JSC::Profile::Profile): - * profiler/ProfileGenerator.cpp: - (JSC::ProfileGenerator::addParentForConsoleStart): - (JSC::ProfileGenerator::willExecute): - (JSC::ProfileGenerator::didExecute): - (JSC::ProfileGenerator::stopProfiling): - * profiler/ProfileGenerator.h: - * profiler/ProfileNode.cpp: - (JSC::ProfileNode::ProfileNode): - (JSC::ProfileNode::willExecute): - * profiler/ProfileNode.h: - (JSC::ProfileNode::create): - (JSC::ProfileNode::operator==): - * profiler/Profiler.cpp: - (JSC::dispatchFunctionToProfiles): - (JSC::Profiler::willExecute): - (JSC::Profiler::didExecute): - * profiler/Profiler.h: + Use a consistent set of file patterns in the svn:ignore property for all .xcodeproj directories, specifically: + + *.mode* + *.pbxuser + *.perspective* + project.xcworkspace + xcuserdata -2010-11-16 Gavin Barraclough <barraclough@apple.com> + * JavaScriptCore.xcodeproj: Modified property svn:ignore. - Reviewed by Sam Weinig. +2011-03-17 Gavin Barraclough <barraclough@apple.com> - Bug 49635 - Profiler implementation is fragile - - The profile presently requires the exception handling mechanism to explicitly - remove all stack frames that are exited during the exception unwind mechanism. - This is fragile in a number of ways: - * We have to change bytecode register allocation when compiling code to run - when profiling, to preserve the callee function (this is also required to - call did_call after the call has returned). - * In the JIT we have to maintain additional data structures - (CodeBlock::RareData::m_functionRegisterInfos) to map back to the register - containing the callee. - * In the interpreter we use 'magic values' to offset into the instruction - stream to rediscover the register containing the function. - - Instead, move profiling into the head and tail of functions. - * This correctly accounts the cost of the call itself to the caller. - * This allows us to access the callee function object from the callframe. - * This means that at the point a call is made we can track the stack depth - on the ProfileNode. - * When unwinding we can simply report the depth at which the exception is - being handled - all call frames above this level are freed. + Reverting r81197, breaks JIT + INTERPRETER build. - * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::dump): - (JSC::CodeBlock::shrinkToFit): + (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset): + (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset): * bytecode/CodeBlock.h: - (JSC::CodeBlock::bytecodeOffset): - (JSC::CodeBlock::methodCallLinkInfo): + (JSC::CodeBlock::addPropertyAccessInstruction): + (JSC::CodeBlock::addGlobalResolveInstruction): + (JSC::CodeBlock::addStructureStubInfo): * bytecode/Opcode.h: + * bytecode/StructureStubInfo.h: * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): + (JSC::BytecodeGenerator::emitResolve): + (JSC::BytecodeGenerator::emitResolveWithBase): + (JSC::BytecodeGenerator::emitGetById): + (JSC::BytecodeGenerator::emitPutById): + (JSC::BytecodeGenerator::emitDirectPutById): (JSC::BytecodeGenerator::emitCall): - (JSC::BytecodeGenerator::emitCallVarargs): - (JSC::BytecodeGenerator::emitReturn): (JSC::BytecodeGenerator::emitConstruct): - * bytecompiler/BytecodeGenerator.h: - (JSC::CallArguments::count): - * bytecompiler/NodesCodegen.cpp: - (JSC::CallArguments::CallArguments): - * interpreter/Interpreter.cpp: - (JSC::ProfileHostCall::ProfileHostCall): - (JSC::ProfileHostCall::~ProfileHostCall): - (JSC::Interpreter::unwindCallFrame): - (JSC::Interpreter::throwException): - (JSC::Interpreter::execute): - (JSC::Interpreter::executeCall): - (JSC::Interpreter::executeConstruct): - (JSC::Interpreter::privateExecute): - * jit/JIT.cpp: - (JSC::JIT::privateCompileMainPass): - * jit/JIT.h: - * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_profile_has_called): - (JSC::JIT::emit_op_profile_will_return): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::emit_op_profile_has_called): - (JSC::JIT::emit_op_profile_will_return): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - * jit/JITStubs.h: - * profiler/Profile.cpp: - (JSC::Profile::Profile): - * profiler/ProfileGenerator.cpp: - (JSC::ProfileGenerator::addParentForConsoleStart): - (JSC::ProfileGenerator::willExecute): - (JSC::ProfileGenerator::didExecute): - (JSC::ProfileGenerator::exceptionUnwind): - (JSC::ProfileGenerator::stopProfiling): - * profiler/ProfileGenerator.h: - * profiler/ProfileNode.cpp: - (JSC::ProfileNode::ProfileNode): - (JSC::ProfileNode::willExecute): - * profiler/ProfileNode.h: - (JSC::ProfileNode::create): - (JSC::ProfileNode::operator==): - (JSC::ProfileNode::exec): - * profiler/Profiler.cpp: - (JSC::dispatchFunctionToProfiles): - (JSC::Profiler::hasCalled): - (JSC::Profiler::willEvaluate): - (JSC::Profiler::willReturn): - (JSC::Profiler::didEvaluate): - (JSC::Profiler::exceptionUnwind): - * profiler/Profiler.h: + (JSC::BytecodeGenerator::emitCatch): -2010-11-16 Brian Weinstein <bweinstein@apple.com> +2011-03-17 Ben Taylor <bentaylor.solx86@gmail.com> - Reviewed by Adam Roben and Steve Falkenburg. + Reviewed by Alexey Proskuryakov. - Touch Platform.h to force a rebuild for Windows. + Add a COMPILER(SUNCC) define for Sun Studio 12. + https://bugs.webkit.org/show_bug.cgi?56444 + derived from patch 1 of 16 originally from https://bugs.webkit.org/show_bug.cgi?id=24932 * wtf/Platform.h: -2010-11-16 Steve Falkenburg <sfalken@apple.com> +2011-03-17 Jay Civelli <jcivelli@chromium.org> - Reviewed by Adam Roben. - - Disable LTCG for Windows Release builds. Add new Release_LTCG configuration. - https://bugs.webkit.org/show_bug.cgi?id=49632 - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * JavaScriptCore.vcproj/jsc/jsc.vcproj: - * JavaScriptCore.vcproj/testapi/testapi.vcproj: - -2010-11-16 Peter Varga <pvarga@inf.u-szeged.hu> - - Reviewed by Gavin Barraclough. - - The number of recursive match calls isn't limited in YARR Interpreter - https://bugs.webkit.org/show_bug.cgi?id=47906 - - Check the number of the matchDisjunction recursive calls to avoid unbounded - recursion. - Now the matchDisjunction function returns JSRegExpResult instead of bool. - The JSRegExpResult enum contains the result of matching or the error code - of the failure (like HitLimit) which terminates the matching. - The error codes are based on pcre's jsRegExpExecute error codes. - - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::Interpreter::parenthesesDoBacktrack): - (JSC::Yarr::Interpreter::matchParentheses): - (JSC::Yarr::Interpreter::backtrackParentheses): - (JSC::Yarr::Interpreter::matchDisjunction): - (JSC::Yarr::Interpreter::matchNonZeroDisjunction): - (JSC::Yarr::Interpreter::interpret): - (JSC::Yarr::Interpreter::Interpreter): - * yarr/RegexInterpreter.h: - -2010-11-16 Brian Weinstein <bweinstein@apple.com> - - Rest of the Windows build fix. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - -2010-11-16 Gavin Barraclough <barraclough@apple.com> - - Windows build fix pt 1. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + Reviewed by David Levin. -2010-11-16 Gavin Barraclough <barraclough@apple.com> + Adding a contains method to Vector. + https://bugs.webkit.org/show_bug.cgi?id=55859 - Reviewed by Oliver Hunt. + * wtf/Vector.h: + (WTF::::operator): + (WTF::::contains): - https://bugs.webkit.org/show_bug.cgi?id=49606 +2011-03-17 Patrick Gansterer <paroga@webkit.org> - The bug here is that we read the prototype from the RHS argument using a regular - op_get_by_id before op_instanceof has checked that this is an object implementing - HasInstance. This incorrect behaviour gives rise to further unnecessary complexity - in the code base, since we have additional logic (implemented using the - GetByIdExceptionInfo data structures on CodeBlock) to convert not an object errors - from the get_by_id into invalid parameter errors. Having fixed this bug this code - is all redundant, since in these cases the get_by_id will never have been reached. + Fix the interpreter build. - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::dump): - (JSC::CodeBlock::shrinkToFit): - * bytecode/CodeBlock.h: - (JSC::CodeBlock::addExpressionInfo): - * bytecode/Opcode.h: - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): - (JSC::BytecodeGenerator::emitCheckHasInstance): - * bytecompiler/BytecodeGenerator.h: - * bytecompiler/NodesCodegen.cpp: - (JSC::InstanceOfNode::emitBytecode): * interpreter/Interpreter.cpp: - (JSC::Interpreter::throwException): - (JSC::Interpreter::privateExecute): - * jit/JIT.cpp: - (JSC::JIT::privateCompileMainPass): - (JSC::JIT::privateCompileSlowCases): - * jit/JIT.h: - * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_check_has_instance): - (JSC::JIT::emit_op_instanceof): - (JSC::JIT::emitSlow_op_check_has_instance): - (JSC::JIT::emitSlow_op_instanceof): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::emit_op_check_has_instance): - (JSC::JIT::emit_op_instanceof): - (JSC::JIT::emitSlow_op_check_has_instance): - (JSC::JIT::emitSlow_op_instanceof): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - * jit/JITStubs.h: - * runtime/ExceptionHelpers.cpp: - (JSC::createInterruptedExecutionException): - (JSC::createTerminatedExecutionException): - (JSC::createUndefinedVariableError): - (JSC::createNotAFunctionError): - (JSC::createNotAnObjectError): - * runtime/ExceptionHelpers.h: - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::JSGlobalData): - * runtime/JSGlobalData.h: - * runtime/JSNotAnObject.cpp: - (JSC::JSNotAnObject::toPrimitive): - (JSC::JSNotAnObject::getPrimitiveNumber): - (JSC::JSNotAnObject::toBoolean): - (JSC::JSNotAnObject::toNumber): - (JSC::JSNotAnObject::toString): - (JSC::JSNotAnObject::toObject): - (JSC::JSNotAnObject::getOwnPropertySlot): - (JSC::JSNotAnObject::getOwnPropertyDescriptor): - (JSC::JSNotAnObject::put): - (JSC::JSNotAnObject::deleteProperty): - (JSC::JSNotAnObject::getOwnPropertyNames): - * runtime/JSNotAnObject.h: - (JSC::JSNotAnObject::JSNotAnObject): - * runtime/JSObject.h: - (JSC::JSObject::isActivationObject): - * runtime/JSValue.cpp: - (JSC::JSValue::toObjectSlowCase): - (JSC::JSValue::synthesizeObject): - (JSC::JSValue::synthesizePrototype): - -2010-11-15 Darin Adler <darin@apple.com> + (JSC::Interpreter::privateExecute): Added globalData to inheritorID(). - Reviewed by Sam Weinig. - - Harden additional string functions against large lengths - https://bugs.webkit.org/show_bug.cgi?id=49574 - - * wtf/text/CString.cpp: - (WTF::CString::init): Check for length that is too large for CString. - (WTF::CString::newUninitialized): Ditto. - (WTF::CString::copyBufferIfNeeded): Fix types so the length stays - in a size_t. - - * wtf/text/WTFString.cpp: - (WTF::String::append): Check for length that is too large. +2011-03-16 Sam Weinig <sam@webkit.org> -2010-11-15 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig. - - Bug 49577 - Function.prototype should be non-configurable - - JSC lazily allocates the prototype property of Function objects. - - We check the prototype exists on 'get', but not on 'put'. - If you 'put' without having first done a 'get' you can end up with a configurable - prototype (prototype should only ever be non-configurable). - - This is visible in a couple of ways: - * 'delete' on the property may succeed. (the next access will result in a new, - reset prototype object). - * the prototype may be set to a getter. - - * runtime/JSFunction.cpp: - (JSC::JSFunction::getOwnPropertyNames): - Reify the prototype property before allowing an enumerate including don't enum properties. - (JSC::JSFunction::put): - Reify the prototype property before any put to it. - -2010-11-15 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Geoff Garen. - - Bug 49488 - Only add source specific information to exceptions in Interpreter::throwException - - Three types of source location information are added to errors. - - (1) Divot information. - - This was added with the intention of using it to provide better source highlighting in the inspector. - We may still want to do so, but we probably should not be exposing these values in a manner visible to - user scripts – only through an internal C++ interface. The code adding divot properties to objects has - been removed. - - (2) Line number information. - - Line number information is presently sometimes added at the point the exception is created, and sometimes - added at the point the exception passes through throwException. Change this so that throwException has - the sole responsibility for adding line number and source file information. - - (3) Source snippets in the message of certain type errors (e.g. 'doc' in `Result of expression 'doc' [undefined] is not an object.`). - - These messages are currently created at the point the exceptions is raised. Instead reformat the message - such that the source snippet is located at the end (`Result of expression 'b1' [undefined] is not an object.` - becomes `'undefined' is not an object (evaluating 'b1.property')`), and append these to the message at - the in throw Exception. This presents a number of advantages: - * we no longer need to have source location information to create these TypeErrors. - * we can chose to append source location information in other error messages, including those where - passing source location to the point of construction would be inconvenient. - * we can chose in future to omit to append source location information when running in a non-debug mode. - - This also cleans up some error output, e.g. removing double brackets ('[[]]') around objects in output, - removing double periods (..) at end of lines, and adding slightly more context to some errors. - - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::expressionRangeForBytecodeOffset): - - Separated called to access line and range information. - - * bytecode/CodeBlock.h: - - Separated called to access line and range information. + Fix the interpreter build. * interpreter/Interpreter.cpp: (JSC::Interpreter::resolve): @@ -9805,2340 +4500,1570 @@ (JSC::Interpreter::resolveGlobal): (JSC::Interpreter::resolveGlobalDynamic): (JSC::Interpreter::resolveBaseAndProperty): - (JSC::isInvalidParamForIn): - (JSC::isInvalidParamForInstanceOf): - - Update parameters passed to error constructors. - (JSC::appendSourceToError): - - Update message property to add location information (previously added in createErrorMessage, in ExceptionHelpers) - (JSC::Interpreter::throwException): - - Updated to call appendSourceToError. (JSC::Interpreter::privateExecute): - - Update parameters passed to error constructors. - - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - - Update parameters passed to error constructors. - - * runtime/Error.cpp: - (JSC::addErrorInfo): - (JSC::hasErrorInfo): - - Removed divot properties. + Remove .get()s. - * runtime/Error.h: - - Removed divot properties. +2011-03-16 Adam Barth <abarth@webkit.org> - * runtime/ErrorInstance.cpp: - (JSC::ErrorInstance::ErrorInstance): - - Initialize new property. - - * runtime/ErrorInstance.h: - (JSC::ErrorInstance::appendSourceToMessage): - (JSC::ErrorInstance::setAppendSourceToMessage): - (JSC::ErrorInstance::clearAppendSourceToMessage): - - Added flag to check for errors needing location information appending. - (JSC::ErrorInstance::isErrorInstance): - - Added virtual method to check for ErrorInstances. - - * runtime/ExceptionHelpers.cpp: - (JSC::createUndefinedVariableError): - (JSC::createInvalidParamError): - (JSC::createNotAConstructorError): - (JSC::createNotAFunctionError): - (JSC::createNotAnObjectError): - - Update parameters passed to error constructors, stopped adding line number information early, changed TypeError messages. - - * runtime/ExceptionHelpers.h: - - Updated function signatures. - - * runtime/JSFunction.cpp: - (JSC::callHostFunctionAsConstructor): - - Update parameters passed to error constructors. - - * runtime/JSObject.h: - (JSC::JSObject::isErrorInstance): - - Added virtual method to check for ErrorInstances. - -2010-11-12 Anders Carlsson <andersca@apple.com> - - Reviewed by Adam Roben. - - CString(const char*) crashes when passed a null pointer - https://bugs.webkit.org/show_bug.cgi?id=49450 - - * wtf/text/CString.cpp: - (WTF::CString::CString): - Return early if str is null. - -2010-11-11 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Bug 49420 - Clean up syntax/reference error throw. - - Some errors detected at compile time are thrown at runtime. We currently do so using a op_new_error/op_throw bytecode pair. - This is not ideal. op_throw is used for explicit user throw statements, and has different requirements in terms or meta data - attached to the exception (controlled by the explicitThrow parameter passed to Interpreter::throwException). To work around - this, op_new_error has to add the meta data at an early stage, which is unlike other VM exceptions being raised. - - We can simplify this and bring into line with other exception behaviour by changing new_error from just allocating an - Exception instance to also throwing it – but as a regular VM throw, correctly passing explicitThrow as false. - - * JavaScriptCore.xcodeproj/project.pbxproj: - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::dump): - (JSC::CodeBlock::expressionRangeForBytecodeOffset): - * bytecode/Opcode.h: - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::emitThrowReferenceError): - (JSC::BytecodeGenerator::emitThrowSyntaxError): - (JSC::BytecodeGenerator::emitThrowExpressionTooDeepException): - * bytecompiler/BytecodeGenerator.h: - (JSC::BytecodeGenerator::emitNodeInConditionContext): - * bytecompiler/NodesCodegen.cpp: - (JSC::ThrowableExpressionData::emitThrowReferenceError): - (JSC::ThrowableExpressionData::emitThrowSyntaxError): - (JSC::RegExpNode::emitBytecode): - (JSC::PostfixErrorNode::emitBytecode): - (JSC::PrefixErrorNode::emitBytecode): - (JSC::AssignErrorNode::emitBytecode): - (JSC::ForInNode::emitBytecode): - (JSC::ContinueNode::emitBytecode): - (JSC::BreakNode::emitBytecode): - (JSC::ReturnNode::emitBytecode): - (JSC::LabelNode::emitBytecode): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): - * jit/JIT.cpp: - (JSC::JIT::privateCompileMainPass): - * jit/JIT.h: - * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_throw_reference_error): - (JSC::JIT::emit_op_throw_syntax_error): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::emit_op_throw_reference_error): - (JSC::JIT::emit_op_throw_syntax_error): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - * jit/JITStubs.h: - * parser/Nodes.h: - -2010-11-11 Darin Adler <darin@apple.com> - - Reviewed by Sam Weinig. - - Harden some string functions against large lengths - https://bugs.webkit.org/show_bug.cgi?id=49293 - - * wtf/text/StringImpl.cpp: - (WTF::StringImpl::create): Fix incorrect use of PassRefPtr. Check for - strlen results that are too large for StringImpl. - (WTF::StringImpl::lower): Check for lengths that are too large for - int32_t. - (WTF::StringImpl::upper): Fix incorrect use of PassRefPtr. Check for - lengths that are too large for int32_t. - (WTF::StringImpl::secure): Fix incorect use of PassRefPtr. Use unsigned - rather than int and int32_t so we can handle any length. - (WTF::StringImpl::foldCase): Fix incorrect use of PassRefPtr. Check for - lengths that are too large for int32_t. - (WTF::StringImpl::find): Check for strlen results that are too large for - StringImpl. - (WTF::StringImpl::findIgnoringCase): Ditto. - (WTF::StringImpl::replace): Fix incorrect use of PassRefPtr. - (WTF::StringImpl::createWithTerminatingNullCharacter): Check before - incrementing length. - -2010-11-11 Dan Horák <dan@danny.cz> - - Reviewed by Andreas Kling. + Reviewed by James Robinson. - Add support for the s390/s390x architectures, it's big-endian - with s390 being 32-bit and s390x being 64-bit. + Remove USE(BUILTIN_UTF8_CODEC) + https://bugs.webkit.org/show_bug.cgi?id=56508 - https://bugs.webkit.org/show_bug.cgi?id=34786 + We added this recently when we were unsure about the stability of the + built-in UTF-8 codec. However, the codec seems to be stable, so we + don't need the macro. * wtf/Platform.h: -2010-11-10 Csaba Osztrogonác <ossy@webkit.org> +2011-03-16 Daniel Bates <dbates@rim.com> - Reviewed by David Hyatt. - - HTML5 Ruby support should be mandatory feature - https://bugs.webkit.org/show_bug.cgi?id=49272 - - Remove Ruby as optional feature. - - * Configurations/FeatureDefines.xcconfig: - * JavaScriptCorePrefix.h:: Touch it to avoid incremental build failure on Windows. - -2010-11-10 Peter Rybin <peter.rybin@gmail.com> - - Reviewed by Adam Barth. - - HTML parser should provide script column position within HTML document to JavaScript engine - https://bugs.webkit.org/show_bug.cgi?id=45271 - - Adds TextPosition* classes -- a structure that stores line/column/generation - level coordinates inside text document. Adds *BasedNumber classes -- typesafe int - wrappers that emphasize whether int number is used as zero-based or - one-based. - - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/text/TextPosition.h: Added. - (WTF::TextPosition::TextPosition): - (WTF::TextPosition::minimumPosition): - (WTF::TextPosition::belowRangePosition): - (WTF::ZeroBasedNumber::fromZeroBasedInt): - (WTF::ZeroBasedNumber::ZeroBasedNumber): - (WTF::ZeroBasedNumber::zeroBasedInt): - (WTF::ZeroBasedNumber::base): - (WTF::ZeroBasedNumber::belowBase): - (WTF::OneBasedNumber::fromOneBasedInt): - (WTF::OneBasedNumber::OneBasedNumber): - (WTF::OneBasedNumber::oneBasedInt): - (WTF::OneBasedNumber::convertAsZeroBasedInt): - (WTF::OneBasedNumber::convertToZeroBased): - (WTF::OneBasedNumber::base): - (WTF::OneBasedNumber::belowBase): - (WTF::toZeroBasedTextPosition): - (WTF::toOneBasedTextPosition): - (WTF::ZeroBasedNumber::convertToOneBased): - -2010-11-09 Gabor Loki <loki@webkit.org> - - Reviewed by Gavin Barraclough. - - ARM JIT asserts when loading http://reader.google.com in debug mode - https://bugs.webkit.org/show_bug.cgi?id=48912 - - There are several cases when the uninterrupted sequence is larger than - maximum required offset for pathing the same sequence. Eg.: if in a - uninterrupted sequence the last macroassembler's instruction is a stub - call, it emits store instruction(s) which should not be included in the - calculation of length of uninterrupted sequence. So, the insnSpace and - constSpace should be upper limit instead of hard limit. - - * jit/JIT.h: - * jit/JITInlineMethods.h: - (JSC::JIT::endUninterruptedSequence): - -2010-11-09 David Kilzer <ddkilzer@apple.com> - - <http://webkit.org/b/49279> Fix include statements for local headers - - Reviewed by Gavin Barraclough. - - Use "Foo.h" instead of <Foo.h> for local headers. - - * assembler/AbstractMacroAssembler.h: Also fixed sort order. - * assembler/CodeLocation.h: - * yarr/RegexJIT.h: - * yarr/RegexParser.h: - -2010-11-08 Adam Roben <aroben@apple.com> - - Roll out r71532 - - It broke the build for Cygwin 1.7 installs. Cygwin 1.7's default - .bashrc unsets %TEMP%, which broke copy-tools.cmd. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: - * JavaScriptCore.vcproj/JavaScriptCore/copy-tools.cmd: Removed. - * JavaScriptCore.vcproj/JavaScriptCore/show-alert.js: Removed. - -2010-11-08 Martin Robinson <mrobinson@igalia.com> - - Reviewed by Xan Lopez. - - >=webkitgtk-1.2.5: parallel build fails with libtool: link: cannot find the library `libwebkit-1.0.la' or unhandled argument `libwebkit-1.0.la' - https://bugs.webkit.org/show_bug.cgi?id=49128 - - r59042 introduced a C++-style comment in Platform.h, which is often - included in C source files. Change it to a C-style comment. - - * wtf/Platform.h: Fix the C++-style comment. - -2010-11-08 Adam Roben <aroben@apple.com> - - Show a message and cause the build to immediately fail when any - .vsprops files are copied - - When $WebKitLibrariesDir is set to a non-standard location, the - .vsprops files have to be copied from WebKitLibraries/win to - $WebKitLibrariesDir. When this happens, Visual Studio doesn't pick up - changes to the .vsprops files until the next time it opens the solution - file. Before this patch, the build would soldier on with the old - .vsprops files, leading to strange build failures. Now we detect that - the .vsprops files have been updated, display a message to the user - telling them what to do, and make the build fail immediately. - - Fixes <http://webkit.org/b/49181> Windows build fail mysteriously when - .vsprops files are updated - - Reviewed by Steve Falkenburg. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: - Moved code to copy the tools directory to the new copy-tools.cmd - script. Moved that after the command that writes the buildfailed file - so the build will be considered a failure if copy-tools.cmd fails. - Changed to write the project name into buildfailed like all our other - projects do, so those other projects will know that the failure was due - to this project. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: - Added new scripts. - - * JavaScriptCore.vcproj/JavaScriptCore/copy-tools.cmd: Added. Copies - the tools directory to $WebKitLibrariesDir. If any files were copied, - we display a message to the user and exit with error code 1 to cause - the build to fail. In non-interactive builds, we just print the message - to the build log. In interactive builds, we show the message in an - alert. - - * JavaScriptCore.vcproj/JavaScriptCore/show-alert.js: Added. Uses - Windows Scripting Host to display a message in an alert. - -2010-11-07 Sam Magnuson <smagnuson@netflix.com> - - Reviewed by Andreas Kling. - - [Qt] make install does not cause JavaScriptCore to be built - https://bugs.webkit.org/show_bug.cgi?id=49114 - - * JavaScriptCore.pro: - -2010-11-05 Oliver Hunt <oliver@apple.com> + Reviewed by Darin Adler. - Reviewed by Gavin Barraclough. + Make JIT build for ARM Thumb-2 with RVCT + https://bugs.webkit.org/show_bug.cgi?id=56440 - Website consistently crashing TOT in JIT::execute() on news.com.au - https://bugs.webkit.org/show_bug.cgi?id=48954 + Derived from a patch by Dave Tapuska. - The problem here was the strict pass of this conversion was loading the - this structure into one register but doing the flags check off a different - register. This is clearly wrong. I have been unable to trigger the crash - with a reduction, but I've added an assertion to the this conversion to - attempt to make it more readily catchable in future. + Also, modify the RVCT stub template to indicate that it preserves 8 byte stack alignment. - * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_convert_this_strict): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::emit_op_convert_this_strict): * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - -2010-11-04 Xan Lopez <xlopez@igalia.com> - - Reviewed by Adam Barth. - - Use leakRef instead of releaseRef - https://bugs.webkit.org/show_bug.cgi?id=48974 - - Use leakRef instead of the deprecated releaseRef. This was renamed - some time ago because 'releaseRef' is too close to 'release', - which does something completely different. - -2010-11-04 Eric Seidel <eric@webkit.org> - - Reviewed by Gavin Barraclough. - - REGRESSION(49798): Crash in HTMLObjectElement::parseMappedAttribute - https://bugs.webkit.org/show_bug.cgi?id=48789 - The contract for all String/AtomicString methods seems to be that it's - safe to call them, even when the String is null (impl() returns 0). - This contract was broken by r49798 (unintentionally) when optimizing - for dromeo. - This patch adds a null check to AtomicString::lower() fixing this - crash and preventing future confusion. +2011-03-16 Chao-ying Fu <fu@mips.com> - * wtf/text/AtomicString.cpp: - (WTF::AtomicString::lower): - -2010-11-04 Adam Barth <abarth@webkit.org> + Reviewed by Darin Adler. - Enabled ICCJPEG on Chromium Mac - https://bugs.webkit.org/show_bug.cgi?id=48977 + Fix MIPS build with const *void + https://bugs.webkit.org/show_bug.cgi?id=56513 - * wtf/Platform.h: + * assembler/MacroAssemblerMIPS.h: + (JSC::MacroAssemblerMIPS::load32): + (JSC::MacroAssemblerMIPS::store32): -2010-11-03 Oliver Hunt <oliver@apple.com> +2011-03-16 Oliver Hunt <oliver@apple.com> - Reviewed by Gavin Barraclough. + Reviewed by Darin Adler. - Crash in Function.prototype.call.apply - https://bugs.webkit.org/show_bug.cgi?id=48485 + Remove unnecessary caller tracking shenanigans from CodeBlock + https://bugs.webkit.org/show_bug.cgi?id=56483 - The problem here was op_load_varargs failing to ensure that - there was sufficient space for the entire callframe prior to - op_call_varargs. This meant that when we then re-entered the - VM it was possible to stomp over an earlier portion of the - stack, so causing sub-optimal behaviour. + This removes some leftover cruft from when we made CodeBlock + mark its callees. Removing it gives us a 0.7% progression, + reducing the overall regression to ~1.3%. - * bytecode/Opcode.h: - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::emitLoadVarargs): - * bytecompiler/BytecodeGenerator.h: - * bytecompiler/NodesCodegen.cpp: - (JSC::ApplyFunctionCallDotNode::emitBytecode): + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::shrinkToFit): + * bytecode/CodeBlock.h: + (JSC::CallLinkInfo::CallLinkInfo): * jit/JIT.cpp: - (JSC::JIT::privateCompile): - * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_load_varargs): - -2010-11-03 Kenneth Russell <kbr@google.com> - - Reviewed by Chris Marrin. - - Redesign extension mechanism in GraphicsContext3D - https://bugs.webkit.org/show_bug.cgi?id=46894 - - * JavaScriptCore.exp: - - Exposed String::split(const String&, Vector<String>). - -2010-11-03 Adam Roben <aroben@apple.com> - - Bring WTF.vcproj up to date - - * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added filters for the text and - unicode directories, added new files, removed old files. - -2010-11-03 Gabor Loki <loki@webkit.org> - - Reviewed by Andreas Kling. - - Remove unused initializeWeakRandomNumberGenerator - https://bugs.webkit.org/show_bug.cgi?id=48899 - - WeakRandom class is used instead of weakRandomNumber and its initializer. - - * wtf/RandomNumberSeed.h: + (JSC::JIT::linkCall): + (JSC::JIT::linkConstruct): -2010-11-03 Gabor Loki <loki@webkit.org> +2011-03-15 Oliver Hunt <oliver@apple.com> Reviewed by Geoffrey Garen. - Unused class: JSFastMath with JSValue64 - https://bugs.webkit.org/show_bug.cgi?id=48835 - - Remove unused JSFastMath class. - - * runtime/JSImmediate.h: - -2010-11-02 Adam Roben <aroben@apple.com> - - Windows build fix after r71127 - - MSVC isn't smart enough to figure out that the definition of the global - nullptr variable isn't needed, so we provide one for it. - - Fixes <http://webkit.org/b/48862> Windows build is broken due to - undefined symbol nullptr - - Reviewed by Anders Carlsson. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export nullptr. - - * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added NullPtr.cpp and let VS - resort the files. - - * wtf/NullPtr.cpp: Added. - -2010-11-02 Martin Robinson <mrobinson@igalia.com> - - Reviewed by Xan Lopez. - - Remove special handling of HashTableDeletedValue in PlatformRefPtr and manually manage memory that cannot be controlled by HashTraits - https://bugs.webkit.org/show_bug.cgi?id=48841 + Make Structure creation require a JSGlobalData + https://bugs.webkit.org/show_bug.cgi?id=56438 - Remove special handling of HashTableDeletedValue in PlatformRefPtr. - This is better handled on a case-by-case basis, when HashTraits - cannot account for it. + Mechanical change to make Structure::create require JSGlobalData&, and + require all users to provide the globalData. - * wtf/PlatformRefPtr.h: - (WTF::PlatformRefPtr::~PlatformRefPtr): - (WTF::PlatformRefPtr::clear): - (WTF::::operator): - -2010-10-29 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - REGRESSION: r69429-r69611: Crash in JSC::Interpreter::privateExecute - https://bugs.webkit.org/show_bug.cgi?id=47573 - - I think the interpreter portion of this was introduced by - an incorrect but silent merge when I updated prior to committing. - The JIT change is basically just a correctness fix, but it is - needed to prevent the testcase from asserting in debug builds. - - The basic problem is incorrectly setting the activation object - on an arguments object. The crash was due to us setting a null - activation in the interpreter, in the jit we were setting the - activation of a strict mode arguments object. - - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): + * API/JSCallbackConstructor.h: + (JSC::JSCallbackConstructor::createStructure): + * API/JSCallbackFunction.h: + (JSC::JSCallbackFunction::createStructure): + * API/JSCallbackObject.h: + (JSC::JSCallbackObject::createStructure): + * API/JSContextRef.cpp: + * JavaScriptCore.exp: + * debugger/DebuggerActivation.cpp: + (JSC::DebuggerActivation::DebuggerActivation): + * debugger/DebuggerActivation.h: + (JSC::DebuggerActivation::createStructure): * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): - * wtf/Platform.h: - -2010-10-29 Csaba Osztrogonác <ossy@webkit.org> - - Reviewed by Adam Roben and David Kilzer. - - Fix and cleanup of build systems - https://bugs.webkit.org/show_bug.cgi?id=48342 - - * Configurations/FeatureDefines.xcconfig: Add missing ENABLE_FULLSCREEN_API - -2010-10-28 Kwang Yul Seo <skyul@company100.net> - - Reviewed by Darin Adler. - - Include stddef.h unconditionally in Assertions.h - https://bugs.webkit.org/show_bug.cgi?id=48573 - - There is no reason to have stddef.h include be MSVC-only. - - * wtf/Assertions.h: - -2010-10-28 Herczeg Zoltan <zherczeg@webkit.org> - - Rubber stamped by Csaba Osztrogonác. - - Try to fix interpreter build. - - Needed parentheses around assignment to avoid GCC warning after - http://trac.webkit.org/changeset/70703 - - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): - -2010-10-28 Peter Varga <pvarga@inf.u-szeged.hu> - - Reviewed by Csaba Osztrogonác. - - resetAssertionMatches() is an unused function in YARR Interpreter - https://bugs.webkit.org/show_bug.cgi?id=48503 - - The resetAssertionMatches() function is removed from YARR Interpreter - because it's never called. - - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::Interpreter::resetMatches): + * jsc.cpp: + (GlobalObject::GlobalObject): + (functionRun): + (jscmain): + * runtime/Arguments.h: + (JSC::Arguments::createStructure): + * runtime/ArrayPrototype.h: + (JSC::ArrayPrototype::createStructure): + * runtime/BooleanObject.h: + (JSC::BooleanObject::createStructure): + * runtime/DateInstance.h: + (JSC::DateInstance::createStructure): + * runtime/DatePrototype.h: + (JSC::DatePrototype::createStructure): + * runtime/ErrorInstance.h: + (JSC::ErrorInstance::createStructure): + * runtime/Executable.h: + (JSC::ExecutableBase::createStructure): + (JSC::EvalExecutable::createStructure): + (JSC::ProgramExecutable::createStructure): + (JSC::FunctionExecutable::createStructure): + * runtime/FunctionPrototype.h: + (JSC::FunctionPrototype::createStructure): + * runtime/GetterSetter.h: + (JSC::GetterSetter::createStructure): + * runtime/InternalFunction.h: + (JSC::InternalFunction::createStructure): + * runtime/JSAPIValueWrapper.h: + (JSC::JSAPIValueWrapper::createStructure): + * runtime/JSActivation.h: + (JSC::JSActivation::createStructure): + * runtime/JSArray.cpp: + (JSC::JSArray::JSArray): + * runtime/JSArray.h: + (JSC::JSArray::createStructure): + * runtime/JSByteArray.cpp: + (JSC::JSByteArray::createStructure): + * runtime/JSByteArray.h: + (JSC::JSByteArray::JSByteArray): + * runtime/JSCell.h: + (JSC::JSCell::JSCell::createDummyStructure): + * runtime/JSFunction.h: + (JSC::JSFunction::createStructure): + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::storeVPtrs): + (JSC::JSGlobalData::JSGlobalData): + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::reset): + * runtime/JSGlobalObject.h: + (JSC::JSGlobalObject::JSGlobalObject): + (JSC::JSGlobalObject::createStructure): + * runtime/JSNotAnObject.h: + (JSC::JSNotAnObject::createStructure): + * runtime/JSONObject.h: + (JSC::JSONObject::createStructure): + * runtime/JSObject.cpp: + (JSC::JSObject::createInheritorID): + * runtime/JSObject.h: + (JSC::JSObject::createStructure): + (JSC::JSNonFinalObject::createStructure): + (JSC::JSFinalObject::createStructure): + (JSC::createEmptyObjectStructure): + (JSC::JSObject::inheritorID): + * runtime/JSObjectWithGlobalObject.h: + (JSC::JSObjectWithGlobalObject::createStructure): + * runtime/JSPropertyNameIterator.h: + (JSC::JSPropertyNameIterator::createStructure): + * runtime/JSStaticScopeObject.h: + (JSC::JSStaticScopeObject::createStructure): + * runtime/JSString.h: + (JSC::RopeBuilder::createStructure): + * runtime/JSVariableObject.h: + (JSC::JSVariableObject::createStructure): + * runtime/JSWrapperObject.h: + (JSC::JSWrapperObject::createStructure): + * runtime/JSZombie.h: + (JSC::JSZombie::createStructure): + * runtime/MathObject.h: + (JSC::MathObject::createStructure): + * runtime/NativeErrorConstructor.cpp: + (JSC::NativeErrorConstructor::NativeErrorConstructor): + * runtime/NativeErrorConstructor.h: + (JSC::NativeErrorConstructor::createStructure): + * runtime/NumberConstructor.h: + (JSC::NumberConstructor::createStructure): + * runtime/NumberObject.h: + (JSC::NumberObject::createStructure): + * runtime/ObjectConstructor.h: + (JSC::ObjectConstructor::createStructure): + * runtime/RegExpConstructor.h: + (JSC::RegExpConstructor::createStructure): + * runtime/RegExpObject.h: + (JSC::RegExpObject::createStructure): + * runtime/ScopeChain.h: + (JSC::ScopeChainNode::createStructure): + * runtime/StringObject.h: + (JSC::StringObject::createStructure): + * runtime/StringObjectThatMasqueradesAsUndefined.h: + (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): + * runtime/StringPrototype.h: + (JSC::StringPrototype::createStructure): + * runtime/Structure.h: + (JSC::Structure::create): -2010-10-28 Zoltan Herczeg <zherczeg@webkit.org> +2011-03-16 Geoffrey Garen <ggaren@apple.com> - Reviewed by Andreas Kling. + Reviewed by Oliver Hunt. - Wrong instruction form for BKPT - https://bugs.webkit.org/show_bug.cgi?id=48427 + Some conservative root gathering cleanup + https://bugs.webkit.org/show_bug.cgi?id=56447 + + SunSpider says 0.5% - 1.8% faster. - One '0' is missing from BKPT instruction. - Thanks for Jacob Bramley for reporting this error. + * interpreter/RegisterFile.cpp: + (JSC::RegisterFile::gatherConservativeRoots): + * interpreter/RegisterFile.h: New helper function for doing the + conservative gathering of the register file. It's still conservative, + since the register file may contain uninitialized values, but it's + moving-safe, because it only visits values tagged as pointers, so there's + no risk of mistaking an integer for a pointer and accidentally changing it. - * assembler/ARMAssembler.h: + * runtime/ConservativeSet.cpp: + (JSC::ConservativeRoots::add): + * runtime/ConservativeSet.h: Added a single-value add function, used above. -2010-10-28 Xan Lopez <xlopez@igalia.com> + * runtime/Heap.cpp: + (JSC::Heap::markRoots): Separated machine stack conservative roots from + register file conservative roots because machine stack roots must be + pinned, but register file roots need not be pinned. + + Adopted new interface for passing the current stack extent to the machine + stack root gathering routine. This allows us to exclude marking-related + data structures on the stack, and thus avoid double-marking the set of + machine roots. - Try to fix Snow Leopard build. + * runtime/MachineStackMarker.cpp: + (JSC::MachineThreads::gatherFromCurrentThread): + (JSC::MachineThreads::gatherConservativeRoots): + * runtime/MachineStackMarker.h: Added new interface, described above. - * jit/JITPropertyAccess.cpp: - (JSC::JIT::testPrototype): + * runtime/MarkedBlock.h: + (JSC::MarkedBlock::firstAtom): + * wtf/StdLibExtras.h: + (WTF::roundUpToMultipleOf): Moved roundUpToMultipleOf so it could be used + by MachineStacks. -2010-10-28 Xan Lopez <xlopez@igalia.com> +2011-03-16 Geoffrey Garen <ggaren@apple.com> Reviewed by Oliver Hunt. - Do not have two different asCell APIs in JSValue - https://bugs.webkit.org/show_bug.cgi?id=47979 + A little bit of MarkStack cleanup + https://bugs.webkit.org/show_bug.cgi?id=56443 + + Moved MarkStack functions into MarkStack.h/.cpp. + + SunSpider reports no change. - Remove JSCell* asCell(JSValue) in favor of only using - JSValue::asCell(). + * runtime/JSArray.h: + * runtime/JSCell.h: Moved from here... + * runtime/MarkStack.cpp: + (JSC::MarkStack::markChildren): + (JSC::MarkStack::drain): ...to here. Also, no need to inline drain. It's + a huge function, and not called many times. - * API/APICast.h: - (toRef): - * jit/JITPropertyAccess32_64.cpp: - (JSC::JIT::testPrototype): - * jit/JITStubs.cpp: - (JSC::JITThunks::tryCachePutByID): - (JSC::JITThunks::tryCacheGetByID): - (JSC::DEFINE_STUB_FUNCTION): - * runtime/GetterSetter.h: - (JSC::asGetterSetter): - * runtime/JSByteArray.h: - (JSC::asByteArray): - * runtime/JSCell.h: - (JSC::JSCell::getCallData): - (JSC::JSCell::getConstructData): - * runtime/JSString.h: - (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): - (JSC::asString): - * runtime/JSValue.h: - * runtime/Operations.cpp: - (JSC::jsIsObjectType): - * runtime/Operations.h: - (JSC::normalizePrototypeChain): - * runtime/Protect.h: - (JSC::gcProtect): - (JSC::gcUnprotect): + * runtime/MarkStack.h: + (JSC::MarkStack::~MarkStack): Moved near constructor, per style guide. + (JSC::MarkStack::append): + (JSC::MarkStack::deprecatedAppend): + (JSC::MarkStack::internalAppend): Moved to here. -2010-10-27 Chao-ying Fu <fu@mips.com> +2011-03-15 Geoffrey Garen <ggaren@apple.com> Reviewed by Oliver Hunt. - Support emit_op_mod() for MIPS on JSVALUE32_64 - https://bugs.webkit.org/show_bug.cgi?id=46511 + Removed another deprecatedAppend + https://bugs.webkit.org/show_bug.cgi?id=56429 - This patch uses MIPS div instructions for op_mod to improve performance. + * collector/handles/HandleHeap.cpp: + (JSC::HandleHeap::markStrongHandles): + * collector/handles/HandleHeap.h: Use HeapRootMarker, since handles are + marked directly by the Heap. - * jit/JITArithmetic32_64.cpp: - (JSC::JIT::emit_op_mod): - -2010-10-27 Brent Fulgham <bfulgham@webkit.org> - - Unreviewed build correction. + * runtime/Heap.cpp: + (JSC::Heap::markRoots): Ditto. - * wtf/Platform.h: Make sure ACCELERATED_COMPOSITING is - turned off in the WinCairo port. This isn't supported (yet.) +2011-03-15 Geoffrey Garen <ggaren@apple.com> -2010-10-27 Chris Rogers <crogers@google.com> + Reviewed by Oliver Hunt. - Reviewed by Chris Marrin. + Removed some more deprecated / unsafe append + https://bugs.webkit.org/show_bug.cgi?id=56428 - Add ENABLE_WEB_AUDIO feature enable flag (initially disabled) to build-webkit - https://bugs.webkit.org/show_bug.cgi?id=48279 + * collector/handles/HandleStack.cpp: + (JSC::HandleStack::mark): + * collector/handles/HandleStack.h: Mark the handle stack using a HeapRoot + marker, since it's a heap root. + + * runtime/ArgList.cpp: + (JSC::MarkedArgumentBuffer::markLists): + (JSC::MarkedArgumentBuffer::slowAppend): + * runtime/ArgList.h: Ditto. - * Configurations/FeatureDefines.xcconfig: + * runtime/Heap.cpp: + (JSC::Heap::markRoots): Added a mark call for marking the handle stack. + It seems like Oliver forgot this in his last patch. (!) -2010-10-27 Brian Weinstein <bweinstein@apple.com> + * runtime/MarkStack.h: Removed appendSlots, since it would allow an + object to embed JSValues directly instead of using WriteBarrier. - Windows build fix. + (JSC::MarkStack::append): Added a private append for a list of values. - * jit/JITStubs.cpp: - (JSC::jitThrow): + (JSC::HeapRootMarker::mark): Access to the above. -2010-10-27 Gavin Barraclough <barraclough@apple.com> +2011-03-15 Geoffrey Garen <ggaren@apple.com> Reviewed by Oliver Hunt. - Bug 48365 - Remove output parameters from JITStackFrame - - The JIT stub functions presently use the stackframe to provide a couple of additional return values. - * In the case of uncaught exceptions the exception value is returned on the stackframe.exception property. - * In the case of caught exceptions the updated value for the callFrame register is returned on the stackframe.callFrame property. - - Change exception returns such that exceptions are always returned on JSGlobalData::exception. - Change op_catch such that the new CallFrame value is returned from op_throw / vm_throw in regT0. + Removed a few more deprecatedAppends, and removed HeapRoot<T> + https://bugs.webkit.org/show_bug.cgi?id=56422 + + Added HeapRootMarker, a privileged class for marking direct heap roots + that are iterated during each garbage collection. This is easier to use + and more reliable than HeapRoot<T>, so I've removed HeapRoot<T>. - * JavaScriptCore.xcodeproj/project.pbxproj: * debugger/Debugger.cpp: (JSC::evaluateInGlobalCallFrame): * debugger/DebuggerCallFrame.cpp: (JSC::DebuggerCallFrame::evaluate): - * interpreter/CachedCall.h: - (JSC::CachedCall::CachedCall): - (JSC::CachedCall::call): * interpreter/CallFrame.h: (JSC::ExecState::exception): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::callEval): - (JSC::Interpreter::Interpreter): - (JSC::Interpreter::execute): - (JSC::Interpreter::executeCall): - (JSC::Interpreter::executeConstruct): - (JSC::Interpreter::prepareForRepeatCall): - (JSC::Interpreter::privateExecute): - * interpreter/Interpreter.h: - * jit/JITCode.h: - (JSC::JITCode::execute): - * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_catch): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::emit_op_catch): * jit/JITStubs.cpp: - (JSC::ctiTrampoline): - (JSC::jitThrow): (JSC::DEFINE_STUB_FUNCTION): - * jit/JITStubs.h: - * runtime/ArrayPrototype.cpp: - (JSC::arrayProtoFuncFilter): - (JSC::arrayProtoFuncMap): - (JSC::arrayProtoFuncEvery): - (JSC::arrayProtoFuncForEach): - (JSC::arrayProtoFuncSome): - (JSC::arrayProtoFuncReduce): - (JSC::arrayProtoFuncReduceRight): - * runtime/CallData.cpp: - (JSC::call): * runtime/Completion.cpp: - (JSC::evaluate): - * runtime/ConstructData.cpp: - (JSC::construct): - * runtime/ExceptionHelpers.cpp: - (JSC::createErrorForInvalidGlobalAssignment): - (JSC::throwOutOfMemoryError): - (JSC::throwStackOverflowError): - * runtime/ExceptionHelpers.h: - * runtime/JSArray.cpp: - (JSC::JSArray::sort): - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::globalFuncEval): - * runtime/StringPrototype.cpp: - (JSC::stringProtoFuncReplace): + (JSC::evaluate): exception is no longer a HeapRoot<T>, so no need to + call .get() on it. -2010-10-27 Gabor Loki <loki@webkit.org> + * runtime/Heap.cpp: + (JSC::Heap::markProtectedObjects): + (JSC::Heap::markTempSortVectors): + (JSC::Heap::markRoots): + * runtime/Heap.h: Updated to use HeapRootMarker. - Reviewed by Oliver Hunt. + * runtime/JSCell.h: + (JSC::JSCell::MarkStack::append): Added private functions for + HeapRootMarker to use. - https://bugs.webkit.org/show_bug.cgi?id=48060 - Speed up op_jeq_null and op_jneq_null. + * runtime/JSGlobalData.h: exception is no longer a HeapRoot<T>. - For both opcodes the NullTag and UndefinedTag are checked to control the - jump. These values can be simply checked by AboveOrEqual or Below - condition if they are the two highest unsigned integers from JSValue's - Tag field. + * runtime/MarkStack.h: + (JSC::HeapRootMarker::HeapRootMarker): + (JSC::HeapRootMarker::mark): Added private functions for + HeapRootMarker to use. - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::emit_op_jeq_null): - (JSC::JIT::emit_op_jneq_null): - * runtime/JSValue.h: + * runtime/SmallStrings.cpp: + (JSC::SmallStrings::markChildren): Updated to use HeapRootMarker. + + * runtime/SmallStrings.h: + (JSC::SmallStrings::emptyString): + (JSC::SmallStrings::singleCharacterString): + (JSC::SmallStrings::singleCharacterStrings): Updated to use HeapRootMarker. -2010-10-25 Geoffrey Garen <ggaren@apple.com> + * runtime/WriteBarrier.h: Removed HeapRoot<T>. + +2011-03-14 Geoffrey Garen <ggaren@apple.com> Reviewed by Oliver Hunt. - https://bugs.webkit.org/show_bug.cgi?id=41948 - REGRESSION(r60392): Registerfile can be unwound too far following an exception + Made the global object moving-GC-safe + https://bugs.webkit.org/show_bug.cgi?id=56348 SunSpider reports no change. - * interpreter/Interpreter.cpp: - (JSC::Interpreter::throwException): Walk the stack to calculate the high - water mark currently in use. It's not safe to assume that the current - CallFrame's high water mark is the highest high water mark because - calls do not always set up at the end of a CallFrame. A large caller - CallFrame can encompass a small callee CallFrame. - - * jit/JITOpcodes.cpp: - (JSC::JIT::privateCompileCTINativeCall): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::privateCompileCTINativeCall): Make sure to set a 0 CodeBlock - in the CallFrame of a host call, like the Interpreter does, instead of - leaving the CodeBlock field uninitialized. The backtracing code requires - a valid CodeBlock field in each CallFrame. - -2010-10-27 Gabor Loki <loki@webkit.org> - - Reviewed by Csaba Osztrogonác. - - Add cmn to branch32(reg, imm) on ARM - https://bugs.webkit.org/show_bug.cgi?id=48062 - - The conditional comparison can be done with cmn if the imm value is - negative and can fit into the cmn instruction. - - * assembler/MacroAssemblerARM.h: - (JSC::MacroAssemblerARM::branch32): - -2010-10-26 Oliver Hunt <oliver@apple.com> - - Interpreter build fix. - - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): - -2010-10-25 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - Remove exec and globalData arguments from jsNumber - https://bugs.webkit.org/show_bug.cgi?id=48270 - - Remove the now unused exec and globalData arguments from jsNumber - and mechanically update all users of jsNumber. - - * API/JSValueRef.cpp: - (JSValueMakeNumber): - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::emitLoad): - * bytecompiler/NodesCodegen.cpp: - (JSC::ArrayNode::emitBytecode): - * jit/JITArithmetic.cpp: - (JSC::JIT::emit_op_mod): - * jit/JITArithmetic32_64.cpp: - (JSC::JIT::emit_op_mod): - * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_jfalse): - (JSC::JIT::emit_op_jtrue): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - * jsc.cpp: - (functionRun): - * runtime/Arguments.cpp: - (JSC::Arguments::getOwnPropertySlot): - (JSC::Arguments::getOwnPropertyDescriptor): - * runtime/ArrayConstructor.cpp: - (JSC::ArrayConstructor::ArrayConstructor): - * runtime/ArrayPrototype.cpp: - (JSC::arrayProtoFuncPop): - (JSC::arrayProtoFuncPush): - (JSC::arrayProtoFuncShift): - (JSC::arrayProtoFuncSplice): - (JSC::arrayProtoFuncUnShift): - (JSC::arrayProtoFuncFilter): - (JSC::arrayProtoFuncMap): - (JSC::arrayProtoFuncEvery): - (JSC::arrayProtoFuncForEach): - (JSC::arrayProtoFuncSome): - (JSC::arrayProtoFuncReduce): - (JSC::arrayProtoFuncReduceRight): - (JSC::arrayProtoFuncIndexOf): - (JSC::arrayProtoFuncLastIndexOf): - * runtime/BooleanConstructor.cpp: - (JSC::BooleanConstructor::BooleanConstructor): - * runtime/CachedTranscendentalFunction.h: - (JSC::CachedTranscendentalFunction::operator()): - * runtime/DateConstructor.cpp: - (JSC::DateConstructor::DateConstructor): - (JSC::dateParse): - (JSC::dateNow): - (JSC::dateUTC): - * runtime/DateInstance.cpp: - (JSC::DateInstance::DateInstance): - * runtime/DatePrototype.cpp: - (JSC::dateProtoFuncGetFullYear): - (JSC::dateProtoFuncGetUTCFullYear): - (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/Error.cpp: - (JSC::addErrorSourceInfo): - (JSC::addErrorDivotInfo): - * runtime/ErrorConstructor.cpp: - (JSC::ErrorConstructor::ErrorConstructor): - * runtime/FunctionConstructor.cpp: - (JSC::FunctionConstructor::FunctionConstructor): - * runtime/FunctionPrototype.cpp: - (JSC::FunctionPrototype::FunctionPrototype): - * runtime/JSArray.cpp: - (JSC::JSArray::getOwnPropertySlot): - (JSC::JSArray::getOwnPropertyDescriptor): - * runtime/JSByteArray.cpp: - (JSC::JSByteArray::JSByteArray): - * runtime/JSByteArray.h: - (JSC::JSByteArray::getIndex): - * runtime/JSFunction.cpp: - (JSC::JSFunction::JSFunction): - (JSC::JSFunction::lengthGetter): - (JSC::JSFunction::getOwnPropertyDescriptor): * runtime/JSGlobalObject.cpp: - (JSC::JSGlobalObject::reset): - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::globalFuncParseInt): - (JSC::globalFuncParseFloat): - * runtime/JSNumberCell.h: - (JSC::JSValue::JSValue): - (JSC::jsNaN): - (JSC::JSValue::toJSNumber): - * runtime/JSONObject.cpp: - (JSC::unwrapBoxedPrimitive): - (JSC::PropertyNameForFunctionCall::value): - (JSC::JSONStringify): - * runtime/JSString.cpp: - (JSC::JSString::getStringPropertyDescriptor): - * runtime/JSString.h: - (JSC::JSString::getStringPropertySlot): - * runtime/JSValue.h: - (JSC::jsDoubleNumber): - (JSC::jsNumber): - (JSC::jsNaN): - (JSC::JSValue::JSValue): - (JSC::JSValue::toJSNumber): - * runtime/LiteralParser.cpp: - (JSC::LiteralParser::parse): - * runtime/MathObject.cpp: - (JSC::MathObject::MathObject): - (JSC::mathProtoFuncAbs): - (JSC::mathProtoFuncACos): - (JSC::mathProtoFuncASin): - (JSC::mathProtoFuncATan): - (JSC::mathProtoFuncATan2): - (JSC::mathProtoFuncCeil): - (JSC::mathProtoFuncCos): - (JSC::mathProtoFuncExp): - (JSC::mathProtoFuncFloor): - (JSC::mathProtoFuncLog): - (JSC::mathProtoFuncMax): - (JSC::mathProtoFuncMin): - (JSC::mathProtoFuncPow): - (JSC::mathProtoFuncRandom): - (JSC::mathProtoFuncRound): - (JSC::mathProtoFuncSin): - (JSC::mathProtoFuncSqrt): - (JSC::mathProtoFuncTan): - * runtime/NativeErrorConstructor.cpp: - (JSC::NativeErrorConstructor::NativeErrorConstructor): - * runtime/NumberConstructor.cpp: - (JSC::NumberConstructor::NumberConstructor): - (JSC::numberConstructorNaNValue): - (JSC::numberConstructorNegInfinity): - (JSC::numberConstructorPosInfinity): - (JSC::numberConstructorMaxValue): - (JSC::numberConstructorMinValue): - (JSC::constructWithNumberConstructor): - (JSC::callNumberConstructor): - * runtime/NumberPrototype.cpp: - (JSC::NumberPrototype::NumberPrototype): - * runtime/ObjectConstructor.cpp: - (JSC::ObjectConstructor::ObjectConstructor): - * runtime/Operations.cpp: - (JSC::jsAddSlowCase): - * runtime/Operations.h: - (JSC::jsAdd): - * runtime/PrototypeFunction.cpp: - (JSC::PrototypeFunction::PrototypeFunction): - * runtime/RegExpConstructor.cpp: - (JSC::RegExpConstructor::RegExpConstructor): - (JSC::RegExpMatchesArray::fillArrayInstance): - * runtime/RegExpObject.cpp: - (JSC::regExpObjectLastIndex): - * runtime/StringConstructor.cpp: - (JSC::StringConstructor::StringConstructor): - * runtime/StringPrototype.cpp: - (JSC::StringPrototype::StringPrototype): - (JSC::stringProtoFuncReplace): - (JSC::stringProtoFuncCharCodeAt): - (JSC::stringProtoFuncIndexOf): - (JSC::stringProtoFuncLastIndexOf): - (JSC::stringProtoFuncSearch): - (JSC::stringProtoFuncLocaleCompare): - -2010-10-25 David Tapuska <dtapuska@rim.com> - - Reviewed by David Kilzer. - - Enable VFP if our compiler settings indicated we had a hardware - VFP. + (JSC::JSGlobalObject::markChildren): Removed a dubious comment that + suggested we do not need to visit all our references during GC, since + that is not true in a moving GC. - https://bugs.webkit.org/show_bug.cgi?id=46096 + Re-sorted data members by type, removed one duplicate, and added back + the one missing mark I found. - * assembler/MacroAssemblerARM.cpp: - (JSC::isVFPPresent): + * runtime/JSGlobalObject.h: Re-sorted data members by type. -2010-10-25 Sheriff Bot <webkit.review.bot@gmail.com> +2011-03-15 Oliver Hunt <oliver@apple.com> - Unreviewed, rolling out r70451. - http://trac.webkit.org/changeset/70451 - https://bugs.webkit.org/show_bug.cgi?id=48249 - - Broke set-unloaded-frame-location.html under Qt (Requested by - caseq on #webkit). - - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/text/TextPosition.h: Removed. - -2010-10-25 Patrick Gansterer <paroga@webkit.org> - - Reviewed by David Kilzer. - - Replace _countof with WTF_ARRAY_LENGTH - https://bugs.webkit.org/show_bug.cgi?id=48229 - - * wtf/Platform.h: - -2010-10-25 Peter Rybin <peter.rybin@gmail.com> + Reviewed by Geoffrey Garen. - Reviewed by Adam Barth. + Introduce Local<T> to allow us to start moving to precise marking of locals + https://bugs.webkit.org/show_bug.cgi?id=56394 - HTML parser should provide script column position within HTML document to JavaScript engine - https://bugs.webkit.org/show_bug.cgi?id=45271 + Introduce a new handle type, Local<T> and a scoping mechanism + LocalScope to allow us to start moving towards precise marking + of temporaries and local variables. - Adds TextPosition* classes -- a structure that stores line/column/generation - level coordinates inside text document. Adds *BasedNumber classes -- typesafe int - wrappers that emphasize whether int number is used as zero-based or - one-based. + We also start to use the new Local<> type in the JSON stringifier + so that we can have some coverage of their behaviour in the initial + checkin. * GNUmakefile.am: * JavaScriptCore.gypi: + * JavaScriptCore.pro: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/text/TextPosition.h: Added. - (WTF::TextPosition::TextPosition): - (WTF::TextPosition::minimumPosition): - (WTF::TextPosition::belowRangePosition): - (WTF::ZeroBasedNumber::fromZeroBasedInt): - (WTF::ZeroBasedNumber::ZeroBasedNumber): - (WTF::ZeroBasedNumber::zeroBasedInt): - (WTF::ZeroBasedNumber::base): - (WTF::ZeroBasedNumber::belowBase): - (WTF::OneBasedNumber::fromOneBasedInt): - (WTF::OneBasedNumber::OneBasedNumber): - (WTF::OneBasedNumber::oneBasedInt): - (WTF::OneBasedNumber::convertAsZeroBasedInt): - (WTF::OneBasedNumber::convertToZeroBased): - (WTF::OneBasedNumber::base): - (WTF::OneBasedNumber::belowBase): - (WTF::toZeroBasedTextPosition): - (WTF::toOneBasedTextPosition): - (WTF::ZeroBasedNumber::convertToOneBased): - -2010-10-24 Kwang Yul Seo <skyul@company100.net> - - Reviewed by David Kilzer. - - Check endianness with __BIG_ENDIAN in RVCT. - https://bugs.webkit.org/show_bug.cgi?id=46122 - - RVCT defines __BIG_ENDIAN if compiling for a big-endian target. - - * wtf/Platform.h: - -2010-10-24 Dan Bernstein <mitz@apple.com> - - Rubber-stamped by Dave Kilzer. - - Removed empty directories. - - * JavaScriptCore: Removed. - * JavaScriptCore/runtime: Removed. - -2010-10-24 Patrick Gansterer <paroga@webkit.org> - - Unreviewed, fix typo of last build fix. - - * wtf/DateMath.cpp: - -2010-10-24 Patrick Gansterer <paroga@webkit.org> - - Unreviewed build fix for chromium. - - * wtf/DateMath.cpp: Added missing include. - -2010-10-24 Patrick Gansterer <paroga@webkit.org> - - Reviewed by David Kilzer. - - Add WTF_ARRAY_LENGTH macro to WTF - https://bugs.webkit.org/show_bug.cgi?id=32828 - - Unify the different implementations and usages. - - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): - * runtime/DatePrototype.cpp: - (JSC::formatLocaleDate): - * runtime/JSGlobalObject.cpp: - (JSC::JSGlobalObject::reset): + * collector/handles/Handle.h: + (JSC::::asObject): + * collector/handles/HandleStack.cpp: Added. + (JSC::HandleStack::HandleStack): + (JSC::HandleStack::mark): + (JSC::HandleStack::grow): + * collector/handles/HandleStack.h: Added. + (JSC::HandleStack::enterScope): + (JSC::HandleStack::zapTo): + (JSC::HandleStack::leaveScope): + (JSC::HandleStack::push): + * collector/handles/Local.h: Added. + (JSC::Local::internalSet): + (JSC::::Local): + (JSC::::operator): + (JSC::LocalStack::LocalStack): + (JSC::LocalStack::peek): + (JSC::LocalStack::pop): + (JSC::LocalStack::push): + (JSC::LocalStack::isEmpty): + (JSC::LocalStack::size): + * collector/handles/LocalScope.h: Added. + (JSC::LocalScope::LocalScope): + (JSC::LocalScope::~LocalScope): + (JSC::LocalScope::release): + * runtime/Heap.cpp: + (JSC::Heap::markRoots): + * runtime/Heap.h: + (JSC::Heap::allocateLocalHandle): + (JSC::Heap::handleStack): + * runtime/JSCell.h: + (JSC::JSCell::::getString): + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::JSGlobalData): + * runtime/JSGlobalData.h: + (JSC::JSGlobalData::allocateLocalHandle): * runtime/JSONObject.cpp: - (JSC::Stringifier::appendQuotedString): - (JSC::Stringifier::toJSON): + (JSC::Stringifier::Stringifier): + (JSC::Stringifier::stringify): (JSC::Stringifier::appendStringifiedValue): - * runtime/UString.cpp: - (JSC::UString::number): - * wtf/DateMath.cpp: - (WTF::parseDateFromNullTerminatedCharacters): - * wtf/StdLibExtras.h: - -2010-10-24 Dirk Schulze <krit@webkit.org> - - Reviewed by Nikolas Zimmermann. - - Filter example Chiseled from SVG Wow! is slow - https://bugs.webkit.org/show_bug.cgi?id=48174 - - Added 'using WTF::ByteArray;' at the end of ByteArray.h - - * wtf/ByteArray.h: + (JSC::Stringifier::Holder::Holder): + (JSC::Walker::Walker): + (JSC::Walker::walk): + (JSC::JSONProtoFuncParse): + (JSC::JSONProtoFuncStringify): + (JSC::JSONStringify): + * runtime/JSONObject.h: + * runtime/MarkStack.h: + (JSC::MarkStack::appendValues): + (JSC::MarkStack::appendSlots): -2010-10-24 Patrick Gansterer <paroga@webkit.org> +2011-03-15 Gavin Barraclough <barraclough@apple.com> - Reviewed by David Kilzer. + Rubber Stamped by Sam Weinig. - Inline WTF::bitwise_cast and fix style - https://bugs.webkit.org/show_bug.cgi?id=48208 + Bug 56420 - Remove ENABLE(JIT) code from ByteCompiler + Some methods have unnecessary differences in name/arguments for interpreter/JIT. - * wtf/StdLibExtras.h: - (WTF::bitwise_cast): - (WTF::bitCount): + * bytecode/CodeBlock.cpp: + * bytecode/CodeBlock.h: + (JSC::HandlerInfo::HandlerInfo): + (JSC::CodeBlock::addPropertyAccessInfo): + (JSC::CodeBlock::addGlobalResolveInfo): + (JSC::CodeBlock::addCallLinkInfo): + (JSC::CodeBlock::globalResolveInfo): + * bytecode/Opcode.h: + * bytecode/StructureStubInfo.h: + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitResolve): + (JSC::BytecodeGenerator::emitResolveWithBase): + (JSC::BytecodeGenerator::emitGetById): + (JSC::BytecodeGenerator::emitPutById): + (JSC::BytecodeGenerator::emitDirectPutById): + (JSC::BytecodeGenerator::emitCall): + (JSC::BytecodeGenerator::emitConstruct): + (JSC::BytecodeGenerator::emitCatch): -2010-10-23 Xan Lopez <xlopez@igalia.com> +2011-03-15 Gavin Barraclough <barraclough@apple.com> Reviewed by Sam Weinig. - Unify globalData APIs - https://bugs.webkit.org/show_bug.cgi?id=47969 + Fix broken assert in new code. - Make JSGlobalObject::globalData return a reference and adapt - callers. This unifies the API with the existing - CallFrame::globalData, which also returns a reference. + * dfg/DFGAliasTracker.h: + (JSC::DFG::AliasTracker::recordPutByVal): + - recordPutByVal is called for both PutByVal & PutByValAlias. - * debugger/Debugger.cpp: - (JSC::evaluateInGlobalCallFrame): - * interpreter/CallFrame.h: - * interpreter/Interpreter.cpp: - (JSC::Interpreter::dumpRegisters): - * jsc.cpp: - (runWithScripts): - * parser/JSParser.cpp: - (JSC::jsParse): - * parser/Parser.cpp: - (JSC::Parser::parse): - * parser/Parser.h: - (JSC::Parser::parse): - * runtime/Error.cpp: - (JSC::createError): - (JSC::createEvalError): - (JSC::createRangeError): - (JSC::createReferenceError): - (JSC::createSyntaxError): - (JSC::createTypeError): - (JSC::createURIError): - * runtime/FunctionConstructor.cpp: - (JSC::constructFunction): - * runtime/JSGlobalObject.cpp: - (JSC::JSGlobalObject::~JSGlobalObject): - (JSC::JSGlobalObject::markChildren): - * runtime/JSGlobalObject.h: - (JSC::JSGlobalObject::globalData): - -2010-10-23 Dimitri Glazkov <dglazkov@chromium.org> +2011-03-15 Gavin Barraclough <barraclough@apple.com> - Unreviewed, rolling out r70369. - http://trac.webkit.org/changeset/70369 - https://bugs.webkit.org/show_bug.cgi?id=47974 + Rubber stamped by Sam Weinig. - Caused weird artifacts in expected results. + Removed redundant code from BytecodeGenerator. - * wtf/Platform.h: + * bytecompiler/BytecodeGenerator.cpp: + * bytecompiler/BytecodeGenerator.h: + - delete uncalled code missed when reparsing was removed. -2010-10-23 Martin Robinson <mrobinson@igalia.com> +2011-03-15 Kevin Ollivier <kevino@theolliviers.com> - Reviewed by Xan Lopez. + Reviewed by Darin Adler. - Crashes randomly in cairo_scaled_font_destroy - https://bugs.webkit.org/show_bug.cgi?id=46794 + Introduce WTF_USE_EXPORT_MACROS, which will allow us to put shared library import/export + info into the headers rather than in export symbol definition files, but disable it on + all platforms initially so we can deal with port build issues one port at a time. + + https://bugs.webkit.org/show_bug.cgi?id=27551 - Make PlatformRefPtr aware of hashTableDeletedValue. When PlatformRefPtr - goes away this should probably be handled in the future via some special - hooks in RefCounted (or its contained type). + * API/JSBase.h: + * config.h: + * wtf/Assertions.h: + * wtf/ExportMacros.h: Added. + * wtf/Platform.h: - * wtf/PlatformRefPtr.h: - (WTF::PlatformRefPtr::~PlatformRefPtr): - (WTF::PlatformRefPtr::clear): - (WTF::::operator): +2011-03-14 Laszlo Gombos <laszlo.1.gombos@nokia.com> -2010-10-22 Adam Roben <aroben@apple.com> + Unreviewed build fix. - Remove the QuartzCorePresent.h mechanism + Buildfix when JIT is not enabled after r81079 + https://bugs.webkit.org/show_bug.cgi?id=56361 - This header was used to detect whether QuartzCore headers were present - on the system. Everyone should have these headers now so we no longer - need to detect. + * runtime/Executable.cpp: - Reviewed by Sam Weinig. +2011-03-14 Geoffrey Garen <ggaren@apple.com> - * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Remove - code to generate QuartzCorePresent.h. + Reviewed by Oliver Hunt. - * wtf/Platform.h: Stop including QuartzCorePresent.h on Windows and - collapse all USE_ACCELERATED_COMPOSITING settings into one #ifdef. + Made the global object moving-GC-safe + https://bugs.webkit.org/show_bug.cgi?id=56348 + + SunSpider reports no change. -2010-10-22 Adam Barth <abarth@webkit.org> + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::markChildren): Removed a dubious comment that + suggested we do not need to visit all our references during GC, since + that is not true in a moving GC. - Unreviewed, rolling out r70290. - http://trac.webkit.org/changeset/70290 - https://bugs.webkit.org/show_bug.cgi?id=48111 + Re-sorted data members by type, removed one duplicate, and added back + the one missing mark I found. - Undelete Android build files. + * runtime/JSGlobalObject.h: Re-sorted data members by type. - * Android.mk: Added. +2011-03-14 Geoffrey Garen <ggaren@apple.com> -2010-10-22 Zoltan Herczeg <zherczeg@webkit.org> + Reviewed by Oliver Hunt. - Reviewed by Csaba Osztrogonác. + Made JSWrapperObject and subclasses moving-GC-safe + https://bugs.webkit.org/show_bug.cgi?id=56346 + + SunSpider reports no change. - JSC interpreter regressions after r69940 - https://bugs.webkit.org/show_bug.cgi?id=47839 + * runtime/BooleanObject.cpp: + (JSC::BooleanObject::BooleanObject): + * runtime/DateInstance.cpp: + (JSC::DateInstance::DateInstance): No more need for JSGlobalData, since + we don't initialize the wrapped value in our constructor. - Wrong "if": It should test whether the result exists, - and not the opposite. It is an interpreter bug, hence - the bots does not capture it. + * runtime/DateInstance.h: Don't set the OverridesMarkChildren flag because + we do not in fact override markChildren. - * interpreter/Interpreter.cpp: - (JSC::Interpreter::resolveBase): + * runtime/DatePrototype.h: Declare an anonymous slot, since wrapper object + no longer does so for us. Also added an ASSERT to catch a latent bug, + where DatePrototype stomped on its base class's anonymous slot. Hard-coded + anonymous slots are a plague on our code. This doesn't cause any problems + in our existing code since the base class never reads the anonymous slot + it declares, but it caused crashes when I tried to start using the slot + in an initial version of this patch. -2010-10-21 Adam Barth <abarth@webkit.org> + * runtime/JSWrapperObject.h: + (JSC::JSWrapperObject::JSWrapperObject): + (JSC::JSWrapperObject::internalValue): + (JSC::JSWrapperObject::setInternalValue): Resolved a problem where + our internal value was stored in two places: an anonymous slot, and a + data member which was not always visited during GC. Now, we only use the + data member, and we always visit it. (Instead of relying on certain + subclasses to set the OverridesMarkChildren bit, we set it ourselves.) - Reviewed by David Levin. + * runtime/NumberObject.cpp: + (JSC::NumberObject::NumberObject): No more need for JSGlobalData, since + we don't initialize the wrapped value in our constructor. - Remove Android build system - https://bugs.webkit.org/show_bug.cgi?id=48111 + * runtime/NumberObject.h: Removed meaningless declaration. - * Android.mk: Removed. + * runtime/StringObject.cpp: + (JSC::StringObject::StringObject): No more need for JSGlobalData, since + we don't initialize the wrapped value in our constructor. -2010-10-21 Kwang Yul Seo <skyul@company100.net> + * runtime/StringObject.h: Don't set the OverridesMarkChildren flag because + we do not in fact override markChildren. - Reviewed by Kent Tamura. + * runtime/StringPrototype.h: Declare an anonymous slot, since wrapper object + no longer does so for us. Also added an ASSERT to catch a latent bug, + where DatePrototype stomped on its base class's anonymous slot. Hard-coded + anonymous slots are a plague on our code. - [BREWMP] Add a String constructor which takes AECHAR* - https://bugs.webkit.org/show_bug.cgi?id=45043 +2011-03-14 Michael Saboff <msaboff@apple.com> - Add String(const AECHAR*) constructor for convenience. + Reviewed by Gavin Barraclough. - * wtf/text/WTFString.h: + Look-ahead assertions with back references don’t work as expected + https://bugs.webkit.org/show_bug.cgi?id=56082 -2010-10-21 Carlos Garcia Campos <cgarcia@igalia.com> + Changed parentheses assertion processing to temporarily back out the + number of known characters after the assertion while processing the + assertion. This was done so that assertions don't fail due to + checking the number of required characters as additional to the + rest of the express since assertions don't "consume" input. + Added a byte code to uncheck characters to support the change. - Reviewed by Martin Robinson. + * yarr/YarrInterpreter.cpp: + (JSC::Yarr::Interpreter::matchDisjunction): + (JSC::Yarr::ByteCompiler::uncheckInput): + (JSC::Yarr::ByteCompiler::emitDisjunction): + * yarr/YarrInterpreter.h: + (JSC::Yarr::ByteTerm::UncheckInput): - [GTK] Use GCharsetConverter instead of g_iconv in TextCodecGtk - https://bugs.webkit.org/show_bug.cgi?id=47896 +2011-03-14 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com> - * wtf/gobject/GTypedefs.h: + Reviewed by Laszlo Gombos. -2010-10-21 Adam Barth <abarth@webkit.org> + [Qt] Warning that round/roundf functions are already defined when compiled with RVCT 4 on symbian. + https://bugs.webkit.org/show_bug.cgi?id=56133 - Unreviewed, rolling out r70174. - http://trac.webkit.org/changeset/70174 - https://bugs.webkit.org/show_bug.cgi?id=41948 + Add condition to not compile webkit internal math round functions on RVCT compiler versions + from 3.0.0 because they are already defined in compiler math library. - This patch reverts a change that causes - http/tests/xmlhttprequest/origin-whitelisting-removal.html to crash. + * wtf/MathExtras.h: - * interpreter/Interpreter.cpp: - (JSC::Interpreter::throwException): +2011-03-14 Gavin Barraclough <barraclough@apple.com> + + Reviewed by Geoffrey Garen & Oliver Hunt. + + Bug 56284 - Add a dataflow intermediate representation for use in JIT generation. + + The JSC JIT presently generates code directly from the bytecode used by the interpreter. + This is not an optimal intermediate representation for JIT code generation, since it does + not capture liveness information of values, and provides little opportunity to perform + any static analysis for even primitive types. The JIT currently generates two code paths, + a fast path handling common cases, and a slower path handling less common operand types. + However the slow path jumps back into the fast path, meaning that information arising + from the earlier type checks cannot be propagated to later operations. + + This patch adds: + * a dataflow intermediate representation capable of describing a single basic block + of operations, + * a mechanism to convert a simple, single-block bytecode functions to the new IR, + * and a JIT code generator capable of generating code from this representation. + + The JIT generates two code paths, with the slower path not reentering the fast path + mid-block, allowing speculative optimizations to be made on the hot path, with type + information arising from these speculative decisions able to be propagated through the + dataflow. Code generation of both speculative and non-speculative paths exploits the type + and liveness information represented in the dataflow graph to attempt to avoid redundant + boxing and type-checking of values, and to remove unnecessary spills of temporary values + to the RegisterFile. + + The dataflow JIT currently can only support a subset of bytecode operations, limited to + arithmetic, bit-ops, and basic property access. Functions that cannot be compiled by the + dataflow JIT will be run using the existing JIT. The coverage of the dataflow JIT will be + expanded to include, control-flow, function calls, and then the long-tail of remaining + bytecode instructions. The JIT presently only support JSVALUE64, and as a consequence of + this only supports x86-64. + + The status of the dataflow JIT is currently work-in-progress. Limitations of the present + JIT code generation may cause performance regressions, particularly: + * the policy to only generate arithmetic code on the speculative path using integer + instructions, never using floating point. + * the policy to only generate arithmetic code on the non-speculative path using + floating point instructions, never using integer. + * always generating JSValue adds on the non-speculative path as a call out to a + C-function, never handling this in JIT code. + * always assuming by-Value property accesses on the speculative path to be array + accesses. + * generating all by-Value property accesses from the non-speculative path as a call + out to a C-function. + * generating all by-Indentifer property accesses as a call out to a C-function. + Due to these regressions, the code is landed in a state where it is disabled in most + cases by the ENABLE_DFG_JIT_RESTRICTIONS guard in Platform.h. As these regressions are + addressed, the JIT will be allowed to trigger in more cases. -2010-10-20 Simon Fraser <simon.fraser@apple.com> + * JavaScriptCore.xcodeproj/project.pbxproj: + - Added new files to Xcode project. + * dfg: Added. + - Added directory for new code. + * dfg/DFGByteCodeParser.cpp: Added. + * dfg/DFGByteCodeParser.h: Added. + - Contruct a DFG::Graph representation from a bytecode CodeBlock. + * dfg/DFGGenerationInfo.h: Added. + - Track type & register information for VirtualRegisters during JIT code generation. + * dfg/DFGGraph.cpp: Added. + * dfg/DFGGraph.h: Added. + - Dataflow graph intermediate representation for code generation. + * dfg/DFGJITCodeGenerator.cpp: Added. + * dfg/DFGJITCodeGenerator.h: Added. + - Base class for SpeculativeJIT & NonSpeculativeJIT to share common functionality. + * dfg/DFGJITCompiler.cpp: Added. + * dfg/DFGJITCompiler.h: Added. + - Class responsible for driving code generation of speculativeJIT & non-speculative + code paths from the dataflow graph. + * dfg/DFGNonSpeculativeJIT.cpp: Added. + * dfg/DFGNonSpeculativeJIT.h: Added. + - Used to generate the non-speculative code path, this make no assumptions + about operand types. + * dfg/DFGOperations.cpp: Added. + * dfg/DFGOperations.h: Added. + - Helper functions called from the JIT generated code. + * dfg/DFGRegisterBank.h: Added. + - Used to track contents of physical registers during JIT code generation. + * dfg/DFGSpeculativeJIT.cpp: Added. + * dfg/DFGSpeculativeJIT.h: Added. + - Used to generate the speculative code path, this make assumptions about + operand types to enable optimization. + * runtime/Executable.cpp: + - Add code to attempt to use the DFG JIT to compile a function, with fallback + to the existing JIT. + * wtf/Platform.h: + - Added compile guards to enable the DFG JIT. - Fix the EFL build. +2011-03-14 Geoffrey Garen <ggaren@apple.com> - * wtf/CMakeLists.txt: + Reviewed by Oliver Hunt. -2010-10-20 Simon Fraser <simon.fraser@apple.com> + Removed more cases of DeprecatedPtr (exception, SmallStrings) + https://bugs.webkit.org/show_bug.cgi?id=56332 - Fix Windows build: export needed symbols. + * runtime/Identifier.cpp: + (JSC::Identifier::add): + (JSC::Identifier::addSlowCase): Use a variable instead of a hard-coded + constant, to make this code less brittle. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * runtime/JSGlobalData.h: Use HeapRoot instead of DeprecatedPtr because + this reference is owned and managed directly by the heap. -2010-10-19 Simon Fraser <simon.fraser@apple.com> + * runtime/JSString.cpp: + (JSC::JSString::substringFromRope): + * runtime/JSString.h: + (JSC::jsSingleCharacterString): + (JSC::jsSingleCharacterSubstring): + (JSC::jsString): + (JSC::jsStringWithFinalizer): + (JSC::jsSubstring): + (JSC::jsOwnedString): Use a variable instead of a hard-coded + constant, to make this code less brittle. - Reviewed by Gavin Barraclough. + * runtime/SmallStrings.cpp: + (JSC::SmallStringsStorage::rep): + (JSC::SmallStringsStorage::SmallStringsStorage): + (JSC::SmallStrings::SmallStrings): + (JSC::SmallStrings::markChildren): + (JSC::SmallStrings::clear): + (JSC::SmallStrings::count): Use a variable instead of a hard-coded + constant, to make this code less brittle. - https://bugs.webkit.org/show_bug.cgi?id=47851 - - Add methods to DecimalNumber to return the buffer length - required for decimal and exponential output. - - Make some of the DecimalNumber code non-inline (no - effect on Sunspider), adding DecimalNumber.cpp to various - build systems. + * runtime/SmallStrings.h: + (JSC::SmallStrings::singleCharacterString): Use HeapRoot instead of + DeprecatedPtr because these references are owned and managed directly by + the heap. - Make some DecimalNumber methods 'const'. - - * Android.mk: - * Android.v8.wtf.mk: - * GNUmakefile.am: - * JavaScriptCore.exp: - * JavaScriptCore.gypi: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * runtime/NumberPrototype.cpp: - (JSC::numberProtoFuncToExponential): - (JSC::numberProtoFuncToFixed): - (JSC::numberProtoFuncToPrecision): - * wtf/DecimalNumber.cpp: Added. - (WTF::DecimalNumber::bufferLengthForStringDecimal): - (WTF::DecimalNumber::bufferLengthForStringExponential): - (WTF::DecimalNumber::toStringDecimal): - (WTF::DecimalNumber::toStringExponential): - * wtf/DecimalNumber.h: - (WTF::DecimalNumber::sign): - (WTF::DecimalNumber::exponent): - (WTF::DecimalNumber::significand): - (WTF::DecimalNumber::precision): - * wtf/dtoa.cpp: - (WTF::dtoa): - * wtf/dtoa.h: - * wtf/wtf.pri: - -2010-10-20 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r70165. - http://trac.webkit.org/changeset/70165 - https://bugs.webkit.org/show_bug.cgi?id=48007 - - It broke tests on Qt bot (Requested by Ossy on #webkit). - - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/text/TextPosition.h: Removed. - -2010-10-20 Brian Weinstein <bweinstein@apple.com> + Stop using FixedArray because we only want a very limited set + of classes to be able to use HeapRoot. (Replaced with manual ASSERTs.) - Reviewed by Adam Roben. - - Fix the Windows build after r70165. Move the copying of JavaScript headers from JavaScriptCore's post-build - step to JavaScriptCoreGenerated, so the copying is done even when a cpp file in JavaScriptCore is changed. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: + * runtime/WriteBarrier.h: + (JSC::operator==): + (JSC::WriteBarrier::WriteBarrier): + (JSC::HeapRoot::HeapRoot): + (JSC::HeapRoot::operator=): Added HeapRoot, which is allowed to set + without write barrier because we assume all HeapRoots are scanned during + all GC passes. -2010-10-20 Dumitru Daniliuc <dumi@chromium.org> +2011-03-14 Brian Weinstein <bweinstein@apple.com> - Unreviewed, fixing the Win build. + Reviewed by Adam Roben and Gavin Barraclough. - * JavaScriptCore.vcproj/WTF/WTF.vcproj: + FileSystemWin.cpp needs listDirectory() implementation + https://bugs.webkit.org/show_bug.cgi?id=56331 + <rdar://problem/9126635> + + Give StringConcatenate the ability to deal with const UChar*'s as a String type to append. -2010-10-20 Geoffrey Garen <ggaren@apple.com> + * wtf/text/StringConcatenate.h: - Reviewed by Darin Adler. - - https://bugs.webkit.org/show_bug.cgi?id=41948 - REGRESSION(r60392): Registerfile can be unwound too far following an exception +2011-03-14 Mark Rowe <mrowe@apple.com> - * interpreter/Interpreter.cpp: - (JSC::Interpreter::throwException): Walk the stack to calculate the high - water mark currently in use. It's not safe to assume that the current - CallFrame's high water mark is the highest high water mark because - calls do not always set up at the end of a CallFrame. A large caller - CallFrame can encompass a small callee CallFrame. + Reviewed by Oliver Hunt. -2010-10-20 Peter Rybin <peter.rybin@gmail.com> + <http://webkit.org/b/56304> REGRESSION(r80892): 100,000+ leaks seen on the build bot - Reviewed by Adam Barth. + * API/JSClassRef.cpp: + (OpaqueJSClass::OpaqueJSClass): Don't leak any existing entry for the given name if + the class definition contains duplicates. This also removes what look to be leaks + of the StringImpl instances that are used as keys: the HashMap key type is a RefPtr + which retains / releases the instances at the appropriate time, so explicitly calling + ref is not necessary. - HTML parser should provide script column position within HTML document to JavaScript engine - https://bugs.webkit.org/show_bug.cgi?id=45271 +2011-03-14 Oliver Hunt <oliver@apple.com> - Adds TextPosition* classes -- a structure that stores line/column/generation - level coordinates inside text document. Adds *BasedNumber classes -- typesafe int - wrappers that emphasize whether int number is used as zero-based or - one-based. + Fix windows build - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/text/TextPosition.h: Added. - (WTF::TextPosition::TextPosition): - (WTF::TextPosition::minimumPosition): - (WTF::TextPosition::belowRangePosition): - (WTF::ZeroBasedNumber::fromZeroBasedInt): - (WTF::ZeroBasedNumber::ZeroBasedNumber): - (WTF::ZeroBasedNumber::zeroBasedInt): - (WTF::ZeroBasedNumber::base): - (WTF::ZeroBasedNumber::belowBase): - (WTF::OneBasedNumber::fromOneBasedInt): - (WTF::OneBasedNumber::OneBasedNumber): - (WTF::OneBasedNumber::oneBasedInt): - (WTF::OneBasedNumber::convertAsZeroBasedInt): - (WTF::OneBasedNumber::convertToZeroBased): - (WTF::OneBasedNumber::base): - (WTF::OneBasedNumber::belowBase): - (WTF::toZeroBasedTextPosition): - (WTF::toOneBasedTextPosition): - (WTF::ZeroBasedNumber::convertToOneBased): - -2010-10-19 Kwang Yul Seo <skyul@company100.net> - - Reviewed by David Kilzer. - - [BREWMP] Turn off JIT for simulator build - https://bugs.webkit.org/show_bug.cgi?id=47937 - - We don't need to test x86 JIT. + * jit/JSInterfaceJIT.h: + (JSC::JSInterfaceJIT::emitLoadInt32): + (JSC::JSInterfaceJIT::tagFor): + (JSC::JSInterfaceJIT::payloadFor): + (JSC::JSInterfaceJIT::intPayloadFor): + (JSC::JSInterfaceJIT::intTagFor): + (JSC::JSInterfaceJIT::addressFor): - * wtf/Platform.h: +2011-03-11 Oliver Hunt <oliver@apple.com> -2010-10-19 Oliver Hunt <oliver@apple.com> + Reviewed by Gavin Barraclough. - Reviewed by Geoffrey Garen. + Ensure all values are correctly tagged in the registerfile + https://bugs.webkit.org/show_bug.cgi?id=56214 - Remove support for JSVALUE32 from JSC - https://bugs.webkit.org/show_bug.cgi?id=47948 + This patch makes sure that all JSCell pointers written to + the registerfile are correctly tagged as JSCells, and replaces + raw int usage with the immediate representation. - Remove all the code for supporting JSVALUE32 from JSC. + For performance, register pressure, and general saneness reasons + I've added abstractions for reading and writing the tag + and payload of integer registers directly for the JSVALUE64 + encoding. - * jit/JIT.cpp: - (JSC::JIT::privateCompileMainPass): - (JSC::JIT::privateCompileSlowCases): + * interpreter/Register.h: + (JSC::Register::withInt): + (JSC::Register::withCallee): + (JSC::Register::operator=): + (JSC::Register::i): + (JSC::Register::activation): + (JSC::Register::function): + (JSC::Register::propertyNameIterator): + (JSC::Register::scopeChain): * 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_urshift): - (JSC::JIT::emitSlow_op_urshift): - (JSC::JIT::emit_op_jnless): - (JSC::JIT::emitSlow_op_jnless): - (JSC::JIT::emit_op_jless): - (JSC::JIT::emitSlow_op_jless): - (JSC::JIT::emit_op_jlesseq): - (JSC::JIT::emitSlow_op_jlesseq): - (JSC::JIT::emit_op_bitand): - (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_mod): - (JSC::JIT::emitSlow_op_mod): * jit/JITCall.cpp: + (JSC::JIT::compileOpCallInitializeCallFrame): + (JSC::JIT::compileOpCallVarargs): + (JSC::JIT::compileOpCall): + * jit/JITCall32_64.cpp: + (JSC::JIT::compileOpCallInitializeCallFrame): + (JSC::JIT::compileOpCallVarargs): + (JSC::JIT::compileOpCall): + (JSC::JIT::compileOpCallSlowCase): * jit/JITInlineMethods.h: - (JSC::JIT::emitGetFromCallFrameHeaderPtr): - (JSC::JIT::emitGetFromCallFrameHeader32): + (JSC::JIT::emitPutToCallFrameHeader): + (JSC::JIT::emitPutCellToCallFrameHeader): + (JSC::JIT::emitPutIntToCallFrameHeader): * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_loop_if_lesseq): - (JSC::JIT::emit_op_bitnot): + (JSC::JIT::privateCompileCTINativeCall): + (JSC::JIT::emit_op_get_pnames): + (JSC::JIT::emit_op_next_pname): + (JSC::JIT::emit_op_load_varargs): + (JSC::JIT::emitSlow_op_load_varargs): + * jit/JITOpcodes32_64.cpp: + (JSC::JIT::privateCompileCTINativeCall): + (JSC::JIT::emit_op_get_pnames): (JSC::JIT::emit_op_next_pname): - * jit/JITPropertyAccess.cpp: - (JSC::JIT::emit_op_get_by_val): - (JSC::JIT::emit_op_put_by_val): - * jit/JITStubs.h: * jit/JSInterfaceJIT.h: + (JSC::JSInterfaceJIT::intPayloadFor): + (JSC::JSInterfaceJIT::intTagFor): * jit/SpecializedThunkJIT.h: + (JSC::SpecializedThunkJIT::returnJSValue): (JSC::SpecializedThunkJIT::returnDouble): - (JSC::SpecializedThunkJIT::tagReturnAsInt32): - * jit/ThunkGenerators.cpp: - (JSC::sqrtThunkGenerator): - (JSC::powThunkGenerator): - * runtime/Collector.cpp: - (JSC::isPossibleCell): - (JSC::typeName): - * runtime/JSCell.h: - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::JSGlobalData): - * runtime/JSGlobalData.h: - * runtime/JSGlobalObject.h: - (JSC::Structure::prototypeForLookup): - * runtime/JSImmediate.h: - (JSC::reinterpretIntptrToDouble): - (JSC::JSImmediate::isIntegerNumber): - (JSC::JSImmediate::isDouble): - (JSC::JSImmediate::areBothImmediateIntegerNumbers): - (JSC::JSImmediate::makeDouble): - (JSC::JSImmediate::doubleValue): - (JSC::JSImmediate::toBoolean): - (JSC::JSImmediate::fromNumberOutsideIntegerRange): - (JSC::JSImmediate::from): - (JSC::JSImmediate::toDouble): - (JSC::JSFastMath::rightShiftImmediateNumbers): - * runtime/JSNumberCell.cpp: - * runtime/JSNumberCell.h: - * runtime/JSObject.h: - (JSC::JSObject::JSObject): - * runtime/JSValue.h: - * runtime/NumberObject.h: - * wtf/Platform.h: + (JSC::SpecializedThunkJIT::returnInt32): + (JSC::SpecializedThunkJIT::returnJSCell): -2010-10-19 Csaba Osztrogonác <ossy@webkit.org> - - Reviewed by Geoffrey Garen. - - BytecodeGenerator::m_lastOpcodePosition must be initialized in all constructors - https://bugs.webkit.org/show_bug.cgi?id=47920 - - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): Add missing member initialization. - -2010-10-19 Kwang Yul Seo <skyul@company100.net> - - Reviewed by David Kilzer. - - RVCT fails to compile DateMath.cpp due to overloaded function pow - https://bugs.webkit.org/show_bug.cgi?id=47844 - - Choose std::pow(double, double) among multiple overloaded pow functions - to fix build for RVCT. - - * wtf/DateMath.cpp: - (WTF::parseES5DateFromNullTerminatedCharacters): - -2010-10-19 Patrick Gansterer <paroga@webkit.org> - - Reviewed by David Kilzer. - - Use UChar instead of wchar_t in UnicodeWinCE - https://bugs.webkit.org/show_bug.cgi?id=47904 - - Make UnicodeWinCE more portable, so we can use it for other ports too. - - * wtf/unicode/wince/UnicodeWinCE.cpp: - (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::isAlphanumeric): - (WTF::Unicode::toTitleCase): - (WTF::Unicode::mirroredChar): - (WTF::Unicode::digitValue): - * wtf/unicode/wince/UnicodeWinCE.h: - (WTF::Unicode::isSeparatorSpace): - (WTF::Unicode::isHighSurrogate): - (WTF::Unicode::isLowSurrogate): - (WTF::Unicode::umemcasecmp): - (WTF::Unicode::surrogateToUcs4): - -2010-10-19 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Andreas Kling. - - Fix style of UnicodeWinCE - https://bugs.webkit.org/show_bug.cgi?id=47818 - - * wtf/unicode/wince/UnicodeWinCE.cpp: - (WTF::Unicode::toLower): - (WTF::Unicode::toUpper): - * wtf/unicode/wince/UnicodeWinCE.h: - -2010-10-18 Xan Lopez <xlopez@igalia.com> - - Reviewed by Martin Robinson. - - * GNUmakefile.am: add missing file. - -2010-10-18 Oliver Hunt <oliver@apple.com> +2011-03-13 Geoffrey Garen <ggaren@apple.com> Reviewed by Sam Weinig. - Strict mode: Functions created with the function constructor don't implement strict mode semantics - https://bugs.webkit.org/show_bug.cgi?id=47860 - - When creating the FunctionExecutable for a new function the function constructor - was always passing false for whether or not a function was strict, rather than - using the information from the freshly parsed function itself. - - * runtime/Executable.cpp: - (JSC::FunctionExecutable::fromGlobalCode): - -2010-10-18 Oliver Hunt <oliver@apple.com> - - Reviewed by Darin Adler. - - Strict mode: |this| should be undefined if it is not explicitly provided - https://bugs.webkit.org/show_bug.cgi?id=47833 - - To make strict mode behave correctly we want to pass undefined instead of null - as the default this value. This has no impact on behaviour outside of strict - mode as both values are replaced with the global object if necessary. - - * bytecompiler/NodesCodegen.cpp: - (JSC::FunctionCallValueNode::emitBytecode): - (JSC::FunctionCallResolveNode::emitBytecode): - (JSC::CallFunctionCallDotNode::emitBytecode): - (JSC::ApplyFunctionCallDotNode::emitBytecode): - - -2010-10-18 Darin Adler <darin@apple.com> - - Reviewed by Anders Carlsson. + A few Heap-related renames (sans file moves, which should come next) + https://bugs.webkit.org/show_bug.cgi?id=56283 + + ConservativeSet => ConservativeRoots. "Set" was misleading, since items + are not uniqued. Also, "Roots" is more specific about what's in the set. + + MachineStackMarker => MachineThreads. "Threads" is more descriptive of + the fact that this class maintains a set of all threads using JSC. + "Stack" was misleading, since this class traverses stacks and registers. + "Mark" was misleading, since this class doesn't mark anything anymore. + + registerThread => addCurrentThread. "Current" is more specific. + unregisterThread => removeCurrentThread. "Current" is more specific. + + "currentThreadRegistrar" => threadSpecific. The only point of this data + structure is to register a thread-specific destructor with a pointer to + this. + + "mark...Conservatively" => "gather". "Mark" is not true, since these + functions don't mark anything. "Conservatively" is redundant, since they + take "ConservativeRoots" as an argument. - Make a nullptr that works with OwnPtr and RefPtr - https://bugs.webkit.org/show_bug.cgi?id=47756 + * API/APIShims.h: + (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): + * JavaScriptCore.exp: + * runtime/ConservativeSet.cpp: + (JSC::ConservativeRoots::grow): + (JSC::ConservativeRoots::add): + * runtime/ConservativeSet.h: + (JSC::ConservativeRoots::ConservativeRoots): + (JSC::ConservativeRoots::~ConservativeRoots): + (JSC::ConservativeRoots::size): + (JSC::ConservativeRoots::roots): + * runtime/Heap.cpp: + (JSC::Heap::Heap): + (JSC::Heap::markRoots): + * runtime/Heap.h: + (JSC::Heap::machineThreads): + * runtime/JSGlobalData.h: + (JSC::JSGlobalData::makeUsableFromMultipleThreads): + * runtime/MachineStackMarker.cpp: + (JSC::MachineThreads::MachineThreads): + (JSC::MachineThreads::~MachineThreads): + (JSC::MachineThreads::makeUsableFromMultipleThreads): + (JSC::MachineThreads::addCurrentThread): + (JSC::MachineThreads::removeThread): + (JSC::MachineThreads::removeCurrentThread): + (JSC::MachineThreads::gatherFromCurrentThreadInternal): + (JSC::MachineThreads::gatherFromCurrentThread): + (JSC::MachineThreads::gatherFromOtherThread): + (JSC::MachineThreads::gatherConservativeRoots): + * runtime/MachineStackMarker.h: + * runtime/MarkStack.h: + (JSC::MarkStack::append): - * JavaScriptCore.xcodeproj/project.pbxproj: Added NullPtr.h. +2011-03-13 David Kilzer <ddkilzer@apple.com> - * wtf/NullPtr.h: Added. + BUILD FIX for armv7 after r80969 - * wtf/OwnArrayPtr.h: Add an overload of = taking nullptr. - * wtf/OwnPtr.h: Ditto. - * wtf/PassOwnArrayPtr.h: Ditto. - * wtf/PassOwnPtr.h: Ditto. - * wtf/PassRefPtr.h: Ditto. - * wtf/RefPtr.h: Ditto. - * wtf/RetainPtr.h: Ditto. + Bug 56270 - The JIT 'friend's many classes in JSC; start unwinding this. + <https://bugs.webkit.org/show_bug.cgi?id=56270> -2010-10-18 Oliver Hunt <oliver@apple.com> + * assembler/MacroAssemblerARMv7.h: + (JSC::MacroAssemblerARMv7::load32): Made void* address argument + const. + (JSC::MacroAssemblerARMv7::store32): Ditto. - Reviewed by Sam Weinig. +2011-03-13 Geoffrey Garen <ggaren@apple.com> - Strict mode: JIT doesn't check for |this| being an immediate before dereferencing - https://bugs.webkit.org/show_bug.cgi?id=47826 + Not reviewed. - There's no guarantee that |this| will be a cell in a strict mode function, so - don't claim that it is. + Try to fix the Mac build. - * bytecode/CodeBlock.h: - (JSC::CodeBlock::isKnownNotImmediate): + * JavaScriptCore.xcodeproj/project.pbxproj: Make sure to forward + ConervativeSet.h, since it's now visible when compiling other projects. -2010-10-18 Zoltan Herczeg <zherczeg@webkit.org> +2011-03-13 Geoffrey Garen <ggaren@apple.com> Reviewed by Oliver Hunt. - if (0) throw "x" ; else { } throws parse error after r69906 - https://bugs.webkit.org/show_bug.cgi?id=47807 - - r69906 introduced a bug: the semicolon is not parsed after a throw - expression anymore. Thus, the semicolon terminates the "if" parsing - in the example above, and the else token results a parse error. - - * parser/JSParser.cpp: - (JSC::JSParser::parseThrowStatement): - -2010-10-18 Peter Varga <pvarga@inf.u-szeged.hu> + Removed another case of DeprecatedPtr (ConservativeSet) + https://bugs.webkit.org/show_bug.cgi?id=56281 + + The ConservativeSet is an internal data structure used during marking, + so direct pointers are fine. - Reviewed by Andreas Kling. + * runtime/ConservativeSet.cpp: + (JSC::ConservativeSet::grow): + * runtime/ConservativeSet.h: Added some accessors, for use by MarkStack::append. + (JSC::ConservativeSet::~ConservativeSet): Fixed a typo where we calculated + the size of the set based on sizeof(DeprecatedPtr<T>*) instead of + sizeof(DeprecatedPtr<T>). I'm not sure if this had real-world implications or not. + (JSC::ConservativeSet::size): + (JSC::ConservativeSet::set): Use direct pointers, as stated above. - Remove some unnecessary lines of code from Parser.cpp - https://bugs.webkit.org/show_bug.cgi?id=47816 + * runtime/Heap.cpp: + (JSC::Heap::markRoots): + * runtime/MarkStack.h: + (JSC::MarkStack::append): Created a special case of append for + ConservativeSet. I didn't want to add back a generic "append JSCell*" + function, since other class might start using that wrong. (In the end, + this function might go away, since the Heap will want to do something + slightly more interesting with the conservative set, but this is OK for + now.) - * parser/Parser.cpp: +2011-03-13 Geoffrey Garen <ggaren@apple.com> -2010-10-18 Xan Lopez <xlopez@igalia.com> + Reviewed by Oliver Hunt. - Reviewed by Csaba Osztrogonác. + Removed another case of DeprecatedPtr (PutPropertySlot) + https://bugs.webkit.org/show_bug.cgi?id=56278 - Build broken with JIT disabled - https://bugs.webkit.org/show_bug.cgi?id=47801 + * runtime/PutPropertySlot.h: + (JSC::PutPropertySlot::setExistingProperty): + (JSC::PutPropertySlot::setNewProperty): + (JSC::PutPropertySlot::base): Direct pointer is fine for PutPropertySlot, + since it's a stack-allocated temporary. - This is a regression caused by r69940. +2011-03-13 Geoffrey Garen <ggaren@apple.com> - * interpreter/Interpreter.cpp: - (JSC::Interpreter::resolveBase): + Reviewed by Oliver Hunt. -2010-10-18 Zoltan Horvath <zoltan@webkit.org> + Removed one case of DeprecatedPtr (ScopeChainIterator) + https://bugs.webkit.org/show_bug.cgi?id=56277 - Reviewed by Darin Adler. + * runtime/ScopeChain.h: Direct pointer is fine for ScopeChainIterator, + since it's a stack-allocated temporary. - Change FastAllocBase implementation into a macro - https://bugs.webkit.org/show_bug.cgi?id=42998 +2011-03-13 Gavin Barraclough <barraclough@apple.com> - It was investigated in bug #33896 that inheriting classes from FastAllocBase - can result in objects getting larger which leads to memory regressions. - Using a macro instead of inheriting classes from FastAllocBase would solve the issue. + Reviewed by Sam Weinig. - * wtf/FastAllocBase.h: Add a WTF_MAKE_FAST_ALLOCATED macro + Bug 56273 - Add three operand forms to MacroAssember operations. -2010-10-17 Oliver Hunt <oliver@apple.com> + Adding for X86(_64) for now, should be rolled out to other backends as necessary. + These may allow more efficient code generation in some cases, avoiding the need + for unnecessary register-register move instructions. - Reviewed by Sam Weinig. + * assembler/AbstractMacroAssembler.h: + (JSC::AbstractMacroAssembler::Jump::link): + (JSC::AbstractMacroAssembler::Jump::linkTo): + - marked these methods const. + (JSC::AbstractMacroAssembler::Jump::isSet): + - add a method to check whether a Jump object has been set to + reference an instruction, or is in a null, unset state. + * assembler/MacroAssemblerCodeRef.h: + (JSC::FunctionPtr::FunctionPtr): + - add non-explicit constructor, for FunctionPtr's to C/C++ functions. + * assembler/MacroAssemblerX86Common.h: + (JSC::MacroAssemblerX86Common::and32): + (JSC::MacroAssemblerX86Common::lshift32): + (JSC::MacroAssemblerX86Common::or32): + (JSC::MacroAssemblerX86Common::rshift32): + (JSC::MacroAssemblerX86Common::urshift32): + (JSC::MacroAssemblerX86Common::xor32): + (JSC::MacroAssemblerX86Common::moveDouble): + (JSC::MacroAssemblerX86Common::addDouble): + (JSC::MacroAssemblerX86Common::divDouble): + (JSC::MacroAssemblerX86Common::subDouble): + (JSC::MacroAssemblerX86Common::mulDouble): + (JSC::MacroAssemblerX86Common::branchTruncateDoubleToInt32): + (JSC::MacroAssemblerX86Common::branchTest32): + (JSC::MacroAssemblerX86Common::branchTest8): + (JSC::MacroAssemblerX86Common::branchAdd32): + (JSC::MacroAssemblerX86Common::branchMul32): + (JSC::MacroAssemblerX86Common::branchSub32): + - add three operand forms of these instructions. + * assembler/MacroAssemblerX86_64.h: + (JSC::MacroAssemblerX86_64::addDouble): + (JSC::MacroAssemblerX86_64::convertInt32ToDouble): + (JSC::MacroAssemblerX86_64::loadPtr): + (JSC::MacroAssemblerX86_64::branchTestPtr): + * assembler/X86Assembler.h: + (JSC::X86Assembler::JmpSrc::isSet): + - add a method to check whether a JmpSrc object has been set to + reference an instruction, or is in a null, unset state. + (JSC::X86Assembler::movsd_rr): + - added FP register-register move. + (JSC::X86Assembler::linkJump): + - Add an assert to check jumps aren't linked more than once. + * jit/JITInlineMethods.h: + (JSC::JIT::emitLoadInt32ToDouble): + - load integers to the FPU via regsiters on x86-64. - Strict mode: arguments is not valid as the base expression for pre- or post-fix expressions - https://bugs.webkit.org/show_bug.cgi?id=47791 +2011-03-13 Gavin Barraclough <barraclough@apple.com> - Simple fix, check for arguments in addition to eval. + ARM build fix. - * parser/JSParser.cpp: - (JSC::JSParser::parseUnaryExpression): + * assembler/MacroAssemblerARM.h: + (JSC::MacroAssemblerARM::load32): -2010-10-17 Oliver Hunt <oliver@apple.com> +2011-03-13 Gavin Barraclough <barraclough@apple.com> Reviewed by Sam Weinig. - Strict mode: Assignment that would create a global should be a late ReferenceError, not a syntax failure - https://bugs.webkit.org/show_bug.cgi?id=47788 - - Fixing this required a couple of changes: - * resolve_base now has a flag to indicate whether it is being used for a put in strict mode. - this allows us to throw an exception when we're doing a completely generic resolve for - assignment, and that assignment would create a new global. - * There is a new opcode 'op_ensure_property_exists' that is used to determine whether - the property being assigned to already exists on the global object. This currently - has no caching, but such caching could be added relatively trivially. It is only used - in the case where we know that a property will be placed on the global object, and - we cannot verify that the property already exists. + Bug 56270 - The JIT 'friend's many classes in JSC; start unwinding this. - In the jit we plant a call to cti_op_resolve_base_strict_put in the effected case rather - than making op_resolve_base have an additional runtime branch. + The JIT need to 'friend' other classes in order to be able to calculate offsets + of various properties, or the absolute addresses of members within specific objects, + in order to JIT generate code that will access members within the class when run. - There's also a new helper function to create the exception for the invalid assignment. + Instead of using friends in these cases, switch to providing specific accessor + methods to provide this information. In the case of offsets, these can be static + functions, and in the case of pointers to members within a specific object these can + be const methods returning pointers to const values, to prevent clients from + modifying values otherwise encapsulated within classes. - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::dump): - * bytecode/Opcode.h: - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::emitResolveBase): - (JSC::BytecodeGenerator::emitResolveBaseForPut): - * bytecompiler/BytecodeGenerator.h: - * bytecompiler/NodesCodegen.cpp: - (JSC::AssignResolveNode::emitBytecode): - (JSC::ForInNode::emitBytecode): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::resolveBase): - (JSC::Interpreter::privateExecute): + * bytecode/SamplingTool.h: + * interpreter/Register.h: + * interpreter/RegisterFile.h: + * runtime/JSArray.h: + * runtime/JSCell.h: + * runtime/JSTypeInfo.h: + * runtime/JSVariableObject.h: + * runtime/Structure.h: + * wtf/RefCounted.h: + - Change these classes to no longer friend the JIT, add accessors for member offsets. * jit/JIT.cpp: - (JSC::JIT::privateCompileMainPass): - * jit/JIT.h: + * jit/JITCall32_64.cpp: + * jit/JITInlineMethods.h: * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_resolve_base): - (JSC::JIT::emit_op_ensure_property_exists): * jit/JITOpcodes32_64.cpp: - (JSC::JIT::emit_op_resolve_base): - (JSC::JIT::emit_op_ensure_property_exists): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - * jit/JITStubs.h: - * parser/JSParser.cpp: - (JSC::JSParser::parseProgram): - * runtime/ExceptionHelpers.cpp: - (JSC::createErrorForInvalidGlobalAssignment): - * runtime/ExceptionHelpers.h: - * runtime/Operations.h: - (JSC::resolveBase): - -2010-10-17 Simon Fraser <simon.fraser@apple.com> - - First part of fix for Windows build failure. Will wait for the - next set of link errors to determine the mangled forms for dtoaRoundSF - and dtoaRoundDP. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - -2010-10-17 Simon Fraser <simon.fraser@apple.com> - - Reviewed by Nikolas Zimmermann. - - Very large and small numbers fail to round-trip through CSS - https://bugs.webkit.org/show_bug.cgi?id=20674 - - New exports required to use DecimalNumber in WebCore. - - * JavaScriptCore.exp: - * JavaScriptCore.xcodeproj/project.pbxproj: - -2010-10-16 Kyusun Kim <maniagoon@company100.net> - - Reviewed by Alexey Proskuryakov. - - Add using declarations for currentTimeMS() and parseDateFromNullTerminatedCharacters() - https://bugs.webkit.org/show_bug.cgi?id=47758 - - * wtf/CurrentTime.h: - * wtf/DateMath.h: - -2010-10-16 Patrick Gansterer <paroga@webkit.org> + * jit/JITPropertyAccess.cpp: + * jit/JITPropertyAccess32_64.cpp: + - Change the JIT to use class accessors, rather than taking object ofsets directly. + * assembler/AbstractMacroAssembler.h: + * assembler/MacroAssemblerX86_64.h: + * assembler/X86Assembler.h: + - Since the accessors for objects members return const pointers to retain encapsulation, + methods generating code with absolute addresses must be able to handle const pointers + (the JIT doesn't write to these values, do dies treat the pointer to value as const + from within the C++ code of the JIT, if not at runtime!). - Reviewed by Adam Barth. +2011-03-12 Sheriff Bot <webkit.review.bot@gmail.com> - Rename StringHasherFunctions.h to StringHasher.h - https://bugs.webkit.org/show_bug.cgi?id=47200 + Unreviewed, rolling out r80919. + http://trac.webkit.org/changeset/80919 + https://bugs.webkit.org/show_bug.cgi?id=56251 - Now StringHasherFunctions.h only contains the StringHasher class, so rename it to the correct name. + all windows bots failed to compile this change (Requested by + loislo on #webkit). - * GNUmakefile.am: - * JavaScriptCore.gypi: * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/StringHashFunctions.h: Removed. - * wtf/StringHasher.h: Copied from JavaScriptCore/wtf/StringHashFunctions.h. - * wtf/text/StringHash.h: - * wtf/text/StringImpl.h: - -2010-10-15 Oliver Hunt <oliver@apple.com> - - Reviewed by Sam Weinig. - - Automatic Semicolon Insertion incorrectly inserts semicolon after break, continue, and return followed by a newline - https://bugs.webkit.org/show_bug.cgi?id=47762 - - The old YACC parser depended on the lexer for some classes of semicolon insertion. - The new parser handles ASI entirely on its own so when the lexer inserts a semicolon - on its own the net result is a spurious semicolon in the input stream. This can result - in incorrect parsing in some cases: - - if (0) - break - ;else {} - - Would result in a parse failure as the output from the lexer is essentially - - if (0) - break - ;;else - - So the second semicolon is interpreted as a empty statement, which terminates the if, - making the else an error. - - - * parser/JSParser.cpp: - (JSC::JSParser::parseThrowStatement): - Parsing of throw statement was wrong, and only worked due to the weird behaviour - in the lexer - * parser/Lexer.cpp: - (JSC::Lexer::lex): - Remove bogus semicolon insertion from the newline handling - -2010-10-15 Nikolas Zimmermann <nzimmermann@rim.com> - - Reviewed by Dirk Schulze. - - Replace some String::format() usages by StringConcatenate in WebKit - https://bugs.webkit.org/show_bug.cgi?id=47714 - - * wtf/text/StringConcatenate.h: Add UChar specific StringTypeAdapter, to accept single UChars in makeString(). - -2010-10-15 Ilya Tikhonovsky <loislo@chromium.org> - - Unreviewed build fix for Debug Leopard which is failng to compile after r69842. - - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::ByteCompiler::emitDisjunction): - -2010-10-15 Peter Varga <pvarga@inf.u-szeged.hu> - - Reviewed by Gavin Barraclough. - - The parenthetical assertion checking isn't working in some cases with YARR - Interpreter - https://bugs.webkit.org/show_bug.cgi?id=46893 - - Calculate the countToCheck value of a TypeParentheticalAssertion by - subtracting the number of characters which follows - a TypeParentheticalAssertion term with the number of characters which should - be matched by terms which are contained - in the TypeParentheticalAssertion term (minimumSize). - - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::ByteCompiler::emitDisjunction): - -2010-10-14 Nathan Vander Wilt <nate@andyet.net> - - Reviewed by Darin Adler. - - Added parser for ECMAScript 5 standard date format, so Date.parse can handle RFC 3339 timestamps: https://bugs.webkit.org/show_bug.cgi?id=44632 - + * bytecode/StructureStubInfo.cpp: + * interpreter/Register.h: + (JSC::Register::withInt): + (JSC::Register::withCallee): + (JSC::Register::operator=): + (JSC::Register::i): + (JSC::Register::activation): + (JSC::Register::function): + (JSC::Register::propertyNameIterator): + (JSC::Register::scopeChain): + * jit/JIT.h: + * jit/JITCall.cpp: + (JSC::JIT::compileOpCallInitializeCallFrame): + (JSC::JIT::compileOpCallVarargs): + (JSC::JIT::compileOpCall): + * jit/JITCall32_64.cpp: + (JSC::JIT::compileOpCallInitializeCallFrame): + (JSC::JIT::compileOpCallVarargs): + (JSC::JIT::compileOpCall): + (JSC::JIT::compileOpCallSlowCase): + * jit/JITInlineMethods.h: + (JSC::JIT::emitPutToCallFrameHeader): + * jit/JITOpcodes.cpp: + (JSC::JIT::privateCompileCTINativeCall): + (JSC::JIT::emit_op_get_pnames): + (JSC::JIT::emit_op_next_pname): + (JSC::JIT::emit_op_load_varargs): + (JSC::JIT::emitSlow_op_load_varargs): + * jit/JITOpcodes32_64.cpp: + (JSC::JIT::privateCompileCTINativeCall): + (JSC::JIT::emit_op_get_pnames): + (JSC::JIT::emit_op_next_pname): + * jit/JSInterfaceJIT.h: + (JSC::JSInterfaceJIT::payloadFor): + * jit/SpecializedThunkJIT.h: + (JSC::SpecializedThunkJIT::returnJSValue): + (JSC::SpecializedThunkJIT::returnDouble): + (JSC::SpecializedThunkJIT::returnInt32): + (JSC::SpecializedThunkJIT::returnJSCell): + * runtime/ArgList.cpp: * runtime/DateConversion.cpp: - (JSC::parseDate): + * runtime/GCActivityCallbackCF.cpp: + * runtime/Identifier.cpp: + * runtime/JSActivation.h: + (JSC::asActivation): + * runtime/JSLock.cpp: + * runtime/JSNumberCell.cpp: + * runtime/JSObject.h: + * runtime/JSPropertyNameIterator.h: + * runtime/JSValue.h: + * runtime/JSZombie.cpp: + * runtime/MarkedBlock.cpp: + * runtime/MarkedSpace.cpp: + * runtime/PropertyNameArray.cpp: + * runtime/ScopeChain.h: + (JSC::ExecState::globalThisValue): * wtf/DateMath.cpp: - (WTF::ymdhmsToSeconds): - (WTF::parseES5DateFromNullTerminatedCharacters): - * wtf/DateMath.h: -2010-10-14 Nikolas Zimmermann <nzimmermann@rim.com> +2011-03-11 Oliver Hunt <oliver@apple.com> Reviewed by Gavin Barraclough. - Replace lots of String::format() usages by StringConcatenate - https://bugs.webkit.org/show_bug.cgi?id=47664 - - Add StringTypeAdapter<char> to accept single characters for makeString(). - - * wtf/text/StringConcatenate.h: - (WTF::makeString): - -2010-10-14 David Goodwin <david_goodwin@apple.com> - - Reviewed by Darin Adler. + Ensure all values are correctly tagged in the registerfile + https://bugs.webkit.org/show_bug.cgi?id=56214 - need way to measure size of JITed ARM code - https://bugs.webkit.org/show_bug.cgi?id=47121 + This patch makes sure that all JSCell pointers written to + the registerfile are correctly tagged as JSCells, and replaces + raw int usage with the immediate representation. - * assembler/LinkBuffer.h: - (JSC::LinkBuffer::linkCode): - (JSC::LinkBuffer::dumpLinkStats): - (JSC::LinkBuffer::dumpCode): + For performance, register pressure, and general saneness reasons + I've added abstractions for reading and writing the tag + and payload of integer registers directly for the JSVALUE64 + encoding. -2010-10-14 Peter Varga <pvarga@inf.u-szeged.hu> + * interpreter/Register.h: + (JSC::Register::withInt): + (JSC::Register::withCallee): + (JSC::Register::operator=): + (JSC::Register::i): + (JSC::Register::activation): + (JSC::Register::function): + (JSC::Register::propertyNameIterator): + (JSC::Register::scopeChain): + * jit/JIT.h: + * jit/JITCall.cpp: + (JSC::JIT::compileOpCallInitializeCallFrame): + (JSC::JIT::compileOpCallVarargs): + (JSC::JIT::compileOpCall): + * jit/JITCall32_64.cpp: + (JSC::JIT::compileOpCallInitializeCallFrame): + (JSC::JIT::compileOpCallVarargs): + (JSC::JIT::compileOpCall): + (JSC::JIT::compileOpCallSlowCase): + * jit/JITInlineMethods.h: + (JSC::JIT::emitPutToCallFrameHeader): + (JSC::JIT::emitPutCellToCallFrameHeader): + (JSC::JIT::emitPutIntToCallFrameHeader): + * jit/JITOpcodes.cpp: + (JSC::JIT::privateCompileCTINativeCall): + (JSC::JIT::emit_op_get_pnames): + (JSC::JIT::emit_op_next_pname): + (JSC::JIT::emit_op_load_varargs): + (JSC::JIT::emitSlow_op_load_varargs): + * jit/JITOpcodes32_64.cpp: + (JSC::JIT::privateCompileCTINativeCall): + (JSC::JIT::emit_op_get_pnames): + (JSC::JIT::emit_op_next_pname): + * jit/JSInterfaceJIT.h: + (JSC::JSInterfaceJIT::intPayloadFor): + (JSC::JSInterfaceJIT::intTagFor): + * jit/SpecializedThunkJIT.h: + (JSC::SpecializedThunkJIT::returnJSValue): + (JSC::SpecializedThunkJIT::returnDouble): + (JSC::SpecializedThunkJIT::returnInt32): + (JSC::SpecializedThunkJIT::returnJSCell): - Reviewed by Gavin Barraclough. +2011-03-11 Dimitri Glazkov <dglazkov@chromium.org> - The backreference checking isn't working in some cases with YARR Interpreter - https://bugs.webkit.org/show_bug.cgi?id=46904 + Reviewed by Eric Seidel. - The Interpreter::matchBackReference() function returns true without matching - when a backreference points to the same parentheses where it is. + Introduce project_dir variable and make paths a whole lot saner. Ok, a little bit saner. + https://bugs.webkit.org/show_bug.cgi?id=56231 - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::Interpreter::matchBackReference): + * JavaScriptCore.gypi: Added project_dir variable. + * gyp/JavaScriptCore.gyp: Changed to use project_dir, rather than DEPTH/JavaScriptCore. + * gyp/generate-dtrace-header.sh: Changed to use project_dir. -2010-10-14 No'am Rosenthal <noam.rosenthal@nokia.com> +2011-03-11 Dimitri Glazkov <dglazkov@chromium.org> - Reviewed by Andreas Kling. + Reviewed by Adam Barth. - [Qt] Text breaking is slow: enable ICU as an opt-in - https://bugs.webkit.org/show_bug.cgi?id=40332 + Start using derived sources correctly and link minidom with JavaScriptCore gyp project. + https://bugs.webkit.org/show_bug.cgi?id=56217 - Added a config flag that enables ICU as an opt-in instead of the Qt specific code. - Because of the inclusion of ICU headers, some explicit casting was necessary in UnicodeQt4.h + * gyp/JavaScriptCore.gyp: Added derived source files and passing of shared directory + to the scripts. + * gyp/generate-derived-sources.sh: Changed to use passed directory. + * gyp/generate-dtrace-header.sh: Ditto. - * JavaScriptCore.pri: - * wtf/unicode/qt4/UnicodeQt4.h: - (WTF::Unicode::toLower): - (WTF::Unicode::toUpper): - (WTF::Unicode::toTitleCase): - (WTF::Unicode::foldCase): - (WTF::Unicode::isPrintableChar): - (WTF::Unicode::isSeparatorSpace): - (WTF::Unicode::isPunct): - (WTF::Unicode::isLower): - (WTF::Unicode::mirroredChar): - (WTF::Unicode::combiningClass): - (WTF::Unicode::direction): - (WTF::Unicode::category): - -2010-10-14 Anton Faern <anton@bladehawke.com> +2011-03-11 Eric Carlson <eric.carlson@apple.com> - Reviewed by Csaba Osztrogonác. + Reviewed by Sam Weinig. - https://bugs.webkit.org/show_bug.cgi?id=47658 - NetBSD was not included in the WTF_PLATFORM_FOO to WTF_OS_FOO - change. This means that OS(NETBSD) is also undefined. + <rdar://problem/8955589> Adopt AVFoundation media back end on Lion. - * wtf/Platform.h: s/_PLATFORM_/_OS_/ for NetBSD + No new tests, existing media tests cover this. -2010-10-13 David Goodwin <david_goodwin@apple.com> + * JavaScriptCore.exp: Export cancelCallOnMainThread + * wtf/Platform.h: Define WTF_USE_AVFOUNDATION. - Reviewed by Oliver Hunt. +2011-03-11 Dimitri Glazkov <dglazkov@chromium.org> - ARMv7 JIT should generated conditional branches when possible - https://bugs.webkit.org/show_bug.cgi?id=47384 + Reviewed by Adam Barth. - Use different jump padding sizes for conditional and unconditional - jumps (12 bytes and 10 bytes respectively). This allows the JIT to - include the IT instruction as part of the conditional jump sequence - which in turn allows it to optimize away the IT using an ARMv7 - conditional branch instruction. Use 2-byte B(T1) and 4-byte B(T3) for - conditional branches when displacement is in range. Also use IT/B(T4) - for conditional branch when displacement does not fit in B(T3). + Tweak dylib paths and add dtrace header generation action to JavaScriptCore gyp project. + https://bugs.webkit.org/show_bug.cgi?id=56207 - For unconditional jump, instruction selection options are: - B(T2), B(T4), MOVW/MOVT/BX. For conditional jump, instruction selection - options are: B(T1), B(T3), IT/B(T4), ITTT/MOVW/MOVT/BX. + * JavaScriptCore.gypi: Added Tracing.d to the sources. + * gyp/generate-dtrace-header.sh: Added. + * gyp/JavaScriptCore.gyp: Updated dylib paths (now the project can see them), + and added DTrace header generating step. - * assembler/ARMv7Assembler.cpp: - * assembler/ARMv7Assembler.h: - (JSC::ARMv7Assembler::JmpSrc::JmpSrc): - (JSC::ARMv7Assembler::ifThenElse): - (JSC::ARMv7Assembler::jumpSizeDelta): - (JSC::ARMv7Assembler::canCompact): - (JSC::ARMv7Assembler::computeJumpType): - (JSC::ARMv7Assembler::link): - (JSC::ARMv7Assembler::canBeJumpT1): - (JSC::ARMv7Assembler::canBeJumpT3): - (JSC::ARMv7Assembler::canBeJumpT4): - (JSC::ARMv7Assembler::linkJumpT1): - (JSC::ARMv7Assembler::linkJumpT3): - (JSC::ARMv7Assembler::linkJumpT4): - (JSC::ARMv7Assembler::linkConditionalJumpT4): - (JSC::ARMv7Assembler::linkBX): - (JSC::ARMv7Assembler::linkConditionalBX): - (JSC::ARMv7Assembler::linkJumpAbsolute): - * assembler/LinkBuffer.h: - (JSC::LinkBuffer::linkCode): - * assembler/MacroAssemblerARMv7.h: - (JSC::MacroAssemblerARMv7::canCompact): - (JSC::MacroAssemblerARMv7::computeJumpType): - (JSC::MacroAssemblerARMv7::jumpSizeDelta): - (JSC::MacroAssemblerARMv7::jump): - (JSC::MacroAssemblerARMv7::nearCall): - (JSC::MacroAssemblerARMv7::call): - (JSC::MacroAssemblerARMv7::ret): - (JSC::MacroAssemblerARMv7::tailRecursiveCall): - (JSC::MacroAssemblerARMv7::makeJump): - (JSC::MacroAssemblerARMv7::makeBranch): +2011-03-10 Oliver Hunt <oliver@apple.com> -2010-10-13 Fridrich Strba <fridrich.strba@bluewin.ch> + Reviewed by Gavin Barraclough. - Reviewed by Darin Adler. + Fix allocation of native function with a cached thunk + https://bugs.webkit.org/show_bug.cgi?id=56127 - Don't depend on Windows on sched_yield and sched.h - https://bugs.webkit.org/show_bug.cgi?id=45543 + Fix this race condition found while fixing zombies. - sched.h is part of pthreads and sched_yield is implemented - in pthreads-win32 as Sleep(0). This patch avoids a gratuitous - dependency on pthreads-win32 in this file. + * collector/handles/HandleHeap.cpp: + (JSC::HandleHeap::clearWeakPointers): + * runtime/Heap.cpp: + (JSC::Heap::reset): + * runtime/JSFunction.cpp: + (JSC::JSFunction::JSFunction): + (JSC::JSFunction::markChildren): + * runtime/JSValue.h: + (JSC::JSValue::decode): + * runtime/JSZombie.cpp: + (JSC::JSZombie::leakedZombieStructure): + * runtime/JSZombie.h: + (JSC::JSZombie::createStructure): + * runtime/MarkedBlock.cpp: - * wtf/TCSpinLock.h: - (TCMalloc_SlowLock): +2011-03-10 Luiz Agostini <luiz.agostini@openbossa.org> -2010-10-13 Kwang Yul Seo <skyul@company100.net> + Reviewed by Andreas Kling. - Reviewed by Kent Tamura. + [Qt] fast/workers/stress-js-execution.html is crashing on Qt bot (intermittently) + https://bugs.webkit.org/show_bug.cgi?id=33008 - [BREWMP] Port unicode - https://bugs.webkit.org/show_bug.cgi?id=45716 + Defining WTF_USE_PTHREAD_BASED_QT=1 for platforms where QThread uses pthread internally. + Symbian is excluded because pthread_kill does not work on it. Mac is excluded because + it has its own ways to do JSC threading. - Brew MP port uses only the subset of ICU library to reduce the binary size. - Follow the WinCE's implementation. + Defining WTF_USE_PTHREADS inside MachineStackMarker.cpp if USE(PTHREAD_BASED_QT) is true. + * runtime/MachineStackMarker.cpp: * wtf/Platform.h: - * wtf/unicode/Unicode.h: - * wtf/unicode/brew/UnicodeBrew.cpp: Added. - (WTF::Unicode::toLower): - (WTF::Unicode::toUpper): - (WTF::Unicode::foldCase): - (WTF::Unicode::isPrintableChar): - (WTF::Unicode::isUpper): - (WTF::Unicode::isLower): - (WTF::Unicode::isDigit): - (WTF::Unicode::isPunct): - (WTF::Unicode::isAlphanumeric): - (WTF::Unicode::toTitleCase): - (WTF::Unicode::direction): - (WTF::Unicode::category): - (WTF::Unicode::decompositionType): - (WTF::Unicode::combiningClass): - (WTF::Unicode::mirroredChar): - (WTF::Unicode::digitValue): - (WTF::Unicode::isSpace): - (WTF::Unicode::isLetter): - * wtf/unicode/brew/UnicodeBrew.h: Added. - (WTF::Unicode::isArabicChar): - (WTF::Unicode::isSeparatorSpace): - (WTF::Unicode::hasLineBreakingPropertyComplexContext): - (WTF::Unicode::hasLineBreakingPropertyComplexContextOrIdeographic): - (WTF::Unicode::umemcasecmp): - -2010-10-13 Gavin Barraclough <barraclough@apple.com> - Windows build fix. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: +2011-03-10 Gavin Barraclough <barraclough@apple.com> -2010-10-13 Adam Barth <abarth@webkit.org> + Reviewed by Oliver Hunt. - Reviewed by Maciej Stachowiak. + Bug 56077 - ES5 conformance issues with RegExp.prototype - [WTFURL] Add URLQueryCanonicalizer - https://bugs.webkit.org/show_bug.cgi?id=45088 + There are three issues causing test failures in sputnik. - This class canonicalizes the query component of URLs. The main tricky - bit there is the convertCharset function, which I've moved to a - templated dependency. There'll likely be more about that in future - patches. + (1) lastIndex should be converted at the point it is used, not the point it is set (this is visible if valueOf is overridden). + (2) The 'length' property of the test/exec functions should be 1. + (3) If no input is specified, the input to test()/exec() is "undefined" (i.e. ToString(undefined)) - not RegExp.input. - * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/url/src/URLEscape.cpp: Added. - * wtf/url/src/URLEscape.h: Added. - (WTF::appendEscapedCharacter): - * wtf/url/src/URLQueryCanonicalizer.h: Added. - (WTF::URLQueryCanonicalizer::canonicalize): - (WTF::URLQueryCanonicalizer::isAllASCII): - (WTF::URLQueryCanonicalizer::appendRaw8BitQueryString): - (WTF::URLQueryCanonicalizer::convertToQueryEncoding): + * runtime/RegExpObject.cpp: + (JSC::RegExpObject::markChildren): + - Added to mark lastIndex + (JSC::regExpObjectLastIndex): + (JSC::setRegExpObjectLastIndex): + - lastIndex is now stored as a JSValue. + (JSC::RegExpObject::match): + - Use accessor methods to get/set lastIndex, add fast case for isUInt32 (don't convert to double). + * runtime/RegExpObject.h: + (JSC::RegExpObject::setLastIndex): + (JSC::RegExpObject::setLastIndex): + - Set lastIndex, either from a size_t or a JSValue. + (JSC::RegExpObject::getLastIndex): + - Get lastIndex. + (JSC::RegExpObject::RegExpObjectData::RegExpObjectData): + - Initialize as a JSValue. + * runtime/RegExpPrototype.cpp: + (JSC::RegExpPrototype::RegExpPrototype): + - Add test/exec properties with length 1. + * runtime/StringPrototype.cpp: + (JSC::stringProtoFuncMatch): + (JSC::stringProtoFuncSearch): + - Do not read RegExp.input if none is provided. + * tests/mozilla/js1_2/regexp/RegExp_input.js: + * tests/mozilla/js1_2/regexp/RegExp_input_as_array.js: + - Update these tests (they relied on non-ES5 behaviour). -2010-10-13 Gavin Barraclough <barraclough@apple.com> +2011-03-10 Geoffrey Garen <ggaren@apple.com> Reviewed by Oliver Hunt. - Bug 43987 - Downloading using XHR is much slower than before - Change StringBuilder to use overcapacity in a StringImpl, rather than a Vector. - Fundamentally this should be the same (copies current contents to expand capacity, - rather than using a rope), but this approach allows the intermadiate state of the - String to be inspected in the buffer without copying to resolve. + Rolled back in 80277 and 80280 with event handler layout test failures fixed. + https://bugs.webkit.org/show_bug.cgi?id=55653 - * runtime/JSONObject.cpp: - (JSC::Stringifier::appendQuotedString): - (JSC::Stringifier::Holder::appendNextProperty): - Renamed StringBuilder::size() -> length() (to match other String types). - - * runtime/UStringBuilder.h: - (JSC::UStringBuilder::append): - (JSC::UStringBuilder::toUString): - Update for changes in parent class, can just 'using' the append methods. - - * wtf/text/StringBuilder.cpp: Added. - (WTF::StringBuilder::reifyString): - (WTF::StringBuilder::resize): - (WTF::StringBuilder::reserveCapacity): - (WTF::StringBuilder::allocateBuffer): - (WTF::StringBuilder::appendUninitialized): - (WTF::StringBuilder::append): - (WTF::StringBuilder::shrinkToFit): - * wtf/text/StringBuilder.h: - (WTF::StringBuilder::StringBuilder): - (WTF::StringBuilder::append): - (WTF::StringBuilder::toString): - (WTF::StringBuilder::toStringPreserveCapacity): - (WTF::StringBuilder::length): - (WTF::StringBuilder::isEmpty): - (WTF::StringBuilder::operator[]): - (WTF::StringBuilder::clear): - Class updated to use overcapacity in a StringImpl, rather than a Vector. + The failures were caused by a last minute typo: assigning to currentEvent + instead of m_currentEvent. - * Android.mk: - * Android.v8.wtf.mk: - * GNUmakefile.am: * JavaScriptCore.exp: - * JavaScriptCore.gypi: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * JavaScriptCore.vcproj/jsc/jsc.vcproj: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/CMakeLists.txt: - * wtf/wtf.pri: - -2010-10-13 Adam Roben <aroben@apple.com> - - Export tryFastRealloc for WebKit2's benefit - - Rubber-stamped by Anders Carlsson. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Added - tryFastRealloc. Removed RegExpObject::info, which is now exported via - JS_EXPORTDATA. - -2010-10-13 Adam Barth <abarth@webkit.org> - - Reviewed by Maciej Stachowiak. - - [WTFURL] Add a mechanism for classifying types of characters - https://bugs.webkit.org/show_bug.cgi?id=45085 - - Various characters have different escaping rules depending on where - they are in URLs. This patch adds a table containing that information. + * bytecompiler/BytecodeGenerator.cpp: + * jit/JITOpcodes.cpp: + * jit/JITOpcodes32_64.cpp: + * runtime/Arguments.h: + * runtime/JSActivation.cpp: + * runtime/JSActivation.h: + * runtime/JSCell.h: + * runtime/JSGlobalObject.cpp: + * runtime/JSGlobalObject.h: + * runtime/JSObject.cpp: + * runtime/JSStaticScopeObject.cpp: + * runtime/JSStaticScopeObject.h: + * runtime/JSVariableObject.h: + * runtime/MarkedSpace.cpp: + * runtime/MarkedSpace.h: - * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/url/src/URLCharacterTypes.cpp: Added. - * wtf/url/src/URLCharacterTypes.h: Added. - (WTF::URLCharacterTypes::isQueryChar): - (WTF::URLCharacterTypes::isIPv4Char): - (WTF::URLCharacterTypes::isHexChar): - (WTF::URLCharacterTypes::isCharOfType): +2011-03-09 Oliver Hunt <oliver@apple.com> -2010-10-13 Xan Lopez <xlopez@igalia.com> + Reviewed by Gavin Barraclough. - Reviewed by Csaba Osztrogonác. + jquery/manipulation.html fails after r80598 + https://bugs.webkit.org/show_bug.cgi?id=56019 - Missing parameters for bytecode dump of next_pname - https://bugs.webkit.org/show_bug.cgi?id=47590 + When linking a call, codeblock now takes ownership of the linked function + This removes the need for unlinking, and thus the incorrectness that was + showing up in these tests. * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::dump): add missing parameters to the dump. + (JSC::CodeBlock::~CodeBlock): + (JSC::CodeBlock::markAggregate): + * bytecode/CodeBlock.h: + (JSC::CallLinkInfo::CallLinkInfo): + (JSC::CallLinkInfo::setUnlinked): + (JSC::CodeBlock::addCaller): + * jit/JIT.cpp: + (JSC::JIT::privateCompile): + (JSC::JIT::linkCall): + (JSC::JIT::linkConstruct): + * jit/JIT.h: + * runtime/Executable.cpp: + * runtime/Executable.h: -2010-10-13 Nikolas Zimmermann <nzimmermann@rim.com> +2011-03-09 Daniel Bates <dbates@rim.com> - Reviewed by Dirk Schulze. + Attempt to fix the WinCE build after changeset 80684 <http://trac.webkit.org/changeset/80684> + (Bug #56041<https://bugs.webkit.org/show_bug.cgi?id=56041>). - Add wtf/text/StringConcatenate - https://bugs.webkit.org/show_bug.cgi?id=47584 + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): Substitute variable callFrame for exec in call to createSyntaxError(). - Move runtime/StringConcatenate.h to wtf/text, make it work for Strings too. - Add a special runtime/UStringConcatenate.h class that inherits from StringConcatenate, and extends it for use with UString. - Exactly the same design that has been followed while refactoring StringBuilder. +2011-03-09 Gavin Barraclough <barraclough@apple.com> - The UString variants can all be removed as soon as WTF::String & JSC::UString converge. + Reviewed by Sam Weinig. - * GNUmakefile.am: Add wtf/text/StringConcatenate.h and runtime/UStringConcatenate.h. - * JavaScriptCore.gypi: Ditto. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto. - * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto. - * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. - * bytecode/CodeBlock.cpp: s/makeString/makeUString/ - (JSC::escapeQuotes): - (JSC::valueToSourceString): - (JSC::constantName): - (JSC::idName): - (JSC::CodeBlock::registerName): - (JSC::regexpToSourceString): - (JSC::regexpName): - * bytecompiler/NodesCodegen.cpp: Ditto. - (JSC::substitute): - * profiler/Profiler.cpp: Ditto. - (JSC::Profiler::createCallIdentifier): - * runtime/ExceptionHelpers.cpp: Ditto. - (JSC::createUndefinedVariableError): - (JSC::createErrorMessage): - (JSC::createInvalidParamError): - * runtime/FunctionConstructor.cpp: Ditto. - (JSC::constructFunction): - * runtime/FunctionPrototype.cpp: Ditto. - (JSC::insertSemicolonIfNeeded): - * runtime/JSONObject.cpp: Ditto. - (JSC::Stringifier::indent): - * runtime/JSStringBuilder.h: - (JSC::jsMakeNontrivialString): - * runtime/RegExpConstructor.cpp: Ditto. - (JSC::constructRegExp): - * runtime/RegExpObject.cpp: Ditto. - (JSC::RegExpObject::match): - * runtime/RegExpPrototype.cpp: Ditto. - (JSC::regExpProtoFuncCompile): - * runtime/StringConcatenate.h: Removed. - * runtime/UStringConcatenate.h: Added. Only contains the StringTypeAdapter<JSC::UString> code and the makeUString variants, the rest lives in wtf/text/StringConcatenate.h - (JSC::makeUString): - * wtf/text/StringConcatenate.h: Copied from runtime/StringConcatenate.h. - (WTF::makeString): + Bug 56041 - RexExp constructor should only accept flags "gim" + Fix for issues introduced in r80667. -2010-10-12 Gavin Barraclough <barraclough@apple.com> + Invalid flags to a RegExp literal are a late syntax error! - Windows build fix. + * bytecode/CodeBlock.h: + (JSC::CodeBlock::addRegExp): + - Pass a PassRefPtr<RegExp> + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::addRegExp): + (JSC::BytecodeGenerator::emitNewRegExp): + * bytecompiler/BytecodeGenerator.h: + - Pass a PassRefPtr<RegExp> + * bytecompiler/NodesCodegen.cpp: + (JSC::RegExpNode::emitBytecode): + - Should not be ASSERTing that the flags are valid - this is a late(er) error. + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): + - Need to check for error from RegExp constructor. + * jit/JITStubs.cpp: + (JSC::DEFINE_STUB_FUNCTION): + - Need to check for error from RegExp constructor. + * runtime/RegExp.h: + (JSC::RegExp::isValid): + - Make isValid check that the regexp was created with valid flags. + * runtime/RegExpKey.h: + - Since we'll not create RegExp objects with invalid flags, separate out the deleted value. - * wtf/text/StringBuilder.h: - (WTF::StringBuilder::length): +2011-03-09 Gavin Barraclough <barraclough@apple.com> -2010-10-12 Nikolas Zimmermann <nzimmermann@rim.com> + Windows build fix part 2. - Reviewed by Gavin Barraclough. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - Unify JSC::StringBuilder & WebCore::StringBuilder - https://bugs.webkit.org/show_bug.cgi?id=47538 +2011-03-09 Gavin Barraclough <barraclough@apple.com> - Move runtime/StringBuilder.h to wtf/text/StringBuilder.h. Rename build() to toString() and return a WTF::String(). - Move the append(const JSC::UString&) method into runtime/UStringBuilder.h. - UStringBuilder inherits from StringBuilder.h and adds append(const JSC::UString&) and UString toUString() functionality. + Windows build fix part 1. - No new code, just move code around. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * GNUmakefile.am: Add wtf/text/StringBuilder.h / runtime/UStringBuilder.h. Remove runtime/StringBuilder.h. - * JavaScriptCore.gypi: Ditto. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto. - * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto. - * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. - * runtime/Executable.cpp: - (JSC::FunctionExecutable::paramString): Use UStringBuilder, instead of StringBuilder. Rename build() -> toUString(). - * runtime/FunctionConstructor.cpp: - (JSC::constructFunction): Ditto. - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::globalFuncUnescape): Ditto. - * runtime/JSONObject.cpp: - (JSC::Stringifier::stringify): Ditto. - (JSC::Stringifier::appendQuotedString): Ditto. - (JSC::Stringifier::appendStringifiedValue): Ditto. - (JSC::Stringifier::startNewLine): Ditto. - (JSC::Stringifier::Holder::appendNextProperty): Ditto. - * runtime/LiteralParser.cpp: - (JSC::LiteralParser::Lexer::lexString): Ditto. - * runtime/NumberPrototype.cpp: Remove unneeded JSStringBuilder.h / StringBuilder.h include. - * runtime/StringBuilder.h: Removed. - * runtime/UStringBuilder.h: Added. Inherits from WTF::StringBuilder, extending it by two methods. - (JSC::UStringBuilder::append): append(const JSC::UString&) - (JSC::UStringBuilder::toUString): - * wtf/text/StringBuilder.h: Copied from runtime/StringBuilder.h. Move JSC::UString parts into runtime/UStringBuilder.h - (WTF::StringBuilder::append): Renamed m_buffer to buffer everywhere. - (WTF::StringBuilder::isEmpty): Ditto (+ constify method). - (WTF::StringBuilder::reserveCapacity): Ditto. - (WTF::StringBuilder::resize): Ditto. - (WTF::StringBuilder::size): Ditto. - (WTF::StringBuilder::operator[]): Ditto. - (WTF::StringBuilder::toString): Ditto (+ renamed from build()). Returns a String, not an UString. The old build() method is now named toUString() and lives in UStringBuilder. - -2010-10-12 Michael Saboff <msaboff@apple.com> +2011-03-09 Gavin Barraclough <barraclough@apple.com> - Reviewed by Oliver Hunt. + Reviewed by Darin Adler. - Cleaned up the processing of replacements after regular expression - processing, especially the case where there wasn't a match. - Changed to use empty strings instead of computing a zero length sub - string. - https://bugs.webkit.org/show_bug.cgi?id=47506 + Bug 56041 - RexExp constructor should only accept flags "gim" + We also should be passing the flags around as a bitfield rather than a string, + and should not have redundant, incompatible code for converting the string to a bitfield! + * JavaScriptCore.exp: + * bytecompiler/NodesCodegen.cpp: + (JSC::RegExpNode::emitBytecode): + - Need to parse flags string to enum. + * runtime/RegExp.cpp: + (JSC::regExpFlags): + (JSC::RegExp::RegExp): + (JSC::RegExp::create): + - Add method to parse flags string to enum, change constructor/create args to take enum. + * runtime/RegExp.h: + (JSC::RegExp::global): + (JSC::RegExp::ignoreCase): + (JSC::RegExp::multiline): + - Change to use new enum values. + * runtime/RegExpCache.cpp: + (JSC::RegExpCache::lookupOrCreate): + (JSC::RegExpCache::create): + * runtime/RegExpCache.h: + - Changed to use regExpFlags enum instead of int/const UString&. + * runtime/RegExpConstructor.cpp: + (JSC::constructRegExp): + - Add use new enum parsing, check for error. + * runtime/RegExpKey.h: + (JSC::RegExpKey::RegExpKey): + * runtime/RegExpPrototype.cpp: + (JSC::RegExpPrototype::RegExpPrototype): + - Pass NoFlags value instead of empty string. + (JSC::regExpProtoFuncCompile): + - Add use new enum parsing, check for error. * runtime/StringPrototype.cpp: - (JSC::jsSpliceSubstringsWithSeparators): - (JSC::stringProtoFuncReplace): - -2010-10-11 Patrick Gansterer <paroga@webkit.org> - - Unreviewed. - - Clang build fix after r69472. - https://bugs.webkit.org/show_bug.cgi?id=46523 - - * wtf/text/StringHash.h: - -2010-10-11 Oliver Hunt <oliver@apple.com> + (JSC::stringProtoFuncMatch): + (JSC::stringProtoFuncSearch): + - Pass NoFlags value instead of empty string. - Undo last minute change to 32bit build. +2011-03-08 Gavin Barraclough <barraclough@apple.com> - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::emit_op_convert_this_strict): + Reviewed by Sam Weinig -2010-10-11 Brian Weinstein <bweinstein@apple.com> + Bug 55994 - Functions on Array.prototype should check length first. + These methods are designed to work on generic objects too, and if 'length' + is a getter that throws an exception, ensure this is correctly thrown + (even if other exceptions would be thrown, too). - Build fix for Windows. Add a necessary export from r69516. + Make the length check the first thing we do. + This change shows a progression on SunSpider on my machine, but this is likely bogus. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncToString): + (JSC::arrayProtoFuncToLocaleString): + (JSC::arrayProtoFuncJoin): + (JSC::arrayProtoFuncPop): + (JSC::arrayProtoFuncPush): + (JSC::arrayProtoFuncReverse): + (JSC::arrayProtoFuncShift): + (JSC::arrayProtoFuncSlice): + (JSC::arrayProtoFuncSort): + (JSC::arrayProtoFuncSplice): + (JSC::arrayProtoFuncUnShift): + (JSC::arrayProtoFuncFilter): + (JSC::arrayProtoFuncMap): + (JSC::arrayProtoFuncEvery): + (JSC::arrayProtoFuncForEach): + (JSC::arrayProtoFuncSome): + (JSC::arrayProtoFuncReduce): + (JSC::arrayProtoFuncReduceRight): + (JSC::arrayProtoFuncIndexOf): + (JSC::arrayProtoFuncLastIndexOf): -2010-10-11 Oliver Hunt <oliver@apple.com> +2011-03-07 Oliver Hunt <oliver@apple.com> - Fix interpreter build -- was broken by incorrect merge. + Reviewed by Gavin Barraclough. - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): + Make CodeBlock GC write barrier safe + https://bugs.webkit.org/show_bug.cgi?id=55910 -2010-10-01 Oliver Hunt <oliver@apple.com> + In order to make CodeBlock WriteBarrier safe it was necessary + to make it have a single GC owner, and for that reason I have + made ExecutableBase a GC allocated object. This required + updating their creation routines as well as all sites that hold + a reference to them. GC objects that held Executable's have been + converted to WriteBarriers, and all other sites now use Global<>. - Reviewed by Gavin Barraclough. + As an added benefit this gets rid of JSGlobalData's list of + GlobalCodeBlocks. - [ES5] Implement strict mode - https://bugs.webkit.org/show_bug.cgi?id=10701 - - Initial strict mode implementation. This is the simplest - implementation that could possibly work and adds (hopefully) - all of the restrictions required by strict mode. There are - a number of inefficiencies, especially in the handling of - arguments and eval as smart implementations would make this - patch more complicated. - - The SyntaxChecker AST builder has become somewhat more complex - as strict mode does require more parse tree information to - validate the syntax. - - Summary of major changes to the parser: - * We track when we enter strict mode (this may come as a surprise) - * Strict mode actually requires a degree of AST knowledge to validate - so the SyntaxChecker now produces values that can be used to distinguish - "node" types. - * We now track variables that are written to. We do this to - statically identify writes to global properties that don't exist - and abort at that point. This should actually make it possible - to optimise some other cases in the future but for now it's - purely for validity checking. Currently writes are only tracked - in strict mode code. - * Labels are now tracked as it is now a syntax error to jump to a label - that does not exist (or to use break, continue, or return in a context - where they would be invalid). - - Runtime changes: - * In order to get correct hanlding of the Arguments object all - strict mode functions that reference arguments create and tearoff - the arguments object on entry. This is not strictly necessary - but was the least work necessary to get the correct behaviour. - * PutPropertySlot now tracks whether it is being used for a strict - mode write, and if so Object::put will throw when a write can't be - completed. - * StrictEvalActivation was added as an "activation" object for strict - mode eval (so that strict eval does not introduce new variables into - the containing scope). + Perf testing shows a 0.5% progression on v8, vs. a 0.3% regression + on SunSpider. Given none of the tests that show regressions + demonstrate a regression on their own, and sampling shows up nothing. + I suspect we're just getting one or two additional gc passes at + the end of the run. - * CMakeLists.txt: - * GNUmakefile.am: - * JavaScriptCore.exp: - * JavaScriptCore.pro: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::dump): (JSC::CodeBlock::CodeBlock): - (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): + (JSC::EvalCodeCache::markAggregate): + (JSC::CodeBlock::markAggregate): * bytecode/CodeBlock.h: - (JSC::CodeBlock::isStrictMode): + (JSC::CodeBlock::ownerExecutable): + (JSC::CodeBlock::addConstant): + (JSC::CodeBlock::constantRegister): + (JSC::CodeBlock::getConstant): + (JSC::CodeBlock::addFunctionDecl): + (JSC::CodeBlock::addFunctionExpr): + (JSC::GlobalCodeBlock::GlobalCodeBlock): + (JSC::ExecState::r): * bytecode/EvalCodeCache.h: (JSC::EvalCodeCache::get): - * bytecode/Opcode.h: + * bytecode/SamplingTool.h: + (JSC::ScriptSampleRecord::ScriptSampleRecord): * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): - (JSC::BytecodeGenerator::createArgumentsIfNecessary): - (JSC::BytecodeGenerator::emitReturn): + (JSC::BytecodeGenerator::addConstantValue): + (JSC::BytecodeGenerator::emitEqualityOp): * bytecompiler/BytecodeGenerator.h: - (JSC::BytecodeGenerator::isStrictMode): (JSC::BytecodeGenerator::makeFunction): * debugger/Debugger.cpp: (JSC::evaluateInGlobalCallFrame): @@ -12146,12005 +6071,2922 @@ (JSC::DebuggerCallFrame::evaluate): * interpreter/Interpreter.cpp: (JSC::Interpreter::callEval): - (JSC::Interpreter::unwindCallFrame): - (JSC::Interpreter::execute): - (JSC::Interpreter::privateExecute): - * jit/JIT.cpp: - (JSC::JIT::privateCompileMainPass): - (JSC::JIT::privateCompileSlowCases): - * jit/JIT.h: - * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_get_pnames): - (JSC::JIT::emit_op_convert_this_strict): - (JSC::JIT::emitSlow_op_convert_this_strict): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::emit_op_get_pnames): + * jit/JITInlineMethods.h: + (JSC::JIT::emitLoadDouble): + (JSC::JIT::emitLoadInt32ToDouble): * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): + (JSC::JITThunks::JITThunks): + (JSC::JITThunks::hostFunctionStub): + (JSC::JITThunks::clearHostFunctionStubs): * jit/JITStubs.h: - * parser/ASTBuilder.h: - (JSC::ASTBuilder::createFunctionBody): - (JSC::ASTBuilder::isResolve): - * parser/JSParser.cpp: - (JSC::JSParser::next): - (JSC::JSParser::startLoop): - (JSC::JSParser::endLoop): - (JSC::JSParser::startSwitch): - (JSC::JSParser::endSwitch): - (JSC::JSParser::setStrictMode): - (JSC::JSParser::strictMode): - (JSC::JSParser::isValidStrictMode): - (JSC::JSParser::declareParameter): - (JSC::JSParser::breakIsValid): - (JSC::JSParser::pushLabel): - (JSC::JSParser::popLabel): - (JSC::JSParser::hasLabel): - (JSC::JSParser::DepthManager::DepthManager): - (JSC::JSParser::DepthManager::~DepthManager): - (JSC::JSParser::Scope::Scope): - (JSC::JSParser::Scope::startSwitch): - (JSC::JSParser::Scope::endSwitch): - (JSC::JSParser::Scope::startLoop): - (JSC::JSParser::Scope::endLoop): - (JSC::JSParser::Scope::inLoop): - (JSC::JSParser::Scope::breakIsValid): - (JSC::JSParser::Scope::pushLabel): - (JSC::JSParser::Scope::popLabel): - (JSC::JSParser::Scope::hasLabel): - (JSC::JSParser::Scope::isFunction): - (JSC::JSParser::Scope::declareVariable): - (JSC::JSParser::Scope::declareWrite): - (JSC::JSParser::Scope::deleteProperty): - (JSC::JSParser::Scope::declareParameter): - (JSC::JSParser::Scope::setNeedsFullActivation): - (JSC::JSParser::Scope::collectFreeVariables): - (JSC::JSParser::Scope::getUncapturedWrittenVariables): - (JSC::JSParser::Scope::getDeletedVariables): - (JSC::JSParser::Scope::setStrictMode): - (JSC::JSParser::Scope::strictMode): - (JSC::JSParser::Scope::isValidStrictMode): - (JSC::JSParser::pushScope): - (JSC::JSParser::popScope): - (JSC::JSParser::declareVariable): - (JSC::JSParser::declareWrite): - (JSC::JSParser::deleteProperty): - (JSC::jsParse): - (JSC::JSParser::JSParser): - (JSC::JSParser::parseProgram): - (JSC::JSParser::parseSourceElements): - (JSC::JSParser::parseDoWhileStatement): - (JSC::JSParser::parseWhileStatement): - (JSC::JSParser::parseVarDeclarationList): - (JSC::JSParser::parseConstDeclarationList): - (JSC::JSParser::parseForStatement): - (JSC::JSParser::parseBreakStatement): - (JSC::JSParser::parseContinueStatement): - (JSC::JSParser::parseReturnStatement): - (JSC::JSParser::parseWithStatement): - (JSC::JSParser::parseSwitchStatement): - (JSC::JSParser::parseSwitchClauses): - (JSC::JSParser::parseSwitchDefaultClause): - (JSC::JSParser::parseTryStatement): - (JSC::JSParser::parseBlockStatement): - (JSC::JSParser::parseStatement): - (JSC::JSParser::parseFormalParameters): - (JSC::JSParser::parseFunctionBody): - (JSC::JSParser::parseFunctionInfo): - (JSC::JSParser::parseFunctionDeclaration): - (JSC::JSParser::parseExpressionOrLabelStatement): - (JSC::JSParser::parseIfStatement): - (JSC::JSParser::parseExpression): - (JSC::JSParser::parseAssignmentExpression): - (JSC::JSParser::parseConditionalExpression): - (JSC::JSParser::parseBinaryExpression): - (JSC::JSParser::parseStrictObjectLiteral): - (JSC::JSParser::parsePrimaryExpression): - (JSC::JSParser::parseMemberExpression): - (JSC::JSParser::parseUnaryExpression): - * parser/JSParser.h: - * parser/Lexer.cpp: - (JSC::Lexer::parseString): - (JSC::Lexer::lex): - * parser/Lexer.h: - (JSC::Lexer::isReparsing): - * parser/Nodes.cpp: - (JSC::ScopeNode::ScopeNode): - (JSC::FunctionBodyNode::FunctionBodyNode): - (JSC::FunctionBodyNode::create): - * parser/Nodes.h: - (JSC::ScopeNode::isStrictMode): - * parser/Parser.cpp: - (JSC::Parser::parse): - * parser/Parser.h: - (JSC::Parser::parse): - * parser/SyntaxChecker.h: - (JSC::SyntaxChecker::SyntaxChecker): - (JSC::SyntaxChecker::makeFunctionCallNode): - (JSC::SyntaxChecker::appendToComma): - (JSC::SyntaxChecker::createCommaExpr): - (JSC::SyntaxChecker::makeAssignNode): - (JSC::SyntaxChecker::makePrefixNode): - (JSC::SyntaxChecker::makePostfixNode): - (JSC::SyntaxChecker::makeTypeOfNode): - (JSC::SyntaxChecker::makeDeleteNode): - (JSC::SyntaxChecker::makeNegateNode): - (JSC::SyntaxChecker::makeBitwiseNotNode): - (JSC::SyntaxChecker::createLogicalNot): - (JSC::SyntaxChecker::createUnaryPlus): - (JSC::SyntaxChecker::createVoid): - (JSC::SyntaxChecker::thisExpr): - (JSC::SyntaxChecker::createResolve): - (JSC::SyntaxChecker::createObjectLiteral): - (JSC::SyntaxChecker::createArray): - (JSC::SyntaxChecker::createNumberExpr): - (JSC::SyntaxChecker::createString): - (JSC::SyntaxChecker::createBoolean): - (JSC::SyntaxChecker::createNull): - (JSC::SyntaxChecker::createBracketAccess): - (JSC::SyntaxChecker::createDotAccess): - (JSC::SyntaxChecker::createRegex): - (JSC::SyntaxChecker::createNewExpr): - (JSC::SyntaxChecker::createConditionalExpr): - (JSC::SyntaxChecker::createAssignResolve): - (JSC::SyntaxChecker::createFunctionExpr): - (JSC::SyntaxChecker::createFunctionBody): - (JSC::SyntaxChecker::appendBinaryExpressionInfo): - (JSC::SyntaxChecker::operatorStackPop): - * runtime/Arguments.cpp: - (JSC::Arguments::createStrictModeCallerIfNecessary): - (JSC::Arguments::createStrictModeCalleeIfNecessary): - (JSC::Arguments::getOwnPropertySlot): - (JSC::Arguments::getOwnPropertyDescriptor): - (JSC::Arguments::put): - (JSC::Arguments::deleteProperty): - * runtime/Arguments.h: - (JSC::Arguments::Arguments): - * runtime/CommonIdentifiers.cpp: - (JSC::CommonIdentifiers::CommonIdentifiers): - * runtime/CommonIdentifiers.h: - * runtime/Error.cpp: - (JSC::StrictModeTypeErrorFunction::StrictModeTypeErrorFunction): - (JSC::StrictModeTypeErrorFunction::constructThrowTypeError): - (JSC::StrictModeTypeErrorFunction::getConstructData): - (JSC::StrictModeTypeErrorFunction::callThrowTypeError): - (JSC::StrictModeTypeErrorFunction::getCallData): - (JSC::createTypeErrorFunction): - * runtime/Error.h: + * runtime/Completion.cpp: + (JSC::checkSyntax): + (JSC::evaluate): * runtime/Executable.cpp: (JSC::EvalExecutable::EvalExecutable): (JSC::ProgramExecutable::ProgramExecutable): (JSC::FunctionExecutable::FunctionExecutable): - (JSC::EvalExecutable::compileInternal): - (JSC::ProgramExecutable::checkSyntax): - (JSC::ProgramExecutable::compileInternal): - (JSC::FunctionExecutable::compileForCallInternal): - (JSC::FunctionExecutable::compileForConstructInternal): - (JSC::FunctionExecutable::reparseExceptionInfo): - (JSC::EvalExecutable::reparseExceptionInfo): + (JSC::FunctionExecutable::~FunctionExecutable): + (JSC::EvalExecutable::markChildren): + (JSC::ProgramExecutable::markChildren): + (JSC::FunctionExecutable::markChildren): (JSC::FunctionExecutable::fromGlobalCode): - (JSC::ProgramExecutable::reparseExceptionInfo): * runtime/Executable.h: + (JSC::ExecutableBase::ExecutableBase): + (JSC::ExecutableBase::createStructure): + (JSC::NativeExecutable::create): + (JSC::NativeExecutable::NativeExecutable): + (JSC::VPtrHackExecutable::VPtrHackExecutable): (JSC::ScriptExecutable::ScriptExecutable): - (JSC::ScriptExecutable::isStrictMode): (JSC::EvalExecutable::create): + (JSC::EvalExecutable::createStructure): + (JSC::ProgramExecutable::create): + (JSC::ProgramExecutable::createStructure): (JSC::FunctionExecutable::create): + (JSC::FunctionExecutable::createStructure): + * runtime/FunctionConstructor.cpp: + (JSC::constructFunction): + * runtime/Heap.cpp: + (JSC::Heap::destroy): + (JSC::Heap::markRoots): + * runtime/Heap.h: * runtime/JSActivation.cpp: - (JSC::JSActivation::toStrictThisObject): + (JSC::JSActivation::JSActivation): + (JSC::JSActivation::markChildren): * runtime/JSActivation.h: + (JSC::JSActivation::JSActivationData::JSActivationData): + * runtime/JSCell.h: * runtime/JSFunction.cpp: - (JSC::createDescriptorForThrowingProperty): - (JSC::JSFunction::getOwnPropertySlot): - (JSC::JSFunction::getOwnPropertyDescriptor): - (JSC::JSFunction::put): + (JSC::JSFunction::JSFunction): + (JSC::JSFunction::~JSFunction): + (JSC::JSFunction::markChildren): + * runtime/JSFunction.h: * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::storeVPtrs): (JSC::JSGlobalData::JSGlobalData): + (JSC::JSGlobalData::getHostFunction): * runtime/JSGlobalData.h: - * runtime/JSGlobalObject.cpp: - (JSC::JSGlobalObject::reset): - * runtime/JSGlobalObject.h: - (JSC::JSGlobalObject::internalFunctionStructure): * runtime/JSGlobalObjectFunctions.cpp: (JSC::globalFuncEval): * runtime/JSObject.cpp: - (JSC::JSObject::put): - (JSC::JSObject::toStrictThisObject): - (JSC::throwTypeError): - * runtime/JSObject.h: - (JSC::JSObject::isStrictModeFunction): - (JSC::JSObject::putDirectInternal): - (JSC::JSObject::putDirect): - (JSC::JSValue::putDirect): - (JSC::JSValue::toStrictThisObject): * runtime/JSStaticScopeObject.cpp: - (JSC::JSStaticScopeObject::toStrictThisObject): + (JSC::JSStaticScopeObject::markChildren): * runtime/JSStaticScopeObject.h: - * runtime/JSValue.h: + (JSC::JSStaticScopeObject::JSStaticScopeObjectData::JSStaticScopeObjectData): + (JSC::JSStaticScopeObject::JSStaticScopeObject): + * runtime/JSZombie.cpp: + (JSC::JSZombie::leakedZombieStructure): * runtime/JSZombie.h: - (JSC::JSZombie::toStrictThisObject): - * runtime/PutPropertySlot.h: - (JSC::PutPropertySlot::PutPropertySlot): - (JSC::PutPropertySlot::isStrictMode): - * runtime/StrictEvalActivation.cpp: Added. - (JSC::StrictEvalActivation::StrictEvalActivation): - (JSC::StrictEvalActivation::deleteProperty): - (JSC::StrictEvalActivation::toThisObject): - (JSC::StrictEvalActivation::toStrictThisObject): - * runtime/StrictEvalActivation.h: Added. - -2010-10-10 Patrick Gansterer <paroga@webkit.org> - - Unreviewed. - - Windows build fix after r69472. - - * wtf/text/StringHash.h: - (WTF::CaseFoldingHash::hash): - -2010-10-10 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Adam Barth. - - Use WTF::StringHasher in WTF::CaseFoldingHash - https://bugs.webkit.org/show_bug.cgi?id=46523 - - * wtf/text/StringHash.h: - (WTF::CaseFoldingHash::foldCase): - (WTF::CaseFoldingHash::hash): - -2010-10-09 Pratik Solanki <psolanki@apple.com> - - Reviewed by Xan Lopez. - - https://bugs.webkit.org/show_bug.cgi?id=47445 - Remove unused function WTFThreadData::initializeIdentifierTable() - - * wtf/WTFThreadData.h: - -2010-10-08 Michael Saboff <msaboff@apple.com> - - Reviewed by Darin Adler. - - Added check to start of subexpression being positive before using - subexpression in replacement. - https://bugs.webkit.org/show_bug.cgi?id=47324 - - * runtime/StringPrototype.cpp: - (JSC::substituteBackreferencesSlow): - -2010-10-08 Chris Evans <cevans@google.com> - - Reviewed by David Levin. - - https://bugs.webkit.org/show_bug.cgi?id=47393 - - Use unsigned consistently to check for max StringImpl length. - Add a few integer overflow checks. - Uses the existing paradigm of CRASH() when we can't reasonably handle a crazily large request. + (JSC::JSZombie::createStructure): + * runtime/MarkedSpace.h: - * wtf/text/WTFString.cpp: - * wtf/text/StringImpl.h: - * wtf/text/StringImpl.cpp: - Better use of size_t vs. unsigned; check for integer overflows. +2011-03-07 Andy Estes <aestes@apple.com> -2010-10-07 David Goodwin <david_goodwin@apple.com> + Reviewed by Dan Bernstein. - Reviewed by Oliver Hunt. + REGRESSION (r79060): Timestamp is missing from tweets in twitter. + https://bugs.webkit.org/show_bug.cgi?id=55228 - ARM JIT generates undefined operations due to partially uninitialized ShiftTypeAndAmount - https://bugs.webkit.org/show_bug.cgi?id=47356 + A change to the date parser to handle the case where the year is + specified before the time zone inadvertently started accepting strings + such as '+0000' as valid years. Those strings actually represent time + zones in an offset of hours and minutes from UTC, not years. - * assembler/ARMv7Assembler.h: + * wtf/DateMath.cpp: + (WTF::parseDateFromNullTerminatedCharacters): If the current character + in dateString is '+' or '-', do not try to parse the next token as a + year. -2010-10-06 Chris Evans <cevans@google.com> +2011-03-06 Yuta Kitamura <yutak@chromium.org> - Reviewed by David Levin. + Reviewed by Kent Tamura. - https://bugs.webkit.org/show_bug.cgi?id=47248 + Add SHA-1 for new WebSocket protocol + https://bugs.webkit.org/show_bug.cgi?id=55039 - Use size_t consistently in CString, to prevent theoretical trouble - with > 4GB strings on 64-bit platforms. + The code is based on Chromium's portable SHA-1 implementation + (src/base/sha1_portable.cc). Modifications were made in order + to make the code comply with WebKit coding style. - * wtf/text/CString.h: - * wtf/text/CString.cpp: - Use size_t for string lengths. - * wtf/MD5.cpp: - (WTF::expectMD5): use suitable format string + cast for size_t. + * GNUmakefile.am: * JavaScriptCore.exp: - Update symbol name. - -2010-10-06 Anders Carlsson <andersca@apple.com> - - Reviewed by Sam Weinig. - - Start cleaning up Arguments.h - https://bugs.webkit.org/show_bug.cgi?id=47304 - - * wtf/TypeTraits.h: - * wtf/TypeTraits.cpp: - Add RemoveReference type trait. - -2010-10-06 Rafael Antognolli <antognolli@profusion.mobi> - - Unreviewed build fix. - - [EFL] Build fix for glib support. - https://bugs.webkit.org/show_bug.cgi?id=47221 - - If compiling with GLib support enabled, we also need to link wtf against - glib library. - - * wtf/CMakeListsEfl.txt: - -2010-10-05 Kwang Yul Seo <skyul@company100.net> + * JavaScriptCore.gypi: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.xcodeproj/project.pbxproj: + * wtf/CMakeLists.txt: + * wtf/MD5.cpp: + (WTF::MD5::MD5): + * wtf/SHA1.cpp: Added. + (WTF::testSHA1): This function will be run the first time SHA1 + constructor is called. This function computes a few hash values + and checks the results in debug builds. However, constructor is + probably not a good place to run these tests, so we need to find + a good place for it (bug 55853). + (WTF::expectSHA1): + (WTF::f): + (WTF::k): + (WTF::rotateLeft): + (WTF::SHA1::SHA1): + (WTF::SHA1::addBytes): + (WTF::SHA1::computeHash): + (WTF::SHA1::finalize): + (WTF::SHA1::processBlock): + (WTF::SHA1::reset): + * wtf/SHA1.h: Added. + (WTF::SHA1::addBytes): + * wtf/wtf.pri: - Reviewed by Gavin Barraclough. +2011-03-05 Adam Barth <abarth@webkit.org> - [BREWMP] Port ExecutableAllocator::cacheFlush to enable ARM JIT - https://bugs.webkit.org/show_bug.cgi?id=47117 + Reviewed by Dimitri Glazkov. - Use IMemCache1 to flush data cache and invalidate instruction cache. + Add Derived Sources to WebCore GYP build + https://bugs.webkit.org/show_bug.cgi?id=55813 - * jit/ExecutableAllocator.h: - (JSC::ExecutableAllocator::cacheFlush): + Rename the action to be friendlier. -2010-10-05 Leandro Pereira <leandro@profusion.mobi> + * gyp/JavaScriptCore.gyp: - Unreviewed. Build fix. +2011-03-04 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com> - Moved "jsc" directory to "shell", so that the name does not clash with the - JavaScriptCore shell in some build systems. - http://webkit.org/b/47049 + Reviewed by Laszlo Gombos. - * CMakeLists.txt: Changed reference from "jsc" to "shell". - * jsc: Removed. - * jsc/CMakeLists.txt: Removed. - * jsc/CMakeListsEfl.txt: Removed. - * shell: Copied from JavaScriptCore/jsc. + [Qt] Need symbian version of cryptographicallyRandomValuesFromOS + https://bugs.webkit.org/show_bug.cgi?id=55782 -2010-10-05 Kwang Yul Seo <skyul@company100.net> + Implement Symbian version of cryptographicallyRandomValuesFromOS - Reviewed by Kent Tamura. + * wtf/OSRandomSource.cpp: + (WTF::cryptographicallyRandomValuesFromOS): - [BREWMP] Use PlatformRefPtr in randomNumber - https://bugs.webkit.org/show_bug.cgi?id=46989 +2011-03-04 Gavin Barraclough <barraclough@apple.com> - Use PlatformRefPtr to free memory automatically. + Reviewed by Cameron Zwarich. - * wtf/RandomNumber.cpp: - (WTF::randomNumber): + Bug 55815 - Should throw an exception from JSObject::defineOwnProperty if !isExtensible(). -2010-10-05 Oliver Hunt <oliver@apple.com> + * runtime/JSObject.cpp: + (JSC::JSObject::defineOwnProperty): + Add missing check. - Reviewed by Darin Adler. +2011-03-04 Gavin Barraclough <barraclough@apple.com> - REGRESSION(r68338): JavaScript error on PowerPC only (crashes on Interpreter built for x86_64) - https://bugs.webkit.org/show_bug.cgi?id=46690 + Rubber stamped by olliej. - Use the correct register value when initialising the arguments - object in the interpreter. This is covered by existing tests. + Bug 54945 - The web page hangs towards the end of page load in Interpreter enabled javascript code in the latest webkit trunk. * interpreter/Interpreter.cpp: (JSC::Interpreter::privateExecute): + (1) don't infinite loop. + (2) goto 1. -2010-10-04 David Goodwin <david_goodwin@apple.com> +2011-03-04 Gavin Barraclough <barraclough@apple.com> - Reviewed by Oliver Hunt. + cmake build fix. - ARMv7 JIT should take advantage of 2-byte branches to reduce code size - https://bugs.webkit.org/show_bug.cgi?id=47007 + * CMakeLists.txt: - * assembler/ARMv7Assembler.cpp: - * assembler/ARMv7Assembler.h: - (JSC::ARMv7Assembler::computeJumpType): - (JSC::ARMv7Assembler::link): - (JSC::ARMv7Assembler::canBeJumpT2): - (JSC::ARMv7Assembler::canBeJumpT4): - (JSC::ARMv7Assembler::linkBX): - (JSC::ARMv7Assembler::linkJumpT4): - (JSC::ARMv7Assembler::linkJumpT2): - (JSC::ARMv7Assembler::linkJumpAbsolute): +2011-03-04 Adam Barth <abarth@webkit.org> -2010-10-04 Gyuyoung Kim <gyuyoung.kim@samsung.com> + Reviewed by Dimitri Glazkov. - Reviewed by Antonio Gomes. + Add Copy Files step to JavaScriptCore GYP build for apitest and minidom + https://bugs.webkit.org/show_bug.cgi?id=55798 - [EFL] Use fast malloc for WebKit EFL - https://bugs.webkit.org/show_bug.cgi?id=46691 + * JavaScriptCore.gypi: + * gyp/JavaScriptCore.gyp: - Use fast malloc for WebKit EFL because the fast malloc is to allocate - memory quickly. +2011-03-04 Adam Barth <abarth@webkit.org> - * wtf/CMakeListsEfl.txt: + Reviewed by Dimitri Glazkov. -2010-10-04 Oliver Hunt <oliver@apple.com> + Remove unneeded round-trips through ../Source in the Chromium GYP build + https://bugs.webkit.org/show_bug.cgi?id=55795 - Reviewed by Geoff Garen. + * JavaScriptCore.gyp/JavaScriptCore.gyp: - Lazily create activation objects - https://bugs.webkit.org/show_bug.cgi?id=47107 +2011-03-04 Adam Barth <abarth@webkit.org> - Make it possible to lazily create the activation object - for a function that needs one. This allows us to reduce - the overhead of entering a function that may require - an activation in some cases, but not always. + Reviewed by Dimitri Glazkov. - This does make exception handling a little more complex as - it's now necessary to verify that a callframes activation - has been created, and create it if not, in all of the - paths used in exception handling. + Use target_defaults to reduce boilerplate in GYP build system + https://bugs.webkit.org/show_bug.cgi?id=55790 - We also need to add logic to check for the existence of - the activation in the scoped_var opcodes, as well as - op_ret, op_ret_object_or_this and op_tearoff_activation - so that we can avoid creating an activation unnecesarily - on function exit. + Instead of setting up the configuration in each target, just defer to + target_defaults. Also, removed a define that was redundant with the + xcconfig. - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::dump): - (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): - (JSC::CodeBlock::createActivation): - * bytecode/CodeBlock.h: - (JSC::CodeBlock::setActivationRegister): - (JSC::CodeBlock::activationRegister): - * bytecode/Opcode.h: - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): - (JSC::BytecodeGenerator::emitNewFunctionInternal): - (JSC::BytecodeGenerator::emitNewFunctionExpression): - (JSC::BytecodeGenerator::createActivationIfNecessary): - * bytecompiler/BytecodeGenerator.h: - * interpreter/Interpreter.cpp: - (JSC::Interpreter::resolveSkip): - (JSC::Interpreter::resolveGlobalDynamic): - (JSC::Interpreter::resolveBase): - (JSC::Interpreter::unwindCallFrame): - (JSC::Interpreter::throwException): - (JSC::Interpreter::privateExecute): - * jit/JIT.cpp: - (JSC::JIT::privateCompileMainPass): - * jit/JIT.h: - * jit/JITCall32_64.cpp: - (JSC::JIT::emit_op_ret): - (JSC::JIT::emit_op_ret_object_or_this): - * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_end): - (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_ret_object_or_this): - (JSC::JIT::emit_op_create_activation): - (JSC::JIT::emit_op_resolve_global_dynamic): - * jit/JITOpcodes32_64.cpp: - (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_create_activation): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): + * gyp/JavaScriptCore.gyp: -2010-10-04 Adam Barth <abarth@webkit.org> +2011-03-03 Gavin Barraclough <barraclough@apple.com> Reviewed by Sam Weinig. - Remove ENABLE_SANDBOX - https://bugs.webkit.org/show_bug.cgi?id=47032 - - * Configurations/FeatureDefines.xcconfig: - -2010-10-01 Pratik Solanki <psolanki@apple.com> - - Reviewed by Geoffrey Garen. - Specify ALWAYS_INLINE at function declaration not function definition - https://bugs.webkit.org/show_bug.cgi?id=46960 - - For functions defined with ALWAYS_INLINE, add the attribute to the declaration as well. - - * bytecompiler/BytecodeGenerator.h: - * wtf/FastMalloc.cpp: - -2010-10-01 Kwang Yul Seo <skyul@company100.net> - - Unreviewed. - - [BREWMP] Change Collector BLOCK_SIZE to 64KB - https://bugs.webkit.org/show_bug.cgi?id=46436 + Bug 55736 - Implement seal/freeze/preventExtensions for normal object types. + Provide basic functionallity from section 15.2.4 of ECMA-262. + This support will need expanding to cover arrays, too. - Lower BLOCK_SIZE to 64KB because Brew MP runs on low end devices. + Shows a 0.5% progression on SunSpidey, this seems to be due to changing + ObjectConstructor to use a static table. - * runtime/Collector.h: + * DerivedSources.make: + * JavaScriptCore.exp: + * interpreter/CallFrame.h: + (JSC::ExecState::objectConstructorTable): + Add a static table for ObjectConstructor. + * runtime/CommonIdentifiers.h: + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::JSGlobalData): + (JSC::JSGlobalData::~JSGlobalData): + Add a static table for ObjectConstructor. + * runtime/JSGlobalData.h: + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::reset): + Add a static table for ObjectConstructor. + * runtime/JSObject.cpp: + (JSC::JSObject::seal): + (JSC::JSObject::freeze): + (JSC::JSObject::preventExtensions): + Transition the object's structure. + (JSC::JSObject::defineOwnProperty): + Check isExtensible. + * runtime/JSObject.h: + (JSC::JSObject::isSealed): + (JSC::JSObject::isFrozen): + (JSC::JSObject::isExtensible): + These wrap method on structure. + (JSC::JSObject::putDirectInternal): + Check isExtensible. + * runtime/ObjectConstructor.cpp: + (JSC::ObjectConstructor::ObjectConstructor): + (JSC::ObjectConstructor::getOwnPropertySlot): + (JSC::ObjectConstructor::getOwnPropertyDescriptor): + Change ObjectConstructor to use a static table. + (JSC::objectConstructorSeal): + (JSC::objectConstructorFreeze): + (JSC::objectConstructorPreventExtensions): + (JSC::objectConstructorIsSealed): + (JSC::objectConstructorIsFrozen): + (JSC::objectConstructorIsExtensible): + Add new methods on Object. + * runtime/ObjectConstructor.h: + (JSC::ObjectConstructor::createStructure): + * runtime/Structure.cpp: + (JSC::Structure::Structure): + init/propagate m_preventExtensions + (JSC::Structure::sealTransition): + (JSC::Structure::freezeTransition): + (JSC::Structure::preventExtensionsTransition): + transition the structure, materializing the property map, setting m_preventExtensions & changing attributes. + (JSC::Structure::isSealed): + (JSC::Structure::isFrozen): + check attributes to detect if object is sealed/frozen. + * runtime/Structure.h: + (JSC::Structure::isExtensible): + checks the m_preventExtensions flag. -2010-10-01 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com> +2011-03-04 Steve Falkenburg <sfalken@apple.com> - Reviewed by Andreas Kling. + Reviewed by Jon Honeycutt. - [Qt] Stack overflow on symbian platform. - https://bugs.webkit.org/show_bug.cgi?id=40598 + Adopt VersionStamper tool for Windows WebKit DLLs + https://bugs.webkit.org/show_bug.cgi?id=55784 + <rdar://problem/9021273> - Move big allocation in arrayProtoFuncToString from stack to heap. - JSC::arrayProtoFuncToString function can be called recursivly and - 1K allocation on stack cahse stack overflow. - Can be useful for other platforms with limited stack size. - - * runtime/ArrayPrototype.cpp: - (JSC::arrayProtoFuncToString): - -2010-09-30 Kwang Yul Seo <skyul@company100.net> + We now use a tool to stamp the version number onto the Apple WebKit DLLs + during the post-build step. - Reviewed by Kent Tamura. - - [BREWMP] Add a factory function which returns an instance wrapped in PlatformRefPtr. - https://bugs.webkit.org/show_bug.cgi?id=46373 - - A Brew MP instance has reference count 1 when it is created, so call adoptPlatformRef - to wrap the instance in PlatformRefPtr. - - * wtf/brew/ShellBrew.h: - (WTF::createRefPtrInstance): + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: Removed. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd: -2010-09-30 Kwang Yul Seo <skyul@company100.net> +2011-03-04 Adam Barth <abarth@webkit.org> - Reviewed by Kent Tamura. + Reviewed by Dimitri Glazkov. - [BREWMP] Port PlatformRefPtr - https://bugs.webkit.org/show_bug.cgi?id=46370 + JavaScriptCore GYP build should use a header map + https://bugs.webkit.org/show_bug.cgi?id=55712 - Implement refPlatformPtr and derefPlatformPtr to use PlatformRefPtr in Brew MP. + This patch moves the os-win32 files into their own variable so that we + can use a header map in the Apple Mac Xcode build. The problem is that + the header map searches the whole project rather than just the files + included in a given target. Another solution to this problem is to + make GYP smarter about filtering out what files are added to the + project file. - * wtf/brew/RefPtrBrew.h: Added. - (WTF::refPlatformPtr): - (WTF::derefPlatformPtr): + * JavaScriptCore.gypi: + * gyp/JavaScriptCore.gyp: -2010-09-29 Sam Weinig <sam@webkit.org> +2011-03-03 Ryosuke Niwa <rniwa@webkit.org> Reviewed by Darin Adler. - Add additional checks to StringBuffer. - <rdar://problem/7756381> - - * wtf/text/StringBuffer.h: - (WTF::StringBuffer::StringBuffer): - (WTF::StringBuffer::resize): - -2010-09-30 Chris Marrin <cmarrin@apple.com> - - Reviewed by Simon Fraser. - - Make 2D accelerated canvas rendering build on Mac - https://bugs.webkit.org/show_bug.cgi?id=46007 - - Added ACCELERATED_2D_CANVAS to FeatureDefines - - * Configurations/FeatureDefines.xcconfig: - -2010-09-30 Kevin Ollivier <kevino@theolliviers.com> - - [wx] wxMSW build fix. Make sure we copy the compiler flags and remove exception handling from - the copy so as not to alter global settings. - - * wscript: - -2010-09-30 Peter Varga <pvarga@inf.u-szeged.hu> - - Reviewed by Gavin Barraclough. - - The case-insensitivity backreference checking isn't working with YARR - Interpreter - https://bugs.webkit.org/show_bug.cgi?id=46882 - - Add ignorecase checking to the Interpreter::tryConsumeBackReference() function. - - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::Interpreter::tryConsumeBackReference): - -2010-09-30 Kwang Yul Seo <skyul@company100.net> - - Reviewed by Andreas Kling. - - [BREWMP] Leave initializeRandomNumberGenerator empty. - https://bugs.webkit.org/show_bug.cgi?id=46851 - - On Brew MP, AEECLSID_RANDOM initializes itself. - - * wtf/RandomNumberSeed.h: - (WTF::initializeRandomNumberGenerator): - -2010-09-30 Gabor Loki <loki@webkit.org> - - Reviewed by Csaba Osztrogonác. - - Remove unnecessary cacheFlush calls from Thumb-2 - https://bugs.webkit.org/show_bug.cgi?id=46702 - - * assembler/ARMv7Assembler.h: - (JSC::ARMv7Assembler::relinkCall): - (JSC::ARMv7Assembler::repatchInt32): - (JSC::ARMv7Assembler::repatchPointer): - -2010-09-29 Patrick Gansterer <paroga@webkit.org> - - Unreviewed. - - Next try to fix cygwin build. - - * wtf/Assertions.cpp: - -2010-09-29 Patrick Gansterer <paroga@webkit.org> - - Unreviewed. - - Build fix for cygwin #2. It's OS(WINDOWS), not OS(WIN). - - * wtf/Assertions.cpp: - -2010-09-29 Patrick Gansterer <paroga@webkit.org> - - Unreviewed. - - Build fix for cygwin. - - * wtf/Assertions.cpp: - -2010-09-29 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Andreas Kling. - - [WINCE] Buildfix for Assertions.cpp after r68511. - https://bugs.webkit.org/show_bug.cgi?id=46807 - - Some, but not all WinCE environments have support for IsDebuggerPresent(). - Add HAVE(ISDEBUGGERPRESENT) to make this a build option. - HAVE(ISDEBUGGERPRESENT) will be 1 for all OS(WIN) by default. - - * wtf/Assertions.cpp: - * wtf/Platform.h: + Remove LOOSE_PASS_OWN_ARRAY_PTR from PassOwnArrayPtr.h + https://bugs.webkit.org/show_bug.cgi?id=55554 -2010-09-29 Peter Varga <pvarga@inf.u-szeged.hu> - - Reviewed by Csaba Osztrogonác. - - JSC compile fails on 32bit platform when Regexp Tracing is enabled - https://bugs.webkit.org/show_bug.cgi?id=46713 - - Fix the cast of pointer in regexp tracing to avoid the warning. - - * runtime/RegExp.cpp: - (JSC::RegExp::match): - -2010-09-28 Anders Carlsson <andersca@apple.com> - - Reviewed by Sam Weinig. - - Begin hooking up painting in the plug-in process - https://bugs.webkit.org/show_bug.cgi?id=46766 - - * JavaScriptCore.exp: - Add tryFastRealloc, used by WebKit2. - -2010-09-28 Philippe Normand <pnormand@igalia.com> - - Reviewed by Martin Robinson. - - Guard GRefPtr/GOwnPtr files with ENABLE(GLIB_SUPPORT) - https://bugs.webkit.org/show_bug.cgi?id=46721 - - Enable GOwnPtr/GRefPtr build only if glib support has been - explicitly enabled using the WTF_ENABLE_GLIB_SUPPORT macro. - - * wtf/gobject/GOwnPtr.cpp: - * wtf/gobject/GOwnPtr.h: - * wtf/gobject/GRefPtr.cpp: - * wtf/gobject/GRefPtr.h: - -2010-09-28 İsmail Dönmez <ismail@namtrac.org> - - Reviewed by Andreas Kling. - - Test for WINCE instead of WINCEBASIC, compiler always defines WINCE. - Remove reference to unexisting path JavaScriptCore/os-wince. - - * JavaScriptCore.pri: - * wtf/Assertions.cpp: - -2010-09-27 Michael Saboff <msaboff@apple.com> + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::copyGlobalsTo): Pass nullptr instead of 0. + (JSC::JSGlobalObject::resizeRegisters): Ditto; also use OwnArrayPtr instead of a raw pointer. + * runtime/JSGlobalObject.h: + (JSC::JSGlobalObject::addStaticGlobals): Ditto. + * wtf/PassOwnArrayPtr.h: Removed #define LOOSE_PASS_OWN_ARRAY_PTR + (WTF::PassOwnArrayPtr::PassOwnArrayPtr): Added a constructor that takes nullptr_t. - Reviewed by Geoffrey Garen. +2011-03-03 Adam Barth <abarth@webkit.org> - Changed the initialization of JSArray objects to have space for - 3 elements for the constructor that takes a ArgList argument. - This improves v8-deltablue performance by about 2.8% by reducing - the number of realloc() calls. - https://bugs.webkit.org/show_bug.cgi?id=46664 + Reviewed by Dimitri Glazkov. - * runtime/JSArray.cpp: - (JSC::JSArray::JSArray): + Add jsc to JavaScriptCore GYP build + https://bugs.webkit.org/show_bug.cgi?id=55711 -2010-09-27 Gavin Barraclough <barraclough@apple.com> + * JavaScriptCore.gypi: + - Move jsc.cpp into jsc_files because it's really part of the jsc + target. + * JavaScriptCore.xcodeproj/project.pbxproj: + - Remove extraneous files from the normal jsc build. I probably + added these by mistake at some point. + * gyp/JavaScriptCore.gyp: + - Add the jsc target to the GYP file. - Reviewed by Darin Adler. +2011-03-03 Adam Barth <abarth@webkit.org> - Bug 46680 - Inlining string concatenation can regress interpreter performance - <rdar://problem/8362752> REGRESSION: ~6.4% sunspider regression in interpreter - Do not inline calls to string concatenation in the interpret loop. + Reviewed by Dimitri Glazkov. - * interpreter/Interpreter.cpp: - (JSC::concatenateStrings): - (JSC::Interpreter::privateExecute): + Add testapi to JavaScriptCore GYP build + https://bugs.webkit.org/show_bug.cgi?id=55707 -2010-09-27 Anders Carlsson <andersca@apple.com> + The new testapi target is slightly incomplete. There's a resource + copying step that we don't quite have yet. - Fix thinko. + This patch also cleans up some of the configuration issues in + JavaScriptCore.xcodeproj. It seems kind of wordy to repeat these for + each target. I suspect there's a more compact way of defining the + configurations, but this removes the "Default" configuration, which is + progress. - * runtime/JSCell.h: + * JavaScriptCore.gypi: + * gyp/JavaScriptCore.gyp: -2010-09-27 Anders Carlsson <andersca@apple.com> +2011-03-03 Adam Barth <abarth@webkit.org> - Reviewed by Adam Roben. + Reviewed by Eric Seidel. - Try to fix Windows build. + Teach JavaScriptCore GYP build about private headers + https://bugs.webkit.org/show_bug.cgi?id=55532 - * runtime/JSCell.h: - (JSC::MSVCBugWorkaround::MSVCBugWorkaround): - (JSC::MSVCBugWorkaround::~MSVCBugWorkaround): + This patch distinguishes between public and private framework headers + so that public headers are copied into the Headers directory and + private headers are copied into the PrivateHeaders directory. -2010-09-27 Erik Arvidsson <arv@chromium.org> + * gyp/JavaScriptCore.gyp: - Reviewed by Darin Adler. +2011-03-03 Geoffrey Garen <ggaren@apple.com> - Add operator == for AtomicString and Vector<Uchar> - https://bugs.webkit.org/show_bug.cgi?id=46509 + Rolled out 80277 and 80280 because they caused event handler layout test + failures. * JavaScriptCore.exp: - * wtf/text/AtomicString.cpp: - (WTF::operator==): - * wtf/text/AtomicString.h: - (WTF::operator==): - (WTF::operator!=): - -2010-09-27 Anders Carlsson <andersca@apple.com> - - Try to fix the Windows build. - - * wtf/Noncopyable.h: - -2010-09-26 Anders Carlsson <andersca@apple.com> - - Reviewed by Alexey Proskuryakov and Adam Barth. - - Add WTF_MAKE_NONCOPYABLE macro - https://bugs.webkit.org/show_bug.cgi?id=46589 - - Going forward, we'd like to get rid of the Noncopyable and FastAllocBase classes. The - reason for this is that the Itanium C++ ABI states that no empty classes of the same type - can be laid out at the same offset in the class. This can result in objects getting larger - which leads to memory regressions. (One example of this is the String class which grew by - sizeof(void*) when both its base class and its first member variable inherited indirectly - from FastAllocBase). - - * wtf/Noncopyable.h: - Add a WTF_MAKE_NONCOPYABLE macro and get rid of NoncopyableCustomAllocated. - - * runtime/JSCell.h: - * wtf/RefCounted.h: - Don't inherit from NoncopyableCustomAllocated. Instead, use WTF_MAKE_NONCOPYABLE. - -2010-09-27 Philippe Normand <pnormand@igalia.com> - - Reviewed by Martin Robinson. - - [GTK] use ENABLE(GLIB_SUPPORT) - https://bugs.webkit.org/show_bug.cgi?id=46630 - - * wtf/Platform.h: Include GTypedefs.h only if glib support - is explicitly enabled. - -2010-09-25 Holger Hans Peter Freyther <holger@moiji-mobile.com> - - Reviewed by Adam Barth. - - jsc: Document the strcat opcode. - https://bugs.webkit.org/show_bug.cgi?id=46571 - - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): - -2010-09-21 Holger Hans Peter Freyther <holger@moiji-mobile.com> - - Reviewed by Adam Barth. - - make-bytecode-docs.pl: Add a comment to the generated HTML - https://bugs.webkit.org/show_bug.cgi?id=46570 - - Generate an HTML Comment that this file was generated from - Interpreter.cpp with the make-bytecode-docs.pl script. - - * docs/make-bytecode-docs.pl: - -2010-09-27 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Adam Barth. - - Remove WTF::stringHash functions - https://bugs.webkit.org/show_bug.cgi?id=46520 - - Since r68289 the stringHash functions are only wrappers around StringHasher::createHash. - So use StringHasher::createHash directly and remove stringHash. - - * wtf/StringHashFunctions.h: - * wtf/text/StringImpl.h: - (WTF::StringImpl::computeHash): Use WTF::StringHasher::createHash directly. - -2010-09-26 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Adam Barth. - - Add WTF::StringHasher::createBlobHash - https://bugs.webkit.org/show_bug.cgi?id=46514 - - Add this function for hashing FormElementKey and QualifiedNameComponents. - - * wtf/StringHashFunctions.h: - (WTF::StringHasher::createBlobHash): - -2010-09-26 Patrick Gansterer <paroga@webkit.org> - - Reviewed by Adam Barth. - - REGRESSION (r68289): Assertion failure in StringHasher::addCharacter() (ch != invalidCharacterValue) - running websocket/tests/bad-sub-protocol-non-ascii.html - https://bugs.webkit.org/show_bug.cgi?id=46553 - - Because we use StringHasher for binary data too, so the check for invalid unicode input is wrong. - Add an additional member variable to indicate if we have an pending character - instead of only using an invalid character for this purpose. - - * wtf/StringHashFunctions.h: - (WTF::StringHasher::StringHasher): - (WTF::StringHasher::addCharacters): - (WTF::StringHasher::addCharacter): - (WTF::StringHasher::hash): - -2010-09-26 Mark Hahnenberg <mhahnenb@gmail.com> - - Reviewed by Oliver Hunt. - - valueOf called in wrong order in atan2 and date constructors. - https://bugs.webkit.org/show_bug.cgi?id=26978 - - Fixed the bug where the arguments to atan2 were being evaluated - out of order. - - * runtime/MathObject.cpp: - (JSC::mathProtoFuncATan2): - -2010-09-26 Mark Hahnenberg <mhahnenb@gmail.com> - - Reviewed by Oliver Hunt. - - valueOf called in wrong order in atan2 and date constructors. - https://bugs.webkit.org/show_bug.cgi?id=26978 - - Fixed the issue where the parameters to the Date constructor - were being evaluated to numbers more than once. - - * runtime/DateConstructor.cpp: - (JSC::constructDate): - (JSC::dateUTC): - -2010-09-25 Oliver Hunt <oliver@apple.com> - - Fix various builds - - Relearning the lesson that last minute changes are bad. - - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::dump): - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::emitGetArgumentsLength): - * jit/JITOpcodes.cpp: - (JSC::JIT::emitSlow_op_get_argument_by_val): - -2010-09-25 Oliver Hunt <oliver@apple.com> - - Reviewed by Cameron Zwarich. - - Avoid constructing arguments object when accessing length and index properties - https://bugs.webkit.org/show_bug.cgi?id=46572 - - Add opcodes to read argument length and properties, and then implement them. - Much like other lazy opcodes these opcodes take a fast path when the arguments - object has not been instantiated, and fall back on generic access mechanisms - if they are acting on an instantiated object. - - 3% win on v8-earleyboyer, no change elsewhere. - - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::dump): - * bytecode/Opcode.h: - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::emitGetArgumentsLength): - (JSC::BytecodeGenerator::emitGetArgumentByVal): - * bytecompiler/BytecodeGenerator.h: - * bytecompiler/NodesCodegen.cpp: - (JSC::BracketAccessorNode::emitBytecode): - (JSC::DotAccessorNode::emitBytecode): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): - * jit/JIT.cpp: - (JSC::JIT::privateCompileMainPass): - (JSC::JIT::privateCompileSlowCases): - * jit/JIT.h: - * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_get_arguments_length): - (JSC::JIT::emitSlow_op_get_arguments_length): - (JSC::JIT::emit_op_get_argument_by_val): - (JSC::JIT::emitSlow_op_get_argument_by_val): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::emit_op_get_arguments_length): - (JSC::JIT::emitSlow_op_get_arguments_length): - (JSC::JIT::emit_op_get_argument_by_val): - (JSC::JIT::emitSlow_op_get_argument_by_val): - -2010-09-25 Patrick Gansterer <paroga@webkit.org> - - Unreviewed. - - Fix typo in StringHasher class - https://bugs.webkit.org/show_bug.cgi?id=45970 - - * wtf/StringHashFunctions.h: - (WTF::StringHasher::createHash): - -2010-09-24 Patrick Gansterer <paroga@paroga.com> - - Reviewed by Gavin Barraclough. - - Add WTF::StringHasher - https://bugs.webkit.org/show_bug.cgi?id=45970 - - StringHasher is a class for calculation stringHash out of character string. - This class will unify the different usages of the same algorithm. - - * wtf/StringHashFunctions.h: - (WTF::StringHasher::StringHasher): - (WTF::StringHasher::addCharacters): - (WTF::StringHasher::addCharacter): - (WTF::StringHasher::hash): - (WTF::StringHasher::createHash): - (WTF::StringHasher::defaultCoverter): - (WTF::StringHasher::addCharactersToHash): - (WTF::stringHash): - -2010-09-24 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoffrey Garen. - - Variable declarations inside a catch scope don't get propogated to the parent scope - https://bugs.webkit.org/show_bug.cgi?id=46501 - - Add logic to make variable declaration look for a scope for the - new variable. This allows us to create a scope (eg. for catch) - and then seal it, so that additional variable declarations - contained are propogated to the correct target. Strangely this - comes out as a performance win, but I think it's mostly cache - effects. - - * parser/JSParser.cpp: - (JSC::JSParser::Scope::Scope): - (JSC::JSParser::Scope::preventNewDecls): - (JSC::JSParser::Scope::allowsNewDecls): - (JSC::JSParser::declareVariable): - (JSC::JSParser::parseVarDeclarationList): - (JSC::JSParser::parseConstDeclarationList): - (JSC::JSParser::parseTryStatement): - (JSC::JSParser::parseFormalParameters): - (JSC::JSParser::parseFunctionDeclaration): - -2010-09-24 İsmail Dönmez <ismail@namtrac.org> - - Reviewed by Csaba Osztrogonác. - - Add a Windows compatible inttypes.h header to fix WinCE build. - https://bugs.webkit.org/show_bug.cgi?id=46463 - - * os-win32/inttypes.h: Added. - -2010-09-24 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - REGRESSION(r68223): It broke 2-3 tests on bots (Requested by Ossy on #webkit). - https://bugs.webkit.org/show_bug.cgi?id=46448 - - Roll this back in, with additional logic to prevent us from delaying construction - of functions named "arguments" - - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::dump): - * bytecode/Opcode.h: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.xcodeproj/project.pbxproj: * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): - (JSC::BytecodeGenerator::emitInitLazyRegister): - (JSC::BytecodeGenerator::registerFor): - (JSC::BytecodeGenerator::createLazyRegisterIfNecessary): - (JSC::BytecodeGenerator::constRegisterFor): - (JSC::BytecodeGenerator::emitNewFunction): - (JSC::BytecodeGenerator::emitLazyNewFunction): - (JSC::BytecodeGenerator::emitNewFunctionInternal): - * 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_init_lazy_reg): - (JSC::JIT::emit_op_new_func): * jit/JITOpcodes32_64.cpp: - (JSC::JIT::emit_op_init_lazy_reg): - * parser/Nodes.h: - (JSC::ScopeNode::needsActivationForMoreThanVariables): - -2010-09-23 Sheriff Bot <webkit.review.bot@gmail.com> + * runtime/Arguments.h: + * runtime/JSActivation.cpp: + * runtime/JSActivation.h: + * runtime/JSCell.h: + * runtime/JSGlobalObject.cpp: + * runtime/JSGlobalObject.h: + * runtime/JSObject.cpp: + * runtime/JSStaticScopeObject.cpp: + * runtime/JSStaticScopeObject.h: + * runtime/JSVariableObject.h: + * runtime/MarkedSpace.cpp: + * runtime/MarkedSpace.h: - Unreviewed, rolling out r68223. - http://trac.webkit.org/changeset/68223 - https://bugs.webkit.org/show_bug.cgi?id=46448 +2011-03-03 Kevin Ollivier <kevino@theolliviers.com> - It broke 2-3 tests on bots (Requested by Ossy on #webkit). + [wx] Build fix. Alter order of headers included to make sure windows.h + is configured by wx, and skip Posix implementation file we don't use on Win. - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::dump): - * bytecode/Opcode.h: - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): - (JSC::BytecodeGenerator::registerFor): - (JSC::BytecodeGenerator::constRegisterFor): - (JSC::BytecodeGenerator::emitNewFunction): - * 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_new_func): - (JSC::JIT::emit_op_init_arguments): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::emit_op_new_func): - (JSC::JIT::emit_op_init_arguments): - * parser/Nodes.h: + * wscript: + * wtf/wx/StringWx.cpp: -2010-09-23 Oliver Hunt <oliver@apple.com> +2011-03-03 Oliver Hunt <oliver@apple.com> Reviewed by Geoffrey Garen. - Delay construction of functions that aren't captured - https://bugs.webkit.org/show_bug.cgi?id=46433 + JSVariableObject needs to use WriteBarrier for symboltable property storage + https://bugs.webkit.org/show_bug.cgi?id=55698 - If a function isn't captured by an activation there's no - way it can be accessed indirectly, so we can delay the - construction until it's used (similar to what we do with - arguments). We rename the existing op_init_arguments to - op_init_lazy_reg and removed its implicit handling of - the anonymous argument register, and make op_new_function - take a parameter to indicate whether it should null check - the target slot before creating the function object. + Replace the direct usage of Register in JSVariableObject (and descendents) + with WriteBarrier. This requires updating the Arguments object to use + WriteBarrier as well. - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::dump): - * bytecode/Opcode.h: - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): - (JSC::BytecodeGenerator::emitInitLazyRegister): - (JSC::BytecodeGenerator::registerFor): - (JSC::BytecodeGenerator::createLazyRegisterIfNecessary): - (JSC::BytecodeGenerator::constRegisterFor): - (JSC::BytecodeGenerator::emitNewFunction): - (JSC::BytecodeGenerator::emitLazyNewFunction): - (JSC::BytecodeGenerator::emitNewFunctionInternal): - * bytecompiler/BytecodeGenerator.h: * interpreter/Interpreter.cpp: + (JSC::Interpreter::unwindCallFrame): (JSC::Interpreter::privateExecute): - * jit/JIT.cpp: - (JSC::JIT::privateCompileMainPass): - * jit/JIT.h: - * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_init_lazy_reg): - (JSC::JIT::emit_op_new_func): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::emit_op_init_lazy_reg): - * parser/Nodes.h: - (JSC::ScopeNode::needsActivationForMoreThanVariables): - -2010-09-23 David Kilzer <ddkilzer@apple.com> - - <rdar://problem/8460731> ~9.9% speedup when compiling interpreter with llvm-gcc-4.2 - https://bugs.webkit.org/show_bug.cgi?id=46423 - - Reviewed by Oliver Hunt. - - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): Disable the gcc computed - goto hacks added in r55564 when compiling with llvm-gcc-4.2. - -2010-09-23 Lucas De Marchi <lucas.demarchi@profusion.mobi> - - Reviewed by Darin Adler. - - Fix usage of enum as if it was a define - https://bugs.webkit.org/show_bug.cgi?id=46355 - - pthread.h defines PTHREAD_MUTEX_DEFAULT and PTHREAD_MUTEX_NORMAL as an - enum. Hence, it cannot be used by the preprocessor which always - evaluates that condition as true. This was giving a warning when - compiling with gcc and "-Wundef" flag. - - The second path, when PTHREAD_MUTEX_DEFAULT is not the same of - PTHREAD_MUTEX_NORMAL, is not slow. So, let's eliminate the first path - and get rid of that #if. - - * wtf/ThreadingPthreads.cpp: Always call pthread_mutexattr_init() to - set mutex type to PTHREAD_MUTEX_NORMAL. - (WTF::Mutex::Mutex): - -2010-09-23 Michael Saboff <msaboff@apple.com> - - Reviewed by Geoffrey Garen. - - Removed extraneous truncation of ovector on entry and error exit. - Changed the initialization to -1 of vector to only initialize - the start indecies, which is sufficient for the pattern/subpatterns. - Changed the JIT code to not clear the end index for subpatterns - as it isn't needed. These changes are worth ~2.7% on v8-regexp. - https://bugs.webkit.org/show_bug.cgi?id=46404 - - * runtime/RegExp.cpp: - (JSC::RegExp::match): - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::generateParenthesesSingle): - -2010-09-22 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoff Garen. - - Only copy captured variables into activation - https://bugs.webkit.org/show_bug.cgi?id=46330 - - We now track free variable information which means that - we no longer need to copy every variable defined in a - function. With this patch activations only retain those - variables needed for correctness. In order to interact - safely with the inspector this means that JSActivation - now provides its own lookup functions so it can avoid - trying to read or write to variables that have been - optimised out. - - * bytecode/CodeBlock.h: - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): - * parser/Nodes.h: - (JSC::ScopeNode::capturedVariableCount): - (JSC::ScopeNode::captures): + (JSC::Interpreter::retrieveArguments): + * jit/JITStubs.cpp: + (JSC::DEFINE_STUB_FUNCTION): + * runtime/ArgList.h: + (JSC::MarkedArgumentBuffer::initialize): + * runtime/Arguments.cpp: + (JSC::Arguments::markChildren): + (JSC::Arguments::copyToRegisters): + (JSC::Arguments::fillArgList): + (JSC::Arguments::getOwnPropertySlot): + (JSC::Arguments::getOwnPropertyDescriptor): + (JSC::Arguments::put): * runtime/Arguments.h: + (JSC::Arguments::setActivation): + (JSC::Arguments::Arguments): + (JSC::Arguments::copyRegisters): (JSC::JSActivation::copyRegisters): - * runtime/Executable.cpp: - (JSC::FunctionExecutable::FunctionExecutable): - (JSC::FunctionExecutable::compileForCallInternal): - (JSC::FunctionExecutable::compileForConstructInternal): - * runtime/Executable.h: - (JSC::FunctionExecutable::capturedVariableCount): * runtime/JSActivation.cpp: (JSC::JSActivation::markChildren): (JSC::JSActivation::symbolTableGet): (JSC::JSActivation::symbolTablePut): - (JSC::JSActivation::getOwnPropertyNames): (JSC::JSActivation::symbolTablePutWithAttributes): + (JSC::JSActivation::put): + (JSC::JSActivation::putWithAttributes): + (JSC::JSActivation::argumentsGetter): * runtime/JSActivation.h: + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::put): + (JSC::JSGlobalObject::putWithAttributes): + (JSC::JSGlobalObject::markChildren): + (JSC::JSGlobalObject::copyGlobalsFrom): + (JSC::JSGlobalObject::copyGlobalsTo): + (JSC::JSGlobalObject::resizeRegisters): + * runtime/JSGlobalObject.h: + (JSC::JSGlobalObject::setRegisters): + (JSC::JSGlobalObject::addStaticGlobals): + * runtime/JSStaticScopeObject.cpp: + (JSC::JSStaticScopeObject::put): + (JSC::JSStaticScopeObject::putWithAttributes): + * runtime/JSVariableObject.cpp: + (JSC::JSVariableObject::symbolTableGet): + * runtime/JSVariableObject.h: + (JSC::JSVariableObject::registerAt): + (JSC::JSVariableObject::JSVariableObjectData::JSVariableObjectData): + (JSC::JSVariableObject::symbolTableGet): + (JSC::JSVariableObject::symbolTablePut): + (JSC::JSVariableObject::symbolTablePutWithAttributes): + (JSC::JSVariableObject::copyRegisterArray): + (JSC::JSVariableObject::setRegisters): -2010-09-23 Ismail Donmez <ismail@namtrac.org> - - Reviewed by Andreas Kling. - - Fix jsc.exe build for Windows CE - - * jsc.pro: Add mmtimer.lib for Windows CE. - -2010-09-23 Ismail Donmez <ismail@namtrac.org> - - Unreviewed. - - JIT should be disabled on Windows CE. Broken in r64176. - - * wtf/Platform.h: - -2010-09-23 Peter Varga <pvarga@inf.u-szeged.hu> - - Reviewed by Gavin Barraclough. - - Reduce the number of BOL checks in YARR Interpreter - https://bugs.webkit.org/show_bug.cgi?id=46260 - - Extend the YARR Interpreter with an optimization which reduces the number of - BOL assertion checks. If a "TypeBodyAlternative" byteTerm is followed by a - "TypeAssertionBOL" byteTerm it will be checked just one time. - - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::Interpreter::matchDisjunction): - (JSC::Yarr::ByteCompiler::compile): - (JSC::Yarr::ByteCompiler::regexBegin): - (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction): - (JSC::Yarr::ByteCompiler::emitDisjunction): - * yarr/RegexInterpreter.h: - (JSC::Yarr::ByteTerm::BodyAlternativeBegin): - (JSC::Yarr::ByteTerm::BodyAlternativeDisjunction): - (JSC::Yarr::ByteTerm::BodyAlternativeEnd): - (JSC::Yarr::ByteTerm::AlternativeBegin): - (JSC::Yarr::ByteTerm::AlternativeDisjunction): - (JSC::Yarr::ByteTerm::AlternativeEnd): - -2010-09-22 Michael Saboff <msaboff@apple.com> - - Reviewed by Gavin Barraclough. - - Fixed the cross over from alternatives executed once and - those that loop. This fixed the problem where the index - was getting messed up for looping alternatives causing an - infinite loop. - https://bugs.webkit.org/show_bug.cgi?id=46189 - - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::generateDisjunction): - -2010-09-22 Steve Falkenburg <sfalken@apple.com> - - Rubber stamped by Jon Honeycutt. - - Allow jsc.exe to be run against unversioned ICU. - - * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: - -2010-09-22 Kwang Yul Seo <skyul@company100.net> - - Reviewed by Laszlo Gombos. - - Use "typedef wchar_t JSChar" when compiled with RVCT - https://bugs.webkit.org/show_bug.cgi?id=40651 - - Use wchar_t for JSChar and UChar when compiled with RVCT. - Linux is the exception for this rule. - - * API/JSStringRef.h: - * wtf/unicode/qt4/UnicodeQt4.h: - -2010-09-22 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - [INTERPRETER] Two tests fail with SputnikError: #1.1: if argArray is neither an array nor an arguments object (see 10.1.8), a TypeError exception is thrown - https://bugs.webkit.org/show_bug.cgi?id=44245 - - Remove incorrect code from op_load_varargs in the interpreter. - - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): - -2010-09-22 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. +2011-03-03 Geoffrey Garen <ggaren@apple.com> - [JIT] fast/js/sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.5/S15.3.5.3_A2_T6.html fails - https://bugs.webkit.org/show_bug.cgi?id=44246 + Try to fix Windows build. - JIT code generated for instanceof was not checking to ensure that the prototype property was - an object, this patch ensures that it does. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Removed obsolete symbol. - * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_instanceof): - (JSC::JIT::emitSlow_op_instanceof): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::emit_op_instanceof): - (JSC::JIT::emitSlow_op_instanceof): + * runtime/JSStaticScopeObject.cpp: + (JSC::JSStaticScopeObject::getOwnPropertySlot): Don't mark this function + inline -- it's virtual. -2010-09-22 Patrick Gansterer <paroga@webkit.org> +2011-03-02 Geoffrey Garen <ggaren@apple.com> Reviewed by Darin Adler. - Inline UTF8SequenceLength - https://bugs.webkit.org/show_bug.cgi?id=45589 - - * wtf/unicode/UTF8.cpp: - (WTF::Unicode::convertUTF8ToUTF16): Use inline version of UTF8SequenceLength to improve performance. - -2010-09-21 Oliver Hunt <oliver@apple.com> - - RS=Gavin Barraclough. + Moved all variable object storage inline -- upping the object size limit to 1K + https://bugs.webkit.org/show_bug.cgi?id=55653 - Fix codeblock dumping - - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::dump): - * runtime/Executable.h: - (JSC::ScriptExecutable::ScriptExecutable): - -2010-09-21 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoffrey Garen. - - Speed up function.apply(..., arguments) - https://bugs.webkit.org/show_bug.cgi?id=46207 - - Add code to do argument copying inline in the case - where we're using Function.apply to forward our arguments - directly. - - * jit/JIT.cpp: - (JSC::JIT::privateCompileSlowCases): - Splitted op_load_varargs into fast and slow paths, so add the call - to the slow path generator. - * jit/JIT.h: - * jit/JITCall32_64.cpp: - Remove 32bit specific emit_op_load_varargs as the logic is the - same for all value representations + * JavaScriptCore.exp: + * bytecompiler/BytecodeGenerator.cpp: * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_load_varargs): - Copy arguments inline - (JSC::JIT::emitSlow_op_load_varargs): - -2010-09-21 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Oliver Hunt. - - <rdar://problem/8363003> REGRESSION: ~1.4% sunspider regression in - interpreter due to 54724 and 54596 - - Fixed a typo (using "UNLIKELY" instead of "LIKELY"). - - * wtf/PassRefPtr.h: - (WTF::refIfNotNull): - (WTF::derefIfNotNull): It is likely that m_ptr != 0 because most RefPtrs - hold real data. Also, in cases where they do not hold real data, the - compiler usually sees a call to release() right before the call to the - destructor, so it can probably optimize out the test completely. - -2010-09-21 Fridrich Strba <fridrich.strba@bluewin.ch> - - Reviewed by Martin Robinson. - - Build issues with Windows versions of the GTK+ port - https://bugs.webkit.org/show_bug.cgi?id=45844 - - Link with winmm.dll when necessary and specify the executable extension - explicitely so that the Programs/jsc-@WEBKITGTK_API_MAJOR_VERSION@ - rule actually works. - - Don't try to build the ThreadSpecificWin.cpp since GTK+ port uses - a section in ThreadSpecific.cpp - - * GNUmakefile.am: - -2010-09-21 Martin Robinson <mrobinson@igalia.com> - - Reviewed by Xan Lopez. - - [GTK] 'make dist' should be fixed in preparation for the next release - https://bugs.webkit.org/show_bug.cgi?id=46129 - - * GNUmakefile.am: Update the sources list to include missing headers. - -2010-09-21 Dave Tapuska <dtapuska@rim.com> - - Reviewed by Csaba Osztrogonác. - - https://bugs.webkit.org/show_bug.cgi?id=45673 - - r65596 caused ENABLE_PROFILER_REFERENCE_OFFSET to not be - 8 byte aligned. A non 8 byte divisible value for this will - cause the sp to become non 8 byte aligned. - - Verify and correct offset values that r65596 effected that - weren't updated. - - * jit/JITStubs.cpp: - * jit/JITStubs.h: - -2010-09-21 Xan Lopez <xlopez@igalia.com> - - Reviewed by Martin Robinson. - - Fix Opcode stats compilation - https://bugs.webkit.org/show_bug.cgi?id=46079 - - The FixedArray API had changed, and <stdio.h> was not included for - printf. - - * bytecode/Opcode.cpp: - (JSC::OpcodeStats::~OpcodeStats): - -2010-09-20 Michael Saboff <msaboff@apple.com> - - Reviewed by Gavin Barraclough. - - Fixed detection of alternative smaller than the first alternative - to only check looping alternatives. - https://bugs.webkit.org/show_bug.cgi?id=46049 - - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::generateDisjunction): - -2010-09-20 Peter Varga <pvarga@inf.u-szeged.hu> - - Reviewed by Geoffrey Garen. - - REGRESSION(67790): jsc tests are failed with YARR interpreter - https://bugs.webkit.org/show_bug.cgi?id=46083 - - Fix the initializing of the lastSubpatternId member of - parentheses. - - * yarr/RegexCompiler.cpp: - (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd): - -2010-09-20 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Bug 46077 - ASSERT failure in YARR JIT - - We will currently attempt to loop if there are multiple alternatives, they are all - BOL predicated, and the last alternative is longer then the first - however if all - alternatives are BOL predicated the head of loop label will not have been set, and - we'll try to link a jump to an undefined label. Stop doing so. - - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::generateDisjunction): - -2010-09-20 Adam Roben <aroben@apple.com> - - Export RegExpObject::info from JavaScriptCore - - This allows obj->inherits(&RegExpObject::info) to work correctly from - outside JavaScriptCore.dll on Windows. - - Fixes <http://webkit.org/b/46098> - fast/loader/stateobjects/pushstate-object-types.html fails on Windows - - Reviewed by John Sullivan. - - * runtime/RegExpObject.h: Added JS_EXPORTDATA to the info member, as - we already have for some other classes whose info members have to be - used from outside the DLL. - -2010-09-19 Gavin Barraclough <barraclough@apple.com> - - Windows build fix pt 2. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * runtime/Arguments.h: + * runtime/JSActivation.h: Removed out-of-line storage. Changed d-> to m_. -2010-09-19 Gavin Barraclough <barraclough@apple.com> + * runtime/JSCell.h: + (JSC::JSCell::MarkedSpace::sizeClassFor): Added an imprecise size class + to accomodate objects up to 1K. - Windows build fix pt 1. + * runtime/JSGlobalObject.cpp: + * runtime/JSGlobalObject.h: Removed out-of-line storage. Changed d-> to m_. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * runtime/JSObject.cpp: Don't ASSERT that JSFinalObject fills the maximum + object size, since it doesn't anymore. -2010-09-19 Gavin Barraclough <barraclough@apple.com> + * runtime/JSStaticScopeObject.cpp: + * runtime/JSStaticScopeObject.h: + * runtime/JSVariableObject.h: Removed out-of-line storage. Changed d-> to m_. - Build fix - implicit double-to-int conversion invalid on 32-bit. + * runtime/MarkedSpace.cpp: + (JSC::MarkedSpace::MarkedSpace): + (JSC::MarkedSpace::reset): + * runtime/MarkedSpace.h: Added an imprecise size class to accomodate objects up to 1K. - * runtime/DatePrototype.cpp: - (JSC::fillStructuresUsingDateArgs): - (JSC::dateProtoFuncSetYear): +2011-03-03 Timothy Hatcher <timothy@apple.com> -2010-09-19 Gavin Barraclough <barraclough@apple.com> + Make APIShims usable from WebCore. Reviewed by Oliver Hunt. - Bug 46065 - Unify implementation of ToInt32 and ToUInt32, don't use fmod. - - These methods implement the same conversion (see discussion in the notes - of sections of 9.5 and 9.6 of the spec), only differing in how the result - is interpretted. - - Date prototype is incorrectly using toInt32, and this is causing us to - provide an output value indicating whether the input to ToInt32 was finite - (the corresponding methods on Date are actually spec'ed to use ToInteger, - not ToInt32). This patch partially fixes this in order to remove this - bogus output value, hoewever more work will be require to bring Date - fully up to spec compliance (the constructor is still performing ToInt32 - conversions). - - * JavaScriptCore.exp: - * runtime/DatePrototype.cpp: - (JSC::fillStructuresUsingTimeArgs): - (JSC::fillStructuresUsingDateArgs): - (JSC::dateProtoFuncSetYear): - * runtime/JSValue.cpp: - (JSC::toInt32): - * runtime/JSValue.h: - (JSC::toUInt32): - (JSC::JSValue::toInt32): - (JSC::JSValue::toUInt32): - -2010-09-18 Darin Adler <darin@apple.com> - - First step in fixing Windows build. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - Removed incorrect symbol. The build will probably still fail, - but the failure will tell us what symbol to add. - -2010-09-18 Michael Saboff <msaboff@apple.com> - - Reviewed by Gavin Barraclough. - - Added code to unroll regular expressions containing ^. - Alternatives that begin with ^ are tagged during parsing - and rolled up in containing sub expression structs. - After parsing, a regular expression flagged as containing - a ^ (a.k.a. BOL) is processed further in optimizeBOL(). - A copy of the disjunction is made excluding alternatives that - are rooted with BOL. The original alternatives are flagged - to only be executed once. The copy of the other alternatives are - added to the original expression. - In the case that all original alternatives are flagged, there - won't be any looping alternatives. - The JIT generator will emit code accordingly, executing the - original alternatives once and then looping over the - alternatives that aren't anchored with a BOL (if any). - https://bugs.webkit.org/show_bug.cgi?id=45787 - - * yarr/RegexCompiler.cpp: - (JSC::Yarr::RegexPatternConstructor::assertionBOL): - (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd): - (JSC::Yarr::RegexPatternConstructor::copyDisjunction): - (JSC::Yarr::RegexPatternConstructor::copyTerm): - (JSC::Yarr::RegexPatternConstructor::optimizeBOL): - (JSC::Yarr::compileRegex): - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::generateDisjunction): - * yarr/RegexPattern.h: - (JSC::Yarr::PatternAlternative::PatternAlternative): - (JSC::Yarr::PatternAlternative::setOnceThrough): - (JSC::Yarr::PatternAlternative::onceThrough): - (JSC::Yarr::PatternDisjunction::PatternDisjunction): - (JSC::Yarr::RegexPattern::RegexPattern): - (JSC::Yarr::RegexPattern::reset): - -2010-09-18 Patrick Gansterer <paroga@paroga.com> - - Reviewed by Darin Adler. - - Rename Wince files to WinCE - https://bugs.webkit.org/show_bug.cgi?id=37287 - - * wtf/unicode/Unicode.h: - * wtf/unicode/wince/UnicodeWinCE.cpp: Copied from JavaScriptCore/wtf/unicode/wince/UnicodeWince.cpp. - * wtf/unicode/wince/UnicodeWinCE.h: Copied from JavaScriptCore/wtf/unicode/wince/UnicodeWince.h. - * wtf/unicode/wince/UnicodeWince.cpp: Removed. - * wtf/unicode/wince/UnicodeWince.h: Removed. - * wtf/wince/FastMallocWinCE.h: Copied from JavaScriptCore/wtf/wince/FastMallocWince.h. - * wtf/wince/FastMallocWince.h: Removed. - -2010-09-18 Ademar de Souza Reis Jr <ademar.reis@openbossa.org> - - Reviewed by Kenneth Rohde Christiansen. - - Enable Platform Strategies on Qt - - [Qt] Turn on PLATFORM_STRATEGIES - https://bugs.webkit.org/show_bug.cgi?id=45831 - - * wtf/Platform.h: Enable Platform Strategies when building QtWebkit - -2010-09-17 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - Imprecise tracking of variable capture leads to overly pessimistic creation of activations - https://bugs.webkit.org/show_bug.cgi?id=46020 - - The old logic for track free and captured variables would cause us - to decide we needed an activation in every function along the scope - chain between a variable capture and its declaration. We now track - captured variables precisely which requires a bit of additional work - - The most substantial change is that the parsing routine needs to - be passed the list of function parameters when reparsing a function - as when reparsing we don't parse the function declaration itself only - its body. - + * ForwardingHeaders/JavaScriptCore/APIShims.h: Added. + * GNUmakefile.am: * JavaScriptCore.exp: - * parser/JSParser.cpp: - (JSC::JSParser::Scope::Scope): - (JSC::JSParser::Scope::needsFullActivation): - We need to distinguish between use of a feature that requires - an activation and eval so we now get this additional flag. - (JSC::JSParser::Scope::collectFreeVariables): - (JSC::JSParser::Scope::getCapturedVariables): - We can't simply return the list of "capturedVariables" now as - is insufficiently precise, so we compute them instead. - (JSC::JSParser::popScope): - (JSC::jsParse): - (JSC::JSParser::JSParser): - (JSC::JSParser::parseProgram): - (JSC::JSParser::parseWithStatement): - (JSC::JSParser::parseTryStatement): - (JSC::JSParser::parseFunctionInfo): - (JSC::JSParser::parseFunctionDeclaration): - (JSC::JSParser::parseProperty): - (JSC::JSParser::parseMemberExpression): - * parser/JSParser.h: - * parser/Parser.cpp: - (JSC::Parser::parse): - * parser/Parser.h: - (JSC::Parser::parse): - * runtime/Executable.cpp: - (JSC::EvalExecutable::compileInternal): - (JSC::ProgramExecutable::checkSyntax): - (JSC::ProgramExecutable::compileInternal): - (JSC::FunctionExecutable::compileForCallInternal): - (JSC::FunctionExecutable::compileForConstructInternal): - (JSC::FunctionExecutable::reparseExceptionInfo): - (JSC::EvalExecutable::reparseExceptionInfo): - (JSC::FunctionExecutable::fromGlobalCode): - Pass function parameters (if available) to the parser. - -2010-09-17 Anders Carlsson <andersca@apple.com> - - Reviewed by Sam Weinig. - - Add IsFloatingPoint and IsArithmetic type traits - https://bugs.webkit.org/show_bug.cgi?id=46018 - - * wtf/TypeTraits.h: - * wtf/TypeTraits.cpp: - -2010-09-17 Martin Robinson <mrobinson@igalia.com> - - Reviewed by Oliver Hunt. - - [GTK] FontPlatformDataFreeType should use smart pointers to hold its members - https://bugs.webkit.org/show_bug.cgi?id=45917 - - Added support to PlatformRefPtr for handling HashTableDeletedValue. - - * wtf/PlatformRefPtr.h: - (WTF::PlatformRefPtr::PlatformRefPtr): Added a constructor that takes HashTableDeletedValue. - (WTF::PlatformRefPtr::isHashTableDeletedValue): Added. - -2010-09-16 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoffrey Garen. - - Crash due to timer triggered GC on one heap while another heap is active - https://bugs.webkit.org/show_bug.cgi?id=45932 - <rdar://problem/8318446> - - The GC timer may trigger for one heap while another heap is active. This - is safe, but requires us to ensure that we have temporarily associated the - thread's identifierTable with the heap we're collecting on. Otherwise we - may end up with the identifier tables in an inconsistent state leading to - an eventual crash. - - * runtime/Collector.cpp: - (JSC::Heap::allocate): - (JSC::Heap::reset): - (JSC::Heap::collectAllGarbage): - Add assertions to ensure we have the correct identifierTable active - while collecting. - * runtime/GCActivityCallbackCF.cpp: - (JSC::DefaultGCActivityCallbackPlatformData::trigger): - Temporarily make the expected IdentifierTable active - * wtf/WTFThreadData.h: - (JSC::IdentifierTable::remove): - Make it possible to see when IdentifierTable::remove has succeeded - * wtf/text/StringImpl.cpp: - (WTF::StringImpl::~StringImpl): - CRASH if an StringImpl is an Identifier but isn't present in the - active IdentifierTable. If we get to this state something has - gone wrong and we should just crash immediately. - -2010-09-16 Martin Robinson <mrobinson@igalia.com> - - Reviewed by Xan Lopez. - - [GTK] Implement dissolveDragImageToFraction - https://bugs.webkit.org/show_bug.cgi?id=45826 - - * wtf/gobject/GTypedefs.h: Added forward declarations for GtkWindow and GdkEventExpose. - -2010-09-16 Eric Uhrhane <ericu@chromium.org> - - Reviewed by Jian Li. - - Unify FILE_SYSTEM and FILE_WRITER enables under the name FILE_SYSTEM. - https://bugs.webkit.org/show_bug.cgi?id=45798 - - * Configurations/FeatureDefines.xcconfig: - -2010-09-15 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoffrey Garen. - - Use free variable analysis to improve activation performance - https://bugs.webkit.org/show_bug.cgi?id=45837 - - Adds free and captured variable tracking to the JS parser. This - allows us to avoid construction of an activation object in some - cases. Future patches will make more use of this information to - improve those cases where activations are still needed. - - * parser/ASTBuilder.h: - * parser/JSParser.cpp: - (JSC::JSParser::Scope::Scope): - (JSC::JSParser::Scope::declareVariable): - (JSC::JSParser::Scope::useVariable): - (JSC::JSParser::Scope::collectFreeVariables): - (JSC::JSParser::Scope::capturedVariables): - (JSC::JSParser::ScopeRef::ScopeRef): - (JSC::JSParser::ScopeRef::operator->): - (JSC::JSParser::ScopeRef::index): - (JSC::JSParser::currentScope): - (JSC::JSParser::pushScope): - (JSC::JSParser::popScope): - (JSC::JSParser::parseProgram): - (JSC::JSParser::parseVarDeclarationList): - (JSC::JSParser::parseConstDeclarationList): - (JSC::JSParser::parseTryStatement): - (JSC::JSParser::parseFormalParameters): - (JSC::JSParser::parseFunctionInfo): - (JSC::JSParser::parseFunctionDeclaration): - (JSC::JSParser::parsePrimaryExpression): - * parser/Nodes.cpp: - (JSC::ScopeNodeData::ScopeNodeData): - (JSC::ScopeNode::ScopeNode): - (JSC::ProgramNode::ProgramNode): - (JSC::ProgramNode::create): - (JSC::EvalNode::EvalNode): - (JSC::EvalNode::create): - (JSC::FunctionBodyNode::FunctionBodyNode): - (JSC::FunctionBodyNode::create): - * parser/Nodes.h: - (JSC::ScopeNode::needsActivation): - (JSC::ScopeNode::hasCapturedVariables): - * parser/Parser.cpp: - (JSC::Parser::didFinishParsing): - * parser/Parser.h: - (JSC::Parser::parse): - * parser/SyntaxChecker.h: - * runtime/Executable.cpp: - (JSC::EvalExecutable::compileInternal): - (JSC::ProgramExecutable::compileInternal): - (JSC::FunctionExecutable::compileForCallInternal): - (JSC::FunctionExecutable::compileForConstructInternal): - * runtime/Executable.h: - (JSC::ScriptExecutable::needsActivation): - (JSC::ScriptExecutable::recordParse): - -2010-09-14 Hyung Song <beergun@company100.net> - - Reviewed by Kent Tamura. - - [BREWMP] Add IMemGroup and IMemSpace to OwnPtr type. - https://bugs.webkit.org/show_bug.cgi?id=44764 - - * wtf/OwnPtrCommon.h: - * wtf/brew/OwnPtrBrew.cpp: - (WTF::deleteOwnedPtr): - -2010-09-14 Darin Adler <darin@apple.com> - - Reviewed by Geoffrey Garen. - - Sort with non-numeric custom sort function fails on array with length but no values - https://bugs.webkit.org/show_bug.cgi?id=45781 - - * runtime/JSArray.cpp: - (JSC::JSArray::sort): Replaced early exit for an array of length zero to instead - exit for any array without values, even if it has a non-0 length. - -2010-09-14 Steve Falkenburg <sfalken@apple.com> - - Windows production build fix. - Roll out r65143. - + * JavaScriptCore.gypi: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: - -2010-09-14 Kwang Yul Seo <skyul@company100.net> - - Reviewed by Darin Adler. - - Share UnicodeMacrosFromICU.h - https://bugs.webkit.org/show_bug.cgi?id=45710 - - glib, qt4 and wince use the same macros from ICU. - Remove the code duplication and use the same header file. - - * wtf/unicode/UnicodeMacrosFromICU.h: Copied from JavaScriptCore/wtf/unicode/glib/UnicodeMacrosFromICU.h. - * wtf/unicode/glib/UnicodeMacrosFromICU.h: Removed. - * wtf/unicode/qt4/UnicodeQt4.h: - * wtf/unicode/wince/UnicodeWince.h: - -2010-09-13 Darin Adler <darin@apple.com> - - Reviewed by Adam Barth. - - Preparation for eliminating deprecatedParseURL - https://bugs.webkit.org/show_bug.cgi?id=45695 - - * wtf/text/WTFString.h: Added isAllSpecialCharacters, moved here from - the HTML tree builder. - -2010-09-13 Darin Fisher <darin@chromium.org> - - Reviewed by David Levin. - - Add option to conditionally compile smooth scrolling support. - https://bugs.webkit.org/show_bug.cgi?id=45689 - - ENABLE(SMOOTH_SCROLLING) is disabled by default for all platforms. - - * wtf/Platform.h: - -2010-09-13 Adam Roben <aroben@apple.com> - - Copy JavaScriptCore's generated sources to the right directory - - * JavaScriptCore.vcproj/JavaScriptCore.make: Fixed typo. - -2010-09-13 Kwang Yul Seo <skyul@company100.net> - - Reviewed by Kent Tamura. - - [BREWMP] Don't call _msize - https://bugs.webkit.org/show_bug.cgi?id=45556 - - Because Brew MP uses its own memory allocator, it is not correct to use - _msize in fastMallocSize. Add !PLATFORM(BREWMP) guard. - - * wtf/FastMalloc.cpp: - (WTF::fastMallocSize): - -2010-09-11 Simon Hausmann <simon.hausmann@nokia.com> - - Reviewed by Andreas Kling. - - [Qt] V8 port: webcore project files changes - https://bugs.webkit.org/show_bug.cgi?id=45141 - - * JavaScriptCore.pro: Moved wtf specific files to wtf.pri, - so that they can also be used from WebCore.pro for v8 builds. - * wtf/wtf.pri: Added. - -2010-09-10 Fridrich Strba <fridrich.strba@bluewin.ch> - - Reviewed by Andreas Kling. - - Add a define missing when building with glib unicode backend - https://bugs.webkit.org/show_bug.cgi?id=45544 - - * wtf/unicode/glib/UnicodeMacrosFromICU.h: - -2010-09-10 Stephanie Lewis <slewis@apple.com> - - Reviewed by Alexey Proskuryakov. - - Refactor JavaScriptCore memory statistics so that WebKit doesn't need to know - about the JIT and other implementation details of JavaScriptCore. Necessary - to fix PPC build. - - https://bugs.webkit.org/show_bug.cgi?id=45528 - - * JavaScriptCore.exp: * JavaScriptCore.xcodeproj/project.pbxproj: - * runtime/MemoryStatistics.cpp: Added. - (JSC::memoryStatistics): - * runtime/MemoryStatistics.h: Added. - -2010-09-09 Michael Saboff <msaboff@apple.com> - - Reviewed by Gavin Barraclough. - - Added a regular expression tracing facility. This tracing is connected - to jsc. Every compiled regular expression object is added to a list. - When the process exits, each regular expression dumps its pattern, - JIT address, number of times it was executed and the number of matches. - This tracing is controlled by the macro ENABLE_REGEXP_TRACING in - wtf/Platform.h. - https://bugs.webkit.org/show_bug.cgi?id=45401 - - * JavaScriptCore.exp: - * jsc.cpp: - (runWithScripts): - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::JSGlobalData): - (JSC::JSGlobalData::~JSGlobalData): - (JSC::JSGlobalData::addRegExpToTrace): - (JSC::JSGlobalData::dumpRegExpTrace): - * runtime/JSGlobalData.h: - * runtime/RegExp.cpp: - (JSC::RegExp::RegExp): - (JSC::RegExp::create): - (JSC::RegExp::match): - * runtime/RegExp.h: - * wtf/Platform.h: - * yarr/RegexJIT.h: - (JSC::Yarr::RegexCodeBlock::getAddr): - -2010-09-09 John Therrell <jtherrell@apple.com> - - 32-bit build fix. - - * jit/ExecutableAllocator.cpp: - (JSC::ExecutableAllocator::committedByteCount): - -2010-09-09 John Therrell <jtherrell@apple.com> - - Reviewed by Alexey Proskuryakov. - - Added statistics sampling and reporting for JavaScriptCore's RegisterFile and ExecutableAllocator classes - https://bugs.webkit.org/show_bug.cgi?id=45134 - - Added thread-safe committed byte counting and reporting functionality to RegisterFile and - ExecutableAllocator. - - * JavaScriptCore.exp: - Exported new symbols to allow for WebKit to get statistics from JavaScriptCore classes. - - * interpreter/RegisterFile.cpp: - (JSC::registerFileStatisticsMutex): - Added function which returns a static Mutex used for locking during read/write access to - static committed byte count variable. - (JSC::RegisterFile::~RegisterFile): - Added call to addToStatistics since memory is decommitted here. - (JSC::RegisterFile::releaseExcessCapacity): - Added call to addToStatistics since memory is decommitted here. - (JSC::RegisterFile::initializeThreading): - Added function which calls registerFileStatisticsMutex(). - (JSC::RegisterFile::committedByteCount): - Added function which returns the current committed byte count for RegisterFile. - (JSC::RegisterFile::addToCommittedByteCount): - Added function which updates committed byte count. - - * interpreter/RegisterFile.h: - (JSC::RegisterFile::RegisterFile): - Added call to addToStatistics since memory is committed here. - (JSC::RegisterFile::grow): - Added call to addToStatistics since memory is committed here. - - * jit/ExecutableAllocator.h: - Added function prototype for public static function committedByteCount(). - - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::FixedVMPoolAllocator::release): - Added call to addToStatistics since memory is decommitted here. - (JSC::FixedVMPoolAllocator::reuse): - Added call to addToStatistics since memory is committed here. - (JSC::FixedVMPoolAllocator::addToCommittedByteCount): - Added function which updates committed byte count. - (JSC::ExecutableAllocator::committedByteCount): - Added function which returns the current committed byte count for ExecutableAllocator. - - * runtime/InitializeThreading.cpp: - (JSC::initializeThreadingOnce): - Added call to RegisterFile::initializeThreading. -2010-09-09 Mark Rowe <mrowe@apple.com> +2011-03-03 Peter Varga <pvarga@webkit.org> Reviewed by Oliver Hunt. - <http://webkit.org/b/45502> JSObjectSetPrivateProperty does not handle NULL values as it claims - - * API/JSObjectRef.cpp: - (JSObjectSetPrivateProperty): Don't call toJS if we have a NULL value as that will cause an assertion - failure. Instead map NULL directly to the null JSValue. - * API/tests/testapi.c: - (main): Add test coverage for the NULL value case. - -2010-09-09 Csaba Osztrogonác <ossy@webkit.org> - - Reviewed by Gavin Barraclough. - - [Qt] JSVALUE32_64 not works on Windows platform with MinGW compiler - https://bugs.webkit.org/show_bug.cgi?id=29268 - - * wtf/Platform.h: Enable JSVALUE32_64 for Qt/Windows/MinGW, because it works now. - -2010-09-08 Zoltan Herczeg <zherczeg@webkit.org> - - Reviewed by Darin Adler. - - Removing doneSemicolon label in the lexer - https://bugs.webkit.org/show_bug.cgi?id=45289 - - As a side effect of moving the multiline comment parsing - to a separate function, an opportunity raised to simplify - the single line comment parsing, and removing doneSemicolon - label. Slight performance increase on --parse-only - tests (from 32.8ms to 31.5ms) - - * parser/Lexer.cpp: - (JSC::Lexer::lex): - -2010-09-08 Xan Lopez <xlopez@igalia.com> - - Reviewed by Alexey Proskuryakov. - - Remove accessor for private member variable in JSParser - https://bugs.webkit.org/show_bug.cgi?id=45378 + Begin Characters Optimization Causes YARR Interpreter Errors + https://bugs.webkit.org/show_bug.cgi?id=55479 - m_token is private to JSParser, so it does not seem to be useful - to have an accessor for it. On top of that, the file was both - using the accessor and directly accessing the member variable, - only one style should be used. + The addBeginTerm function is removed because it doesn't correctly handle those + cases when an "invalid" term has been + collected (e.g. CharacterClass). Move the removed function to the + setupAlternativeBeginTerms method's switch-case + where the non-allowed cases are correctly handled. -2010-09-08 Csaba Osztrogonác <ossy@webkit.org> + Reenable the Beginning Character Optimization in the YARR Interpreter again. - Reviewed by Oliver Hunt. - - [Qt] REGRESSION(63348): jsc is broken - https://bugs.webkit.org/show_bug.cgi?id=42818 - - Need fastcall conventions on Qt/Win/MinGW. - Based on patches of Gavin Barraclough: r63947 and r63948. - - * jit/JITStubs.cpp: - * jit/JITStubs.h: - -2010-09-08 Robert Hogan <robert@webkit.org> - - Reviewed by Antonio Gomes. - - Remove some unnecessary duplicate calls to string functions - - https://bugs.webkit.org/show_bug.cgi?id=45314 - - * wtf/text/WTFString.cpp: - (WTF::String::format): + * yarr/YarrPattern.cpp: + (JSC::Yarr::YarrPatternConstructor::setupAlternativeBeginTerms): + (JSC::Yarr::YarrPattern::compile): -2010-09-08 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> +2011-03-02 Jessie Berlin <jberlin@apple.com> - Reviewed by Andreas Kling. + Reviewed by Adam Roben. - Re-Disable JIT for MSVC 64bit to fix the build on this compiler. - https://bugs.webkit.org/show_bug.cgi?id=45382 + WebKit2: Use CFNetwork Sessions API. + https://bugs.webkit.org/show_bug.cgi?id=55435 - It was enabled in the cleanup made in r64176, though it is still - not implemented. + Add the ability to create a Private Browsing storage session. * wtf/Platform.h: + Add a new #define for using CF Storage Sessions. -2010-09-08 Martin Robinson <mrobinson@igalia.com> - - Reviewed by Xan Lopez. +2011-03-02 Oliver Hunt <oliver@apple.com> - [GTK] Need a WebSocket implementation - https://bugs.webkit.org/show_bug.cgi?id=45197 - - Add a GIO-based WebSocket implementation. - - * wtf/gobject/GRefPtr.cpp: Added PlatformRefPtr support for GSource. - (WTF::refPlatformPtr): - (WTF::derefPlatformPtr): - * wtf/gobject/GRefPtr.h: Added new template specialization declarations. - * wtf/gobject/GTypedefs.h: Add some more GLib/GIO forward declarations. + Reviewed by Gavin Barraclough. -2010-08-30 Maciej Stachowiak <mjs@apple.com> + Remove "register slot" concept from PropertySlot + https://bugs.webkit.org/show_bug.cgi?id=55621 - Reviewed by Darin Adler. + PropertySlot had already stopped storing Register "slots" + so this patch is simply removing that api entirely. + This exposed a problem in the ProgramNode constructor for + BytecodeGenerator where it reads from the registerfile + before it has initialised it. - Handle MediaQueryExp memory management exclusively with smart pointers - https://bugs.webkit.org/show_bug.cgi?id=44874 - - Implemented a non-copying sort function to make it possible to sort a Vector - of OwnPtrs (which cannot be copied). This is required for the above. + This bug wasn't a problem before as we were merely testing + for property existence rather than the actual value, and + used to work because setRegisterSlot didn't check that the + provided slot contained an initialised value. - * wtf/NonCopyingSort.h: Added. - (WTF::nonCopyingSort): It's secretly heapsort. - (WTF::heapSort): heapsort implementation. - (WTF::siftDown): Helper function for heapsort. - (WTF::heapify): ditto + To get around this issue we now use symbolTableHasProperty + to do the symbol table check without trying to read the + RegisterFile. - Adjust build systems. - - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::BytecodeGenerator): + * runtime/Arguments.cpp: + (JSC::Arguments::getOwnPropertySlot): + * runtime/JSActivation.cpp: + (JSC::JSActivation::symbolTableGet): + * runtime/JSGlobalObject.h: + (JSC::JSGlobalObject::symbolTableHasProperty): + * runtime/JSVariableObject.h: + (JSC::JSVariableObject::symbolTableGet): + * runtime/PropertySlot.h: -2010-09-08 Zoltan Herczeg <zherczeg@webkit.org> - - Reviewed by Darin Adler. - - Refactoring multiline comments in the lexer - https://bugs.webkit.org/show_bug.cgi?id=45289 - - MultiLine comment parsing is moved to a separate function. - - Slight performance increase on --parse-only tests (from 33.6ms to 32.8ms) - SunSpider reports no change (from 523.1ms to 521.2ms). - - * parser/Lexer.cpp: - (JSC::Lexer::parseMultilineComment): - (JSC::Lexer::lex): - * parser/Lexer.h: - -2010-09-07 James Robinson <jamesr@chromium.org> - - Compile fix attempt for windows. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - -2010-09-07 Mihai Parparita <mihaip@chromium.org> - - Reviewed by James Robinson. - - Fix Windows build after r66936 - https://bugs.webkit.org/show_bug.cgi?id=45348 - - Add symbol names that were missing from r66936. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - -2010-09-07 Mihai Parparita <mihaip@chromium.org> - - Reviewed by Oliver Hunt. - - pushState and replaceState do not clone RegExp objects correctly - https://bugs.webkit.org/show_bug.cgi?id=44718 - - Move internal representation of JSC::RegExp (which depends on wether - YARR and YARR_JIT is enabled) into RegExpRepresentation which can live - in the implementation only. This makes it feasible to use RegExp in - WebCore without bringing in all of YARR. - - * JavaScriptCore.exp: Export RegExp and RegExpObject functions that are - needed inside WebCore's JSC bindings. - * runtime/RegExp.cpp: - (JSC::RegExpRepresentation::~RegExpRepresentation): - (JSC::RegExp::RegExp): - (JSC::RegExp::~RegExp): - (JSC::RegExp::compile): - (JSC::RegExp::match): - * runtime/RegExp.h: - -2010-09-07 Anders Carlsson <andersca@apple.com> - - Reviewed by Darin Adler. - - <rdar://problem/8381749> -Wcast-align warning emitted when building with clang - - Remove the -Wcast-align-warning since it isn't really useful, and clang is more aggressive about warning than gcc. - - * Configurations/Base.xcconfig: - -2010-09-07 Zoltan Horvath <zoltan@webkit.org> - - Reviewed by Darin Adler. - - REGRESSION(66741): Undefined pthread macros - https://bugs.webkit.org/show_bug.cgi?id=45246 - - PTHREAD_MUTEX_NORMAL and PTHREAD_MUTEX_DEFAULT (introduced in r60487) are not defined on Linux, - but used in a statement. Add an additional check to test this. - - * wtf/FastMalloc.cpp: - (WTF::TCMalloc_PageHeap::initializeScavenger): - -2010-09-06 Oliver Hunt <oliver@apple.com> - - Windows build fix - -2010-09-05 Oliver Hunt <oliver@apple.com> - - Reviewed by Sam Weinig. - - SerializedScriptValue needs to use a flat storage mechanism - https://bugs.webkit.org/show_bug.cgi?id=45244 - - Export JSArray::put - - * JavaScriptCore.exp: - -2010-09-06 Chao-ying Fu <fu@mips.com> - - Reviewed by Oliver Hunt. +2011-03-02 Daniel Cheng <dcheng@chromium.org> - Support JSVALUE32_64 on MIPS - https://bugs.webkit.org/show_bug.cgi?id=43999 + Reviewed by David Levin. - Add missing functions to support JSVALUE32_64 on MIPS. - Remove JSVALUE32 as the default for MIPS. + Add feature define for data transfer items + https://bugs.webkit.org/show_bug.cgi?id=55510 - * assembler/MIPSAssembler.h: - (JSC::MIPSAssembler::divd): - (JSC::MIPSAssembler::mthc1): - (JSC::MIPSAssembler::cvtwd): - * assembler/MacroAssemblerMIPS.h: - (JSC::MacroAssemblerMIPS::neg32): - (JSC::MacroAssemblerMIPS::branchOr32): - (JSC::MacroAssemblerMIPS::set8): - (JSC::MacroAssemblerMIPS::loadDouble): - (JSC::MacroAssemblerMIPS::divDouble): - (JSC::MacroAssemblerMIPS::convertInt32ToDouble): - (JSC::MacroAssemblerMIPS::branchDouble): - (JSC::MacroAssemblerMIPS::branchConvertDoubleToInt32): - (JSC::MacroAssemblerMIPS::zeroDouble): - * jit/JIT.h: - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::privateCompileCTINativeCall): - * jit/JITPropertyAccess32_64.cpp: - (JSC::JIT::privateCompilePutByIdTransition): - * jit/JITStubs.cpp: - (JSC::JITThunks::JITThunks): - * jit/JITStubs.h: + * Configurations/FeatureDefines.xcconfig: * wtf/Platform.h: -2010-09-06 Robert Hogan <robert@webkit.org> - - Unreviewed, compile fix. - - Fix compile failure in r66843 - - Revert to original patch in bugzilla. Leave bug open for - discussion on potential removal of double utf8 conversion. +2011-03-02 Adam Roben <aroben@apple.com> - https://bugs.webkit.org/show_bug.cgi?id=45240 - - * wtf/text/WTFString.cpp: - (WTF::String::format): - -2010-09-06 Robert Hogan <robert@webkit.org> - - Reviewed by Andreas Kling. + Delete old .res files whenever any .vsprops file changes - [Qt] utf8 encoding of console() messages + Prospective fix for <http://webkit.org/b/55599> r80079 caused incremental Windows builds to + fail - Unskip: - http/tests/security/xssAuditor/embed-tag-null-char.html - http/tests/security/xssAuditor/object-embed-tag-null-char.html - - Both tests failed because Qt's implementation of String::format() - is casting a utf8 result to String, which assumes latin1 in - its constructor. So instead of casting a QString to a String, use - StringImpl::create() instead. Unfortunately, this involves a lot - of extra casts but the end result is correct. - - https://bugs.webkit.org/show_bug.cgi?id=45240 - - * wtf/text/WTFString.cpp: - (WTF::String::format): - -2010-09-03 Alexey Proskuryakov <ap@apple.com> - - Reviewed by Darin Adler. - - https://bugs.webkit.org/show_bug.cgi?id=45135 - <rdar://problem/7823714> TCMalloc_PageHeap doesn't hold a mutex while manipulating shared data - - * wtf/FastMalloc.cpp: - (WTF::TCMalloc_PageHeap::initializeScavenger): Make sure to create a non-recursive mutex - regardless of platform default, so that we can assert that it's held (this is for platforms - that don't have libdispatch). - (WTF::TCMalloc_PageHeap::signalScavenger): Assert that the mutex is held, so we can look - at m_scavengeThreadActive. For platforms that have libdispatch, assert that pageheap_lock - is held. - (WTF::TCMalloc_PageHeap::periodicScavenge): Make sure that pageheap_lock is held before - manipulating m_scavengeThreadActive. Otherwise, there is an obvious race condition, and we - can make unbalanced calls to dispatch_resume(). - -2010-09-03 Lucas De Marchi <lucas.demarchi@profusion.mobi> + Reviewed by Tony Chang. - Reviewed by Martin Robinson. - - [EFL] Regression (66531) Build break with Glib Support - https://bugs.webkit.org/show_bug.cgi?id=45011 - - Move GtkTypedefs.h to GTypedefs.h and let it inside gobject directory - since when glib is enabled, EFL port needs it, too. - - * CMakeListsEfl.txt: Include gobject directory to find new header - file. - * GNUmakefile.am: Ditto. - * wtf/CMakeListsEfl.txt: Ditto. - * wtf/Platform.h: Include header if port is EFL and glib support is - enabled. - * wtf/gtk/GtkTypedefs.h: Removed. - * wtf/gobject/GTypedefs.h: Added. Sections specific to GTK are now - guarded by PLATFORM(GTK). - -2010-09-03 Csaba Osztrogonác <ossy@webkit.org> - - Reviewed by Simon Hausmann. - - Fix warning in wtf/ByteArray.h - https://bugs.webkit.org/show_bug.cgi?id=44672 - - * wtf/ByteArray.h: Use maximal sized array for MSVC and unsized array for other compilers. - -2010-09-02 Adam Barth <abarth@webkit.org> - - Reviewed by Eric Seidel. - - Actually parse a URL from ParsedURL - https://bugs.webkit.org/show_bug.cgi?id=45080 - - This patch only handles standard URLs. At some point we'll need to - distinguish between standard URLs and other kinds of URLs. - - * wtf/url/api/ParsedURL.cpp: - (WTF::ParsedURL::ParsedURL): + * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: + (main): Restructured code to loop over a set of file extensions, deleting any old files that + have that extension. Now deletes .res files, too. (We previously deleted any file matching + *.manifest*, but that turned out to just be the union of *.manifest and *.res.) -2010-09-02 Adam Barth <abarth@webkit.org> +2011-03-02 Adam Barth <abarth@webkit.org> - Reviewed by Eric Seidel. + Reviewed by Dimitri Glazkov. - Add ParsedURL and URLString to WTFURL API - https://bugs.webkit.org/show_bug.cgi?id=45078 + Teach JavaScriptCore GYP build how to build minidom + https://bugs.webkit.org/show_bug.cgi?id=55536 - Currently there's no actual URL parsing going on, but this patch is a - start to sketching out the API. + * JavaScriptCore.gypi: + * gyp/JavaScriptCore.gyp: - * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/url/api/ParsedURL.cpp: Added. - (WTF::ParsedURL::ParsedURL): - (WTF::ParsedURL::scheme): - (WTF::ParsedURL::username): - (WTF::ParsedURL::password): - (WTF::ParsedURL::host): - (WTF::ParsedURL::port): - (WTF::ParsedURL::path): - (WTF::ParsedURL::query): - (WTF::ParsedURL::fragment): - (WTF::ParsedURL::segment): - * wtf/url/api/ParsedURL.h: Added. - (WTF::ParsedURL::spec): - * wtf/url/api/URLString.h: Added. - (WTF::URLString::URLString): - (WTF::URLString::string): - -2010-09-02 Adam Barth <abarth@webkit.org> +2011-03-01 Adam Barth <abarth@webkit.org> Reviewed by Eric Seidel. - Add WTFURL to the JavaScriptCore build on Mac - https://bugs.webkit.org/show_bug.cgi?id=45075 - - Building code is good. + JavaScriptCore GYP build should copy some headers into the target framework + https://bugs.webkit.org/show_bug.cgi?id=55524 - * JavaScriptCore.xcodeproj/project.pbxproj: - -2010-09-02 Alexey Proskuryakov <ap@apple.com> - - Reviewed by Oliver Hunt. - - https://bugs.webkit.org/show_bug.cgi?id=43230 - <rdar://problem/8254215> REGRESSION: Memory leak within JSParser::JSParser - - One can't delete a ThreadSpecific object that has data in it. It's not even possible to - enumerate data objects in all threads, much less destroy them from a thread that's destroying - the ThreadSpecific. - - * parser/JSParser.cpp: - (JSC::JSParser::JSParser): - * runtime/JSGlobalData.h: - * wtf/WTFThreadData.cpp: - (WTF::WTFThreadData::WTFThreadData): - * wtf/WTFThreadData.h: - (WTF::WTFThreadData::approximatedStackStart): - Moved stack guard tracking from JSGlobalData to WTFThreadData. - - * wtf/ThreadSpecific.h: Made destructor unimplemented. It's dangerous, and we probably won't - ever face a situation where we'd want to delete a ThreadSpecific object. - -2010-09-01 Gavin Barraclough <barraclough@apple.com> - - Rubber stamped by Oliver Hunt. + After this patch, all the framework headers are exported as public + headers. We need to teach GYP how to handle private headers. - Ecma-262 15.11.1.1 states that if the argument is undefined then an - Error object's message property should be set to the empty string. - - * runtime/ErrorInstance.cpp: - (JSC::ErrorInstance::ErrorInstance): - (JSC::ErrorInstance::create): - * runtime/ErrorInstance.h: - * runtime/ErrorPrototype.cpp: - (JSC::ErrorPrototype::ErrorPrototype): - -2010-08-31 Darin Adler <darin@apple.com> - - Reviewed by Anders Carlsson. + I struggled to determine how to store the information about whether a + header was public, private, or project (i.e., not exported). + Generally, the GYPI should just list the files, but it seemed siliy to + have an almost duplicated list of files in the GYP file itself. If + this design doesn't scale, we might have to revisit it in the future. - * wtf/FastMalloc.cpp: - (WTF::TCMalloc_PageHeap::scavenge): Replaced somewhat-quirky code that - mixed types with code that uses size_t. - - * wtf/TCPageMap.h: Removed names of unused arguments to avoid warning. - -2010-08-31 Martin Robinson <mrobinson@igalia.com> - - Reviewed by Gustavo Noronha Silva. - - [GTK] Isolate all GTK+ typedefs into one file - https://bugs.webkit.org/show_bug.cgi?id=44900 - - * GNUmakefile.am: Add GtkTypedefs.h to the source lists. - * wtf/Platform.h: #include GtkTypedefs.h for the GTK+ build. - * wtf/ThreadingPrimitives.h: Remove GTK+ typedefs. - * wtf/gobject/GOwnPtr.h: Ditto. - * wtf/gobject/GRefPtr.h: Ditto. - * wtf/gtk/GtkTypedefs.h: Added. - -2010-08-31 Martin Robinson <mrobinson@igalia.com> - - Reviewed by Gustavo Noronha Silva. - - [GTK] Fix 'make dist' in preparation of the 1.3.3 release - https://bugs.webkit.org/show_bug.cgi?id=44978 - - * GNUmakefile.am: Adding missing headers to the sources list. - -2010-08-31 Chao-ying Fu <fu@mips.com> - - Reviewed by Oliver Hunt. - - Support emit_op_mod() for MIPS - https://bugs.webkit.org/show_bug.cgi?id=42855 - - This patch uses MIPS div instructions for op_mod to improve performance. - - * assembler/MIPSAssembler.h: - (JSC::MIPSAssembler::div): - * jit/JITArithmetic.cpp: - (JSC::JIT::emit_op_mod): - (JSC::JIT::emitSlow_op_mod): - -2010-08-31 Csaba Osztrogonác <ossy@webkit.org> - - Reviewed by Darin Adler. - - Modify ASSERT_UNUSED and UNUSED_PARAM similar to Qt's Q_UNUSED. - https://bugs.webkit.org/show_bug.cgi?id=44870 - - * wtf/Assertions.h: - * wtf/UnusedParam.h: - -2010-08-31 Benjamin Poulain <benjamin.poulain@nokia.com> - - Reviewed by Kenneth Rohde Christiansen. - - JSC TimeoutChecker::didTimeOut overflows on ARM - https://bugs.webkit.org/show_bug.cgi?id=38538 - - Make getCPUTime() return values relative to the first call. - The previous implementation relied on simply on currentTime(), which - return a time since epoch and not a time since the thread started. This - made the return value of getCPUTime() overflow on 32 bits. - - * runtime/TimeoutChecker.cpp: - (JSC::getCPUTime): - -2010-08-30 Mihai Parparita <mihaip@chromium.org> - - Reviewed by Adam Barth. - - HISTORY_ALWAYS_ASYNC should be removed (history should always be async) - https://bugs.webkit.org/show_bug.cgi?id=44315 - - Remove ENABLE_HISTORY_ALWAYS_ASYNC #define. - - * wtf/Platform.h: - -2010-08-30 Chris Rogers <crogers@google.com> - - Reviewed by Kenneth Russell. - - Fix namespace for wtf/Complex.h and wtf/Vector3.h - https://bugs.webkit.org/show_bug.cgi?id=44892 - - * wtf/Complex.h: - * wtf/Vector3.h: - -2010-08-30 Andy Estes <aestes@apple.com> - - Reviewed by Eric Carlson. - - Strings returned by asciiDebug() should be NULL-terminated. - https://bugs.webkit.org/show_bug.cgi?id=44866 - - * wtf/text/WTFString.cpp: - (asciiDebug): - -2010-08-30 Zoltan Herczeg <zherczeg@webkit.org> - - Reviewed by Darin Adler. - - Refactor number parsing in the lexer - https://bugs.webkit.org/show_bug.cgi?id=44104 - - Number parsing was full of gotos, and needed a complete - redesign to remove them (Only one remained). Furthermore - integer arithmetic is empolyed for fast cases (= small - integer numbers). - - * parser/Lexer.cpp: - (JSC::Lexer::parseHex): - (JSC::Lexer::parseOctal): - (JSC::Lexer::parseDecimal): - (JSC::Lexer::parseNumberAfterDecimalPoint): - (JSC::Lexer::parseNumberAfterExponentIndicator): - (JSC::Lexer::lex): - * parser/Lexer.h: - -2010-08-29 Darin Adler <darin@apple.com> - - Fix Qt build. - - * wtf/unicode/glib/UnicodeMacrosFromICU.h: Added U_IS_BMP. - * wtf/unicode/qt4/UnicodeQt4.h: Ditto. - * wtf/unicode/wince/UnicodeWince.h: Ditto. - -2010-08-29 Kwang Yul Seo <skyul@company100.net> - - Reviewed by Kent Tamura. - - [BREWMP] Port vprintf_stderr_common - https://bugs.webkit.org/show_bug.cgi?id=33568 - - Use BREW's DBGPRINTF to output debug messages. - - * wtf/Assertions.cpp: - -2010-08-28 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Bug 44830 - In Array's prototype functyions we're incorrectly handing large index values - - We are in places casting doubles to unsigneds, and unsigneds to ints, without always check - that the result is within bounds. This is problematic in the case of double-to-unsigned - conversion because we should be saturating to array length. - - Also, the error return value from Array.splice should be [], not undefined. - - I don't see any security concerns here. These methods are spec'ed in such a way that they - can be applied to non Array objects, so in all cases the (potentially bogus) indices are - being passed to functions that will safely check accesses are within bounds. - - * runtime/ArrayPrototype.cpp: - (JSC::argumentClampedIndexFromStartOrEnd): - (JSC::arrayProtoFuncJoin): - (JSC::arrayProtoFuncConcat): - (JSC::arrayProtoFuncReverse): - (JSC::arrayProtoFuncShift): - (JSC::arrayProtoFuncSlice): - (JSC::arrayProtoFuncSort): - (JSC::arrayProtoFuncSplice): - (JSC::arrayProtoFuncUnShift): - (JSC::arrayProtoFuncFilter): - (JSC::arrayProtoFuncMap): - (JSC::arrayProtoFuncEvery): - (JSC::arrayProtoFuncForEach): - (JSC::arrayProtoFuncSome): - (JSC::arrayProtoFuncReduce): - (JSC::arrayProtoFuncReduceRight): - (JSC::arrayProtoFuncIndexOf): - (JSC::arrayProtoFuncLastIndexOf): - * runtime/JSValue.h: - (JSC::JSValue::toUInt32): + * JavaScriptCore.gyp/JavaScriptCore.gyp: + * JavaScriptCore.gypi: + * gyp/JavaScriptCore.gyp: -2010-08-28 Pratik Solanki <psolanki@apple.com> +2011-03-01 Sheriff Bot <webkit.review.bot@gmail.com> - Reviewed by Dan Bernstein. + Unreviewed, rolling out r80079. + http://trac.webkit.org/changeset/80079 + https://bugs.webkit.org/show_bug.cgi?id=55547 - Add an ENABLE define for purgeable memory support - https://bugs.webkit.org/show_bug.cgi?id=44777 + "Broke the Win debug build?" (Requested by dcheng on #webkit). * wtf/Platform.h: -2010-08-27 Kimmo Kinnunen <kimmo.t.kinnunen@nokia.com> - - Reviewed by Kenneth Rohde Christiansen. - - [Qt] NPAPI Plugin metadata should be cached, and loading a plugin should not require loading every plugin - https://bugs.webkit.org/show_bug.cgi?id=43179 - - Add ENABLE_NETSCAPE_PLUGIN_METADATA_CACHE flag to enable persistent - NPAPI Plugin Cache. The flag is enabled by default. - - * wtf/Platform.h: Add ENABLE_NETSCAPE_PLUGIN_METADATA_CACHE - -2010-07-27 Jer Noble <jer.noble@apple.com> - - Reviewed by Eric Carlson. - - Add JavaScript API to allow a page to go fullscreen. - rdar://problem/6867795 - https://bugs.webkit.org/show_bug.cgi?id=43099 - - * wtf/Platform.h: Enable FULLSCREEN_API mode for the Mac (except iOS). - -2010-08-27 Gavin Barraclough <barraclough@apple.com> - - Windows build fix pt 2. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - -2010-08-27 Gavin Barraclough <barraclough@apple.com> - - Windows build fix pt 1. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - -2010-08-27 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Bug 44745 - Number.toFixed/toExponential/toPrecision are inaccurate. - - These methods should be using a version of dtoa that can generate results accurate - to the requested precision, whereas our version of dtoa is only currently able to - support producing results sufficiently accurate to distinguish the value from any - other IEEE-754 double precision number. - - This change has no impact on benchmarks we track. - - On microbenchmarks for these functions, this is a slight regression where a high - precision is requested (dtoa now need to iterate further to generate a a greater - number of digits), but with smaller precision values (hopefully more common) this - improves performance, since it reduced the accurate of result dtoa is required, - to produce, and removes the need to pre-round values before calling dtoa. - - * JavaScriptCore.exp: - doubleToStringInJavaScriptFormat renamed to numberToString - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - doubleToStringInJavaScriptFormat renamed to numberToString - - * runtime/UString.cpp: - (JSC::UString::number): - doubleToStringInJavaScriptFormat renamed to numberToString - - * wtf/DecimalNumber.h: - (WTF::DecimalNumber::DecimalNumber): - (WTF::DecimalNumber::toStringDecimal): - (WTF::DecimalNumber::toStringExponential): - Remove all pre-rounding of values, instead call dtoa correctly. - - * wtf/dtoa.cpp: - (WTF::dtoa): - * wtf/dtoa.h: - Reenable support for rounding to specific-figures/decimal-places in dtoa. - Modify to remove unbiased rounding, provide ECMA required away-from-zero. - Rewrite doubleToStringInJavaScriptFormat to use DecimalNumber, rename to - numberToString. - -2010-08-27 Chao-ying Fu <fu@mips.com> - - Reviewed by Oliver Hunt. - - Byte alignment issue on MIPS - https://bugs.webkit.org/show_bug.cgi?id=29415 - - MIPS accesses one byte at a time for now to avoid the help from the - kernel to fix unaligned accesses. - - * wtf/text/AtomicString.cpp: - (WebCore::equal): - * wtf/text/StringHash.h: - (WebCore::StringHash::equal): - -2010-08-27 Xan Lopez <xlopez@igalia.com> - - Reviewed by Tor Arne Vestbø. - - Fix a couple of typos in comment. - - * bytecode/CodeBlock.h: - -2010-08-26 Gavin Barraclough <barraclough@apple.com> - - Windows build fix. - - * wtf/dtoa.cpp: +2011-03-01 Daniel Cheng <dcheng@chromium.org> -2010-08-26 Gavin Barraclough <baraclough@apple.com> - - Reviewed by Sam Weinig. - - Bug 44735 - Clean up dtoa.cpp - Remove unused & unmaintained code paths, reformat code to match - coding standard & use platform #defines from Platform.h directly. - - * wtf/dtoa.cpp: - (WTF::storeInc): - (WTF::multadd): - (WTF::s2b): - (WTF::lo0bits): - (WTF::mult): - (WTF::pow5mult): - (WTF::lshift): - (WTF::diff): - (WTF::ulp): - (WTF::b2d): - (WTF::d2b): - (WTF::ratio): - (WTF::): - (WTF::strtod): - (WTF::quorem): - (WTF::dtoa): - -2010-08-26 Gavin Barraclough <barraclough@apple.com> - - Rubber Stamped by Oliver Hunt. - - Partially revert r65959. The toString changes regressed the v8 tests, - but keep the toFixed/toExponential/toPrecision changes. - - * JavaScriptCore.exp: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * runtime/NumberPrototype.cpp: - * runtime/UString.cpp: - (JSC::UString::number): - * wtf/DecimalNumber.h: - * wtf/dtoa.cpp: - (WTF::append): - (WTF::doubleToStringInJavaScriptFormat): - * wtf/dtoa.h: - * wtf/text/WTFString.cpp: - * wtf/text/WTFString.h: - -2010-08-26 James Robinson <jamesr@chromium.org> - - Reviewed by Darin Fisher. - - [chromium] Remove the USE(GLES2_RENDERING) define and associated code - https://bugs.webkit.org/show_bug.cgi?id=43761 + Reviewed by David Levin. - Remove WTF_USE_GLES2_RENDERING from the list of defines in chromium, it's unused. + Add feature define for data transfer items + https://bugs.webkit.org/show_bug.cgi?id=55510 * wtf/Platform.h: -2010-08-26 Gavin Barraclough <barraclough@apple.com> +2011-03-01 Oliver Hunt <oliver@apple.com> - Rolling out r64608, this regressed performance. + Reviewed by Joseph Pecoraro. - * JavaScriptCore.xcodeproj/project.pbxproj: - * assembler/ARMAssembler.cpp: - (JSC::ARMAssembler::executableCopy): - * assembler/LinkBuffer.h: - (JSC::LinkBuffer::LinkBuffer): - (JSC::LinkBuffer::~LinkBuffer): - (JSC::LinkBuffer::performFinalization): - * assembler/MIPSAssembler.h: - (JSC::MIPSAssembler::executableCopy): - * assembler/X86Assembler.h: - (JSC::X86Assembler::executableCopy): - * bytecode/StructureStubInfo.h: - (JSC::StructureStubInfo::initGetByIdProto): - (JSC::StructureStubInfo::initGetByIdChain): - (JSC::StructureStubInfo::initGetByIdSelfList): - (JSC::StructureStubInfo::initGetByIdProtoList): - (JSC::StructureStubInfo::initPutByIdTransition): - * jit/ExecutableAllocator.cpp: - (JSC::ExecutablePool::systemAlloc): - * jit/ExecutableAllocator.h: - (JSC::ExecutablePool::create): - (JSC::ExecutableAllocator::ExecutableAllocator): - (JSC::ExecutableAllocator::poolForSize): - (JSC::ExecutablePool::ExecutablePool): - (JSC::ExecutablePool::poolAllocate): - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::FixedVMPoolAllocator::allocInternal): - * jit/JIT.cpp: - (JSC::JIT::privateCompile): - * jit/JIT.h: - (JSC::JIT::compileGetByIdProto): - (JSC::JIT::compileGetByIdSelfList): - (JSC::JIT::compileGetByIdProtoList): - (JSC::JIT::compileGetByIdChainList): - (JSC::JIT::compileGetByIdChain): - (JSC::JIT::compilePutByIdTransition): - (JSC::JIT::compilePatchGetArrayLength): - * jit/JITOpcodes.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - (JSC::JIT::privateCompileCTINativeCall): - * jit/JITPropertyAccess.cpp: - (JSC::JIT::stringGetByValStubGenerator): - (JSC::JIT::privateCompilePutByIdTransition): - (JSC::JIT::privateCompilePatchGetArrayLength): - (JSC::JIT::privateCompileGetByIdProto): - (JSC::JIT::privateCompileGetByIdSelfList): - (JSC::JIT::privateCompileGetByIdProtoList): - (JSC::JIT::privateCompileGetByIdChainList): - (JSC::JIT::privateCompileGetByIdChain): - * jit/JITPropertyAccess32_64.cpp: - (JSC::JIT::stringGetByValStubGenerator): - (JSC::JIT::privateCompilePutByIdTransition): - (JSC::JIT::privateCompilePatchGetArrayLength): - (JSC::JIT::privateCompileGetByIdProto): - (JSC::JIT::privateCompileGetByIdSelfList): - (JSC::JIT::privateCompileGetByIdProtoList): - (JSC::JIT::privateCompileGetByIdChainList): - (JSC::JIT::privateCompileGetByIdChain): - * jit/JITStubs.cpp: - (JSC::JITThunks::tryCachePutByID): - (JSC::JITThunks::tryCacheGetByID): - (JSC::DEFINE_STUB_FUNCTION): - (JSC::getPolymorphicAccessStructureListSlot): - * jit/JITStubs.h: - * jit/SpecializedThunkJIT.h: - (JSC::SpecializedThunkJIT::finalize): - * runtime/ExceptionHelpers.cpp: - * runtime/ExceptionHelpers.h: - * runtime/Executable.cpp: - (JSC::EvalExecutable::compileInternal): - (JSC::ProgramExecutable::compileInternal): - (JSC::FunctionExecutable::compileForCallInternal): - (JSC::FunctionExecutable::compileForConstructInternal): - (JSC::FunctionExecutable::reparseExceptionInfo): - (JSC::EvalExecutable::reparseExceptionInfo): - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::compile): + Misaligned memory access in CloneDeserializer on all ARM arch. + https://bugs.webkit.org/show_bug.cgi?id=48742 -2010-08-26 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Brady Eidson. - - Bug 44655 - Add debug only convenience methods to obtain a Vector<char> from a String/StringImpl. - - * wtf/text/WTFString.cpp: - (asciiDebug): - Return a Vector<char> containing the contents of a string as ASCII. - -2010-08-26 Sam Weinig <sam@webkit.org> - - Reviewed by Darin Adler. - - Add PassOwnArrayPtr - https://bugs.webkit.org/show_bug.cgi?id=44627 - - * GNUmakefile.am: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - Add the new files. - - * wtf/Forward.h: - Forward declare PassOwnArrayPtr. - - * wtf/OwnArrayPtr.h: - Mimic the OwnPtr interface. - - * wtf/OwnArrayPtrCommon.h: Added. - (WTF::deleteOwnedArrayPtr): - Move delete function here so it can be shared by OwnArrayPtr and - PassOwnArrayPtr. - - * wtf/PassOwnArrayPtr.h: Added. - Mimic the PassOwnPtr interface. - -2010-08-26 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. + Add a CPU class for architectures that need aligned addresses + for memory access. - [JSC] JavaScript parsing error when loading Equifax web page - https://bugs.webkit.org/show_bug.cgi?id=42900 - - '-->' is ostensibly only meant to occur when there is only - whitespace preceeding it on the line. However firefox treats - multiline comments as a space character, so they are allowed. - One side effect of the firefox model is that any line terminators - inside the multiline comment are ignored, so - - foo/* - */--> - - is treated as - - foo --> - - and so '-->' will not be a comment in this case. Happily this simply - means that to fix this issue all we need to do is stop updating - m_atLineStart when handling multiline comments. - - * parser/Lexer.cpp: - (JSC::Lexer::lex): - -2010-08-25 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoffrey Garen. - - Improve overflow handling in StringImpl::Replace - https://bugs.webkit.org/show_bug.cgi?id=42502 - <rdar://problem/8203794> - - Harden StringImpl::replace against overflow -- I can't see how this - could be abused, but it's better to be safe than sorry. - - * wtf/text/StringImpl.cpp: - (WTF::StringImpl::replace): - -2010-08-26 Martin Robinson <mrobinson@igalia.com> - - Reviewed by Xan Lopez. - - [GTK] The GNUmakefile.am files contain a myriad of confusing preprocessor and compiler flag definitions - https://bugs.webkit.org/show_bug.cgi?id=44624 - - Clean up GNUmakefile.am. - - * GNUmakefile.am: Alphabetize the include order in javascriptcore_cppflags. Move - a couple include lines from the top-level GNUmakefile.am. - -2010-08-25 Xan Lopez <xlopez@igalia.com> - - Reviewed by Kent Tamura. - - Local variables 'k' and 'y' in s2b() in dtoa.cpp are computed but not used - https://bugs.webkit.org/show_bug.cgi?id=29259 - - Remove unused code in dtoa.cpp, spotted by Wan-Teh Chang. - - * wtf/dtoa.cpp: - (WTF::s2b): + * wtf/Platform.h: -2010-08-25 Kwang Yul Seo <skyul@company100.net> +2011-03-01 Adam Barth <abarth@webkit.org> - Reviewed by Kevin Ollivier. + Reviewed by Dimitri Glazkov. - [BREWMP] Add build system - https://bugs.webkit.org/show_bug.cgi?id=44645 + Add pre- and post-build actions for JavaScriptCore GYP build + https://bugs.webkit.org/show_bug.cgi?id=55507 - Make waf script portable so that we can add more ports. + After this patch, we have all the steps for building the main + JavaScriptCore framework except the "copy headers" step, which I'll do + next. - * wscript: + * gyp/JavaScriptCore.gyp: -2010-08-25 Michael Saboff <msaboff@apple.com> +2011-03-01 Geoffrey Garen <ggaren@apple.com> Reviewed by Sam Weinig. - Remove the single entry regular expression cache introduced as part of - the fix for https://bugs.webkit.org/show_bug.cgi?id=41238. - The performance problem in Dromaeo that initiated that bug is no - longer present. Dromaeo has been modified so that the regular - expression tests are somewhat random and don't benefit from a - single entry cache. - - * runtime/RegExp.cpp: - (JSC::RegExp::RegExp): - (JSC::RegExp::match): - * runtime/RegExp.h: - -2010-08-25 Martin Robinson <mrobinson@igalia.com> - - Reviewed by Gustavo Noronha Silva. - - Cairo and EFL port shouldn't depend on glib. - https://bugs.webkit.org/show_bug.cgi?id=44354 - - Replace GRefPtr with PlatformRefPtr. Keep GLib specific bits in - GRefPtr.h. - - * GNUmakefile.am: Add PlatformRefPtr.h to the source list. - * wtf/PlatformRefPtr.h: Migrated from GRefPtr.h. - (WTF::PlatformRefPtr::PlatformRefPtr): Ditto. - (WTF::PlatformRefPtr::~PlatformRefPtr): Ditto. - (WTF::PlatformRefPtr::clear): Ditto. - (WTF::PlatformRefPtr::get): Ditto. - (WTF::PlatformRefPtr::operator*): Ditto. - (WTF::PlatformRefPtr::operator->): Ditto. - (WTF::PlatformRefPtr::operator!): Ditto. - (WTF::PlatformRefPtr::operator UnspecifiedBoolType): Ditto. - (WTF::PlatformRefPtr::hashTableDeletedValue): Ditto. - (WTF::::operator): Ditto. - (WTF::::swap): Ditto. - (WTF::swap): Ditto. - (WTF::operator==): Ditto. - (WTF::operator!=): Ditto. - (WTF::static_pointer_cast): Ditto. - (WTF::const_pointer_cast): Ditto. - (WTF::getPtr): Ditto. - (WTF::adoptPlatformRef): Ditto. - * wtf/gobject/GRefPtr.cpp: Changes to reflect new names. - (WTF::refPlatformPtr): - (WTF::derefPlatformPtr): - * wtf/gobject/GRefPtr.h: Ditto. - (WTF::refPlatformPtr): - (WTF::derefPlatformPtr): - -2010-08-25 Xan Lopez <xlopez@igalia.com> - - Reviewed by Alexey Proskuryakov. - - Remove dead code in JSGlobalObject - https://bugs.webkit.org/show_bug.cgi?id=44615 - - The recursion data member in the JSGlobalObject and its getter - plus inc/dec methods seems to be unused, remove them. - - * runtime/JSGlobalObject.cpp: - (JSC::JSGlobalObject::init): - * runtime/JSGlobalObject.h: - -2010-08-25 Michael Saboff <msaboff@apple.com> - - Reviewed by Geoffrey Garen. - - Changed the initial and subsequent allocation of vector storage to - Array()s. The changes are to limit sparse arrays to 100000 entries - and fixed the sparse map to vector storage conversion to use the - minimum amount of memory needed to store the current number of entries. - These changes address https://bugs.webkit.org/show_bug.cgi?id=43707 - - * runtime/JSArray.cpp: - (JSC::JSArray::putSlowCase): - (JSC::JSArray::getNewVectorLength): - -2010-08-16 Gabor Loki <loki@webkit.org> - - Reviewed by Gavin Barraclough. - - Avoid increasing required alignment of target type warning - https://bugs.webkit.org/show_bug.cgi?id=43963 - - Fix platform independent alignment warnings. - - * wtf/ListHashSet.h: - (WTF::ListHashSetNodeAllocator::pool): - -2010-08-19 Gabor Loki <loki@webkit.org> - - Reviewed by Gavin Barraclough. - - Enable truncated floating point feature on ARM - https://bugs.webkit.org/show_bug.cgi?id=44233 - - Enable truncated floating point feature with the help of VCVTR.S32.F64 - instruction. If VCVTR.S32.F64 can't fit the result into a 32-bit - integer/register, it saturates at INT_MAX or INT_MIN. Testing this - looks quicker than testing FPSCR for exception. - - Inspired by Jacob Bramley's patch from JaegerMonkey - - * assembler/ARMAssembler.h: - (JSC::ARMAssembler::): - (JSC::ARMAssembler::cmn_r): - (JSC::ARMAssembler::vcvtr_s32_f64_r): - * assembler/MacroAssemblerARM.h: - (JSC::MacroAssemblerARM::supportsFloatingPointTruncate): - (JSC::MacroAssemblerARM::branchTruncateDoubleToInt32): - -2010-08-24 Gavin Barraclough <barraclough@apple.com> - - Windows build fix. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - -2010-08-24 Gavin Barraclough <barraclough@apple.com> - - Windows build fix. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * wtf/DecimalNumber.h: - (WTF::DecimalNumber::intPow10): - * wtf/dtoa.cpp: - * wtf/dtoa.h: - -2010-08-23 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - https://bugs.webkit.org/show_bug.cgi?id=44487 - - Number.toExponential/toFixed/toPrecision all contain a spaghetti of duplicated - code & unnecessary complexity. Add a new DecimalNumber class to encapsulate - double to string conversion, share the implementations of rounding & - decimal-fraction/exponential formatting. + Rolled back in r79627 now that the underlying cause for it crashing is fixed. + https://bugs.webkit.org/show_bug.cgi?id=55159 * JavaScriptCore.exp: - Update exports. - - * runtime/NumberPrototype.cpp: - (JSC::toThisNumber): - (JSC::getIntegerArgumentInRange): - Helper methods used in implementing toExponential/toFixed/toString. - (JSC::numberProtoFuncToExponential): - (JSC::numberProtoFuncToFixed): - (JSC::numberProtoFuncToPrecision): - Reimplemented using new DecimalNumber class. - - * runtime/UString.cpp: - (JSC::UString::number): - Updated to call numberToString. - - * wtf/DecimalNumber.h: Added. - (WTF::): - (WTF::DecimalNumber::DecimalNumber): - (WTF::DecimalNumber::toStringDecimal): - (WTF::DecimalNumber::toStringExponential): - (WTF::DecimalNumber::sign): - (WTF::DecimalNumber::exponent): - (WTF::DecimalNumber::significand): - (WTF::DecimalNumber::precision): - (WTF::DecimalNumber::init): - (WTF::DecimalNumber::isZero): - (WTF::DecimalNumber::roundToPrecision): - New class to perform double to string conversion. - Has three constructors, which allow conversion with no rounding, - rounding to significant-figures, or rounding to decimal-places, - and two methods for formatting strings, either using decimal - fraction or exponential encoding. Internal implementation uses - pre-rounding of the values before calling dtoa rather than - relying on dtoa to correctly round, which does not produce - fully accurate results. Hopefully we can address this in the - near future. - - * wtf/dtoa.cpp: - (WTF::intPow10): - * wtf/dtoa.h: - intPow10 is used internally by DecimalNumber. - - * wtf/text/WTFString.cpp: - (WTF::copyToString): - (WTF::nanOrInfToString): - Used internally in numberToString for NaN/Infinity handling. - (WTF::numberToString): - Added new method to convert doubles to strings. - - * wtf/text/WTFString.h: - Added declaration for numberToString. This is here because - we should switch over to using this for all double to string - conversion in WebCore (see section 2.4.4.3 of the HTML5 spec). - -2010-08-24 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoff Garen. - - Don't seed the JS random number generator from time() - https://bugs.webkit.org/show_bug.cgi?id=41868 - <rdar://problem/8171025> - - Switch to using the secure random number generator to - seed the fast random generator, and make the generator - be per global object. - - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::JSGlobalData): - * runtime/JSGlobalData.h: - * runtime/JSGlobalObject.h: - (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): - (JSC::JSGlobalObject::weakRandomNumber): - * runtime/MathObject.cpp: - (JSC::mathProtoFuncRandom): - -2010-08-24 Oliver Hunt <oliver@apple.com> - - Reviewed by Beth Dakin. - - Make overflow guards in UString::utf8 explicit - https://bugs.webkit.org/show_bug.cgi?id=44540 - - Add an explicit overflow check prior to allocating our buffer, - rather than implicitly relying on the guard in convertUTF16ToUTF8. - - * runtime/UString.cpp: - (JSC::UString::utf8): - -2010-08-24 Yael Aharon <yael.aharon@nokia.com> - - Reviewed by Simon Hausmann. - - [Symbian] Fix commit/decommit of system memory using RChunk - - Swap accidentially reversed start and m_base values for determining the - offset within the RChunk. - - * wtf/PageReservation.h: - (WTF::PageReservation::systemCommit): - (WTF::PageReservation::systemDecommit): - -2010-08-23 Patrick Gansterer <paroga@paroga.com> - - Rubber-stamped by Gabor Loki. - - [WINCE] Buildfix for GeneratedJITStubs after r64818 - https://bugs.webkit.org/show_bug.cgi?id=44469 - - Use " THUNK_RETURN_ADDRESS_OFFSET" instead of "#offset#". - - * jit/JITStubs.cpp: - -2010-08-23 Oliver Hunt <oliver@apple.com> - - Reviewed by Darin Adler. - - [REGRESSION] Interpreter incorrectly excludes prototype chain when validating put_by_id_transition - https://bugs.webkit.org/show_bug.cgi?id=44240 - <rdar://problem/8328995> - - Fix an error I introduced when cleaning up the interpreter side of the logic - to prevent setters being called in object initialisers. - - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): - -2010-08-23 Michael Saboff <msaboff@apple.com> - - Reviewed by Oliver Hunt. - - Fixed case where a single character search string in a string.replace() - did not properly handle back reference replacement. The fix is to - check for a '$' as part of the check to see if we can execute the - single character replace optimization. - https://bugs.webkit.org/show_bug.cgi?id=44067 - - * runtime/StringPrototype.cpp: - (JSC::stringProtoFuncReplace): - -2010-08-23 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - JSON.stringify is much slower than Firefox on particular pathological input - https://bugs.webkit.org/show_bug.cgi?id=44456 - - Make StringBuilder::reserveCapacity reserve additional space so we don't end up - repeatedly copying the entire result string. - - * runtime/StringBuilder.h: - (JSC::StringBuilder::append): - (JSC::StringBuilder::reserveCapacity): - -2010-08-23 Jian Li <jianli@chromium.org> - - Reviewed by Darin Fisher. - - Handle blob resource. - https://bugs.webkit.org/show_bug.cgi?id=43941 - - * JavaScriptCore.exp: Add an export that is neede by BlobResourceHandle. - -2010-08-19 Andreas Kling <andreas.kling@nokia.com> - - Reviewed by Geoffrey Garen. - - JSC: Move the static_cast into to(U)Int32 fast case - https://bugs.webkit.org/show_bug.cgi?id=44037 - - Do the static_cast<(u)int32_t> inline to avoid the function call overhead - for easily converted values (within (u)int32_t range.) - - * runtime/JSValue.cpp: - (JSC::toInt32SlowCase): - (JSC::toUInt32SlowCase): - * runtime/JSValue.h: - (JSC::JSValue::toInt32): - (JSC::JSValue::toUInt32): - -2010-08-18 Andreas Kling <andreas.kling@nokia.com> - - Reviewed by Geoffrey Garen. - - REGRESSION(r58469): Math.pow() always returns double-backed JSValue which is extremely slow as array subscript - https://bugs.webkit.org/show_bug.cgi?id=43742 - - Add codegen for pow() to return Int32 values when possible. - - * jit/ThunkGenerators.cpp: - (JSC::powThunkGenerator): - -2010-08-18 Gabor Loki <loki@webkit.org> - - Reviewed by Gavin Barraclough. - - The JITStackFrame is wrong using Thumb-2 JIT with JSVALUE32_64 - https://bugs.webkit.org/show_bug.cgi?id=43897 - - A 64 bits wide member in a structure is aligned to 8 bytes on ARM by - default, but this is not taken into account in the offset defines of - JITStackFrame. - - * jit/JITStubs.cpp: - * jit/JITStubs.h: - -2010-08-18 Gavin Barraclough <barraclough@apple.com> - - Rubber stamped by Sam Weinig. - - Rename UString::substr to substringSharingImpl, add to WTF::String. - Now WTF::String can do everything that JSC::UString can do! - - * JavaScriptCore.exp: - * bytecode/CodeBlock.cpp: - (JSC::escapeQuotes): - * bytecompiler/NodesCodegen.cpp: - (JSC::substitute): - * parser/SourceProvider.h: - (JSC::UStringSourceProvider::getRange): - * runtime/FunctionPrototype.cpp: - (JSC::insertSemicolonIfNeeded): - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::parseInt): - * runtime/JSONObject.cpp: - (JSC::gap): - (JSC::Stringifier::indent): - (JSC::Stringifier::unindent): - * runtime/JSString.cpp: - (JSC::JSString::replaceCharacter): - * runtime/NumberPrototype.cpp: - (JSC::numberProtoFuncToFixed): - (JSC::numberProtoFuncToPrecision): - * runtime/StringPrototype.cpp: - (JSC::stringProtoFuncReplace): - (JSC::trimString): - * runtime/UString.cpp: - (JSC::UString::substringSharingImpl): - * runtime/UString.h: - * wtf/text/WTFString.cpp: - (WTF::String::substringSharingImpl): - * wtf/text/WTFString.h: - -2010-08-18 Gavin Barraclough <barraclough@apple.com> - - Windows build fix. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * JavaScriptCore.xcodeproj/project.pbxproj: - -2010-08-18 Gavin Barraclough <barraclough@apple.com> - - Windows build fix. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: * JavaScriptCore.xcodeproj/project.pbxproj: + * runtime/Heap.cpp: + (JSC::Heap::allocateSlowCase): + * runtime/Heap.h: + * runtime/JSCell.h: + (JSC::JSCell::MarkedSpace::sizeClassFor): + (JSC::JSCell::Heap::allocate): + (JSC::JSCell::JSCell::operator new): + * runtime/MarkedBlock.h: + * runtime/MarkedSpace.cpp: + (JSC::MarkedSpace::MarkedSpace): + (JSC::MarkedSpace::allocateBlock): + (JSC::MarkedSpace::reset): + * runtime/MarkedSpace.h: + (JSC::MarkedSpace::SizeClass::SizeClass): -2010-08-17 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig. - - Bug 44146 - Remove toDouble/toUInt32 methods from UString. - - These methods all implement JavaScript language specific behaviour, and as such - are not suited to being on a generic string object. They are also inefficient - and incorrectly used, refactor & cleanup. Uses of these methods really divide - out into two cases. - - ToNumber: - Uses of toDouble from JSString and from parseFloat are implementing ecma's - ToNumber conversion from strings (see ecma-262 9.3.1), so UString::toDouble - should largely just be moved out to a global jsToNumber function. ToNumber is - capable of recognizing either decimal or hexadecimal numbers, but parseFloat - should only recognize decimal values. This is currently handled by testing for - hexadecimal before calling toDouble, which should unnecessary - instead we can - just split out the two parts to the grammar into separate functions. Also, - strtod recognizes a set of literals (nan, inf, and infinity - all with any - capitalization) - which are not defined by any of the specs we are implementing. - To handle this we need to perform additional work in toDouble to convert the - unsupported cases of infinities back to NaNs. Instead we should simply remove - support for this literals from strtod. This should provide a more desirable - behaviour for all clients of strtod. - - Indexed properties: - Uses of the toStrictUInt32 methods are were all converting property names to - indices, and all uses of toUInt32 were incorrect; in all cases we should have - been calling toUInt32. This error results in some incorrect behaviour in the - DOM (accessing property "0 " of a NodeList should fail; it currently does not). - Move this method onto Identifier (our canonical property name), and make it - always perform a strict conversion. Add a layout test to check NodeList does - convert indexed property names correctly. - - * JavaScriptCore.exp: - * runtime/Arguments.cpp: - (JSC::Arguments::getOwnPropertySlot): - (JSC::Arguments::getOwnPropertyDescriptor): - (JSC::Arguments::put): - (JSC::Arguments::deleteProperty): - * runtime/Identifier.cpp: - (JSC::Identifier::toUInt32): - * runtime/Identifier.h: - (JSC::Identifier::toUInt32): - * runtime/JSArray.cpp: - (JSC::JSArray::getOwnPropertySlot): - (JSC::JSArray::getOwnPropertyDescriptor): - (JSC::JSArray::put): - (JSC::JSArray::deleteProperty): - * runtime/JSArray.h: - (JSC::Identifier::toArrayIndex): - * runtime/JSByteArray.cpp: - (JSC::JSByteArray::getOwnPropertySlot): - (JSC::JSByteArray::getOwnPropertyDescriptor): - (JSC::JSByteArray::put): - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::isInfinity): - (JSC::jsHexIntegerLiteral): - (JSC::jsStrDecimalLiteral): - (JSC::jsToNumber): - (JSC::parseFloat): - * runtime/JSGlobalObjectFunctions.h: - * runtime/JSString.cpp: - (JSC::JSString::getPrimitiveNumber): - (JSC::JSString::toNumber): - (JSC::JSString::getStringPropertyDescriptor): - * runtime/JSString.h: - (JSC::JSString::getStringPropertySlot): - * runtime/ObjectPrototype.cpp: - (JSC::ObjectPrototype::put): - * runtime/StringObject.cpp: - (JSC::StringObject::deleteProperty): - * runtime/UString.cpp: - * runtime/UString.h: - * wtf/dtoa.cpp: - (WTF::strtod): - -2010-08-17 Gavin Barraclough <barraclough@apple.com> +2011-03-01 Mark Rowe <mrowe@apple.com> Reviewed by Sam Weinig. - Bug 44099 - REGRESSION(r65468): Crashes in StringImpl::find - - Bug 44080 introuduced a couple of cases in which array bounds could be overrun. - One of these was fixed in r65493, this patch fixes the other and address the - concerns voiced in comment #6 by restructuring the loops to remove the code - dupliction without introducing an additional if check. - - * wtf/text/StringImpl.cpp: - (WTF::StringImpl::find): - (WTF::StringImpl::findIgnoringCase): - (WTF::StringImpl::reverseFind): - (WTF::StringImpl::reverseFindIgnoringCase): - -2010-08-17 No'am Rosenthal <noam.rosenthal@nokia.com> - - Reviewed by Ariya Hidayat. - - [Qt] Move the accelerated compositing build flag to the right place - https://bugs.webkit.org/show_bug.cgi?id=43882 - - * wtf/Platform.h: - -2010-08-17 Yuta Kitamura <yutak@chromium.org> - - Reviewed by Shinichiro Hamaji. - - Avoid uninitialized memory read in StringImpl::find(). - - REGRESSION(r65468): Crashes in StringImpl::find - https://bugs.webkit.org/show_bug.cgi?id=44099 - - * wtf/text/StringImpl.cpp: - (WTF::StringImpl::find): - -2010-08-16 Gavin Barraclough <barraclough@apple.com> - - Rubber stamped by Sam Weinig - - Add VectorTraits to String & DefaultHash traits to UString to unify behaviour. - - * runtime/UString.h: - (JSC::UStringHash::hash): - (JSC::UStringHash::equal): - (WTF::): - * wtf/text/WTFString.h: - (WTF::): - -2010-08-16 Gavin Barraclough <barraclough@apple.com> - - Rubber stamped by Sam Weinig - - Remove unnecessary includes from UString.h, add new includes as necessary. - - * profiler/CallIdentifier.h: - * profiler/ProfileNode.h: - * runtime/DateConversion.cpp: - * runtime/Identifier.h: - (JSC::IdentifierRepHash::hash): - * runtime/RegExpCache.h: - * runtime/RegExpKey.h: - * runtime/UString.cpp: - (JSC::UString::substr): - * runtime/UString.h: - * wtf/text/WTFString.h: - -2010-08-16 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig + Replace two script phases that do nothing but copy files with copy files build phases. - Bug 44080 - String find/reverseFind methods need tidying up - These methods have a couple of problems with their interface, and implementation. - - These methods take and int index, and return an int - however this is problematic - since on 64-bit string indices may have a full 32-bit range. This spills out into - surrounding code, which unsafely casts string indices from unsigned to int. Code - checking the result of these methods check for a mix of "== -1", "< 0", and - "== notFound". Clean this up by changing these methods to take an unsigned - starting index, and return a size_t. with a failed match indicated by notFound. - reverseFind also has a special meaning for the starting index argument, in that a - negative index is interpreted as an offset back from the end of the string. Remove - this functionality, in the (1!) case where it is used we should just calculate the - offset by subtracting from the string's length. - - The implementation has a few problems too. The code is not in webkit style, in - using assorted abbreviations in variable names, and implementations of similar - find methods with differing argument types were unnecessarily inconsistent. When - find is passed const char* data the string would be handled as latin1 (zero - extended to UTF-16) for all characters but the first; this is sign extended. - Case-insensitive find is broken for unicode strings; the hashing optimization is - not unicode safe, and could result in false negatives. - - Unify UString find methods to match String. + This speeds up the build by a few seconds on high-end Mac Pros. - * JavaScriptCore.exp: - * bytecode/CodeBlock.cpp: - (JSC::escapeQuotes): - * bytecompiler/NodesCodegen.cpp: - (JSC::substitute): - * runtime/JSString.cpp: - (JSC::JSString::replaceCharacter): - * runtime/RegExp.cpp: - (JSC::RegExp::RegExp): - * runtime/RegExpKey.h: - (JSC::RegExpKey::getFlagsValue): - * runtime/StringPrototype.cpp: - (JSC::substituteBackreferencesSlow): - (JSC::substituteBackreferences): - (JSC::stringProtoFuncReplace): - (JSC::stringProtoFuncIndexOf): - (JSC::stringProtoFuncLastIndexOf): - (JSC::stringProtoFuncSplit): - * runtime/UString.cpp: - * runtime/UString.h: - (JSC::UString::find): - (JSC::UString::reverseFind): - * wtf/text/AtomicString.h: - (WTF::AtomicString::find): - * wtf/text/StringImpl.cpp: - (WTF::StringImpl::find): - (WTF::StringImpl::findCaseInsensitive): - (WTF::StringImpl::reverseFind): - (WTF::StringImpl::reverseFindCaseInsensitive): - (WTF::StringImpl::endsWith): - (WTF::StringImpl::replace): - * wtf/text/StringImpl.h: - (WTF::StringImpl::startsWith): - * wtf/text/WTFString.cpp: - (WTF::String::split): - * wtf/text/WTFString.h: - (WTF::String::find): - (WTF::String::reverseFind): - (WTF::String::findCaseInsensitive): - (WTF::String::reverseFindCaseInsensitive): - (WTF::String::contains): - (WTF::find): - (WTF::reverseFind): - -2010-08-16 Kevin Ollivier <kevino@theolliviers.com> - - [wx] Build fix, do not build WebCore as a convenience library as this leads to - errors in the Win build w/export symbols and causes problems with DOM bindings - debugging in gdb. - - * wscript: - -2010-08-16 Leandro Pereira <leandro@profusion.mobi> + * JavaScriptCore.xcodeproj/project.pbxproj: - [EFL] Build fix after r65366. +2011-03-01 David Kilzer <ddkilzer@apple.com> - * CMakeLists.txt: Use if (VAR) instead of if (${VAR}) to check if - they're empty. - * jsc/CMakeLists.txt: Ditto. - * wtf/CMakeLists.txt: Ditto. + Spring cleaning! -2010-08-15 Kevin Ollivier <kevino@theolliviers.com> + Rubber-stamped by Mark Rowe. - [wx] Build fix, don't build intermediate source in DerivedSources dir. + * JavaScriptCore.xcodeproj/project.pbxproj: + (Copy Into Framework): Remove "set -x" and its comment. - * wscript: +2011-03-01 Michael Saboff <msaboff@apple.com> -2010-08-14 Patrick Gansterer <paroga@paroga.com> + Reviewed by Darin Adler. - Reviewed by Kenneth Rohde Christiansen. + TinyMCE not working in nightlies + https://bugs.webkit.org/show_bug.cgi?id=54978 - [CMake] Add preprocessor detection for generator scripts - https://bugs.webkit.org/show_bug.cgi?id=43984 + Disabling setupBeginChars() to temporarily work arround the test + failure. Filed https://bugs.webkit.org/show_bug.cgi?id=55479 + to track fixing the issue. - * CMakeLists.txt: + * yarr/YarrPattern.cpp: + (JSC::Yarr::YarrPattern::compile): -2010-08-14 Patrick Gansterer <paroga@paroga.com> +2011-02-23 Joseph Pecoraro <joepeck@webkit.org> Reviewed by Kenneth Rohde Christiansen. - [CMake] Set target properties only if available - https://bugs.webkit.org/show_bug.cgi?id=43978 - - * CMakeLists.txt: - * jsc/CMakeLists.txt: - * wtf/CMakeLists.txt: - -2010-08-13 Kevin Ollivier <kevino@theolliviers.com> + Viewport parsing no longer accepts "1.0;" value as valid. + https://bugs.webkit.org/show_bug.cgi?id=53705 - [wx] Build fix, add CString to the list of forwards. - - * wtf/Forward.h: - -2010-08-13 Gavin Barraclough <barraclough@apple.com> - - Windows build fix - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - -2010-08-13 Gavin Barraclough <barraclough@apple.com> - - Windows build fix - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - -2010-08-13 Gavin Barraclough <barraclough@apple.com> - - Windows build fix - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - -2010-08-13 Gavin Barraclough <barraclough@apple.com> - - Rubber stamped by Sam Weinig. - Switch String::/UString::ascii() to return a CString. + Include a didReadNumber parameter to String -> float / double + conversion functions. This way, if the "ok" boolean out + parameter is false, you can check to see if there in fact + was a valid number parsed with garbage at the end. Examples + of that would be parsing "123x456" would have ok = false, + but didReadNumber = true. * JavaScriptCore.exp: - * JavaScriptCore.xcodeproj/project.pbxproj: - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::dump): - * bytecode/SamplingTool.cpp: - (JSC::SamplingTool::dump): - * interpreter/CallFrame.cpp: - (JSC::CallFrame::dumpCaller): - * jsc.cpp: - (runWithScripts): - (runInteractive): - * runtime/Identifier.h: - (JSC::Identifier::ascii): - * runtime/ScopeChain.cpp: - (JSC::ScopeChainNode::print): - * runtime/UString.cpp: - (JSC::UString::ascii): - (JSC::UString::latin1): - * runtime/UString.h: * wtf/text/StringImpl.cpp: - (WTF::StringImpl::asciiOLD): + (WTF::StringImpl::toDouble): + (WTF::StringImpl::toFloat): * wtf/text/StringImpl.h: * wtf/text/WTFString.cpp: - (WTF::String::ascii): - (WTF::String::latin1): + (WTF::String::toDouble): + (WTF::String::toFloat): + (WTF::charactersToDouble): + (WTF::charactersToFloat): * wtf/text/WTFString.h: -2010-08-13 Gabor Loki <loki@webkit.org> +2011-02-28 Geoffrey Garen <ggaren@apple.com> Reviewed by Gavin Barraclough. - Avoid increasing required alignment of target type warning on ARM - https://bugs.webkit.org/show_bug.cgi?id=38045 - - The reinterpret_cast<Type1*>([pointer to Type2]) expressions - where - sizeof(Type1) > sizeof(Type2) - cause the following warning on ARM: - increases required alignment of target type warnings. - Casting the type of [pointer to Type2] object to void* bypasses the - warning. - - * assembler/ARMAssembler.cpp: - (JSC::ARMAssembler::executableCopy): - * assembler/AssemblerBuffer.h: - (JSC::AssemblerBuffer::putShortUnchecked): - (JSC::AssemblerBuffer::putIntUnchecked): - (JSC::AssemblerBuffer::putInt64Unchecked): - * interpreter/RegisterFile.h: - (JSC::RegisterFile::RegisterFile): - (JSC::RegisterFile::grow): - * jit/JITStubs.cpp: - * pcre/pcre_compile.cpp: - (jsRegExpCompile): - * runtime/JSArray.cpp: - (JSC::JSArray::putSlowCase): - (JSC::JSArray::increaseVectorLength): - (JSC::JSArray::increaseVectorPrefixLength): - (JSC::JSArray::shiftCount): - (JSC::JSArray::unshiftCount): - * wtf/FastMalloc.cpp: - (WTF::PageHeapAllocator::New): - (WTF::TCMalloc_Central_FreeList::Populate): - * wtf/MD5.cpp: - (WTF::reverseBytes): - (WTF::MD5::addBytes): - (WTF::MD5::checksum): - * wtf/StdLibExtras.h: - (isPointerTypeAlignmentOkay): - (reinterpret_cast_ptr): - * wtf/Vector.h: - (WTF::VectorBuffer::inlineBuffer): - * wtf/qt/StringQt.cpp: - (WTF::String::String): - -2010-08-13 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig + Past-the-end writes in VM exceptions (caused crashes in r79627) + https://bugs.webkit.org/show_bug.cgi?id=55448 + + Some exceptions had the wrong structures, so they misoverestimated their + inline storage sizes. - Unify UString::UTF8String() & String::utf8() methods, - remove UString::cost() & make atArrayIndex a free function. + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::JSGlobalData): Use the right structure. - * JavaScriptCore.exp: - * bytecode/CodeBlock.cpp: - (JSC::constantName): - (JSC::idName): - (JSC::CodeBlock::registerName): - (JSC::regexpName): - (JSC::printGlobalResolveInfo): - (JSC::printStructureStubInfo): - (JSC::CodeBlock::printStructure): - (JSC::CodeBlock::printStructures): - * jsc.cpp: - (functionPrint): - (functionDebug): - (runInteractive): - (fillBufferWithContentsOfFile): - * pcre/pcre_exec.cpp: - (Histogram::~Histogram): - * profiler/CallIdentifier.h: - (JSC::CallIdentifier::c_str): - * profiler/Profile.cpp: - (JSC::Profile::debugPrintDataSampleStyle): - * profiler/ProfileGenerator.cpp: - (JSC::ProfileGenerator::willExecute): - (JSC::ProfileGenerator::didExecute): - * profiler/ProfileNode.cpp: - (JSC::ProfileNode::debugPrintData): - (JSC::ProfileNode::debugPrintDataSampleStyle): - * runtime/Arguments.cpp: - (JSC::Arguments::getOwnPropertySlot): - (JSC::Arguments::getOwnPropertyDescriptor): - (JSC::Arguments::put): - (JSC::Arguments::deleteProperty): - * runtime/DateConversion.cpp: - (JSC::parseDate): - * runtime/Identifier.h: - (JSC::Identifier::toStrictUInt32): - * runtime/JSArray.cpp: - (JSC::JSArray::getOwnPropertySlot): - (JSC::JSArray::getOwnPropertyDescriptor): - (JSC::JSArray::put): - (JSC::JSArray::deleteProperty): - * runtime/JSArray.h: - (JSC::toArrayIndex): - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::encode): - (JSC::parseInt): - (JSC::globalFuncJSCPrint): - * runtime/JSString.h: - (JSC::RopeBuilder::JSString): - * runtime/UString.cpp: - (JSC::UString::toDouble): - (JSC::putUTF8Triple): - (JSC::UString::utf8): - * runtime/UString.h: - (JSC::UString::~UString): - (JSC::UString::isNull): - (JSC::UString::isEmpty): - (JSC::UString::impl): - * wtf/text/WTFString.cpp: - (WTF::String::utf8): - * wtf/text/WTFString.h: - (WTF::String::~String): - (WTF::String::swap): - (WTF::String::isNull): - (WTF::String::isEmpty): - (WTF::String::impl): - (WTF::String::length): - (WTF::String::String): - (WTF::String::isHashTableDeletedValue): + * runtime/JSObject.h: + (JSC::JSNonFinalObject::JSNonFinalObject): + (JSC::JSFinalObject::JSFinalObject): ASSERT that our structure capacity + is correct to verify this doesn't happen again. -2010-08-12 Zoltan Herczeg <zherczeg@webkit.org> +2011-03-01 Andras Becsi <abecsi@webkit.org> - Reviewed by Gavin Barraclough. + Reviewed by Csaba Osztrogonác. - Refactoring the fpu code generator for the ARM port - https://bugs.webkit.org/show_bug.cgi?id=43842 + [Qt] Clean up the project files and move common options to WebKit.pri. - Support up to 32 double precision registers, and the - recent VFP instruction formats. This patch is mainly - a style change which keeps the current functionality. + * JavaScriptCore.pri: Move options also needed in WebCore into WebKit.pri. + * JavaScriptCore.pro: Deduplicate options. + * jsc.pro: Ditto. - * assembler/ARMAssembler.h: - (JSC::ARMRegisters::): - (JSC::ARMAssembler::): - (JSC::ARMAssembler::emitInst): - (JSC::ARMAssembler::emitDoublePrecisionInst): - (JSC::ARMAssembler::emitSinglePrecisionInst): - (JSC::ARMAssembler::vadd_f64_r): - (JSC::ARMAssembler::vdiv_f64_r): - (JSC::ARMAssembler::vsub_f64_r): - (JSC::ARMAssembler::vmul_f64_r): - (JSC::ARMAssembler::vcmp_f64_r): - (JSC::ARMAssembler::vsqrt_f64_r): - (JSC::ARMAssembler::vmov_vfp_r): - (JSC::ARMAssembler::vmov_arm_r): - (JSC::ARMAssembler::vcvt_f64_s32_r): - (JSC::ARMAssembler::vcvt_s32_f64_r): - (JSC::ARMAssembler::vmrs_apsr): - * assembler/MacroAssemblerARM.h: - (JSC::MacroAssemblerARM::addDouble): - (JSC::MacroAssemblerARM::divDouble): - (JSC::MacroAssemblerARM::subDouble): - (JSC::MacroAssemblerARM::mulDouble): - (JSC::MacroAssemblerARM::sqrtDouble): - (JSC::MacroAssemblerARM::convertInt32ToDouble): - (JSC::MacroAssemblerARM::branchDouble): - (JSC::MacroAssemblerARM::branchConvertDoubleToInt32): +2011-03-01 Adam Barth <abarth@webkit.org> -2010-08-12 Sheriff Bot <webkit.review.bot@gmail.com> + Reviewed by Eric Seidel. - Unreviewed, rolling out r65295. - http://trac.webkit.org/changeset/65295 - https://bugs.webkit.org/show_bug.cgi?id=43950 + Teach JavaScriptCore GYP build about DEPTH + https://bugs.webkit.org/show_bug.cgi?id=55425 - It broke 4 sputnik tests (Requested by Ossy on #webkit). + In addition to teaching the JavaScriptCore GYP build about DEPTH, this + change overrides the GCC warning configuration to disable a warning + that's causing probems in Assertions.cpp. With that warning disabled, + JavaScriptCore builds again. - * JavaScriptCore.exp: - * bytecode/CodeBlock.cpp: - (JSC::constantName): - (JSC::idName): - (JSC::CodeBlock::registerName): - (JSC::regexpName): - (JSC::printGlobalResolveInfo): - (JSC::printStructureStubInfo): - (JSC::CodeBlock::printStructure): - (JSC::CodeBlock::printStructures): - * jsc.cpp: - (functionPrint): - (functionDebug): - (runInteractive): - (fillBufferWithContentsOfFile): - * pcre/pcre_exec.cpp: - (Histogram::~Histogram): - * profiler/CallIdentifier.h: - (JSC::CallIdentifier::c_str): - * profiler/Profile.cpp: - (JSC::Profile::debugPrintDataSampleStyle): - * profiler/ProfileGenerator.cpp: - (JSC::ProfileGenerator::willExecute): - (JSC::ProfileGenerator::didExecute): - * profiler/ProfileNode.cpp: - (JSC::ProfileNode::debugPrintData): - (JSC::ProfileNode::debugPrintDataSampleStyle): - * runtime/Arguments.cpp: - (JSC::Arguments::getOwnPropertySlot): - (JSC::Arguments::getOwnPropertyDescriptor): - (JSC::Arguments::put): - (JSC::Arguments::deleteProperty): - * runtime/DateConversion.cpp: - (JSC::parseDate): - * runtime/Identifier.h: - (JSC::Identifier::Identifier): - (JSC::Identifier::toArrayIndex): - * runtime/JSArray.cpp: - (JSC::JSArray::getOwnPropertySlot): - (JSC::JSArray::getOwnPropertyDescriptor): - (JSC::JSArray::put): - (JSC::JSArray::deleteProperty): - * runtime/JSArray.h: - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::encode): - (JSC::parseInt): - (JSC::globalFuncJSCPrint): - * runtime/JSString.h: - (JSC::RopeBuilder::JSString): - * runtime/UString.cpp: - (JSC::UString::toDouble): - (JSC::UString::UTF8String): - * runtime/UString.h: - (JSC::UString::isNull): - (JSC::UString::isEmpty): - (JSC::UString::impl): - (JSC::UString::cost): - (JSC::UString::~UString): - (JSC::UString::toArrayIndex): - * wtf/text/WTFString.cpp: - (WTF::String::utf8): - * wtf/text/WTFString.h: - (WTF::String::String): - (WTF::String::isHashTableDeletedValue): - (WTF::String::length): - (WTF::String::operator[]): - (WTF::String::isNull): - (WTF::String::isEmpty): - (WTF::String::impl): + * gyp/JavaScriptCore.gyp: -2010-08-12 Gavin Barraclough <barraclough@apple.com> +2011-02-28 Gavin Barraclough <barraclough@apple.com> Windows build fix. * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: -2010-08-12 Gavin Barraclough <barraclough@apple.com> +2011-02-28 Sheriff Bot <webkit.review.bot@gmail.com> - Reviewed by Sam Weinig + Unreviewed, rolling out r79948. + http://trac.webkit.org/changeset/79948 + https://bugs.webkit.org/show_bug.cgi?id=55439 - Unify UString::UTF8String() & String::utf8() methods, - remove UString::cost() & make atArrayIndex a free function. - - * JavaScriptCore.exp: - * bytecode/CodeBlock.cpp: - (JSC::constantName): - (JSC::idName): - (JSC::CodeBlock::registerName): - (JSC::regexpName): - (JSC::printGlobalResolveInfo): - (JSC::printStructureStubInfo): - (JSC::CodeBlock::printStructure): - (JSC::CodeBlock::printStructures): - * jsc.cpp: - (functionPrint): - (functionDebug): - (runInteractive): - (fillBufferWithContentsOfFile): - * pcre/pcre_exec.cpp: - (Histogram::~Histogram): - * profiler/CallIdentifier.h: - (JSC::CallIdentifier::c_str): - * profiler/Profile.cpp: - (JSC::Profile::debugPrintDataSampleStyle): - * profiler/ProfileGenerator.cpp: - (JSC::ProfileGenerator::willExecute): - (JSC::ProfileGenerator::didExecute): - * profiler/ProfileNode.cpp: - (JSC::ProfileNode::debugPrintData): - (JSC::ProfileNode::debugPrintDataSampleStyle): - * runtime/Arguments.cpp: - (JSC::Arguments::getOwnPropertySlot): - (JSC::Arguments::getOwnPropertyDescriptor): - (JSC::Arguments::put): - (JSC::Arguments::deleteProperty): - * runtime/DateConversion.cpp: - (JSC::parseDate): - * runtime/Identifier.h: - (JSC::Identifier::toStrictUInt32): - * runtime/JSArray.cpp: - (JSC::JSArray::getOwnPropertySlot): - (JSC::JSArray::getOwnPropertyDescriptor): - (JSC::JSArray::put): - (JSC::JSArray::deleteProperty): - * runtime/JSArray.h: - (JSC::toArrayIndex): - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::encode): - (JSC::parseInt): - (JSC::globalFuncJSCPrint): - * runtime/JSString.h: - (JSC::RopeBuilder::JSString): - * runtime/UString.cpp: - (JSC::UString::toDouble): - (JSC::putUTF8Triple): - (JSC::UString::utf8): - * runtime/UString.h: - (JSC::UString::~UString): - (JSC::UString::isNull): - (JSC::UString::isEmpty): - (JSC::UString::impl): - * wtf/text/WTFString.cpp: - (WTF::String::utf8): - * wtf/text/WTFString.h: - (WTF::String::~String): - (WTF::String::swap): - (WTF::String::isNull): - (WTF::String::isEmpty): - (WTF::String::impl): - (WTF::String::length): - (WTF::String::String): - (WTF::String::isHashTableDeletedValue): - -2010-08-12 Gavin Barraclough <barraclough@apple.com> - - Eeerk! - revert accidentally committed changes in UString! - - * JavaScriptCore.exp: - * runtime/UString.cpp: - (JSC::UString::UString): - * runtime/UString.h: - -2010-08-12 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig - - Change UString constructors to match those in WTF::String. - This changes behaviour of UString((char*)0) to create null - strings, akin to UString() rather than UString::empty(). - (This matches String). Remove unused constructors from - UString, and add null-terminated UTF-16 constructor, to - match String. Move String's constructor into the .cpp to - match UString. - - * JavaScriptCore.exp: - * debugger/DebuggerCallFrame.cpp: - (JSC::DebuggerCallFrame::calculatedFunctionName): - * runtime/RegExpKey.h: - (JSC::RegExpKey::RegExpKey): - * runtime/SmallStrings.cpp: - (JSC::SmallStrings::createSingleCharacterString): - * runtime/UString.cpp: - (JSC::UString::UString): - * runtime/UString.h: - (JSC::UString::UString): - (JSC::UString::swap): - (JSC::UString::adopt): - (JSC::UString::operator[]): - * wtf/text/WTFString.h: - (WTF::String::String): - (WTF::String::adopt): - (WTF::String::operator[]): - -2010-08-12 David Levin <levin@chromium.org> - - Reviewed by NOBODY (build fix). - - * runtime/UString.h: Removed unneccessary #include. - -2010-08-12 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig - - Revert changes to ALWAYS_INLINEness of a couple of functions in UString. - This appears to have degraded performance. - - * runtime/UString.cpp: - (JSC::UString::ascii): - * runtime/UString.h: - (JSC::UString::length): - (JSC::UString::isEmpty): - (JSC::UString::~UString): - -2010-08-12 Csaba Osztrogonác <ossy@webkit.org> - - Reviewed by Antonio Gomes. - - [Qt] Fix warnings: unknown conversion type character 'l' in format - https://bugs.webkit.org/show_bug.cgi?id=43359 - - Qt port doesn't call any printf in String::format(...), consequently - using __attribute__((format(printf,m,n))) is incorrect and causes - false positive warnings on Windows if you build with MinGW. - - Qt port calls QString::vsprintf(...) , which is platform - independent, and handles %lli, %llu and %llx on all platforms. - (http://trac.webkit.org/changeset/35712) - - * wtf/text/WTFString.h: - -2010-08-12 Gabor Loki <loki@webkit.org> - - Reviewed by Geoffrey Garen. - - Fix the array subscript is above array bounds warning in ByteArray on ARM. - https://bugs.webkit.org/show_bug.cgi?id=43358 - - The warning is very similar to this one: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37861 - - * wtf/ByteArray.cpp: - (WTF::ByteArray::create): - -2010-08-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> - - Reviewed by Martin Robinson. - - [GTK] Use GSettings to save/restore Web Inspector settings - https://bugs.webkit.org/show_bug.cgi?id=43512 - - * wtf/gobject/GRefPtr.cpp: Added support for GVariant, used by our - GSettings support. - (WTF::refGPtr): - (WTF::derefGPtr): - * wtf/gobject/GRefPtr.h: - -2010-08-12 Gabor Loki <loki@webkit.org> - - Reviewed by Simon Hausmann. - - The scratch register should be saved in YARR with ARM JIT - https://bugs.webkit.org/show_bug.cgi?id=43910 - - Reported by Jocelyn Turcotte. + "caused crashes on the SL release bot" (Requested by ggaren on + #webkit). - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::generateEnter): - (JSC::Yarr::RegexGenerator::generateReturn): + * runtime/JSGlobalData.h: + * runtime/WriteBarrier.h: -2010-08-11 Gavin Barraclough <barraclough@apple.com> +2011-02-28 Gavin Barraclough <barraclough@apple.com> Windows build fix. - * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/Forward.h: - -2010-08-11 Leo Yang <leo.yang@torchmobile.com.cn> - - Reviewed by Geoffrey Garen. - - Date("") should be an invalid date. For IE, Firefox and Chrome, Date("") is invalid date, - which means isNaN(new Date("")) should return true. - https://bugs.webkit.org/show_bug.cgi?id=43793 - Tests: fast/js/date-constructor.html - - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::resetDateCache): - -2010-08-11 Gavin Barraclough <barraclough@apple.com> - - Windows & !JIT build fix. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * JavaScriptCore.xcodeproj/project.pbxproj: - * runtime/RegExp.cpp: - (JSC::RegExp::match): - -2010-08-11 Gavin Barraclough <barraclough@apple.com> - - Rubber stamp by sam weinig - - Touch a file to stop the bot rolling a bit change out! - - * runtime/UString.cpp: - (JSC::UString::ascii): - -2010-08-11 Kevin Ollivier <kevino@theolliviers.com> - [wx] Build fix for wx and WebDOM bindings, add CString classes to the list of forwards. +2011-02-28 Gavin Barraclough <barraclough@apple.com> - * wtf/Forward.h: + Reviewed by Sam Weinig & Darin Adler. -2010-08-11 Gavin Barraclough <barraclough@apple.com> + Bug 55423 - Clean up property tables in Structure - Rubber stamps by Darin Adler & Sam Weinig. + Encapsulate, reduce duplication of table search code, + and reduce the size of the tables (remove the index, + just maintain the tables in the correct order). - Bug 43867 - Some UString cleanup + Shows a 0.5% - 1% progression on sunspider. - Change JSC::UString data(), size(), and from(), to characters(), length(), and number() to match WTF::String. - Move string concatenation methods to a new header to simplify down UString.h. Remove is8Bit(). - - * API/JSClassRef.cpp: - (OpaqueJSClass::~OpaqueJSClass): - (OpaqueJSClass::className): - * API/OpaqueJSString.cpp: - (OpaqueJSString::create): * JavaScriptCore.exp: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * JavaScriptCore.xcodeproj/project.pbxproj: - * bytecode/CodeBlock.cpp: - (JSC::constantName): - (JSC::idName): - (JSC::CodeBlock::registerName): - (JSC::regexpName): - * bytecode/EvalCodeCache.h: - (JSC::EvalCodeCache::get): - * bytecompiler/NodesCodegen.cpp: - (JSC::ResolveNode::emitBytecode): - (JSC::FunctionCallResolveNode::emitBytecode): - (JSC::ReadModifyResolveNode::emitBytecode): - (JSC::processClauseList): - * parser/ASTBuilder.h: - (JSC::ASTBuilder::createRegex): - * parser/ParserArena.h: - (JSC::IdentifierArena::makeNumericIdentifier): - * parser/SourceProvider.h: - (JSC::UStringSourceProvider::data): - (JSC::UStringSourceProvider::length): - * profiler/Profiler.cpp: - * runtime/Arguments.cpp: - (JSC::Arguments::getOwnPropertySlot): - (JSC::Arguments::getOwnPropertyNames): - (JSC::Arguments::put): - (JSC::Arguments::deleteProperty): - * runtime/ArrayPrototype.cpp: - (JSC::arrayProtoFuncToString): - * runtime/DatePrototype.cpp: - (JSC::formatLocaleDate): - * runtime/ExceptionHelpers.cpp: - * runtime/FunctionConstructor.cpp: - * runtime/FunctionPrototype.cpp: - (JSC::insertSemicolonIfNeeded): - * runtime/Identifier.h: - (JSC::Identifier::characters): - (JSC::Identifier::length): - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::decode): - (JSC::parseInt): - (JSC::parseFloat): - (JSC::globalFuncEscape): - (JSC::globalFuncUnescape): - * runtime/JSNumberCell.cpp: - (JSC::JSNumberCell::toString): - * runtime/JSONObject.cpp: - (JSC::gap): - (JSC::Stringifier::appendQuotedString): - (JSC::Stringifier::appendStringifiedValue): - (JSC::Stringifier::indent): - (JSC::Stringifier::unindent): - (JSC::Walker::walk): - * runtime/JSString.cpp: - (JSC::JSString::replaceCharacter): - (JSC::JSString::getIndexSlowCase): - * runtime/JSString.h: - (JSC::RopeBuilder::JSString): - (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): - (JSC::RopeBuilder::fiberCount): - (JSC::jsSingleCharacterSubstring): - (JSC::jsNontrivialString): - (JSC::JSString::getIndex): - (JSC::jsString): - (JSC::jsStringWithFinalizer): - (JSC::jsSubstring): - (JSC::jsOwnedString): - * runtime/JSStringBuilder.h: - (JSC::JSStringBuilder::append): - * runtime/LiteralParser.h: - (JSC::LiteralParser::Lexer::Lexer): - * runtime/NumberPrototype.cpp: - (JSC::numberProtoFuncToString): - (JSC::numberProtoFuncToFixed): - (JSC::numberProtoFuncToExponential): - (JSC::numberProtoFuncToPrecision): - * runtime/NumericStrings.h: - (JSC::NumericStrings::add): - (JSC::NumericStrings::lookupSmallString): - * runtime/Operations.h: - (JSC::jsString): - * runtime/RegExp.cpp: - (JSC::RegExp::match): - * runtime/RegExpCache.cpp: - (JSC::RegExpCache::lookupOrCreate): - (JSC::RegExpCache::create): - * runtime/RegExpConstructor.cpp: - (JSC::RegExpConstructor::getRightContext): - * runtime/RegExpObject.cpp: - (JSC::RegExpObject::match): - * runtime/RegExpPrototype.cpp: - (JSC::regExpProtoFuncToString): - * runtime/StringBuilder.h: - (JSC::StringBuilder::append): - * runtime/StringConcatenate.h: Copied from JavaScriptCore/runtime/UString.h. - (JSC::): - (JSC::sumWithOverflow): - (JSC::tryMakeString): - (JSC::makeString): - * runtime/StringObject.cpp: - (JSC::StringObject::getOwnPropertyNames): - * runtime/StringPrototype.cpp: - (JSC::substituteBackreferencesSlow): - (JSC::localeCompare): - (JSC::jsSpliceSubstringsWithSeparators): - (JSC::stringProtoFuncReplace): - (JSC::stringProtoFuncCharAt): - (JSC::stringProtoFuncCharCodeAt): - (JSC::stringProtoFuncIndexOf): - (JSC::stringProtoFuncLastIndexOf): - (JSC::stringProtoFuncSlice): - (JSC::stringProtoFuncSplit): - (JSC::stringProtoFuncSubstr): - (JSC::stringProtoFuncSubstring): - (JSC::stringProtoFuncToLowerCase): - (JSC::stringProtoFuncToUpperCase): - (JSC::stringProtoFuncFontsize): - (JSC::stringProtoFuncLink): - (JSC::trimString): - * runtime/UString.cpp: - (JSC::UString::number): - (JSC::UString::ascii): - (JSC::UString::operator[]): - (JSC::UString::toDouble): - (JSC::UString::find): - (JSC::UString::rfind): - (JSC::UString::substr): - (JSC::operator==): - (JSC::operator<): - (JSC::operator>): - (JSC::UString::UTF8String): - * runtime/UString.h: - (JSC::UString::UString): - (JSC::UString::adopt): - (JSC::UString::length): - (JSC::UString::characters): - (JSC::UString::isNull): - (JSC::UString::isEmpty): - (JSC::UString::impl): - (JSC::UString::cost): - (JSC::operator==): - (JSC::operator!=): - (JSC::codePointCompare): - (JSC::UString::toArrayIndex): - (JSC::IdentifierRepHash::hash): - (WTF::): - * yarr/RegexJIT.cpp: - (JSC::Yarr::jitCompileRegex): - * yarr/RegexParser.h: - (JSC::Yarr::Parser::Parser): - -2010-08-11 Gabor Loki <loki@webkit.org> - - Qt build fix (ARMv7). - - Fix invalid conversion from int to Condition. - Add ARMv7Assembler.cpp to JavaScriptCore.pro. - - * JavaScriptCore.pro: - * assembler/ARMv7Assembler.h: - (JSC::ARMv7Assembler::): - (JSC::ARMv7Assembler::JmpSrc::JmpSrc): - -2010-08-11 Nathan Lawrence <nlawrence@apple.com> - - Reviewed by Geoffrey Garen. - - At collection time, we frequently want to mark a cell, while checking - whether it was originally checked. Previously, this was a get - operation follwed by a set operation. Fusing the two saves - computation and gives a 0.5% sunspider speedup. - - * runtime/Collector.h: - (JSC::CollectorBitmap::getset): - (JSC::Heap::checkMarkCell): - * runtime/JSArray.h: - (JSC::MarkStack::drain): - * runtime/JSCell.h: - (JSC::MarkStack::append): - -2010-08-11 Steve Falkenburg <sfalken@apple.com> - - Reviewed by Adam Roben. - - Improve vsprops copying for Windows build - https://bugs.webkit.org/show_bug.cgi?id=41982 - - When we detect a new SDK, always copy a new set of vsprops files. - Previously, if someone updated their SDK after updating their sources, - they could end up with out-of-date vsprops files. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: - -2010-08-10 Darin Adler <darin@apple.com> - - Reviewed by Sam Weinig. - - Add leakRef and clear to all RefPtr variants - https://bugs.webkit.org/show_bug.cgi?id=42389 - - * API/JSRetainPtr.h: Changed all uses of "template <...>" to instead do - "template<...>". We should probably put this in the style guide and do it - consitently. Fixed other minor style issues. Defined many of the inlined - functions outside the class definition, to avoid style checker warnings - about multiple statements on a single line and for slightly better clarity - of the class definition itself. Renamed releaseRef to leakRef. Added a - releaseRef that calls leakRef so we don't have to rename all callers oat - once. Added a clear function. - - * wtf/PassRefPtr.h: Changed all uses of releaseRef to leakRef. -n - * wtf/RefPtr.h: Changed all uses of "template <...>" to instead do - "template<...>". Tidied up declarations and comments a bit. - Changed all uses of releaseRef to leakRef. - - * wtf/RetainPtr.h: Changed all uses of "template <...>" to instead do - "template<...>". Defined many of the inlined functions outside the class - definition, to avoid style checker warnings about multiple statements on - a single line and for slightly better clarity of the class definition itself. - Renamed releaseRef to leakRef. Added a releaseRef that calls leakRef so we - don't have to rename all callers at once. Added a clear function. - -2010-08-10 Dumitru Daniliuc <dumi@chromium.org> - - Unreviewed, reverting an unintentional change to a file submitted in r65108. - - * bytecode/CodeBlock.h: - (JSC::binaryChop): - -2010-08-10 Gavin Barraclough <barraclough@apple.com> - - Rubber stamped by Sam Weinig - - Bug 43817 - Remove UString::Rep - UString::Rep has for a long time been replaced by UStringImpl (Rep - remaining as a typedef). UStringImpl has since been removed too - (unified with StringImpl). Remove Rep, rename rep() to impl() and - m_rep to m_impl. Also add impl() method to Identifier, and rename - its UString member from _ustring to m_string. - - * API/JSCallbackObject.h: - (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty): - (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty): - (JSC::JSCallbackObjectData::JSPrivatePropertyMap::deletePrivateProperty): - * API/JSCallbackObjectFunctions.h: - (JSC::::getOwnPropertySlot): - (JSC::::put): - (JSC::::deleteProperty): - (JSC::::getOwnPropertyNames): - (JSC::::staticValueGetter): - (JSC::::staticFunctionGetter): - * API/JSClassRef.cpp: - (tryCreateStringFromUTF8): - (OpaqueJSClass::OpaqueJSClass): - (OpaqueJSClass::~OpaqueJSClass): - (OpaqueJSClassContextData::OpaqueJSClassContextData): - * API/JSClassRef.h: - * API/OpaqueJSString.cpp: - (OpaqueJSString::ustring): - * bytecode/EvalCodeCache.h: - (JSC::EvalCodeCache::get): - * bytecode/JumpTable.h: - (JSC::StringJumpTable::offsetForValue): - (JSC::StringJumpTable::ctiForValue): - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::addVar): - (JSC::BytecodeGenerator::addGlobalVar): - (JSC::BytecodeGenerator::BytecodeGenerator): - (JSC::BytecodeGenerator::addParameter): - (JSC::BytecodeGenerator::registerFor): - (JSC::BytecodeGenerator::willResolveToArguments): - (JSC::BytecodeGenerator::uncheckedRegisterForArguments): - (JSC::BytecodeGenerator::constRegisterFor): - (JSC::BytecodeGenerator::isLocal): - (JSC::BytecodeGenerator::isLocalConstant): - (JSC::BytecodeGenerator::addConstant): - (JSC::BytecodeGenerator::emitLoad): - (JSC::BytecodeGenerator::findScopedProperty): - (JSC::keyForCharacterSwitch): - (JSC::prepareJumpTableForStringSwitch): - * bytecompiler/BytecodeGenerator.h: - * bytecompiler/NodesCodegen.cpp: - (JSC::processClauseList): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - * parser/JSParser.cpp: - (JSC::JSParser::parseStrictObjectLiteral): - * pcre/pcre_exec.cpp: - (Histogram::add): - * profiler/CallIdentifier.h: - (JSC::CallIdentifier::Hash::hash): - * profiler/Profile.cpp: - * profiler/ProfileNode.cpp: - (JSC::ProfileNode::debugPrintDataSampleStyle): - * profiler/ProfileNode.h: - * runtime/ArrayPrototype.cpp: - (JSC::arrayProtoFuncToString): - * runtime/Identifier.cpp: - (JSC::Identifier::equal): - (JSC::IdentifierCStringTranslator::hash): - (JSC::IdentifierCStringTranslator::equal): - (JSC::IdentifierCStringTranslator::translate): - (JSC::Identifier::add): - (JSC::IdentifierUCharBufferTranslator::hash): - (JSC::IdentifierUCharBufferTranslator::equal): - (JSC::IdentifierUCharBufferTranslator::translate): - (JSC::Identifier::addSlowCase): - * runtime/Identifier.h: - (JSC::Identifier::Identifier): - (JSC::Identifier::ustring): - (JSC::Identifier::impl): - (JSC::Identifier::data): - (JSC::Identifier::size): - (JSC::Identifier::ascii): - (JSC::Identifier::isNull): - (JSC::Identifier::isEmpty): - (JSC::Identifier::toUInt32): - (JSC::Identifier::toStrictUInt32): - (JSC::Identifier::toArrayIndex): - (JSC::Identifier::toDouble): - (JSC::Identifier::equal): - (JSC::Identifier::add): - * runtime/InitializeThreading.cpp: - (JSC::initializeThreadingOnce): - * runtime/InternalFunction.cpp: - (JSC::InternalFunction::displayName): - * runtime/JSFunction.cpp: - (JSC::JSFunction::displayName): - * runtime/JSGlobalObject.h: - (JSC::JSGlobalObject::addStaticGlobals): - * runtime/JSStaticScopeObject.h: - (JSC::JSStaticScopeObject::JSStaticScopeObject): - * runtime/JSString.h: - (JSC::): - (JSC::RopeBuilder::appendStringInConstruct): - (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): - (JSC::jsSingleCharacterSubstring): - (JSC::jsSubstring): - * runtime/JSVariableObject.cpp: - (JSC::JSVariableObject::deleteProperty): - (JSC::JSVariableObject::symbolTableGet): - * runtime/JSVariableObject.h: - (JSC::JSVariableObject::symbolTableGet): - (JSC::JSVariableObject::symbolTablePut): - (JSC::JSVariableObject::symbolTablePutWithAttributes): - * runtime/Lookup.cpp: - (JSC::HashTable::createTable): - (JSC::HashTable::deleteTable): - * runtime/Lookup.h: - (JSC::HashEntry::initialize): - (JSC::HashEntry::setKey): - (JSC::HashEntry::key): - (JSC::HashTable::entry): * runtime/PropertyMapHashTable.h: + (JSC::isPowerOf2): + (JSC::nextPowerOf2): + bit ops used to calculate table size. (JSC::PropertyMapEntry::PropertyMapEntry): - * runtime/PropertyNameArray.cpp: - (JSC::PropertyNameArray::add): - * runtime/PropertyNameArray.h: - (JSC::PropertyNameArray::add): - (JSC::PropertyNameArray::addKnownUnique): - * runtime/RegExp.cpp: - (JSC::RegExp::match): - * runtime/RegExpCache.cpp: - (JSC::RegExpCache::create): - * runtime/RegExpKey.h: - (JSC::RegExpKey::RegExpKey): - * runtime/SmallStrings.cpp: - (JSC::SmallStringsStorage::rep): - (JSC::SmallStrings::singleCharacterStringRep): - * runtime/SmallStrings.h: - * runtime/StringPrototype.cpp: - (JSC::jsSpliceSubstringsWithSeparators): - (JSC::stringProtoFuncMatch): - (JSC::stringProtoFuncSearch): + (JSC::PropertyTable::ordered_iterator::operator++): + (JSC::PropertyTable::ordered_iterator::operator==): + (JSC::PropertyTable::ordered_iterator::operator!=): + (JSC::PropertyTable::ordered_iterator::operator*): + (JSC::PropertyTable::ordered_iterator::operator->): + (JSC::PropertyTable::ordered_iterator::ordered_iterator): + implementation of the iterator types + (JSC::PropertyTable::PropertyTable): + (JSC::PropertyTable::~PropertyTable): + constructors take an initial capacity for the table, + a table to copy, or both. + (JSC::PropertyTable::begin): + (JSC::PropertyTable::end): + create in-order iterators. + (JSC::PropertyTable::find): + search the hash table + (JSC::PropertyTable::add): + add a value to the hash table + (JSC::PropertyTable::remove): + remove a value from the hash table + (JSC::PropertyTable::size): + (JSC::PropertyTable::isEmpty): + accessors. + (JSC::PropertyTable::propertyStorageSize): + (JSC::PropertyTable::clearDeletedOffsets): + (JSC::PropertyTable::hasDeletedOffset): + (JSC::PropertyTable::getDeletedOffset): + (JSC::PropertyTable::addDeletedOffset): + cache deleted (available) offsets in the property storage array. + (JSC::PropertyTable::copy): + take a copy of the PropertyTable, potentially expanding the capacity. + (JSC::PropertyTable::sizeInMemory): + used for DEBUG build statistics + (JSC::PropertyTable::reinsert): + (JSC::PropertyTable::rehash): + (JSC::PropertyTable::tableCapacity): + (JSC::PropertyTable::deletedEntryIndex): + (JSC::PropertyTable::skipDeletedEntries): + (JSC::PropertyTable::table): + (JSC::PropertyTable::usedCount): + (JSC::PropertyTable::dataSize): + (JSC::PropertyTable::sizeForCapacity): + (JSC::PropertyTable::canInsert): + these methods provide internal implementation. * runtime/Structure.cpp: + (JSC::Structure::dumpStatistics): (JSC::Structure::~Structure): + (JSC::Structure::materializePropertyMap): (JSC::Structure::despecifyDictionaryFunction): - (JSC::Structure::addPropertyTransitionToExistingStructure): (JSC::Structure::addPropertyTransition): + (JSC::Structure::flattenDictionaryStructure): (JSC::Structure::copyPropertyTable): (JSC::Structure::get): (JSC::Structure::despecifyFunction): + (JSC::Structure::despecifyAllFunctions): (JSC::Structure::put): - (JSC::Structure::hasTransition): (JSC::Structure::remove): + (JSC::Structure::createPropertyMap): + (JSC::Structure::getPropertyNames): + (JSC::PropertyTable::checkConsistency): (JSC::Structure::checkConsistency): + factored out code to PropertyMapHashTable.h * runtime/Structure.h: + (JSC::Structure::propertyStorageSize): + (JSC::Structure::isEmpty): (JSC::Structure::get): - (JSC::Structure::hasTransition): - * runtime/StructureTransitionTable.h: - * runtime/SymbolTable.h: - * runtime/UString.cpp: - (JSC::UString::UString): - (JSC::UString::toStrictUInt32): - (JSC::UString::substr): - * runtime/UString.h: - (JSC::UString::UString): - (JSC::UString::adopt): - (JSC::UString::data): - (JSC::UString::size): - (JSC::UString::isNull): - (JSC::UString::isEmpty): - (JSC::UString::impl): - (JSC::UString::cost): - (JSC::operator==): - (JSC::codePointCompare): - (JSC::IdentifierRepHash::hash): - (WTF::): - -2010-08-10 Gavin Barraclough <barraclough@apple.com> - - Bug 43816 - Remove UStringImpl - The class was actually removed a long time ago, replaced by StringImpl. - UStringImpl is just a typedef onto StringImpl. Remove this. + factored out code to PropertyMapHashTable.h - * API/JSClassRef.cpp: - (OpaqueJSClass::OpaqueJSClass): - * JavaScriptCore.xcodeproj/project.pbxproj: - * runtime/JSString.cpp: - (JSC::JSString::resolveRope): - (JSC::JSString::replaceCharacter): - * runtime/JSString.h: - (JSC::RopeBuilder::RopeIterator::operator*): - (JSC::RopeBuilder::JSString): - (JSC::RopeBuilder::appendStringInConstruct): - (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): - (JSC::jsSingleCharacterSubstring): - (JSC::jsSubstring): - * runtime/JSStringBuilder.h: - (JSC::jsMakeNontrivialString): - * runtime/RopeImpl.cpp: - (JSC::RopeImpl::derefFibersNonRecursive): - * runtime/RopeImpl.h: - (JSC::RopeImpl::deref): - * runtime/SmallStrings.cpp: - (JSC::SmallStringsStorage::SmallStringsStorage): - * runtime/StringConstructor.cpp: - (JSC::stringFromCharCodeSlowCase): - * runtime/StringPrototype.cpp: - (JSC::jsSpliceSubstringsWithSeparators): - (JSC::stringProtoFuncFontsize): - (JSC::stringProtoFuncLink): - * runtime/UString.cpp: - (JSC::initializeUString): - * runtime/UString.h: - (JSC::UString::adopt): - (JSC::tryMakeString): - (JSC::makeString): - * runtime/UStringImpl.h: Removed. - -2010-08-10 Patrick Gansterer <paroga@paroga.com> +2011-02-28 Xan Lopez <xlopez@igalia.com> - Reviewed by Eric Seidel. + Another fix build :( - Make FastMalloc more portable. - https://bugs.webkit.org/show_bug.cgi?id=41790 + Fix typo. - * wtf/FastMalloc.cpp: - (WTF::TCMalloc_Central_FreeList::Populate): - (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary): - -2010-08-10 Patrick Gansterer <paroga@paroga.com> - - Reviewed by David Levin. - - [WINCE] Buildfix for CE 6.0 - https://bugs.webkit.org/show_bug.cgi?id=43027 - - CE 6.0 doesn't define localtime in the system include files. - - * wtf/Platform.h: Include ce_time.h on all OS(WINCE). - -2010-08-10 Gavin Barraclough <barraclough@apple.com> - - Rubber stamped by Sam Weinig. - - Bug 43786 - Move AtomicStringHash from WebCore to WTF - Also remove deprecated string headers from WebCore/platform/text. - - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/text/AtomicString.h: - * wtf/text/AtomicStringHash.h: Copied from WebCore/platform/text/AtomicStringHash.h. - -2010-08-09 Oliver Hunt <oliver@apple.com> - - Fix Qt/ARM again, this time including the other changed file. - - * jit/JIT.h: - -2010-08-09 Oliver Hunt <oliver@apple.com> - - Fix Qt/ARM - - C++ overload resolution I stab at thee - - * jit/JITInlineMethods.h: - (JSC::JIT::beginUninterruptedSequence): - (JSC::JIT::endUninterruptedSequence): - -2010-08-09 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - Allow an assembler/macroassembler to compact branches to more concise forms when linking - https://bugs.webkit.org/show_bug.cgi?id=43745 - - This patch makes it possible for an assembler to convert jumps into a different - (presumably more efficient) form at link time. Currently implemented in the - ARMv7 JIT as that already had logic to delay linking of jumps until the end of - compilation already. The ARMv7 JIT chooses between either a 4 byte short jump - or a full 32-bit offset (and rewrites ITTT instructions as appropriate), so does - not yet produce the most compact form possible. The general design of the linker - should make it relatively simple to introduce new branch types with little effort, - as the linker has no knowledge of the exact form of any of the branches. - - * JavaScriptCore.xcodeproj/project.pbxproj: - * assembler/ARMv7Assembler.cpp: Added. - (JSC::): - Record jump sizes - - * assembler/ARMv7Assembler.h: - (JSC::ARMv7Assembler::LinkRecord::LinkRecord): - (JSC::ARMv7Assembler::LinkRecord::from): - (JSC::ARMv7Assembler::LinkRecord::setFrom): - (JSC::ARMv7Assembler::LinkRecord::to): - (JSC::ARMv7Assembler::LinkRecord::type): - (JSC::ARMv7Assembler::LinkRecord::linkType): - (JSC::ARMv7Assembler::LinkRecord::setLinkType): - Encapsulate LinkRecord fields so we can compress the values somewhat - - (JSC::ARMv7Assembler::JmpSrc::JmpSrc): - Need to record the jump type now - - (JSC::ARMv7Assembler::b): - (JSC::ARMv7Assembler::blx): - (JSC::ARMv7Assembler::bx): - Need to pass the jump types - - (JSC::ARMv7Assembler::executableOffsetFor): - (JSC::ARMv7Assembler::jumpSizeDelta): - (JSC::ARMv7Assembler::linkRecordSourceComparator): - (JSC::ARMv7Assembler::computeJumpType): - (JSC::ARMv7Assembler::convertJumpTo): - (JSC::ARMv7Assembler::recordLinkOffsets): - (JSC::ARMv7Assembler::jumpsToLink): - (JSC::ARMv7Assembler::link): - (JSC::ARMv7Assembler::unlinkedCode): - Helper functions for the linker - - (JSC::ARMv7Assembler::linkJump): - (JSC::ARMv7Assembler::canBeShortJump): - (JSC::ARMv7Assembler::linkLongJump): - (JSC::ARMv7Assembler::linkShortJump): - (JSC::ARMv7Assembler::linkJumpAbsolute): - Moving code around for the various jump linking functions - - * assembler/AbstractMacroAssembler.h: - (JSC::AbstractMacroAssembler::beginUninterruptedSequence): - (JSC::AbstractMacroAssembler::endUninterruptedSequence): - We have to track uninterrupted sequences in any assembler that compacts - branches as that's not something we're allowed to do in such sequences. - AbstractMacroAssembler has a nop version of these functions as it makes the - code elsewhere nicer. - - * assembler/LinkBuffer.h: - (JSC::LinkBuffer::LinkBuffer): - (JSC::LinkBuffer::link): - (JSC::LinkBuffer::patch): - (JSC::LinkBuffer::locationOf): - (JSC::LinkBuffer::locationOfNearCall): - (JSC::LinkBuffer::returnAddressOffset): - (JSC::LinkBuffer::trampolineAt): - Updated these functions to adjust for any changed offsets in the linked code - - (JSC::LinkBuffer::applyOffset): - A helper function to deal with the now potentially moved labels - - (JSC::LinkBuffer::linkCode): - The new and mighty linker function - - * assembler/MacroAssemblerARMv7.h: - (JSC::MacroAssemblerARMv7::MacroAssemblerARMv7): - (JSC::MacroAssemblerARMv7::beginUninterruptedSequence): - (JSC::MacroAssemblerARMv7::endUninterruptedSequence): - (JSC::MacroAssemblerARMv7::jumpsToLink): - (JSC::MacroAssemblerARMv7::unlinkedCode): - (JSC::MacroAssemblerARMv7::computeJumpType): - (JSC::MacroAssemblerARMv7::convertJumpTo): - (JSC::MacroAssemblerARMv7::recordLinkOffsets): - (JSC::MacroAssemblerARMv7::jumpSizeDelta): - (JSC::MacroAssemblerARMv7::link): - (JSC::MacroAssemblerARMv7::jump): - (JSC::MacroAssemblerARMv7::branchMul32): - (JSC::MacroAssemblerARMv7::breakpoint): - (JSC::MacroAssemblerARMv7::nearCall): - (JSC::MacroAssemblerARMv7::call): - (JSC::MacroAssemblerARMv7::ret): - (JSC::MacroAssemblerARMv7::tailRecursiveCall): - (JSC::MacroAssemblerARMv7::executableOffsetFor): - (JSC::MacroAssemblerARMv7::inUninterruptedSequence): - (JSC::MacroAssemblerARMv7::makeJump): - (JSC::MacroAssemblerARMv7::makeBranch): - All branches need to pass on their type now - - * jit/ExecutableAllocator.h: - (JSC::ExecutablePool::returnLastBytes): - We can't know ahead of time how much space will be necessary to - hold the linked code if we're compacting branches, this new - function allows us to return the unused bytes at the end of linking - - * jit/JIT.cpp: - (JSC::JIT::JIT): - (JSC::JIT::privateCompile): - * jit/JIT.h: - (JSC::JIT::compile): - The JIT class now needs to take a linker offset so that recompilation - can generate the same jumps when using branch compaction. - * jit/JITArithmetic32_64.cpp: - (JSC::JIT::emitSlow_op_mod): - * jit/JITOpcodes.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - (JSC::JIT::privateCompileCTINativeCall): - Update for new trampolineAt changes - - * wtf/FastMalloc.cpp: - (WTF::TCMallocStats::): - * wtf/Platform.h: - -2010-08-09 Gavin Barraclough <barraclough@apple.com> - - Qt build fix III. - - * wtf/text/WTFString.h: - -2010-08-09 Gavin Barraclough <barraclough@apple.com> - - Qt build fix. - - * wtf/qt/StringQt.cpp: + * runtime/MachineStackMarker.cpp: + (JSC::freePlatformThreadRegisters): -2010-08-06 Gavin Barraclough <barraclough@apple.com> +2011-02-28 Xan Lopez <xlopez@igalia.com> - Rubber stamped by Sam Weinig + Unreviewed build fix for Snow Leopard. - Bug 43594 - Add string forwards to Forward.h - This allows us to remove forward declarations for these classes from - WebCore/WebKit (a step in moving these class from WebCore:: to WTF::). + * runtime/MachineStackMarker.cpp: + (JSC::freePlatformThreadRegisters): - * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/Forward.h: +2011-02-28 Alejandro G. Castro <alex@igalia.com> -2010-08-07 Sheriff Bot <webkit.review.bot@gmail.com> + Unreviewed, fix SnowLeopard compilation after r79952. - Unreviewed, rolling out r64938. - http://trac.webkit.org/changeset/64938 - https://bugs.webkit.org/show_bug.cgi?id=43685 + * runtime/MachineStackMarker.cpp: + (JSC::freePlatformThreadRegisters): - Did not compile on several ports (Requested by abarth on - #webkit). +2011-02-28 Mark Rowe <mrowe@apple.com> - * Android.mk: - * CMakeLists.txt: - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * assembler/AbstractMacroAssembler.h: - * assembler/MacroAssembler.h: - * assembler/MacroAssemblerX86.h: - (JSC::MacroAssemblerX86::load32): - (JSC::MacroAssemblerX86::store32): - * assembler/X86Assembler.h: - (JSC::X86Assembler::movl_rm): - (JSC::X86Assembler::movl_mr): - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::markAggregate): - * bytecode/Instruction.h: - (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::): - (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set): - (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList): - * bytecode/StructureStubInfo.cpp: - (JSC::StructureStubInfo::deref): - * bytecode/StructureStubInfo.h: - (JSC::StructureStubInfo::initGetByIdProto): - (JSC::StructureStubInfo::initGetByIdChain): - (JSC::StructureStubInfo::): - * jit/JIT.h: - * jit/JITMarkObjects.cpp: Removed. - * jit/JITPropertyAccess.cpp: - (JSC::JIT::compileGetDirectOffset): - (JSC::JIT::testPrototype): - (JSC::JIT::privateCompilePutByIdTransition): - (JSC::JIT::privateCompileGetByIdProto): - (JSC::JIT::privateCompileGetByIdProtoList): - (JSC::JIT::privateCompileGetByIdChainList): - (JSC::JIT::privateCompileGetByIdChain): - * jit/JITPropertyAccess32_64.cpp: - (JSC::JIT::compileGetDirectOffset): - (JSC::JIT::testPrototype): - (JSC::JIT::privateCompilePutByIdTransition): - (JSC::JIT::privateCompileGetByIdProto): - (JSC::JIT::privateCompileGetByIdProtoList): - (JSC::JIT::privateCompileGetByIdChainList): - (JSC::JIT::privateCompileGetByIdChain): - * jit/JITStubs.cpp: - (JSC::setupPolymorphicProtoList): - * wtf/Platform.h: - -2010-08-07 Nathan Lawrence <nlawrence@apple.com> + Reviewed by Darin Adler. - Reviewed by Geoffrey Garen. + <http://webkit.org/b/55430> OwnArrayPtr.h's LOOSE_OWN_ARRAY_PTR results in link errors. - The JIT code contains a number of direct references to GC'd objects. - When we have movable objects, these references will need to be - updated. + * wtf/OwnArrayPtr.h: + (WTF::::set): Implement OwnArrayPtr::set. - * Android.mk: - * CMakeLists.txt: - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.xcodeproj/project.pbxproj: - * assembler/AbstractMacroAssembler.h: - (JSC::AbstractMacroAssembler::int32AtLocation): - (JSC::AbstractMacroAssembler::pointerAtLocation): - (JSC::AbstractMacroAssembler::jumpTarget): - * assembler/MacroAssembler.h: - (JSC::MacroAssembler::loadPtrWithPatch): - Normally, loadPtr will optimize when the register is eax. Since - the slightly smaller instruction changes the offsets, it messes up - our ability to repatch the code. We added this new instruction - that garuntees a constant size. - * assembler/MacroAssemblerX86.h: - (JSC::MacroAssemblerX86::load32WithPatch): - Changed load32 in the same way described above. - (JSC::MacroAssemblerX86::load32): - Moved the logic to optimize laod32 from movl_mr to load32 - (JSC::MacroAssemblerX86::store32): - Moved the logic to optimize store32 from movl_rm to store32 - * assembler/X86Assembler.h: - (JSC::X86Assembler::movl_rm): - (JSC::X86Assembler::movl_mr): - (JSC::X86Assembler::int32AtLocation): - (JSC::X86Assembler::pointerAtLocation): - (JSC::X86Assembler::jumpTarget): - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::markAggregate): - * bytecode/Instruction.h: - As described in StructureStubInfo.h, we needed to add additional - fields to both StructureStubInfo and - PolymorphicAccessStructureList so that we can determine the - structure of the JITed code at patch time. - (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set): - (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList): - * bytecode/StructureStubInfo.cpp: - (JSC::StructureStubInfo::markAggregate): - Added this function to mark the JITed code that correosponds to - this structure stub info. - * bytecode/StructureStubInfo.h: - (JSC::StructureStubInfo::initGetByIdProto): - (JSC::StructureStubInfo::initGetByIdChain): - (JSC::StructureStubInfo::): - * jit/JIT.h: - * jit/JITMarkObjects.cpp: Added. - (JSC::JIT::patchPrototypeStructureAddress): - (JSC::JIT::patchGetDirectOffset): - (JSC::JIT::markGetByIdProto): - (JSC::JIT::markGetByIdChain): - (JSC::JIT::markGetByIdProtoList): - (JSC::JIT::markPutByIdTransition): - (JSC::JIT::markGlobalObjectReference): - * jit/JITPropertyAccess.cpp: - Added asserts for the patch offsets. - (JSC::JIT::compileGetDirectOffset): - (JSC::JIT::testPrototype): - (JSC::JIT::privateCompilePutByIdTransition): - (JSC::JIT::privateCompileGetByIdProto): - (JSC::JIT::privateCompileGetByIdProtoList): - (JSC::JIT::privateCompileGetByIdChainList): - (JSC::JIT::privateCompileGetByIdChain): - * jit/JITPropertyAccess32_64.cpp: - (JSC::JIT::compileGetDirectOffset): - (JSC::JIT::testPrototype): - (JSC::JIT::privateCompilePutByIdTransition): - (JSC::JIT::privateCompileGetByIdProto): - (JSC::JIT::privateCompileGetByIdProtoList): - (JSC::JIT::privateCompileGetByIdChainList): - (JSC::JIT::privateCompileGetByIdChain): - * jit/JITStubs.cpp: - (JSC::setupPolymorphicProtoList): - * wtf/Platform.h: - Added ENABLE_MOVABLE_GC_OBJECTS flag +2011-02-28 Martin Zoubek <martin.zoubek@acision.com> and Alejandro G. Castro <alex@igalia.com> -2010-08-07 Michael Saboff <msaboff@apple.com> + Reviewed by Martin Robinson. - Reviewed by Geoffrey Garen. + Multithread support for JSC on UNIX + https://bugs.webkit.org/show_bug.cgi?id=26838 - Revert JSArray to point to the beginning of the contained ArrayStorage - struct. This is described in - https://bugs.webkit.org/show_bug.cgi?id=43526. + Implement suspendThread() and resumeThread() for systems with + pthread.h using thread signal handler. - * jit/JITPropertyAccess.cpp: - (JSC::JIT::emit_op_get_by_val): - (JSC::JIT::emit_op_put_by_val): - (JSC::JIT::privateCompilePatchGetArrayLength): - * jit/JITPropertyAccess32_64.cpp: - (JSC::JIT::emit_op_get_by_val): - (JSC::JIT::emit_op_put_by_val): - (JSC::JIT::privateCompilePatchGetArrayLength): - * runtime/JSArray.cpp: - (JSC::JSArray::JSArray): - (JSC::JSArray::~JSArray): - (JSC::JSArray::getOwnPropertySlot): - (JSC::JSArray::getOwnPropertyDescriptor): - (JSC::JSArray::put): - (JSC::JSArray::putSlowCase): - (JSC::JSArray::deleteProperty): - (JSC::JSArray::getOwnPropertyNames): - (JSC::JSArray::getNewVectorLength): - (JSC::JSArray::increaseVectorLength): - (JSC::JSArray::increaseVectorPrefixLength): - (JSC::JSArray::setLength): - (JSC::JSArray::pop): - (JSC::JSArray::push): - (JSC::JSArray::shiftCount): - (JSC::JSArray::unshiftCount): - (JSC::JSArray::sortNumeric): - (JSC::JSArray::sort): - (JSC::JSArray::fillArgList): - (JSC::JSArray::copyToRegisters): - (JSC::JSArray::compactForSorting): - (JSC::JSArray::subclassData): - (JSC::JSArray::setSubclassData): - (JSC::JSArray::checkConsistency): - * runtime/JSArray.h: - (JSC::JSArray::length): - (JSC::JSArray::canGetIndex): - (JSC::JSArray::getIndex): - (JSC::JSArray::setIndex): - (JSC::JSArray::uncheckedSetIndex): - (JSC::JSArray::markChildrenDirect): + * runtime/MachineStackMarker.cpp: + (JSC::pthreadSignalHandlerSuspendResume): + (JSC::MachineStackMarker::Thread::Thread): + (JSC::getCurrentPlatformThread): + (JSC::suspendThread): + (JSC::resumeThread): + (JSC::getPlatformThreadRegisters): + (JSC::otherThreadStackPointer): + (JSC::freePlatformThreadRegisters): + (JSC::MachineStackMarker::markOtherThreadConservatively): + * wtf/Platform.h: Added Gtk port to use + ENABLE_JSC_MULTIPLE_THREADS. -2010-08-07 Kwang Yul Seo <skyul@company100.net> +2011-02-28 Oliver Hunt <oliver@apple.com> - Reviewed by Eric Seidel. + Reviewed by Darin Adler. - Add ENABLE(YARR) guard around JSGlobalData::m_regexAllocator - https://bugs.webkit.org/show_bug.cgi?id=43399 + Stop using DeprecatedPtr for the global exception slot + https://bugs.webkit.org/show_bug.cgi?id=55424 - m_regexAllocator is used only by RegExp::compile which is guarded with ENABLE(YARR). + Create GCRootPtr to signify that the exception slot is + a gcroot, and so is exempt from the usual writebarrier + restrictions. * runtime/JSGlobalData.h: + * runtime/WriteBarrier.h: + (JSC::GCRootPtr::GCRootPtr): + (JSC::GCRootPtr::operator=): -2010-08-07 Patrick Roland Gansterer <paroga@paroga.com> - - Reviewed by Eric Seidel. - - [Qt] Enable JIT on WinCE - https://bugs.webkit.org/show_bug.cgi?id=43303 - - Add ExtraCompiler for generating GeneratedJITStubs_MSVC.asm. - - * DerivedSources.pro: - -2010-08-07 Dan Bernstein <mitz@apple.com> - - Reviewed by Anders Carlsson. - - Created a separate SimpleFontData constructor exclusively for SVG fonts and moved the CTFontRef - from SimpleFontData to FontPlatformData. - https://bugs.webkit.org/show_bug.cgi?id=43674 - - * wtf/Platform.h: Moved definitions of WTF_USE_CORE_TEXT and WTF_USE_ATSUI here from WebCore/config.h. - -2010-08-07 Zoltan Herczeg <zherczeg@webkit.org> - - Reviewed by Eric Seidel. - - Bitmap.h has no default constructor - https://bugs.webkit.org/show_bug.cgi?id=43619 - - Without a constructor, the initial bits of the Bitmap class - are undefinied. If only a few, or zero bits are 0, the memory - area provided by AlignedMemoryAllocator can be easly exhausted. - - Csaba Osztrogonác helped to find this bug. - - * wtf/Bitmap.h: - (WTF::::Bitmap): +2011-02-28 Adam Barth <abarth@webkit.org> -2010-08-06 Rafael Antognolli <antognolli@profusion.mobi> + Reviewed by Dimitri Glazkov. - [EFL] Build fix. + Use more xcconfig files in JavaScriptCore gyp build + https://bugs.webkit.org/show_bug.cgi?id=55391 - * CMakeLists.txt: add runtime/CGHandle.cpp. + The GYP experts tell me that we have have a total of two xcconfig + files: one for the xcodeproj as a whole and one for each target. This + patch uses that technique to re-use the existing xcconfig files and + eliminate the duplication. -2010-08-06 Jessie Berlin <jberlin@apple.com> + Technically, this patch introduces some build errors because the + xcconfig files assume that the xcodeproj file is one level higher in + the directory hierarchy. Specifically, the xcodeproj file can no + longer find the Info.plist or the prefix header. I plan to fix that in + a subsequent patch. - Roll out http://trac.webkit.org/changeset/64801, which broke the Safari Windows Build. - Unreviewed. + Also, this patch introduces the Release and Production configurations, + which should work correctly now. - * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/Forward.h: + * gyp/JavaScriptCore.gyp: -2010-08-06 Jessie Berlin <jberlin@apple.com> +2011-02-28 Jon Honeycutt <jhoneycutt@apple.com> - Windows Build Fix (continued). Unreviewed. + Windows build fix. * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + Add symbol to export. -2010-08-06 Jessie Berlin <jberlin@apple.com> - - Windows Build Fix. Unreviewed. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - Add GCHandle.h and GCHandle.cpp. - -2010-08-06 Nathan Lawrence <nlawrence@apple.com> - - Reviewed by Geoffrey Garen. - - https://bugs.webkit.org/show_bug.cgi?id=43207 - - WeakGCPtr's should instead of directly pointing to the GC'd object - should be directed to an array of pointers that can be updated for - movable objects. - - * Android.mk: - * GNUmakefile.am: - * JavaScriptCore.exp: - * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.xcodeproj/project.pbxproj: - * runtime/Collector.cpp: - (JSC::Heap::destroy): - (JSC::Heap::allocateBlock): - (JSC::Heap::freeBlock): - (JSC::Heap::updateWeakGCHandles): - (JSC::WeakGCHandlePool::update): - (JSC::Heap::addWeakGCHandle): - (JSC::Heap::markRoots): - * runtime/Collector.h: - (JSC::Heap::weakGCHandlePool): - * runtime/GCHandle.cpp: Added. - (JSC::WeakGCHandle::pool): - (JSC::WeakGCHandlePool::WeakGCHandlePool): - (JSC::WeakGCHandlePool::allocate): - (JSC::WeakGCHandlePool::free): - (JSC::WeakGCHandlePool::operator new): - * runtime/GCHandle.h: Added. - (JSC::WeakGCHandle::isValidPtr): - (JSC::WeakGCHandle::isPtr): - (JSC::WeakGCHandle::isNext): - (JSC::WeakGCHandle::invalidate): - (JSC::WeakGCHandle::get): - (JSC::WeakGCHandle::set): - (JSC::WeakGCHandle::getNextInFreeList): - (JSC::WeakGCHandle::setNextInFreeList): - (JSC::WeakGCHandlePool::isFull): - * runtime/WeakGCPtr.h: - (JSC::WeakGCPtr::WeakGCPtr): - (JSC::WeakGCPtr::~WeakGCPtr): - (JSC::WeakGCPtr::get): - (JSC::WeakGCPtr::clear): - (JSC::WeakGCPtr::assign): - (JSC::get): - -2010-08-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> - - Reviewed by Antonio Gomes. - - [Qt] Fix warnings about difference in symbol visiblity on Mac OS X - - * jsc.pro: - -2010-08-06 Zoltan Herczeg <zherczeg@webkit.org> - - Reviewed by Darin Adler. - - Refactor identifier parsing in lexer - https://bugs.webkit.org/show_bug.cgi?id=41845 - - The code is refactored to avoid gotos. The new code - has the same performance as the old one. - - SunSpider --parse-only: no change (from 34.0ms to 33.6ms) - SunSpider: no change (from 523.2ms to 523.5ms) - - * parser/Lexer.cpp: - (JSC::Lexer::parseIdent): - (JSC::Lexer::lex): - * parser/Lexer.h: - -2010-08-06 Gabor Loki <loki@webkit.org> +2011-02-28 Oliver Hunt <oliver@apple.com> Reviewed by Gavin Barraclough. - The ARM JIT does not support JSValue32_64 with RVCT - https://bugs.webkit.org/show_bug.cgi?id=43411 - - JSValue32_64 is enabled for RVCT by default. - - * create_jit_stubs: - * jit/JITStubs.cpp: - (JSC::ctiTrampoline): - (JSC::ctiVMThrowTrampoline): - (JSC::ctiOpThrowNotCaught): - * wtf/Platform.h: - -2010-08-05 Chao-ying Fu <fu@mips.com> - - Reviewed by Darin Adler. + Make ScopeChainNode GC allocated + https://bugs.webkit.org/show_bug.cgi?id=55283 - Define WTF_USE_ARENA_ALLOC_ALIGNMENT_INTEGER for MIPS - https://bugs.webkit.org/show_bug.cgi?id=43514 - - MIPS needs to define WTF_USE_ARENA_ALLOC_ALIGNMENT_INTEGER, so that - RenderArena::allocate() can return 8-byte aligned memory to avoid - exceptions on sdc1/ldc1. - - * wtf/Platform.h: - -2010-08-05 Gavin Barraclough <barraclough@apple.com> - - Rubber stamped by Sam Weinig - - Bug 43594 - Add string forwards to Forward.h - This allows us to remove forward declarations for these classes from - WebCore/WebKit (a step in moving these class from WebCore:: to WTF::). - - * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/Forward.h: - -2010-08-05 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Mark Rowe. - - Fixed leak seen on buildbot. - - * runtime/GCActivityCallbackCF.cpp: - (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback): - (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback): - (JSC::DefaultGCActivityCallback::operator()): Make out timer a RetainPtr, - since anything less would be uncivilized. - -2010-08-05 Andy Estes <aestes@apple.com> - - Reviewed by David Kilzer. - - Rename iOS-related OS and PLATFORM macros. - https://bugs.webkit.org/show_bug.cgi?id=43493 - - Rename WTF_OS_IPHONE_OS to WTF_OS_IOS, WTF_PLATFORM_IPHONE to - WTF_PLATFORM_IOS, and WTF_PLATFORM_IPHONE_SIMULATOR to - WTF_PLATFORM_IOS_SIMULATOR. - - * jit/ExecutableAllocator.h: - * jit/JITStubs.cpp: - * profiler/ProfilerServer.mm: - (-[ProfilerServer init]): - * wtf/FastMalloc.cpp: - (WTF::TCMallocStats::): - * wtf/Platform.h: - * wtf/unicode/icu/CollatorICU.cpp: - (WTF::Collator::userDefault): - -2010-08-05 Nathan Lawrence <nlawrence@apple.com> - - Reviewed by Darin Adler. - - https://bugs.webkit.org/show_bug.cgi?id=43464 - - Currently, the global object is being embedded in the JavaScriptCore - bytecode, however since the global object is the same for all opcodes - in a code block, we can have the global object just be a member of the - associated code block. - - Additionally, I added an assert inside of emitOpcode that verifies - that the last generated opcode was of the correct length. + Simplify lifetime and other issues with the scopechain + by making it gc allocated. This allows us to simplify + function exit and unwinding, as well as making the + current iterative refcounting go away. + * JavaScriptCore.exp: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::CodeBlock): - (JSC::CodeBlock::derefStructures): - (JSC::CodeBlock::markAggregate): - * bytecode/CodeBlock.h: - (JSC::CodeBlock::globalObject): - (JSC::GlobalCodeBlock::GlobalCodeBlock): - (JSC::ProgramCodeBlock::ProgramCodeBlock): - (JSC::EvalCodeBlock::EvalCodeBlock): - (JSC::FunctionCodeBlock::FunctionCodeBlock): - * bytecode/Opcode.h: - (JSC::opcodeLength): + (JSC::CodeBlock::createActivation): + * bytecode/StructureStubInfo.cpp: * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::generate): (JSC::BytecodeGenerator::BytecodeGenerator): - (JSC::BytecodeGenerator::emitOpcode): - Added an assert to check that the last generated opcode is the - correct length. - (JSC::BytecodeGenerator::rewindBinaryOp): - Changed the last opcode to op_end since the length will no longer - be correct. - (JSC::BytecodeGenerator::rewindUnaryOp): - Changed the last opcode to op_end since the length will no longer - be correct. - (JSC::BytecodeGenerator::emitResolve): - (JSC::BytecodeGenerator::emitGetScopedVar): - (JSC::BytecodeGenerator::emitPutScopedVar): - (JSC::BytecodeGenerator::emitResolveWithBase): + (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): + (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): * bytecompiler/BytecodeGenerator.h: + * debugger/Debugger.cpp: + (JSC::Recompiler::operator()): + * debugger/DebuggerCallFrame.h: + (JSC::DebuggerCallFrame::scopeChain): + * interpreter/CachedCall.h: + (JSC::CachedCall::CachedCall): + * interpreter/CallFrame.h: * interpreter/Interpreter.cpp: - (JSC::Interpreter::resolveGlobal): - (JSC::Interpreter::resolveGlobalDynamic): + (JSC::depth): + (JSC::Interpreter::unwindCallFrame): + (JSC::Interpreter::throwException): + (JSC::Interpreter::execute): + (JSC::Interpreter::executeCall): + (JSC::Interpreter::executeConstruct): (JSC::Interpreter::privateExecute): + * jit/JITCall.cpp: + (JSC::JIT::compileOpCallInitializeCallFrame): + (JSC::JIT::compileOpCall): + * jit/JITCall32_64.cpp: + (JSC::JIT::compileOpCallInitializeCallFrame): + (JSC::JIT::emit_op_ret): + (JSC::JIT::emit_op_ret_object_or_this): + (JSC::JIT::compileOpCall): * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_get_global_var): - (JSC::JIT::emit_op_put_global_var): - (JSC::JIT::emit_op_resolve_global): - (JSC::JIT::emitSlow_op_resolve_global): - (JSC::JIT::emit_op_resolve_global_dynamic): - (JSC::JIT::emitSlow_op_resolve_global_dynamic): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::emit_op_get_global_var): - (JSC::JIT::emit_op_put_global_var): - (JSC::JIT::emit_op_resolve_global): - (JSC::JIT::emitSlow_op_resolve_global): - * jit/JITStubs.cpp: - (JSC::cti_op_resolve_global): - * runtime/Executable.cpp: - (JSC::FunctionExecutable::compileForCallInternal): - (JSC::FunctionExecutable::compileForConstructInternal): - (JSC::FunctionExecutable::reparseExceptionInfo): - -2010-08-05 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig. - - Bug 43185 - Switch RegisterFile over to use PageAllocation - - Remove platform-specific memory allocation code. - - * interpreter/RegisterFile.cpp: - (JSC::RegisterFile::~RegisterFile): - (JSC::RegisterFile::releaseExcessCapacity): - * interpreter/RegisterFile.h: - (JSC::RegisterFile::RegisterFile): - (JSC::RegisterFile::grow): - (JSC::RegisterFile::checkAllocatedOkay): - * wtf/PageAllocation.cpp: - (WTF::PageAllocation::lastError): - * wtf/PageAllocation.h: - (WTF::PageAllocation::allocate): - (WTF::PageAllocation::allocateAt): - (WTF::PageAllocation::allocateAligned): - (WTF::PageAllocation::pageSize): - (WTF::PageAllocation::isPageAligned): - (WTF::PageAllocation::isPowerOfTwo): - * wtf/PageReservation.h: - (WTF::PageReservation::commit): - (WTF::PageReservation::decommit): - (WTF::PageReservation::reserve): - (WTF::PageReservation::reserveAt): - -2010-08-05 Michael Saboff <msaboff@apple.com> - - Reviewed by Darin Adler. - - Fixed https://bugs.webkit.org/show_bug.cgi?id=43401 where array - content aren't properly initialized as part of unshift. - - * runtime/JSArray.cpp: - (JSC::JSArray::unshiftCount): - -2010-08-05 Jian Li <jianli@chromium.org> - - Reviewed by David Levin. - - Unify blob related feature defines to ENABLE(BLOB). - https://bugs.webkit.org/show_bug.cgi?id=43081 - - * Configurations/FeatureDefines.xcconfig: - -2010-08-05 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> - - Rubber-stamped by Xan Lopez. - - Remove GHashTable left-overs. GHashTable is ref-counted, and is - correctly supported by GRefPtr. - - * wtf/gobject/GOwnPtr.h: - -2010-08-05 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> - - Unreviewed. - - Typo fix that makes distcheck happy. - - * GNUmakefile.am: - -2010-08-03 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Oliver Hunt and Beth Dakin. - - https://bugs.webkit.org/show_bug.cgi?id=43461 - Invalid NaN parsing - - * wtf/dtoa.cpp: Turn off the dtoa feature that allows you to specify a - non-standard NaN representation, since our NaN encoding assumes that all - true NaNs have the standard bit pattern. - - * API/JSValueRef.cpp: - (JSValueMakeNumber): Don't allow an API client to accidentally specify - a non-standard NaN either. - -2010-08-04 Gavin Barraclough <barraclough@apple.com> - - Windows build fix part II. - - * wtf/PageReservation.h: - (WTF::PageReservation::systemReserve): - -2010-08-04 Gavin Barraclough <barraclough@apple.com> - - Windows build fix. - - * wtf/PageReservation.h: - (WTF::PageReservation::systemReserve): - -2010-08-04 Gavin Barraclough <barraclough@apple.com> - - Build fix - add new header to !Mac projects. - - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - -2010-08-04 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig. - - Bug 43515 - Fix small design issues with PageAllocation, split out PageReservation. - - The PageAllocation class has a number of issues: - * Changes in bug #43269 accidentally switched SYMBIAN over to use malloc/free to allocate - blocks of memory for the GC heap, instead of allocating RChunks. Revert this change in - behaviour. - * In order for PageAllocation to work correctly on WinCE we should be decommitting memory - before deallocating. In order to simplify understanding the expected state at deallocate, - split behaviour out into PageAllocation and PageReservation classes. Require that all - memory be decommitted before calling deallocate on a PageReservation, add asserts to - enforce this. - * add many missing asserts. - * inline more functions. - * remove ability to create sub-PageAllocations from an existing PageAllocations object - - this presented an interface that would allow sub regions to be deallocated, which would - not have provided expected behaviour. - * remove writable/executable arguments to commit, this value can be cached at the point - the memory is reserved. - * remove writable/executable arguments to allocateAligned, protection other than RW is not - supported. - * add missing checks for overflow & failed allocation to mmap path through allocateAligned. - - * JavaScriptCore.xcodeproj/project.pbxproj: - * jit/ExecutableAllocator.cpp: - (JSC::ExecutableAllocator::intializePageSize): - * jit/ExecutableAllocator.h: - (JSC::ExecutablePool::Allocation::Allocation): - (JSC::ExecutablePool::Allocation::base): - (JSC::ExecutablePool::Allocation::size): - (JSC::ExecutablePool::Allocation::operator!): - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::FixedVMPoolAllocator::reuse): - (JSC::FixedVMPoolAllocator::coalesceFreeSpace): - (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): - (JSC::FixedVMPoolAllocator::alloc): - (JSC::FixedVMPoolAllocator::free): - (JSC::FixedVMPoolAllocator::allocInternal): - * runtime/AlignedMemoryAllocator.h: - (JSC::::allocate): - (JSC::::AlignedMemoryAllocator): - * runtime/Collector.cpp: - (JSC::Heap::allocateBlock): - * runtime/Collector.h: - * wtf/PageAllocation.cpp: - * wtf/PageAllocation.h: - (WTF::PageAllocation::operator!): - (WTF::PageAllocation::allocate): - (WTF::PageAllocation::allocateAt): - (WTF::PageAllocation::allocateAligned): - (WTF::PageAllocation::deallocate): - (WTF::PageAllocation::pageSize): - (WTF::PageAllocation::systemAllocate): - (WTF::PageAllocation::systemAllocateAt): - (WTF::PageAllocation::systemAllocateAligned): - (WTF::PageAllocation::systemDeallocate): - (WTF::PageAllocation::systemPageSize): - * wtf/PageReservation.h: Copied from JavaScriptCore/wtf/PageAllocation.h. - (WTF::PageReservation::PageReservation): - (WTF::PageReservation::commit): - (WTF::PageReservation::decommit): - (WTF::PageReservation::reserve): - (WTF::PageReservation::reserveAt): - (WTF::PageReservation::deallocate): - (WTF::PageReservation::systemCommit): - (WTF::PageReservation::systemDecommit): - (WTF::PageReservation::systemReserve): - (WTF::PageReservation::systemReserveAt): - * wtf/Platform.h: - -2010-08-04 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r64655. - http://trac.webkit.org/changeset/64655 - https://bugs.webkit.org/show_bug.cgi?id=43496 - - JavaScriptCore references patch seems to have caused - regressions in QT and GTK builds (Requested by nlawrence on - #webkit). - - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::markAggregate): - * runtime/Collector.cpp: - (JSC::Heap::markConservatively): - * runtime/JSCell.h: - (JSC::JSValue::asCell): - (JSC::MarkStack::append): - * runtime/JSGlobalObject.cpp: - (JSC::markIfNeeded): - * runtime/JSONObject.cpp: - (JSC::Stringifier::Holder::object): - * runtime/JSObject.h: - (JSC::JSObject::prototype): - * runtime/JSStaticScopeObject.cpp: - (JSC::JSStaticScopeObject::markChildren): - * runtime/JSValue.h: - (JSC::JSValue::): - (JSC::JSValue::JSValue): - (JSC::JSValue::asCell): - * runtime/MarkStack.h: - * runtime/NativeErrorConstructor.cpp: - * runtime/NativeErrorConstructor.h: - * runtime/Structure.h: - (JSC::Structure::storedPrototype): - -2010-08-04 Gavin Barraclough <barraclough@apple.com> - - Rubber stamped by Sam Weinig. - - Enable JSVALUE64 for CPU(PPC64). - Basic browsing seems to work. - - * wtf/Platform.h: - -2010-08-04 Nathan Lawrence <nlawrence@apple.com> - - Reviewed by Darin Adler. - - Refactoring MarkStack::append to take a reference. This is in - preparation for movable objects when we will need to update pointers. - http://bugs.webkit.org/show_bug.cgi?id=41177 - - Unless otherwise noted, all changes are to either return by reference - or pass a reference to MarkStack::append. - - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::markAggregate): - * runtime/Collector.cpp: - (JSC::Heap::markConservatively): - Added a temporary variable to prevent marking from changing an - unknown value on the stack - * runtime/JSCell.h: - (JSC::JSValue::asCell): - (JSC::MarkStack::append): - (JSC::MarkStack::appendInternal): - * runtime/JSGlobalObject.cpp: - (JSC::markIfNeeded): - * runtime/JSONObject.cpp: - (JSC::Stringifier::Holder::object): - * runtime/JSObject.h: - (JSC::JSObject::prototype): - * runtime/JSStaticScopeObject.cpp: - (JSC::JSStaticScopeObject::markChildren): - * runtime/JSValue.h: - (JSC::JSValue::JSValue): - (JSC::JSValue::asCell): - * runtime/MarkStack.h: - * runtime/NativeErrorConstructor.cpp: - (JSC::NativeErrorConstructor::createStructure): - Changed the structure flags to include a custom markChildren. - (JSC::NativeErrorConstructor::markChildren): - Update the prototype of the stored structure. - * runtime/NativeErrorConstructor.h: - Added structure flags. - * runtime/Structure.h: - (JSC::Structure::storedPrototype): - -2010-08-03 Nathan Lawrence <nlawrence@apple.com> - - Reviewed by Oliver Hunt. - - Tightened up some get_by_id_chain* code generation - https://bugs.webkit.org/show_bug.cgi?id=40935 - - This is in the style of - https://bugs.webkit.org/show_bug.cgi?id=30539, and changed code to - call accessor functions when it was not necessary to directly access - the private variables. - - * jit/JIT.h: - * jit/JITPropertyAccess.cpp: - (JSC::JIT::compileGetDirectOffset): - (JSC::JIT::testPrototype): - (JSC::JIT::privateCompilePutByIdTransition): - (JSC::JIT::privateCompileGetByIdChainList): - (JSC::JIT::privateCompileGetByIdChain): - * jit/JITPropertyAccess32_64.cpp: - (JSC::JIT::testPrototype): - (JSC::JIT::privateCompilePutByIdTransition): - (JSC::JIT::privateCompileGetByIdChainList): - (JSC::JIT::privateCompileGetByIdChain): - -2010-08-03 Adam Roben <aroben@apple.com> - - Turn on PLATFORM_STRATEGIES on Windows - - Fixes <http://webkit.org/b/43431>. - - Reviewed by Anders Carlsson. - - * wtf/Platform.h: - -2010-08-04 Gabor Loki <loki@webkit.org> - - Reviewed by Geoffrey Garen. - - Enable JSValue32_64 for GCC on ARM by default - https://bugs.webkit.org/show_bug.cgi?id=43410 - - * wtf/Platform.h: - -2010-08-03 Gavin Barraclough <barraclough@apple.com> - - Speculative windows build fix. - - * wtf/Bitmap.h: - -2010-08-03 Gavin Barraclough <barraclough@apple.com> - - Build fix following r64624. - - * JavaScriptCore.xcodeproj/project.pbxproj: - * wtf/PageAllocation.h: - -2010-08-03 Nathan Lawrence <nlawrence@apple.com> - - Reviewed by Gavin Barraclough. - - https://bugs.webkit.org/show_bug.cgi?id=43269 - - Added new allocateAligned methods to PageAllocation. In order to - prevent a regress in performance, the function needs to be inlined. - - Additionally, I ported the symbian block allocator to use - PageAllocation and added a new WTF::Bitmap class to support this. - - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.xcodeproj/project.pbxproj: - * runtime/AlignedMemoryAllocator.h: Added. - (JSC::AlignedMemory::deallocate): - (JSC::AlignedMemory::base): - (JSC::AlignedMemory::AlignedMemory): - (JSC::AlignedMemoryAllocator::destroy): - (JSC::AlignedMemoryAllocator::allocate): - (JSC::AlignedMemoryAllocator::AlignedMemoryAllocator): - (JSC::AlignedMemoryAllocator::~AlignedMemoryAllocator): - (JSC::AlignedMemoryAllocator::free): - * runtime/Collector.cpp: - (JSC::Heap::Heap): - (JSC::Heap::destroy): - (JSC::Heap::allocateBlock): - (JSC::Heap::freeBlock): - (JSC::Heap::freeBlocks): - (JSC::Heap::allocate): - (JSC::Heap::shrinkBlocks): - (JSC::Heap::markConservatively): - (JSC::Heap::clearMarkBits): - (JSC::Heap::markedCells): - * runtime/Collector.h: - (JSC::CollectorHeap::collectorBlock): - * runtime/CollectorHeapIterator.h: - (JSC::CollectorHeapIterator::operator*): - (JSC::LiveObjectIterator::operator++): - (JSC::DeadObjectIterator::operator++): - * wtf/Bitmap.h: Added. - (WTF::Bitmap::get): - (WTF::Bitmap::set): - (WTF::Bitmap::clear): - (WTF::Bitmap::clearAll): - (WTF::Bitmap::advanceToNextFreeBit): - (WTF::Bitmap::count): - (WTF::Bitmap::isEmpty): - (WTF::Bitmap::isFull): - * wtf/PageAllocation.h: - (WTF::PageAllocation::operator UnspecifiedBoolType): - (WTF::PageAllocation::allocateAligned): - (WTF::PageAllocation::reserveAligned): - * wtf/Platform.h: - * wtf/symbian: Removed. - * wtf/symbian/BlockAllocatorSymbian.cpp: Removed. - * wtf/symbian/BlockAllocatorSymbian.h: Removed. - -2010-08-03 Michael Saboff <msaboff@apple.com> - - Reviewed by Gavin Barraclough. - - Fix for https://bugs.webkit.org/show_bug.cgi?id=43314. The prior code - was using the wrong "length" value to move array contents when adding - space to the beginning of an array for an unshift() or similar - operation. Instead of using m_vectorLength, the length of the - allocated JSValue array, the code was using m_length, the declared - length of the array. These two values do not need to match. - - * JavaScriptCore.xcodeproj/project.pbxproj: - * runtime/JSArray.cpp: - (JSC::JSArray::increaseVectorPrefixLength): - -2010-08-03 Chao-ying Fu <fu@mips.com> - - Reviewed by Gavin Barraclough. - - Fix following https://bugs.webkit.org/show_bug.cgi?id=43089 - (accidentally inverted a compiler version check). - - * jit/ExecutableAllocator.h: - (JSC::ExecutableAllocator::cacheFlush): - -2010-08-03 Patrick Gansterer <paroga@paroga.com> - - Reviewed by Gavin Barraclough. - - Implement DEFINE_STUB_FUNCTION for WinCE. - https://bugs.webkit.org/show_bug.cgi?id=34953 - - * jit/JITStubs.cpp: - (JSC::): - (JSC::DEFINE_STUB_FUNCTION): - -2010-08-02 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Bug 43390 - Do not CRASH if we run out of room for jit code. - - Change the ExecutableAllocator implementations not to crash, and to return 0 if memory cannot be allocated. - The assemblers should pass this through without trying to use it in executableCopy. - Change the LinkBuffer to handle this, and to provide an allocationSuccessful() method to test for this. - - Change the JIT to throw an exception if allocation fails. - Make JIT optimizations fail gracefully if memory cannot be allocated (use non-optimized path). - Change YARR JIT to fallback to PCRE - - * assembler/ARMAssembler.cpp: - (JSC::ARMAssembler::executableCopy): - * assembler/ARMv7Assembler.h: - (JSC::ARMv7Assembler::executableCopy): - * assembler/LinkBuffer.h: - (JSC::LinkBuffer::allocationSuccessful): - * assembler/MIPSAssembler.h: - (JSC::MIPSAssembler::executableCopy): - * assembler/X86Assembler.h: - (JSC::X86Assembler::executableCopy): - * bytecode/StructureStubInfo.h: - (JSC::StructureStubInfo::initGetByIdProto): - (JSC::StructureStubInfo::initGetByIdChain): - (JSC::StructureStubInfo::initGetByIdSelfList): - (JSC::StructureStubInfo::initGetByIdProtoList): - (JSC::StructureStubInfo::initPutByIdTransition): - * jit/ExecutableAllocator.cpp: - (JSC::ExecutablePool::systemAlloc): - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::FixedVMPoolAllocator::allocInternal): - * jit/JIT.cpp: - (JSC::JIT::privateCompile): - * jit/JIT.h: - (JSC::JIT::compileGetByIdProto): - (JSC::JIT::compileGetByIdSelfList): - (JSC::JIT::compileGetByIdProtoList): - (JSC::JIT::compileGetByIdChainList): - (JSC::JIT::compileGetByIdChain): - (JSC::JIT::compilePutByIdTransition): - (JSC::JIT::compilePatchGetArrayLength): - * jit/JITOpcodes.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): + (JSC::JIT::emit_op_end): + (JSC::JIT::emit_op_ret): + (JSC::JIT::emit_op_ret_object_or_this): * jit/JITOpcodes32_64.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - (JSC::JIT::privateCompileCTINativeCall): - * jit/JITPropertyAccess.cpp: - (JSC::JIT::stringGetByValStubGenerator): - (JSC::JIT::privateCompilePutByIdTransition): - (JSC::JIT::privateCompilePatchGetArrayLength): - (JSC::JIT::privateCompileGetByIdProto): - (JSC::JIT::privateCompileGetByIdSelfList): - (JSC::JIT::privateCompileGetByIdProtoList): - (JSC::JIT::privateCompileGetByIdChainList): - (JSC::JIT::privateCompileGetByIdChain): - * jit/JITPropertyAccess32_64.cpp: - (JSC::JIT::stringGetByValStubGenerator): - (JSC::JIT::privateCompilePutByIdTransition): - (JSC::JIT::privateCompilePatchGetArrayLength): - (JSC::JIT::privateCompileGetByIdProto): - (JSC::JIT::privateCompileGetByIdSelfList): - (JSC::JIT::privateCompileGetByIdProtoList): - (JSC::JIT::privateCompileGetByIdChainList): - (JSC::JIT::privateCompileGetByIdChain): + (JSC::JIT::emit_op_end): * jit/JITStubs.cpp: - (JSC::JITThunks::tryCachePutByID): - (JSC::JITThunks::tryCacheGetByID): (JSC::DEFINE_STUB_FUNCTION): - (JSC::setupPolymorphicProtoList): * jit/JITStubs.h: - * jit/SpecializedThunkJIT.h: - (JSC::SpecializedThunkJIT::finalize): - * runtime/ExceptionHelpers.cpp: - (JSC::createOutOfMemoryError): - * runtime/ExceptionHelpers.h: + * runtime/ArgList.cpp: + * runtime/Completion.cpp: + (JSC::evaluate): + * runtime/Completion.h: + * runtime/DateConversion.cpp: * runtime/Executable.cpp: (JSC::EvalExecutable::compileInternal): (JSC::ProgramExecutable::compileInternal): (JSC::FunctionExecutable::compileForCallInternal): (JSC::FunctionExecutable::compileForConstructInternal): - (JSC::FunctionExecutable::reparseExceptionInfo): - (JSC::EvalExecutable::reparseExceptionInfo): - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::compile): - -2010-08-03 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Oliver Hunt. - - Fixed a crash seen on the GTK 64bit buildbot. - - When JSArray is allocated for the vptr stealing hack, it's not allocated - in the heap, so the JSArray constructor can't safely call Heap::heap(). - - Since this was subtle enough to confuse smart people, I've changed JSArray - to have an explicit vptr stealing constructor. - - * JavaScriptCore.xcodeproj/project.pbxproj: - * runtime/JSArray.cpp: - (JSC::JSArray::JSArray): - * runtime/JSArray.h: - (JSC::JSArray::): + * runtime/FunctionConstructor.cpp: + (JSC::constructFunction): + * runtime/GCActivityCallbackCF.cpp: + * runtime/Identifier.cpp: + * runtime/JSCell.h: + * runtime/JSChunk.cpp: Added. + * runtime/JSChunk.h: Added. + * runtime/JSFunction.cpp: + (JSC::JSFunction::JSFunction): + (JSC::JSFunction::markChildren): + (JSC::JSFunction::getCallData): + (JSC::JSFunction::getOwnPropertySlot): + (JSC::JSFunction::getConstructData): + * runtime/JSFunction.h: + (JSC::JSFunction::scope): + (JSC::JSFunction::setScope): * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::storeVPtrs): - -2010-08-03 Alex Milowski <alex@milowski.com> - - Reviewed by Beth Dakin. - - Changed the ENABLE_MATHML value to enable MathML by default. - - * Configurations/FeatureDefines.xcconfig: - -2010-08-03 Michael Saboff <msaboff@apple.com> - - Reviewed by Gavin Barraclough. - - Change to keep returned pointer from malloc family functions to - quiet memory leak detect. The pointer is saved in the new m_allocBase - member of the ArrayStorage structure. This fixes the issue found in - https://bugs.webkit.org/show_bug.cgi?id=43229. - - As part of this change, we use m_allocBase when reallocating and - freeing the memory associated with ArrayStorage. - - * runtime/JSArray.cpp: - (JSC::JSArray::JSArray): - (JSC::JSArray::~JSArray): - (JSC::JSArray::putSlowCase): - (JSC::JSArray::increaseVectorLength): - (JSC::JSArray::increaseVectorPrefixLength): - * runtime/JSArray.h: - -2010-08-03 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Mark Rowe. - - https://bugs.webkit.org/show_bug.cgi?id=43444 - PLATFORM(CF) is false on Windows in JavaScriptCore - - Moved some PLATFORM(WIN) #defines down into JavaScriptCore. - - * wtf/Platform.h: Added WTF_PLATFORM_CF 1 and WTF_USE_PTHREADS 0, inherited - from WebCore/config.h. Removed WTF_USE_WININET 1 since WebCore/config.h - just #undefined that later. - -2010-08-03 Geoffrey Garen <ggaren@apple.com> - - Try to fix Windows build: Don't use GCActivityCallbackCF on Windows, since - PLATFORM(CF) is not defined on Windows. - - We'll need to enable the GC activity callback some other way, but this - change should get the build back to normal. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - - * runtime/GCActivityCallbackCF.cpp: Make it easier to detect this error - in the future with an explicit error message. - -2010-08-03 Geoffrey Garen <ggaren@apple.com> - - Try to fix Windows build: update .def file. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - -2010-08-03 Nathan Lawrence <nlawrence@apple.com> - - Reviewed by Oliver Hunt. - - https://bugs.webkit.org/show_bug.cgi?id=41318 - GC should reclaim garbage even when new objects are not being allocated rapidly - - Added a callback in JavaScriptCore that gets triggered after an - allocation causes the heap to reset. This is useful for adding a - timer that will trigger garbage collection after the "last" allocation. - - Also needed was to add lock and unlock methods to JSLock that needed - only a JSGlobalData object versus an ExecState object. - - * CMakeLists.txt: - * GNUmakefile.am: - * JavaScriptCore.exp: - * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * jit/JITPropertyAccess.cpp: - (JSC::JIT::emit_op_put_by_val): - * runtime/Collector.cpp: - (JSC::Heap::Heap): - (JSC::Heap::reset): - (JSC::Heap::setActivityCallback): - * runtime/Collector.h: - * runtime/GCActivityCallback.cpp: Added. - (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback): - (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback): - (JSC::DefaultGCActivityCallback::operator()): - * runtime/GCActivityCallback.h: Added. - (JSC::GCActivityCallback::~GCActivityCallback): - (JSC::GCActivityCallback::operator()): - (JSC::GCActivityCallback::GCActivityCallback): - (JSC::DefaultGCActivityCallback::create): - * runtime/GCActivityCallbackCF.cpp: Added. - (JSC::DefaultGCActivityCallbackPlatformData::trigger): - (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback): - (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback): - (JSC::DefaultGCActivityCallback::operator()): + (JSC::JSGlobalData::JSGlobalData): + * runtime/JSGlobalData.h: + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::init): + (JSC::JSGlobalObject::markChildren): + * runtime/JSGlobalObject.h: + (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): + (JSC::JSGlobalObject::globalScopeChain): + * runtime/JSGlobalObjectFunctions.cpp: + (JSC::globalFuncEval): * runtime/JSLock.cpp: - (JSC::JSLock::JSLock): - * runtime/JSLock.h: - -2010-08-02 Kevin Ollivier <kevino@theolliviers.com> - - [wx] Build fix after removal of need to compile ExecutableAllocatorPosix.cpp - - * wscript: - -2010-08-02 Mahesh Kulkarni <mahesh.kulkarni@nokia.com> - - Reviewed by Simon Hausmann. - - [QT] build fix for symbian - https://bugs.webkit.org/show_bug.cgi?id=43234 + * runtime/JSNumberCell.cpp: + * runtime/JSZombie.cpp: + * runtime/MarkedBlock.cpp: + * runtime/MarkedSpace.cpp: + * runtime/PropertyNameArray.cpp: + * runtime/ScopeChain.cpp: + (JSC::ScopeChainNode::print): + (JSC::ScopeChainNode::localDepth): + (JSC::ScopeChainNode::markChildren): + * runtime/ScopeChain.h: + (JSC::ScopeChainNode::ScopeChainNode): + (JSC::ScopeChainNode::createStructure): + (JSC::ScopeChainNode::push): + (JSC::ScopeChainNode::pop): + (JSC::ScopeChainIterator::ScopeChainIterator): + (JSC::ScopeChainIterator::operator*): + (JSC::ScopeChainIterator::operator->): + (JSC::ScopeChainIterator::operator++): + (JSC::ScopeChainNode::begin): + (JSC::ScopeChainNode::end): + (JSC::ExecState::globalData): + (JSC::ExecState::lexicalGlobalObject): + (JSC::ExecState::globalThisValue): + * runtime/ScopeChainMark.h: + * wtf/DateMath.cpp: - 1) wrong order of passing param's - 2) static_cast complains on symbian so using reinterpret_cast +2011-02-27 Adam Barth <abarth@webkit.org> - No new tests added. Just a build fix for qt symbian + Reviewed by Eric Seidel. - * wtf/PageAllocation.cpp: - (WTF::PageAllocation::commit): - (WTF::PageAllocation::decommit): - (WTF::PageAllocation::reserve): + Implement WTF::randomNumber in terms of WTF::cryptographicallyRandomNumber when possible + https://bugs.webkit.org/show_bug.cgi?id=55326 -2010-07-30 Luiz Agostini <luiz.agostini@openbossa.org> + Currently, randomNumber does a bunch of platform-specific work that to + get a cryptographic randomness when available. Instead, we should use + cryptographicallyRandomNumber, which abstracts this work. + Unfortunately, we can't remove all of the WTF::randomNumber + implementation because not every port has access to cryptographically + random numbers. - Reviewed by Simon Fraser. + * wtf/RandomNumber.cpp: + (WTF::randomNumber): - Enabling view modes to all platforms - https://bugs.webkit.org/show_bug.cgi?id=37505 +2011-02-27 Benjamin Poulain <ikipou@gmail.com> - Removing ENABLE_WIDGETS_10_SUPPORT flag. + Reviewed by Darin Adler. - As view mode media feature is not part of widget 1.0 specification - any more the ENABLE_WIDGETS_10_SUPPORT flag may be removed. The only use - of this flag was related to view mode media feature implementation in Qt. + Eliminate DeprecatedPtrList from RenderBlock + https://bugs.webkit.org/show_bug.cgi?id=54972 - * wtf/Platform.h: + Add methods find() and contains() using an adaptor to ListHashSet. + Those method are like the one of HashSet, they allow to find objects + based on a different key than the one used to define the set. -2010-07-30 Andy Estes <aestes@apple.com> + Add convenience methods for direct access to the head and tail of the list. + Those methods are providing similar API/behavior as Vector. - Reviewed by David Kilzer. + * wtf/ListHashSet.h: + (WTF::::first): + (WTF::::last): + (WTF::::removeLast): + (WTF::ListHashSetTranslatorAdapter::hash): + (WTF::ListHashSetTranslatorAdapter::equal): + (WTF::::find): + (WTF::::contains): - Add Xcode support for compiling WebKit against iOS SDKs. - https://bugs.webkit.org/show_bug.cgi?id=42796 +2011-02-26 Patrick Gansterer <paroga@webkit.org> - * Configurations/Base.xcconfig: - * Configurations/DebugRelease.xcconfig: - * Configurations/FeatureDefines.xcconfig: + Reviewed by Andreas Kling. -2010-07-30 Dumitru Daniliuc <dumi@chromium.org> + Add support for DragonFly BSD + https://bugs.webkit.org/show_bug.cgi?id=54407 - Reviewed by Davin Levin. + DragonFly BSD is based on FreeBSD, so handle it like FreeBSD. - Added a yield() function. - https://bugs.webkit.org/show_bug.cgi?id=42843 + * wtf/Platform.h: - * JavaScriptCore.exp: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * wtf/Threading.h: - * wtf/ThreadingPthreads.cpp: - (WTF::yield): - * wtf/ThreadingWin.cpp: - (WTF::yield): - * wtf/gtk/ThreadingGtk.cpp: - (WTF::yield): - * wtf/qt/ThreadingQt.cpp: - (WTF::yield): +2011-02-26 Adam Barth <abarth@webkit.org> -2010-07-30 Rafael Antognolli <antognolli@profusion.mobi> + Reviewed by Dimitri Glazkov. - Reviewed by Antonio Gomes. + JavaScriptCore should use the xcconfig file instead of importing that information into GYP + https://bugs.webkit.org/show_bug.cgi?id=55282 - [EFL] Add library version and soname to EFL generated libraries and binary. - https://bugs.webkit.org/show_bug.cgi?id=43212 + Technically, this breaks the build because I had removed one of the + warnings in this config file, but this change seems like an + improvement. - Add version and soname to libjavascriptcore.so and libwtf.so in case of - linking as shared libraries, and version to jsc executable. + * gyp/JavaScriptCore.gyp: - * CMakeLists.txt: - * jsc/CMakeLists.txt: - * wtf/CMakeLists.txt: +2011-02-26 Thouraya ANDOLSI <thouraya.andolsi@st.com> -2010-07-30 Mahesh Kulkarni <mahesh.kulkarni@nokia.com> + Reviewed by Nikolas Zimmermann. - Reviewed by Simon Hausmann. + SH4 JIT SUPPORT + https://bugs.webkit.org/show_bug.cgi?id=44329 - [QT] build fix for symbian - https://bugs.webkit.org/show_bug.cgi?id=43234 + Provide an ExecutableAllocater::cacheFlush() implementation for + Linux/SH4. - * wtf/PageAllocation.h: - (WTF::PageAllocation::PageAllocation): + * jit/ExecutableAllocator.h: + (JSC::ExecutableAllocator::cacheFlush): -2010-07-29 Sheriff Bot <webkit.review.bot@gmail.com> +2011-02-25 Sheriff Bot <webkit.review.bot@gmail.com> - Unreviewed, rolling out r64313. - http://trac.webkit.org/changeset/64313 - https://bugs.webkit.org/show_bug.cgi?id=43233 + Unreviewed, rolling out r79627. + http://trac.webkit.org/changeset/79627 + https://bugs.webkit.org/show_bug.cgi?id=55274 - Some Chromium bots are not happy with it for some unknown - reason. (Requested by dumi on #webkit). + broke worker tests (Requested by olliej on #webkit). * JavaScriptCore.exp: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * wtf/Threading.h: - * wtf/ThreadingPthreads.cpp: - * wtf/ThreadingWin.cpp: - * wtf/gtk/ThreadingGtk.cpp: - * wtf/qt/ThreadingQt.cpp: - -2010-07-29 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r64302. - http://trac.webkit.org/changeset/64302 - https://bugs.webkit.org/show_bug.cgi?id=43223 - - Assertion is bogus (Requested by olliej on #webkit). - - * assembler/ARMAssembler.cpp: - (JSC::ARMAssembler::executableCopy): - * assembler/AssemblerBuffer.h: - (JSC::AssemblerBuffer::putShortUnchecked): - (JSC::AssemblerBuffer::putIntUnchecked): - (JSC::AssemblerBuffer::putInt64Unchecked): - * jit/JITStubs.cpp: - * pcre/pcre_compile.cpp: - (jsRegExpCompile): - * wtf/FastMalloc.cpp: - (WTF::PageHeapAllocator::New): - (WTF::TCMalloc_Central_FreeList::Populate): - * wtf/MD5.cpp: - (WTF::reverseBytes): - (WTF::MD5::addBytes): - (WTF::MD5::checksum): - * wtf/StdLibExtras.h: - * wtf/Vector.h: - (WTF::VectorBuffer::inlineBuffer): - * wtf/qt/StringQt.cpp: - (WebCore::String::String): - -2010-07-29 Michael Saboff <msaboff@apple.com> - - Reviewed by Gavin Barraclough. - - Changed the handling for removing and adding elements at the front - of an array. The code now keeps a bias that indicates the amount of - JSValue sized holes are prior to the ArrayStorage block. This means - that shift operations are now memmove's of the header part of - the ArrayStorage and unshift operations are similar, but may require a - realloc first to create the space. Similar operations are performed - for special cases of splice and slice. - Also optimized the new Array(size) case so that we don't allocate and - initialize array elements until the JS code starts using elements. - The array growth code is slightly more aggressive for initial growth - based on size growth of any previous array. - - * Configurations/JavaScriptCore.xcconfig: - * jit/JITPropertyAccess.cpp: - (JSC::JIT::emit_op_get_by_val): - (JSC::JIT::emit_op_put_by_val): - (JSC::JIT::privateCompilePatchGetArrayLength): - * jit/JITPropertyAccess32_64.cpp: - (JSC::JIT::emit_op_get_by_val): - (JSC::JIT::emit_op_put_by_val): - (JSC::JIT::privateCompilePatchGetArrayLength): - * runtime/ArrayPrototype.cpp: - (JSC::arrayProtoFuncShift): - (JSC::arrayProtoFuncSplice): - (JSC::arrayProtoFuncUnShift): - * runtime/JSArray.cpp: - (JSC::JSArray::JSArray): - (JSC::JSArray::~JSArray): - (JSC::JSArray::getOwnPropertySlot): - (JSC::JSArray::getOwnPropertyDescriptor): - (JSC::JSArray::put): - (JSC::JSArray::putSlowCase): - (JSC::JSArray::deleteProperty): - (JSC::JSArray::getOwnPropertyNames): - (JSC::JSArray::getNewVectorLength): - (JSC::JSArray::increaseVectorLength): - (JSC::JSArray::increaseVectorPrefixLength): - (JSC::JSArray::setLength): - (JSC::JSArray::pop): - (JSC::JSArray::push): - (JSC::JSArray::shiftCount): - (JSC::JSArray::unshiftCount): - (JSC::JSArray::sortNumeric): - (JSC::JSArray::sort): - (JSC::JSArray::fillArgList): - (JSC::JSArray::copyToRegisters): - (JSC::JSArray::compactForSorting): - (JSC::JSArray::subclassData): - (JSC::JSArray::setSubclassData): - (JSC::JSArray::checkConsistency): - * runtime/JSArray.h: - (JSC::JSArray::length): - (JSC::JSArray::canGetIndex): - (JSC::JSArray::getIndex): - (JSC::JSArray::setIndex): - (JSC::JSArray::uncheckedSetIndex): - (JSC::JSArray::arrayStorage): - (JSC::JSArray::setArrayStorage): - (JSC::JSArray::markChildrenDirect): + * runtime/Heap.cpp: + (JSC::Heap::allocate): + * runtime/Heap.h: + * runtime/JSCell.h: + (JSC::JSCell::JSCell::operator new): + (JSC::JSCell::MarkedSpace::sizeClassFor): + (JSC::JSCell::MarkedSpace::allocate): + * runtime/MarkedBlock.h: + * runtime/MarkedSpace.cpp: + (JSC::MarkedSpace::MarkedSpace): + (JSC::MarkedSpace::allocateBlock): + (JSC::MarkedSpace::reset): + * runtime/MarkedSpace.h: + (JSC::MarkedSpace::SizeClass::SizeClass): -2010-07-29 Michael Saboff <msaboff@apple.com> +2011-02-25 Michael Saboff <msaboff@apple.com> Reviewed by Darin Adler. - Changed MINIMUM_CELL_SIZE to be fixed at 64 bytes. - - * runtime/Collector.h: + Leak in JSParser::Scope of ScopeLabelInfo Vector + https://bugs.webkit.org/show_bug.cgi?id=55249 -2010-07-28 Dumitru Daniliuc <dumi@chromium.org> - - Reviewed by David Levin. + Changed m_labels to be an OwnPtr<>. Added VectorTraits + and Scope copy constructor to support this change. - Added a yield() function. - https://bugs.webkit.org/show_bug.cgi?id=42843 + * parser/JSParser.cpp: + (JSC::JSParser::Scope::~Scope): - * JavaScriptCore.exp: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * wtf/Threading.h: - * wtf/ThreadingPthreads.cpp: - (WTF::yield): - * wtf/ThreadingWin.cpp: - (WTF::yield): - * wtf/gtk/ThreadingGtk.cpp: - (WTF::yield): - * wtf/qt/ThreadingQt.cpp: - (WTF::yield): +2011-02-25 Fumitoshi Ukai <ukai@chromium.org> -2010-07-29 Michael Saboff <msaboff@apple.com> + Reviewed by Adam Barth. - Reviewed by Oliver Hunt. + WebSocket uses insecure random numbers + https://bugs.webkit.org/show_bug.cgi?id=54714 - Fixed issue where RegExp greedy jit code loops when no input is - consumed. Changed the code to only loop if some input was consumed, - but fall through if we successfully match an alternative that - doesn't consume any input. - https://bugs.webkit.org/show_bug.cgi?id=42664 + * JavaScriptCore.exp: Export WTF::cryptographicallyRandomNumber() - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack): +2011-02-25 Patrick Gansterer <paroga@webkit.org> -2010-07-29 Gabor Loki <loki@webkit.org> + Reviewed by Adam Roben. - Reviewed by Gavin Barraclough. + Move timeBeginPeriod into OS(WINDOWS) section + https://bugs.webkit.org/show_bug.cgi?id=55247 - Avoid increasing required alignment of target type warning on ARM - https://bugs.webkit.org/show_bug.cgi?id=38045 + * jsc.cpp: + (main): timeBeginPeriod is available on all Windows versions and not compiler specific. - The reinterpret_cast<Type1*>([pointer to Type2]) expressions - where - sizeof(Type1) > sizeof(Type2) - cause the following warning on ARM: - increases required alignment of target type warnings. - Casting the type of [pointer to Type2] object to void* bypasses the - warning. +2011-02-25 Patrick Gansterer <paroga@webkit.org> - * assembler/ARMAssembler.cpp: - (JSC::ARMAssembler::executableCopy): - * assembler/AssemblerBuffer.h: - (JSC::AssemblerBuffer::putShortUnchecked): - (JSC::AssemblerBuffer::putIntUnchecked): - (JSC::AssemblerBuffer::putInt64Unchecked): - * jit/JITStubs.cpp: - * pcre/pcre_compile.cpp: - (jsRegExpCompile): - * wtf/FastMalloc.cpp: - (WTF::PageHeapAllocator::New): - (WTF::TCMalloc_Central_FreeList::Populate): - * wtf/MD5.cpp: - (WTF::reverseBytes): - (WTF::MD5::addBytes): - (WTF::MD5::checksum): - * wtf/StdLibExtras.h: - (reinterpret_cast_ptr): - * wtf/Vector.h: - (WTF::VectorBuffer::inlineBuffer): - * wtf/qt/StringQt.cpp: - (WebCore::String::String): + Unreviewed WinCE build fix for r79695. -2010-07-29 Martin Robinson <mrobinson@igalia.com> + * jsc.cpp: + (main): SetErrorMode isn't available on WinCE. - Unreviewed build fix. +2011-02-25 Adam Roben <aroben@apple.com> - Include a missing header in the source list to fix 'make dist.' + Work around Cygwin's crash-suppression behavior - * GNUmakefile.am: Include missing header. + Cygwin calls ::SetErrorMode(SEM_FAILCRITICALERRORS), which any processes it launches will + inherit. This is bad for testing/debugging, as it causes the post-mortem debugger not to be + invoked. (Cygwin does this because it makes crashes more UNIX-y.) We reset the error mode + when our test apps launch to work around Cygwin's behavior. -2010-07-28 Gavin Barraclough <barraclough@apple.com> + Fixes <http://webkit.org/b/55222> Test apps crash silently (without invoking post-mortem + debugger) when launched from Cygwin 1.7 Reviewed by Darin Adler. - Bug 43162 - Add support for MADV_FREE to PageAllocation. - - * wtf/PageAllocation.cpp: - (WTF::PageAllocation::commit): - (WTF::PageAllocation::decommit): - -2010-07-27 Kinuko Yasuda <kinuko@chromium.org> - - Reviewed by Ojan Vafai. - - Add FILE_SYSTEM build flag for FileSystem API - https://bugs.webkit.org/show_bug.cgi?id=42915 - - * Configurations/FeatureDefines.xcconfig: - -2010-07-27 Gavin Barraclough <barraclough@apple.com> - - Temporarily rolling out http://trac.webkit.org/changeset/64177, - this seems to give QT ARM/Win a headache (specifically, looks - like structure layour differs, objects get too large - - "..\..\..\JavaScriptCore\runtime\ArrayPrototype.cpp:41:" - "error: size of array 'dummyclass_fits_in_cell' is negative"). - - * jit/JITPropertyAccess.cpp: - (JSC::JIT::emit_op_get_by_val): - (JSC::JIT::emit_op_put_by_val): - (JSC::JIT::privateCompilePatchGetArrayLength): - * jit/JITPropertyAccess32_64.cpp: - (JSC::JIT::emit_op_get_by_val): - (JSC::JIT::emit_op_put_by_val): - (JSC::JIT::privateCompilePatchGetArrayLength): - * runtime/ArrayPrototype.cpp: - (JSC::arrayProtoFuncShift): - (JSC::arrayProtoFuncSplice): - (JSC::arrayProtoFuncUnShift): - * runtime/JSArray.cpp: - (JSC::increasedVectorLength): - (JSC::JSArray::JSArray): - (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::sortNumeric): - (JSC::JSArray::sort): - (JSC::JSArray::fillArgList): - (JSC::JSArray::copyToRegisters): - (JSC::JSArray::compactForSorting): - (JSC::JSArray::subclassData): - (JSC::JSArray::setSubclassData): - (JSC::JSArray::checkConsistency): - * runtime/JSArray.h: - (JSC::JSArray::length): - (JSC::JSArray::canGetIndex): - (JSC::JSArray::getIndex): - (JSC::JSArray::setIndex): - (JSC::JSArray::uncheckedSetIndex): - (JSC::JSArray::markChildrenDirect): - -2010-07-27 Gavin Barraclough <barraclough@apple.com> - - Speculative build fix for Chromium/Win + * API/tests/testapi.c: Added a now-needed #include. + (main): + * jsc.cpp: + (main): + Call ::SetErrorMode(0) to undo Cygwin's folly. - * wtf/Platform.h: + * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Define NOMINMAX like many of our + other projects do so that windows.h won't define min/max macros that interfere with + std::numeric_limits<T>::min/max. -2010-07-27 Gavin Barraclough <barraclough@apple.com> +2011-02-24 Adam Barth <abarth@webkit.org> - Oh! that makes more sense! Maybe C++-style comments are bringing teh bad mojo. + Reviewed by Eric Seidel. - * wtf/Platform.h: + Add GYP project for JavaScriptCore + https://bugs.webkit.org/show_bug.cgi?id=55027 -2010-07-27 Gavin Barraclough <barraclough@apple.com> + Again, this GYP files is very rough, but it succeeds in building + JavaScriptCore. There's a lot more work to do here, especially in the + area of sharing with JavaScriptGlue.gyp. This patch is more of a + checkpoint so that other folks can help out if they wish. - Speculative build fix for GTK/64 ... seems to be barfing on a comment o_O + * gyp: Added. + * gyp/JavaScriptCore.gyp: Added. + * gyp/generate-derived-sources.sh: Added. - * wtf/Platform.h: +2011-02-24 Adam Barth <abarth@webkit.org> -2010-07-27 Michael Saboff <msaboff@apple.com> + Reviewed by Eric Seidel. - Reviewed by Gavin Barraclough. + Add missing files to JavaScriptCore.gypi + https://bugs.webkit.org/show_bug.cgi?id=55193 - Changed the handling for removing and adding elements at the front - of an array. The code now keeps a bias that indicates the amount of - JSValue sized holes are prior to the ArrayStorage block. This means - that shift operations are now memmove's of the header part of - the ArrayStorage and unshift operations are similar, but may require a - realloc first to create the space. Similar operations are performed - for special cases of splice and slice. - Also optimized the new Array(size) case so that we don't allocate and - initialize array elements until the JS code starts using elements. - The array growth code is slightly more aggressive for initial growth - based on size growth of any previous array. - - * Configurations/JavaScriptCore.xcconfig: - * jit/JITPropertyAccess.cpp: - (JSC::JIT::emit_op_get_by_val): - (JSC::JIT::emit_op_put_by_val): - (JSC::JIT::privateCompilePatchGetArrayLength): - * jit/JITPropertyAccess32_64.cpp: - (JSC::JIT::emit_op_get_by_val): - (JSC::JIT::emit_op_put_by_val): - (JSC::JIT::privateCompilePatchGetArrayLength): - * runtime/ArrayPrototype.cpp: - (JSC::arrayProtoFuncShift): - (JSC::arrayProtoFuncSplice): - (JSC::arrayProtoFuncUnShift): - * runtime/JSArray.cpp: - (JSC::JSArray::JSArray): - (JSC::JSArray::~JSArray): - (JSC::JSArray::getOwnPropertySlot): - (JSC::JSArray::getOwnPropertyDescriptor): - (JSC::JSArray::put): - (JSC::JSArray::putSlowCase): - (JSC::JSArray::deleteProperty): - (JSC::JSArray::getOwnPropertyNames): - (JSC::JSArray::getNewVectorLength): - (JSC::JSArray::increaseVectorLength): - (JSC::JSArray::increaseVectorPrefixLength): - (JSC::JSArray::setLength): - (JSC::JSArray::pop): - (JSC::JSArray::push): - (JSC::JSArray::shiftCount): - (JSC::JSArray::unshiftCount): - (JSC::JSArray::sortNumeric): - (JSC::JSArray::sort): - (JSC::JSArray::fillArgList): - (JSC::JSArray::copyToRegisters): - (JSC::JSArray::compactForSorting): - (JSC::JSArray::subclassData): - (JSC::JSArray::setSubclassData): - (JSC::JSArray::checkConsistency): - * runtime/JSArray.h: - (JSC::JSArray::length): - (JSC::JSArray::canGetIndex): - (JSC::JSArray::getIndex): - (JSC::JSArray::setIndex): - (JSC::JSArray::uncheckedSetIndex): - (JSC::JSArray::arrayStorage): - (JSC::JSArray::setArrayStorage): - (JSC::JSArray::markChildrenDirect): + I forgot to add mm files in my previous patch. -2010-07-27 Gavin Barraclough <barraclough@apple.com> + * JavaScriptCore.gyp/JavaScriptCore.gyp: + * JavaScriptCore.gypi: - Reviewed by Oliver Hunt. +2011-02-24 Adam Barth <abarth@webkit.org> - Bug 43089 - Cleanup JIT related switched in Platform.h + Reviewed by Eric Seidel. - The code the enable to JIT checks every permutation of platform & OS individually, but - now the JIT is enabled on the majority much all x86/x86-64/ARM/MIPS systems. It should - be cleaner to just enable by default on these platforms, and explicitly disable on configs - that don't aren't supported. + Remove unused parameter name in GCActivityCallback.cpp + https://bugs.webkit.org/show_bug.cgi?id=55194 - Also, rename ENABLE_JIT_OPTIMIZE_MOD to ENABLE_JIT_USE_SOFT_MODULO. I always find this - confusing since enabling this "optimization" would be possible, but would be a regression - on x86/x86-64 systems! I think it's clearer to reserve "JIT_OPTIMIZE" for compiler - technologies applicable to all platforms, and make a more optional behaviour like this a - "USE". + This change is not strictly required for the GYP-based build system, + but I noticed this error when working on the new build system. - * jit/ExecutableAllocator.h: - (JSC::ExecutableAllocator::cacheFlush): - * jit/JIT.h: - * jit/JITArithmetic.cpp: - (JSC::JIT::emit_op_mod): - (JSC::JIT::emitSlow_op_mod): - * jit/JITArithmetic32_64.cpp: - (JSC::JIT::emit_op_mod): - (JSC::JIT::emitSlow_op_mod): - * jit/JITOpcodes.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - * wtf/Platform.h: + * runtime/GCActivityCallback.cpp: + (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback): -2010-07-27 James Robinson <jamesr@chromium.org> +2011-02-24 James Robinson <jamesr@chromium.org> Reviewed by Darin Fisher. - [chromium] Make PLATFORM(CHROMIUM) and not OS(MAC) turn USE(GLES2_RENDERING) on - https://bugs.webkit.org/show_bug.cgi?id=43084 + Add a USE() macro to control use of the built-in UTF8 codec + https://bugs.webkit.org/show_bug.cgi?id=55189 - This turns USE(GLES2_RENDERING) on for chromium on windows/linux. This causes no - change in behavior, that's all controlled by ENABLE() macros that are currently off. + Defaults USE(BUILTIN_UTF8_CODEC) to true for all platforms except chromium, which controls the flag via features.gypi. * wtf/Platform.h: -2010-07-23 Helder Correia <heldercorreia@codeaurora.org> - - Reviewed by Darin Adler. - - Canvas tests 2d.imageData.object.round and 2d.imageData.object.wrap are - failing. For canvas image data manipulation, the values passed should - be truncated and wrapped. Also fix the canvas-ImageData-behaviour test - to expect wrapping rather than clamping, and add some new checkings. - https://bugs.webkit.org/show_bug.cgi?id=40272 - - * runtime/JSByteArray.h: - (JSC::JSByteArray::setIndex): - (JSC::JSByteArray::JSByteArray): - -2010-07-27 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Bug 42621 - Add a bump allocator for the YARR interpreter - - The regex engine requires lifo allocation, however currently uses the general purpose - malloc/free memory allocation. A simple bump pointer allocator should provide a lower - overhead allocation solution. - - When using YARR interpreter, 15% progression on v8-regex. - - * JavaScriptCore.xcodeproj/project.pbxproj: - * runtime/JSGlobalData.h: - * runtime/RegExp.cpp: - (JSC::RegExp::compile): - * wtf/BumpPointerAllocator.h: Added. - (WTF::BumpPointerPool::ensureCapacity): - (WTF::BumpPointerPool::alloc): - (WTF::BumpPointerPool::dealloc): - (WTF::BumpPointerPool::operator new): - (WTF::BumpPointerPool::BumpPointerPool): - (WTF::BumpPointerPool::create): - (WTF::BumpPointerPool::shrink): - (WTF::BumpPointerPool::destroy): - (WTF::BumpPointerPool::ensureCapacityCrossPool): - (WTF::BumpPointerPool::deallocCrossPool): - (WTF::BumpPointerAllocator::BumpPointerAllocator): - (WTF::BumpPointerAllocator::~BumpPointerAllocator): - (WTF::BumpPointerAllocator::startAllocator): - (WTF::BumpPointerAllocator::stopAllocator): - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::Interpreter::allocDisjunctionContext): - (JSC::Yarr::Interpreter::freeDisjunctionContext): - (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext): - (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext): - (JSC::Yarr::Interpreter::interpret): - (JSC::Yarr::Interpreter::Interpreter): - (JSC::Yarr::ByteCompiler::compile): - (JSC::Yarr::byteCompileRegex): - * yarr/RegexInterpreter.h: - (JSC::Yarr::BytecodePattern::BytecodePattern): - -2010-07-26 Gavin Barraclough <barraclough@apple.com> - - Windows build fix from Chromium/GTK build fix! - - * wtf/PageAllocation.cpp: - -2010-07-26 Gavin Barraclough <barraclough@apple.com> - - Chromium/GTK build fix - - * wtf/PageAllocation.cpp: - -2010-07-26 Gavin Barraclough <barraclough@apple.com> - - Build fix for !Mac platforms. - - * Android.mk: - * CMakeLists.txt: - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - -2010-07-26 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Bug 43009 - Abstract out page allocation from executable allocators - - It would be great to have a single platform abstraction for block allocation, rather than copy/paste code. - - In this initial implementation I've made Symbian fall back to use malloc/free for non-executable memory. - I think this will match current behaviour for the next client we will want to port across (RegisterFile & - Collector). - - * CMakeListsEfl.txt: - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * jit/ExecutableAllocator.cpp: - (JSC::ExecutableAllocator::intializePageSize): - (JSC::ExecutablePool::systemAlloc): - (JSC::ExecutablePool::systemRelease): - (JSC::ExecutableAllocator::isValid): - * jit/ExecutableAllocator.h: - (JSC::ExecutablePool::ExecutablePool): - (JSC::ExecutablePool::poolAllocate): - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::FixedVMPoolAllocator::release): - (JSC::FixedVMPoolAllocator::reuse): - (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): - (JSC::FixedVMPoolAllocator::alloc): - (JSC::FixedVMPoolAllocator::free): - (JSC::FixedVMPoolAllocator::isValid): - (JSC::FixedVMPoolAllocator::isWithinVMPool): - (JSC::ExecutablePool::systemAlloc): - (JSC::ExecutablePool::systemRelease): - * jit/ExecutableAllocatorPosix.cpp: Removed. - * jit/ExecutableAllocatorSymbian.cpp: Removed. - * jit/ExecutableAllocatorWin.cpp: Removed. - * wscript: - * wtf/PageAllocator.cpp: Added. - (WTF::protection): - (WTF::PageAllocation::commit): - (WTF::PageAllocation::decommit): - (WTF::PageAllocator::allocate): - (WTF::PageAllocator::reserve): - (WTF::PageAllocator::deallocate): - (WTF::PageAllocator::pagesize): - * wtf/PageAllocator.h: Added. - (WTF::PageAllocation::PageAllocation): - (WTF::PageAllocation::base): - (WTF::PageAllocation::size): - (WTF::PageAllocation::chunk): - (WTF::PageAllocation::operator!): - (WTF::PageAllocator::): - -2010-07-26 Gavin Barraclough <barraclough@apple.com> - - Rolling out r64097:64100, oops, more b0rked than I relized by my last changes, sorry! - - * CMakeListsEfl.txt: - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * jit/ExecutableAllocator.cpp: - (JSC::ExecutableAllocator::reprotectRegion): - (JSC::ExecutableAllocator::cacheFlush): - * jit/ExecutableAllocator.h: - (JSC::ExecutablePool::ExecutablePool): - (JSC::ExecutablePool::poolAllocate): - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::FixedVMPoolAllocator::release): - (JSC::FixedVMPoolAllocator::reuse): - (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): - (JSC::FixedVMPoolAllocator::alloc): - (JSC::FixedVMPoolAllocator::free): - (JSC::FixedVMPoolAllocator::isValid): - (JSC::FixedVMPoolAllocator::isWithinVMPool): - (JSC::ExecutablePool::systemAlloc): - (JSC::ExecutablePool::systemRelease): - * jit/ExecutableAllocatorPosix.cpp: Added. - (JSC::ExecutableAllocator::intializePageSize): - (JSC::ExecutablePool::systemAlloc): - (JSC::ExecutablePool::systemRelease): - (JSC::ExecutableAllocator::isValid): - * jit/ExecutableAllocatorSymbian.cpp: Added. - (JSC::ExecutableAllocator::intializePageSize): - (JSC::ExecutablePool::systemAlloc): - (JSC::ExecutablePool::systemRelease): - (JSC::ExecutableAllocator::isValid): - * jit/ExecutableAllocatorWin.cpp: Added. - (JSC::ExecutableAllocator::intializePageSize): - (JSC::ExecutablePool::systemAlloc): - (JSC::ExecutablePool::systemRelease): - (JSC::ExecutableAllocator::isValid): - * wscript: - * wtf/PageAllocation.cpp: Removed. - * wtf/PageAllocation.h: Removed. - -2010-07-26 Gavin Barraclough <barraclough@apple.com> - - Speculative !debug build fix II. - - * wtf/PageAllocation.h: - (WTF::PageAllocation::PageAllocation): - -2010-07-26 Gavin Barraclough <barraclough@apple.com> - - Speculative !debug build fix. - - * wtf/PageAllocation.h: - (WTF::PageAllocation::PageAllocation): - -2010-07-26 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Bug 43009 - Abstract out page allocation from executable allocators - - It would be great to have a single platform abstraction for block allocation, rather than copy/paste code. - - In this initial implementation I've made Symbian fall back to use malloc/free for non-executable memory. - I think this will match current behaviour for the next client we will want to port across (RegisterFile & - Collector). - - * CMakeListsEfl.txt: - * GNUmakefile.am: - * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * jit/ExecutableAllocator.cpp: - (JSC::ExecutableAllocator::intializePageSize): - (JSC::ExecutablePool::systemAlloc): - (JSC::ExecutablePool::systemRelease): - (JSC::ExecutableAllocator::isValid): - * jit/ExecutableAllocator.h: - (JSC::ExecutablePool::ExecutablePool): - (JSC::ExecutablePool::poolAllocate): - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::FixedVMPoolAllocator::release): - (JSC::FixedVMPoolAllocator::reuse): - (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): - (JSC::FixedVMPoolAllocator::alloc): - (JSC::FixedVMPoolAllocator::free): - (JSC::FixedVMPoolAllocator::isValid): - (JSC::FixedVMPoolAllocator::isWithinVMPool): - (JSC::ExecutablePool::systemAlloc): - (JSC::ExecutablePool::systemRelease): - * jit/ExecutableAllocatorPosix.cpp: Removed. - * jit/ExecutableAllocatorSymbian.cpp: Removed. - * jit/ExecutableAllocatorWin.cpp: Removed. - * wscript: - * wtf/PageAllocator.cpp: Added. - (WTF::protection): - (WTF::PageAllocation::commit): - (WTF::PageAllocation::decommit): - (WTF::PageAllocator::allocate): - (WTF::PageAllocator::reserve): - (WTF::PageAllocator::deallocate): - (WTF::PageAllocator::pagesize): - * wtf/PageAllocator.h: Added. - (WTF::PageAllocation::PageAllocation): - (WTF::PageAllocation::base): - (WTF::PageAllocation::size): - (WTF::PageAllocation::chunk): - (WTF::PageAllocation::operator!): - (WTF::PageAllocator::): - -2009-10-30 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> - - Reviewed by Kenneth Rohde Christiansen. - - [Qt] Use the default timeout interval for JS as the HTML tokenizer delay for setHtml() - - This ensures that long-running JavaScript (for example due to a modal alert() dialog), - will not trigger a deferred load after only 500ms (the default tokenizer delay) while - still giving a reasonable timeout (10 seconds) to prevent deadlock. - - https://bugs.webkit.org/show_bug.cgi?id=29381 - - * runtime/TimeoutChecker.h: Add getter for the timeout interval - -2010-07-25 Patrick Gansterer <paroga@paroga.com> - - Reviewed by Kent Tamura. - - [WINCE] Buildfix for JSC in release mode - https://bugs.webkit.org/show_bug.cgi?id=42934 - - * jsc.cpp: Don't use __try on WinCE. - -2010-07-24 Patrick Gansterer <paroga@paroga.com> - - Reviewed by Darin Adler. - - [MSVC] Ensure 4 byte alignment on ARM - https://bugs.webkit.org/show_bug.cgi?id=42935 - - * jit/JITStubs.h: Added #pragma pack(4) around JITStackFrame. - -2010-07-24 Patrick Gansterer <paroga@paroga.com> +2011-02-24 Geoffrey Garen <ggaren@apple.com> Reviewed by Darin Adler. - [WINCE] Cleanup defines in Platform.h - https://bugs.webkit.org/show_bug.cgi?id=42933 - - * wtf/Platform.h: - -2010-07-23 Rafael Antognolli <antognolli@profusion.mobi> - - Reviewed by Antonio Gomes. - - [EFL] Cleanup glib support (make it optional) - https://bugs.webkit.org/show_bug.cgi?id=42480 - - Remove gobject/GRefPtr.cpp if not using soup/glib. - - * wtf/CMakeListsEfl.txt: - -2010-07-23 Patrick Gansterer <paroga@paroga.com> - - Reviewed by Adam Roben. - - [WINCE] Implement TCSpinLock. - https://bugs.webkit.org/show_bug.cgi?id=41792 - - Implement the SpinLock with InterlockedExchange from the Windows API. - - * wtf/TCSpinLock.h: - (TCMalloc_SpinLock::Lock): - (TCMalloc_SpinLock::Unlock): - (TCMalloc_SpinLock::IsHeld): - (TCMalloc_SpinLock::Init): - (TCMalloc_SlowLock): - -2010-07-22 Csaba Osztrogonác <ossy@webkit.org> - - Unreviewed rolling out r63947 and r63948, because they broke Qt Windows build. - - * jit/JITStubs.cpp: - * jit/JITStubs.h: - -2010-07-22 Gavin Barraclough <barraclough@apple.com> - - Eeeep! r63947 hosed all non-x86 builds! - - * jit/JITStubs.h: - -2010-07-22 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Bug 42818 - [Qt] REGRESSION(63348): jsc is broken - Speculative fix, need fastcall conventions on Qt/Win. - - * jit/JITStubs.cpp: - * jit/JITStubs.h: - -2010-07-22 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - Do more constant folding - https://bugs.webkit.org/show_bug.cgi?id=42867 - - Constant fold a few more operations. SunSpider says this is - a win but I suspect that's just code motion at play. - - * parser/ASTBuilder.h: - (JSC::ASTBuilder::makeModNode): - (JSC::ASTBuilder::makeURightShiftNode): - (JSC::ASTBuilder::makeBitOrNode): - (JSC::ASTBuilder::makeBitAndNode): - (JSC::ASTBuilder::makeBitXOrNode): - (JSC::ASTBuilder::makeBinaryNode): - -2010-07-22 Kent Hansen <kent.hansen@nokia.com> - - Reviewed by Kent Tamura. - - Error properties of the Global Object are missing the DontEnum attribute - https://bugs.webkit.org/show_bug.cgi?id=28771 - - Add the attributes to become spec compliant. - - * runtime/JSGlobalObject.cpp: - (JSC::JSGlobalObject::reset): - -2010-07-20 Steve Falkenburg <sfalken@apple.com> - - Reviewed by Adam Roben. - - WebKit on Windows should build optionally with an unversioned ICU DLL - https://bugs.webkit.org/show_bug.cgi?id=42722 - <rdar://problem/8211743> JavaScriptCore needs to link against unversioned ICU - - Dynamically create a new header, ICUVersion.h, as part of build-generated-files.sh. - Header contains a preprocessor define (U_DISABLE_RENAMING) indicating to ICU whether the ICU API - should be namespaced with the current ICU version number. Proper value is determined - by checking for the presence of libicuuc.lib, the unversioned copy of ICU. + Variable-sized allocation (but still capped at 64 bytes) + https://bugs.webkit.org/show_bug.cgi?id=55159 - To get the proper value for U_DISABLE_RENAMING into all source files, we force - the include of ICUVersion.h (our generated header) via the compiler options. - - Since the versioned and unversioned ICU have different filenames (libicuuc.lib vs icuuc.lib) - we copy the ICU lib to an intermediate location under obj with a common name. This - allows us to link properly with either without adding a new build configuration. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: - Copy ICU libs into a common location with a common name. - Add additional library search path to pick up icu lib. - Change ICU library filename specified to linker. - Add forced include of ICUVersion.h. - * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Generate ICUVersion.h - * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: Add forced include of ICUVersion.h. - * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: - Copy ICU libs into a common location with a common name. - Add additional library search path to pick up icu lib. - Change ICU library filename specified to linker. - Add forced include of ICUVersion.h. - * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: - Copy ICU libs into a common location with a common name. - Add additional library search path to pick up icu lib. - Change ICU library filename specified to linker. - Add forced include of ICUVersion.h. - -2010-07-20 Steve Falkenburg <sfalken@apple.com> - - Re-save vsprops files after no-op edits in Visual Studio - to fix manual edit issues. - -2010-07-20 Mahesh Kulkarni <mahesh.kulkarni@nokia.com> - - Reviewed by Steve Block. - - Need to be able to configure Geolocation policy regarding user permissions - https://bugs.webkit.org/show_bug.cgi?id=42068 + SunSpider reports no change. - If CLIENT_BASED_GEOLOCATION is enabled, enable preemtive permission policy - by default + * JavaScriptCore.exp: Some day, I hope not to have to edit this file. - * wtf/Platform.h: + * runtime/Heap.cpp: + (JSC::Heap::allocateSlowCase): Split allocation into a fast and slow + case, so the fast case can inline size class selection and turn it into + a compile-time constant. -2010-07-20 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r63742. - http://trac.webkit.org/changeset/63742 - https://bugs.webkit.org/show_bug.cgi?id=42641 - - Broke Leopard Intel build. (Requested by bbandix on #webkit). - - * wtf/Platform.h: - -2010-07-20 Mahesh Kulkarni <mahesh.kulkarni@nokia.com> - - Reviewed by Steve Block. + Changed the collect-on-every allocation debugging switch to collect only + on every slow allocation, so you can still flip the switch without + recompiling the world. This may also be preferable for debugging purposes, + since collecting after every single allocation can be unusably slow, + and can mask problems by running destructors early. - Need to be able to configure Geolocation policy regarding user permissions - https://bugs.webkit.org/show_bug.cgi?id=42068 + * runtime/Heap.h: Ditto. - If CLIENT_BASED_GEOLOCATION is enabled, enable preemtive permission policy - by default - - * wtf/Platform.h: + * runtime/JSCell.h: + (JSC::JSCell::MarkedSpace::sizeClassFor): + (JSC::JSCell::Heap::allocate): + (JSC::JSCell::JSCell::operator new): The inlining mentioned above. + + * runtime/MarkedBlock.h: Dropped the block size from 256KB to 16KB. With + multiple size classes, allocating a full 256KB for the first allocation + in a given class can be pathologically wasteful. (8KB, or 4KB Mac and + 8KB Windows, would be even better, but that seems to be a peformance + regression for now.) -2010-07-19 Dirk Schulze <krit@webkit.org> - - Reviewed by Nikolas Zimmermann. - - SVG CleanUp of SVGPathData parsing - https://bugs.webkit.org/show_bug.cgi?id=41410 - - Added piOverTwo to MathExtras. - - * wtf/MathExtras.h: - -2010-07-19 Mike Moretti <mike.moretti@nokia.com> - - Reviewed by Laszlo Gombos. - - [Symbian] Build fix after r63404. - - Implement isValid() function for the Symbian executable allocator. - - * jit/ExecutableAllocatorSymbian.cpp: - (JSC::ExecutableAllocator::isValid): - -2010-07-19 Chris Marrin <cmarrin@apple.com> - - Reviewed by Darin Adler. - - https://bugs.webkit.org/show_bug.cgi?id=42118 - Disable WebGL on Leopard for now. - - LayoutTests fail on some graphics hardware on Leopard because one of the features we use, - GL_ARB_framebuffer_object, is not universally available in Leopard like it is in - SnowLeopard. This will allow LayoutTests to pass on Leopard until we add logic to use a - software OpenGL driver on machines without this support. - - * Configurations/FeatureDefines.xcconfig: - -2010-07-16 Darin Adler <darin@apple.com> - - Reviewed by Sam Weinig. - - Use OwnPtr for CodeBlock objects - https://bugs.webkit.org/show_bug.cgi?id=42490 - - * runtime/Executable.cpp: - (JSC::EvalExecutable::EvalExecutable): Moved this here and made it non-inline. - Eliminated the code that used to initialize the raw pointer since it's now - an OwnPtr. - (JSC::EvalExecutable::~EvalExecutable): Removed the explicit delete here. - (JSC::ProgramExecutable::ProgramExecutable): Ditto. - (JSC::ProgramExecutable::~ProgramExecutable): Ditto. - (JSC::FunctionExecutable::FunctionExecutable): Ditto. - (JSC::FunctionExecutable::~FunctionExecutable): Ditto. - (JSC::EvalExecutable::compileInternal): Added use of adoptPtr and get. - (JSC::ProgramExecutable::compileInternal): Ditto. - (JSC::FunctionExecutable::compileForCallInternal): Ditto. - (JSC::FunctionExecutable::compileForConstructInternal): Ditto. - (JSC::FunctionExecutable::recompile): Use clear instead of delete followed - by assignment of 0. - - * runtime/Executable.h: Moved constructors to the cpp file and changed - raw pointers to OwnPtr. - -2010-07-19 Lucas De Marchi <lucas.demarchi@profusion.mobi> - - Reviewed by Kenneth Rohde Christiansen. - - [EFL] Fix build on 64-bit systems. According to - JavaScriptCore/wtf/Platform.h, x86_64 uses fixed allocator, which - needs jit/ExecutableAllocatorFixedVMPool.cpp to be included in build - system. - https://bugs.webkit.org/show_bug.cgi?id=42559 - - * CMakeListsEfl.txt: add missing file for x86_64. - -2010-07-16 Leandro Pereira <leandro@profusion.mobi> - - [EFL] Unreviewed build system cleanup. - - Move ExecutableAllocator{FixedVMPool,Posix,Symbian,Win}.cpp from - root CMakeLists.txt to the platform CMakeLists.txt. + * runtime/MarkedSpace.cpp: + (JSC::MarkedSpace::MarkedSpace): + (JSC::MarkedSpace::allocateBlock): + (JSC::MarkedSpace::reset): There's more than one size class now, and its + cell size is not constant. - * CMakeLists.txt: - * CMakeListsEfl.txt: Add ExecutableAllocatorPosix.cpp. + * runtime/MarkedSpace.h: + (JSC::MarkedSpace::SizeClass::SizeClass): Ditto. -2010-07-16 Oliver Hunt <oliver@apple.com> +2011-02-23 Oliver Hunt <oliver@apple.com> Reviewed by Geoffrey Garen. - ES5 allows use of reserved words as IdentifierName - https://bugs.webkit.org/show_bug.cgi?id=42471 - - Modify the lexer to allow us to avoid identifying reserved - words in those contexts where they are valid identifiers, and - we know it's safe. Additionally tag the reserved word tokens - so we can easily identify them in those cases where we can't - guarantee that we've skipped reserved word identification. - - * parser/JSParser.cpp: - (JSC::JSParser::next): - (JSC::JSParser::parseProperty): - (JSC::JSParser::parseMemberExpression): - * parser/JSParser.h: - (JSC::): - * parser/Lexer.cpp: - (JSC::Lexer::lex): - * parser/Lexer.h: - (JSC::Lexer::): - -2010-07-16 Anders Carlsson <andersca@apple.com> - - Reviewed by Sam Weinig. - - clang++ build fixes for JavaScriptCore and WebCore - https://bugs.webkit.org/show_bug.cgi?id=42478 + Make WeakGCMap use new handle infrastructure + https://bugs.webkit.org/show_bug.cgi?id=55100 - * runtime/RegExpKey.h: - (JSC::operator==): - Move the RegExpKey equals operator into the JSC namespace so it can be found by ADL. - -2010-07-16 Anders Carlsson <andersca@apple.com> - - Reviewed by David Levin. + Remove old WeakGCMap implementation and move over to new handle + based logic. - Really add WARN_UNUSED_RESULT to leakRef - https://bugs.webkit.org/show_bug.cgi?id=42464 + This has a number of benefits, most notably it makes a WeakGCMap + always reflect the true state of the world by as all entries are + removed at the first gc cycle that makes them dead. This allows + us to get rid of code in a wide variety of objects where the only + purpose was to remove themselves from maps. - * wtf/PassRefPtr.h: - (WTF::PassRefPtr::): - (WTF::NonNullPassRefPtr::): - Put the WARN_UNUSED_RESULT attribute at the right place. - - * wtf/RetainPtr.h: - (WTF::RetainPtr::releaseRef): - Remove WARN_UNUSED_RESULT here for now, it leads to two warnings that need - to be fixed first. - -2010-07-15 Victor Wang <victorw@chromium.org> - - Reviewed by David Levin. - - [Chromium] Disable c4291 for chromium windows multi dll build. - - https://bugs.webkit.org/show_bug.cgi?id=42177 - - * JavaScriptCore.gyp/JavaScriptCore.gyp: - -2010-07-15 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Maciej Stachowiak. - - Crash entering mail.yahoo.com - https://bugs.webkit.org/show_bug.cgi?id=42394 - - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::argumentNumberFor): Added a NULL check. If the - identifier we're resolving is not a local variable, registerFor returns - NULL. - - * bytecompiler/NodesCodegen.cpp: - (JSC::FunctionBodyNode::emitBytecode): Unrelated to the crash, but I - noticed this while working on it: No need to NULL-check returnNode, - since an early return has already done so. - -2010-07-15 Martin Robinson <mrobinson@igalia.com> - - Reviewed by Oliver Hunt. - - [GTK] Simplify the distribution step - https://bugs.webkit.org/show_bug.cgi?id=42414 - - * GNUmakefile.am: Add extra dist files directly to EXTRA_DIST instead - of adding them by proxy via javascriptcore_dist. Sort the EXTRA_DIST list. - Refer to create_hash_table and create_regexp_tables directly, as is the - behavior with other code generation scripts. - -2010-07-15 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoff Garen. - - Fix dumping of op_put_by_id. - - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::printPutByIdOp): - -2010-07-15 Zoltan Herczeg <zherczeg@webkit.org> - - Reviewed by Darin Adler. - - Refactoring some parts of the lexer - https://bugs.webkit.org/show_bug.cgi?id=41845 - - This patch is a precursor of refactoring the identifier - parsing, which currently slows down the lexer, and not - ready for landing. This patch contains those sources, - which does not slow down the lexer (mainly style changes). - - SunSpider: no change (529.4ms to 528.7ms) - --parse-only: no change (31.0ms to 31.2ms) - - * parser/Lexer.cpp: - (JSC::isIdentStart): using typesOfASCIICharacters to determine - whether the current character is in identifier start - (JSC::isIdentPart): using typesOfASCIICharacters to determine - whether the current character is in identifier part - (JSC::Lexer::parseString): style fix - (JSC::Lexer::lex): removing the else after the main which - which reduces code duplication - -2010-07-15 Mark Rowe <mrowe@apple.com> - - Update the sorting in the Xcode project files. - - * JavaScriptCore.xcodeproj/project.pbxproj: - -2010-07-14 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. + It also means that we no longer need to have special "unchecked" + versions of any functions on WeakGCMap. Alas in order to maintain + compatibility with the JSWeakObjectMapClear API it is still + necessary to have an api that resembles uncheckedRemove, this is + now deprecatedRemove and will be dealt with in a later patch. - Make sure that mixed interpreter/jit builds don't try to use the jit if the allocator fails - https://bugs.webkit.org/show_bug.cgi?id=42310 + In order to get correct semantics in WeakGCMap we need more + contextual information in the finalizer, so we've added an + abstract class based finaliser and a context parameter to the + calls. - Add some null checks to deal with the Fixed VM allocator failing - to get the requested executable region, delay the creation of the - JITStubs in JSGlobalData until after we know whether we're using - the JIT. + The new an improved WeakGCMap also results in sigificantly more + churn in the weak handle lists so exposed some potential problems + during the post mark phase which have been rectified as well. - * jit/ExecutableAllocator.h: - (JSC::ExecutableAllocator::ExecutableAllocator): - (JSC::ExecutableAllocator::poolForSize): - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): - (JSC::FixedVMPoolAllocator::alloc): - (JSC::FixedVMPoolAllocator::free): - (JSC::FixedVMPoolAllocator::isValid): - (JSC::ExecutableAllocator::isValid): - (JSC::ExecutablePool::systemAlloc): - (JSC::ExecutablePool::systemRelease): - * jit/ExecutableAllocatorPosix.cpp: - (JSC::ExecutableAllocator::isValid): - * jit/ExecutableAllocatorWin.cpp: - (JSC::ExecutableAllocator::isValid): - * jit/JIT.cpp: - (JSC::JIT::linkCall): - (JSC::JIT::linkConstruct): - * jit/JIT.h: - (JSC::JIT::compileCTIMachineTrampolines): - (JSC::JIT::compileCTINativeCall): - * jit/JITArithmetic.cpp: - (JSC::JIT::emit_op_mod): - * jit/JITArithmetic32_64.cpp: - (JSC::JIT::emit_op_mod): - * jit/JITCall.cpp: - (JSC::JIT::compileOpCallVarargs): - (JSC::JIT::compileOpCall): - (JSC::JIT::compileOpCallSlowCase): - * jit/JITCall32_64.cpp: - (JSC::JIT::compileOpCallVarargs): - (JSC::JIT::compileOpCall): - (JSC::JIT::compileOpCallSlowCase): - * jit/JITOpcodes.cpp: - (JSC::JIT::privateCompileCTINativeCall): - * jit/JITStubs.cpp: - (JSC::JITThunks::JITThunks): - (JSC::JITThunks::tryCacheGetByID): - (JSC::JITThunks::hostFunctionStub): - * jit/ThunkGenerators.cpp: - (JSC::charCodeAtThunkGenerator): - (JSC::charAtThunkGenerator): - (JSC::fromCharCodeThunkGenerator): - (JSC::sqrtThunkGenerator): - (JSC::powThunkGenerator): - * runtime/Executable.h: - (JSC::NativeExecutable::create): + * API/JSWeakObjectMapRefPrivate.cpp: + * API/JSWeakObjectMapRefPrivate.h: + * runtime/Heap.cpp: + (JSC::Heap::globalObjectCount): + (JSC::Heap::protectedGlobalObjectCount): * runtime/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData): - (JSC::JSGlobalData::getHostFunction): * runtime/JSGlobalData.h: - (JSC::JSGlobalData::getCTIStub): - * yarr/RegexJIT.cpp: - (JSC::Yarr::jitCompileRegex): - -2010-07-14 Gavin Barraclough <barraclough@apple.com> - - Speculative Qt/Windows build fix. - - * jit/JITStubs.h: - -2010-07-14 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - https://bugs.webkit.org/show_bug.cgi?id=42280 - JIT_STUB_ARGUMENT_VA_LIST is only slowing us down! Remove it! - - * jit/JIT.h: - * jit/JITInlineMethods.h: - (JSC::JIT::restoreArgumentReferenceForTrampoline): - * jit/JITStubs.cpp: - * jit/JITStubs.h: - * wtf/Platform.h: - -2010-07-14 Oliver Hunt <oliver@apple.com> - - RS=Geoff Garen. - - Guard the CF path of interpreter vs. jit selection with PLATFORM(CF) - - This allows the code to work on windows as well. Also unifies the - environment variable with the preference name. - - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::JSGlobalData): - -2010-07-14 Oliver Hunt <oliver@apple.com> - - Reviewed by Don Melton. - - Crash when trying to enable JIT and Interpreter in a single build. - - CFPreferences code added at the last minute failed to account for - the preference not being present and then attempted to CFRelease - a null value. - - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::JSGlobalData): - -2010-07-14 Zoltan Herczeg <zherczeg@webkit.org> - - Reviewed by Darin Adler. - - Change indentations in the lexer - https://bugs.webkit.org/show_bug.cgi?id=41845 - - This patch fixes an old, indentation error comes from kjs, - as webkit has a different style rule for switches, and change - the indentation of the main switch, which is a temporary - style error. This change makes easier to see the behavioural - changes in the follow-up patch. - - No behavioural changes. - - * parser/Lexer.cpp: - (JSC::singleEscape): - (JSC::Lexer::lex): - -2010-07-13 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r63262. - http://trac.webkit.org/changeset/63262 - https://bugs.webkit.org/show_bug.cgi?id=42229 - - broke Windows compile (Requested by bweinstein on #webkit). - - * API/tests/testapi.c: - (assertEqualsAsCharactersPtr): - (main): - * testapi.pro: Removed. + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::~JSGlobalObject): + (JSC::JSGlobalObject::init): + * runtime/WeakGCMap.h: + (JSC::WeakGCMap::iterator::iterator): + (JSC::WeakGCMap::iterator::get): + (JSC::WeakGCMap::iterator::getSlot): + (JSC::WeakGCMap::iterator::operator++): + (JSC::WeakGCMap::iterator::operator==): + (JSC::WeakGCMap::iterator::operator!=): + (JSC::WeakGCMap::WeakGCMap): + (JSC::WeakGCMap::isEmpty): + (JSC::WeakGCMap::clear): + (JSC::WeakGCMap::get): + (JSC::WeakGCMap::getSlot): + (JSC::WeakGCMap::set): + (JSC::WeakGCMap::take): + (JSC::WeakGCMap::size): + (JSC::WeakGCMap::deprecatedRemove): + (JSC::WeakGCMap::begin): + (JSC::WeakGCMap::end): + (JSC::WeakGCMap::~WeakGCMap): + (JSC::WeakGCMap::finalize): + * runtime/WeakGCPtr.h: + (JSC::WeakGCPtr::WeakGCPtr): + (JSC::WeakGCPtr::set): -2010-07-13 Oliver Hunt <oliver@apple.com> +2011-02-24 Oliver Hunt <oliver@apple.com> Reviewed by Gavin Barraclough. - ES5 requires BOMs to be treated as whitespace - https://bugs.webkit.org/show_bug.cgi?id=42218 - - Add BOM character to the Lexer's definition of whitespace, - and remove the logic that dealt with stripping BOMs and - caching the cleaned string. - - * parser/Lexer.h: - (JSC::Lexer::isWhiteSpace): - * parser/SourceProvider.h: - (JSC::UStringSourceProvider::create): - (JSC::UStringSourceProvider::UStringSourceProvider): - * wtf/text/StringImpl.h: - -2010-07-13 Andreas Kling <andreas.kling@nokia.com> - - Reviewed by Darin Adler. - - Avoid slow-path for put() in Array.splice() - https://bugs.webkit.org/show_bug.cgi?id=41920 - - Defer creation of the returned array until its final size is known - to avoid growing it while adding elements. - - * runtime/JSArray.cpp: - (JSC::JSArray::JSArray): Add two modes of creation, CreateInitialized (old) - and CreateCompact (which should only be used when constructing arrays whose - size and contents are known at the time of creation.) - (JSC::JSArray::setLength): Skip first consistency check if in CreateCompact - initialization mode. (Only applies to non-empty arrays.) - (JSC::JSArray::checkConsistency): Build fix (JSValue::type() is gone) - * runtime/JSArray.h: - (JSC::JSArray::uncheckedSetIndex): Added for fast initialization of compact - arrays. Does no bounds or other sanity checking. - * runtime/ArrayPrototype.cpp: - (JSC::arrayProtoFuncSplice): Optimized creation of the returned JSArray. - * runtime/ArrayConstructor.cpp: - (JSC::constructArrayWithSizeQuirk): Pass CreateInitialized to ctor. - * runtime/JSGlobalObject.h: - (JSC::constructEmptyArray): Pass CreateInitialized to ctor. - * runtime/RegExpConstructor.cpp: - (JSC::RegExpMatchesArray::RegExpMatchesArray): Pass CreateInitialized to ctor. - -2010-07-13 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Bug 42207 - Clean up interface to compile executables, always check for exceptions - - Presently interface to compile executable is inconsistent between eval/program and - function code, and is error prone in allowing a caller to byte compile without JIT - compiling an executable (we rely on all executables with codeblocks having JIT code). - Unify on an interface where all compilation is performed by a single compile (with - ForCall|ForConstruct variants) method, and make all clients check for errors. - - * interpreter/Interpreter.cpp: - (JSC::Interpreter::unwindCallFrame): - (JSC::Interpreter::execute): - (JSC::Interpreter::executeCall): - (JSC::Interpreter::executeConstruct): - (JSC::Interpreter::prepareForRepeatCall): - (JSC::Interpreter::privateExecute): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - * parser/Parser.h: - (JSC::Parser::isFunctionBodyNode): - (JSC::Parser::parse): - * runtime/ArrayPrototype.cpp: - (JSC::isNumericCompareFunction): - * runtime/ExceptionHelpers.cpp: - (JSC::createStackOverflowError): - * runtime/ExceptionHelpers.h: - * runtime/Executable.cpp: - (JSC::EvalExecutable::compileInternal): - (JSC::ProgramExecutable::checkSyntax): - (JSC::ProgramExecutable::compileInternal): - (JSC::FunctionExecutable::compileForCallInternal): - (JSC::FunctionExecutable::compileForConstructInternal): - (JSC::FunctionExecutable::reparseExceptionInfo): - (JSC::EvalExecutable::reparseExceptionInfo): - (JSC::FunctionExecutable::fromGlobalCode): - * runtime/Executable.h: - (JSC::EvalExecutable::compile): - (JSC::EvalExecutable::generatedBytecode): - (JSC::EvalExecutable::generatedJITCode): - (JSC::ProgramExecutable::compile): - (JSC::ProgramExecutable::generatedBytecode): - (JSC::ProgramExecutable::generatedJITCode): - (JSC::FunctionExecutable::generatedBytecode): - (JSC::FunctionExecutable::compileForCall): - (JSC::FunctionExecutable::compileForConstruct): - (JSC::FunctionExecutable::generatedJITCodeForConstructWithArityCheck): - * runtime/FunctionConstructor.cpp: - (JSC::constructFunction): - * runtime/JSActivation.cpp: - (JSC::JSActivation::argumentsGetter): - * runtime/JSGlobalData.h: - (JSC::JSGlobalData::canUseJIT): - -2010-07-13 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> - - Reviewed by Oliver Hunt. - - testapi.c depends on the Core Foundation. - https://bugs.webkit.org/show_bug.cgi?id=40058 - - Separate CoreFoundation specific tests in JSC's testapi.c. Enabling it - to compile in Qt environments. - - All tests should work except for the JSStringCreateWithCharacters() function, - because its tests depend on Core Foundation specific functions. - - * API/tests/testapi.c: - (testJSStringRefCF): moved CoreFoundation specific tests to this function. - (main): The moves plus some minor tweaks. - * testapi.pro: Added. + Make weaklist processing deal with weak handles being removed during the iteration + https://bugs.webkit.org/show_bug.cgi?id=55105 + + It is possible for the handle heap to end up in a broken state if + a handle's finalizer removes either the current or next handle + to be visited during the post-gc cleanup. This patch removes that + problem by allowing the deallocate(Node*) routine to update the + iterator if it is called during finalization. + + * collector/handles/HandleHeap.cpp: + (JSC::HandleHeap::HandleHeap): + (JSC::HandleHeap::updateAfterMark): + (JSC::HandleHeap::clearWeakPointers): + (JSC::HandleHeap::writeBarrier): + (JSC::HandleHeap::protectedGlobalObjectCount): + * collector/handles/HandleHeap.h: + (JSC::Finalizer::~Finalizer): + (JSC::HandleHeap::getFinalizer): + (JSC::HandleHeap::deallocate): + (JSC::HandleHeap::makeWeak): + (JSC::HandleHeap::makeSelfDestroying): + (JSC::HandleHeap::Node::Node): + (JSC::HandleHeap::Node::setFinalizer): + (JSC::HandleHeap::Node::finalizer): + (JSC::HandleHeap::Node::finalizerContext): + * interpreter/RegisterFile.cpp: + (JSC::RegisterFile::setGlobalObject): + (JSC::GlobalObjectNotifier::finalize): + (JSC::RegisterFile::globalObjectCollectedNotifier): + * interpreter/RegisterFile.h: + (JSC::RegisterFile::RegisterFile): + * runtime/Heap.cpp: + (JSC::Heap::destroy): + * runtime/WeakGCPtr.h: + (JSC::WeakGCPtr::WeakGCPtr): + (JSC::WeakGCPtr::set): -2010-07-13 Gavin Barraclough <barraclough@apple.com> +2011-02-24 Michael Saboff <msaboff@apple.com> Reviewed by Oliver Hunt. - Bug 42182 - Change how numeric compare functions are detected - - There are three problems with the current mechanism: - * It requires that a function executable be bytecode compiled without - being JIT generated (in order to copy the bytecode from the numeric - compare function). This is a problem since we have an invariant when - running with the JIT that functions are never bytecode compiled without - also being JIT generated (after checking the codeblock we assume the - function has JIT code). To help maintain this invariant - * This implementation will prevent us from experimenting with alternate - compilation paths which do not compile via bytecode. - * It doesn't work. Functions passing more than two arguments will match - if they are comparing their last two arguments, not the first two. - Generally the mapping back from bytecode to semantics may be more - complex then initially expected. - - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::generate): - (JSC::BytecodeGenerator::setIsNumericCompareFunction): - (JSC::BytecodeGenerator::argumentNumberFor): - * bytecompiler/BytecodeGenerator.h: - * bytecompiler/NodesCodegen.cpp: - (JSC::BlockNode::singleStatement): - (JSC::FunctionBodyNode::emitBytecode): - * parser/Nodes.h: - (JSC::ExpressionNode::isSubtract): - (JSC::BinaryOpNode::lhs): - (JSC::BinaryOpNode::rhs): - (JSC::SubNode::isSubtract): - (JSC::ReturnNode::value): - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::JSGlobalData): - * runtime/JSGlobalData.h: - -2010-07-12 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - REGRESSION: Crash at JSC::JIT::privateCompile(JSC::MacroAssemblerCodePtr*) - https://bugs.webkit.org/show_bug.cgi?id=41763 - - There are two parts to this patch, the first is to fix the actual - problem. When calling copyStringWithoutBOMs on a string we know - to contain BOMs we return a value indicating that there are no - BOMs. - - The second part of this fix is simply to harden the path that - led to a crash when parsing failed. - - * jit/JITOpcodes.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - Harden compilation stubs against parser failure. - * parser/Lexer.cpp: - (JSC::Lexer::sourceCode): - Add assertions to ensure that subranges into a source provider - are always actually braces. Hopefully this should catch similar - failures in future. These assertions fire on existing tests - without this fix. - * runtime/Executable.h: - (JSC::FunctionExecutable::tryJitCodeForCall): - (JSC::FunctionExecutable::tryJitCodeForConstruct): - * wtf/text/StringImpl.h: - (WebCore::StringImpl::copyStringWithoutBOMs): - Make copyStringWithBOMs do the right thing. - -2010-07-13 Gabor Loki <loki@webkit.org> - - Reviewed by Gavin Barraclough. - - Fix the constant encoding in data transfer instructions on ARM - https://bugs.webkit.org/show_bug.cgi?id=42166 - - The getImm function is designed to produce modified immediate constant - for data processing instructions. It should not be used to encode - any constant for data transfer. In the current situation there is no - way to use any immediate constant for data transfer. So, the moveImm - function is the desired method to pass the offset value to the data - transfer instructions. - - Reported by Jacob Bramley. - - * assembler/ARMAssembler.cpp: - (JSC::ARMAssembler::dataTransfer32): - * assembler/MacroAssemblerARM.h: - (JSC::MacroAssemblerARM::call32): - -2010-07-09 Darin Adler <darin@apple.com> - - Reviewed by Geoffrey Garen. - - String to number coercion is not spec compliant - https://bugs.webkit.org/show_bug.cgi?id=31349 - - ToNumber should ignore NBSP (\u00a0) - https://bugs.webkit.org/show_bug.cgi?id=25490 - - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::parseIntOverflow): Added a version that works on UChar. - * runtime/JSGlobalObjectFunctions.h: Ditto. - - * runtime/UString.cpp: - (JSC::isInfinity): Added helper functions. - (JSC::UString::toDouble): Use isStrWhiteSpace instead of - isSASCIISpace to define what we should skip. Got rid of the - code that used CString and UTF8String, instead processing the - UChar of the string directly, except for when we call strtod. - For strtod, use our own home-grown conversion function that - does not try to do any UTF-16 processing. Tidied up the logic - a bit as well. - -2010-07-12 Martin Robinson <mrobinson@igalia.com> - - Reviewed by Xan Lopez. + PatternAlternative leaked in YarrPatternConstructor::atomParenthesesEnd() + https://bugs.webkit.org/show_bug.cgi?id=55156 - [GTK] make dist is broken because of missing headers and other miscellaneous reasons - https://bugs.webkit.org/show_bug.cgi?id=42107 + Added code to delete unneeded PatternAlternative after it is removed + from m_alternatives Vector. - * GNUmakefile.am: Add missing header to the sources list. - -2010-07-12 Adam Roben <aroben@apple.com> - - Stop generating stripped symbols for Release builds - - It turns out we can strip the symbols after-the-fact using PDBCopy. - - Fixes <http://webkit.org/b/42085>. - - Reviewed by Steve Falkenburg. + * yarr/YarrPattern.cpp: + (JSC::Yarr::YarrPatternConstructor::atomParenthesesEnd): - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: - Removed the pre-link event, which just created the public\sym - directory. +2011-02-24 Eric Seidel <eric@webkit.org> -2010-07-12 Anders Carlsson <andersca@apple.com> + Reviewed by Anders Carlsson. - Reviewed by Dan Bernstein. + VectorBuffer should not call malloc(0) + https://bugs.webkit.org/show_bug.cgi?id=55091 - Add WARN_UNUSED_RETURN to the smart pointer "leak" member functions - https://bugs.webkit.org/show_bug.cgi?id=42086 + Turns out the malloc() call which was so hot in: + https://bugs.webkit.org/show_bug.cgi?id=55005 + was actually just malloc(0). - * wtf/OwnPtr.h: - * wtf/PassOwnPtr.h: - * wtf/PassRefPtr.h: - (WTF::PassRefPtr::releaseRef): - (WTF::NonNullPassRefPtr::leakRef): - (WTF::NonNullPassRefPtr::releaseRef): - * wtf/RetainPtr.h: - (WTF::RetainPtr::releaseRef): + We shouldn't be calling malloc(0) anyway, since there is no need to + and it might actually do work on some systems. + I believe on Mac it ends up taking the standard spinlocks (expensive) + and the code on Brew actually does a malloc(1) instead. Neither is desirable. -2010-07-10 Oliver Hunt <oliver@apple.com> + * wtf/Vector.h: + (WTF::VectorBufferBase::allocateBuffer): + (WTF::VectorBufferBase::tryAllocateBuffer): - Reviewed by Maciej Stachowiak. +2011-02-24 Patrick Gansterer <paroga@webkit.org> - HAVE_COMPUTED_GOTO is dependent on the interpreter being enabled - https://bugs.webkit.org/show_bug.cgi?id=42039 + Reviewed by Darin Adler. - Separate the existence of computed goto support in the compiler - from whether or not we are using the interpreter. All the current - HAVE(COMPUTED_GOTO) guards are for the interpreter, but I'd like - the option of using it elsewhere. The interpreter now uses - ENABLE(COMPUTED_GOTO_INTERPRETER) + Remove obsolete PLATFORM(CI) + https://bugs.webkit.org/show_bug.cgi?id=55082 - * bytecode/Instruction.h: - (JSC::Instruction::Instruction): - * bytecode/Opcode.h: - * interpreter/Interpreter.cpp: - (JSC::Interpreter::Interpreter): - (JSC::Interpreter::isOpcode): - (JSC::Interpreter::privateExecute): - * interpreter/Interpreter.h: - (JSC::Interpreter::getOpcode): - (JSC::Interpreter::getOpcodeID): * wtf/Platform.h: -2010-07-10 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - Remove switches from inner expression loops in the parser - https://bugs.webkit.org/show_bug.cgi?id=42035 - - Use bitmasks and flags on the token types to identify unary and - binary operators, rather than switching on the token type to - identify them. - - * parser/JSParser.cpp: - (JSC::isUnaryOp): - (JSC::JSParser::isBinaryOperator): - * parser/JSParser.h: - (JSC::): - -2010-07-09 Leon Clarke <leonclarke@google.com> - - Reviewed by Adam Barth. - - add support for link prefetching - https://bugs.webkit.org/show_bug.cgi?id=3652 - - * Configurations/FeatureDefines.xcconfig: +2011-02-24 Martin Robinson <mrobinson@igalia.com> -2010-07-09 Oliver Hunt <oliver@apple.com> - - Reviewed by Darin Adler. + Reviewed by Xan Lopez. - Tidy up lexer token ids - https://bugs.webkit.org/show_bug.cgi?id=42014 + [GTK] Remove the GFile GOwnPtr specialization + https://bugs.webkit.org/show_bug.cgi?id=55154 - Stop using character literals to identify single character tokens - and instead use symbolic names for all tokens. + Remove the GFile specialization of GOwnPtr. It's sufficient to use GRefPtr + to track GFiles since they are just regular reference-counted GObjects. - * parser/ASTBuilder.h: - (JSC::ASTBuilder::makeBinaryNode): - * parser/JSParser.cpp: - (JSC::JSParser::consume): - (JSC::JSParser::match): - (JSC::JSParser::autoSemiColon): - (JSC::JSParser::JSParser): - (JSC::JSParser::parseProgram): - (JSC::JSParser::allowAutomaticSemicolon): - (JSC::JSParser::parseDoWhileStatement): - (JSC::JSParser::parseWhileStatement): - (JSC::JSParser::parseVarDeclarationList): - (JSC::JSParser::parseConstDeclarationList): - (JSC::JSParser::parseForStatement): - (JSC::JSParser::parseReturnStatement): - (JSC::JSParser::parseWithStatement): - (JSC::JSParser::parseSwitchStatement): - (JSC::JSParser::parseSwitchClauses): - (JSC::JSParser::parseSwitchDefaultClause): - (JSC::JSParser::parseTryStatement): - (JSC::JSParser::parseDebuggerStatement): - (JSC::JSParser::parseStatement): - (JSC::JSParser::parseFormalParameters): - (JSC::JSParser::parseFunctionInfo): - (JSC::JSParser::parseExpressionOrLabelStatement): - (JSC::JSParser::parseIfStatement): - (JSC::JSParser::parseExpression): - (JSC::JSParser::parseAssignmentExpression): - (JSC::JSParser::parseConditionalExpression): - (JSC::isUnaryOp): - (JSC::JSParser::isBinaryOperator): - (JSC::JSParser::parseBinaryExpression): - (JSC::JSParser::parseProperty): - (JSC::JSParser::parseObjectLiteral): - (JSC::JSParser::parseStrictObjectLiteral): - (JSC::JSParser::parseArrayLiteral): - (JSC::JSParser::parsePrimaryExpression): - (JSC::JSParser::parseArguments): - (JSC::JSParser::parseMemberExpression): - (JSC::JSParser::parseUnaryExpression): - * parser/JSParser.h: - (JSC::): - * parser/Lexer.cpp: - (JSC::): - (JSC::Lexer::lex): - * parser/Lexer.h: + * wtf/gobject/GOwnPtr.cpp: Remove GFile specialization. + * wtf/gobject/GOwnPtr.h: Ditto. -2010-07-09 Gavin Barraclough <barraclough@apple.com> +2011-02-24 Patrick Gansterer <paroga@webkit.org> - Reviewed by Oliver Hunt. + Reviewed by Eric Seidel. - Bug 42015 - Enable JSValue32_64 on ARMv7 + Rename PLATFORM(SKIA) to USE(SKIA) + https://bugs.webkit.org/show_bug.cgi?id=55090 - * Configurations/JavaScriptCore.xcconfig: - * jit/JIT.h: - * jit/JITStubs.cpp: * wtf/Platform.h: -2010-07-09 Kenneth Russell <kbr@google.com> +2011-02-24 Patrick Gansterer <paroga@webkit.org> - Reviewed by Dimitri Glazkov. - - Assertion failure in String::utf8() for certain invalid UTF16 inputs - https://bugs.webkit.org/show_bug.cgi?id=41983 - - * wtf/text/WTFString.cpp: - (WebCore::String::utf8): - - Fixed assertion when sourceExhausted is returned from convertUTF16ToUTF8. - -2010-07-09 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoffrey Garen. - - Remove a couple of excess writes from the lexer - https://bugs.webkit.org/show_bug.cgi?id=41981 - - Remove a couple of fields from JSTokenInfo, and rename the remaining ones - to something more accurate - - * parser/JSParser.cpp: - (JSC::JSParser::next): - (JSC::JSParser::tokenStart): - (JSC::JSParser::tokenLine): - (JSC::JSParser::tokenEnd): - * parser/JSParser.h: - (JSC::JSTokenInfo::JSTokenInfo): - * parser/Lexer.cpp: - (JSC::Lexer::lex): + Reviewed by Alexey Proskuryakov. -2010-07-08 Oliver Hunt <oliver@apple.com> + Remove pthreads dependecy for JSLock + https://bugs.webkit.org/show_bug.cgi?id=54832 - Reviewed by Sam Weinig. + JSLock is only needed to support an obsolete execution model where JavaScriptCore + automatically protected against concurrent access from multiple threads. + So it's safe to disable it on non-mac platforms where we don't have native pthreads. - Property declarations in an object literal should not consider the prototype chain when being added to the new object - https://bugs.webkit.org/show_bug.cgi?id=41929 - - To fix this all we need to do is ensure that all new properties are - added with putDirect rather than a fully generic call to put. This - is safe as an object literal is by definition going to produce a - completely normal object. + * runtime/JSLock.cpp: - Rather than duplicating all the put_by_id logic we add an additional - flag to op_put_by_id to indicate it should be using putDirect. In - the interpreter this adds a runtime branch, but in the jit this is - essentially free as the branch is taken at compile time. This does - actually improve object literal creation time even in the interpreter - as we no longer need to walk the prototype chain to verify that the - cached put is safe. +2011-02-24 Chao-ying Fu <fu@mips.com> - We still emit normal put_by_id code when emitting __proto__ as we want - to get the correct handling for changing the prototype. + Reviewed by Eric Seidel. - Sunspider claims this is a 0.7% speedup which is conceivably real due - to the performance improvement in object literals, but I suspect its - really just the result of code motion. + Fix MIPS build with new patchOffsetPut/GetByIdPropertyMapOffset1/2 values + https://bugs.webkit.org/show_bug.cgi?id=54997 - * bytecode/Opcode.h: - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::emitPutById): - (JSC::BytecodeGenerator::emitDirectPutById): - * bytecompiler/BytecodeGenerator.h: - * bytecompiler/NodesCodegen.cpp: - (JSC::PropertyListNode::emitBytecode): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): * jit/JIT.h: - (JSC::JIT::compilePutByIdTransition): - * jit/JITPropertyAccess.cpp: - (JSC::JIT::emit_op_put_by_id): - (JSC::JIT::emitSlow_op_put_by_id): - (JSC::JIT::privateCompilePutByIdTransition): - (JSC::JIT::patchPutByIdReplace): - * jit/JITPropertyAccess32_64.cpp: - (JSC::JIT::emitSlow_op_put_by_id): - (JSC::JIT::privateCompilePutByIdTransition): - (JSC::JIT::patchPutByIdReplace): * jit/JITStubs.cpp: - (JSC::JITThunks::tryCachePutByID): - (JSC::DEFINE_STUB_FUNCTION): - * jit/JITStubs.h: - (JSC::): - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::JSGlobalData): - * runtime/JSObject.h: - (JSC::JSObject::putDirect): - (JSC::JSValue::putDirect): - * runtime/JSValue.h: - -2010-07-08 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig. - - String.prototype methods should CheckObjectCoercible (test this is not null or undefined). - - * runtime/StringPrototype.cpp: - (JSC::stringProtoFuncCharAt): - (JSC::stringProtoFuncCharCodeAt): - (JSC::stringProtoFuncConcat): - (JSC::stringProtoFuncIndexOf): - (JSC::stringProtoFuncLastIndexOf): - (JSC::stringProtoFuncMatch): - (JSC::stringProtoFuncSearch): - (JSC::stringProtoFuncSlice): - (JSC::stringProtoFuncSplit): - (JSC::stringProtoFuncSubstr): - (JSC::stringProtoFuncSubstring): - (JSC::stringProtoFuncToLowerCase): - (JSC::stringProtoFuncToUpperCase): - (JSC::stringProtoFuncLocaleCompare): - (JSC::trimString): - -2010-07-08 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig. - - Date.prototype.toJSON takes one argument, report this correctly. - - * runtime/DatePrototype.cpp: - -2010-07-08 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig. - - RegExp's prototype should be an object of type RegExp. - - * runtime/RegExpPrototype.cpp: - (JSC::RegExpPrototype::RegExpPrototype): - * runtime/RegExpPrototype.h: - -2010-07-08 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - JavaScript parser violates ECMA automatic semicolon insertion rule - https://bugs.webkit.org/show_bug.cgi?id=41844 - - Remove (very) old and bogus logic that automatically inserted a semicolon - at the end of a script's source. - - * parser/Lexer.cpp: - (JSC::Lexer::lex): - -2010-07-08 Oliver Hunt <oliver@apple.com> - - Reviewed by Anders Carlson. - - Tidy up the lexer - - Remove some of the old yacc/lex-isms still present in the lexer - - * parser/JSParser.h: - (JSC::): - * parser/Lexer.cpp: - (JSC::Lexer::parseString): - (JSC::Lexer::lex): - * parser/Lexer.h: - -2010-07-08 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - Make object-literal parsing conformant with the spec. - https://bugs.webkit.org/show_bug.cgi?id=41892 - - Bring our parsing of object literals into conformance with the ES5 spec. - Basically disallow conflicting accessor vs. normal property definitions - The bulk of this patch is just fiddling to maintain performance. - - * parser/ASTBuilder.h: - (JSC::ASTBuilder::createGetterOrSetterProperty): - (JSC::ASTBuilder::createProperty): - (JSC::ASTBuilder::getName): - (JSC::ASTBuilder::getType): - * parser/JSParser.cpp: - (JSC::jsParse): - (JSC::JSParser::JSParser): - (JSC::JSParser::parseProperty): - (JSC::JSParser::parseObjectLiteral): - (JSC::JSParser::parseStrictObjectLiteral): - * parser/JSParser.h: - * parser/Lexer.cpp: - (JSC::Lexer::clear): - * parser/Lexer.h: - (JSC::Lexer::currentOffset): - (JSC::Lexer::setOffset): - Add logic to allow us to roll the lexer back in the input stream. - * parser/Nodes.h: - (JSC::PropertyNode::): - (JSC::PropertyNode::type): - * parser/Parser.cpp: - (JSC::Parser::parse): - * parser/SourceProvider.h: - (JSC::SourceProvider::SourceProvider): - (JSC::SourceProvider::isValid): - (JSC::SourceProvider::setValid): - SourceProvider now records whether the input text - has already been validated. - * parser/SyntaxChecker.h: - (JSC::SyntaxChecker::SyntaxChecker): - (JSC::SyntaxChecker::Property::Property): - (JSC::SyntaxChecker::Property::operator!): - (JSC::SyntaxChecker::createProperty): - (JSC::SyntaxChecker::createPropertyList): - (JSC::SyntaxChecker::createGetterOrSetterProperty): - The SyntaxChecker mode now needs to maintain a bit more information - to ensure that we can validate object literals correctly. - -2010-07-08 Darin Adler <darin@apple.com> - - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::sharedInstance): Fix typo. - -2010-07-08 Darin Adler <darin@apple.com> - - Reviewed by Oliver Hunt. - - Fix assertion seen on the Leopard buildbot. - The single shared instance of JSGlobalData was not being - adopted after creation. - - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::sharedInstance): Do adoptRef and then leakRef. - -2010-07-08 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig. - - BOMs are whitespace. - - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::isStrWhiteSpace): - -2010-07-08 Martin Robinson <mrobinson@igalia.com> - - Unreviewed. - - Try fix the GTK+ build by touching this file. - - * jit/ExecutableAllocatorFixedVMPool.cpp: - -2010-07-08 Gavin Barraclough <barraclough@apple.com> - - GTK build fix take two. - - * GNUmakefile.am: - -2010-07-08 Gavin Barraclough <barraclough@apple.com> - - GTK build fix. - - * GNUmakefile.am: - -2010-07-08 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig. - - https://bugs.webkit.org/show_bug.cgi?id=41641 - - Update compile flags to allow use of ExecutableAllocatorFixedVMPool on platforms - other than x86-64 (this may be useful on 32-bit platforms, too). - - Simplify ifdefs by dividing into thwo broad allocation strategies - (ENABLE_EXECUTABLE_ALLOCATOR_FIXED & ENABLE_EXECUTABLE_ALLOCATOR_DEMAND). - - Rename constant used in the code to have names descriptive of their purpose, - rather than their specific value on a given platform. - - * jit/ExecutableAllocator.cpp: - (JSC::ExecutableAllocator::reprotectRegion): - (JSC::ExecutableAllocator::cacheFlush): - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): - (JSC::FixedVMPoolAllocator::free): - (JSC::ExecutablePool::systemAlloc): - * jit/ExecutableAllocatorPosix.cpp: - * jit/ExecutableAllocatorSymbian.cpp: - * jit/ExecutableAllocatorWin.cpp: - * wtf/Platform.h: + (JSC::JITThunks::JITThunks): -2010-07-08 Xan Lopez <xlopez@igalia.com> +2011-02-24 Andras Becsi <abecsi@webkit.org> - Reviewed by Gustavo Noronha. + Reviewed by Laszlo Gombos. - Silence a few noisy build rules. + [Qt] MinGW build fails to link + https://bugs.webkit.org/show_bug.cgi?id=55050 - * GNUmakefile.am: + Prepend the libraries of subcomponents instead of appending them + to fix the library order according to the dependency of the libraries -2010-07-08 Sheriff Bot <webkit.review.bot@gmail.com> + * JavaScriptCore.pri: rename addJavaScriptCore to prependJavaScriptCore + * jsc.pro: ditto - Unreviewed, rolling out r62765. - http://trac.webkit.org/changeset/62765 - https://bugs.webkit.org/show_bug.cgi?id=41840 - - All jscore and layout tests crash on Qt bot (Requested by Ossy - on #webkit). +2011-02-24 Eric Seidel <eric@webkit.org> - * wtf/FastMalloc.cpp: - (WTF::TCMalloc_PageHeap::initializeScavenger): - (WTF::TCMalloc_PageHeap::signalScavenger): - (WTF::TCMalloc_PageHeap::scavengerThread): - -2010-07-08 Andreas Kling <andreas.kling@nokia.com> + Reviewed by Adam Barth. - Reviewed by Oliver Hunt. + Deque<T> should support inline capacity + https://bugs.webkit.org/show_bug.cgi?id=55032 - Interpreter: Crash in op_load_varargs on 64-bit - https://bugs.webkit.org/show_bug.cgi?id=41795 + The title says it all. There are currently no places + which use this code yet, however it's been tested in conjunction + with code for bug 55005. - Added missing cast of argCount to int32_t in op_load_varargs. + This also adds an ASSERT that capacity is never 1. If you were able + to set the capacity equal to 1, the Deque would just get confused + and happily append your item but still think it had size 0. - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): + * wtf/Deque.h: + (WTF::DequeIterator::DequeIterator): + (WTF::DequeConstIterator::DequeConstIterator): + (WTF::DequeReverseIterator::DequeReverseIterator): + (WTF::DequeConstReverseIterator::DequeConstReverseIterator): + (WTF::::checkValidity): + (WTF::::checkIndexValidity): + (WTF::::invalidateIterators): + (WTF::::Deque): + (WTF::deleteAllValues): + (WTF::::operator): + (WTF::::destroyAll): + (WTF::::~Deque): + (WTF::::swap): + (WTF::::clear): + (WTF::::findIf): + (WTF::::expandCapacityIfNeeded): + (WTF::::expandCapacity): + (WTF::::takeFirst): + (WTF::::append): + (WTF::::prepend): + (WTF::::removeFirst): + (WTF::::remove): + (WTF::::addToIteratorsList): + (WTF::::removeFromIteratorsList): + (WTF::::DequeIteratorBase): + (WTF::::~DequeIteratorBase): + (WTF::::isEqual): + (WTF::::increment): + (WTF::::decrement): + (WTF::::after): + (WTF::::before): + * wtf/Vector.h: -2010-07-08 Patrick Gansterer <paroga@paroga.com> +2011-02-22 Adam Barth <abarth@webkit.org> - Reviewed by Geoffrey Garen. + Reviewed by Ojan Vafai. - Make FastMalloc more portable. - https://bugs.webkit.org/show_bug.cgi?id=41790 + Add missing files to JavaScriptCore.gypi + https://bugs.webkit.org/show_bug.cgi?id=55020 - Use WTF::Mutex instead of pthread_mutex_t and - replace pthread_cond_t with WTF::ThreadCondition. + gypi files are supposed to list every file under the sun. This patch + adds some missing files and sorts the rest. - * wtf/FastMalloc.cpp: - (WTF::TCMalloc_PageHeap::initializeScavenger): - (WTF::TCMalloc_PageHeap::signalScavenger): - (WTF::TCMalloc_PageHeap::scavengerThread): + * JavaScriptCore.gypi: -2010-07-08 Patrick Gansterer <paroga@paroga.com> +2011-02-23 Geoffrey Garen <ggaren@apple.com> Reviewed by Darin Adler. - Remove needless #include <fcntl.h> from TCSystemAlloc.cpp. - https://bugs.webkit.org/show_bug.cgi?id=41777 - - * wtf/TCSystemAlloc.cpp: - -2010-07-07 Darin Adler <darin@apple.com> - - Fixed build in configurations like PowerPC. - - * runtime/RegExpConstructor.cpp: Added include of PassOwnPtr.h. - * runtime/RegExpObject.cpp: Ditto. - * wtf/SizeLimits.cpp: Changed compile time assertion to work - even on platforms where two bool members do not end up taking - the same size as one int member! - -2010-07-07 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoffrey Garen. - - Lazy mode of parser allows invalid syntax in object literals. - https://bugs.webkit.org/show_bug.cgi?id=41809 - - Make the parser itself validate getter and setter syntax rather - than offloading it to the AST builder. - - * parser/ASTBuilder.h: - (JSC::ASTBuilder::createGetterOrSetterProperty): - * parser/JSParser.cpp: - (JSC::JSParser::parseProperty): - -2010-07-07 Dumitru Daniliuc <dumi@chromium.org> - - Reviewed by Adam Roben. - - Revert r62689. - https://bugs.webkit.org/show_bug.cgi?id=41804 - - * runtime/Collector.cpp: - (JSC::Heap::freeBlocks): - -2010-07-07 Adam Barth <abarth@webkit.org> - - Reviewed by Sam Weinig. - - Add reverseFind to Vector and deploy in HTML5 parser - https://bugs.webkit.org/show_bug.cgi?id=41778 - - This method seems generally useful. I'm slightly surprised we don't - have it already. - - * wtf/Vector.h: - (WTF::::reverseFind): - -2010-07-07 Darin Adler <darin@apple.com> - - Reviewed by Adam Barth. - - Turn on adoptRef assertion for RefCounted - https://bugs.webkit.org/show_bug.cgi?id=41547 - - * wtf/CrossThreadRefCounted.h: Fixed include style. Includes of other - WTF headers should use "" includes; consistent in most WTF headers. - Added a call to relaxAdoptionRequirement. - - * wtf/RefCounted.h: Fixed include style. Removed LOOSE_REF_COUNTED. - Added relaxAdoptionRequirement. - -2010-07-07 Anders Carlsson <andersca@apple.com> - - Try to fix the Windows build. + Refactored MarkedSpace to operate in terms of size classes + https://bugs.webkit.org/show_bug.cgi?id=55106 + + SunSpider reports no change. - * runtime/Collector.cpp: - (JSC::Heap::freeBlocks): + * runtime/JSCell.h: + (JSC::JSCell::MarkedSpace::sizeClassFor): + (JSC::JSCell::MarkedSpace::allocate): Delegate allocation based on size + class. Since these functions are inline, the compiler can constant fold + them. -2010-07-07 Darin Adler <darin@apple.com> + * runtime/MarkedBlock.h: + (JSC::MarkedBlock::cellSize): + (JSC::MarkedBlock::size): Factored out a cellSize() helper. - Reviewed by Adam Barth. + * runtime/MarkedSpace.cpp: + (JSC::MarkedSpace::allocateBlock): + (JSC::MarkedSpace::allocateFromSizeClass): + (JSC::MarkedSpace::shrink): + (JSC::MarkedSpace::reset): + * runtime/MarkedSpace.h: + (JSC::MarkedSpace::SizeClass::SizeClass): + (JSC::MarkedSpace::SizeClass::reset): Changed to operate in terms of + abstract SizeClass objects, which are independent linked lists of blocks + of a certain size class, instead of a single m_heap object. - More OwnPtr work - https://bugs.webkit.org/show_bug.cgi?id=41727 +2011-02-23 Adam Barth <abarth@webkit.org> - * API/JSCallbackObject.h: - (JSC::JSCallbackObjectData::setPrivateProperty): Use adoptPtr. - * API/JSCallbackObjectFunctions.h: - (JSC::JSCallbackObject::JSCallbackObject): Ditto. - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::CodeBlock): Ditto. - * bytecode/CodeBlock.h: - (JSC::CodeBlock::createRareDataIfNecessary): Ditto. - * parser/Nodes.cpp: - (JSC::ScopeNode::ScopeNode): Ditto. - * parser/ParserArena.cpp: - (JSC::ParserArena::ParserArena): Ditto. - * runtime/Arguments.h: - (JSC::Arguments::Arguments): Ditto. - * runtime/Executable.cpp: - (JSC::EvalExecutable::compile): Ditto. - (JSC::ProgramExecutable::compile): Ditto. - (JSC::FunctionExecutable::compileForCall): Ditto. - (JSC::FunctionExecutable::compileForConstruct): Ditto. - (JSC::FunctionExecutable::reparseExceptionInfo): Ditto. - (JSC::EvalExecutable::reparseExceptionInfo): Ditto. - * runtime/JSArray.cpp: - (JSC::JSArray::sort): Ditto. - * runtime/RegExpConstructor.cpp: - (JSC::RegExpConstructor::RegExpConstructor): Ditto. - * runtime/RegExpObject.cpp: - (JSC::RegExpObject::RegExpObject): Ditto. - * runtime/SmallStrings.cpp: - (JSC::SmallStrings::createSingleCharacterString): Ditto. - (JSC::SmallStrings::singleCharacterStringRep): Ditto. - - * wtf/unicode/icu/CollatorICU.cpp: - (WTF::Collator::userDefault): Use adoptPtr. - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::ByteCompiler::ByteCompiler): Ditto. - (JSC::Yarr::ByteCompiler::compile): Ditto. - (JSC::Yarr::ByteCompiler::regexBegin): Ditto. - (JSC::Yarr::byteCompileRegex): Ditto. - * yarr/RegexInterpreter.h: - (JSC::Yarr::BytecodePattern::BytecodePattern): Ditto. + Reviewed by James Robinson. -2010-07-07 Darin Adler <darin@apple.com> + [Chromium] Use WebKitClient for OSRandomSource instead of trying to talk to the file system in the sandbox + https://bugs.webkit.org/show_bug.cgi?id=55093 - Reviewed by Adam Barth. + Exclude OSRandomSource.cpp from the Chromium build. This function is + implemented in WebKit/chromium/src instead. - Make clear set the pointer to 0 before deletion - https://bugs.webkit.org/show_bug.cgi?id=41727 + * JavaScriptCore.gyp/JavaScriptCore.gyp: - * wtf/OwnArrayPtr.h: Changed code so we always set the pointer to its new - value before deleting the old one, including in the set function and the - clear function. This required changing safeDelete. - * wtf/OwnPtr.h: Ditto. Also removed some extra null checks. - * wtf/PassOwnPtr.h: Ditto. +2011-02-23 Oliver Hunt <oliver@apple.com> - * wtf/PassRefPtr.h: Changed code so we always set the pointer to its new - value before deref'ing the old one in the clear function. Also added a - leakRef function for NonNullPassRefPtr. - * wtf/RefPtr.h: Ditto. + Roll out r64156 as it introduces incorrect behaviour. - * wtf/gobject/GOwnPtr.h: More of the same. - * wtf/gobject/GRefPtr.h: Ditto. + * runtime/JSByteArray.h: + (JSC::JSByteArray::setIndex): -2010-07-07 Zoltan Herczeg <zherczeg@webkit.org> +2011-02-23 Geoffrey Garen <ggaren@apple.com> Reviewed by Oliver Hunt. - Refactored string parsing inside the lexer - https://bugs.webkit.org/show_bug.cgi?id=41606 - - Does not use goto. Although the last sunspider - parse-only tests yields 1.044x speedup, I think the - patch can have a slight improvement at most. - - * parser/Lexer.cpp: - (JSC::singleEscape): - (JSC::Lexer::parseString): - (JSC::Lexer::lex): - * parser/Lexer.h: - -2010-07-06 Oliver Hunt <oliver@apple.com> - - Reviewed by Maciej Stachowiak. - - Make it possible to have both the JIT and Interpreter available in a single build - https://bugs.webkit.org/show_bug.cgi?id=41722 - - Separate the concept of !ENABLE(JIT) and ENABLE(INTERPRETER) and make it possible - to have both JIT and INTERPRETER enabled at the same time. This doesn't add - support for mix mode execution, but it does allow a single build to contain all - the code needed to use either the interpreter or the jit. - - If both ENABLE(INTERPRETER) and ENABLE(JIT) are true then setting the environment - variable JSC_FORCE_INTERPRETER will force JSC to use the interpreter. - - This patch basically consists of replacing !ENABLE(JIT) with ENABLE(INTERPRETER), - or converting #if ENABLE(JIT) ... #else ... into #if ENABLE(JIT) ... #endif - #if ENABLE(INTERPRETER), etc. There are also a few functions that need to be - renamed to resolve return type ambiguity. - - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::~CodeBlock): - (JSC::CodeBlock::shrinkToFit): - * bytecode/CodeBlock.h: - * interpreter/CallFrame.h: - (JSC::ExecState::returnVPC): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::unwindCallFrame): - (JSC::Interpreter::throwException): - (JSC::Interpreter::execute): - (JSC::Interpreter::executeCall): - (JSC::Interpreter::executeConstruct): - (JSC::Interpreter::prepareForRepeatCall): - (JSC::Interpreter::privateExecute): - (JSC::Interpreter::retrieveLastCaller): - * interpreter/Interpreter.h: - * runtime/ArrayPrototype.cpp: - (JSC::isNumericCompareFunction): - * runtime/Executable.cpp: - (JSC::EvalExecutable::generateJITCode): - (JSC::ProgramExecutable::generateJITCode): - (JSC::FunctionExecutable::generateJITCodeForCall): - (JSC::FunctionExecutable::generateJITCodeForConstruct): - (JSC::FunctionExecutable::reparseExceptionInfo): - (JSC::EvalExecutable::reparseExceptionInfo): - * runtime/JSFunction.cpp: - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::JSGlobalData): - * runtime/JSGlobalData.h: - (JSC::JSGlobalData::canUseJIT): - * wtf/Platform.h: - -2010-07-06 Darin Adler <darin@apple.com> - - Reviewed by Adam Barth. - - Add adoptPtr and leakPtr functions for OwnPtr and PassOwnPtr - https://bugs.webkit.org/show_bug.cgi?id=41320 - - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): Use assignment - instead of set since the result of reparseExceptionInfo is now a - PassOwnPtr. - - * bytecode/CodeBlock.h: Change extractExceptionInfo to return a - PassOwnPtr instead of a raw pointer. - - * runtime/Executable.cpp: - (JSC::FunctionExecutable::reparseExceptionInfo): Return a PassOwnPtr. - (JSC::EvalExecutable::reparseExceptionInfo): Ditto. - (JSC::ProgramExecutable::reparseExceptionInfo): Added. This was - in the header before, but it's better to not have it there to reduce - header dependencies. Return a PassOwnPtr. - - * runtime/Executable.h: Made reparseExceptionInfo return a PassOwnPtr, - and put it in the private sections of classes other than the base class. - - * wtf/MessageQueue.h: - (WTF::MessageQueue::append): Use leakPtr instead of release. - (WTF::MessageQueue::appendAndCheckEmpty): Ditto. - (WTF::MessageQueue::prepend): Ditto. - - * wtf/OwnPtr.h: Tweaked formatting. Changed the release function to return - a PassOwnPtr rather than a raw pointer. Added a leakPtr function that - returns a raw pointer. Put the constructor that takes a raw pointer and - the set function into a section guarded by LOOSE_OWN_PTR. Adapted to the - new adoptPtr function from PassOwnPtr.h. - - * wtf/PassOwnPtr.h: Tweaked formatting. Renamed the release function - to leakPtr. Added an adoptPtr function that creates a new PassOwnPtr. - Put the constructor and assignment operators that take a raw pointer - into a section guarded by LOOSE_PASS_OWN_PTR. - -2010-07-06 Sam Weinig <sam@webkit.org> - - Reviewed by Darin Adler - - Update comment in StringExtras.h to be more accurate. - - * wtf/StringExtras.h: + Moved the "nextAtom" allocation pointer into MarkedBlock for better encapsulation + https://bugs.webkit.org/show_bug.cgi?id=55079 + + SunSpider reports no change. -2010-07-06 Sheriff Bot <webkit.review.bot@gmail.com> + * runtime/Heap.cpp: + (JSC::Heap::reset): Moved Zombie sweeping here, up from MarkedSpace, + since we want Heap to logically control MarkedSpace. MarkedSpace should + never choose to sweep itself. - Unreviewed, rolling out r62511. - http://trac.webkit.org/changeset/62511 - https://bugs.webkit.org/show_bug.cgi?id=41686 + * runtime/JSCell.h: + (JSC::JSCell::MarkedBlock::allocate): Updated for nextAtom becoming a + member of MarkedBlock. No need to reset nextAtom to firstAtom() when + we reach the end of a block, since there's now an explicit reset pass + during GC. - Breaks Linux/64bit compilation (Requested by xan_ on #webkit). + * runtime/MarkedBlock.cpp: + (JSC::MarkedBlock::MarkedBlock): + * runtime/MarkedBlock.h: + (JSC::MarkedBlock::reset): Added the nextAtom data member, and reordered + some data members to improve cache locality. - * jit/ExecutableAllocator.cpp: - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): - (JSC::FixedVMPoolAllocator::free): - (JSC::ExecutablePool::systemAlloc): - * jit/ExecutableAllocatorPosix.cpp: - (JSC::ExecutableAllocator::reprotectRegion): - (JSC::ExecutableAllocator::cacheFlush): - * jit/ExecutableAllocatorSymbian.cpp: - * jit/ExecutableAllocatorWin.cpp: - * wtf/Platform.h: + * runtime/MarkedSpace.cpp: + (JSC::MarkedSpace::MarkedSpace): + (JSC::MarkedSpace::allocate): + (JSC::MarkedSpace::reset): + * runtime/MarkedSpace.h: + (JSC::CollectorHeap::CollectorHeap): Removed nextAtom, and added an + explicit reset pass. -2010-07-05 Gavin Barraclough <barraclough@apple.com> +2011-02-23 James Robinson <jamesr@chromium.org> - Reviewed by Sam Weinig. + Unreviewed, rolling out r79428. + http://trac.webkit.org/changeset/79428 + https://bugs.webkit.org/show_bug.cgi?id=54714 - https://bugs.webkit.org/show_bug.cgi?id=41641 + Does not work in the Chromium sandbox - Update compile flags to allow use of ExecutableAllocatorFixedVMPool on platforms - other than x86-64 (this may be useful on 32-bit platforms, too). + * JavaScriptCore.exp: - Simplify ifdefs by dividing into thwo broad allocation strategies - (ENABLE_EXECUTABLE_ALLOCATOR_FIXED & ENABLE_EXECUTABLE_ALLOCATOR_DEMAND). +2011-02-23 Adam Roben <aroben@apple.com> - Rename constant used in the code to have names descriptive of their purpose, - rather than their specific value on a given platform. + Fix an off-by-one error in JSC::appendSourceToError - * jit/ExecutableAllocator.cpp: - (JSC::ExecutableAllocator::reprotectRegion): - (JSC::ExecutableAllocator::cacheFlush): - * jit/ExecutableAllocatorFixedVMPool.cpp: - (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): - (JSC::FixedVMPoolAllocator::free): - (JSC::ExecutablePool::systemAlloc): - * jit/ExecutableAllocatorPosix.cpp: - * jit/ExecutableAllocatorSymbian.cpp: - * jit/ExecutableAllocatorWin.cpp: - * wtf/Platform.h: + Looks like this bug has been around since the code was first added in r35245. -2010-07-05 Steve Block <steveblock@google.com> + Fixes <http://webkit.org/b/55052> <rdar://problem/9043512> Crash in JSC::appendSourceToError + when running fast/dom/objc-big-method-name.html on Windows with full page heap enabled Reviewed by Darin Adler. - ThreadingPthreads.cpp should use JNIUtility.h on Android, not outdated jni_utility.h - https://bugs.webkit.org/show_bug.cgi?id=41594 - - * wtf/ThreadingPthreads.cpp: - -2010-07-04 Mark Rowe <mrowe@apple.com> - - Build fix after r62456. - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): Be slightly more consistent in using uint32_t to prevent - warnings about comparisons between signed and unsigned types, and attempts to call an overload - of std::min that doesn't exist. - -2010-07-02 Sam Weinig <sam@webkit.org> - - Reviewed by Darin Adler. - - Patch for https://bugs.webkit.org/show_bug.cgi?id=41553 - Make StringExtras.h versions of snprintf and vsnprintf match the unix versions. - - - MSVC does not ensure the buffers are null terminated as the unix versions do. - - * runtime/JSGlobalObjectFunctions.cpp: Cleanup includes. - * runtime/UString.cpp: Clean up includes. - (JSC::UString::from): Don't pass sizeof(buf) - 1, that is wrong. - * wtf/StringExtras.h: - (snprintf): Ensure null termination of buffer. - (vsnprintf): Ditto. + (JSC::appendSourceToError): When trimming whitespace off the end of the string, examine the + character at stop-1 rather than at stop. At this point in the code, stop represents the + index just past the end of the characters we care about, and can even be just past the end + of the entire data buffer. -2010-07-03 Yong Li <yoli@rim.com> +2011-02-23 Geoffrey Garen <ggaren@apple.com> Reviewed by Darin Adler. - - Make Arguments::MaxArguments clamping work for numbers >= 0x80000000 in - the interpreter as well as the JIT. - - https://bugs.webkit.org/show_bug.cgi?id=41351 - rdar://problem/8142141 - - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): Fix signed integer overflow problem - in op_load_varargs handling. 0xFFFFFFFF was read as -1. - -2010-06-26 Jeremy Orlow <jorlow@chromium.org> - - Reviewed by Dumitru Daniliuc. - - Support for keys and in-memory storage for IndexedDB - https://bugs.webkit.org/show_bug.cgi?id=41252 - - Set the role to Private. - - * JavaScriptCore.xcodeproj/project.pbxproj: - -2010-07-02 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoffrey Garen. - - Move BOM handling out of the lexer and parser - https://bugs.webkit.org/show_bug.cgi?id=41539 - - Doing the BOM stripping in the lexer meant that we could - end up having to strip the BOMs from a source multiple times. - To deal with this we now require all strings provided by - a SourceProvider to already have had the BOMs stripped. - This also simplifies some of the lexer logic. - - * parser/Lexer.cpp: - (JSC::Lexer::setCode): - (JSC::Lexer::sourceCode): - * parser/SourceProvider.h: - (JSC::SourceProvider::SourceProvider): - (JSC::UStringSourceProvider::create): - (JSC::UStringSourceProvider::getRange): - (JSC::UStringSourceProvider::UStringSourceProvider): - * wtf/text/StringImpl.h: - (WebCore::StringImpl::copyStringWithoutBOMs): - -2010-07-03 Patrick Gansterer <paroga@paroga.com> - - Reviewed by Kent Tamura. - - [WINCE] Implement Unicode::isAlphanumeric and Unicode::isArabicChar. - https://bugs.webkit.org/show_bug.cgi?id=41411 - - * wtf/unicode/wince/UnicodeWince.cpp: - (WTF::Unicode::isAlphanumeric): - * wtf/unicode/wince/UnicodeWince.h: - (WTF::Unicode::isArabicChar): - -2010-07-03 Kwang Yul Seo <skyul@company100.net> - - Reviewed by Kent Tamura. - - [BREWMP] Change the CRASH() macro to print "WebKit CRASH" log. - https://bugs.webkit.org/show_bug.cgi?id=41524 - - Print "WebKit CRASH" before crashing. - - * wtf/Assertions.h: - -2010-07-02 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Bug 41565 - Repatching in ARMv7Assembler::repatchLoadPtrToLEA is broken - - This method tried to repatch a LDR (T2) into an ADD (T3) - but it only - repatches the first instruction word. The layout of the fields in the - second word is different, and also needs repatching. - - * assembler/ARMv7Assembler.h: - (JSC::ARMv7Assembler::repatchLoadPtrToLEA): - -2010-07-02 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - Clamp the number of arguments supported by function.apply - https://bugs.webkit.org/show_bug.cgi?id=41351 - <rdar://problem/8142141> - - Add clamping logic to function.apply similar to that - enforced by firefox. We have a smaller clamp than - firefox as our calling convention means that stack - usage is proportional to argument count -- the firefox - limit is larger than you could actually call. - - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - * runtime/Arguments.h: - (JSC::Arguments::): - -2010-07-02 Chao-ying Fu <fu@mips.com> - - Reviewed by Oliver Hunt. - - Re-enable JIT_OPTIMIZE_NATIVE_CALL on MIPS - https://bugs.webkit.org/show_bug.cgi?id=40179 - - Add the MIPS part to re-enable JIT_OPTIMIZE_NATIVE_CALL. - - * jit/JITOpcodes.cpp: - (JSC::JIT::privateCompileCTINativeCall): - * wtf/Platform.h: - -2010-07-02 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Bug 41552 - Clean up ARMv7 vfp code generation - Emit separate opcode individually, remove magic numbers. - - Also remove invalid assert from JSImmediate (number cells are not CELL_MASK aligned). - - * assembler/ARMv7Assembler.h: - (JSC::ARMv7Assembler::): - (JSC::ARMv7Assembler::vadd_F64): - (JSC::ARMv7Assembler::vcmp_F64): - (JSC::ARMv7Assembler::vcvt_F64_S32): - (JSC::ARMv7Assembler::vcvtr_S32_F64): - (JSC::ARMv7Assembler::vdiv_F64): - (JSC::ARMv7Assembler::vldr): - (JSC::ARMv7Assembler::vmov_F64_0): - (JSC::ARMv7Assembler::vmov): - (JSC::ARMv7Assembler::vmrs): - (JSC::ARMv7Assembler::vmul_F64): - (JSC::ARMv7Assembler::vstr): - (JSC::ARMv7Assembler::vsub_F64): - (JSC::ARMv7Assembler::VFPOperand::VFPOperand): - (JSC::ARMv7Assembler::VFPOperand::bits1): - (JSC::ARMv7Assembler::VFPOperand::bits4): - (JSC::ARMv7Assembler::vcvtOp): - (JSC::ARMv7Assembler::ARMInstructionFormatter::vfpOp): - (JSC::ARMv7Assembler::ARMInstructionFormatter::vfpMemOp): - * assembler/MacroAssemblerARMv7.h: - (JSC::MacroAssemblerARMv7::branchDouble): - * runtime/JSImmediate.h: - (JSC::JSValue::isCell): - -2010-07-02 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r62410. - http://trac.webkit.org/changeset/62410 - https://bugs.webkit.org/show_bug.cgi?id=41549 - - accursed last minute changes (Requested by olliej on #webkit). - - * parser/Lexer.cpp: - (JSC::Lexer::setCode): - (JSC::Lexer::copyCodeWithoutBOMs): - (JSC::Lexer::sourceCode): - * parser/SourceProvider.h: - (JSC::): - (JSC::SourceProvider::SourceProvider): - (JSC::SourceProvider::hasBOMs): - (JSC::UStringSourceProvider::create): - (JSC::UStringSourceProvider::getRange): - (JSC::UStringSourceProvider::UStringSourceProvider): - * wtf/text/StringImpl.h: - -2010-07-02 Sam Weinig <sam@webkit.org> - - Reviewed by Geoffrey Garen. - - Patch for https://bugs.webkit.org/show_bug.cgi?id=41548 - Use snprintf instead of sprintf everywhere in JavaScriptCore - - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::encode): - (JSC::globalFuncEscape): - * runtime/UString.cpp: - (JSC::UString::from): - -2010-07-02 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoffrey Garen. - - Move BOM handling out of the lexer and parser - https://bugs.webkit.org/show_bug.cgi?id=41539 - - Doing the BOM stripping in the lexer meant that we could - end up having to strip the BOMs from a source multiple times. - To deal with this we now require all strings provided by - a SourceProvider to already have had the BOMs stripped. - This also simplifies some of the lexer logic. - - * parser/Lexer.cpp: - (JSC::Lexer::setCode): - (JSC::Lexer::sourceCode): - * parser/SourceProvider.h: - (JSC::SourceProvider::SourceProvider): - (JSC::UStringSourceProvider::create): - (JSC::UStringSourceProvider::getRange): - (JSC::UStringSourceProvider::UStringSourceProvider): - * wtf/text/StringImpl.h: - (WebCore::StringImpl::copyStringWithoutBOMs): - -2010-07-02 Renata Hodovan <reni@inf.u-szeged.hu> - - Reviewed by Oliver Hunt. - [ Updated after rollout. ] - - Merged RegExp constructor and RegExp::create methods. - Both functions are called with three parameters and check whether - flags (the third param) is given or not. - Avoid extra hash lookups in RegExpCache::create by passing a pre-computed - iterator parameter. - https://bugs.webkit.org/show_bug.cgi?id=41055 - - * runtime/RegExp.cpp: - (JSC::RegExp::RegExp): - * runtime/RegExp.h: - * runtime/RegExpCache.cpp: - (JSC::RegExpCache::lookupOrCreate): - (JSC::RegExpCache::create): - * runtime/RegExpCache.h: - -2010-07-02 Martin Robinson <mrobinson@igalia.com> - - Unreviewed. Build fix for GTK+. - - Build Lexer.lut.h with the rest of the .lut.h files. Later these should - all probably be moved to DerivedSources. - - * GNUmakefile.am: - -2010-06-23 Martin Robinson <mrobinson@igalia.com> - - Reviewed by Gustavo Noronha Silva. - - [GTK] Separate DerivedSources per-project - https://bugs.webkit.org/show_bug.cgi?id=41109 - - Generate JavaScriptCore derived sources in <builddir>/DerivedSources/JavaScriptCore. - - * GNUmakefile.am: - -2010-07-02 Peter Varga <pvarga@inf.u-szeged.hu> - - Reviewed by Oliver Hunt. - - The alternativeFrameLocation value is wrong in the emitDisjunction function in - case of PatternTerm::TypeParentheticalAssertion. This value needs to be - computed from term.frameLocation instead of term.inputPosition. This mistake caused glibc - memory corruption in some cases. - Layout test added for checking of TypeParentheticalAssertion case. - https://bugs.webkit.org/show_bug.cgi?id=41458 - - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::ByteCompiler::emitDisjunction): - -2010-07-01 Oliver Hunt <oliver@apple.com> - - Reviewed by Maciej Stachowiak. - - Add a FixedArray template to encapsulate fixed length arrays - https://bugs.webkit.org/show_bug.cgi?id=41506 - - This new type is used in place of fixed length C arrays so - that debug builds can guard against attempts to go beyond - the end of the array. - - * JavaScriptCore.xcodeproj/project.pbxproj: - * bytecode/Opcode.cpp: - (JSC::OpcodeStats::~OpcodeStats): - * pcre/pcre_compile.cpp: - (calculateCompiledPatternLength): - * runtime/Collector.cpp: - (JSC::Heap::allocateBlock): - (JSC::Heap::allocate): - * runtime/Collector.h: - (JSC::CollectorBitmap::clearAll): - * runtime/CollectorHeapIterator.h: - (JSC::CollectorHeapIterator::operator*): - * runtime/DateInstanceCache.h: - * runtime/JSString.cpp: - (JSC::JSString::replaceCharacter): - * runtime/JSString.h: - (JSC::RopeBuilder::JSStringFinalizerStruct::): - * runtime/NumericStrings.h: - * runtime/RegExpCache.h: - * runtime/SmallStrings.h: - (JSC::SmallStrings::singleCharacterStrings): - * wtf/AVLTree.h: - * wtf/FixedArray.h: Added. - (WTF::FixedArray::operator[]): - (WTF::FixedArray::data): - -2010-07-01 Zoltan Herczeg <zherczeg@webkit.org> - - Reviewed by Oliver Hunt. - - Improve the main lexer switch by mapping input characters to their type - https://bugs.webkit.org/show_bug.cgi?id=41459 - - Sunsipder: no change (from 532.9ms to 531.5ms) - SunSpider --parse-only: 1.025x as fast (from 33.1ms to 32.3ms) - - * parser/Lexer.cpp: - (JSC::): - (JSC::Lexer::lex): - -2010-07-01 Sam Weinig <sam@webkit.org> - - Rubber-stamped by Ander Carlsson. - - Define HAVE_HOSTED_CORE_ANIMATION on Snow Leopard. - - * wtf/Platform.h: + Rolled back in r79367 with SnowLeopard Release bot crash fixed. + https://bugs.webkit.org/show_bug.cgi?id=54999 + + The crash was caused by failure to update the "nextBlock" pointer when + removing a block from the list while shrinking. The fix is to update the + "nextBlock" pointer. + + This crash was very rare because it only happened in cases where the very + first block in the heap contained no marked cells. -2010-07-01 Gavin Barraclough <barraclough@apple.com> +2011-02-23 Dan Bernstein <mitz@apple.com> - Reviewed by Oliver Hunt. + Reviewed by Gavin Barraclough. - Bug 41490 - Add missing operations to MacroAssemblerARMv7 - Also, make single, double, quad register numbers in ARMv7Assembler distinct & strongly typed. + Include frame numbers in backtraces. + https://bugs.webkit.org/show_bug.cgi?id=55060 - * assembler/ARMv7Assembler.h: - (JSC::ARMRegisters::): - (JSC::ARMRegisters::asSingle): - (JSC::ARMRegisters::asDouble): - (JSC::VFPImmediate::VFPImmediate): - (JSC::VFPImmediate::isValid): - (JSC::VFPImmediate::value): - (JSC::ARMv7Assembler::singleRegisterMask): - (JSC::ARMv7Assembler::doubleRegisterMask): - (JSC::ARMv7Assembler::): - (JSC::ARMv7Assembler::add_S): - (JSC::ARMv7Assembler::neg): - (JSC::ARMv7Assembler::orr_S): - (JSC::ARMv7Assembler::sub): - (JSC::ARMv7Assembler::sub_S): - (JSC::ARMv7Assembler::vadd_F64): - (JSC::ARMv7Assembler::vcmp_F64): - (JSC::ARMv7Assembler::vcvt_F64_S32): - (JSC::ARMv7Assembler::vcvtr_S32_F64): - (JSC::ARMv7Assembler::vdiv_F64): - (JSC::ARMv7Assembler::vldr): - (JSC::ARMv7Assembler::vmov_F64_0): - (JSC::ARMv7Assembler::vmov): - (JSC::ARMv7Assembler::vmul_F64): - (JSC::ARMv7Assembler::vstr): - (JSC::ARMv7Assembler::vsub_F64): - (JSC::ARMv7Assembler::vcvt): - (JSC::ARMv7Assembler::vmem): - * assembler/AbstractMacroAssembler.h: - * assembler/MacroAssemblerARM.h: - * assembler/MacroAssemblerARMv7.h: - (JSC::MacroAssemblerARMv7::fpTempRegisterAsSingle): - (JSC::MacroAssemblerARMv7::neg32): - (JSC::MacroAssemblerARMv7::loadDouble): - (JSC::MacroAssemblerARMv7::divDouble): - (JSC::MacroAssemblerARMv7::convertInt32ToDouble): - (JSC::MacroAssemblerARMv7::branchConvertDoubleToInt32): - (JSC::MacroAssemblerARMv7::zeroDouble): - (JSC::MacroAssemblerARMv7::branchOr32): - (JSC::MacroAssemblerARMv7::set32): - (JSC::MacroAssemblerARMv7::set8): - * assembler/MacroAssemblerMIPS.h: - * assembler/MacroAssemblerX86Common.h: + * wtf/Assertions.cpp: -2010-07-01 Oliver Hunt <oliver@apple.com> +2011-02-23 Xan Lopez <xlopez@igalia.com> - Reviewed by Geoff Garen. + Reviewed by Gavin Barraclough. - Improve reentrancy logic in polymorphic cache stubs - <https://bugs.webkit.org/show_bug.cgi?id=41482> - <rdar://problem/8094380> + latest jsc for armv7 crashes in sunspider tests + https://bugs.webkit.org/show_bug.cgi?id=54667 - Make the polymorphic cache stubs handle reentrancy - better. + Update JIT offset values in ARMv7 after r78732. Fixes crashes in + SunSpider and JavaScript tests. - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - (JSC::getPolymorphicAccessStructureListSlot): + * jit/JIT.h: update values. -2010-07-01 Antti Koivisto <koivisto@iki.fi> +2011-02-23 Sheriff Bot <webkit.review.bot@gmail.com> - Revert accidental commit. + Unreviewed, rolling out r79418. + http://trac.webkit.org/changeset/79418 + https://bugs.webkit.org/show_bug.cgi?id=55043 - * runtime/Collector.cpp: - (JSC::Heap::allocateBlock): + "breaks shlib linux build" (Requested by morrita on #webkit). -2010-06-30 Darin Adler <darin@apple.com> + * JavaScriptCore.gyp/JavaScriptCore.gyp: + * JavaScriptCore.gypi: - Reviewed by Adam Barth. +2011-02-23 Patrick Gansterer <paroga@webkit.org> - Add assertion, off by default, for when you forget to do adoptRef - https://bugs.webkit.org/show_bug.cgi?id=41422 + Reviewed by Alexey Proskuryakov. - * wtf/PassRefPtr.h: Tweaked formatting. Added a new adopted - function, called on the pointer by adoptRef, with an empty inline - default version, meant to be overloaded. Unified the inlining - with a macro named REF_DEREF_INLINE to make it clearer what's - going on in the refIfNotNull/derefIfNotNull functions. Renamed - releaseRef to leakRef, but left the old name in for compatibility - for now. + Use DEFINE_STATIC_LOCAL for ignoreSetMutex in Structure.cpp + https://bugs.webkit.org/show_bug.cgi?id=54831 - * wtf/RefCounted.h: Added code to require adoption and assert if - you don't call adoptRef. For now, it is turned off because of the - LOOSE_REF_COUNTED define in this header. Later we can turn it on - once we get everything working without asserting. + * runtime/InitializeThreading.cpp: + (JSC::initializeThreadingOnce): + * runtime/Structure.cpp: + (JSC::ignoreSetMutex): + (JSC::Structure::Structure): + (JSC::Structure::~Structure): + (JSC::Structure::initializeThreading): + * runtime/Structure.h: -2010-06-29 Michael Saboff <msaboff@apple.com> +2011-02-23 Patrick Gansterer <paroga@webkit.org> Reviewed by Darin Adler. - Bug 41238 - RegExp performance slow on Dromaeo benchmark - - Other javascript engines appear to cache prior results of regular - expression operations. - - Suggest adding some sort of caching mechanism to regular expression - processing. - - Added a single entry cache of match() results to RegExp class. - - Also added performance improvements to UString == operator. - First check the impls for equality. Then get the length of - each of the non-null impls. Next check the sizes for equality. - Then check the data for the case of different impls that point - to the same data (most likely due to substrings from the beginning of - another string). Lastly we check the underlying data for equality. - - * runtime/RegExp.cpp: - (JSC::RegExp::RegExp): - (JSC::RegExp::match): - * runtime/RegExp.h: - * runtime/UString.h: - (JSC::operator==): - -2010-06-29 Nathan Lawrence <nlawrence@apple.com> - - Reviewed by Geoffrey Garen. - - WTF::HashSet iterators are quasi-mutable. Changing the value through - dereferencing an iterator will not change the behavior of methods like - contains or find, but will change the behavior of iterating. - - * wtf/HashSet.h: - (WTF::::begin): - (WTF::::end): - (WTF::::find): - (WTF::::remove): - * wtf/HashTable.h: - -2010-06-29 Martin Robinson <mrobinson@igalia.com> - - Reviewed by Xan Lopez. - - [GTK] Clean up the source lists in the GNUMakefile.am files - https://bugs.webkit.org/show_bug.cgi?id=41229 - - Clean up the GNUMakefile.am a little bit. Alphabetize and conglomerate - the source lists. - - * GNUmakefile.am: - -2010-06-29 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> - - Reviewed by Kenneth Rohde Christiansen. - - [Qt] Fix QtScript build after QScriptValuePrivate ctor changes - https://bugs.webkit.org/show_bug.cgi?id=41307 - - * qt/api/qscriptvalue_p.h: - (QScriptValuePrivate::prototype): - * qt/benchmarks/qscriptengine/qscriptengine.pro: - -2010-06-28 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> - - Reviewed by Kenneth Rohde Christiansen. - - [Qt] QScriptEngine API should contain a newArray function - https://bugs.webkit.org/show_bug.cgi?id=39115 - - * qt/api/qscriptengine.cpp: - (QScriptEngine::newArray): - * qt/api/qscriptengine.h: - * qt/api/qscriptengine_p.cpp: - (QScriptEnginePrivate::newArray): - * qt/api/qscriptengine_p.h: - * qt/tests/qscriptengine/tst_qscriptengine.cpp: - (tst_QScriptEngine::newArray): - -2010-06-28 Xan Lopez <xlopez@igalia.com> - - Reviewed by Gustavo Noronha. - - Install jsc as jsc-X where X is the major API version to allow - parallel installation of both GTK+ 2.x and 3.x versions. + Rename PLATFORM(CF) to USE(CF) + https://bugs.webkit.org/show_bug.cgi?id=53540 - * GNUmakefile.am: - -2010-06-28 John Gregg <johnnyg@google.com> - - Reviewed by Kent Tamura. - - add ENABLE_DIRECTORY_UPLOAD build support - https://bugs.webkit.org/show_bug.cgi?id=41100 - - * Configurations/FeatureDefines.xcconfig: - -2010-06-28 Xan Lopez <xlopez@igalia.com> - - Revert to build jsc, since the tests expect this. - - * GNUmakefile.am: - -2010-06-28 Zoltan Herczeg <zherczeg@webkit.org> - - Reviewed by Oliver Hunt. - - Only one character lookahead should be enough for the lexer - https://bugs.webkit.org/show_bug.cgi?id=41213 - - The lexer had 4 character lookahead before, which required - a complex shifting mechanism. This can be improved by using - only one character lookahead for most decisions, and a - peek() function as a fallback when it is absolutely necessary. - - * parser/Lexer.cpp: - (JSC::Lexer::currentCharacter): - (JSC::Lexer::currentOffset): - (JSC::Lexer::setCode): - (JSC::Lexer::shift): - (JSC::Lexer::peek): - (JSC::Lexer::getUnicodeCharacter): - (JSC::Lexer::shiftLineTerminator): - (JSC::Lexer::lastTokenWasRestrKeyword): - (JSC::Lexer::lex): - (JSC::Lexer::scanRegExp): - (JSC::Lexer::skipRegExp): - * parser/Lexer.h: - -2010-06-28 Lucas De Marchi <lucas.demarchi@profusion.mobi> - - Unreviewed build fix. - - [EFL] Build fix for latest version of Ecore library. - Ecore recently changed return type of callbacks from int to Eina_Bool. - - * wtf/efl/MainThreadEfl.cpp: - (WTF::timeoutFired): Return Eina_Bool instead of int. - -2010-06-28 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> - - Reviewed by Kenneth Rohde Christiansen. - - [Qt] QScriptValue should have API for accessing object properties - https://bugs.webkit.org/show_bug.cgi?id=40903 - - Make possible to access properties inside QScriptValues. While this - still doesn't support the ResolveLocal parameter, it is already useful - for testing the API. - - The tests from upstream QtScript weren't imported since most of them - depend on the setProperty() function as well. A simple test was created. - - * qt/api/qscriptvalue.cpp: - (QScriptValue::property): - * qt/api/qscriptvalue.h: - (QScriptValue::): - * qt/api/qscriptvalue_p.h: - (QScriptValuePrivate::property): - * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: - (tst_QScriptValue::propertySimple): - * qt/tests/qscriptvalue/tst_qscriptvalue.h: - -2010-06-28 Xan Lopez <xlopez@igalia.com> - - Reviewed by Gustavo Noronha. - - [GTK] Add support for GTK+3 - https://bugs.webkit.org/show_bug.cgi?id=41253 - - Suffix jsc with the API version of the library, so that - libwebkitgtk 1.x and 3.x can install jsc. - - * GNUmakefile.am: - -2010-06-27 Kwang Yul Seo <skyul@company100.net> - - Reviewed by Kent Tamura. - - [BREWMP] Turn ENABLE(SINGLE_THREADED) on. - https://bugs.webkit.org/show_bug.cgi?id=41135 - - Brew MP does not support preemptive multi-threading. - Disable threading for Brew MP. - - * wtf/Platform.h: - -2010-06-26 Tony Gentilcore <tonyg@chromium.org> - - Reviewed by Dimitri Glazkov. - - Add an ENABLE_WEB_TIMING option for enabling Web Timing support. - https://bugs.webkit.org/show_bug.cgi?id=38924 - - * Configurations/FeatureDefines.xcconfig: - -2010-06-25 Nathan Lawrence <nlawrence@apple.com> - - Reviewed by Geoffrey Garen. - - We assume in testapi.c that the value aHeapRef refers to will not be - moved. When we have movable objects, this will not be the case. - - * API/tests/testapi.c: - (main): - -2010-06-25 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r61924. - http://trac.webkit.org/changeset/61924 - https://bugs.webkit.org/show_bug.cgi?id=41240 - - It was rolled out, but cq+ wasn't removed (Requested by Ossy_ - on #webkit). - - * runtime/RegExp.cpp: - (JSC::RegExp::RegExp): - (JSC::RegExp::create): - * runtime/RegExp.h: - * runtime/RegExpCache.cpp: - (JSC::RegExpCache::lookupOrCreate): - (JSC::RegExpCache::create): - * runtime/RegExpCache.h: - -2010-06-25 Renata Hodovan <reni@inf.u-szeged.hu> - - Reviewed by Geoffrey Garen. - - Merge RegExp constructor and RegExp::create methods into one. - Both of function are called with tree parameters and check whether - flags (the third param) is given or not. - Simplify hash lookups in RegExpCache::create with giving them an extra - iterator parameter. - https://bugs.webkit.org/show_bug.cgi?id=41055 - - * runtime/RegExp.cpp: - (JSC::RegExp::RegExp): - * runtime/RegExp.h: - * runtime/RegExpCache.cpp: - (JSC::RegExpCache::lookupOrCreate): - (JSC::RegExpCache::create): - * runtime/RegExpCache.h: - -2010-06-25 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> - - Reviewed by Simon Hausmann. - - Introduce QtScript benchmarks. - - The QtScript performance should be tested regularly. The patch introduces - micro benchmarks for existing API. - - [Qt] Performance of the QtScript API is not tested. - https://bugs.webkit.org/show_bug.cgi?id=40911 - - * qt/benchmarks/benchmarks.pri: Copied from JavaScriptCore/qt/tests/tests.pri. - * qt/benchmarks/benchmarks.pro: Added. - * qt/benchmarks/qscriptengine/qscriptengine.pro: Added. - * qt/benchmarks/qscriptengine/tst_qscriptengine.cpp: Added. - (tst_QScriptEngine::checkSyntax_data): - (tst_QScriptEngine::checkSyntax): - (tst_QScriptEngine::constructor): - (tst_QScriptEngine::evaluateString_data): - (tst_QScriptEngine::evaluateString): - (tst_QScriptEngine::evaluateProgram_data): - (tst_QScriptEngine::evaluateProgram): - (tst_QScriptEngine::newObject): - (tst_QScriptEngine::nullValue): - (tst_QScriptEngine::undefinedValue): - (tst_QScriptEngine::globalObject): - (tst_QScriptEngine::toStringHandle): - * qt/benchmarks/qscriptvalue/qscriptvalue.pro: Added. - * qt/benchmarks/qscriptvalue/tst_qscriptvalue.cpp: Added. - (tst_QScriptValue::tst_QScriptValue): - (tst_QScriptValue::~tst_QScriptValue): - (tst_QScriptValue::values_data): - (tst_QScriptValue::ctorBool): - (tst_QScriptValue::ctorReal): - (tst_QScriptValue::ctorNumber): - (tst_QScriptValue::ctorQString): - (tst_QScriptValue::ctorCString): - (tst_QScriptValue::ctorSpecial): - (tst_QScriptValue::ctorQScriptValue): - (tst_QScriptValue::isValid_data): - (tst_QScriptValue::isValid): - (tst_QScriptValue::isBool_data): - (tst_QScriptValue::isBool): - (tst_QScriptValue::isNumber_data): - (tst_QScriptValue::isNumber): - (tst_QScriptValue::isFunction_data): - (tst_QScriptValue::isFunction): - (tst_QScriptValue::isNull_data): - (tst_QScriptValue::isNull): - (tst_QScriptValue::isString_data): - (tst_QScriptValue::isString): - (tst_QScriptValue::isUndefined_data): - (tst_QScriptValue::isUndefined): - (tst_QScriptValue::isObject_data): - (tst_QScriptValue::isObject): - (tst_QScriptValue::isError_data): - (tst_QScriptValue::isError): - (tst_QScriptValue::toString_data): - (tst_QScriptValue::toString): - (tst_QScriptValue::toNumber_data): - (tst_QScriptValue::toNumber): - (tst_QScriptValue::toBool_data): - (tst_QScriptValue::toBool): - (tst_QScriptValue::toInteger_data): - (tst_QScriptValue::toInteger): - (tst_QScriptValue::toInt32_data): - (tst_QScriptValue::toInt32): - (tst_QScriptValue::toUInt32_data): - (tst_QScriptValue::toUInt32): - (tst_QScriptValue::toUInt16_data): - (tst_QScriptValue::toUInt16): - (tst_QScriptValue::toObject_data): - (tst_QScriptValue::toObject): - (tst_QScriptValue::equals_data): - (tst_QScriptValue::equals): - (tst_QScriptValue::strictlyEquals_data): - (tst_QScriptValue::strictlyEquals): - (tst_QScriptValue::instanceOf_data): - (tst_QScriptValue::instanceOf): - -2010-06-25 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoffrey Garen. - - Remove old js parser - https://bugs.webkit.org/show_bug.cgi?id=41222 - - Remove the old yacc parser, this also solves the tiger problem. Which - was a conflict between yacc generated token values and those in the - custom parser - - * Android.mk: - * CMakeLists.txt: - * DerivedSources.make: - * DerivedSources.pro: - * GNUmakefile.am: - * JavaScriptCore.pro: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * parser/Grammar.y: Removed. - * parser/JSParser.cpp: - * parser/JSParser.h: - * parser/Lexer.cpp: - * parser/NodeConstructors.h: - (JSC::Node::Node): - * parser/Parser.cpp: - (JSC::Parser::parse): + * runtime/DatePrototype.cpp: + * runtime/GCActivityCallbackCF.cpp: + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::JSGlobalData): + * wtf/CurrentTime.cpp: * wtf/Platform.h: + * wtf/text/AtomicString.h: + * wtf/text/StringImpl.h: + (WTF::StringImpl::computeHash): + * wtf/text/WTFString.h: + * wtf/unicode/icu/CollatorICU.cpp: + (WTF::Collator::userDefault): -2010-06-25 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> - - Reviewed by Simon Hausmann. - - New QtScript API; setPrototype() and prototype(). - - This patch implements QScriptValue's prototype accessors. - - [Qt] QScriptValue should have accessors to a prototype. - https://bugs.webkit.org/show_bug.cgi?id=39356 - - * qt/api/qscriptvalue.cpp: - (QScriptValue::prototype): - (QScriptValue::setPrototype): - * qt/api/qscriptvalue.h: - * qt/api/qscriptvalue_p.h: - (QScriptValuePrivate::prototype): - (QScriptValuePrivate::setPrototype): - * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: - (tst_QScriptValue::getSetPrototype): - * qt/tests/qscriptvalue/tst_qscriptvalue.h: - -2010-06-25 Lucas De Marchi <lucas.demarchi@profusion.mobi> - - Reviewed by Kenneth Rohde Christiansen. - - [CMake] Add option to enable JIT. - JIT is disabled by default, but now it's possible to enable it through - an option to CMake: -DENABLE_JIT will enable it. - https://bugs.webkit.org/show_bug.cgi?id=40936 - - * CMakeLists.txt: Add missing files and re-sort. - -2010-06-25 Lucas De Marchi <lucas.demarchi@profusion.mobi> - - Reviewed by Gustavo Noronha Silva. - - [CMake] Remove unused variable in EFL build system. It was previously - being used to set the flags of each port but it was superseded by - other flags. - https://bugs.webkit.org/show_bug.cgi?id=40931 - - * jsc/CMakeLists.txt: - -2010-06-25 Nathan Lawrence <nlawrence@apple.com> - - Reviewed by Geoffrey Garen. - - Aligning AssemblerBuffer to 128 bytes gives a 0.4% speedup on - sunspider. - - * assembler/AssemblerBuffer.h: - (JSC::AssemblerBuffer::AssemblerBuffer): - -2010-06-25 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r61842. - http://trac.webkit.org/changeset/61842 - https://bugs.webkit.org/show_bug.cgi?id=41208 - - It broke Windows build (Requested by Ossy_ on #webkit). - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * wtf/OwnPtrCommon.h: - * wtf/brew/OwnPtrBrew.h: Removed. - * wtf/win/OwnPtrWin.h: Removed. - -2010-06-25 Sheriff Bot <webkit.review.bot@gmail.com> +2011-02-23 Fumitoshi Ukai <ukai@chromium.org> - Unreviewed, rolling out r61833. - http://trac.webkit.org/changeset/61833 - https://bugs.webkit.org/show_bug.cgi?id=41205 + Unreviewed build fix for Windows. - It broke Leopard and GTK (Requested by Ossy_ on #webkit). + WebSocket uses insecure random numbers + https://bugs.webkit.org/show_bug.cgi?id=54714 - * runtime/RegExp.cpp: - (JSC::RegExp::RegExp): - (JSC::RegExp::create): - * runtime/RegExp.h: - * runtime/RegExpCache.cpp: - (JSC::RegExpCache::lookupOrCreate): - (JSC::RegExpCache::create): - * runtime/RegExpCache.h: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export WTF::cryptographicallyRandomNumber() -2010-06-25 Kwang Yul Seo <skyul@company100.net> +2011-02-23 Fumitoshi Ukai <ukai@chromium.org> Reviewed by Adam Barth. - Change OwnPtrCommon to include platform-specific headers - https://bugs.webkit.org/show_bug.cgi?id=40279 - - Adding new type to OwnPtrCommon needlessly causes all ports to do full rebuilds. - Change OwnPtrCommon to include platform-specific headers to avoid all ports rebuilds. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * wtf/OwnPtrCommon.h: - * wtf/brew/OwnPtrBrew.h: Added. - * wtf/win/OwnPtrWin.h: Added. - -2010-06-25 Patrick Gansterer <paroga@paroga.com> - - Reviewed by Darin Adler. - - Add the possibility for a head and footer section to create_jit_stubs. - https://bugs.webkit.org/show_bug.cgi?id=36050 - - * create_jit_stubs: - -2010-06-24 Renata Hodovan <reni@inf.u-szeged.hu> - - Reviewed by Geoffrey Garen. - - Merge RegExp constructor and RegExp::create methods into one. - Both of function are called with tree parameters and check whether - flags (the third param) is given or not. - Simplify hash lookups in RegExpCache::create with giving them an extra - iterator parameter. - https://bugs.webkit.org/show_bug.cgi?id=41055 - - * runtime/RegExp.cpp: - (JSC::RegExp::RegExp): - * runtime/RegExp.h: - * runtime/RegExpCache.cpp: - (JSC::RegExpCache::lookupOrCreate): - (JSC::RegExpCache::create): - * runtime/RegExpCache.h: - -2010-06-24 Oliver Hunt <oliver@apple.com> - - Reviewed by Maciej Stachowiak. - - Incorrect use of '+ 4' and 0 instead of tag and payload offsets in JSValue32_64 - https://bugs.webkit.org/show_bug.cgi?id=41193 - - I noticed a use of '+ 4' in some of the 32_64 code paths and realised there - were a few places where endianness was being hardcoded. This patch fixes - the errors i could find through code inspection. - - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::emit_op_resolve_global): - * jit/JITPropertyAccess32_64.cpp: - (JSC::JIT::emit_op_get_by_val): - (JSC::JIT::emit_op_put_by_val): - (JSC::JIT::compileGetDirectOffset): - (JSC::JIT::privateCompilePutByIdTransition): - (JSC::JIT::patchGetByIdSelf): - (JSC::JIT::patchPutByIdReplace): - -2010-06-24 Oliver Hunt <oliver@apple.com> - - Build fix - - Temporarily get the tiger bot working again by disabling the - new JS parser. GCC on tiger is miscompiling the parser and - I don't have access to a tiger machine right now. - - * wtf/Platform.h: + WebSocket uses insecure random numbers + https://bugs.webkit.org/show_bug.cgi?id=54714 - 2010-06-21 Nathan Lawrence <nlawrence@apple.com> - - Reviewed by Geoff Garen. - - https://bugs.webkit.org/show_bug.cgi?id=40128 - Fixed broken debug functionality. - - * interpreter/Interpreter.cpp: - (JSC::Interpreter::dumpRegisters): - Fixed to work with updated call frame. - * runtime/JSImmediate.h: - (JSC::JSValue::isCell): - Added assert for aligned cell. - * runtime/JSValue.cpp: - (JSC::JSValue::description): - Fixed to work with current JSValue implementation. - * runtime/JSZombie.cpp: - (JSC::JSZombie::leakedZombieStructure): - JSombies compile again. - -2010-06-24 Leandro Pereira <leandro@profusion.mobi> - - Unreviewed build fix. - - * CMakeLists.txt: Add JSParser.cpp. - -2010-06-24 Oliver Hunt <oliver@apple.com> - - Reviewed by Maciej Stachowiak. + * JavaScriptCore.exp: Export WTF::cryptographicallyRandomNumber() - Single character string replacement may replace too many characters - https://bugs.webkit.org/show_bug.cgi?id=41138 - <rdar://problem/8097496> +2011-02-22 Adam Barth <abarth@webkit.org> - Simple fix to stop the rope path of single character replacement - once the first replacement occurs. - - * runtime/JSString.cpp: - (JSC::JSString::replaceCharacter): - -2010-06-24 Gabor Loki <loki@webkit.org> - - Reviewed by Gavin Barraclough. - - Fix the length of instruction stream controlled by constant pool - https://bugs.webkit.org/show_bug.cgi?id=40293 - - The initial/maximum length of instruction stream (m_maxDistance) should - be set when the first constant arrives to the constant pool. Otherwise - the constant pool could be placed into an uninterrupted sequence. - - * assembler/AssemblerBufferWithConstantPool.h: - (JSC::): - -2010-06-24 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - We assume bytecodeOffset will always return a value > 1, - so we adjust the failure case to return 1 instead of 0. - - * bytecode/CodeBlock.h: - (JSC::CodeBlock::bytecodeOffset): + Reviewed by Ojan Vafai. -2010-06-23 Oliver Hunt <oliver@apple.com> + Add missing files to JavaScriptCore.gypi + https://bugs.webkit.org/show_bug.cgi?id=55020 - Reviewed by Gavin Barraclough. + gypi files are supposed to list every file under the sun. This patch + adds some missing files and sorts the rest. - Custom-written JavaScript parser - https://bugs.webkit.org/show_bug.cgi?id=34019 + * JavaScriptCore.gypi: - Implement a recursive descent parser similar to that used by V8 and - SpiderMonkey. Greater than 2x improvement in SunSpider parsing tests. +2011-02-22 Sheriff Bot <webkit.review.bot@gmail.com> - The parser consists of a JSParser class that uses a TreeBuilder to actually - build the AST. There are currently two builders -- the ASTBuilder and - SyntaxChecker which separate the job of building an AST for code generation - and simply checking syntactic correctness. + Unreviewed, rolling out r79367. + http://trac.webkit.org/changeset/79367 + https://bugs.webkit.org/show_bug.cgi?id=55012 - There's still some less than ideal code remaining in the parser to allow - us to retain the existing lexing code with minimal changes. We'll tidy - this up at a later date. + all layout tests are crashing on Snow Leopard (Requested by + rniwa on #webkit). * GNUmakefile.am: * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.vcproj/WTF/WTF.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: - * parser/ASTBuilder.h: Added. - (JSC::ASTBuilder::BinaryOpInfo::BinaryOpInfo): - (JSC::ASTBuilder::AssignmentInfo::AssignmentInfo): - (JSC::ASTBuilder::ASTBuilder): - (JSC::ASTBuilder::createSourceElements): - (JSC::ASTBuilder::varDeclarations): - (JSC::ASTBuilder::funcDeclarations): - (JSC::ASTBuilder::features): - (JSC::ASTBuilder::numConstants): - (JSC::ASTBuilder::appendToComma): - (JSC::ASTBuilder::createCommaExpr): - (JSC::ASTBuilder::createLogicalNot): - (JSC::ASTBuilder::createUnaryPlus): - (JSC::ASTBuilder::createVoid): - (JSC::ASTBuilder::thisExpr): - (JSC::ASTBuilder::createResolve): - (JSC::ASTBuilder::createObjectLiteral): - (JSC::ASTBuilder::createArray): - (JSC::ASTBuilder::createNumberExpr): - (JSC::ASTBuilder::createString): - (JSC::ASTBuilder::createBoolean): - (JSC::ASTBuilder::createNull): - (JSC::ASTBuilder::createBracketAccess): - (JSC::ASTBuilder::createDotAccess): - (JSC::ASTBuilder::createRegex): - (JSC::ASTBuilder::createNewExpr): - (JSC::ASTBuilder::createConditionalExpr): - (JSC::ASTBuilder::createAssignResolve): - (JSC::ASTBuilder::createFunctionExpr): - (JSC::ASTBuilder::createFunctionBody): - (JSC::ASTBuilder::createGetterOrSetterProperty): - (JSC::ASTBuilder::createArguments): - (JSC::ASTBuilder::createArgumentsList): - (JSC::ASTBuilder::createProperty): - (JSC::ASTBuilder::createPropertyList): - (JSC::ASTBuilder::createElementList): - (JSC::ASTBuilder::createFormalParameterList): - (JSC::ASTBuilder::createClause): - (JSC::ASTBuilder::createClauseList): - (JSC::ASTBuilder::setUsesArguments): - (JSC::ASTBuilder::createFuncDeclStatement): - (JSC::ASTBuilder::createBlockStatement): - (JSC::ASTBuilder::createExprStatement): - (JSC::ASTBuilder::createIfStatement): - (JSC::ASTBuilder::createForLoop): - (JSC::ASTBuilder::createForInLoop): - (JSC::ASTBuilder::createEmptyStatement): - (JSC::ASTBuilder::createVarStatement): - (JSC::ASTBuilder::createReturnStatement): - (JSC::ASTBuilder::createBreakStatement): - (JSC::ASTBuilder::createContinueStatement): - (JSC::ASTBuilder::createTryStatement): - (JSC::ASTBuilder::createSwitchStatement): - (JSC::ASTBuilder::createWhileStatement): - (JSC::ASTBuilder::createDoWhileStatement): - (JSC::ASTBuilder::createLabelStatement): - (JSC::ASTBuilder::createWithStatement): - (JSC::ASTBuilder::createThrowStatement): - (JSC::ASTBuilder::createDebugger): - (JSC::ASTBuilder::createConstStatement): - (JSC::ASTBuilder::appendConstDecl): - (JSC::ASTBuilder::appendStatement): - (JSC::ASTBuilder::addVar): - (JSC::ASTBuilder::combineCommaNodes): - (JSC::ASTBuilder::evalCount): - (JSC::ASTBuilder::appendBinaryExpressionInfo): - (JSC::ASTBuilder::operatorStackPop): - (JSC::ASTBuilder::operatorStackHasHigherPrecedence): - (JSC::ASTBuilder::getFromOperandStack): - (JSC::ASTBuilder::shrinkOperandStackBy): - (JSC::ASTBuilder::appendBinaryOperation): - (JSC::ASTBuilder::operatorStackAppend): - (JSC::ASTBuilder::popOperandStack): - (JSC::ASTBuilder::appendUnaryToken): - (JSC::ASTBuilder::unaryTokenStackLastType): - (JSC::ASTBuilder::unaryTokenStackLastStart): - (JSC::ASTBuilder::unaryTokenStackRemoveLast): - (JSC::ASTBuilder::assignmentStackAppend): - (JSC::ASTBuilder::createAssignment): - (JSC::ASTBuilder::Scope::Scope): - (JSC::ASTBuilder::setExceptionLocation): - (JSC::ASTBuilder::incConstants): - (JSC::ASTBuilder::usesThis): - (JSC::ASTBuilder::usesCatch): - (JSC::ASTBuilder::usesClosures): - (JSC::ASTBuilder::usesArguments): - (JSC::ASTBuilder::usesAssignment): - (JSC::ASTBuilder::usesWith): - (JSC::ASTBuilder::usesEval): - (JSC::ASTBuilder::createNumber): - (JSC::ASTBuilder::makeTypeOfNode): - (JSC::ASTBuilder::makeDeleteNode): - (JSC::ASTBuilder::makeNegateNode): - (JSC::ASTBuilder::makeBitwiseNotNode): - (JSC::ASTBuilder::makeMultNode): - (JSC::ASTBuilder::makeDivNode): - (JSC::ASTBuilder::makeAddNode): - (JSC::ASTBuilder::makeSubNode): - (JSC::ASTBuilder::makeLeftShiftNode): - (JSC::ASTBuilder::makeRightShiftNode): - (JSC::ASTBuilder::makeFunctionCallNode): - (JSC::ASTBuilder::makeBinaryNode): - (JSC::ASTBuilder::makeAssignNode): - (JSC::ASTBuilder::makePrefixNode): - (JSC::ASTBuilder::makePostfixNode): - * parser/JSParser.cpp: Added. - (JSC::JSParser::AllowInOverride::AllowInOverride): - (JSC::JSParser::AllowInOverride::~AllowInOverride): - (JSC::JSParser::token): - (JSC::JSParser::next): - (JSC::JSParser::consume): - (JSC::JSParser::match): - (JSC::JSParser::tokenStart): - (JSC::JSParser::tokenLine): - (JSC::JSParser::tokenEnd): - (JSC::JSParser::): - (JSC::JSParser::autoSemiColon): - (JSC::JSParser::canRecurse): - (JSC::JSParser::lastTokenEnd): - (JSC::jsParse): - (JSC::JSParser::JSParser): - (JSC::JSParser::parseProgram): - (JSC::JSParser::allowAutomaticSemicolon): - (JSC::JSParser::parseSourceElements): - (JSC::JSParser::parseVarDeclaration): - (JSC::JSParser::parseConstDeclaration): - (JSC::JSParser::parseDoWhileStatement): - (JSC::JSParser::parseWhileStatement): - (JSC::JSParser::parseVarDeclarationList): - (JSC::JSParser::parseConstDeclarationList): - (JSC::JSParser::parseForStatement): - (JSC::JSParser::parseBreakStatement): - (JSC::JSParser::parseContinueStatement): - (JSC::JSParser::parseReturnStatement): - (JSC::JSParser::parseThrowStatement): - (JSC::JSParser::parseWithStatement): - (JSC::JSParser::parseSwitchStatement): - (JSC::JSParser::parseSwitchClauses): - (JSC::JSParser::parseSwitchDefaultClause): - (JSC::JSParser::parseTryStatement): - (JSC::JSParser::parseDebuggerStatement): - (JSC::JSParser::parseBlockStatement): - (JSC::JSParser::parseStatement): - (JSC::JSParser::parseFormalParameters): - (JSC::JSParser::parseFunctionBody): - (JSC::JSParser::parseFunctionInfo): - (JSC::JSParser::parseFunctionDeclaration): - (JSC::JSParser::parseExpressionOrLabelStatement): - (JSC::JSParser::parseExpressionStatement): - (JSC::JSParser::parseIfStatement): - (JSC::JSParser::parseExpression): - (JSC::JSParser::parseAssignmentExpression): - (JSC::JSParser::parseConditionalExpression): - (JSC::isUnaryOp): - (JSC::JSParser::isBinaryOperator): - (JSC::JSParser::parseBinaryExpression): - (JSC::JSParser::parseProperty): - (JSC::JSParser::parseObjectLiteral): - (JSC::JSParser::parseArrayLiteral): - (JSC::JSParser::parsePrimaryExpression): - (JSC::JSParser::parseArguments): - (JSC::JSParser::parseMemberExpression): - (JSC::JSParser::parseUnaryExpression): - * parser/JSParser.h: Added. - (JSC::): - (JSC::JSTokenInfo::JSTokenInfo): - * parser/Lexer.cpp: - (JSC::Lexer::lex): - * parser/Lexer.h: - (JSC::Lexer::setLastLineNumber): - (JSC::Lexer::lastLineNumber): - * parser/NodeConstructors.h: - (JSC::Node::Node): - * parser/Parser.cpp: - (JSC::Parser::parse): - * parser/SyntaxChecker.h: Added. - (JSC::SyntaxChecker::SyntaxChecker): - (JSC::SyntaxChecker::createSourceElements): - (JSC::SyntaxChecker::makeFunctionCallNode): - (JSC::SyntaxChecker::appendToComma): - (JSC::SyntaxChecker::createCommaExpr): - (JSC::SyntaxChecker::makeAssignNode): - (JSC::SyntaxChecker::makePrefixNode): - (JSC::SyntaxChecker::makePostfixNode): - (JSC::SyntaxChecker::makeTypeOfNode): - (JSC::SyntaxChecker::makeDeleteNode): - (JSC::SyntaxChecker::makeNegateNode): - (JSC::SyntaxChecker::makeBitwiseNotNode): - (JSC::SyntaxChecker::createLogicalNot): - (JSC::SyntaxChecker::createUnaryPlus): - (JSC::SyntaxChecker::createVoid): - (JSC::SyntaxChecker::thisExpr): - (JSC::SyntaxChecker::createResolve): - (JSC::SyntaxChecker::createObjectLiteral): - (JSC::SyntaxChecker::createArray): - (JSC::SyntaxChecker::createNumberExpr): - (JSC::SyntaxChecker::createString): - (JSC::SyntaxChecker::createBoolean): - (JSC::SyntaxChecker::createNull): - (JSC::SyntaxChecker::createBracketAccess): - (JSC::SyntaxChecker::createDotAccess): - (JSC::SyntaxChecker::createRegex): - (JSC::SyntaxChecker::createNewExpr): - (JSC::SyntaxChecker::createConditionalExpr): - (JSC::SyntaxChecker::createAssignResolve): - (JSC::SyntaxChecker::createFunctionExpr): - (JSC::SyntaxChecker::createFunctionBody): - (JSC::SyntaxChecker::createArguments): - (JSC::SyntaxChecker::createArgumentsList): - (JSC::SyntaxChecker::createProperty): - (JSC::SyntaxChecker::createPropertyList): - (JSC::SyntaxChecker::createElementList): - (JSC::SyntaxChecker::createFormalParameterList): - (JSC::SyntaxChecker::createClause): - (JSC::SyntaxChecker::createClauseList): - (JSC::SyntaxChecker::setUsesArguments): - (JSC::SyntaxChecker::createFuncDeclStatement): - (JSC::SyntaxChecker::createBlockStatement): - (JSC::SyntaxChecker::createExprStatement): - (JSC::SyntaxChecker::createIfStatement): - (JSC::SyntaxChecker::createForLoop): - (JSC::SyntaxChecker::createForInLoop): - (JSC::SyntaxChecker::createEmptyStatement): - (JSC::SyntaxChecker::createVarStatement): - (JSC::SyntaxChecker::createReturnStatement): - (JSC::SyntaxChecker::createBreakStatement): - (JSC::SyntaxChecker::createContinueStatement): - (JSC::SyntaxChecker::createTryStatement): - (JSC::SyntaxChecker::createSwitchStatement): - (JSC::SyntaxChecker::createWhileStatement): - (JSC::SyntaxChecker::createWithStatement): - (JSC::SyntaxChecker::createDoWhileStatement): - (JSC::SyntaxChecker::createLabelStatement): - (JSC::SyntaxChecker::createThrowStatement): - (JSC::SyntaxChecker::createDebugger): - (JSC::SyntaxChecker::createConstStatement): - (JSC::SyntaxChecker::appendConstDecl): - (JSC::SyntaxChecker::createGetterOrSetterProperty): - (JSC::SyntaxChecker::appendStatement): - (JSC::SyntaxChecker::addVar): - (JSC::SyntaxChecker::combineCommaNodes): - (JSC::SyntaxChecker::evalCount): - (JSC::SyntaxChecker::appendBinaryExpressionInfo): - (JSC::SyntaxChecker::operatorStackPop): - * runtime/JSGlobalData.h: - * wtf/Platform.h: - * wtf/ThreadSpecific.h: - (WTF::T): - -2010-06-23 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> - - Reviewed by Simon Hausmann. - - Optimization of the QScriptValuePrivate. - - Patch change only internals of the QScriptValuePrivate. - Most of the QScriptValuePrivate's attributes were moved - into an union. - - [Qt] Optimization of the QScriptVAluePrivate. - https://bugs.webkit.org/show_bug.cgi?id=40415 - - * qt/api/qscriptengine_p.cpp: - (QScriptEnginePrivate::globalObject): - * qt/api/qscriptvalue_p.h: - (QScriptValuePrivate::): - (QScriptValuePrivate::~QScriptValuePrivate): - (QScriptValuePrivate::QScriptValuePrivate): - (QScriptValuePrivate::toString): - (QScriptValuePrivate::toNumber): - (QScriptValuePrivate::toBool): - (QScriptValuePrivate::toObject): - (QScriptValuePrivate::equals): - (QScriptValuePrivate::strictlyEquals): - (QScriptValuePrivate::assignEngine): - (QScriptValuePrivate::operator JSValueRef): - (QScriptValuePrivate::operator JSObjectRef): - (QScriptValuePrivate::refinedJSValue): + * runtime/MarkedBlock.cpp: + (JSC::MarkedBlock::MarkedBlock): + * runtime/MarkedBlock.h: + * runtime/MarkedSpace.cpp: + (JSC::MarkedSpace::destroy): + (JSC::MarkedSpace::allocateBlock): + (JSC::MarkedSpace::freeBlock): + (JSC::MarkedSpace::allocate): + (JSC::MarkedSpace::shrink): + (JSC::MarkedSpace::reset): + * runtime/MarkedSpace.h: + (JSC::CollectorHeap::collectorBlock): + * wtf/CMakeLists.txt: + * wtf/DoublyLinkedList.h: Removed. -2010-06-23 Kwang Yul Seo <skyul@company100.net> +2011-02-22 Geoffrey Garen <ggaren@apple.com> Reviewed by Oliver Hunt. - [GTK] Implement ThreadSpecific with glib - https://bugs.webkit.org/show_bug.cgi?id=39829 - - Implement ThreadSpecific with glib's GStaticPrivate. - This patch makes it possible to build GTK port without pthread. - - * wtf/ThreadSpecific.h: - (WTF::::ThreadSpecific): - (WTF::::~ThreadSpecific): - (WTF::::get): - (WTF::::set): - (WTF::::destroy): - -2010-06-23 Leandro Pereira <leandro@profusion.mobi> - - Unreviewed build fix. - - * CMakeLists.txt: Add runtime/RegExpCache.cpp. - -2010-06-22 Renata Hodovan <hodovan@inf.u-szeged.hu> - - Reviewed by Geoffrey Garen. - - Adding regular expression caching to JavaScriptCore - https://bugs.webkit.org/show_bug.cgi?id=38142 - - The cache is based on Round Robin eviction policy, and - can cache at most 256 character long regular expressions, - and at most 256 of them. These values can be changed at compile time. + Manage MarkedBlocks in a linked list instead of a vector, so arbitrary removal is O(1) + https://bugs.webkit.org/show_bug.cgi?id=54999 + + SunSpider reports no change. * GNUmakefile.am: * JavaScriptCore.gypi: - * JavaScriptCore.pro: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: - * JavaScriptCore.xcodeproj/project.pbxproj: - * bytecompiler/NodesCodegen.cpp: - (JSC::RegExpNode::emitBytecode): - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::JSGlobalData): - (JSC::JSGlobalData::~JSGlobalData): - * runtime/JSGlobalData.h: - (JSC::JSGlobalData::regExpCache): - * runtime/RegExpCache.cpp: Added. - (JSC::RegExpCache::lookupOrCreate): - (JSC::RegExpCache::create): - (JSC::RegExpCache::RegExpCache): - * runtime/RegExpCache.h: Added. - * runtime/RegExpConstructor.cpp: - (JSC::constructRegExp): - * runtime/RegExpKey.h: Added. - (JSC::RegExpKey::RegExpKey): - (JSC::RegExpKey::getFlagsValue): - (WTF::operator==): - (WTF::): - * runtime/RegExpPrototype.cpp: - (JSC::regExpProtoFuncCompile): - * runtime/StringPrototype.cpp: - (JSC::stringProtoFuncMatch): - (JSC::stringProtoFuncSearch): - -2010-06-22 Gabor Loki <loki@webkit.org> - - Reviewed by Geoffrey Garen. - - Add native call support for ARM and Thumb-2 JIT. - https://bugs.webkit.org/show_bug.cgi?id=40231 - - * jit/JITOpcodes.cpp: - (JSC::JIT::privateCompileCTINativeCall): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::privateCompileCTINativeCall): - * wtf/Platform.h: - -2010-06-21 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoffrey Garen. - - Make JSC more resilient in the face of parse failures - https://bugs.webkit.org/show_bug.cgi?id=40951 - - A number of recent bugs have occurred due to issues like miscounting - BOMs, etc which lead to interesting crashes later on. Adding this - logic hardens JSC in the face of these errors, and has no impact on - performance (32bit jit actually gets 0.7% faster but I put that down - to cache effects). - - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): - (JSC::CodeBlock::lineNumberForBytecodeOffset): - (JSC::CodeBlock::expressionRangeForBytecodeOffset): - (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset): - * bytecode/CodeBlock.h: - (JSC::CodeBlock::bytecodeOffset): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::execute): - (JSC::Interpreter::executeCall): - (JSC::Interpreter::executeConstruct): - (JSC::Interpreter::prepareForRepeatCall): - (JSC::Interpreter::privateExecute): - * jit/JITOpcodes.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - * runtime/ArrayPrototype.cpp: - (JSC::isNumericCompareFunction): - * runtime/Executable.cpp: - (JSC::FunctionExecutable::compileForCall): - (JSC::FunctionExecutable::compileForConstruct): - (JSC::FunctionExecutable::generateJITCodeForCall): - (JSC::FunctionExecutable::generateJITCodeForConstruct): - (JSC::FunctionExecutable::reparseExceptionInfo): - (JSC::EvalExecutable::reparseExceptionInfo): - * runtime/Executable.h: - (JSC::FunctionExecutable::bytecodeForCall): - (JSC::FunctionExecutable::bytecodeForConstruct): - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::numericCompareFunction): - -2010-06-21 John Sullivan <sullivan@apple.com> - - Reviewed by Adam Roben. - - RetainPtr can't be used in HashMaps or HashSets - <https://bugs.webkit.org/show_bug.cgi?id=40938> - - Added hashing knowledge similar to that in COMPtr.h. - - * wtf/RetainPtr.h: - (WTF::RetainPtr::RetainPtr): - New function, copied from COMPtr.h but for the type change. - (WTF::RetainPtr::isHashTableDeletedValue): - Ditto. - (WTF::RetainPtr::hashTableDeletedValue): - Ditto. - Added template code for HashTraits and PtrHash copied from COMPtr.h but for the type change. - The only difference is that constructDeletedValue() matches the RefPtr implementation (in HashTraits.h) - rather than the COMPtr implementation. - -2010-06-19 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoffrey Garen. - - Need to ensure that we grow the RegisterFile when creating a callframe for host code - https://bugs.webkit.org/show_bug.cgi?id=40858 - <rdar://problem/8108986> - - In the past the use of the callframe in hostcode was much more - limited. Now that we expect the callframe to always be valid - we need to grow the RegisterFile so that this is actually the - case. In this particular case the problem was failing to grow - the registerfile could lead to a callframe that extended beyond - RegisterFiler::end(), so vm re-entry would clobber the callframe - other scenarios could also lead to badness. - - I was unable to construct a simple testcase to trigger badness, - and any such testcase would be so dependent on exact vm stack - layout that it would be unlikely to work as a testcase following - any callframe or register allocation changes anyway. - - Thankfully the new assertion I added should help to catch these - failures in future, and triggers on a couple of tests currently. - - * interpreter/CallFrame.cpp: - (JSC::CallFrame::registerFile): - * interpreter/CallFrame.h: - (JSC::ExecState::init): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - -2010-06-21 Satish Sampath <satish@chromium.org> - - Reviewed by Steve Block. - - Speech Input Patch 0: Added compilation argument to conditionally compile pending patches. - https://bugs.webkit.org/show_bug.cgi?id=40878 - - * Configurations/FeatureDefines.xcconfig: - -2010-06-21 Kwang Yul Seo <skyul@company100.net> - - Reviewed by Kent Tamura. - - [BREWMP] Use global new/delete operator overloading with USE_SYSTEM_MALLOC=1 - https://bugs.webkit.org/show_bug.cgi?id=40653 - - Currently, other ports do not use global new/delete operator overloading - when USE_SYSTEM_MALLOC=1. Brew MP uses system malloc, but it needs to enable - "global fastMalloc new" because the default new/delete causes crash on device. - We need to replace them with Brew MP's MALLOC/FREE. - - * wtf/FastMalloc.h: - -2010-06-18 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> - - Reviewed by Simon Hausmann. - - [Qt] Work around a build problem with libjscore on Symbian. - https://bugs.webkit.org/show_bug.cgi?id=40840 - - Sbsv2 sometimes have problems with debug/release configuration - determination causing QtWebKit in release to try linking with the debug - JavaScriptCore static library. This patch limit the jscore/jscored - r58306 fix necessary for mac builds only to the mac platform to prevent the - different name problem. - - The real fix would be to fix qmake or the toolchain, this patch might - help meanwhile. - - * JavaScriptCore.pri: - -2010-06-21 Patrick Gansterer <paroga@paroga.com> - - Reviewed by Kent Tamura. - - Buildfix after r61338. - https://bugs.webkit.org/show_bug.cgi?id=40888 - - roundUpAllocationSize is needed in RegisterFile.h. - - * jit/ExecutableAllocator.h: - -2010-06-19 Kwang Yul Seo <skyul@company100.net> - - Reviewed by Darin Adler. - - Include <string.h> in StringExtras.h - https://bugs.webkit.org/show_bug.cgi?id=40808 - - Without string.h, RVCT 2.2 can't compile StringExtras.h. - It can't find strlen and strncmp. - - * wtf/StringExtras.h: - -2010-06-19 Thiago Macieira <thiago.macieira@nokia.com> - - Reviewed by Kenneth Rohde Christiansen. - - Don't use __attribute__((may_alias)) with the Intel compiler, - as it doesn't understand it. - - * wtf/Vector.h: - -2010-06-19 Thiago Macieira <thiago.macieira@nokia.com> - - Reviewed by Kenneth Rohde Christiansen. - - Fix compilation with the Intel C++ compiler (11.1.072). - - Like RVCT, label pointers must be void*, not const void*. - - * bytecode/Opcode.h: - -2010-06-19 Thiago Macieira <thiago.macieira@nokia.com> - - Reviewed by Kenneth Rohde Christiansen. - - Add the WTF_COMPILER_INTEL for when the Intel compiler is used - for building. Usually, the Intel compiler masquerades as - another compiler in the system and gets away with it, but some - times specific fixes are required (such as when using language - extensions). - - * wtf/Platform.h: - -2010-06-18 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoffrey Garen. - - Incorrect handling of multiple BOMs scattered through a file. - https://bugs.webkit.org/show_bug.cgi?id=40865 - - When determining the offset of open and close braces in a source - with BOMs we were finishing our count early as we failed to account - for BOMs prior to the open/close brace positions effecting those - positions. - - * parser/Lexer.cpp: - (JSC::Lexer::sourceCode): - -2010-06-17 Oliver Hunt <oliver@apple.com> - - Reviewed by Sam Weinig. - - Don't throw away exception information for functions that use exceptions - https://bugs.webkit.org/show_bug.cgi?id=40786 - - Simple patch to stop JSC from throwing away the exception information - of a function that uses "exceptiony" features like try and throw. This - is a speed up for catching expressions but it's difficult to quantify as - the old cost of reparsing is amortised over all exceptions caught in the - effected function. - - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::generate): - (JSC::BytecodeGenerator::emitCatch): - * bytecompiler/BytecodeGenerator.h: - (JSC::BytecodeGenerator::emitThrow): - -2010-06-18 Anders Carlsson <andersca@apple.com> - - Reviewed by Sam Weinig. - - Add PlatformStrategies and PluginStrategy classes. - https://bugs.webkit.org/show_bug.cgi?id=40850 - - * wtf/Platform.h: - -2010-06-18 Leandro Pereira <leandro@profusion.mobi> - - [EFL] Unreviewed build fix. - - * wtf/CMakeLists.txt: Add MD5.cpp. - -2010-06-17 Shu Chang <chang.shu@nokia.com> - - Reviewed by Kenneth Rohde Christiansen. - - [Qt] Fix the link error on symbian with ENABLE_JIT=0. - 1. Add "#if ENABLE(JIT)" in the header file; - 2. Put feature enable/disable logic to a common.pri so - that both JavaScriptCore.pri and WebCore.pri can share. - - https://bugs.webkit.org/show_bug.cgi?id=40780 - - * JavaScriptCore.pri: - * jit/ExecutableAllocator.h: - -2010-06-17 Darin Adler <darin@apple.com> - - Reviewed by Sam Weinig. - - Use adoptRef and create functions in more code paths - https://bugs.webkit.org/show_bug.cgi?id=40760 - - * API/JSClassRef.h: Removed unneeded include of RefCounted.h. - * API/JSWeakObjectMapRefPrivate.cpp: Ditto. - - * bytecode/CodeBlock.h: - (JSC::FunctionCodeBlock::FunctionCodeBlock): Use the - SharedSymbolTable::create function instead of calling new directly. - - * runtime/SymbolTable.h: Added a create function to the SharedSymbolTable - class and made the constructor private. - -2010-06-17 Mark Brand <mabrand@mabrand.nl> - - Reviewed by Simon Hausmann. - - [Qt] use "win32-g++*" scope to match all MinGW makespecs - - The scope "win32-g++" comes from the name of the makespec. However, it - is frequently used to check for MinGW. This works fine as long as - win32-g++ is the only makespec for MinGW. Now we need the wildcard - to cover "win32-g++-cross" as well. - - * JavaScriptCore.pro: - -2010-06-16 Darin Adler <darin@apple.com> - - Reviewed by David Levin. - - Deploy adoptRef in more places, including all HTML and MathML elements - https://bugs.webkit.org/show_bug.cgi?id=39941 - - * wtf/ThreadSafeShared.h: Made the constructor protected and removed the - unneeded support for initial reference counts other than 1. + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.xcodeproj/project.pbxproj: So many build systems, so little time. + * wtf/CMakeLists.txt: -2010-06-16 Peter Varga <pvarga@inf.u-szeged.hu> + * runtime/MarkedBlock.cpp: + (JSC::MarkedBlock::MarkedBlock): + * runtime/MarkedBlock.h: + (JSC::MarkedBlock::setPrev): + (JSC::MarkedBlock::setNext): + (JSC::MarkedBlock::prev): + (JSC::MarkedBlock::next): Added linked list data members and accessors. - Reviewed by Geoffrey Garen. + * runtime/MarkedSpace.cpp: + (JSC::MarkedSpace::destroy): + (JSC::MarkedSpace::allocateBlock): Stop using vector, since it doesn't exist anymore. - Store matchBegin directly in the array of output instead of the stack. - https://bugs.webkit.org/show_bug.cgi?id=38988 + (JSC::MarkedSpace::freeBlocks): New helper function for updating relevant + data structures when freeing blocks. - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::generateDisjunction): - (JSC::Yarr::RegexGenerator::generate): + (JSC::MarkedSpace::allocate): Updated for nextBlock being a pointer and + not a vector index. -2010-06-15 Anders Carlsson <andersca@apple.com> + (JSC::MarkedSpace::shrink): Construct a temporary list of empties and + then free them, to avoid modifying our hash table while iterating it. + This wasn't a concern before because we were using indirect array + indexing, not direct pointer indexing. - Reviewed by Sam Weinig. + (JSC::MarkedSpace::reset): Updated for nextBlock being a pointer and + not a vector index. - Make JavaScriptCore build with clang++. + * runtime/MarkedSpace.h: + (JSC::CollectorHeap::CollectorHeap): Changed data type from vector to linked list. - * jit/JITInlineMethods.h: - (JSC::JIT::emitPutVirtualRegister): - Explicitly cast to an int. + * wtf/DoublyLinkedList.h: Added. New linked list class. + (WTF::::DoublyLinkedList): + (WTF::::isEmpty): + (WTF::::head): + (WTF::::append): + (WTF::::remove): - * yarr/RegexCompiler.cpp: - (JSC::Yarr::compileRegex): - Return 0 instead of false. +2011-02-22 Gavin Barraclough <barraclough@apple.com> -2010-06-15 Adam Roben <aroben@apple.com> + Windows build fix. - Make WebCore's and JavaScriptCore's DerivedSources available for debugging in production builds + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - Fixes <http://webkit.org/b/40626> <rdar://problem/8094205>. +2011-02-22 Gavin Barraclough <barraclough@apple.com> Reviewed by Sam Weinig. - * JavaScriptCore.vcproj/JavaScriptCore.make: Copy the contents of - JavaScriptCore's DerivedSources directory to - AppleInternal/Sources/JavaScriptCore. - -2010-06-15 Gabor Loki <loki@webkit.org> - - Rubber-stamped by Eric Seidel. - - Fix invalid access to non-static data member warning in JITPropertyAccess32_64 on ARM - https://bugs.webkit.org/show_bug.cgi?id=40423 - - Using OBJECT_OFFSETOF macro instead of objectof to bypass access to - non-static data member warning. - - * jit/JITPropertyAccess32_64.cpp: - (JSC::JIT::privateCompilePutByIdTransition): - -2010-06-11 Eric Seidel <eric@webkit.org> - - Reviewed by Adam Barth. - - Rename the rest of the *Tokenizer classes to *DocumentParser - https://bugs.webkit.org/show_bug.cgi?id=40507 - - * wtf/Platform.h: - - fixed a comment to match new names. - -2010-06-11 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> - - Reviewed by Simon Hausmann. - - [Qt] Explicit conversions from QtScript types to JSC opaque types were removed. - https://bugs.webkit.org/show_bug.cgi?id=40412 - - Conversion between a JSC C types and a QtScript private types, takes - main part of the source code. In most cases a mapping between the types - is one to one. New cast operators were added to simplify the code. - - The QScriptValuePrivate could be casted to the JSValueRef and the JSObjectRef. - The QScriptEnginePrivate could be casted to the JSGlobalContext. - The QScriptProgramPrivate could be casted to the JSStringRef. - - * qt/api/qscriptengine_p.cpp: - (QScriptEnginePrivate::evaluate): - (QScriptEnginePrivate::newObject): - (QScriptEnginePrivate::globalObject): - * qt/api/qscriptengine_p.h: - (QScriptEnginePrivate::operator JSGlobalContextRef): - * qt/api/qscriptprogram_p.h: - (QScriptProgramPrivate::operator JSStringRef): - * qt/api/qscriptsyntaxcheckresult.cpp: - (QScriptSyntaxCheckResultPrivate::~QScriptSyntaxCheckResultPrivate): - (QScriptSyntaxCheckResultPrivate::errorMessage): - (QScriptSyntaxCheckResultPrivate::errorLineNumber): - * qt/api/qscriptvalue_p.h: - (QScriptValuePrivate::~QScriptValuePrivate): - (QScriptValuePrivate::QScriptValuePrivate): - (QScriptValuePrivate::isBool): - (QScriptValuePrivate::isNumber): - (QScriptValuePrivate::isNull): - (QScriptValuePrivate::isString): - (QScriptValuePrivate::isUndefined): - (QScriptValuePrivate::isFunction): - (QScriptValuePrivate::toString): - (QScriptValuePrivate::toNumber): - (QScriptValuePrivate::toBool): - (QScriptValuePrivate::toObject): - (QScriptValuePrivate::equals): - (QScriptValuePrivate::strictlyEquals): - (QScriptValuePrivate::instanceOf): - (QScriptValuePrivate::call): - (QScriptValuePrivate::operator JSValueRef): - (QScriptValuePrivate::operator JSObjectRef): - (QScriptValuePrivate::setValue): - (QScriptValuePrivate::inherits): - (QScriptValuePrivate::refinedJSValue): - -2010-05-31 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> - - Reviewed by Simon Hausmann. - - [Qt] Implement the simple text code path. - https://bugs.webkit.org/show_bug.cgi?id=40077 - - Remove the FONT_FAST_PATH macro and use the Qt's - fast text implementation instead of the one of WebKit. - - The Qt::TextBypassShaping flag is used to tell Qt to - only use the glyph advances. - - Qt 4.7 is needed to get this flag thus the complex path is always - used if QtWebKit is compiled against an earlier version. - - Contrary to the WebKit's implementation, the complex code path - is taken if the text is RightToLeft, justified or is formatted - with non-zero letter or word spacing. - - * wtf/Platform.h: - -2010-06-11 Luiz Agostini <luiz.agostini@openbossa.org> - - Reviewed by Kenneth Rohde Christiansen. - - add codePointCompare to JavaScriptCore.exp - https://bugs.webkit.org/show_bug.cgi?id=40426 + Bug 54988 - Re-create StructureTransitionTable class, encapsulate transition table + + The Structure class keeps a table of transitions to derived Structure types. Since + this table commonly contains a single entry we employ an optimization where instead + of holding a map, we may hold a pointer directly to a single instance of the mapped + type. We use an additional bit of data to flag whether the pointer is currently + pointing to a table of transitions, or a singleton transition. Previously we had + commonly used a pattern of storing data in the low bits of pointers, but had moved + away from this since it causes false leaks to be reported by the leaks tool. However + in this case, the entries in the map are weak links - this pointer will never be + responsible for keeping an object alive. As such we can use this approach provided + that the bit is set when a table is not in use (otherwise the table would appear to + be leaked). + + Additionally, the transition table currently allows two entries to exist for a given + key - one specialized to a particular value, and one not specialized. This is + unnecessary, wasteful, and a little inconsistent. (If you create an entry for a + specialized value, then a non-specialized entry, both will exist. If you create an + entry for a non-specialized value, then try to create a specialized entry, only a + non-specialized form will be allowed.) + + This shows a small progression on v8. * JavaScriptCore.exp: + * runtime/JSObject.h: + (JSC::JSObject::putDirectInternal): + * runtime/Structure.cpp: + (JSC::StructureTransitionTable::contains): + (JSC::StructureTransitionTable::get): + (JSC::StructureTransitionTable::remove): + (JSC::StructureTransitionTable::add): + (JSC::Structure::dumpStatistics): + (JSC::Structure::Structure): + (JSC::Structure::~Structure): + (JSC::Structure::addPropertyTransitionToExistingStructure): + (JSC::Structure::addPropertyTransition): + * runtime/Structure.h: + (JSC::Structure::get): + * runtime/StructureTransitionTable.h: + (JSC::StructureTransitionTable::Hash::hash): + (JSC::StructureTransitionTable::Hash::equal): + (JSC::StructureTransitionTable::HashTraits::emptyValue): + (JSC::StructureTransitionTable::HashTraits::constructDeletedValue): + (JSC::StructureTransitionTable::HashTraits::isDeletedValue): + (JSC::StructureTransitionTable::StructureTransitionTable): + (JSC::StructureTransitionTable::~StructureTransitionTable): + (JSC::StructureTransitionTable::isUsingSingleSlot): + (JSC::StructureTransitionTable::map): + (JSC::StructureTransitionTable::setMap): + (JSC::StructureTransitionTable::singleTransition): + (JSC::StructureTransitionTable::setSingleTransition): + +2011-02-22 Andras Becsi <abecsi@webkit.org> -2010-06-10 Oliver Hunt <oliver@apple.com> - - Reviewed by Maciej Stachowiak. - - Math Javascript Bug on Safari 5 (webkit 533.16) under "32bit" mode - https://bugs.webkit.org/show_bug.cgi?id=40367 - - If we're in the slow case of right shift we must write the type tag as - the only reason we hit this code path is because we know we're working - with a double. eg. we are guaranteed that the tag cannot be reused. - - * jit/JITArithmetic32_64.cpp: - (JSC::JIT::emitRightShiftSlowCase): - -2010-06-10 Kwang Yul Seo <skyul@company100.net> - - Reviewed by Eric Seidel. - - Remove weakRandomNumber - https://bugs.webkit.org/show_bug.cgi?id=40291 - - weakRandomNumber is used nowhere. Currently, WeakRandom is used instead. - - * wtf/RandomNumber.cpp: - * wtf/RandomNumber.h: - -2010-06-09 Alexey Proskuryakov <ap@apple.com> - - Reviewed by Brady Eidson. - - Export StringImpl::ascii(). It might be not very useful, but it's a public function. - - * JavaScriptCore.exp: - -2010-06-09 Leandro Pereira <leandro@profusion.mobi> - - Reviewed by Adam Treat. - - [EFL] Allow building core libraries as shared objects to speed up - linking time on machines with small amounts of memory. - http://webkit.org/b/39899 - - * CMakeLists.txt: If building with shared core, install the lib. - * jsc/CMakeListsEfl.txt: Needs Glib and Ecore to link dynamically. - * wtf/CMakeLists.txt: If building with shared core, install the lib. - -2010-06-09 Gabor Loki <loki@webkit.org> - - Reviewed by David Levin. - - Remove some unused variable warnings from JITOpcodes - https://bugs.webkit.org/show_bug.cgi?id=40298 - - * jit/JITOpcodes.cpp: - (JSC::JIT::privateCompileCTINativeCall): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::privateCompileCTINativeCall): - -2010-05-18 Yuzo Fujishima <yuzo@google.com> - - Reviewed by Shinichiro Hamaji. - - Fix for Bug 34529 - [CSSOM] issues with cssText and selectorText - Add U16_LENGTH that is needed to implement CSS character serialization. - https://bugs.webkit.org/show_bug.cgi?id=34529 - - * wtf/unicode/qt4/UnicodeQt4.h: - * wtf/unicode/wince/UnicodeWince.h: - -2010-06-08 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r60830. - http://trac.webkit.org/changeset/60830 - https://bugs.webkit.org/show_bug.cgi?id=40305 - - Broke the Windows build (Requested by abarth on #webkit). - - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * wtf/OwnPtrCommon.h: - * wtf/brew/OwnPtrBrew.h: Removed. - * wtf/win/OwnPtrWin.h: Removed. - -2010-06-08 MORITA Hajime <morrita@google.com> - - Unreviewed. An attempt to fix test break. - - * Configurations/FeatureDefines.xcconfig: - -2010-06-08 Kwang Yul Seo <skyul@company100.net> - - Reviewed by Adam Barth. - - Change OwnPtrCommon to include platform-specific headers - https://bugs.webkit.org/show_bug.cgi?id=40279 - - Adding new type to OwnPtrCommon needlessly causes all ports to do full rebuilds. - Change OwnPtrCommon to include platform-specific headers to avoid all ports rebuilds. - - * JavaScriptCore.vcproj/WTF/WTF.vcproj: - * wtf/OwnPtrCommon.h: - * wtf/brew/OwnPtrBrew.h: Added. - * wtf/win/OwnPtrWin.h: Added. + Reviewed by Laszlo Gombos. -2010-06-07 MORITA Hajime <morrita@google.com> - - Reviewed by Kent Tamura. + [Qt] Redesign the build system + https://bugs.webkit.org/show_bug.cgi?id=51339 - https://bugs.webkit.org/show_bug.cgi?id=40219 - [Mac] ENABLE_METER_TAG should be enabled - - Added ENABLE_METER_TAG. + Part 2. - * Configurations/FeatureDefines.xcconfig: + Build WebCore as a static library, compile the WebKit API and WebKit2 API + in a final step and link to WebKit2, WebCore and JSC libraries to fix + linking issues resulting from stripped away symbols. -2010-06-07 Kwang Yul Seo <skyul@company100.net> + * JavaScriptCore.pri: Remove the workaround. - Reviewed by Eric Seidel. +2011-02-21 Adam Roben <aroben@apple.com> - [BREWMP] Add more types to OwnPtr - https://bugs.webkit.org/show_bug.cgi?id=39667 + Fix linker warning on Windows - Add ISSL and ISocket to the list of OwnPtr-ed type. + r79135 tried to export JSObject::s_info by adding it to JavaScriptCore.def. This is the + obvious way (since it's how we export functions), but unfortunately it doesn't work correct. + r79222 made us export it the right way (using the JS_EXPORTDATA macro), but forgot to remove + it from JavaScriptCore.def. This caused us to get linker warnings about exporting the symbol + multiple times. - * wtf/OwnPtrCommon.h: - * wtf/brew/OwnPtrBrew.cpp: - (WTF::deleteOwnedPtr): + Rubber-stamped by Anders Carlsson. -2010-06-07 Benjamin Poulain <benjamin.poulain@nokia.com> + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Removed JSObject::s_info. - Reviewed by Simon Hausmann. +2011-02-21 Brian Weinstein <bweinstein@apple.com> - [Qt] Crash when compiling on Snow Leopard and running on Leopard - https://bugs.webkit.org/show_bug.cgi?id=31403 + Reviewed by Adam Roben. - Disable the use of pthread_setname_np and other symbols - when targetting Leopard. + WebResourceCacheManager should be responsible for managing the CFURLCache as well + as the WebCore memory cache. + https://bugs.webkit.org/show_bug.cgi?id=54886 + Part of <rdar://problem/8971738> - Use the defines TARGETING_XX instead of BUILDING_ON_XX - for features that cannot be used before Snow Leopard. + Add a new use flag for using the CFURLCache. * wtf/Platform.h: -2010-06-07 Gabor Loki <loki@webkit.org> - - Reviewed by NOBODY (JSVALUE32_64 build fix). +2011-02-21 Xan Lopez <xlopez@igalia.com> - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::privateCompileCTINativeCall): + Reviewed by Gavin Barraclough. -2010-06-06 Gavin Barraclough <barraclough@apple.com> + Use ASSERT_JIT_OFFSET in JITPropertyAccess32_64.cpp + https://bugs.webkit.org/show_bug.cgi?id=54901 - Reviewed by NOBODY (windows build fix pt 2). + * jit/JIT.h: swap actual and expected values in message, they were + reversed. + * jit/JITCall32_64.cpp: + (JSC::JIT::compileOpCall): use ASSERT_JIT_OFFSET instead of + a simple ASSERT. + * jit/JITPropertyAccess32_64.cpp: + (JSC::JIT::emit_op_method_check): ditto. + (JSC::JIT::compileGetByIdHotPath): ditto. + (JSC::JIT::compileGetByIdSlowCase): ditto. + (JSC::JIT::emit_op_put_by_id): ditto. - * JavaScriptCore.exp: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: +2011-02-21 Gavin Barraclough <barraclough@apple.com> -2010-06-06 Gavin Barraclough <barraclough@apple.com> + Ruber stamped by Sam Weinig - Reviewed by NOBODY (windows build fix pt 1). + Bug 54899 - Math.LOG10E should be 0.4342944819032518 + This value is quoted in section 15.8.1.5 of the spec. - * JavaScriptCore.exp: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * runtime/MathObject.cpp: + (JSC::MathObject::MathObject): -2010-06-06 Gavin Barraclough <barraclough@apple.com> +2011-02-21 Gavin Barraclough <barraclough@apple.com> Reviewed by Sam Weinig. - Bug 40214 - Clean up error construction / throwing in JSC. - - The one egregious insanity here is that creating an error requires - a VM-entry-esqe-host call (the string argument is wrapped as a JS - object & pushed on the RegisterFile, then unwrapped back to a - UString). Changing this also means you only require a global - object, not an ExecState, to create an error. - - The methods to create error objects are also parameterized - requiring a switch on the type, which can be made cleaner and - faster by moving to a separate method per error type. Code to add - divot information to error had been duplicated, and is coalesced - back into a single function. - - Convenience methods added to create & throw type & syntax error - with a default error message, since this is a common case. - - Also, errors are currently thrown either using - "throwError(exec, error)" or "exec->setException(error)" - unify - on the former, since this is more commonly used. Add - "throwVMError(exec, error)" equivalents, as a convenience for - cases where the result was being wrapped in "JSValue::encode(...)". + Bug 54894 - Make inheritance structure described by ClassInfo match C++ class hierarchy. + + The ClassInfo objects describe an inheritance hierarchy, with each ClassInfo instance + containing a pointer to its parent class. These links should reflect the inheritance + hierarchy of C++ classes below JSObject. For the large part it does, but in some cases + entries in the C++ hierarchy are skipped over. This presently likely doesn't matter, + since intervening C++ classes may not have ClassInfo - but would be a potential bug + were ClassInfo were to be added. * API/JSCallbackConstructor.cpp: - (JSC::constructJSCallback): * API/JSCallbackFunction.cpp: - (JSC::JSCallbackFunction::call): * API/JSCallbackObjectFunctions.h: - (JSC::::getOwnPropertySlot): - (JSC::::put): - (JSC::::deleteProperty): - (JSC::::construct): - (JSC::::hasInstance): - (JSC::::call): - (JSC::::toNumber): - (JSC::::toString): - (JSC::::staticValueGetter): - (JSC::::staticFunctionGetter): - (JSC::::callbackGetter): - * API/JSObjectRef.cpp: - (JSObjectMakeError): - * JavaScriptCore.exp: - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::emitNewError): - (JSC::BytecodeGenerator::emitThrowExpressionTooDeepException): - * bytecompiler/BytecodeGenerator.h: - * bytecompiler/NodesCodegen.cpp: - (JSC::ThrowableExpressionData::emitThrowError): - (JSC::RegExpNode::emitBytecode): - (JSC::PostfixErrorNode::emitBytecode): - (JSC::PrefixErrorNode::emitBytecode): - (JSC::AssignErrorNode::emitBytecode): - (JSC::ForInNode::emitBytecode): - (JSC::ContinueNode::emitBytecode): - (JSC::BreakNode::emitBytecode): - (JSC::ReturnNode::emitBytecode): - (JSC::LabelNode::emitBytecode): - * interpreter/CallFrame.h: - * interpreter/Interpreter.cpp: - (JSC::Interpreter::throwException): - (JSC::Interpreter::privateExecute): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - * jsc.cpp: - (functionRun): - (functionLoad): - (functionCheckSyntax): - * parser/Nodes.h: - * runtime/ArrayConstructor.cpp: - (JSC::constructArrayWithSizeQuirk): + * runtime/Arguments.h: * runtime/ArrayPrototype.cpp: - (JSC::arrayProtoFuncToString): - (JSC::arrayProtoFuncToLocaleString): - (JSC::arrayProtoFuncJoin): - (JSC::arrayProtoFuncFilter): - (JSC::arrayProtoFuncMap): - (JSC::arrayProtoFuncEvery): - (JSC::arrayProtoFuncForEach): - (JSC::arrayProtoFuncSome): - (JSC::arrayProtoFuncReduce): - (JSC::arrayProtoFuncReduceRight): - * runtime/BooleanPrototype.cpp: - (JSC::booleanProtoFuncToString): - (JSC::booleanProtoFuncValueOf): + * runtime/BooleanObject.cpp: + * runtime/DateInstance.cpp: * 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::dateProtoFuncSetMilliSeconds): - (JSC::dateProtoFuncSetUTCMilliseconds): - (JSC::dateProtoFuncSetSeconds): - (JSC::dateProtoFuncSetUTCSeconds): - (JSC::dateProtoFuncSetMinutes): - (JSC::dateProtoFuncSetUTCMinutes): - (JSC::dateProtoFuncSetHours): - (JSC::dateProtoFuncSetUTCHours): - (JSC::dateProtoFuncSetDate): - (JSC::dateProtoFuncSetUTCDate): - (JSC::dateProtoFuncSetMonth): - (JSC::dateProtoFuncSetUTCMonth): - (JSC::dateProtoFuncSetFullYear): - (JSC::dateProtoFuncSetUTCFullYear): - (JSC::dateProtoFuncSetYear): - (JSC::dateProtoFuncGetYear): - (JSC::dateProtoFuncToJSON): - * runtime/Error.cpp: - (JSC::createError): - (JSC::createEvalError): - (JSC::createRangeError): - (JSC::createReferenceError): - (JSC::createSyntaxError): - (JSC::createTypeError): - (JSC::createURIError): - (JSC::addErrorSourceInfo): - (JSC::addErrorDivotInfo): - (JSC::addErrorInfo): - (JSC::hasErrorInfo): - (JSC::throwError): - (JSC::throwTypeError): - (JSC::throwSyntaxError): - * runtime/Error.h: - (JSC::throwVMError): - (JSC::throwVMTypeError): - * runtime/ErrorConstructor.cpp: - (JSC::constructWithErrorConstructor): - (JSC::callErrorConstructor): - * runtime/ErrorConstructor.h: * runtime/ErrorInstance.cpp: - (JSC::ErrorInstance::ErrorInstance): - (JSC::ErrorInstance::create): - * runtime/ErrorInstance.h: - * runtime/ErrorPrototype.cpp: - (JSC::ErrorPrototype::ErrorPrototype): - * runtime/ExceptionHelpers.cpp: - (JSC::createStackOverflowError): - (JSC::createUndefinedVariableError): - (JSC::createInvalidParamError): - (JSC::createNotAConstructorError): - (JSC::createNotAFunctionError): - (JSC::createNotAnObjectError): - (JSC::throwOutOfMemoryError): - * runtime/ExceptionHelpers.h: - * runtime/Executable.cpp: - (JSC::EvalExecutable::compile): - (JSC::ProgramExecutable::checkSyntax): - (JSC::ProgramExecutable::compile): - * runtime/FunctionConstructor.cpp: - (JSC::constructFunction): - * runtime/FunctionPrototype.cpp: - (JSC::functionProtoFuncToString): - (JSC::functionProtoFuncApply): - (JSC::functionProtoFuncCall): - * runtime/Identifier.cpp: - (JSC::Identifier::from): - * runtime/Identifier.h: + * runtime/InternalFunction.cpp: + * runtime/JSActivation.cpp: * runtime/JSArray.cpp: - (JSC::JSArray::put): * runtime/JSFunction.cpp: - (JSC::callHostFunctionAsConstructor): - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::encode): - (JSC::decode): - (JSC::globalFuncEval): * runtime/JSONObject.cpp: - (JSC::Stringifier::appendStringifiedValue): - (JSC::Walker::walk): - (JSC::JSONProtoFuncParse): - (JSC::JSONProtoFuncStringify): - * runtime/JSObject.cpp: - (JSC::throwSetterError): - (JSC::JSObject::put): - (JSC::JSObject::putWithAttributes): - (JSC::JSObject::defaultValue): - (JSC::JSObject::hasInstance): - (JSC::JSObject::defineOwnProperty): * runtime/JSObject.h: - * runtime/JSValue.cpp: - (JSC::JSValue::toObjectSlowCase): - (JSC::JSValue::synthesizeObject): - (JSC::JSValue::synthesizePrototype): + * runtime/JSZombie.h: + * runtime/MathObject.cpp: * runtime/NativeErrorConstructor.cpp: - (JSC::constructWithNativeErrorConstructor): - (JSC::callNativeErrorConstructor): - * runtime/NativeErrorConstructor.h: - * runtime/NumberPrototype.cpp: - (JSC::numberProtoFuncToString): - (JSC::numberProtoFuncToLocaleString): - (JSC::numberProtoFuncValueOf): - (JSC::numberProtoFuncToFixed): - (JSC::numberProtoFuncToExponential): - (JSC::numberProtoFuncToPrecision): - * runtime/ObjectConstructor.cpp: - (JSC::objectConstructorGetPrototypeOf): - (JSC::objectConstructorGetOwnPropertyDescriptor): - (JSC::objectConstructorGetOwnPropertyNames): - (JSC::objectConstructorKeys): - (JSC::toPropertyDescriptor): - (JSC::objectConstructorDefineProperty): - (JSC::objectConstructorDefineProperties): - (JSC::objectConstructorCreate): - * runtime/ObjectPrototype.cpp: - (JSC::objectProtoFuncDefineGetter): - (JSC::objectProtoFuncDefineSetter): + * runtime/NumberConstructor.cpp: + * runtime/NumberObject.cpp: * runtime/RegExpConstructor.cpp: - (JSC::constructRegExp): * runtime/RegExpObject.cpp: - (JSC::RegExpObject::match): - * runtime/RegExpPrototype.cpp: - (JSC::regExpProtoFuncTest): - (JSC::regExpProtoFuncExec): - (JSC::regExpProtoFuncCompile): - (JSC::regExpProtoFuncToString): + * runtime/StringObject.cpp: * runtime/StringPrototype.cpp: - (JSC::stringProtoFuncToString): - -2010-06-05 Kwang Yul Seo <skyul@company100.net> - - Reviewed by Eric Seidel. - [BREWMP] Add PLATFORM(BREWMP) guard for using std::xxx - https://bugs.webkit.org/show_bug.cgi?id=39710 +2011-02-21 Adam Roben <aroben@apple.com> - Build fix for BREW MP. - - * wtf/MathExtras.h: - -2010-06-04 Adam Barth <abarth@webkit.org> - - Reviewed by Darin Adler. + Export JSObject::s_info from JavaScriptCore.dll - HTML5 parser should be within 1% of old parser performance - https://bugs.webkit.org/show_bug.cgi?id=40172 + This matches what we do for all other ClassInfo objects that WebCore needs access to. - Fix cast in this operator= to allow for assignment between vectors with - different inline capacities (as clearly intended by its author). + Fixes <http://webkit.org/b/54881> REGRESSION (r79132): Lots of tests crashing in + JSCell::inherits on Windows - * wtf/Vector.h: - (WTF::::operator): + Reviewed by Sam Weinig. -2010-06-04 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> + * runtime/JSObject.h: Added JS_EXPORTDATA to s_info. - Reviewed by Kenneth Rohde Christiansen. +2011-02-21 Kristian Amlie <kristian.amlie@nokia.com> - New QtScript API; QScriptValue::instanceOf. + Reviewed by Andreas Kling. - New function create an easy way to check value's prototype hierarchy. + Switched to compiler based detection, where the error actually is. - [Qt] QScriptValue should have an instanceOf method - https://bugs.webkit.org/show_bug.cgi?id=40120 + It is not the platform that needs the workaround, it is the compiler. - * qt/api/qscriptvalue.cpp: - (QScriptValue::instanceOf): - * qt/api/qscriptvalue.h: - * qt/api/qscriptvalue_p.h: - (QScriptValuePrivate::instanceOf): - * qt/tests/qscriptvalue/tst_qscriptvalue.h: - * qt/tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp: - (tst_QScriptValue::instanceOf_initData): - (tst_QScriptValue::instanceOf_makeData): - (tst_QScriptValue::instanceOf_test): + QtWebKit fails to compile on Windows XP with msvc-2008 + https://bugs.webkit.org/show_bug.cgi?id=54746 -2010-06-04 Gavin Barraclough <barraclough@apple.com> + * bytecode/CodeBlock.h: + * runtime/RegExpObject.h: - Reviewed by NOBODY (interpreter build fix). +2011-02-20 Gavin Barraclough <barraclough@apple.com> - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): + Reviewed by Oliver Hunt. -2010-06-04 Mark Rowe <mrowe@apple.com> + https://bugs.webkit.org/show_bug.cgi?id=54839 + Remove PrototypeFunction, NativeFunctionWrapper, and GlobalEvalFunction. - Silence some warnings seen on the build bot. + Historically, Native functions used to be represented by PrototypeFunctions, however + since introducing call optimizations to the JIT this has used JSFunctions for host + calls too. At the point this change was made, the interpreter continued to use + PrototypeFunctions, however since fallback from the JIT to interpreter was introduced + the interpreter has had to be able to run using host functions represented using + JSFunctions - leading to an unnecessary and redundant divergence in behaviour between + interpreter only builds, and situations where the JIT has fallen back to interpreting. - * JavaScriptCore.JSVALUE32_64only.exp: Add a trailing newline. - * JavaScriptCore.JSVALUE32only.exp: Ditto. - * JavaScriptCore.JSVALUE64only.exp: Ditto. - * JavaScriptCore.xcodeproj/project.pbxproj: Remove the .exp files from all targets so that Xcode doesn't - complain about not knowing how to compile them. + NativeFunctionWrapper only existed to select between PrototypeFunction and JSFunction + for wrappers for host functions, and as such can also be removed. -2010-06-04 Gavin Barraclough <barraclough@apple.com> + GlobalEvalFunction is a redundant wrapper that happens to be derived from + PrototypeFunction. It existed to hold a reference to the global object - but since all + functions how derive from JSObjectWithGlobalObject, this no longer requires an + additional class to provide this functionality. - Reviewed by Oliver Hunt. + * JavaScriptCore.JSVALUE32_64only.exp: + * JavaScriptCore.JSVALUE64only.exp: + * JavaScriptCore.xcodeproj/project.pbxproj: + Removed symbols / references to files. - Bug 40187 - Change function signature of NativeConstructor to match NativeFunction + * runtime/GlobalEvalFunction.cpp: Removed. + * runtime/GlobalEvalFunction.h: Removed. + * runtime/NativeFunctionWrapper.h: Removed. + * runtime/PrototypeFunction.cpp: Removed. + * runtime/PrototypeFunction.h: Removed. + Removed. - Mostly for consistency, but constructor & args arguments are redundant, - and this will help if we wish to be able to JIT calls to more constructors. + * runtime/Executable.cpp: + (JSC::NativeExecutable::~NativeExecutable): + * runtime/Executable.h: + (JSC::NativeExecutable::create): + (JSC::NativeExecutable::NativeExecutable): + (JSC::JSFunction::nativeFunction): + * runtime/JSFunction.cpp: + (JSC::callHostFunctionAsConstructor): + (JSC::JSFunction::JSFunction): + (JSC::JSFunction::getCallData): + * runtime/JSFunction.h: + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::getHostFunction): + * runtime/JSGlobalData.h: + (JSC::JSGlobalData::getCTIStub): + Added interpreter-friendly constructors for NativeExecutables. - * API/JSCallbackConstructor.cpp: - (JSC::constructJSCallback): - * API/JSCallbackObject.h: - * API/JSCallbackObjectFunctions.h: - (JSC::::construct): + * bytecompiler/BytecodeGenerator.cpp: * interpreter/Interpreter.cpp: - (JSC::Interpreter::executeConstruct): - * interpreter/Interpreter.h: * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): + * jsc.cpp: * runtime/ArrayConstructor.cpp: - (JSC::constructWithArrayConstructor): - * runtime/BooleanConstructor.cpp: - (JSC::constructWithBooleanConstructor): - * runtime/ConstructData.cpp: - (JSC::construct): - * runtime/ConstructData.h: + * runtime/BooleanPrototype.cpp: + * runtime/BooleanPrototype.h: + * runtime/CallData.h: * runtime/DateConstructor.cpp: - (JSC::constructWithDateConstructor): - * runtime/Error.cpp: - (JSC::constructNativeError): - (JSC::Error::create): - * runtime/ErrorConstructor.cpp: - (JSC::constructWithErrorConstructor): - * runtime/FunctionConstructor.cpp: - (JSC::constructWithFunctionConstructor): - * runtime/NativeErrorConstructor.cpp: - (JSC::constructWithNativeErrorConstructor): - * runtime/NativeErrorConstructor.h: - (JSC::NativeErrorConstructor::errorStructure): - * runtime/NumberConstructor.cpp: - (JSC::constructWithNumberConstructor): + * runtime/DateConstructor.h: + * runtime/ErrorPrototype.cpp: + * runtime/ErrorPrototype.h: + * runtime/FunctionPrototype.cpp: + * runtime/FunctionPrototype.h: + * runtime/JSGlobalObject.cpp: + * runtime/JSGlobalObject.h: + * runtime/JSGlobalObjectFunctions.cpp: + * runtime/Lookup.cpp: + * runtime/NumberPrototype.cpp: + * runtime/NumberPrototype.h: * runtime/ObjectConstructor.cpp: - (JSC::constructWithObjectConstructor): - * runtime/RegExpConstructor.cpp: - (JSC::constructWithRegExpConstructor): + * runtime/ObjectConstructor.h: + * runtime/ObjectPrototype.cpp: + * runtime/ObjectPrototype.h: + * runtime/RegExpPrototype.cpp: + * runtime/RegExpPrototype.h: + * runtime/SmallStrings.h: * runtime/StringConstructor.cpp: - (JSC::constructWithStringConstructor): - -2010-06-04 Tony Gentilcore <tonyg@chromium.org> - - Reviewed by Adam Barth. + * runtime/StringConstructor.h: + Removed use of redundant classes. - Add a takeFirst() method to Deque and use it where appropriate. - https://bugs.webkit.org/show_bug.cgi?id=40089 +2011-02-19 Laszlo Gombos <laszlo.1.gombos@nokia.com> - * wtf/Deque.h: - (WTF::::takeFirst): - * wtf/MainThread.cpp: - (WTF::dispatchFunctionsFromMainThread): - * wtf/MessageQueue.h: - (WTF::::tryGetMessage): + Unreviewed build fix for Symbian. -2010-06-04 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> - - Reviewed by Kenneth Rohde Christiansen. + [Symbian] Revert the removal of linking + against hal after r79126. - Remove a QEXPECT_FAIL flag from an autotest. + Dependency on the hal library can not be removed + as it is still used (e.g. in MarkStackSymbian.cpp). - Test tst_QScriptEngine::globalObject pass after 36600 bug - fix have been applied. - - [Qt] Expected fail in the tst_QScriptEngine::globalObject should be removed. - https://bugs.webkit.org/show_bug.cgi?id=40114 - - * qt/tests/qscriptengine/tst_qscriptengine.cpp: - (tst_QScriptEngine::globalObject): - -2010-06-04 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> - - Reviewed by Kenneth Rohde Christiansen. - - Fix QScriptValue::equals. - - Handling for a few edge cases were added. Now comparison between - NaN, an invalid objects should works as supposed. - - [Qt] QScriptValue::equals problems - https://bugs.webkit.org/show_bug.cgi?id=40110 - - * qt/api/qscriptvalue.cpp: - (QScriptValue::equals): - * qt/api/qscriptvalue_p.h: - (QScriptValuePrivate::equals): - * qt/tests/qscriptvalue/tst_qscriptvalue.h: - * qt/tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp: - (tst_QScriptValue::equals_initData): - (tst_QScriptValue::equals_makeData): - (tst_QScriptValue::equals_test): + * JavaScriptCore.pri: -2010-06-03 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> +2011-02-19 Gavin Barraclough <barraclough@apple.com> - Reviewed by Kenneth Rohde Christiansen. - - New states in QScriptValuePrivate. + Interpreter build fix. - The CSpecial state was divided into CNull and CUndefined. It simplify - the QScriptValue code by avoiding a few "cast" and "if". - Moreover the MSVS compiler didn't like casting between a double and an - enum which is avoided now. + * runtime/ArrayConstructor.cpp: + * runtime/BooleanPrototype.cpp: + * runtime/DateConstructor.cpp: + * runtime/ErrorPrototype.cpp: + * runtime/FunctionPrototype.cpp: + * runtime/Lookup.cpp: + * runtime/NumberPrototype.cpp: + * runtime/ObjectConstructor.cpp: + * runtime/ObjectPrototype.cpp: + * runtime/RegExpPrototype.cpp: + * runtime/StringConstructor.cpp: - [Qt] The QScriptValuePrivate::CSpecial is too generic. - https://bugs.webkit.org/show_bug.cgi?id=40067 +2011-02-19 Gavin Barraclough <barraclough@apple.com> - * qt/api/qscriptvalue_p.h: - (QScriptValuePrivate::): - (QScriptValuePrivate::QScriptValuePrivate): - (QScriptValuePrivate::isNull): - (QScriptValuePrivate::isUndefined): - (QScriptValuePrivate::toString): - (QScriptValuePrivate::toNumber): - (QScriptValuePrivate::toBool): - (QScriptValuePrivate::toObject): - (QScriptValuePrivate::assignEngine): - (QScriptValuePrivate::isNumberBased): + Build fix!! -2010-06-03 Gavin Barraclough <barraclough@apple.com> + * JavaScriptCore.exp: - Reviewed by NOBODY (Qt build fix). +2011-02-19 Gavin Barraclough <barraclough@apple.com> - * wtf/Platform.h: + Windows build fix!! -2010-06-03 Gavin Barraclough <barraclough@apple.com> + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - Reviewed by Mark Rowe. +2011-02-19 Gavin Barraclough <barraclough@apple.com> - Bug 40150 - ENABLE_JIT_OPTIMIZE_NATIVE_CALL on all x86/x86_64 platforms - This was fixed in bug #40094. + Windows build fix! * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * wtf/Platform.h: - -2010-06-03 Gavin Barraclough <barraclough@apple.com> - - Reviewed by NOBODY (Interpreter build fix). - * JavaScriptCore.JSVALUE32_64only.exp: - * JavaScriptCore.JSVALUE32only.exp: - * JavaScriptCore.JSVALUE64only.exp: - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): +2011-02-19 Gavin Barraclough <barraclough@apple.com> -2010-06-03 Gavin Barraclough <barraclough@apple.com> + Build fix! - Reviewed by NOBODY (windows build fix II). + * JavaScriptCore.exp: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: +2011-02-18 Gavin Barraclough <barraclough@apple.com> -2010-06-03 Gavin Barraclough <barraclough@apple.com> + Reviewed by Sam Weinig. - Reviewed by NOBODY (windows build fix). + Bug 54786 - Devirtualize JSCell::classInfo() - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + Instead of making a virtual function call, add a pointer to the ClassInfo + onto Structure. -2010-06-02 Gavin Barraclough <barraclough@apple.com> + This removes a virtual function call, and paves the way towards removing all + the createStructure methods, and StructureFlags/AnonymousSlotCount properties + (these should be able to move onto ClassInfo). - Reviewed by Oliver Hunt. + Calls to Structure::create must now pass a pointer to the ClassInfo for the + structure. All objects now have a ClassInfo pointer, non-object cell types + still do not. - Bug 40094 - The return type of NativeFunction should be EncodedJSValue - On Windows & Linux, using JSVALUE32_64, EncodedJSValue is returned in registers, but JSValue is not. + Changes are most mechanical, involving three steps: + * Remove virtual classInfo() methods. + * Add &s_info parameter to calls to Structure::create. + * Rename ClassInfo static members on classes from 'info' to 's_info', + for consistency. + * API/JSCallbackConstructor.cpp: + * API/JSCallbackConstructor.h: * API/JSCallbackFunction.cpp: - (JSC::JSCallbackFunction::call): * API/JSCallbackFunction.h: + * API/JSCallbackObject.cpp: * API/JSCallbackObject.h: * API/JSCallbackObjectFunctions.h: - (JSC::::call): + * API/JSObjectRef.cpp: + * API/JSValueRef.cpp: + * API/JSWeakObjectMapRefPrivate.cpp: * JavaScriptCore.exp: + * debugger/Debugger.cpp: + * debugger/DebuggerActivation.h: + * debugger/DebuggerCallFrame.cpp: * interpreter/Interpreter.cpp: - (JSC::Interpreter::executeCall): + * jit/JITCall32_64.cpp: + * jit/JITOpcodes.cpp: * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - * jit/JITStubs.h: - * jsc.cpp: - (functionPrint): - (functionDebug): - (functionGC): - (functionVersion): - (functionRun): - (functionLoad): - (functionCheckSyntax): - (functionSetSamplingFlags): - (functionClearSamplingFlags): - (functionReadline): - (functionQuit): + * profiler/Profiler.cpp: + * runtime/Arguments.cpp: + * runtime/Arguments.h: * runtime/ArrayConstructor.cpp: - (JSC::callArrayConstructor): - (JSC::arrayConstructorIsArray): * runtime/ArrayPrototype.cpp: - (JSC::arrayProtoFuncToString): - (JSC::arrayProtoFuncToLocaleString): - (JSC::arrayProtoFuncJoin): - (JSC::arrayProtoFuncConcat): - (JSC::arrayProtoFuncPop): - (JSC::arrayProtoFuncPush): - (JSC::arrayProtoFuncReverse): - (JSC::arrayProtoFuncShift): - (JSC::arrayProtoFuncSlice): - (JSC::arrayProtoFuncSort): - (JSC::arrayProtoFuncSplice): - (JSC::arrayProtoFuncUnShift): - (JSC::arrayProtoFuncFilter): - (JSC::arrayProtoFuncMap): - (JSC::arrayProtoFuncEvery): - (JSC::arrayProtoFuncForEach): - (JSC::arrayProtoFuncSome): - (JSC::arrayProtoFuncReduce): - (JSC::arrayProtoFuncReduceRight): - (JSC::arrayProtoFuncIndexOf): - (JSC::arrayProtoFuncLastIndexOf): - * runtime/BooleanConstructor.cpp: - (JSC::callBooleanConstructor): + * runtime/ArrayPrototype.h: + * runtime/BooleanObject.cpp: + * runtime/BooleanObject.h: * runtime/BooleanPrototype.cpp: - (JSC::booleanProtoFuncToString): - (JSC::booleanProtoFuncValueOf): - * runtime/CallData.h: * runtime/DateConstructor.cpp: - (JSC::callDate): - (JSC::dateParse): - (JSC::dateNow): - (JSC::dateUTC): + * runtime/DateInstance.cpp: + * runtime/DateInstance.h: * 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::dateProtoFuncSetMilliSeconds): - (JSC::dateProtoFuncSetUTCMilliseconds): - (JSC::dateProtoFuncSetSeconds): - (JSC::dateProtoFuncSetUTCSeconds): - (JSC::dateProtoFuncSetMinutes): - (JSC::dateProtoFuncSetUTCMinutes): - (JSC::dateProtoFuncSetHours): - (JSC::dateProtoFuncSetUTCHours): - (JSC::dateProtoFuncSetDate): - (JSC::dateProtoFuncSetUTCDate): - (JSC::dateProtoFuncSetMonth): - (JSC::dateProtoFuncSetUTCMonth): - (JSC::dateProtoFuncSetFullYear): - (JSC::dateProtoFuncSetUTCFullYear): - (JSC::dateProtoFuncSetYear): - (JSC::dateProtoFuncGetYear): - (JSC::dateProtoFuncToJSON): - * runtime/ErrorConstructor.cpp: - (JSC::callErrorConstructor): + * runtime/DatePrototype.h: + * runtime/ErrorInstance.cpp: + * runtime/ErrorInstance.h: * runtime/ErrorPrototype.cpp: - (JSC::errorProtoFuncToString): - * runtime/FunctionConstructor.cpp: - (JSC::callFunctionConstructor): * runtime/FunctionPrototype.cpp: - (JSC::callFunctionPrototype): - (JSC::functionProtoFuncToString): - (JSC::functionProtoFuncApply): - (JSC::functionProtoFuncCall): + * runtime/FunctionPrototype.h: + * runtime/GetterSetter.h: + * runtime/GlobalEvalFunction.h: + * runtime/InternalFunction.cpp: + * runtime/InternalFunction.h: + * runtime/JSAPIValueWrapper.h: + * runtime/JSActivation.cpp: + * runtime/JSActivation.h: + * runtime/JSArray.cpp: + * runtime/JSArray.h: + * runtime/JSByteArray.cpp: + * runtime/JSByteArray.h: + * runtime/JSCell.cpp: * runtime/JSCell.h: - (JSC::getCallData): - (JSC::getConstructData): * runtime/JSFunction.cpp: - (JSC::callHostFunctionAsConstructor): * runtime/JSFunction.h: - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::globalFuncEval): - (JSC::globalFuncParseInt): - (JSC::globalFuncParseFloat): - (JSC::globalFuncIsNaN): - (JSC::globalFuncIsFinite): - (JSC::globalFuncDecodeURI): - (JSC::globalFuncDecodeURIComponent): - (JSC::globalFuncEncodeURI): - (JSC::globalFuncEncodeURIComponent): - (JSC::globalFuncEscape): - (JSC::globalFuncUnescape): - (JSC::globalFuncJSCPrint): - * runtime/JSGlobalObjectFunctions.h: + * runtime/JSGlobalData.cpp: + * runtime/JSGlobalObject.cpp: + * runtime/JSGlobalObject.h: + * runtime/JSNotAnObject.h: * runtime/JSONObject.cpp: - (JSC::JSONProtoFuncParse): - (JSC::JSONProtoFuncStringify): + * runtime/JSONObject.h: * runtime/JSObject.cpp: - (JSC::callDefaultValueFunction): - * runtime/JSValue.h: + * runtime/JSObject.h: + * runtime/JSObjectWithGlobalObject.h: + * runtime/JSPropertyNameIterator.h: + * runtime/JSStaticScopeObject.h: + * runtime/JSString.h: + * runtime/JSVariableObject.h: + * runtime/JSWrapperObject.h: + * runtime/JSZombie.cpp: + * runtime/JSZombie.h: + * runtime/Lookup.cpp: * runtime/MathObject.cpp: - (JSC::mathProtoFuncAbs): - (JSC::mathProtoFuncACos): - (JSC::mathProtoFuncASin): - (JSC::mathProtoFuncATan): - (JSC::mathProtoFuncATan2): - (JSC::mathProtoFuncCeil): - (JSC::mathProtoFuncCos): - (JSC::mathProtoFuncExp): - (JSC::mathProtoFuncFloor): - (JSC::mathProtoFuncLog): - (JSC::mathProtoFuncMax): - (JSC::mathProtoFuncMin): - (JSC::mathProtoFuncPow): - (JSC::mathProtoFuncRandom): - (JSC::mathProtoFuncRound): - (JSC::mathProtoFuncSin): - (JSC::mathProtoFuncSqrt): - (JSC::mathProtoFuncTan): + * runtime/MathObject.h: * runtime/NativeErrorConstructor.cpp: - (JSC::callNativeErrorConstructor): + * runtime/NativeErrorConstructor.h: * runtime/NumberConstructor.cpp: - (JSC::callNumberConstructor): + * runtime/NumberConstructor.h: + * runtime/NumberObject.cpp: + * runtime/NumberObject.h: * runtime/NumberPrototype.cpp: - (JSC::numberProtoFuncToString): - (JSC::numberProtoFuncToLocaleString): - (JSC::numberProtoFuncValueOf): - (JSC::numberProtoFuncToFixed): - (JSC::numberProtoFuncToExponential): - (JSC::numberProtoFuncToPrecision): * runtime/ObjectConstructor.cpp: - (JSC::callObjectConstructor): - (JSC::objectConstructorGetPrototypeOf): - (JSC::objectConstructorGetOwnPropertyDescriptor): - (JSC::objectConstructorGetOwnPropertyNames): - (JSC::objectConstructorKeys): - (JSC::toPropertyDescriptor): - (JSC::objectConstructorDefineProperty): - (JSC::objectConstructorDefineProperties): - (JSC::objectConstructorCreate): * runtime/ObjectPrototype.cpp: - (JSC::objectProtoFuncValueOf): - (JSC::objectProtoFuncHasOwnProperty): - (JSC::objectProtoFuncIsPrototypeOf): - (JSC::objectProtoFuncDefineGetter): - (JSC::objectProtoFuncDefineSetter): - (JSC::objectProtoFuncLookupGetter): - (JSC::objectProtoFuncLookupSetter): - (JSC::objectProtoFuncPropertyIsEnumerable): - (JSC::objectProtoFuncToLocaleString): - (JSC::objectProtoFuncToString): - * runtime/ObjectPrototype.h: * runtime/RegExpConstructor.cpp: - (JSC::callRegExpConstructor): + * runtime/RegExpConstructor.h: * runtime/RegExpObject.cpp: - (JSC::callRegExpObject): + * runtime/RegExpObject.h: * runtime/RegExpPrototype.cpp: - (JSC::regExpProtoFuncTest): - (JSC::regExpProtoFuncExec): - (JSC::regExpProtoFuncCompile): - (JSC::regExpProtoFuncToString): + * runtime/ScopeChain.cpp: * runtime/StringConstructor.cpp: - (JSC::stringFromCharCode): - (JSC::callStringConstructor): + * runtime/StringObject.cpp: + * runtime/StringObject.h: + * runtime/StringObjectThatMasqueradesAsUndefined.h: * runtime/StringPrototype.cpp: - (JSC::stringProtoFuncReplace): - (JSC::stringProtoFuncToString): - (JSC::stringProtoFuncCharAt): - (JSC::stringProtoFuncCharCodeAt): - (JSC::stringProtoFuncConcat): - (JSC::stringProtoFuncIndexOf): - (JSC::stringProtoFuncLastIndexOf): - (JSC::stringProtoFuncMatch): - (JSC::stringProtoFuncSearch): - (JSC::stringProtoFuncSlice): - (JSC::stringProtoFuncSplit): - (JSC::stringProtoFuncSubstr): - (JSC::stringProtoFuncSubstring): - (JSC::stringProtoFuncToLowerCase): - (JSC::stringProtoFuncToUpperCase): - (JSC::stringProtoFuncLocaleCompare): - (JSC::stringProtoFuncBig): - (JSC::stringProtoFuncSmall): - (JSC::stringProtoFuncBlink): - (JSC::stringProtoFuncBold): - (JSC::stringProtoFuncFixed): - (JSC::stringProtoFuncItalics): - (JSC::stringProtoFuncStrike): - (JSC::stringProtoFuncSub): - (JSC::stringProtoFuncSup): - (JSC::stringProtoFuncFontcolor): - (JSC::stringProtoFuncFontsize): - (JSC::stringProtoFuncAnchor): - (JSC::stringProtoFuncLink): - (JSC::stringProtoFuncTrim): - (JSC::stringProtoFuncTrimLeft): - (JSC::stringProtoFuncTrimRight): - -2010-06-02 Mark Rowe <mrowe@apple.com> - - Reviewed by Gavin Barraclough. - - Add value-representation specific sections to the mac export file. + * runtime/StringPrototype.h: + * runtime/Structure.cpp: + * runtime/Structure.h: - * Configurations/JavaScriptCore.xcconfig: - * DerivedSources.make: - * JavaScriptCore.JSVALUE32_64only.exp: Added. - * JavaScriptCore.JSVALUE32only.exp: Added. - * JavaScriptCore.JSVALUE64only.exp: Added. - * JavaScriptCore.xcodeproj/project.pbxproj: +2011-02-19 David Kilzer <ddkilzer@apple.com> -2010-06-02 Mark Rowe <mrowe@apple.com> + <http://webkit.org/b/54808> Change jsc target to build directly into JavaScriptCore.framework/Resources/jsc - Reviewed by Gavin Barraclough. + Reviewed by Dan Bernstein. - <rdar://problem/8054988> Work around an LLVM GCC code generation bug that results in crashes inside PCRE. + * Configurations/Base.xcconfig: Added + JAVASCRIPTCORE_FRAMEWORKS_DIR variable. + * Configurations/JavaScriptCore.xcconfig: Used + JAVASCRIPTCORE_FRAMEWORKS_DIR to define INSTALL_PATH. + * JavaScriptCore.xcodeproj/project.pbxproj: Set the INSTALL_PATH + for Production configuration of jsc target. + (Copy Into Framework): Removed old build phase. + (Fix Framework Reference): Renamed build phase to "Copy Into + Framework". Added "set -x" call to make the script print the + commands it is running. Added code to exit early for Production + builds since this was never intended for them. Added code to + copy jsc into the JavaScriptCore.framework/Resources directory. + +2011-02-19 Siddharth Mathur <siddharth.mathur@nokia.com> - * pcre/pcre_exec.cpp: - (repeatInformationFromInstructionOffset): Change the type of instructionOffset to int. There's no good - reason for it to be a short, and using int prevents this code from triggering the LLVM GCC bug. + Reviewed by Laszlo Gombos. -2010-06-02 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> + [Symbian] OSAllocator implementation for Symbian OS. + Manages both data and code region requests. V8 and Sunspider tested + OK with interpreter. Not tested with JSC JIT yet as it has unrelated + failures. Also no thread safety yet. + https://bugs.webkit.org/show_bug.cgi?id=51128 - Reviewed by Kenneth Rohde Christiansen. + * JavaScriptCore.pri: removed HAL linkage + * wtf/Bitmap.h: + (WTF::::findRunOfZeros): find run of zeros in a bitmap. quick n dirty + * wtf/OSAllocator.h: + (WTF::OSAllocator::decommitAndRelease): decommit explicitly + * wtf/OSAllocatorSymbian.cpp: Impl. of OSAllocator interface + (WTF::allocateCodeChunk): utility for code chunks + (WTF::deallocateCodeChunk): utility for code chunks + (WTF::dataAllocatorInstance): getter for data allocator instance + (WTF::OSAllocator::reserveUncommitted): + (WTF::OSAllocator::releaseDecommitted): + (WTF::OSAllocator::commit): + (WTF::OSAllocator::decommit): + (WTF::OSAllocator::reserveAndCommit): + (WTF::PageAllocatorSymbian::PageAllocatorSymbian): maps requests + to one underlying Symbian chunk + (WTF::PageAllocatorSymbian::~PageAllocatorSymbian): + (WTF::PageAllocatorSymbian::reserve): + (WTF::PageAllocatorSymbian::release): + (WTF::PageAllocatorSymbian::commit): + (WTF::PageAllocatorSymbian::decommit): + (WTF::PageAllocatorSymbian::contains): + * wtf/PageAllocatorSymbian.h: Added. + (WTF::SymbianChunk::SymbianChunk): wrapper around RChunk + (WTF::SymbianChunk::~SymbianChunk): + (WTF::SymbianChunk::contains): + +2011-02-19 Yong Li <yoli@rim.com> - Fix the QScriptValue::strictlyEquals function. + Reviewed by Eric Seidel. - Handling for a few edge cases was added. + https://bugs.webkit.org/show_bug.cgi?id=54687 + When being built with armcc, "int" bit fields are treated as + unsigned integers, which will fail the comparisons like "m_offset == -1". + Using "signed" fixes the problem. - New autotest that covers the QScriptValue::strictlyEquals function. + * assembler/ARMAssembler.h: + * assembler/ARMv7Assembler.h: - [Qt] QScriptValue::strictlyEquals is broken - https://bugs.webkit.org/show_bug.cgi?id=36600 +2011-02-18 Geoffrey Garen <ggaren@apple.com> - * qt/api/qscriptvalue.cpp: - (QScriptValue::strictlyEquals): - * qt/api/qscriptvalue_p.h: - (QScriptValuePrivate::strictlyEquals): - * qt/tests/qscriptvalue/qscriptvalue.pro: - * qt/tests/qscriptvalue/tst_qscriptvalue.h: - * qt/tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp: Added. - (tst_QScriptValue::strictlyEquals_initData): - (tst_QScriptValue::strictlyEquals_makeData): - (tst_QScriptValue::strictlyEquals_test): + Reviewed by Sam Weinig. -2010-06-02 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> + Made MarkedSpace block iteration size-class agnostic + https://bugs.webkit.org/show_bug.cgi?id=54792 + + SunSpider reports no change. - Reviewed by Kenneth Rohde Christiansen. + * runtime/MarkedSpace.cpp: + (JSC::MarkedSpace::clearMarks): + (JSC::MarkedSpace::sweep): + (JSC::MarkedSpace::objectCount): + (JSC::MarkedSpace::size): + (JSC::MarkedSpace::capacity): + * runtime/MarkedSpace.h: + (JSC::MarkedSpace::forEach): Iterate blocks in hashing order instead of + size class list order. This is a much simpler convention in a world + of many different size classes. - New function QScriptEngine::newObject. +2011-02-18 Kristian Amlie <kristian.amlie@nokia.com> - The function creates a object of class Object and returns it - as a QScriptValue. + Reviewed by Andreas Kling. - [Qt] QScriptEngine API should contain a newObject function - https://bugs.webkit.org/show_bug.cgi?id=39114 + Added friend exception to Qt platform, which also compiles Windows. - * qt/api/qscriptengine.cpp: - (QScriptEngine::newObject): - * qt/api/qscriptengine.h: - * qt/api/qscriptengine_p.cpp: - (QScriptEnginePrivate::newObject): - * qt/api/qscriptengine_p.h: - * qt/tests/qscriptengine/tst_qscriptengine.cpp: - (tst_QScriptEngine::newObject): + QtWebKit fails to compile on Windows XP with msvc-2008 + https://bugs.webkit.org/show_bug.cgi?id=54746 -2010-06-02 Gabor Loki <loki@webkit.org> + * bytecode/CodeBlock.h: + * runtime/RegExpObject.h: - Reviewed by Gavin Barraclough. - https://bugs.webkit.org/show_bug.cgi?id=40011 +2011-02-18 Geoffrey Garen <ggaren@apple.com> - Thumb-2 build fix: The offset parameter of ldrh should be encoded as an - imm12 immediate constant in load16. If it is not fit in the instruction - a temporary register has to be used. + (Rolled back in r79022 with crash fixed.) - * assembler/MacroAssemblerARMv7.h: - (JSC::MacroAssemblerARMv7::load16): + Reviewed by Sam Weinig. -2010-06-02 Sterling Swigart <sswigart@google.com> + Use hashing instead of linear search in the conservative pointer test + https://bugs.webkit.org/show_bug.cgi?id=54767 + + SunSpider reports no change. - Reviewed by David Levin. + * runtime/MarkedSpace.cpp: + (JSC::MarkedSpace::destroy): No need to explicitly clear the blocks array, + since freeBlock removes items for us. - Image Resizer Patch 0: Added compilation argument to conditionally compile pending patches. - https://bugs.webkit.org/show_bug.cgi?id=39906 + (JSC::MarkedSpace::freeBlock): Fixed a typo that always removed the last + block from the block set instead of the block being freed. Changed to + remove a block from our data structures before deallocating it, since + this is slightly cleaner. - * Configurations/FeatureDefines.xcconfig: + * runtime/MarkedSpace.h: + (JSC::MarkedSpace::contains): Variable-sized objects will use more, + smaller blocks, so it's important for the contains check not to be O(n) + in the number of blocks. -2010-06-01 Gavin Barraclough <barraclough@apple.com> +2011-02-18 chris reiss <christopher.reiss@nokia.com> - Reviewed by Sam Weinig. + Reviewed by Andreas Kling. - Bug 40021 - Refactor bytecode generation for calls so that register for this & args are allocated together + REGRESSION: Date.parse("Tue Nov 23 20:40:05 2010 GMT") returns NaN + https://bugs.webkit.org/show_bug.cgi?id=49989 - This is a useful stepping stone towards reversing argument order. + updated test fast/js/script-tests/date-parse-test.js - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): - (JSC::BytecodeGenerator::addParameter): - (JSC::BytecodeGenerator::emitCall): - (JSC::BytecodeGenerator::emitCallEval): - (JSC::BytecodeGenerator::emitConstruct): - * bytecompiler/BytecodeGenerator.h: - (JSC::CallArguments::thisRegister): - (JSC::CallArguments::argumentRegister): - (JSC::CallArguments::callFrame): - (JSC::CallArguments::count): - (JSC::BytecodeGenerator::shouldEmitProfileHooks): - * bytecompiler/NodesCodegen.cpp: - (JSC::NewExprNode::emitBytecode): - (JSC::CallArguments::CallArguments): - (JSC::EvalFunctionCallNode::emitBytecode): - (JSC::FunctionCallValueNode::emitBytecode): - (JSC::FunctionCallResolveNode::emitBytecode): - (JSC::FunctionCallBracketNode::emitBytecode): - (JSC::FunctionCallDotNode::emitBytecode): - (JSC::CallFunctionCallDotNode::emitBytecode): - (JSC::ApplyFunctionCallDotNode::emitBytecode): - -2010-06-01 Yong Li <yoli@rim.com> + * wtf/DateMath.cpp: + (WTF::parseDateFromNullTerminatedCharacters): - Reviewed by Darin Adler. +2011-02-18 Sheriff Bot <webkit.review.bot@gmail.com> - Explicitly use PTHREAD_MUTEX_NORMAL to create pthread mutex. - https://bugs.webkit.org/show_bug.cgi?id=39893 + Unreviewed, rolling out r79022. + http://trac.webkit.org/changeset/79022 + https://bugs.webkit.org/show_bug.cgi?id=54775 - * wtf/ThreadingPthreads.cpp: - (WTF::Mutex::Mutex): + It broke the whole world (Requested by Ossy on #webkit). -2010-06-01 Kwang Yul Seo <skyul@company100.net> + * runtime/MarkedSpace.h: + (JSC::MarkedSpace::contains): - Reviewed by Xan Lopez. +2011-02-18 Yael Aharon <yael.aharon@nokia.com> - [GTK] Use DEFINE_STATIC_LOCAL for threadMapMutex and threadMap - https://bugs.webkit.org/show_bug.cgi?id=39831 + Reviewed by Dave Hyatt. - Use DEFINE_STATIC_LOCAL for static local variables. + Add support for dir=auto + https://bugs.webkit.org/show_bug.cgi?id=50916 - * wtf/gtk/ThreadingGtk.cpp: - (WTF::threadMapMutex): - (WTF::threadMap): - (WTF::identifierByGthreadHandle): + Change defaultWritingDirection() to return if the writing direction + was determined from a letter with strong directionality or not. -2010-06-01 Kent Tamura <tkent@chromium.org> + * JavaScriptCore.exp: + * JavaScriptCore.order: + * wtf/text/StringImpl.cpp: + (WTF::StringImpl::defaultWritingDirection): + * wtf/text/StringImpl.h: + * wtf/text/WTFString.h: + (WTF::String::defaultWritingDirection): - Reviewed by Shinichiro Hamaji. +2011-02-18 Geoffrey Garen <ggaren@apple.com> - Fix style errors of dtoa - https://bugs.webkit.org/show_bug.cgi?id=39972 + Reviewed by Sam Weinig. - Fix all errors reported by check-webkit-style. + Use hashing instead of linear search in the conservative pointer test + https://bugs.webkit.org/show_bug.cgi?id=54767 + + SunSpider reports no change. - * wtf/dtoa.cpp: - * wtf/dtoa.h: + * runtime/MarkedSpace.h: + (JSC::MarkedSpace::contains): Variable-sized objects will use more, + smaller blocks, so it's important for the contains check not to be O(n) + in the number of blocks. -2010-05-30 Darin Adler <darin@apple.com> +2011-02-18 Geoffrey Garen <ggaren@apple.com> Reviewed by Sam Weinig. - * wtf/OwnArrayPtr.h: - (WTF::OwnArrayPtr::set): Fix the assertion in here to match the one in OwnPtr. - At some point someone fixed the "asserts when assigning to 0 and the pointer is - already 0" issue in OwnPtr but forgot to do it here. - -2010-05-29 Geoffrey Garen <ggaren@apple.com> - - Windows build fix: Updated exported symbols. + Tightened some usage accounting code in MarkedSpace + https://bugs.webkit.org/show_bug.cgi?id=54761 - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - -2010-05-29 Geoffrey Garen <ggaren@apple.com> - - Disabled ENABLE_JIT_OPTIMIZE_NATIVE_CALL on Windows for now, until I - can figure out why it's crashing. - - * wtf/Platform.h: + SunSpider reports no change. -2010-05-29 Geoffrey Garen <ggaren@apple.com> + * runtime/Heap.cpp: + (JSC::Heap::Heap): Initialize the marked space high water mark on + construction, instead of relying on some implicit subtleties to make + not initializing it work out OK. - Fixed Windows crash seen on buildbot. + * runtime/Heap.h: Fixed up includes. - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::privateCompileCTINativeCall): __fastcall puts the first - argument in ecx. + * runtime/MarkedBlock.h: Made firstAtom() static so clients can call it + even without having allocated a block. -2010-05-28 Geoffrey Garen <ggaren@apple.com> + * runtime/MarkedSpace.cpp: + (JSC::MarkedSpace::MarkedSpace): Don't pre-allocate a block, since this + would be prohibitively expensive with multiple size classes. - Windows build fix: Updated exported symbols. + (JSC::MarkedSpace::allocateBlock): + (JSC::MarkedSpace::freeBlock): Track allocated blocks in a hash set, + since linear search in the contains check will be prohibitively + expensive once we're using lots of smaller blocks. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + (JSC::MarkedSpace::allocate): Don't assume that we always have a block + allocated, since we don't anymore. (See above.) -2010-05-28 Geoffrey Garen <ggaren@apple.com> + (JSC::MarkedSpace::reset): + * runtime/MarkedSpace.h: Updated for changes mentioned above. - Qt build fix: disable a little more stuff when JIT_OPTIMIZE_NATIVE_CALL - is disabled. +2011-02-17 Geoffrey Garen <ggaren@apple.com> - * runtime/Lookup.cpp: - (JSC::setUpStaticFunctionSlot): - * runtime/Lookup.h: - * wtf/Platform.h: + Reviewed by Sam Weinig. -2010-05-28 Geoffrey Garen <ggaren@apple.com> + Made object allocation secretly variable-sized (Shhhh!) + https://bugs.webkit.org/show_bug.cgi?id=54721 + + SunSpider reports no change. + + Internally, MarkedBlock now makes variable-sized allocations, even + though MarkedSpace doesn't take advantage of this yet. - Windows build fix: Updated exported symbols. + * runtime/MarkedBlock.cpp: + (JSC::MarkedBlock::MarkedBlock): No need to ASSERT that allocations are + fixed-sized. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * runtime/MarkedBlock.h: Shrunk the atom size so we can allocate things + that are not multiples of 64 bytes. -2010-05-28 Geoffrey Garen <ggaren@apple.com> +2011-02-17 Geoffrey Garen <ggaren@apple.com> - Reviewed by Sam Weinig, Gavin Barraclough, Oliver Hunt. + Reviewed by Sam Weinig. - Simplified the host calling convention. + Fixed some math errors when when using variable-sized cells + https://bugs.webkit.org/show_bug.cgi?id=54717 - 22.5% speedup on 32-bit host function calls. 9.5% speedup on 64-bit host - function calls. - - No change on SunSpider. - - All JS calls (but not constructs, yet) now go through the normal JS - calling convention via the RegisterFile. As a result, the host calling - convention, which used to be this - - JSValue (JSC_HOST_CALL *NativeFunction)(ExecState*, JSObject*, JSValue thisValue, const ArgList&) - - is now this - - JSValue (JSC_HOST_CALL *NativeFunction)(ExecState*) - - Callee, 'this', and argument access all hapen relative to the ExecState*, - which is a pointer into the RegisterFile. - - This patch comes in two parts. - - PART ONE: Functional code changes. + SunSpider reports no change. - * wtf/Platform.h: Disabled optimized calls on platforms I didn't test. - We can re-enable once we verify that host calls on these platforms are - correct. - - * debugger/DebuggerCallFrame.cpp: - (JSC::DebuggerCallFrame::functionName): - (JSC::DebuggerCallFrame::calculatedFunctionName): Updated for change to - ExecState::callee(). - - (JSC::DebuggerCallFrame::thisObject): Updated for removal of ExecState::thisValue(). - - * interpreter/CallFrame.cpp: - * interpreter/CallFrame.h: - (JSC::ExecState::callee): - (JSC::ExecState::scopeChain): - (JSC::ExecState::init): Changed callee() to be JSObject* instead of - JSFunction* -- now, it might be some other callable host object. - - (JSC::ExecState::hostThisRegister): - (JSC::ExecState::hostThisValue): - (JSC::ExecState::argumentCount): - (JSC::ExecState::argumentCountIncludingThis): - (JSC::ExecState::argument): - (JSC::ExecState::setArgumentCountIncludingThis): - (JSC::ExecState::setCallee): Added convenient accessors for arguments - from within a host function. Removed thisValue() because it was too - tempting to use incorrectly, and it only had one or two clients, anyway. + Computer Science Barbie says, "Math is not so hard afterall!" - * interpreter/Interpreter.cpp: - (JSC::Interpreter::callEval): Updated for removal of ExecState::thisValue(). + * runtime/JSCell.h: + (JSC::JSCell::MarkedBlock::allocate): Round up when calculating the + minimum number of atoms required for a cell, since rounding down + will get you splinched. - (JSC::Interpreter::throwException): Be sure to shrink the register file - before invoking the exception handler, to reduce the chances that the - handler will re-throw in the case of stack overflow. (Re-throwing is now - more likely than it used to be, since standardizing the calling convention - implicitly added stack overflow checks to some places where they used to be missing.) + * runtime/MarkedBlock.cpp: + (JSC::MarkedBlock::MarkedBlock): + (JSC::MarkedBlock::sweep): + * runtime/MarkedBlock.h: + (JSC::MarkedBlock::forEach): Changed a bunch of != tests to < tests + because m_endAtom is actually a fuzzy end -- iterating from firstAtom() + may not hit m_endAtom exactly. - (JSC::Interpreter::execute): Clarified the scope of DynamicGlobalObjectScope. - Updated for CallFrame::init API change. +2011-02-17 Geoffrey Garen <ggaren@apple.com> - (JSC::Interpreter::executeCall): Clarified scope of DynamicGlobalObjectScope. - Updated for CallFrame::init API change. Added support for calling a host - function. + Reviewed by Sam Weinig. - (JSC::Interpreter::executeConstruct): Clarified scope of DynamicGlobalObjectScope. - Updated for CallFrame::init API change. + A little more abstraction for MarkedSpace::contains + https://bugs.webkit.org/show_bug.cgi?id=54715 - (JSC::Interpreter::prepareForRepeatCall): Updated for CallFrame::init API change. + * runtime/MarkedBlock.h: + (JSC::MarkedBlock::contains): Added a contains function, so MarkedSpace + doesn't have to know how MarkedBlock tracks containment internally. - (JSC::Interpreter::privateExecute): Updated for CallFrame::init API change. - Added some explicit JSValue(JSObject*) initialization, since relaxing - the JSFunction* restriction on callee has made register types more ambiguous. - Removed toThisObject() conversion, since all callees do it themselves now. - Updated host function call for new host function signature. Updated for - change to ExecState::argumentCount() API. + * runtime/MarkedSpace.h: + (JSC::MarkedSpace::contains): Call through to MarkedBlock to figure out + if a cell that seems to be in a block is valid. - * interpreter/Register.h: - (JSC::Register::): - (JSC::Register::operator=): - (JSC::Register::function): Changed callee() to be JSObject* instead of - JSFunction* -- now, it might be some other callable host object. +2011-02-17 Geoffrey Garen <ggaren@apple.com> - * jit/JITOpcodes.cpp: - (JSC::JIT::privateCompileCTINativeCall): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::privateCompileCTINativeCall): Deleted a bunch of code that - set up the arguments to host functions -- all but one of the arguments - are gone now. This is the actual optimization. + Reviewed by Sam Weinig. - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): Updated for ExecState and Register API - changes noted above. Removed toThisObject() conversion, since all callees - do it themselves now. + Removed the invariant that the last cell in a block is always marked + https://bugs.webkit.org/show_bug.cgi?id=54713 - * runtime/ArgList.h: - (JSC::ArgList::ArgList): ArgList is getting close to unused. Added a - temporary shim for converting from ExecState* to ArgList where it's still - necessary. - - * runtime/Arguments.h: - (JSC::Arguments::getArgumentsData): - (JSC::Arguments::Arguments): Updated for ExecState and Register API - changes noted above. - - * runtime/CallData.cpp: - (JSC::call): Changed call always to call Interpreter::executeCall, even - for host functions. This ensures that the normal calling convention is - set up in the RegsiterFile when calling from C++ to host function. - - * runtime/CallData.h: Changed host function signature as described above. - - * runtime/ConstructData.cpp: - (JSC::construct): Moved JSFunction::construct code here so I could nix - JSFunction::call and JSFunction::call. We want a JSFunction-agnostic - way to call and construct, so that everything works naturally for non- - JSFunction objects. - - * runtime/JSFunction.cpp: - (JSC::callHostFunctionAsConstructor): - * runtime/JSFunction.h: Updated for ExecState and Register API changes - noted above. Nixed JSFunction::call and JSFunction::construct, noted above. - - * runtime/JSGlobalObject.cpp: - (JSC::JSGlobalObject::init): Ditto. - - PART TWO: Global search and replace. + SunSpider reports no change. - In the areas below, I used global search-and-replace to change - (ExecState*, JSObject*, JSValue, const ArgList&) => (ExecState*) - args.size() => exec->argumentCount() - args.at(i) => exec->argument(i) + This adds one branch to allocation, but simplifies the mark invariant, + especially in a world of variable-sized cells. Now, it really is true + that any cell whose mark bit is set is a valid, live cell whose + constructor has run and whose destructor has not run. - * API/JSCallbackFunction.cpp: - (JSC::JSCallbackFunction::call): - * API/JSCallbackFunction.h: - * API/JSCallbackObject.h: - * API/JSCallbackObjectFunctions.h: - (JSC::::call): - * JavaScriptCore.exp: - * jsc.cpp: - (functionPrint): - (functionDebug): - (functionGC): - (functionVersion): - (functionRun): - (functionLoad): - (functionCheckSyntax): - (functionSetSamplingFlags): - (functionClearSamplingFlags): - (functionReadline): - (functionQuit): - * runtime/ArrayConstructor.cpp: - (JSC::callArrayConstructor): - (JSC::arrayConstructorIsArray): - * runtime/ArrayPrototype.cpp: - (JSC::arrayProtoFuncToString): - (JSC::arrayProtoFuncToLocaleString): - (JSC::arrayProtoFuncJoin): - (JSC::arrayProtoFuncConcat): - (JSC::arrayProtoFuncPop): - (JSC::arrayProtoFuncPush): - (JSC::arrayProtoFuncReverse): - (JSC::arrayProtoFuncShift): - (JSC::arrayProtoFuncSlice): - (JSC::arrayProtoFuncSort): - (JSC::arrayProtoFuncSplice): - (JSC::arrayProtoFuncUnShift): - (JSC::arrayProtoFuncFilter): - (JSC::arrayProtoFuncMap): - (JSC::arrayProtoFuncEvery): - (JSC::arrayProtoFuncForEach): - (JSC::arrayProtoFuncSome): - (JSC::arrayProtoFuncReduce): - (JSC::arrayProtoFuncReduceRight): - (JSC::arrayProtoFuncIndexOf): - (JSC::arrayProtoFuncLastIndexOf): - * runtime/BooleanConstructor.cpp: - (JSC::callBooleanConstructor): - * runtime/BooleanPrototype.cpp: - (JSC::booleanProtoFuncToString): - (JSC::booleanProtoFuncValueOf): - * runtime/DateConstructor.cpp: - (JSC::callDate): - (JSC::dateParse): - (JSC::dateNow): - (JSC::dateUTC): - * runtime/DatePrototype.cpp: - (JSC::formatLocaleDate): - (JSC::fillStructuresUsingTimeArgs): - (JSC::fillStructuresUsingDateArgs): - (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::dateProtoFuncSetMilliSeconds): - (JSC::dateProtoFuncSetUTCMilliseconds): - (JSC::dateProtoFuncSetSeconds): - (JSC::dateProtoFuncSetUTCSeconds): - (JSC::dateProtoFuncSetMinutes): - (JSC::dateProtoFuncSetUTCMinutes): - (JSC::dateProtoFuncSetHours): - (JSC::dateProtoFuncSetUTCHours): - (JSC::dateProtoFuncSetDate): - (JSC::dateProtoFuncSetUTCDate): - (JSC::dateProtoFuncSetMonth): - (JSC::dateProtoFuncSetUTCMonth): - (JSC::dateProtoFuncSetFullYear): - (JSC::dateProtoFuncSetUTCFullYear): - (JSC::dateProtoFuncSetYear): - (JSC::dateProtoFuncGetYear): - (JSC::dateProtoFuncToJSON): - * runtime/ErrorConstructor.cpp: - (JSC::callErrorConstructor): - * runtime/ErrorPrototype.cpp: - (JSC::errorProtoFuncToString): - * runtime/FunctionConstructor.cpp: - (JSC::callFunctionConstructor): - * runtime/FunctionPrototype.cpp: - (JSC::callFunctionPrototype): - (JSC::functionProtoFuncToString): - (JSC::functionProtoFuncApply): - (JSC::functionProtoFuncCall): - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::encode): - (JSC::decode): - (JSC::globalFuncEval): - (JSC::globalFuncParseInt): - (JSC::globalFuncParseFloat): - (JSC::globalFuncIsNaN): - (JSC::globalFuncIsFinite): - (JSC::globalFuncDecodeURI): - (JSC::globalFuncDecodeURIComponent): - (JSC::globalFuncEncodeURI): - (JSC::globalFuncEncodeURIComponent): - (JSC::globalFuncEscape): - (JSC::globalFuncUnescape): - (JSC::globalFuncJSCPrint): - * runtime/JSGlobalObjectFunctions.h: - * runtime/JSONObject.cpp: - (JSC::JSONProtoFuncParse): - (JSC::JSONProtoFuncStringify): - * runtime/JSString.h: - * runtime/MathObject.cpp: - (JSC::mathProtoFuncAbs): - (JSC::mathProtoFuncACos): - (JSC::mathProtoFuncASin): - (JSC::mathProtoFuncATan): - (JSC::mathProtoFuncATan2): - (JSC::mathProtoFuncCeil): - (JSC::mathProtoFuncCos): - (JSC::mathProtoFuncExp): - (JSC::mathProtoFuncFloor): - (JSC::mathProtoFuncLog): - (JSC::mathProtoFuncMax): - (JSC::mathProtoFuncMin): - (JSC::mathProtoFuncPow): - (JSC::mathProtoFuncRandom): - (JSC::mathProtoFuncRound): - (JSC::mathProtoFuncSin): - (JSC::mathProtoFuncSqrt): - (JSC::mathProtoFuncTan): - * runtime/NativeErrorConstructor.cpp: - (JSC::callNativeErrorConstructor): - * runtime/NumberConstructor.cpp: - (JSC::callNumberConstructor): - * runtime/NumberPrototype.cpp: - (JSC::numberProtoFuncToString): - (JSC::numberProtoFuncToLocaleString): - (JSC::numberProtoFuncValueOf): - (JSC::numberProtoFuncToFixed): - (JSC::numberProtoFuncToExponential): - (JSC::numberProtoFuncToPrecision): - * runtime/ObjectConstructor.cpp: - (JSC::callObjectConstructor): - (JSC::objectConstructorGetPrototypeOf): - (JSC::objectConstructorGetOwnPropertyDescriptor): - (JSC::objectConstructorGetOwnPropertyNames): - (JSC::objectConstructorKeys): - (JSC::objectConstructorDefineProperty): - (JSC::objectConstructorDefineProperties): - (JSC::objectConstructorCreate): - * runtime/ObjectPrototype.cpp: - (JSC::objectProtoFuncValueOf): - (JSC::objectProtoFuncHasOwnProperty): - (JSC::objectProtoFuncIsPrototypeOf): - (JSC::objectProtoFuncDefineGetter): - (JSC::objectProtoFuncDefineSetter): - (JSC::objectProtoFuncLookupGetter): - (JSC::objectProtoFuncLookupSetter): - (JSC::objectProtoFuncPropertyIsEnumerable): - (JSC::objectProtoFuncToLocaleString): - (JSC::objectProtoFuncToString): - * runtime/ObjectPrototype.h: - * runtime/Operations.h: - (JSC::jsString): - * runtime/RegExpConstructor.cpp: - (JSC::callRegExpConstructor): - * runtime/RegExpObject.cpp: - (JSC::RegExpObject::test): - (JSC::RegExpObject::exec): - (JSC::callRegExpObject): - (JSC::RegExpObject::match): - * runtime/RegExpObject.h: - * runtime/RegExpPrototype.cpp: - (JSC::regExpProtoFuncTest): - (JSC::regExpProtoFuncExec): - (JSC::regExpProtoFuncCompile): - (JSC::regExpProtoFuncToString): - * runtime/StringConstructor.cpp: - (JSC::stringFromCharCodeSlowCase): - (JSC::stringFromCharCode): - (JSC::callStringConstructor): - * runtime/StringPrototype.cpp: - (JSC::stringProtoFuncReplace): - (JSC::stringProtoFuncToString): - (JSC::stringProtoFuncCharAt): - (JSC::stringProtoFuncCharCodeAt): - (JSC::stringProtoFuncConcat): - (JSC::stringProtoFuncIndexOf): - (JSC::stringProtoFuncLastIndexOf): - (JSC::stringProtoFuncMatch): - (JSC::stringProtoFuncSearch): - (JSC::stringProtoFuncSlice): - (JSC::stringProtoFuncSplit): - (JSC::stringProtoFuncSubstr): - (JSC::stringProtoFuncSubstring): - (JSC::stringProtoFuncToLowerCase): - (JSC::stringProtoFuncToUpperCase): - (JSC::stringProtoFuncLocaleCompare): - (JSC::stringProtoFuncBig): - (JSC::stringProtoFuncSmall): - (JSC::stringProtoFuncBlink): - (JSC::stringProtoFuncBold): - (JSC::stringProtoFuncFixed): - (JSC::stringProtoFuncItalics): - (JSC::stringProtoFuncStrike): - (JSC::stringProtoFuncSub): - (JSC::stringProtoFuncSup): - (JSC::stringProtoFuncFontcolor): - (JSC::stringProtoFuncFontsize): - (JSC::stringProtoFuncAnchor): - (JSC::stringProtoFuncLink): - (JSC::stringProtoFuncTrim): - (JSC::stringProtoFuncTrimLeft): - (JSC::stringProtoFuncTrimRight): - -2010-05-28 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> + * runtime/JSCell.h: + (JSC::JSCell::MarkedBlock::allocate): Changed this do-while into a while + since we can no longer rely on a set mark bit to break out of this loop + before it reaches the end of the block. - Reviewed by Geoffrey Garen. + * runtime/MarkedBlock.cpp: + (JSC::MarkedBlock::MarkedBlock): + (JSC::MarkedBlock::sweep): + * runtime/MarkedBlock.h: + (JSC::MarkedBlock::isEmpty): + (JSC::MarkedBlock::clearMarks): + (JSC::MarkedBlock::markCount): + (JSC::MarkedBlock::forEach): No need to set a special last mark bit. - Fix the JSObjectSetPrototype function. +2011-02-17 Sheriff Bot <webkit.review.bot@gmail.com> - A cycle in a prototype chain can cause an application hang or - even crash. - A check for a prototype chain cycles was added to - the JSObjectSetPrototype. + Unreviewed, rolling out r78856 and r78907. + http://trac.webkit.org/changeset/78856 + http://trac.webkit.org/changeset/78907 + https://bugs.webkit.org/show_bug.cgi?id=54705 - JSObjectSetPrototype doesn't check for cycle in prototype chain. - https://bugs.webkit.org/show_bug.cgi?id=39360 + These seem to break tests on 32-bit builds. (Requested by + aroben on #webkit). - * API/JSObjectRef.cpp: - (JSObjectSetPrototype): - * API/tests/testapi.c: - (assertTrue): - (checkForCycleInPrototypeChain): - (main): - * runtime/JSObject.cpp: - (JSC::JSObject::put): + * JavaScriptCore.xcodeproj/project.pbxproj: + * collector/handles/Global.h: + (JSC::Global::internalSet): + * collector/handles/Handle.h: + (JSC::HandleTypes::getFromSlot): + (JSC::HandleTypes::toJSValue): + (JSC::HandleTypes::validateUpcast): + (JSC::HandleConverter::operator->): + (JSC::HandleConverter::operator*): + (JSC::Handle::Handle): + (JSC::Handle::get): + * runtime/JSArray.cpp: + (JSC::JSArray::sortNumeric): * runtime/JSObject.h: - (JSC::JSObject::setPrototypeWithCycleCheck): - -2010-05-28 Chao-ying Fu <fu@mips.com> - - Reviewed by Eric Seidel. - - Fix MIPS JIT DoubleGreaterThanOrEqual Operands - https://bugs.webkit.org/show_bug.cgi?id=39504 - - Swapped two operands of left and right for DoubleGreaterThanOrEqual. - This patch fixed two layout tests as follows. - fast/js/comparison-operators-greater.html - fast/js/comparison-operators-less.html - - * assembler/MacroAssemblerMIPS.h: - (JSC::MacroAssemblerMIPS::branchDouble): + (JSC::JSObject::inlineGetOwnPropertySlot): + * runtime/SlotAccessor.h: Removed. + * runtime/WeakGCPtr.h: + (JSC::WeakGCPtr::get): + (JSC::WeakGCPtr::internalSet): + * runtime/WriteBarrier.h: + (JSC::DeprecatedPtr::DeprecatedPtr): + (JSC::DeprecatedPtr::get): + (JSC::DeprecatedPtr::operator*): + (JSC::DeprecatedPtr::operator->): + (JSC::DeprecatedPtr::slot): + (JSC::DeprecatedPtr::operator UnspecifiedBoolType*): + (JSC::DeprecatedPtr::operator!): + (JSC::WriteBarrierBase::set): + (JSC::WriteBarrierBase::get): + (JSC::WriteBarrierBase::operator*): + (JSC::WriteBarrierBase::operator->): + (JSC::WriteBarrierBase::clear): + (JSC::WriteBarrierBase::slot): + (JSC::WriteBarrierBase::operator UnspecifiedBoolType*): + (JSC::WriteBarrierBase::operator!): + (JSC::WriteBarrierBase::setWithoutWriteBarrier): + (JSC::WriteBarrier::WriteBarrier): -2010-05-28 Gavin Barraclough <barraclough@apple.com> +2011-02-17 Csaba Osztrogonác <ossy@webkit.org> - Reviewed by Geoff Garen. + Unreviewed. - Move jit compilation from linking thunks into cti_vm_lazyLink methods. + [Qt] Buildfix. - * jit/JITOpcodes.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): + * wtf/RetainPtr.h: Add missing PLATFORM(CF) guard. -2010-05-28 Gavin Barraclough <barraclough@apple.com> +2011-02-17 Geoffrey Garen <ggaren@apple.com> - Reviewed by Sam Weinig. + Reviewed by Oliver Hunt. - Bug 39898 - Move arity check into callee. + Made MarkedBlock variable-sized + https://bugs.webkit.org/show_bug.cgi?id=54692 - We can reduce the size of the virtual call trampolines by moving the arity check - into the callee functions. As a following step we will be able to remove the - check for native function / codeblocks by performing translation in a lazy stub. + SunSpider reports no change. - * interpreter/CallFrame.h: - (JSC::ExecState::init): - (JSC::ExecState::setReturnPC): - * jit/JIT.cpp: - (JSC::JIT::privateCompile): - (JSC::JIT::linkCall): - (JSC::JIT::linkConstruct): - * jit/JIT.h: - (JSC::JIT::compile): - * jit/JITOpcodes.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - * runtime/Executable.cpp: - (JSC::FunctionExecutable::generateJITCodeForCall): - (JSC::FunctionExecutable::generateJITCodeForConstruct): - (JSC::FunctionExecutable::reparseExceptionInfo): - * runtime/Executable.h: - (JSC::NativeExecutable::NativeExecutable): - (JSC::FunctionExecutable::generatedJITCodeForCallWithArityCheck): - (JSC::FunctionExecutable::generatedJITCodeForConstructWithArityCheck): - -2010-05-27 Luiz Agostini <luiz.agostini@openbossa.org> - - Reviewed by Darin Adler. - - UTF-16 code points compare() for String objects - https://bugs.webkit.org/show_bug.cgi?id=39701 - - Moving compare() implementation from UString to StringImpl for it to be shared - with String. Adding overloaded free functions codePointCompare() in StringImpl - and WTFString. Renaming function compare in UString to codePointCompare to be - consistent. + Each MarkedBlock is now composed of a set of fixed-sized atoms, with one + mark bit per atom. A given cell may be composed of one or more atoms. + + * runtime/Heap.cpp: + (JSC::Heap::allocate): Made fixed-sizedness a property of MarkedSpace, + bubbling it up from MarkedBlock, since MarkedBlock now supports variable- + sizedness. - * runtime/JSArray.cpp: - (JSC::compareByStringPairForQSort): - * runtime/UString.cpp: - * runtime/UString.h: - (JSC::codePointCompare): - * wtf/text/StringImpl.cpp: - (WebCore::codePointCompare): - * wtf/text/StringImpl.h: - * wtf/text/WTFString.cpp: - (WebCore::codePointCompare): - * wtf/text/WTFString.h: + * runtime/JSCell.h: + (JSC::JSCell::MarkedBlock::allocate): Removed use of CELLS_PER_BLOCK and + (implicit) one constants -- these quantities are not constant anymore. + Updated for switch from cell to atom. -2010-05-26 Darin Adler <darin@apple.com> + * runtime/MarkedBlock.cpp: + (JSC::MarkedBlock::create): + (JSC::MarkedBlock::destroy): + (JSC::MarkedBlock::MarkedBlock): + (JSC::MarkedBlock::sweep): + * runtime/MarkedBlock.h: + (JSC::MarkedBlock::firstAtom): + (JSC::MarkedBlock::atoms): + (JSC::MarkedBlock::isAtomAligned): + (JSC::MarkedBlock::blockFor): + (JSC::MarkedBlock::isEmpty): + (JSC::MarkedBlock::clearMarks): + (JSC::MarkedBlock::size): + (JSC::MarkedBlock::capacity): + (JSC::MarkedBlock::atomNumber): + (JSC::MarkedBlock::isMarked): + (JSC::MarkedBlock::testAndSetMarked): + (JSC::MarkedBlock::setMarked): + (JSC::MarkedBlock::forEach): Same as above. Also removed use of CELL_SIZE + and BLOCK_SIZE, and switched away from calling arbitrary pointers cells. - Reviewed by Kent Tamura. + * runtime/MarkedSpace.cpp: + (JSC::MarkedSpace::MarkedSpace): + (JSC::MarkedSpace::allocateBlock): + (JSC::MarkedSpace::allocate): + (JSC::MarkedSpace::reset): + * runtime/MarkedSpace.h: + (JSC::CollectorHeap::CollectorHeap): + (JSC::MarkedSpace::contains): Updated for renames. Made fixed-sizedness + a property of MarkedSpace. - Null characters handled incorrectly in ToNumber conversion - https://bugs.webkit.org/show_bug.cgi?id=38088 +2011-02-17 Oliver Hunt <oliver@apple.com> - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::parseInt): Changed code to use UTF8String().data() instead of - ascii() to fix the thread safety issue. Code path is covered by existing - tests in run-javascriptcore-tests. - (JSC::parseFloat): Moved comment to UString::toDouble since the issue - affects all clients, not just parseFloat. Specifically, this also affects - standard JavaScript numeric conversion, ToNumber. + Attempt to fix windows build - * runtime/UString.cpp: - (JSC::UString::toDouble): Added a comment about incorrect space skipping. - Changed trailing junk check to use the length of the CString instead of - checking for a null character. Also got rid of a little unneeded logic - in the case where we tolerate trailing junk. + * runtime/WriteBarrier.h: -2010-05-27 Nathan Lawrence <nlawrence@apple.com> +2011-02-17 Oliver Hunt <oliver@apple.com> Reviewed by Geoffrey Garen. - Search for the new allocation one word at a time. Improves - performance on SunSpider by approximately 1%. - http://bugs.webkit.org/show_bug.cgi?id=39758 - - * runtime/Collector.cpp: - (JSC::Heap::allocate): - * runtime/Collector.h: - (JSC::CollectorBitmap::advanceToNextPossibleFreeCell): - -2010-05-27 Kevin Ollivier <kevino@theolliviers.com> - - [wx] Build fixes for Windows after recent changes. - - * wscript: - -2010-05-27 Gustavo Noronha Silva <gns@gnome.org> - - More build fixage for make dist. - - * GNUmakefile.am: - -2010-05-27 Kwang Yul Seo <skyul@company100.net> - - Reviewed by Darin Adler. - - RVCT does not have strnstr. - https://bugs.webkit.org/show_bug.cgi?id=39719 - - Add COMPILER(RVCT) guard to strnstr in StringExtras.h as RVCT does not provide strnstr. + Refactor WriteBarrier and DeprecatedPtr to have less code duplication. + https://bugs.webkit.org/show_bug.cgi?id=54608 - * wtf/StringExtras.h: + Make use of the tricks used for Handle, et al to avoid duplicating all + of the logic for DeprecatedPtr and WriteBarrier simply to support known + vs. unknown types. -2010-05-26 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Bug 39795 - Add support for YARR JIT generation of greedy quantified parens at the end of the main disjunction. - (relanding r60267) - - If the last item in a main disjunction is a quantified set of parentheses, - this is easier to code generate for than the general case for quantified - parentheses. This is because we never need to backtrack into the parentheses - - the first match will be the final and accepted match. - - This patch also somewhat reverts a recent change to when fallback to PCRE - occurs. At the minute the compiler is tracking on patterns which will - require JIT fallback. This is handy from a performance perspective (it saves - the failed attempt at JIT compilation), but it means introducing knowledge - of the JITs capabilities into the other layers of the regex compilers. For - the specific feature of back-references, add a flag tracking their presence - on the pattern, and make these expressions fallback without attempting to - JIT. For parentheses, return to detecting which cases are have or have not - been handled during JIT compilation. - - 18% progression on tagcloud, ~1.5% overall on sunspidey. - - * yarr/RegexCompiler.cpp: - (JSC::Yarr::RegexPatternConstructor::atomBackReference): - (JSC::Yarr::RegexPatternConstructor::quantifyAtom): - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::TermGenerationState::isLastTerm): - (JSC::Yarr::RegexGenerator::TermGenerationState::isMainDisjunction): - (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack): - (JSC::Yarr::RegexGenerator::generateTerm): - (JSC::Yarr::RegexGenerator::RegexGenerator): - (JSC::Yarr::RegexGenerator::shouldFallBack): - (JSC::Yarr::jitCompileRegex): - * yarr/RegexPattern.h: - (JSC::Yarr::RegexPattern::RegexPattern): - (JSC::Yarr::RegexPattern::reset): - -2010-05-26 Gavin Barraclough <barraclough@apple.com> - - Reviewed by NOBODY (revert). - - Temporarily rolling out r60267, I appear to have hoesed perf at the last minute. :-/ Fixing. - - * yarr/RegexCompiler.cpp: - (JSC::Yarr::RegexPatternConstructor::atomBackReference): - (JSC::Yarr::RegexPatternConstructor::quantifyAtom): - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::TermGenerationState::term): - (JSC::Yarr::RegexGenerator::generateParenthesesSingle): - (JSC::Yarr::RegexGenerator::generateTerm): - (JSC::Yarr::RegexGenerator::RegexGenerator): - (JSC::Yarr::jitCompileRegex): - * yarr/RegexPattern.h: - (JSC::Yarr::RegexPattern::RegexPattern): - (JSC::Yarr::RegexPattern::reset): - -2010-05-26 Gustavo Noronha Silva <gns@gnome.org> - - Build fixes for make distcheck. - - * GNUmakefile.am: - -2010-05-26 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Bug 39795 - Add support for YARR JIT generation of greedy quantified parens at the end of the main disjunction. - - If the last item in a main disjunction is a quantified set of parentheses, - this is easier to code generate for than the general case for quantified - parentheses. This is because we never need to backtrack into the parentheses - - the first match will be the final and accepted match. - - This patch also somewhat reverts a recent change to when fallback to PCRE - occurs. At the minute the compiler is tracking on patterns which will - require JIT fallback. This is handy from a performance perspective (it saves - the failed attempt at JIT compilation), but it means introducing knowledge - of the JITs capabilities into the other layers of the regex compilers. For - the specific feature of back-references, add a flag tracking their presence - on the pattern, and make these expressions fallback without attempting to - JIT. For parentheses, return to detecting which cases are have or have not - been handled during JIT compilation. - - 18% progression on tagcloud, ~1.5% overall on sunspidey. - - * yarr/RegexCompiler.cpp: - (JSC::Yarr::RegexPatternConstructor::atomBackReference): - (JSC::Yarr::RegexPatternConstructor::quantifyAtom): - * yarr/RegexJIT.cpp: - (JSC::Yarr::RegexGenerator::TermGenerationState::isLastTerm): - (JSC::Yarr::RegexGenerator::TermGenerationState::isMainDisjunction): - (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack): - (JSC::Yarr::RegexGenerator::generateTerm): - (JSC::Yarr::RegexGenerator::RegexGenerator): - (JSC::Yarr::RegexGenerator::shouldFallBack): - (JSC::Yarr::jitCompileRegex): - * yarr/RegexPattern.h: - (JSC::Yarr::RegexPattern::RegexPattern): - (JSC::Yarr::RegexPattern::reset): - -2010-05-26 Geoffrey Garen <ggaren@apple.com> - - Reviewed by Sam Weinig. - - Fixed a crash seen on the Leopard bot, caused by merge. - - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): Get the return address from the callframe, - since it's no longer passed to us as an argument. + * JavaScriptCore.xcodeproj/project.pbxproj: + * collector/handles/Global.h: + (JSC::Global::internalSet): + * collector/handles/Handle.h: + (JSC::Handle::Handle): + (JSC::Handle::get): + * runtime/JSArray.cpp: + (JSC::JSArray::sortNumeric): + * runtime/JSObject.h: + (JSC::JSObject::inlineGetOwnPropertySlot): + * runtime/SlotAccessor.h: Added. + (JSC::SlotTypes::getFromBaseType): + (JSC::SlotTypes::convertToBaseType): + (JSC::SlotTypes::getFromSlot): + (JSC::SlotTypes::toJSValue): + (JSC::SlotTypes::validateUpcast): + (JSC::SlotAccessor::operator->): + (JSC::SlotAccessor::operator*): + * runtime/WeakGCPtr.h: + (JSC::WeakGCPtr::get): + (JSC::WeakGCPtr::internalSet): + * runtime/WriteBarrier.h: + (JSC::DeprecatedPtr::DeprecatedPtr): + (JSC::DeprecatedPtr::get): + (JSC::DeprecatedPtr::slot): + (JSC::DeprecatedPtr::operator=): + (JSC::WriteBarrierTranslator::convertToStorage): + (JSC::WriteBarrierTranslator::convertFromStorage): + (JSC::WriteBarrierBase::set): + (JSC::WriteBarrierBase::get): + (JSC::WriteBarrierBase::clear): + (JSC::WriteBarrierBase::slot): + (JSC::WriteBarrierBase::operator UnspecifiedBoolType*): + (JSC::WriteBarrierBase::operator!): + (JSC::WriteBarrierBase::setWithoutWriteBarrier): + (JSC::WriteBarrier::WriteBarrier): -2010-05-25 Geoffrey Garen <ggaren@apple.com> +2011-02-17 Kevin Ollivier <kevino@theolliviers.com> - Fixed build failure caused by merge. + [wx] Revert incorrect blind fix and restore previous working code. - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): On error, return a single value, since this - function no longer returns a pair. + * wtf/wx/StringWx.cpp: + (WTF::String::String): -2010-05-25 Geoffrey Garen <ggaren@apple.com> +2011-02-16 Geoffrey Garen <ggaren@apple.com> - Reviewed by Oliver Hunt. + Reviewed by Maciej Stachowiak. - <rdar://problem/8020221> - - Fixed a crash seen on Windows when calling a function with too many - arguments. - - SunSpider reports no change. + Intermittent crashes beneath MarkStack::drain + https://bugs.webkit.org/show_bug.cgi?id=54614 + <rdar://problem/8971070> - No test because the ASSERT I added fires in existing tests. - - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): Make sure to grow the registerFile when too - many arguments have been provided, since the caller only allocated enough - registerFile space for the arguments it provided, not enough for the extra - copy of arguments we're going to need. - -2010-05-25 Kwang Yul Seo <skyul@company100.net> - - Reviewed by Darin Adler. + The crashes were caused by a GC happening after the global object's + property table had grown (due to compilation), but before the properties + had been fully initialized by program execution. - Build fix for JSFunction - https://bugs.webkit.org/show_bug.cgi?id=39658 - - MSVC can't compile one of JSFunction constructors when JIT is disabled. - "PassRefPtr<NativeExecutable>" causes the compile error as NativeExecutable is not defined. - Add ENABLE(JIT) guard to the constructor. - - * runtime/JSFunction.cpp: - (JSC::JSFunction::JSFunction): - * runtime/JSFunction.h: - -2010-05-24 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig. - - Bug 39643 - Clean up code generation in the JIT of stub function calls for op_call. - - Presently, as soon as op-call strays off the hot path we set up a set of values on - the stack to be passed as arguments to cti functions, in case any should be called. - - Instead, hoist the setup of the callframe to happen slightly sooner, and make the - cti functions to compile & check arity read these values from the callframe. This - allows up to remove the deprecated methods to manually set up cti arguments, rather - than using JITStubCall.h. - - * interpreter/CallFrame.h: - * jit/JIT.h: - * jit/JITCall.cpp: - (JSC::JIT::compileOpCallInitializeCallFrame): - (JSC::JIT::compileOpCallVarargs): - (JSC::JIT::compileOpCallVarargsSlowCase): - (JSC::JIT::compileOpCall): - (JSC::JIT::compileOpCallSlowCase): - * jit/JITCall32_64.cpp: - (JSC::JIT::compileOpCallInitializeCallFrame): - (JSC::JIT::compileOpCallVarargs): - (JSC::JIT::compileOpCallVarargsSlowCase): - (JSC::JIT::compileOpCall): - (JSC::JIT::compileOpCallSlowCase): - * jit/JITInlineMethods.h: - * jit/JITOpcodes.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - * jit/JITStubs.h: - (JSC::): - -2010-05-24 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig. - Relanding r60075. - - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::dump): - (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset): - * bytecode/CodeBlock.h: - * bytecode/Opcode.h: * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): - (JSC::BytecodeGenerator::emitConstruct): - * bytecompiler/BytecodeGenerator.h: - (JSC::BytecodeGenerator::emitGetByIdExceptionInfo): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): - * jit/JIT.cpp: - (JSC::JIT::privateCompileMainPass): - * jit/JIT.h: - * jit/JITCall.cpp: - (JSC::JIT::compileOpCall): - (JSC::JIT::compileOpCallSlowCase): - * jit/JITCall32_64.cpp: - (JSC::JIT::compileOpCall): - (JSC::JIT::compileOpCallSlowCase): - * jit/JITOpcodes.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - (JSC::JIT::privateCompileCTINativeCall): - (JSC::JIT::emit_op_neq_null): - (JSC::JIT::emit_op_convert_this): - (JSC::JIT::emit_op_get_callee): - (JSC::JIT::emit_op_create_this): - * jit/JITOpcodes32_64.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - (JSC::JIT::privateCompileCTINativeCall): - (JSC::JIT::emit_op_get_callee): - (JSC::JIT::emit_op_create_this): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - (JSC::JITThunks::hostFunctionStub): - * jit/JITStubs.h: - (JSC::JITThunks::ctiNativeConstruct): - (JSC::): - * runtime/ExceptionHelpers.cpp: - (JSC::createNotAnObjectError): - * runtime/Executable.h: - (JSC::NativeExecutable::create): - (JSC::NativeExecutable::NativeExecutable): - * runtime/JSFunction.cpp: - (JSC::callHostFunctionAsConstructor): - * runtime/JSFunction.h: - * wtf/Platform.h: + (JSC::BytecodeGenerator::BytecodeGenerator): Explicitly resize the global + object's register storage immediately, without waiting for program + execution to do it for us. This ensures that the global object's count + of global variables is consistent with the size of its global variable + storage at all times, and it ensures that all global variables are + properly initialized from the get-go. + + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::resizeRegisters): + * runtime/JSGlobalObject.h: Added a helper function for growing the + global object's register storage, and initializing new registers. -== Rolled over to ChangeLog-2010-05-24 == +== Rolled over to ChangeLog-2011-02-16 == |