summaryrefslogtreecommitdiffstats
path: root/JavaScriptCore/ChangeLog-2008-08-10
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:41 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:41 -0800
commit648161bb0edfc3d43db63caed5cc5213bc6cb78f (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /JavaScriptCore/ChangeLog-2008-08-10
parenta65af38181ac7d34544586bdb5cd004de93897ad (diff)
downloadexternal_webkit-648161bb0edfc3d43db63caed5cc5213bc6cb78f.zip
external_webkit-648161bb0edfc3d43db63caed5cc5213bc6cb78f.tar.gz
external_webkit-648161bb0edfc3d43db63caed5cc5213bc6cb78f.tar.bz2
auto import from //depot/cupcake/@135843
Diffstat (limited to 'JavaScriptCore/ChangeLog-2008-08-10')
-rw-r--r--JavaScriptCore/ChangeLog-2008-08-1031482
1 files changed, 0 insertions, 31482 deletions
diff --git a/JavaScriptCore/ChangeLog-2008-08-10 b/JavaScriptCore/ChangeLog-2008-08-10
deleted file mode 100644
index 0912aec..0000000
--- a/JavaScriptCore/ChangeLog-2008-08-10
+++ /dev/null
@@ -1,31482 +0,0 @@
-2008-08-10 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed (and updated) by Alp Toker.
-
- https://bugs.webkit.org/show_bug.cgi?id=16620
- [GTK] Autotools make dist and make check support
-
- Get make dist working.
-
- Note that not all possible configurations have been tested yet.
-
- * GNUmakefile.am:
-
-2008-08-09 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Sam Weinig.
-
- Added same heap debug checks to more code paths.
-
- * kjs/JSActivation.cpp:
- (KJS::JSActivation::put):
- (KJS::JSActivation::putWithAttributes):
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::putWithAttributes):
- * kjs/JSObject.h:
- (KJS::JSObject::putDirect):
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::symbolTablePut):
- (KJS::JSVariableObject::symbolTablePutWithAttributes):
-
-2008-08-09 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Fix some style issues in the sampling tool.
-
- * VM/SamplingTool.cpp:
- (KJS::sleepForMicroseconds):
- (KJS::SamplingTool::dump):
-
-2008-08-09 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Revision 35651, despite being a rather trivial change, introduced a
- large regression on the regexp-dna SunSpider test. This regression
- stemmed from an increase in the size of CodeBlock::dump(). There is
- no reason for this method (and several related methods) to be compiled
- in non-debug builds with the sampling tool disabled. This patch
- conditionally compiles them, reversing the regression on SunSpider.
-
- * JavaScriptCore.exp:
- * VM/CodeBlock.cpp:
- * VM/CodeBlock.h:
- * VM/Machine.cpp:
-
-2008-08-08 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Bug 20330: JSCore crash loading any filehurricane media page
- <https://bugs.webkit.org/show_bug.cgi?id=20330>
-
- Fix a typo in the constant loading patch. Also, add a case for
- op_unexpected_load to CodeBlock::dump().
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::addUnexpectedConstant):
-
-2008-08-08 Matt Lilek <webkit@mattlilek.com>
-
- Not reviewed, build fix.
-
- * JavaScriptCore.exp:
-
-2008-08-08 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Improve performance of arithmetic operators
-
- Added a fast (non-virtual) mechanism to determine if a non-immediate JSValue*
- is a JSNumberCell. We then use this to allow improved specialisation in many
- arithmetic operators. SunSpider reports a 2.5% progression overall, with greater
- than 10% progressions on a number of arithmetic heavy tests.
-
- * VM/Machine.cpp:
- (KJS::fastIsNumber):
- (KJS::fastToInt32):
- (KJS::fastToUInt32):
- (KJS::jsLess):
- (KJS::jsLessEq):
- (KJS::jsAdd):
- (KJS::Machine::privateExecute):
- * kjs/JSNumberCell.h:
- (KJS::JSNumberCell::fastToInt32):
- (KJS::JSNumberCell::fastToUInt32):
- * kjs/collector.cpp:
- (KJS::allocateBlock):
- (KJS::Heap::heapAllocate):
- * kjs/collector.h:
- (KJS::Heap::fastIsNumber):
-
-2008-08-06 Adam Roben <aroben@apple.com>
-
- Try to fix the Windows build bots
-
- * API/JSBase.cpp: Touch this to force JSC to rebuild and re-copy the
- WTF headers.
-
-2008-08-06 Tor Arne Vestbø <tavestbo@trolltech.com>
-
- Revert change 35595.
-
- * wtf/RetainPtr.h:
-
-2008-08-06 Ariya Hidayat <ariya.hidayat@trolltech.com>
-
- Fix non-Mac build.
-
- * wtf/RetainPtr.h: CoreFoundation only for PLATFORM(MAC)
-
-2008-08-06 Ariya Hidayat <ariya.hidayat@trolltech.com>
-
- Fix non-Mac build.
-
- * wtf/RetainPtr.h: CoreFoundation only for PLATFORM(MAC)
-
-2008-08-06 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
-
- Reviewed by Darin. Landed by Cameron.
-
- Bug 20272: typo in JavaScriptCore
- <https://bugs.webkit.org/show_bug.cgi?id=20272>
-
- Correct the documentation for op_not. (typo)
- Fix #undef. (typo)
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-08-06 Cameron Zwarich <cwzwarich@webkit.org>
-
- Reviewed by Maciej.
-
- Bug 20286: Load constants all at once instead of using op_load
- <https://bugs.webkit.org/show_bug.cgi?id=20286>
-
- Load constants all at once into temporary registers instead of using
- individual instances of op_load.
-
- This is a 2.6% speedup on SunSpider.
-
- * JavaScriptCore.exp:
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- (KJS::CodeBlock::mark):
- * VM/CodeBlock.h:
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::CodeGenerator):
- (KJS::CodeGenerator::newTemporary):
- (KJS::CodeGenerator::addConstant):
- (KJS::CodeGenerator::addUnexpectedConstant):
- (KJS::CodeGenerator::emitLoad):
- (KJS::CodeGenerator::emitUnexpectedLoad):
- (KJS::CodeGenerator::emitNewError):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::slideRegisterWindowForCall):
- (KJS::Machine::unwindCallFrame):
- (KJS::Machine::throwException):
- (KJS::Machine::execute):
- (KJS::Machine::privateExecute):
- * VM/Machine.h:
- * VM/Opcode.h:
- * VM/RegisterID.h:
- (KJS::RegisterID::RegisterID):
- (KJS::RegisterID::makeConstant):
- (KJS::RegisterID::isTemporary):
- * kjs/NodeInfo.h:
- * kjs/Parser.cpp:
- (KJS::Parser::didFinishParsing):
- * kjs/Parser.h:
- (KJS::Parser::parse):
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::NullNode::emitCode):
- (KJS::BooleanNode::emitCode):
- (KJS::NumberNode::emitCode):
- (KJS::StringNode::emitCode):
- (KJS::ArrayNode::emitCode):
- (KJS::DeleteResolveNode::emitCode):
- (KJS::DeleteValueNode::emitCode):
- (KJS::VoidNode::emitCode):
- (KJS::ConstDeclNode::emitCodeSingle):
- (KJS::ReturnNode::emitCode):
- (KJS::ScopeNode::ScopeNode):
- (KJS::ProgramNode::ProgramNode):
- (KJS::ProgramNode::create):
- (KJS::EvalNode::EvalNode):
- (KJS::EvalNode::create):
- (KJS::FunctionBodyNode::FunctionBodyNode):
- (KJS::FunctionBodyNode::create):
- (KJS::FunctionBodyNode::emitCode):
- * kjs/nodes.h:
- (KJS::ScopeNode::neededConstants):
-
-2008-08-05 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Cameron.
-
- - add fast path for immediates to % operator, as we have for many other math ops
-
- This fixes handling for a 0 divisor relative to the last patch. Only an 0.2% speedup on SunSpider but
- still a 1.4x win on Oliver's prime test.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-08-05 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Darin.
-
- Bug 20293: Crash in JavaScript codegen for eval("const a;")
- <https://bugs.webkit.org/show_bug.cgi?id=20293>
-
- Correctly handle constant declarations in eval code with no initializer.
-
- * kjs/nodes.cpp:
- (KJS::ConstDeclNode::emitCodeSingle):
-
-2008-08-05 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Roll out r35555 because of correctness issues.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-08-05 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Geoff.
-
- - add fast path for immediates to % operator, as we have for many other math ops
-
- 0.6% speedup on SunSpider. 1.4x speedup on a prime testing torture test that Oliver whipped up.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-07-31 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Bug 19359: JavaScriptCore behaves differently from FF2/3 and IE when handling context in catch statement
- <https://bugs.webkit.org/show_bug.cgi?id=19359>
-
- Make our catch behave like Firefox and IE, we do this by using a StaticScopeObject
- instead of a generic JSObject for the scope node. We still don't make use of the
- fact that we have a static scope inside the catch block, so the internal performance
- of the catch block is not improved, even though technically it would be possible to
- do so.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitPushNewScope):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::createExceptionScope):
- (KJS::Machine::privateExecute):
- * VM/Machine.h:
- * VM/Opcode.h:
- * kjs/JSStaticScopeObject.cpp:
- (KJS::JSStaticScopeObject::toThisObject):
- (KJS::JSStaticScopeObject::put):
- * kjs/JSStaticScopeObject.h:
- * kjs/nodes.cpp:
- (KJS::TryNode::emitCode):
-
-2008-08-02 Rob Gowin <robg@gowin.net>
-
- Reviewed by Eric Seidel.
-
- Added JavaScriptCore/API/WebKitAvailability to list of files in
- javascriptcore_h_api.
-
- * GNUmakefile.am:
-
-2008-08-01 Alexey Proskuryakov <ap@webkit.org>
-
- Rubber-stamped by Maciej.
-
- Remove JSGlobalData::DataInstance. It was only needed when we had per-thread JSGlobalData
- instances.
-
- * kjs/JSGlobalData.h:
-
-2008-07-31 Kevin Ollivier <kevino@theolliviers.com>
-
- Second attempt at Windows/wx build fix. Instead of avoiding inclusion of windows.h,
- use defines, etc. to avoid conflicts in each affected file. Also, change PLATFORM(WIN)
- to PLATFORM(WIN_OS) so that other ports using Windows headers get the right impls.
-
- * VM/SamplingTool.cpp:
- * wtf/Threading.h:
-
-2008-07-31 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam.
-
- Fix Windows build.
-
- * kjs/collector.h:
- * wtf/FastMalloc.cpp:
-
-2008-07-31 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
-
- Reviewed by Simon.
-
- Bug 20170: [Qt] missing namespace defines in JavaScriptCore.pro
- <https://bugs.webkit.org/show_bug.cgi?id=20170>
-
- * JavaScriptCore.pro: Added missing define.
-
-2008-07-31 Alexey Proskuryakov <ap@webkit.org>
-
- Rubber-stamped by Maciej.
-
- Eliminate JSLock (it was already disabled, removing the stub implementaion and all
- call sites now).
-
- * API/JSBase.cpp:
- (JSEvaluateScript):
- (JSCheckScriptSyntax):
- (JSGarbageCollect):
- * API/JSCallbackConstructor.cpp:
- (KJS::constructJSCallback):
- * API/JSCallbackFunction.cpp:
- (KJS::JSCallbackFunction::call):
- * API/JSCallbackObjectFunctions.h:
- (KJS::::init):
- (KJS::::getOwnPropertySlot):
- (KJS::::put):
- (KJS::::deleteProperty):
- (KJS::::construct):
- (KJS::::hasInstance):
- (KJS::::call):
- (KJS::::getPropertyNames):
- (KJS::::toNumber):
- (KJS::::toString):
- (KJS::::staticValueGetter):
- (KJS::::callbackGetter):
- * API/JSContextRef.cpp:
- (JSGlobalContextCreateInGroup):
- (JSGlobalContextRetain):
- (JSGlobalContextRelease):
- * API/JSObjectRef.cpp:
- (JSObjectMake):
- (JSObjectMakeFunctionWithCallback):
- (JSObjectMakeConstructor):
- (JSObjectMakeFunction):
- (JSObjectHasProperty):
- (JSObjectGetProperty):
- (JSObjectSetProperty):
- (JSObjectGetPropertyAtIndex):
- (JSObjectSetPropertyAtIndex):
- (JSObjectDeleteProperty):
- (JSObjectCallAsFunction):
- (JSObjectCallAsConstructor):
- (JSObjectCopyPropertyNames):
- (JSPropertyNameArrayRelease):
- (JSPropertyNameAccumulatorAddName):
- * API/JSStringRef.cpp:
- (JSStringRelease):
- * API/JSValueRef.cpp:
- (JSValueIsEqual):
- (JSValueIsInstanceOfConstructor):
- (JSValueMakeNumber):
- (JSValueMakeString):
- (JSValueToNumber):
- (JSValueToStringCopy):
- (JSValueToObject):
- (JSValueProtect):
- (JSValueUnprotect):
- * ForwardingHeaders/JavaScriptCore/JSLock.h: Removed.
- * GNUmakefile.am:
- * JavaScriptCore.exp:
- * JavaScriptCore.order:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * kjs/AllInOneFile.cpp:
- * kjs/JSGlobalData.cpp:
- (KJS::JSGlobalData::JSGlobalData):
- * kjs/JSGlobalData.h:
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::~JSGlobalObject):
- (KJS::JSGlobalObject::init):
- * kjs/JSLock.cpp: Removed.
- * kjs/JSLock.h: Removed.
- * kjs/Shell.cpp:
- (functionGC):
- (jscmain):
- * kjs/collector.cpp:
- (KJS::Heap::~Heap):
- (KJS::Heap::heapAllocate):
- (KJS::Heap::setGCProtectNeedsLocking):
- (KJS::Heap::protect):
- (KJS::Heap::unprotect):
- (KJS::Heap::collect):
- * kjs/identifier.cpp:
- * kjs/interpreter.cpp:
- (KJS::Interpreter::checkSyntax):
- (KJS::Interpreter::evaluate):
-
-2008-07-31 Alexey Proskuryakov <ap@webkit.org>
-
- Rubber-stamped by Oliver Hunt.
-
- Fix the Mac project to not display "test/" as part of file name for tests.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2008-07-31 Eric Seidel <eric@webkit.org>
-
- Reviewed by Alexey Proskuryakov.
-
- Rename USE(MULTIPLE_THREADS) to ENABLE(JSC_MULTIPLE_THREADS)
- to better match the use/enable pattern (and better describe
- the usage of the feature in question.)
-
- I also fixed a couple other ENABLE_ macros to be pre-processor
- definition override-able to match the rest of the ENABLE_ macros
- since it seems to be our convention that build systems can set
- ENABLE_ macros in Makefiles.
-
- * kjs/InitializeThreading.cpp:
- (KJS::initializeThreadingOnce):
- * kjs/JSGlobalData.cpp:
- (KJS::JSGlobalData::JSGlobalData):
- (KJS::JSGlobalData::~JSGlobalData):
- * kjs/MathObject.cpp:
- * kjs/collector.cpp:
- (KJS::Heap::Heap):
- (KJS::Heap::~Heap):
- (KJS::allocateBlock):
- (KJS::Heap::markStackObjectsConservatively):
- * kjs/collector.h:
- * kjs/dtoa.cpp:
- (KJS::pow5mult):
- (KJS::rv_alloc):
- (KJS::freedtoa):
- (KJS::dtoa):
- * wtf/FastMalloc.cpp:
- * wtf/Platform.h:
- * wtf/RefCountedLeakCounter.cpp:
-
-2008-07-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Try to clean up our usage of USE(MULTIPLE_THREADS) vs. USE(PTHREADS) a little.
- It looks like JSC assumes that if MULTIPLE_THREADS is defined, then pthreads will always be available
- I'm not sure that's always the case for gtk, certainly not for Windows. We should eventually go back
- and fix wtf/Threading.h to cover all these cases some day.
-
- * kjs/JSLock.cpp:
- * kjs/collector.h:
- * wtf/Platform.h:
-
-2008-07-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Oliver.
-
- MSVC warns when structs are called classes or vice versa.
- Make all the source refer to JSGlobalData as a class.
-
- * kjs/CommonIdentifiers.h:
- * kjs/JSGlobalData.h:
- * kjs/Parser.h:
- * kjs/lexer.h:
-
-2008-07-30 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoff Garen.
-
- Add consistency checks to UString to document and enforce its design.
-
- * kjs/ustring.cpp:
- (KJS::UString::Rep::create):
- (KJS::UString::Rep::destroy):
- (KJS::UString::Rep::checkConsistency):
- (KJS::UString::expandCapacity):
- (KJS::UString::expandPreCapacity):
- (KJS::UString::UString):
- (KJS::UString::spliceSubstringsWithSeparators):
- (KJS::UString::append):
- * kjs/ustring.h:
- (KJS::UString::Rep::checkConsistency):
-
-2008-07-30 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Geoff Garen.
-
- Fixes for Windows and non-AllInOne file build with SamplingTool, plus review fixes.
-
- * GNUmakefile.am: Adding SamplingTool.cpp to build.
- * JavaScriptCore.exp: Export hooks to init & control SamplingTool.
- * JavaScriptCore.pri: Adding SamplingTool.cpp to build.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Adding SamplingTool.cpp to build.
- * JavaScriptCore.xcodeproj/project.pbxproj: Adding SamplingTool.cpp to build.
- * JavaScriptCoreSources.bkl: Adding SamplingTool.cpp to build.
- * VM/Machine.cpp: MACHINE_SAMPLING_callingNativeFunction renamed MACHINE_SAMPLING_callingHostFunction
- * VM/Machine.h:
- * VM/Opcode.cpp: SamplingTool moved to SamplingTool.cpp/.h, opcodeNames generated from FOR_EACH_OPCODE_ID.
- * VM/Opcode.h:
- * VM/SamplingTool.cpp: Added .cpp/.h for SamplingTool.
- * VM/SamplingTool.h:
- * kjs/Shell.cpp: Switched SAMPLING_TOOL_ENABLED to ENABLE_SAMPLING_TOOL.
- * wtf/Platform.h: Added ENABLE_SAMPLING_TOOL config option.
- * kjs/nodes.cpp: Header include to fix non-AllInOne builds.
-
-2008-07-30 Ariya Hidayat <ariya.hidayat@trolltech.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Fix compilation without multi-threading support.
-
- * kjs/collector.cpp:
- (KJS::Heap::Heap):
-
-2008-07-30 Anders Carlsson <andersca@apple.com>
-
- Add WebKitAvailability.h forwarding header.
-
- * ForwardingHeaders/JavaScriptCore/WebKitAvailability.h: Added.
-
-2008-07-30 Anders Carlsson <andersca@apple.com>
-
- Fix the else.
-
- * API/WebKitAvailability.h:
-
-2008-07-30 Anders Carlsson <andersca@apple.com>
-
- * API/WebKitAvailability.h:
- Fix Windows (and other non-Mac builds).
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- Add WebKitAvailability.h to the project.
-
-2008-07-30 Anders Carlsson <andersca@apple.com>
-
- One step closer towards fixing the Windows build.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
- Make sure to copy WebKitAvailability.h
-
-2008-07-29 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Geoff Garen.
-
- Bug 20209: Atomize constant strings
- <https://bugs.webkit.org/show_bug.cgi?id=20209>
-
- Prevents significant performance degradation seen when a script contains multiple
- identical strings that are used as keys to identify properties on objects.
-
- No performance change on SunSpider.
-
- * kjs/nodes.cpp: Atomize constant strings.
-
-2008-07-30 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- <rdar://problem/6111648> JavaScript exceptions fail if the scope chain includes the global object
-
- In an attempt to remove the branch I just added to KJS::depth I
- used the existence of a Variable Object at a point in the scope
- chain as an indicator of function or global scope activation.
- However this assumption results in incorrect behaviour if the
- global object is injected into the scope chain with 'with'.
-
- * VM/Machine.cpp:
- (KJS::depth):
-
-2008-07-30 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoff Garen.
-
- Don't call JSGarbageCollect() on a released context.
-
- * API/testapi.c: (main):
-
-2008-07-29 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoff Garen.
-
- Implement JSContextGroup APIs to make concurrent execution possible for
- JavaScriptCore clients.
-
- This changes the behavior of JSGlobalContextCreate(), so that it now uses a private context
- group for each context, making JSlock implicit locking unnecessary.
-
- * API/JSContextRef.h:
- * API/JSContextRef.cpp:
- (JSContextGroupCreate):
- (JSContextGroupRetain):
- (JSContextGroupRelease):
- (JSGlobalContextCreate):
- (JSGlobalContextCreateInGroup):
- (JSGlobalContextRelease):
- (JSContextGetGroup):
- Added new methods. JSGlobalContextCreate() calls JSGlobalContextCreateInGroup() now.
-
- * API/APICast.h: (toJS): (toRef): Added converters for JSContextGroupRef.
- * API/JSBase.cpp: (JSGarbageCollect): JSGarbageCollect(0) is now a no-op, and the passed in
- context is actually used.
-
- * API/JSBase.h: Aded a typedef for JSContextGroupRef. Updated documentation for
- JSGarbageCollect().
-
- * JavaScriptCore.exp: Removed JSGlobalData::sharedInstance().
-
- * kjs/JSGlobalData.cpp:
- * kjs/JSGlobalData.h:
- Removed support for JSGlobalData shared instance. JSGlobalData::isSharedInstance member
- variable still remains, to be deleted in a followup patch.
-
- * kjs/JSLock.cpp: (KJS::JSLock::JSLock): Disabled JSLock, to be deleted in a follow-up patch.
-
- * kjs/collector.cpp:
- (KJS::Heap::markOtherThreadConservatively): Removed an assertion that referenced
- JSGlobalData::sharedInstance.
-
- * kjs/collector.h: Made Heap destructor public, so that JSContextRelease can use it.
-
-2008-07-29 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoff Garen.
-
- Fix a leak of ThreadRegistrar objects.
-
- As the heap is usually deleted when registered threads still exist, ThreadSpecific doesn't
- have a chance to clean up per-thread object. Switched to native pthread calls, storing a
- plain pointer that doesn't require cleanup.
-
- * kjs/collector.cpp:
- (KJS::PlatformThread::PlatformThread):
- (KJS::Heap::Thread::Thread):
- (KJS::Heap::Heap):
- (KJS::Heap::~Heap):
- (KJS::Heap::registerThread):
- (KJS::Heap::unregisterThread):
- * kjs/collector.h:
-
-2008-07-29 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Sam Weinig.
-
- https://bugs.webkit.org/show_bug.cgi?id=20169
- Memory allocated with fastMalloc is freed with delete
-
- * VM/JSPropertyNameIterator.cpp:
- (KJS::JSPropertyNameIterator::invalidate): Free the array properly.
- (KJS::JSPropertyNameIterator::~JSPropertyNameIterator): Delete the array by calling
- invalidate().
-
-2008-07-29 Mark Rowe <mrowe@apple.com>
-
- Attempt to fix the Qt build.
-
- * wtf/ThreadingQt.cpp: Add the extra argument to createThread.
-
-2008-07-29 Adam Roben <aroben@apple.com>
-
- Change Vector::find to return an index instead of an iterator
-
- Indices are more natural than iterators when working with Vector.
-
- Reviewed by John Sullivan.
-
- * wtf/Vector.h:
- (WTF::Vector::find): Changed to iterate the Vector manually and return
- the index of the found item, rather than an iterator. When the item
- could not be found, we return WTF::notFound.
-
-2008-07-29 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * wtf/ThreadingWin.cpp:
- (WTF::setThreadName): Move a misplaced assertion to here...
- (WTF::createThread): ...from here.
-
-2008-07-29 Adam Roben <aroben@apple.com>
-
- Add support for setting thread names on Windows
-
- These thread names make it much easier to identify particular threads
- in Visual Studio's Threads panel.
-
- WTF::createThread now takes a const char* representing the thread's
- name. On Windows, we throw a special exception to set this string as
- the thread's name. Other platforms do nothing with this name for now.
-
- Reviewed by Anders Carlsson.
-
- * JavaScriptCore.exp: Export the new version of createThread that
- takes 3 arguments (the old one continues to be exported for backward
- compatibility).
- * wtf/Threading.h: Add a threadName argument to createThread.
-
- * wtf/ThreadingGtk.cpp:
- (WTF::createThread):
- * wtf/ThreadingNone.cpp:
- (WTF::createThread):
- Updated for function signature change.
-
- * wtf/ThreadingPthreads.cpp:
- (WTF::createThread): Updated for function signature change. We keep
- around the old 2-argument version of createThread for backward
- compatibility.
-
- * wtf/ThreadingWin.cpp:
- (WTF::setThreadName): Added. This function's implementation came from
- MSDN.
- (WTF::initializeThreading): Set the name of the main thread.
- (WTF::createThread): Call setThreadName. We keep around the old
- 2-argument version of createThread for backward compatibility.
-
-2008-07-29 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Store UString::Rep::isStatic bit in identifierTable pointer instead of reportedCost for
- slightly nicer code and a 0.5% SunSpider improvement.
-
- * API/JSClassRef.cpp:
- (OpaqueJSClass::~OpaqueJSClass):
- (OpaqueJSClassContextData::OpaqueJSClassContextData):
- * API/JSStringRef.cpp:
- (JSStringRelease):
- * kjs/PropertyNameArray.cpp:
- (KJS::PropertyNameArray::add):
- * kjs/identifier.cpp:
- (KJS::IdentifierTable::~IdentifierTable):
- (KJS::IdentifierTable::add):
- (KJS::Identifier::addSlowCase):
- (KJS::Identifier::remove):
- * kjs/identifier.h:
- (KJS::Identifier::add):
- * kjs/ustring.cpp:
- (KJS::):
- (KJS::UString::Rep::create):
- (KJS::UString::Rep::destroy):
- * kjs/ustring.h:
- (KJS::UString::Rep::identifierTable):
- (KJS::UString::Rep::setIdentifierTable):
- (KJS::UString::Rep::isStatic):
- (KJS::UString::Rep::setStatic):
- (KJS::UString::cost):
-
-2008-07-28 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Renamed "ConstructTypeNative" => "ConstructTypeHost".
-
-2008-07-26 Mark Rowe <mrowe@apple.com>
-
- Speculative fix for the wx build.
-
- * JavaScriptCoreSources.bkl: Add JSStaticScopeObject.cpp to the list of source files.
-
-2008-07-25 Oliver Hunt <oliver@apple.com>
-
- RS=Cameron Zwarich.
-
- Whoops, forgot to save style correction.
-
- * kjs/JSStaticScopeObject.h:
-
-2008-07-25 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Bug 19718: Named anonymous functions are slow accessing global variables
- <https://bugs.webkit.org/show_bug.cgi?id=19718>
-
- To fix this we switch over to an activation-like scope object for
- on which we attach the function name property, and add logic to
- prevent cross scope assignment to read only properties.
-
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::findScopedProperty):
- (KJS::CodeGenerator::emitResolve):
- * VM/CodeGenerator.h:
- * kjs/AllInOneFile.cpp:
- * kjs/JSStaticScopeObject.cpp: Added.
- (KJS::JSStaticScopeObject::putWithAttributes):
- (KJS::JSStaticScopeObject::isDynamicScope):
- (KJS::JSStaticScopeObject::~JSStaticScopeObject):
- (KJS::JSStaticScopeObject::getOwnPropertySlot):
- * kjs/JSStaticScopeObject.h: Added.
- (KJS::JSStaticScopeObject::JSStaticScopeObjectData::JSStaticScopeObjectData):
- (KJS::JSStaticScopeObject::JSStaticScopeObject):
- * kjs/nodes.cpp:
- (KJS::FunctionCallResolveNode::emitCode):
- (KJS::PostfixResolveNode::emitCode):
- (KJS::PrefixResolveNode::emitCode):
- (KJS::ReadModifyResolveNode::emitCode):
- (KJS::AssignResolveNode::emitCode):
- (KJS::FuncExprNode::makeFunction):
-
-2008-07-25 kevino <kevino@theolliviers.com>
-
- wx build fix for Win.
-
- On wx/Win, including windows.h in Threading.h causes multiply-defined symbol errors
- for libjpeg and wx, and also wx needs to include windows.h itself first for wx
- includes to work right. So until we can find a better solution to this problem,
- on wx, we work around the need to include windows.h here.
-
- * wtf/Threading.h:
-
-2008-07-25 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add API/ to the
- include path.
-
-2008-07-25 Simon Hausmann <hausmann@webkit.org>
-
- Fix the build of jsc on Qt/Windows, make sure os-win32 is in the
- include search path (added by WebKit.pri).
-
- * kjs/jsc.pro:
-
-2008-07-25 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- Move JavaScriptCore API tests into a subdirectory of their own to avoid header name
- conflicts and developer confusion.
-
- * API/JSNode.c: Removed.
- * API/JSNode.h: Removed.
- * API/JSNodeList.c: Removed.
- * API/JSNodeList.h: Removed.
- * API/Node.c: Removed.
- * API/Node.h: Removed.
- * API/NodeList.c: Removed.
- * API/NodeList.h: Removed.
- * API/minidom.c: Removed.
- * API/minidom.html: Removed.
- * API/minidom.js: Removed.
- * API/testapi.c: Removed.
- * API/testapi.js: Removed.
- * API/tests: Added.
- * API/tests/JSNode.c: Copied from JavaScriptCore/API/JSNode.c.
- * API/tests/JSNode.h: Copied from JavaScriptCore/API/JSNode.h.
- * API/tests/JSNodeList.c: Copied from JavaScriptCore/API/JSNodeList.c.
- * API/tests/JSNodeList.h: Copied from JavaScriptCore/API/JSNodeList.h.
- * API/tests/Node.c: Copied from JavaScriptCore/API/Node.c.
- * API/tests/Node.h: Copied from JavaScriptCore/API/Node.h.
- * API/tests/NodeList.c: Copied from JavaScriptCore/API/NodeList.c.
- * API/tests/NodeList.h: Copied from JavaScriptCore/API/NodeList.h.
- * API/tests/minidom.c: Copied from JavaScriptCore/API/minidom.c.
- * API/tests/minidom.html: Copied from JavaScriptCore/API/minidom.html.
- * API/tests/minidom.js: Copied from JavaScriptCore/API/minidom.js.
- * API/tests/testapi.c: Copied from JavaScriptCore/API/testapi.c.
- * API/tests/testapi.js: Copied from JavaScriptCore/API/testapi.js.
- * GNUmakefile.am:
- * JavaScriptCore.vcproj/testapi/testapi.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2008-07-25 Simon Hausmann <hausmann@webkit.org>
-
- Prospective WX build fix, add JavaScriptCore/API to the include search
- path.
-
- * jscore.bkl:
-
-2008-07-25 Simon Hausmann <hausmann@webkit.org>
-
- Rubber-stamped by Lars.
-
- Fix the build on Windows. operator new for ArgList is implemented using fastMalloc()
- but operator delete was not implemented. Unfortunately MSVC decides to call/reference
- the function, so a simple implementation using fastFree() fixes the build.
-
- * kjs/ArgList.h:
- (KJS::ArgList::operator delete):
-
-2008-07-25 Simon Hausmann <hausmann@webkit.org>
-
- Discussed with and rubber-stamped by Lars.
-
- Fix the build system for the Qt port.
-
- Recent JavaScriptCore changes require the addition of JavaScriptCore/API to the
- include search path. With a build process that combines JavaScriptCore and
- WebCore in one build process/Makefile the existance of
- JavaScriptCore/API/Node.h and WebCore/dom/Node.h causes include conflicts.
-
- This commit solves this by introducing a separate build of JavaScriptCore into
- a static library.
-
- As a result of the split-up a race-condition due to broken dependencies of
- regular source files to header files of generated sources showed up very
- frequently when doing parallel builds (which the buildbot does). This commit at
- the same time tries to address the dependency problem by making the
- addExtraCompiler() function also generate a pseudo extra compiler that
- represents the header file output, so that qmake is aware of the creation of
- the header file for dependency calculation.
-
- At the same time I removed a lot of cruft from the pro files to ease maintenance.
-
- * JavaScriptCore.pri:
- * JavaScriptCore.pro: Added.
- * kjs/jsc.pro:
-
-2008-07-24 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fixed a strict aliasing violation, which caused hash tables with floating
- point keys not to find items that were indeed in the tables
- (intermittently, and only in release builds, of course).
-
- SunSpider reports no change.
-
- This bug doesn't seem to affect any existing code, but it causes obvious
- crashes in some new code I'm working on.
-
- * wtf/HashFunctions.h:
- (WTF::FloatHash::hash): Use a union when punning between a float / double
- and an unsigned (bucket of bits). With strict aliasing enabled, unions
- are the only safe way to do this kind of type punning.
-
- * wtf/HashTable.h: When rehashing, ASSERT that the item we just added to
- the table is indeed in the table. In the buggy case described above, this
- ASSERT fires.
-
-2008-07-24 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Bug 20142: REGRESSION(r35245): /=/ weirdness
- <https://bugs.webkit.org/show_bug.cgi?id=20142>
-
- When adding all the meta data needed for exception error messages
- I accidentally clobbered the handling of regex beginning with /=.
-
- * kjs/grammar.y:
-
-2008-07-23 Alp Toker <alp@nuanti.com>
-
- Build fix after r35293: Add API/ to the include path.
-
- * GNUmakefile.am:
-
-2008-07-23 Adam Roben <aroben@apple.com>
-
- Windows build fixes
-
- Build fix after r35293:
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add API/
- to the include path.
-
- Build fix after r35305:
-
- * VM/Machine.cpp:
- * VM/Machine.h:
- * VM/Opcode.cpp:
- * VM/Opcode.h:
- Completely compile out all sampler-related code when
- SAMPLING_TOOL_ENABLED is 0. The sampler code can't be compiled 1) on
- non-AllInOne configurations due to circular header dependencies, and
- 2) on platforms that don't have a usleep() function, such as Windows.
-
-2008-07-23 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff Garen and Sam Weinig.
-
- Improve switch performance.
-
- Improve switch performance by converting to a hashmap based jump
- table to avoid the sequence of dispatches that would otherwise be
- needed. This results in a 9-19x performance win for string switches
- based on ad hoc testing, and a 6x improvement for integer switch
- statements. SunSpider reports a 1.2% progression.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- (KJS::SimpleJumpTable::offsetForValue):
- * VM/CodeBlock.h:
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::beginSwitch):
- (KJS::prepareJumpTableForImmediateSwitch):
- (KJS::prepareJumpTableForCharacterSwitch):
- (KJS::prepareJumpTableForStringSwitch):
- (KJS::CodeGenerator::endSwitch):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::offsetForStringSwitch):
- (KJS::Machine::privateExecute):
- * VM/Opcode.cpp:
- (KJS::):
- * VM/Opcode.h:
- * kjs/JSImmediate.h:
- * kjs/nodes.cpp:
- (KJS::):
- (KJS::processClauseList):
- (KJS::CaseBlockNode::tryOptimisedSwitch):
- (KJS::CaseBlockNode::emitCodeForBlock):
- * kjs/nodes.h:
- (KJS::SwitchInfo::):
-
-2008-07-23 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Geoff Garen.
-
- Sampling tool to analyze cost of instruction execution and identify hot regions of JS code.
- Enable Switches by setting SAMPLING_TOOL_ENABLED in Opcode.h.
-
- * JavaScriptCore.exp: Export symbols for Shell.cpp.
- * VM/Machine.cpp: Added sampling hooks.
- * VM/Machine.h: Machine contains a pointer to a sampler, when sampling.
- * VM/Opcode.cpp: Tool implementation.
- * VM/Opcode.h: Tool declaration.
- * kjs/Shell.cpp: Initialize the sampler, if enabled.
- * kjs/nodes.cpp: Added sampling hooks.
-
-2008-07-23 Gabor Loki <loki@inf.u-szeged.hu>
-
- Bug 20097: [Qt] 20% Sunspider slow-down
-
- <https://bugs.webkit.org/show_bug.cgi?id=20097>
-
- Reviewed by Simon Hausmann.
-
- * kjs/jsc.pro: Added missing NDEBUG define for release builds.
-
-2008-07-23 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoff Garen.
-
- JSClassRef is created context-free, but gets infatuated with the first context it sees.
-
- The implicit API contract is that JSClassRef can be used with any context on any thread.
- This no longer worked, because UStrings in the class were turned into per-context
- identifiers, and the cached JSObject prototype was tied to JSGlobalData, too.
-
- * API/JSClassRef.h: Made a separate struct for context-dependent parts of OpaqueJSClass.
- * API/JSClassRef.cpp:
- (OpaqueJSClass::OpaqueJSClass): Updated for renames and changed member variable order.
- (OpaqueJSClass::~OpaqueJSClass): Assert that string members are not identifiers.
- (clearReferenceToPrototype): Update for the new reference location.
- (OpaqueJSClassContextData::OpaqueJSClassContextData): Make a deep copy of all strings.
- (OpaqueJSClass::contextData): Added a function that finds the per-context part of
- OpaqueJSClass in JSGlobalData, or creates it if not found.
- (OpaqueJSClass::className): Always make a deep copy. Callers of this function do not have
- a way to access JSGlobalData, so a per-context copy could not be made.
- (OpaqueJSClass::staticValues): Updated for new data location.
- (OpaqueJSClass::staticFunctions): Ditto.
- (OpaqueJSClass::prototype): Changed to take an internal type for consistency.
-
- * kjs/JSGlobalData.cpp:
- (KJS::JSGlobalData::JSGlobalData):
- (KJS::JSGlobalData::~JSGlobalData):
- * kjs/JSGlobalData.h:
- Keep a HashMap to access per-context JSClass data given a pointr to the shared part.
-
- * API/JSCallbackObjectFunctions.h:
- (KJS::::className):
- (KJS::::getOwnPropertySlot):
- (KJS::::put):
- (KJS::::deleteProperty):
- (KJS::::getPropertyNames):
- (KJS::::staticValueGetter):
- (KJS::::staticFunctionGetter):j
- Use function accessors instead of accessing OpaqueJSClass members directly.
-
- * API/JSContextRef.cpp: (JSGlobalContextCreate): Updated for the change in
- OpaqueJSClass::prototype() argument type.
-
- * API/JSObjectRef.cpp:
- (JSObjectMake): Updated for the change in OpaqueJSClass::prototype() argument type.
- (JSObjectMakeConstructor): Ditto.
-
-2008-07-23 Alexey Proskuryakov <ap@webkit.org>
-
- Build fix.
-
- * kjs/ArgList.h: (KJS::ArgList::operator new): removed an extraneous "ArgList::" inside the
- class definition.
-
-2008-07-22 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt and Sam Weinig.
-
- Next step toward putting doubles in registers: Prepare the Register class
- and its clients for registers that don't contain JSValue*s.
-
- This means a few things:
-
- 1. Register::jsValue() clients, including ArgList clients, must now supply
- an ExecState* when accessing an entry in an ArgList, in case the entry
- will need to create a JSValue* on the fly.
-
- 2. Register clients that definitely don't want to create a JSValue* on
- the fly now use different APIs: getJSValue() for clients that know
- the register contains a JSValue*, and v() for clients who just want a
- void*.
-
- 3. I had to change some headers around in order to resolve dependency
- problems created by using a Register in the ArgList header.
-
- SunSpider reports no change.
-
-2008-07-22 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Prevent integer overflow when reallocating storage vector for arrays.
-
- Sunspider reports 1.005x as fast (no change expected).
-
- * kjs/JSArray.cpp:
-
-2008-07-21 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- <rdar://problem/6091287> Revamp the handling of CFBundleShortVersionString to be fixed at the major component of the version number.
-
- * Configurations/Version.xcconfig:
- * Info.plist:
-
-2008-07-21 Adam Roben <aroben@apple.com>
-
- Add Vector::find
-
- This is a convenience wrapper around std::find.
-
- Reviewed by Anders Carlsson.
-
- * wtf/Vector.h:
-
-2008-07-19 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Bug 20104: Exception in tables/mozilla_expected_failures/bugs/bug92868_1.html includes the equals operator in the quoted expression
- <https://bugs.webkit.org/show_bug.cgi?id=20104>
-
- To make this correct we make the dot and bracket assign nodes emit the information to indicate
- the failure range is the dot/bracket accessor.
-
- * kjs/grammar.y:
-
-2008-07-18 Steve Falkenburg <sfalken@apple.com>
-
- Windows build fix.
-
- * kjs/JSGlobalObjectFunctions.cpp:
- (KJS::isStrWhiteSpace):
-
-2008-07-18 Steve Falkenburg <sfalken@apple.com>
-
- Windows build fix.
-
- * kjs/nodes.h:
- (KJS::ThrowableExpressionData::ThrowableExpressionData):
-
-2008-07-18 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Bug 18774: SQUIRRELFISH: print meaningful error messages <https://bugs.webkit.org/show_bug.cgi?id=18774>
- <rdar://problem/5769353> SQUIRRELFISH: JavaScript error messages are missing informative text
-
- Add support for decent error messages in JavaScript. This patch achieves this by providing
- ensuring the common errors and exceptions have messages that provide the text of expression
- that trigger the exception. In addition it attaches a number of properties to the exception
- object detailing where in the source the expression came from.
-
- * JavaScriptCore.exp:
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::lineNumberForVPC):
- (KJS::CodeBlock::expressionRangeForVPC):
- Function to recover the expression range for an instruction
- that triggered an exception.
- * VM/CodeBlock.h:
- (KJS::ExpressionRangeInfo::):
- (KJS::CodeBlock::CodeBlock):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitCall):
- (KJS::CodeGenerator::emitCallEval):
- Emit call needed to be modified so to place the expression range info internally,
- as the CodeGenerator emits the arguments nodes itself, rather than the various call
- nodes.
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::emitExpressionInfo):
- Record the expression range info.
- * VM/ExceptionHelpers.cpp:
- (KJS::createErrorMessage):
- (KJS::createInvalidParamError):
- (KJS::createUndefinedVariableError):
- (KJS::createNotAConstructorError):
- (KJS::createNotAFunctionError):
- (KJS::createNotAnObjectErrorStub):
- (KJS::createNotAnObjectError):
- Rewrite all the code for the error messages so that they make use of the newly available
- information.
- * VM/ExceptionHelpers.h:
- * VM/Machine.cpp:
- (KJS::isNotObject): Now needs vPC and codeBlock
- (KJS::Machine::throwException):
- New logic to handle the NotAnObjectErrorStub and to handle the absurd "no default value" edge case
- (KJS::Machine::privateExecute):
- * VM/Machine.h:
- * kjs/DebuggerCallFrame.cpp:
- (KJS::DebuggerCallFrame::evaluate):
- * kjs/Error.cpp:
- (KJS::Error::create):
- * kjs/Error.h:
- * kjs/JSGlobalObjectFunctions.cpp:
- * kjs/JSImmediate.cpp:
- (KJS::JSImmediate::toObject):
- (KJS::JSImmediate::prototype):
- My changes to the JSNotAnObject constructor needed to be handled here.
- * kjs/JSNotAnObject.h:
- (KJS::JSNotAnObjectErrorStub::JSNotAnObjectErrorStub):
- (KJS::JSNotAnObjectErrorStub::isNull):
- (KJS::JSNotAnObjectErrorStub::isNotAnObjectErrorStub):
- Added a JSNotAnObjectErrorStub class to ease the handling of toObject failure exceptions,
- and potentially allow even more detailed error messages in future.
- * kjs/JSObject.h:
- * kjs/Parser.h:
- (KJS::Parser::parse):
- * kjs/SourceRange.h:
- * kjs/grammar.y:
- Large amounts of position propagation.
- * kjs/lexer.cpp:
- (KJS::Lexer::Lexer):
- (KJS::Lexer::shift):
- (KJS::Lexer::lex):
- The lexer needed a few changes to be able to correctly track token character positions.
- * kjs/lexer.h:
- * kjs/nodes.cpp:
- (KJS::ThrowableExpressionData::emitThrowError):
- (KJS::StatementNode::StatementNode):
- (KJS::ResolveNode::emitCode):
- (KJS::BracketAccessorNode::emitCode):
- (KJS::DotAccessorNode::emitCode):
- (KJS::NewExprNode::emitCode):
- (KJS::EvalFunctionCallNode::emitCode):
- (KJS::FunctionCallValueNode::emitCode):
- (KJS::FunctionCallResolveNode::emitCode):
- (KJS::FunctionCallBracketNode::emitCode):
- (KJS::FunctionCallDotNode::emitCode):
- (KJS::PostfixResolveNode::emitCode):
- (KJS::PostfixBracketNode::emitCode):
- (KJS::PostfixDotNode::emitCode):
- (KJS::DeleteResolveNode::emitCode):
- (KJS::DeleteBracketNode::emitCode):
- (KJS::DeleteDotNode::emitCode):
- (KJS::PrefixResolveNode::emitCode):
- (KJS::PrefixBracketNode::emitCode):
- (KJS::PrefixDotNode::emitCode):
- (KJS::ThrowableBinaryOpNode::emitCode):
- (KJS::ReadModifyResolveNode::emitCode):
- (KJS::AssignResolveNode::emitCode):
- (KJS::AssignDotNode::emitCode):
- (KJS::ReadModifyDotNode::emitCode):
- (KJS::AssignBracketNode::emitCode):
- (KJS::ReadModifyBracketNode::emitCode):
- (KJS::ForInNode::ForInNode):
- (KJS::ForInNode::emitCode):
- (KJS::WithNode::emitCode):
- (KJS::LabelNode::emitCode):
- (KJS::ThrowNode::emitCode):
- (KJS::ProgramNode::ProgramNode):
- (KJS::ProgramNode::create):
- (KJS::EvalNode::generateCode):
- (KJS::FunctionBodyNode::create):
- (KJS::FunctionBodyNode::generateCode):
- (KJS::ProgramNode::generateCode):
- All of these methods were handling the position information.
- Constructors and create methods were modified to store the information.
- All the emitCall implementations listed needed to be updated to actually
- record the position information we have so carefully collected.
- * kjs/nodes.h:
- (KJS::ThrowableExpressionData::ThrowableExpressionData):
- (KJS::ThrowableExpressionData::setExceptionSourceRange):
- (KJS::ThrowableExpressionData::divot):
- (KJS::ThrowableExpressionData::startOffset):
- (KJS::ThrowableExpressionData::endOffset):
- (KJS::ThrowableSubExpressionData::ThrowableSubExpressionData):
- (KJS::ThrowableSubExpressionData::setSubexpressionInfo):
- (KJS::ThrowablePrefixedSubExpressionData::ThrowablePrefixedSubExpressionData):
- (KJS::ThrowablePrefixedSubExpressionData::setSubexpressionInfo):
- ThrowableExpressionData is just a uniform mechanism for storing the position
- information.
- (KJS::ResolveNode::):
- (KJS::PrePostResolveNode::):
- (KJS::ThrowableBinaryOpNode::):
- (KJS::WithNode::):
-
-2008-07-18 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Three renames:
-
- "CallTypeNative" => "CallTypeHost"
- "code" => "byteCode"
- "generatedCode" => "generatedByteCode"
-
-2008-07-18 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Optimized <= for immediate number cases.
-
- SunSpider reports no overall change, but a 10% speedup on access-nsieve.
-
-2008-07-18 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Sam Weinig.
-
- Fix some casts added in a previous build fix to match the style used
- throughout WebKit.
-
- * VM/Machine.cpp:
- (KJS::Machine::initializeCallFrame):
- * VM/Register.h:
- (KJS::Register::Register):
-
-2008-07-18 Landry Breuil <landry@openbsd.org>
-
- Bug 19975: [OpenBSD] Patches to enable build of WebKit
-
- <https://bugs.webkit.org/show_bug.cgi?id=19975>
-
- Reviewed by David Kilzer.
-
- Support for OpenBSD, mostly threading and libm tweaks.
-
- * kjs/collector.cpp: #include <pthread.h>
- (KJS::currentThreadStackBase): use pthread_stackseg_np() to get stack base
- * kjs/config.h: OpenBSD also provides <pthread_np.h>
- * wtf/MathExtras.h: #include <sys/types.h> and <machine/ieee.h>
- (isfinite), (signbit): as long as we don't have those functions provide fallback implementations
- * wtf/Platform.h: Add support for PLATFORM(OPENBSD) and PLATFORM(SPARC64) macro
-
-2008-07-17 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Next step toward putting doubles in registers: Store constant pool
- entries as registers, not JSValue*s.
-
- SunSpider reports no change.
-
-2008-07-17 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by John Sullivan and Oliver Hunt.
-
- A tiny bit of tidying in function call register allocation.
-
- This patch saves one register when invoking a function expression and/or
- a new expression that is stored in a temporary.
-
- Since it's just one register, I can't make a testcase for it.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitCall): No need to ref the function we're calling
- or its base. We'd like the call frame to overlap with them, if possible.
- op_call will read the function and its base before writing the call frame,
- so this is safe.
-
- * kjs/nodes.cpp:
- (KJS::NewExprNode::emitCode): No need to ref the function we're new-ing,
- for the same reasons stated above.
-
- (KJS::FunctionCallValueNode::emitCode): ditto
-
-2008-07-17 Steve Falkenburg <sfalken@apple.com>
-
- Build fix.
-
- * kjs/InternalFunction.cpp:
-
-2008-07-17 Sam Weinig <sam@webkit.org>
-
- Roll out r35199 as it is causing failures on the PPC build.
-
-2008-07-17 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by David Kilzer.
-
- Fixed https://bugs.webkit.org/show_bug.cgi?id=20067
- Support function.name (Firefox extension)
-
- Pretty straight-forward.
-
-2008-07-17 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fixed <rdar://problem/6081636> Functions calls use more temporary
- registers than necessary
-
- Holding a reference to the last statement result register caused each
- successive statement to output its result to an even higher register.
-
- Happily, statements don't actually need to return a result register
- at all. I hope to make this clearer in a future cleanup patch,
- but this change will fix the major bug for now.
-
- * kjs/nodes.cpp:
- (KJS::statementListEmitCode):
-
-2008-07-17 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Sam Weinig.
-
- Merge pre&post dot nodes to simplify the parse tree.
- Sunspider results show 0.6% progression (no performance change expected).
-
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- * kjs/nodes.h:
- * kjs/nodes2string.cpp:
-
-2008-07-17 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Merge pre&post resolve nodes to simplify the parse tree.
- Sunspider results show no performance change.
-
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- * kjs/nodes.h:
- * kjs/nodes2string.cpp:
-
-2008-07-17 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Merge logical nodes to simplify the parse tree.
- Sunspider results show 0.6% progression (no performance change expected).
-
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- * kjs/nodes.h:
- * kjs/nodes2string.cpp:
-
-2008-07-17 Ariya Hidayat <ariya.hidayat@trolltech.com>
-
- Reviewed by Simon.
-
- Fix MinGW build (broken in r35198) and simplify getLocalTime().
-
- * kjs/DateMath.cpp:
- (KJS::getLocalTime):
-
-2008-07-17 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Sam Weinig.
-
- Merge pre&post bracket nodes to simplify the parse tree.
- Sunspider results show no performance change.
-
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- * kjs/nodes.h:
- * kjs/nodes2string.cpp:
-
-2008-07-17 Ariya Hidayat <ariya.hidayat@trolltech.com>
-
- Reviewed by Simon.
-
- Fix the 32-bit gcc builds, conversion from "long int" to Register is
- ambiguous. Explicitly choose the intptr_t constructor.
-
- * VM/Machine.cpp:
- (KJS::Machine::initializeCallFrame):
- * VM/Register.h:
- (KJS::Register::Register):
-
-2008-07-16 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Geoff Garen.
-
- Fix JavaScript in 64-bit by using a pointer-sized integer
- type in the Register union. Also includes a rename of
- the intType constant to IntType.
-
- * VM/Machine.cpp:
- (KJS::Machine::initializeCallFrame):
- * VM/Register.h:
- (KJS::Register::):
- (KJS::Register::Register):
-
-2008-07-17 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- First step toward putting doubles in registers: Turned Register into a
- proper abstraction layer. It is no longer possible to cast a Register
- to a JSValue*, or a Register& to a JSValue*&, or to access the union
- inside a Register directly.
-
- SunSpider reports no change.
-
- In support of this change, I had to make the following mechanical changes
- in a lot of places:
-
- 1. Clients now use explicit accessors to read data out of Registers, and
- implicit copy constructors to write data into registers.
-
- So, assignment that used to look like
-
- x.u.jsValue = y;
-
- now looks like
-
- x = y;
-
- And access that used to look like
-
- x = y.u.jsValue;
-
- now looks like
-
- x = y.jsValue();
-
- 2. I made generic flow control specific in opcodes that made their flow
- control generic by treating a Register& as a JSValue*&. This had the
- added benefit of removing some exception checking branches from immediate
- number code.
-
- 3. I beefed up PropertySlot to support storing a Register* in a property
- slot. For now, only JSVariableObject's symbolTableGet and symbolTablePut
- use this functionality, but I expect more clients to use it in the future.
-
- 4. I changed ArgList to be a buffer of Registers, not JSValue*'s, and I
- changed ArgList iterator clients to iterate Registers, not JSValue*'s.
-
-2008-07-16 Ada Chan <adachan@apple.com>
-
- Fixed build.
-
- * kjs/JSGlobalObject.cpp:
-
-2008-07-16 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam and Geoff.
-
- <rdar://problem/5958840> Navigating to another page while profiler is
- attached results in slow JavaScript for all time.
-
- - The UNLIKELY keeps this from being a sunspider performance regression.
-
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::~JSGlobalObject): Stop the profiler associated
- with this exec state.
-
-2008-07-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by Steve Falkenburg.
-
- Replace adopting UString constructor in favor of explicit
- static adopt method.
-
- * API/JSStringRefCF.cpp:
- (JSStringCreateWithCFString):
- * kjs/StringConstructor.cpp:
- (KJS::stringFromCharCode):
- * kjs/StringPrototype.cpp:
- (KJS::stringProtoFuncToLowerCase):
- (KJS::stringProtoFuncToUpperCase):
- (KJS::stringProtoFuncToLocaleLowerCase):
- (KJS::stringProtoFuncToLocaleUpperCase):
- * kjs/ustring.cpp:
- (KJS::UString::adopt):
- * kjs/ustring.h:
- (KJS::UString::UString):
- (KJS::UString::~UString):
-
-2008-07-16 Ariya Hidayat <ariya.hidayat@trolltech.com>
-
- Reviewed by Simon.
-
- http://trolltech.com/developer/task-tracker/index_html?method=entry&id=216179
- Fix potential crash (on Qt for Windows port) when performing JavaScript date
- conversion.
-
- * kjs/DateMath.cpp:
- (KJS::getLocalTime): For the Qt port, prefer to use Windows code, i.e.
- localtime_s() instead of localtime() since the latter might crash (on Windows)
- given a non-sensible, e.g. NaN, argument.
-
-2008-07-16 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Anders and Geoff.
-
- https://bugs.webkit.org/show_bug.cgi?id=20023
- Failed assertion in PropertyNameArray.cpp
-
- This is already tested by testapi.
-
- * API/JSObjectRef.cpp: (JSPropertyNameAccumulatorAddName): Add the string to identifier
- table to appease PropertyNameArray.
-
-2008-07-16 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoff.
-
- Dereference identifiers when deleting a hash table (fixes leaks with private JSGlobalData
- objects).
-
- * kjs/JSGlobalData.cpp: (KJS::JSGlobalData::~JSGlobalData):
- * kjs/lookup.cpp: (KJS::HashTable::deleteTable):
- * kjs/lookup.h:
- * kjs/lexer.cpp: (KJS::Lexer::~Lexer)
- HashTable cannot have a destructor, because check-for-global-initializers complains about
- having a global constructor then.
-
-2008-07-16 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoff.
-
- Check pthread_key_create return value.
-
- This check was helpful when debugging a crash in run-webkit-tests --threaded that happened
- because JSGlobalData objects were not deleted, and we were running out of pthread keys soon.
- It also looks useful for production builds.
-
- * wtf/ThreadSpecific.h: (WTF::::ThreadSpecific):
-
-2008-07-15 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Geoff.
-
- Rename pageGroupIdentifier to profileGroup to keep mention of a
- pageGroup out of JavaScriptCore.
-
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::init):
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::setProfileGroup):
- (KJS::JSGlobalObject::profileGroup):
- * profiler/ProfileGenerator.cpp:
- (KJS::ProfileGenerator::create):
- (KJS::ProfileGenerator::ProfileGenerator):
- * profiler/ProfileGenerator.h:
- (KJS::ProfileGenerator::profileGroup):
- * profiler/Profiler.cpp:
- (KJS::Profiler::startProfiling):
- (KJS::dispatchFunctionToProfiles):
- (KJS::Profiler::willExecute):
- (KJS::Profiler::didExecute):
-
-2008-07-14 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Fix https://bugs.webkit.org/show_bug.cgi?id=20037
- Bug 20037: GCC 4.2 build broken due to strict aliasing violation.
-
- * kjs/ustring.cpp:
- (KJS::UString::Rep::computeHash): Add a version of computeHash that takes a char* and explicit length.
- * kjs/ustring.h:
- * profiler/CallIdentifier.h:
- (WTF::): Use new version of computeHash that takes a char* and explicit length to avoid unsafe aliasing.
-
-2008-07-14 David Hyatt <hyatt@apple.com>
-
- Fix a crashing bug in ListHashSet's -- operator. Make sure that end() can be -- by special-casing the null
- position.
-
- Reviewed by Maciej
-
- * wtf/ListHashSet.h:
- (WTF::ListHashSetConstIterator::operator--):
-
-2008-07-14 David Hyatt <hyatt@apple.com>
-
- Buidl fix. Make sure the second insertBefore method returns a value.
-
- * wtf/ListHashSet.h:
- (WTF::::insertBefore):
-
-2008-07-14 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * JavaScriptCore.vcproj/jsc/jsc.vcproj: Added include/pthreads to the
- include path.
-
-2008-07-14 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Kevin McCullough.
-
- Make JSGlobalData refcounted in preparation to adding a way to create contexts that share
- global data.
-
- * JavaScriptCore.exp:
- * kjs/JSGlobalData.cpp:
- (KJS::JSGlobalData::create):
- * kjs/JSGlobalData.h:
- Made contructor private, and added a static create() method. Made the class inherit from
- RefCounted.
-
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::globalData):
- JSGlobalData is now owned by JSGlobalObject (except for the shared one, and the common
- WebCore one, which are never deleted).
-
- * kjs/Shell.cpp: (main): Create JSGlobalData with create() method.
-
-2008-07-14 Simon Hausmann <hausmann@webkit.org>
-
- Fix the single-threaded build.
-
- * kjs/JSLock.cpp: Removed undeclared registerThread() function.
- * kjs/collector.cpp:
- (KJS::Heap::registerThread): Added dummy implementation.
-
-2008-07-14 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoff Garen.
-
- Eliminate per-thread JavaScript global data instance support and make arbitrary
- global data/global object combinations possible.
-
- * kjs/collector.cpp:
- (KJS::Heap::Heap): Store a JSGlobalData pointer instead of multiple pointers to its members.
- This allows for going from any JS object to its associated global data, currently used in
- JSGlobalObject constructor to initialize its JSGlobalData pointer.
- (KJS::Heap::registerThread): Changed thread registration data to be per-heap. Previously,
- only the shared heap could be used from multiple threads, so it was the only one that needed
- thread registration, but now this can happen to any heap.
- (KJS::Heap::unregisterThread): Ditto.
- (KJS::Heap::markStackObjectsConservatively): Adapt for the above changes.
- (KJS::Heap::setGCProtectNeedsLocking): Ditto.
- (KJS::Heap::protect): Ditto.
- (KJS::Heap::unprotect): Ditto.
- (KJS::Heap::collect): Ditto.
- (KJS::Heap::globalObjectCount): Use global object list associated with the current heap,
- not the late per-thread one.
- (KJS::Heap::protectedGlobalObjectCount): Ditto.
-
- * kjs/collector.h:
- (KJS::Heap::ThreadRegistrar): Added a helper object that unregisters a thread when it is
- destroyed.
-
- * kjs/JSLock.cpp:
- (KJS::JSLock::JSLock):
- * kjs/JSLock.h:
- (KJS::JSLock::JSLock):
- Don't use JSLock to implicitly register threads. I've added registerThread() calls to most
- places that use JSLock - we cannot guarantee absolute safety unless we always mark all
- threads in the process, but these implicit registration calls should cover reasonable usage
- scenarios, I hope.
-
- * API/JSBase.cpp:
- (JSEvaluateScript): Explicitly register the current thread.
- (JSCheckScriptSyntax): Explicitly register the current thread.
- (JSGarbageCollect): Changed to use the passed in context. Unfortunately, this creates a race
- condition for clients that pass an already released context to JSGarbageCollect - but it is
- unlikely to create real life problems.
- To maintain compatibility, the shared heap is collected if NULL is passed.
-
- * API/JSContextRef.cpp:
- (JSGlobalContextCreate): Use a new syntax for JSGlobalObject allocation.
- (JSGlobalContextRetain): Register the thread.
- (JSContextGetGlobalObject): Register the thread.
-
- * API/JSObjectRef.cpp:
- (JSObjectMake):
- (JSObjectMakeFunctionWithCallback):
- (JSObjectMakeConstructor):
- (JSObjectMakeFunction):
- (JSObjectHasProperty):
- (JSObjectGetProperty):
- (JSObjectSetProperty):
- (JSObjectGetPropertyAtIndex):
- (JSObjectSetPropertyAtIndex):
- (JSObjectDeleteProperty):
- (JSObjectCallAsFunction):
- (JSObjectCallAsConstructor):
- (JSObjectCopyPropertyNames):
- (JSPropertyNameAccumulatorAddName):
- * API/JSValueRef.cpp:
- (JSValueIsEqual):
- (JSValueIsInstanceOfConstructor):
- (JSValueMakeNumber):
- (JSValueMakeString):
- (JSValueToNumber):
- (JSValueToStringCopy):
- (JSValueToObject):
- (JSValueProtect):
- (JSValueUnprotect):
- Register the thread.
-
- * API/JSStringRef.cpp: (JSStringRelease): Changed a comment to not mention per-thread contexts.
-
- * API/JSStringRefCF.cpp: Removed an unnecessary include of JSLock.h.
-
- * JavaScriptCore.exp: Export JSGlobalData constructor/destructor, now that anyone can have
- their own instances. Adapt to other changes, too.
-
- * JavaScriptCore.xcodeproj/project.pbxproj: Made ThreadSpecific.h private, as it is now
- included by collector.h and is thus needed in other projects.
-
- * kjs/InitializeThreading.cpp: (KJS::initializeThreadingOnce): Don't initialize per-thread
- global data, as it no longer exists.
-
- * kjs/JSGlobalData.cpp:
- (KJS::JSGlobalData::JSGlobalData):
- (KJS::JSGlobalData::~JSGlobalData):
- * kjs/JSGlobalData.h:
- Removed support for per-thread instance. Made constructor and destructor public.
-
- * kjs/JSGlobalObject.cpp: (KJS::JSGlobalObject::init): Get to now arbitrary JSGlobalData
- via the heap.
- (KJS::JSGlobalObject::operator new): Changed ot take JSGlobalDatra pointer.
- * kjs/JSGlobalObject.h:
-
- * kjs/Shell.cpp:
- (main):
- (jscmain):
- Changed to maintain a custom JSGlobalData pointer instead of a per-thread one.
-
-2008-07-13 Ada Chan <adachan@apple.com>
-
- Windows build fix: Add wtf/RefCountedLeakCounter to the project.
-
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
-
-2008-07-12 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Gtk, Qt and Wx build fix: Add wtf/RefCountedLeakCounter in the
- build scripts
-
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCoreSources.bkl:
-
-2008-07-11 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Darin Adler and Oliver Hunt.
-
- Refactor RefCounting Leak counting code into a common class.
-
- In order to export the symbols I needed to put the debug defines inside the function names
-
- Before we had a separate channel for each Logging each Leak type. Since the leak channels were only used in one location, and only at quit for simplicity I combined them all into one leak channel.
-
- * JavaScriptCore.exp:
- * JavaScriptCore.xcodeproj/project.pbxproj: add new class
- * kjs/nodes.cpp: remove old leak counting code
- * wtf/RefCountedLeakCounter.cpp: Added. create a common leak counting class
- * wtf/RefCountedLeakCounter.h: Added.
-
-2008-07-11 David Hyatt <hyatt@apple.com>
-
- Add an insertBefore method to ListHashSet to allow for insertions in the middle of the list (rather than just
- at the end).
-
- Reviewed by Anders
-
- * wtf/ListHashSet.h:
- (WTF::::insertBefore):
- (WTF::::insertNodeBefore):
-
-2008-07-11 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Darin Adler.
-
- Move call function to CallData.cpp and construct to ConstructData.cpp.
-
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * kjs/AllInOneFile.cpp:
- * kjs/CallData.cpp: Copied from kjs/JSValue.cpp.
- * kjs/ConstructData.cpp: Copied from kjs/JSValue.cpp.
- * kjs/JSValue.cpp:
-
-2008-07-10 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Define WEBKIT_VERSION_MIN_REQUIRED=WEBKIT_VERSION_LATEST when building WebKit to ensure that no symbols end up with the weak_import attribute.
-
- * Configurations/Base.xcconfig:
-
-2008-07-10 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Fix the Tiger build by omitting annotations from methods declared in categories when using old versions of GCC.
-
- * API/WebKitAvailability.h:
-
-2008-07-10 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin.
-
- -Minor cleanup. Renamed callTree() to head() and no longer use m_head
- directly but instead keep it private and access via a method().
-
- * profiler/HeavyProfile.cpp:
- (KJS::HeavyProfile::HeavyProfile):
- (KJS::HeavyProfile::generateHeavyStructure):
- (KJS::HeavyProfile::addNode):
- * profiler/Profile.h:
- (KJS::Profile::head):
- * profiler/ProfileGenerator.cpp:
- (KJS::ProfileGenerator::ProfileGenerator):
-
-2008-07-10 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Eliminate CollectorHeapIntrospector.
-
- CollectorHeapIntrospector was added primarily in the hopes to improve leaks tool output,
- a result that it didn't deliver. Also, it helped by labeling JSC heap regions as reported by
- vmmap tool, but at the same time, it made them mislabeled as malloc'd ones - the correct
- way to label mapped regions is to use a VM tag.
-
- So, it makes more sense to remove it completely than to make it work with multiple heaps.
-
- * JavaScriptCore.exp:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/AllInOneFile.cpp:
- * kjs/InitializeThreading.cpp:
- (KJS::initializeThreading):
- * kjs/collector.cpp:
- * kjs/collector.h:
- * kjs/CollectorHeapIntrospector.cpp: Removed.
- * kjs/CollectorHeapIntrospector.h: Removed.
-
-2008-07-09 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin.
-
- <rdar://problem/5951532> JSProfiler: Implement heavy (or bottom-up)
- view (19228)
- - Implemented the time and call count portionof heavy. Now all that we
- need is some UI.
-
- * profiler/CallIdentifier.h: Removed an unused constructor.
- * profiler/HeavyProfile.cpp:
- (KJS::HeavyProfile::HeavyProfile): Set the initial time of the head
- node so that percentages work correctly.
- (KJS::HeavyProfile::mergeProfiles): Sum the times and call count of
- nodes being merged.
- * profiler/ProfileNode.cpp: Set the intital values of time and call
- count when copying ProfileNodes.
- (KJS::ProfileNode::ProfileNode):
-
-2008-07-10 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Gtk build fix.
-
- * GNUmakefile.am: Add HeavyProfile.cpp
-
-2008-07-09 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Geoff Garen.
-
- Don't warn about deprecated functions in production builds.
-
- * Configurations/Base.xcconfig:
- * Configurations/DebugRelease.xcconfig:
-
-2008-07-09 Darin Adler <darin@apple.com>
-
- * JavaScriptCore.pri: Fix Qt build by adding HeavyProfile.cpp.
-
-2008-07-09 Kevin Ollivier <kevino@theolliviers.com>
-
- wx biuld fix. Add HeavyProfile.cpp to build files.
-
- * JavaScriptCoreSources.bkl:
-
-2008-07-09 Kevin McCullough <kmccullough@apple.com>
-
- - Windows build fix.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
-
-2008-07-09 Kevin McCullough <kmccullough@apple.com>
-
- - Build fix.
-
- * profiler/HeavyProfile.cpp:
- (KJS::HeavyProfile::mergeProfiles):
-
-2008-07-09 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Geoff and Adam.
-
- <rdar://problem/5951532> JSProfiler: Implement Bottom-Up view (19228)
- - This is the plumbing for bottom-up, but does not include calculating
- time, mostly because I'm still undclear about what the end result should
- look like.
- - This, obviously, does not include the UI to expose this in the
- inspector yet.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * profiler/CallIdentifier.h:
- (KJS::CallIdentifier::CallIdentifier):
- (WTF::): Added HashTraits for CallIdentifiers to be used by a HashMap.
- * profiler/HeavyProfile.cpp: Added.
- (KJS::HeavyProfile::HeavyProfile):
- (KJS::HeavyProfile::generateHeavyStructure):
- (KJS::HeavyProfile::addNode):
- (KJS::HeavyProfile::mergeProfiles):
- (KJS::HeavyProfile::addAncestorsAsChildren):
- * profiler/HeavyProfile.h: Added.
- (KJS::HeavyProfile::create):
- (KJS::HeavyProfile::heavyProfile):
- (KJS::HeavyProfile::treeProfile):
- * profiler/Profile.cpp: Removed old commented out includes.
- * profiler/Profile.h: The m_head is needed by the HeavyProfile so it
- is now protected as opposed to private.
- * profiler/ProfileNode.cpp:
- (KJS::ProfileNode::ProfileNode): Created a constructor to copy
- ProfileNodes.
- (KJS::ProfileNode::findChild): Added a null check to make HeavyProfile
- children finding easier and avoid a potential crasher.
- * profiler/ProfileNode.h: Mostly moved things around but also added some
- functionality needed by HeavyProfile.
- (KJS::ProfileNode::create):
- (KJS::ProfileNode::functionName):
- (KJS::ProfileNode::url):
- (KJS::ProfileNode::lineNumber):
- (KJS::ProfileNode::head):
- (KJS::ProfileNode::setHead):
- (KJS::ProfileNode::setNextSibling):
- (KJS::ProfileNode::actualTotalTime):
- (KJS::ProfileNode::actualSelfTime):
- * profiler/TreeProfile.cpp: Implemented the ability to get a
- HeavyProfile.
- (KJS::TreeProfile::heavyProfile):
- * profiler/TreeProfile.h:
-
-2008-07-08 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Added support for checking if an object has custom properties in its
- property map. WebCore uses this to optimize marking DOM wrappers.
-
-2008-07-08 Simon Hausmann <hausmann@webkit.org>
-
- Prospective Gtk/Wx build fixes, add ProfileGenerator.cpp to the build.
-
- * GNUmakefile.am:
- * JavaScriptCoreSources.bkl:
-
-2008-07-08 Simon Hausmann <hausmann@webkit.org>
-
- Fix the Qt build, add ProfileGenerator.cpp to the build.
-
- * JavaScriptCore.pri:
-
-2008-07-07 David Kilzer <ddkilzer@apple.com>
-
- releaseFastMallocFreeMemory() should always be defined
-
- Reviewed by Darin.
-
- * JavaScriptCore.exp: Changed to export C++ binding for
- WTF::releaseFastMallocFreeMemory() instead of C binding for
- releaseFastMallocFreeMemory().
- * wtf/FastMalloc.cpp: Moved definitions of
- releaseFastMallocFreeMemory() to be in the WTF namespace
- regardless whether FORCE_SYSTEM_MALLOC is defined.
- * wtf/FastMalloc.h: Moved releaseFastMallocFreeMemory() from
- extern "C" binding to WTF::releaseFastMallocFreeMemory().
-
-2008-07-07 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Geoff.
-
- Bug 19926: URL causes crash within a minute
- <https://bugs.webkit.org/show_bug.cgi?id=19926>
-
- Add a check that lastGlobalObject is non-null in Machine::execute()
- before copying its globals to the current register file.
-
- In theory, it is possible to make a test case for this, but it will
- take a while to get it right.
-
- * VM/Machine.cpp:
- (KJS::Machine::execute):
-
-2008-07-07 Darin Adler <darin@apple.com>
-
- Rubber stamped by Adele.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): Fix a typo in a comment.
-
-2008-07-07 Steve Falkenburg <sfalken@apple.com>
-
- Build fixes.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.vcproj/testapi/testapi.vcproj:
-
-2008-07-07 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin.
-
- When the profiler is running it gathers information and creates a
- Profile. After it finishes the Profile can be sorted and have other
- data refinements run over it. Both of these were done in the same class
- before. Now I split the gathering operations into a new class called
- ProfileGenerator.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * profiler/Profile.cpp: Removed code related to the gather stage of a
- Profile's creation.
- (KJS::Profile::create):
- (KJS::Profile::Profile):
- * profiler/Profile.h: Ditto.
- (KJS::Profile::title):
- (KJS::Profile::callTree):
- (KJS::Profile::setHead):
- * profiler/ProfileGenerator.cpp: Added. This is the class that will
- handle the stage of creating a Profile. Once the Profile is finished
- being created, this class goes away.
- (KJS::ProfileGenerator::create):
- (KJS::ProfileGenerator::ProfileGenerator):
- (KJS::ProfileGenerator::title):
- (KJS::ProfileGenerator::willExecute):
- (KJS::ProfileGenerator::didExecute):
- (KJS::ProfileGenerator::stopProfiling):
- (KJS::ProfileGenerator::didFinishAllExecution):
- (KJS::ProfileGenerator::removeProfileStart):
- (KJS::ProfileGenerator::removeProfileEnd):
- * profiler/ProfileGenerator.h: Added.
- (KJS::ProfileGenerator::profile):
- (KJS::ProfileGenerator::originatingGlobalExec):
- (KJS::ProfileGenerator::pageGroupIdentifier):
- (KJS::ProfileGenerator::client):
- (KJS::ProfileGenerator::stoppedProfiling):
- * profiler/Profiler.cpp: Now operates with the ProfileGenerator instead
- of the Profile.
- (KJS::Profiler::startProfiling):
- (KJS::Profiler::stopProfiling):
- (KJS::Profiler::didFinishAllExecution): It is here that the Profile is
- handed off to its client and the Profile Generator is no longer needed.
- (KJS::dispatchFunctionToProfiles):
- (KJS::Profiler::willExecute):
- (KJS::Profiler::didExecute):
- * profiler/Profiler.h: Cleaned up the includes and subsequently the
- forward declarations. Also use the new ProfileGenerator.
- (KJS::ProfilerClient::~ProfilerClient):
- (KJS::Profiler::currentProfiles):
- * profiler/TreeProfile.cpp: Use Profile's new interface.
- (KJS::TreeProfile::create):
- (KJS::TreeProfile::TreeProfile):
- * profiler/TreeProfile.h:
-
-2008-07-07 Sam Weinig <sam@webkit.org>
-
- Reviewed by Cameron Zwarich.
-
- Third step in broad cleanup effort.
-
- [ File list elided ]
-
-2008-07-06 Sam Weinig <sam@webkit.org>
-
- Reviewed by Cameron Zwarich.
-
- Second step in broad cleanup effort.
-
- [ File list elided ]
-
-2008-07-05 Sam Weinig <sam@webkit.org>
-
- Reviewed by Cameron Zwarich.
-
- First step in broad cleanup effort.
-
- [ File list elided ]
-
-2008-07-05 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Cameron Zwarich.
-
- Rename list.h/cpp to ArgList.h/cpp.
-
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/Machine.h:
- * kjs/AllInOneFile.cpp:
- * kjs/ArgList.cpp: Copied from JavaScriptCore/kjs/list.cpp.
- * kjs/ArgList.h: Copied from JavaScriptCore/kjs/list.h.
- * kjs/IndexToNameMap.cpp:
- * kjs/JSGlobalData.cpp:
- * kjs/JSGlobalData.h:
- * kjs/JSObject.h:
- * kjs/collector.cpp:
- * kjs/list.cpp: Removed.
- * kjs/list.h: Removed.
-
-2008-07-05 Sam Weinig <sam@webkit.org>
-
- Fix non-AllInOne builds again.
-
- * kjs/BooleanPrototype.cpp:
- * kjs/ErrorPrototype.cpp:
- * kjs/FunctionPrototype.cpp:
- * kjs/NumberPrototype.cpp:
- * kjs/ObjectPrototype.cpp:
-
-2008-07-05 Sam Weinig <sam@webkit.org>
-
- Fix build on case-sensitive build systems.
-
- * kjs/IndexToNameMap.cpp:
-
-2008-07-05 Sam Weinig <sam@webkit.org>
-
- Fix build.
-
- * kjs/Arguments.cpp:
- * kjs/BooleanPrototype.cpp:
- * kjs/DateConstructor.cpp:
- * kjs/ErrorPrototype.cpp:
- * kjs/FunctionPrototype.cpp:
- * kjs/NumberPrototype.cpp:
- * kjs/ObjectPrototype.cpp:
- * kjs/RegExpPrototype.cpp:
- * kjs/StringConstructor.cpp:
- * kjs/lookup.cpp:
-
-2008-07-05 Sam Weinig <sam@webkit.org>
-
- Fix non-AllInOne build.
-
- * kjs/JSGlobalObject.cpp:
-
-2008-07-05 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Cameron Zwarich.
-
- Split Arguments, IndexToNameMap, PrototypeFunction, GlobalEvalFunction and
- the functions on the global object out of JSFunction.h/cpp.
-
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/Machine.cpp:
- * kjs/AllInOneFile.cpp:
- * kjs/Arguments.cpp: Copied from JavaScriptCore/kjs/JSFunction.cpp.
- * kjs/Arguments.h: Copied from JavaScriptCore/kjs/JSFunction.h.
- * kjs/GlobalEvalFunction.cpp: Copied from JavaScriptCore/kjs/JSFunction.cpp.
- * kjs/GlobalEvalFunction.h: Copied from JavaScriptCore/kjs/JSFunction.h.
- * kjs/IndexToNameMap.cpp: Copied from JavaScriptCore/kjs/JSFunction.cpp.
- * kjs/IndexToNameMap.h: Copied from JavaScriptCore/kjs/JSFunction.h.
- * kjs/JSActivation.cpp:
- * kjs/JSFunction.cpp:
- * kjs/JSFunction.h:
- * kjs/JSGlobalObject.cpp:
- * kjs/JSGlobalObjectFunctions.cpp: Copied from JavaScriptCore/kjs/JSFunction.cpp.
- * kjs/JSGlobalObjectFunctions.h: Copied from JavaScriptCore/kjs/JSFunction.h.
- The functions on the global object should be in JSGlobalObject.cpp, but putting them there
- was a 0.5% regression.
-
- * kjs/PrototypeFunction.cpp: Copied from JavaScriptCore/kjs/JSFunction.cpp.
- * kjs/PrototypeFunction.h: Copied from JavaScriptCore/kjs/JSFunction.h.
- * kjs/Shell.cpp:
- * kjs/lexer.cpp:
- * kjs/ustring.cpp:
-
-2008-07-04 Sam Weinig <sam@webkit.org>
-
- Really fix the mac build.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2008-07-04 Sam Weinig <sam@webkit.org>
-
- Fix mac build.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2008-07-04 Sam Weinig <sam@webkit.org>
-
- Fix non-AllInOne builds.
-
- * kjs/Error.cpp:
- * kjs/GetterSetter.cpp:
- * kjs/JSImmediate.cpp:
- * kjs/operations.cpp:
-
-2008-07-04 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Dan Bernstein.
-
- Split Error and GetterSetter out of JSObject.h.
-
- * API/JSCallbackObjectFunctions.h:
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * kjs/AllInOneFile.cpp:
- * kjs/ClassInfo.h: Copied from JavaScriptCore/kjs/JSObject.h.
- * kjs/Error.cpp: Copied from JavaScriptCore/kjs/JSObject.cpp.
- * kjs/Error.h: Copied from JavaScriptCore/kjs/JSObject.h.
- * kjs/GetterSetter.cpp:
- * kjs/GetterSetter.h: Copied from JavaScriptCore/kjs/JSObject.h.
- * kjs/JSObject.cpp:
- * kjs/JSObject.h:
- * kjs/nodes.h:
-
-2008-07-04 Simon Hausmann <hausmann@webkit.org>
-
- Fix the Wx build, added TreeProfile.cpp to the build.
-
- * JavaScriptCoreSources.bkl:
-
-2008-07-03 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fix output path of recently-added script phase to reference the correct file.
- This prevents Xcode from running the script phase unnecessarily, which caused
- the generated header to be recreated and lead to AllInOneFile.cpp rebuilding.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2008-07-03 Mark Rowe <mrowe@apple.com>
-
- Follow-up to the 64-bit build fix. Use intptr_t rather than ssize_t as
- the latter is non-standard and does not exist on Windows.
-
- * kjs/JSLock.cpp:
- (KJS::JSLock::lockCount):
- (KJS::JSLock::lock):
- (KJS::JSLock::unlock):
- (KJS::JSLock::DropAllLocks::DropAllLocks):
- * kjs/JSLock.h:
-
-2008-07-02 Mark Rowe <mrowe@apple.com>
-
- Fix the 64-bit build. pthread_getspecific works with pointer-sized values,
- so use ssize_t rather than int to track the lock count to avoid warnings about
- truncating the result of pthread_getspecific.
-
- * kjs/JSLock.cpp:
- (KJS::JSLock::lockCount):
- (KJS::JSLock::lock):
- (KJS::JSLock::unlock):
- (KJS::JSLock::DropAllLocks::DropAllLocks):
- * kjs/JSLock.h:
-
-2008-07-03 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Removed checking for the array get/put fast case from the array code.
- Callers who want the fast case should call getIndex and/or setIndex
- instead. (get_by_val and put_by_val already do this.)
-
- SunSpider reports no change overall, but a 1.4% speedup on fannkuch and
- a 3.6% speedup on nsieve.
-
-2008-07-03 Dan Bernstein <mitz@apple.com>
-
- - Windows build fix
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added TreeProfile.{h,cpp}.
-
-2008-07-03 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Anders Carlsson.
-
- - Windows build fix
-
- * VM/Machine.cpp:
- (KJS::Machine::Machine):
-
-2008-07-03 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Alexey Proskuryakov.
-
- Fix the non-threaded build.
-
- * kjs/JSGlobalData.cpp:
- (KJS::JSGlobalData::threadInstanceInternal):
-
-2008-07-03 Simon Hausmann <hausmann@webkit.org>
-
- Fix the Qt build, added TreeProfile to the build.
-
- * JavaScriptCore.pri:
-
-2008-07-02 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoff.
-
- Don't create unnecessary JSGlobalData instances.
-
- * kjs/JSGlobalData.h:
- * kjs/JSGlobalData.cpp:
- (KJS::JSGlobalData::threadInstanceExists):
- (KJS::JSGlobalData::sharedInstanceExists):
- (KJS::JSGlobalData::threadInstance):
- (KJS::JSGlobalData::sharedInstance):
- (KJS::JSGlobalData::threadInstanceInternal):
- (KJS::JSGlobalData::sharedInstanceInternal):
- Added methods to query instance existence.
-
- * kjs/InitializeThreading.cpp:
- (KJS::initializeThreadingOnce):
- Initialize thread instance static in a new way.
-
- * API/JSBase.cpp:
- (JSGarbageCollect):
- * kjs/collector.cpp:
- (KJS::Heap::collect):
- Check for instance existence before accessing it.
-
-2008-07-02 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Fixed https://bugs.webkit.org/show_bug.cgi?id=19862
- REGRESSION (r34907): Gmail crashes in JavaScriptCore code while editing drafts
-
- I was never able to reproduce this issue, but Cameron could, and he says
- that this patch fixes it.
-
- The crash seems tied to a timer or event handler callback. In such a case,
- the sole reference to the global object may be in the current call frame,
- so we can't depend on the global object to mark the call frame area in
- the register file.
-
- The new GC marking rule is: the global object is not responsible for
- marking the whole register file -- it's just responsible for the globals
- section it's tied to. The heap is responsible for marking the call frame area.
-
-2008-07-02 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Add the ability to trace JavaScriptCore garabge collections using dtrace.
-
- * JavaScriptCore.xcodeproj/project.pbxproj: Generate the dtrace probe header
- file when building on a new enough version of Mac OS X.
- * JavaScriptCorePrefix.h: Add our standard Mac OS X version detection macros.
- * kjs/Tracing.d: Declare three dtrace probes.
- * kjs/Tracing.h: Include the generated dtrace macros if dtrace is available,
- otherwise provide versions that do nothing.
- * kjs/collector.cpp:
- (KJS::Heap::collect): Fire dtrace probes when starting a collection, after the
- mark phase has completed, and when the collection is complete.
- * wtf/Platform.h: Define HAVE_DTRACE when building on a new enough version of Mac OS X.
-
-2008-07-02 Geoffrey Garen <ggaren@apple.com>
-
- Rubber stamped by Oliver Hunt.
-
- Reduced the max register file size from 8MB to 2MB.
-
- We still allow about 20,000 levels of recursion.
-
-2008-07-02 Alp Toker <alp@nuanti.com>
-
- Build fix for r34960. Add TreeProfile.cpp to build.
-
- * GNUmakefile.am:
-
-2008-07-02 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Optimized a[n] get for cases when a is an array or a string. When a is
- an array, we optimize both get and put. When a is a string, we only
- optimize get, since you can't put to a string.
-
- SunSpider says 3.4% faster.
-
-2008-07-02 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin.
-
- -Small cleanup in preparation for implementing Bottom-up.
-
- * profiler/CallIdentifier.h: Rename debug function to make it clear of
- its output and intention to be debug only.
- (KJS::CallIdentifier::operator const char* ): Implement in terms of
- c_str.
- (KJS::CallIdentifier::c_str):
- * profiler/ProfileNode.cpp: Impelment findChild() which will be needed
- by the bottom-up implementation.
- (KJS::ProfileNode::findChild):
- * profiler/ProfileNode.h: Added comments to make the collections of
- functions more clear.
- (KJS::ProfileNode::operator==):
- (KJS::ProfileNode::c_str):
-
-2008-07-02 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Darin.
-
- Bug 19776: Number.toExponential() is incorrect for numbers between 0.1 and 1
- <https://bugs.webkit.org/show_bug.cgi?id=19776>
-
- Perform the sign check for the exponent on the actual exponent value,
- which is 1 less than the value of decimalPoint, instead of on the value
- of decimalPoint itself.
-
- * kjs/NumberPrototype.cpp:
- (KJS::exponentialPartToString):
-
-2008-07-02 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin.
-
- <rdar://problem/5951532> JSProfiler: Implement Bottom-Up view (19228)
- - Subclass TreeProfile as I prepare for a HeavyProfile to be comming
- later.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * profiler/Profile.cpp: By default we create a TreeProfile.
- (KJS::Profile::create):
- * profiler/Profile.h: Changes to the Profile class to make it amenable
- to be inherited from.
- (KJS::Profile::~Profile):
- * profiler/TreeProfile.cpp: Added.
- (KJS::TreeProfile::create):
- (KJS::TreeProfile::TreeProfile):
- (KJS::TreeProfile::heavyProfile):
- * profiler/TreeProfile.h: Added.
- (KJS::TreeProfile::treeProfile):
-
-2008-07-02 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Dan.
-
- Broke CallIdentifier out into its own file. I did this because it's
- going to grow a lot soon and I wanted this to be a separate patch.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * profiler/CallIdentifier.h: Added.
- (KJS::CallIdentifier::CallIdentifier):
- (KJS::CallIdentifier::operator==):
- (KJS::CallIdentifier::operator!=):
- (KJS::CallIdentifier::operator const char* ):
- (KJS::CallIdentifier::toString):
- * profiler/ProfileNode.h:
-
-2008-07-02 Simon Hausmann <hausmann@webkit.org>
-
- Build fix. Implemented missing functions for single-threaded build.
-
- * kjs/JSLock.cpp:
- (KJS::JSLock::JSLock):
- (KJS::JSLock::lock):
- (KJS::JSLock::unlock):
- (KJS::JSLock::DropAllLocks::DropAllLocks):
-
-2008-07-02 Alexey Proskuryakov <ap@webkit.org>
-
- Another non-AllInOne build fix.
-
- * kjs/JSGlobalObject.cpp: Include JSLock.h here, too.
-
-2008-07-02 Alexey Proskuryakov <ap@webkit.org>
-
- Non-AllInOne build fix.
-
- * kjs/interpreter.cpp: Include JSLock.h.
-
-2008-06-30 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Disable JSLock for per-thread contexts.
-
- No change on SunSpider.
-
- * kjs/JSGlobalData.h:
- * kjs/JSGlobalData.cpp:
- (KJS::JSGlobalData::JSGlobalData):
- (KJS::JSGlobalData::sharedInstance):
- Added isSharedInstance as a better way to tell whether the instance is shared (legacy).
-
- * kjs/JSLock.cpp:
- (KJS::createJSLockCount):
- (KJS::JSLock::lockCount):
- (KJS::setLockCount):
- (KJS::JSLock::JSLock):
- (KJS::JSLock::lock):
- (KJS::JSLock::unlock):
- (KJS::JSLock::currentThreadIsHoldingLock):
- (KJS::JSLock::DropAllLocks::DropAllLocks):
- (KJS::JSLock::DropAllLocks::~DropAllLocks):
- * kjs/JSLock.h:
- (KJS::JSLock::JSLock):
- (KJS::JSLock::~JSLock):
- Made JSLock and JSLock::DropAllLocks constructors take a parameter to decide whether to
- actually lock a mutex, or only to increment recursion count. We cannot turn it into no-op
- if we want to keep existing assertions working.
- Made recursion count per-thread, now that locks may not lock.
-
- * API/JSBase.cpp:
- (JSEvaluateScript): Take JSLock after casting JSContextRef to ExecState* (which doesn't need
- locking in any case), so that a decision whether to actually lock can be made.
- (JSCheckScriptSyntax): Ditto.
- (JSGarbageCollect): Only lock while collecting the shared heap, not the per-thread one.
-
- * API/JSObjectRef.cpp:
- (JSClassCreate): Don't lock, as there is no reason to.
- (JSClassRetain): Ditto.
- (JSClassRelease): Ditto.
- (JSPropertyNameArrayRetain): Ditto.
- (JSPropertyNameArrayRelease): Only lock while deleting the array, as that may touch
- identifier table.
- (JSPropertyNameAccumulatorAddName): Adding a string also involves an identifier table
- lookup, and possibly modification.
-
- * API/JSStringRef.cpp:
- (JSStringCreateWithCharacters):
- (JSStringCreateWithUTF8CString):
- (JSStringRetain):
- (JSStringRelease):
- (JSStringGetUTF8CString):
- (JSStringIsEqual):
- * API/JSStringRefCF.cpp:
- (JSStringCreateWithCFString):
- JSStringRef operations other than releasing do not need locking.
-
- * VM/Machine.cpp: Don't include unused JSLock.h.
-
- * kjs/CollectorHeapIntrospector.cpp: (KJS::CollectorHeapIntrospector::statistics):
- Don't take the lock for real, as heap introspection pauses the process anyway. It seems that
- the existing code could cause deadlocks.
-
- * kjs/Shell.cpp:
- (functionGC):
- (main):
- (jscmain):
- The test tool uses a per-thread context, so no real locking is required.
-
- * kjs/collector.h:
- (KJS::Heap::setGCProtectNeedsLocking): Optionally protect m_protectedValues access with a
- per-heap mutex. This is only needed for WebCore Database code, which violates the "no data
- migration between threads" by using ProtectedPtr on a background thread.
- (KJS::Heap::isShared): Keep a shared flag here, as well.
-
- * kjs/protect.h:
- (KJS::::ProtectedPtr):
- (KJS::::~ProtectedPtr):
- (KJS::::operator):
- (KJS::operator==):
- (KJS::operator!=):
- ProtectedPtr is ony used from WebCore, so it doesn't need to take JSLock. An assertion in
- Heap::protect/unprotect guards agains possible future unlocked uses of ProtectedPtr in JSC.
-
- * kjs/collector.cpp:
- (KJS::Heap::Heap): Initialize m_isShared.
- (KJS::Heap::~Heap): No need to lock for real during destruction, but must keep assertions
- in sweep() working.
- (KJS::destroyRegisteredThread): Registered thread list is only accessed for shared heap,
- so locking is always needed here.
- (KJS::Heap::registerThread): Ditto.
- (KJS::Heap::markStackObjectsConservatively): Use m_isShared instead of comparing to a shared
- instance for a small speedup.
- (KJS::Heap::setGCProtectNeedsLocking): Create m_protectedValuesMutex. There is currently no
- way to undo this - and ideally, Database code will be fixed to lo longer require this quirk.
- (KJS::Heap::protect): Take m_protectedValuesMutex (if it exists) while accessing
- m_protectedValues.
- (KJS::Heap::unprotect): Ditto.
- (KJS::Heap::markProtectedObjects): Ditto.
- (KJS::Heap::protectedGlobalObjectCount): Ditto.
- (KJS::Heap::protectedObjectCount): Ditto.
- (KJS::Heap::protectedObjectTypeCounts): Ditto.
-
- * kjs/ustring.cpp:
- * kjs/ustring.h:
- Don't include JSLock.h, which is no longer used here. As a result, an explicit include had
- to be added to many files in JavaScriptGlue, WebCore and WebKit.
-
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::init):
- * API/JSCallbackConstructor.cpp:
- (KJS::constructJSCallback):
- * API/JSCallbackFunction.cpp:
- (KJS::JSCallbackFunction::call):
- * API/JSCallbackObjectFunctions.h:
- (KJS::::init):
- (KJS::::getOwnPropertySlot):
- (KJS::::put):
- (KJS::::deleteProperty):
- (KJS::::construct):
- (KJS::::hasInstance):
- (KJS::::call):
- (KJS::::getPropertyNames):
- (KJS::::toNumber):
- (KJS::::toString):
- (KJS::::staticValueGetter):
- (KJS::::callbackGetter):
- * API/JSContextRef.cpp:
- (JSGlobalContextCreate):
- (JSGlobalContextRetain):
- (JSGlobalContextRelease):
- * API/JSValueRef.cpp:
- (JSValueIsEqual):
- (JSValueIsStrictEqual):
- (JSValueIsInstanceOfConstructor):
- (JSValueMakeNumber):
- (JSValueMakeString):
- (JSValueToNumber):
- (JSValueToStringCopy):
- (JSValueToObject):
- (JSValueProtect):
- (JSValueUnprotect):
- * JavaScriptCore.exp:
- * kjs/PropertyNameArray.h:
- (KJS::PropertyNameArray::globalData):
- * kjs/interpreter.cpp:
- (KJS::Interpreter::checkSyntax):
- (KJS::Interpreter::evaluate):
- Pass a parameter to JSLock/JSLock::DropAllLocks to decide whether the lock needs to be taken.
-
-2008-07-01 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- https://bugs.webkit.org/show_bug.cgi?id=19834
- Failed assertion in JavaScriptCore/VM/SegmentedVector.h:82
-
- Creating a global object with a custom prototype resets it twice (wasteful!).
- So, addStaticGlobals() was called twice, but JSGlobalObject::reset() didn't reset
- the register array.
-
- * kjs/JSGlobalObject.cpp: (KJS::JSGlobalObject::reset): Call setRegisterArray(0, 0).
-
- * kjs/JSVariableObject.h: Changed registerArray to OwnArrayPtr. Also, added private copy
- constructor and operator= to ensure that no one attempts to copy this object (for whatever
- reason, I couldn't make Noncopyable work).
-
- * kjs/JSGlobalObject.h: (KJS::JSGlobalObject::addStaticGlobals): Allocate registerArray
- with new[].
-
- * kjs/JSVariableObject.cpp:
- (KJS::JSVariableObject::copyRegisterArray): Allocate registerArray with new[].
- (KJS::JSVariableObject::setRegisterArray): Avoid hitting an assertion in OwnArrayPtr when
- "changing" the value from 0 to 0.
-
-2008-07-01 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Removed and/or reordered exception checks in array-style a[n] access.
-
- SunSpider says 1.4% faster.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): No need to check for exceptions before
- calling toString, toNumber and/or get. If the call ends up being observable
- through toString, valueOf, or a getter, we short-circuit it there, instead.
- In the op_del_by_val case, I removed the incorrect comment without actually
- removing the code, since I didn't want to tempt the GCC fates!
-
- * kjs/JSObject.cpp:
- (KJS::callDefaultValueFunction): Added exception check to prevent
- toString and valueOf functions from observing execution after an exception
- has been thrown. This removes some of the burden of exception checking
- from the machine.
-
- (KJS::JSObject::defaultValue): Removed redundant exception check here.
-
- * kjs/PropertySlot.cpp:
- (KJS::PropertySlot::functionGetter): Added exception check to prevent
- getter functions from observing execution after an exception has been
- thrown. This removes some of the burden of exception checking from the
- machine.
-
-2008-07-01 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Optimized a[n] get and put for cases where n is an immediate unsigned
- value.
-
- SunSpider says 3.5% faster.
-
-2008-07-01 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Darin.
-
- Bug 19844: JavaScript Switch statement modifies "this"
- <https://bugs.webkit.org/show_bug.cgi?id=19844>
-
- Use a temporary when generating code for switch clauses to avoid
- overwriting 'this' or a local variable.
-
- * kjs/nodes.cpp:
- (KJS::CaseBlockNode::emitCodeForBlock):
-
-2008-07-01 Christian Dywan <christian@twotoasts.de>
-
- Gtk+ build fix.
-
- * kjs/list.cpp: Include "JSCell.h"
-
-2008-07-01 Kevin McCullough <kmccullough@apple.com>
-
- Build fix.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2008-07-01 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Anders Carlsson.
-
- - Mac release build fix
-
- * JavaScriptCore.exp:
-
-2008-07-01 Sam Weinig <sam@webkit.org>
-
- Try and fix mac builds.
-
- * JavaScriptCore.exp:
-
-2008-07-01 Sam Weinig <sam@webkit.org>
-
- Fix non-AllInOne builds.
-
- * kjs/DateMath.cpp:
-
-2008-07-01 Sam Weinig <sam@webkit.org>
-
- Reviewed by Darin Adler.
-
- Split JSCell and JSNumberCell class declarations out of JSValue.h
-
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/JSPropertyNameIterator.h:
- * kjs/AllInOneFile.cpp:
- * kjs/JSCell.cpp: Copied from JavaScriptCore/kjs/JSValue.cpp.
- * kjs/JSCell.h: Copied from JavaScriptCore/kjs/JSValue.h.
- (KJS::JSValue::getJSNumber):
- * kjs/JSNumberCell.cpp:
- * kjs/JSNumberCell.h: Copied from JavaScriptCore/kjs/JSValue.h.
- * kjs/JSObject.h:
- * kjs/JSString.cpp:
- (KJS::jsString):
- (KJS::jsOwnedString):
- * kjs/JSString.h:
- (KJS::JSValue::toThisJSString):
- * kjs/JSValue.cpp:
- * kjs/JSValue.h:
-
-2008-07-01 Anders Carlsson <andersca@apple.com>
-
- Build fixes.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::addStaticGlobals):
-
-2008-07-01 Simon Hausmann <hausmann@webkit.org>
-
- Build fix, include OwnPtr.h.
-
- * kjs/RegExpConstructor.h:
-
-2008-06-30 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fixed a global object leak caused by the switch to one register file.
-
- Don't unconditionally mark the register file, since that logically
- makes all global variables GC roots, even when their global object is
- no longer reachable.
-
- Instead, make the global object associated with the register file
- responsible for marking the register file.
-
-2008-06-30 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Removed the "registerBase" abstraction. Since the register file never
- reallocates, we can keep direct pointers into it, instead of
- <registerBase, offset> tuples.
-
- SunSpider says 0.8% faster.
-
-2008-06-30 Oliver Hunt <oliver@apple.com>
-
- Reviewed by NOBODY (build fix).
-
- Fix build by adding all (hopefully) the missing includes.
-
- * kjs/BooleanPrototype.cpp:
- * kjs/DateConstructor.cpp:
- * kjs/ErrorPrototype.cpp:
- * kjs/FunctionPrototype.cpp:
- * kjs/NativeErrorConstructor.cpp:
- * kjs/NumberPrototype.cpp:
- * kjs/ObjectPrototype.cpp:
- * kjs/RegExpConstructor.cpp:
- * kjs/StringConstructor.cpp:
- * kjs/StringPrototype.cpp:
-
-2008-06-30 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Bug 19830: REGRESSION (r34883): Google Reader doesn't show up feed list on sidebar
- <https://bugs.webkit.org/show_bug.cgi?id=19830>
-
- Ensure that we do not eliminate a write to a local register when doing
- peephole optimizations.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitJumpIfTrue):
- (KJS::CodeGenerator::emitJumpIfFalse):
-
-2008-06-30 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Darin Alder.
-
- Split InternalFunction into its own header file.
-
- * API/JSCallbackFunction.h:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/ArrayConstructor.h:
- * kjs/BooleanConstructor.h:
- * kjs/DateConstructor.h:
- * kjs/ErrorConstructor.h:
- * kjs/FunctionConstructor.h:
- * kjs/FunctionPrototype.h:
- * kjs/InternalFunction.h: Copied from kjs/JSFunction.h.
- * kjs/JSFunction.h:
- * kjs/NativeErrorConstructor.h:
- * kjs/NumberConstructor.h:
- * kjs/ObjectConstructor.h:
- * kjs/RegExpConstructor.h:
- * kjs/StringConstructor.h:
- * profiler/Profiler.cpp:
-
-2008-06-30 Sam Weinig <sam@webkit.org>
-
- Reviewed by Kevin McCullough.
-
- Remove empty files Instruction.cpp, LabelID.cpp, Register.cpp and RegisterID.cpp.
-
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/Instruction.cpp: Removed.
- * VM/LabelID.cpp: Removed.
- * VM/Register.cpp: Removed.
- * VM/RegisterID.cpp: Removed.
-
-2008-06-30 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped (reluctantly) by Kevin McCullough.
-
- Rename date_object.h/cpp to DateInstance.h/cpp
-
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * kjs/AllInOneFile.cpp:
- * kjs/DateConstructor.cpp:
- * kjs/DateInstance.cpp: Copied from kjs/date_object.cpp.
- * kjs/DateInstance.h: Copied from kjs/date_object.h.
- * kjs/DatePrototype.cpp:
- * kjs/DatePrototype.h:
- * kjs/date_object.cpp: Removed.
- * kjs/date_object.h: Removed.
-
-2008-06-30 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Darin Adler.
-
- Remove internal.cpp and move its contents to there own .cpp files.
-
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * kjs/AllInOneFile.cpp:
- * kjs/GetterSetter.cpp: Copied from kjs/internal.cpp.
- * kjs/InternalFunction.cpp: Copied from kjs/internal.cpp.
- * kjs/JSNumberCell.cpp: Copied from kjs/internal.cpp.
- * kjs/JSString.cpp: Copied from kjs/internal.cpp.
- * kjs/JSString.h:
- * kjs/LabelStack.cpp: Copied from kjs/internal.cpp.
- * kjs/NumberConstructor.cpp:
- * kjs/NumberObject.cpp:
- (KJS::constructNumber):
- (KJS::constructNumberFromImmediateNumber):
- * kjs/internal.cpp: Removed.
-
-2008-06-30 Adam Roben <aroben@apple.com>
-
- Fix <rdar://5954749> Assertion failure due to HashTable's use of
- operator&
-
- HashTable was passing &value to constructDeletedValue, which in
- classes like WebCore::COMPtr would cause an assertion. We now pass
- value by reference instead of by address so that the HashTraits
- implementations have more flexibility in constructing the deleted
- value.
-
- Reviewed by Ada Chan.
-
- * VM/CodeGenerator.h: Updated for changes to HashTraits.
- * wtf/HashTable.h:
- (WTF::::deleteBucket): Changed to pass bucket by reference instead of
- by address.
- (WTF::::checkKey): Ditto.
- * wtf/HashTraits.h:
- (WTF::): Updated HashTraits for HashTable change.
-
-2008-07-01 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Cameron Zwarich.
-
- Make RegisterFile really unmap memory on destruction.
-
- This fixes run-webkit-tests --threaded, which ran out of address space in a few seconds.
-
- * VM/RegisterFile.cpp: (KJS::RegisterFile::~RegisterFile): Unmap all the memory, not just
- 1/4 of it.
-
- * kjs/JSGlobalObject.h: Don't include RegisterFile.h, so that changes to it don't make
- half of WebCore rebuild.
-
- * VM/Machine.h: Don't forward declare RegisterFile, as RegisterFile.h is included already.
-
- * VM/RegisterFile.h: (KJS::RegisterFile::RegisterFile): Assert that the allocation succeeded.
-
-2008-06-30 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Rubber-stamped by Oliver.
-
- Correct the documentation for op_put_by_index.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-06-29 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Bug 19821: Merge the instruction pair (less, jfalse)
- <https://bugs.webkit.org/show_bug.cgi?id=19821>
-
- This is a 2.4% win on SunSpider. I needed to add an ALWAYS_INLINE
- intrinisc to CodeGenerator::rewindBinaryOp() to avoid a massive
- regression in regexp-dna.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::rewindBinaryOp):
- (KJS::CodeGenerator::emitJumpIfFalse):
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.cpp:
- (KJS::):
- * VM/Opcode.h:
-
-2008-06-29 Sam Weinig <sam@webkit.org>
-
- Fix non-AllInOne builds.
-
- * kjs/JSObject.cpp:
- * kjs/JSValue.cpp:
-
-2008-06-29 Sam Weinig <sam@webkit.org>
-
- Build fix for Qt.
-
- * kjs/DateMath.cpp:
- * kjs/DatePrototype.cpp:
-
-2008-06-29 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Cameron Zwarich.
-
- Splits ErrorConstructor, ErrorPrototype, NativeErrorConstructor and
- NativeErrorPrototype out of error_object.h/cpp and renames it ErrorInstance.
-
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * kjs/AllInOneFile.cpp:
- * kjs/ArrayConstructor.cpp:
- * kjs/ArrayPrototype.cpp:
- * kjs/BooleanPrototype.cpp:
- * kjs/DatePrototype.cpp:
- * kjs/ErrorConstructor.cpp: Copied from kjs/error_object.cpp.
- * kjs/ErrorConstructor.h: Copied from kjs/error_object.h.
- * kjs/ErrorInstance.cpp: Copied from kjs/error_object.cpp.
- * kjs/ErrorInstance.h: Copied from kjs/error_object.h.
- * kjs/ErrorPrototype.cpp: Copied from kjs/error_object.cpp.
- * kjs/ErrorPrototype.h: Copied from kjs/error_object.h.
- * kjs/JSGlobalObject.cpp:
- * kjs/JSObject.cpp:
- * kjs/JSValue.cpp:
- * kjs/NativeErrorConstructor.cpp: Copied from kjs/error_object.cpp.
- * kjs/NativeErrorConstructor.h: Copied from kjs/error_object.h.
- * kjs/NativeErrorPrototype.cpp: Copied from kjs/error_object.cpp.
- * kjs/NativeErrorPrototype.h: Copied from kjs/error_object.h.
- * kjs/NumberPrototype.cpp:
- * kjs/RegExpConstructor.cpp:
- * kjs/RegExpObject.cpp:
- * kjs/RegExpPrototype.cpp:
- * kjs/StringPrototype.cpp:
- * kjs/error_object.cpp: Removed.
- * kjs/error_object.h: Removed.
- * kjs/internal.cpp:
-
-2008-06-29 Sam Weinig <sam@webkit.org>
-
- Fix non-AllInOne build.
-
- * kjs/DateConstructor.cpp:
- * kjs/DateMath.cpp:
- * kjs/JSObject.cpp:
-
-2008-06-29 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Oliver Hunt.
-
- Splits DateConstructor and DatePrototype out of date_object.h/cpp
- Moves shared Date code into DateMath.
-
- * DerivedSources.make:
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * kjs/AllInOneFile.cpp:
- * kjs/DateConstructor.cpp: Copied from kjs/date_object.cpp.
- * kjs/DateConstructor.h: Copied from kjs/date_object.h.
- * kjs/DateMath.cpp:
- (KJS::ymdhmsToSeconds):
- (KJS::):
- (KJS::skipSpacesAndComments):
- (KJS::findMonth):
- (KJS::parseDate):
- (KJS::timeClip):
- (KJS::formatDate):
- (KJS::formatDateUTCVariant):
- (KJS::formatTime):
- * kjs/DateMath.h:
- (KJS::gmtoffset):
- * kjs/DatePrototype.cpp: Copied from kjs/date_object.cpp.
- * kjs/DatePrototype.h: Copied from kjs/date_object.h.
- * kjs/JSGlobalObject.cpp:
- * kjs/JSObject.cpp:
- * kjs/date_object.cpp:
- * kjs/date_object.h:
- * kjs/internal.cpp:
-
-2008-06-29 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Rubber-stamped by Cameron Zwarich
-
- Fix Gtk non-AllInOne build
-
- * GNUmakefile.am: include JSVariableObject.cpp
- * kjs/RegExpConstructor.cpp: include RegExpObject.h
- * kjs/RegExpObject.h: forward declare RegExpPrototype
-
-2008-06-28 Darin Adler <darin@apple.com>
-
- Reviewed by Sam and Cameron.
-
- - fix https://bugs.webkit.org/show_bug.cgi?id=19805
- Array.concat turns missing array elements into "undefined"
-
- Test: fast/js/array-holes.html
-
- * JavaScriptCore.exp: No longer export JSArray::getItem.
-
- * kjs/ArrayPrototype.cpp:
- (KJS::arrayProtoFuncConcat): Changed to use getProperty instead of
- JSArray::getItem -- need to handle properties from the prototype chain
- instead of ignoring them.
-
- * kjs/JSArray.cpp: Removed getItem.
- * kjs/JSArray.h: Ditto.
-
-2008-06-28 Darin Adler <darin@apple.com>
-
- Reviewed by Cameron.
-
- - https://bugs.webkit.org/show_bug.cgi?id=19804
- optimize access to arrays without "holes"
-
- SunSpider says 1.8% faster.
-
- * kjs/JSArray.cpp:
- (KJS::JSArray::JSArray): Initialize m_fastAccessCutoff when creating
- arrays. Also updated for new location of m_vectorLength.
- (KJS::JSArray::getItem): Updated for new location of m_vectorLength.
- (KJS::JSArray::getSlowCase): Added. Broke out the non-hot parts of
- getOwnPropertySlot to make the hot part faster.
- (KJS::JSArray::getOwnPropertySlot): Added a new faster case for
- indices lower than m_fastAccessCutoff. We can do theese with no
- additional checks or branches.
- (KJS::JSArray::put): Added a new faster case for indices lower than
- m_fastAccessCutoff. We can do theese with no additional checks or
- branches. Moved the maxArrayIndex handling out of this function.
- Added code to set m_fastAccessCutoff when the very last hole in
- an array is filled; this is how the cutoff gets set for most arrays.
- (KJS::JSArray::putSlowCase): Moved the rest of the put function logic
- in here, to make the hot part of the put function faster.
- (KJS::JSArray::deleteProperty): Added code to lower m_fastAccessCutoff
- when a delete makes a new hole in the array.
- (KJS::JSArray::getPropertyNames): Updated for new location of
- m_vectorLength.
- (KJS::JSArray::increaseVectorLength): Ditto.
- (KJS::JSArray::setLength): Added code to lower m_fastAccessCutoff
- when setLength makes the array smaller.
- (KJS::JSArray::mark): Updated for new location of m_vectorLength.
- (KJS::JSArray::sort): Ditto. Set m_fastAccessCutoff after moving
- all the holes to the end of the array.
- (KJS::JSArray::compactForSorting): Ditto.
- (KJS::JSArray::checkConsistency): Added consistency checks fro
- m_fastAccessCutoff and updated for the new location of m_vectorLength.
-
- * kjs/JSArray.h: Added declarations for slow case functions.
- Replaced m_vectorLength with m_fastAccessCutoff.
-
-2008-06-28 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Sam.
-
- When executing a native call, check for an exception before writing the
- return value.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-06-28 Mark Rowe <mrowe@apple.com>
-
- Build fix. Flag headers as private or public as is appropriate.
- These settings were accidentally removed during some project file cleanup.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2008-06-28 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Darin Adler.
-
- Splits RegExpConstructor and RegExpPrototype out of RegExpObject.h/cpp
-
- * DerivedSources.make:
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/Machine.cpp:
- * kjs/AllInOneFile.cpp:
- * kjs/JSGlobalObject.cpp:
- * kjs/RegExpConstructor.cpp: Copied from kjs/RegExpObject.cpp.
- * kjs/RegExpConstructor.h: Copied from kjs/RegExpObject.h.
- * kjs/RegExpObject.cpp:
- * kjs/RegExpObject.h:
- * kjs/RegExpPrototype.cpp: Copied from kjs/RegExpObject.cpp.
- * kjs/RegExpPrototype.h: Copied from kjs/RegExpObject.h.
- * kjs/StringPrototype.cpp:
- * kjs/internal.cpp:
-
-2008-06-28 Sam Weinig <sam@webkit.org>
-
- Fix non-AllInOne builds.
-
- * kjs/StringConstructor.cpp:
-
-2008-06-28 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Darin Adler.
-
- Rename string_object.h/cpp to StringObject.h/cpp and split out StringObjectThatMasqueradesAsUndefined,
- StringConstructor and StringPrototype.
-
- * DerivedSources.make:
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * kjs/AllInOneFile.cpp:
- * kjs/JSGlobalObject.cpp:
- * kjs/StringConstructor.cpp: Copied from JavaScriptCore/kjs/string_object.cpp.
- * kjs/StringConstructor.h: Copied from JavaScriptCore/kjs/string_object.h.
- * kjs/StringObject.cpp: Copied from JavaScriptCore/kjs/string_object.cpp.
- * kjs/StringObject.h: Copied from JavaScriptCore/kjs/string_object.h.
- * kjs/StringObjectThatMasqueradesAsUndefined.h: Copied from JavaScriptCore/kjs/string_object.h.
- * kjs/StringPrototype.cpp: Copied from JavaScriptCore/kjs/string_object.cpp.
- * kjs/StringPrototype.h: Copied from JavaScriptCore/kjs/string_object.h.
- * kjs/internal.cpp:
- * kjs/string_object.cpp: Removed.
- * kjs/string_object.h: Removed.
-
-2008-06-28 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Gtk build fix: JSVariableObject is now part of AllInOne
-
- * GNUmakefile.am:
-
-2008-06-28 Darin Adler <darin@apple.com>
-
- Reviewed by Oliver.
-
- - https://bugs.webkit.org/show_bug.cgi?id=19801
- add a feature so we can tell what regular expressions are taking time
-
- * pcre/pcre_compile.cpp:
- (jsRegExpCompile): Compile in the string if REGEXP_HISTOGRAM is on.
-
- * pcre/pcre_exec.cpp:
- (jsRegExpExecute): Add hook to time execution.
- (Histogram::~Histogram): Print a sorted list of what took time.
- (Histogram::add): Accumulate records of what took time.
- (HistogramTimeLogger::~HistogramTimeLogger): Hook that calls
- Histogram::add at the right moment and creates the global histogram
- object.
-
- * pcre/pcre_internal.h: Define REGEXP_HISTOGRAM.
-
- * pcre/pcre_tables.cpp: Added missing include of "config.h". Not needed
- any more, but an omissions an earlier version of this patch detected.
- * pcre/pcre_ucp_searchfuncs.cpp: Ditto.
- * pcre/pcre_xclass.cpp: Ditto.
-
-2008-06-28 Sam Weinig <sam@webkit.org>
-
- Try and fix the Windows build again.
-
- * kjs/RegExpObject.cpp:
- * kjs/date_object.cpp:
- * kjs/error_object.cpp:
-
-2008-06-28 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Darin Adler.
-
- Remove unused StringConstructorFunction class.
-
- * kjs/string_object.h:
-
-2008-06-28 Sam Weinig <sam@webkit.org>
-
- Fix windows build.
-
- * kjs/ArrayPrototype.cpp:
- * kjs/BooleanPrototype.cpp:
- * kjs/BooleanPrototype.h:
- * kjs/FunctionPrototype.cpp:
- * kjs/JSImmediate.cpp:
- * kjs/JSObject.cpp:
- * kjs/MathObject.cpp:
- * kjs/NumberPrototype.cpp:
- * kjs/NumberPrototype.h:
- * kjs/ObjectConstructor.cpp:
- * kjs/RegExpObject.h:
- * kjs/error_object.h:
- * kjs/string_object.cpp:
-
-2008-06-28 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Oliver Hunt.
-
- Splits FunctionConstructor out of FunctionPrototype.h/cpp
- Splits NumberConstructor and NumberPrototype out of NumberObject.h/cpp
- Rename object_object.h/cpp to ObjectPrototype.h/cpp and split out ObjectConstructor.
-
- * API/JSCallbackConstructor.cpp:
- * API/JSClassRef.cpp:
- * API/JSObjectRef.cpp:
- * DerivedSources.make:
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/Machine.cpp:
- * kjs/AllInOneFile.cpp:
- * kjs/ArrayConstructor.cpp:
- * kjs/ArrayConstructor.h:
- * kjs/FunctionConstructor.cpp: Copied from JavaScriptCore/kjs/FunctionPrototype.cpp.
- * kjs/FunctionConstructor.h: Copied from JavaScriptCore/kjs/FunctionPrototype.h.
- * kjs/FunctionPrototype.cpp:
- * kjs/FunctionPrototype.h:
- * kjs/JSFunction.cpp:
- * kjs/JSGlobalObject.cpp:
- * kjs/JSImmediate.cpp:
- * kjs/MathObject.h:
- * kjs/NumberConstructor.cpp: Copied from JavaScriptCore/kjs/NumberObject.cpp.
- * kjs/NumberConstructor.h: Copied from JavaScriptCore/kjs/NumberObject.h.
- * kjs/NumberObject.cpp:
- * kjs/NumberObject.h:
- * kjs/NumberPrototype.cpp: Copied from JavaScriptCore/kjs/NumberObject.cpp.
- * kjs/NumberPrototype.h: Copied from JavaScriptCore/kjs/NumberObject.h.
- * kjs/ObjectConstructor.cpp: Copied from JavaScriptCore/kjs/object_object.cpp.
- * kjs/ObjectConstructor.h: Copied from JavaScriptCore/kjs/object_object.h.
- * kjs/ObjectPrototype.cpp: Copied from JavaScriptCore/kjs/object_object.cpp.
- * kjs/ObjectPrototype.h: Copied from JavaScriptCore/kjs/object_object.h.
- * kjs/RegExpObject.h:
- * kjs/Shell.cpp:
- * kjs/error_object.h:
- * kjs/internal.cpp:
- * kjs/nodes.cpp:
- * kjs/object_object.cpp: Removed.
- * kjs/object_object.h: Removed.
- * kjs/string_object.h:
-
-2008-06-28 Darin Adler <darin@apple.com>
-
- Reviewed by Oliver.
-
- - fix https://bugs.webkit.org/show_bug.cgi?id=19796
- optimize expressions with ignored results (especially post-increment)
-
- SunSpider says 0.9% faster.
-
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::tempDestination): Create a new temporary for
- ignoredResult() too, just as we would for 0.
- (KJS::CodeGenerator::finalDestination): Use the temporary if the
- register passed in is ignoredResult() too, just as we would for 0.
- (KJS::CodeGenerator::destinationForAssignResult): Return 0 if the
- passed in register is ignoredResult(), just as we would for 0.
- (KJS::CodeGenerator::moveToDestinationIfNeeded): Return 0 if the
- register passed in is ignoredResult(). What matters is that we
- don't want to emit a move. The return value won't be looked at.
- (KJS::CodeGenerator::emitNode): Allow ignoredResult() and pass it
- through to the node's emitCode function.
-
- * VM/RegisterID.h:
- (KJS::ignoredResult): Added. Special value to indicate the result of
- a node will be ignored and need not be put in any register.
-
- * kjs/nodes.cpp:
- (KJS::NullNode::emitCode): Do nothing if dst == ignoredResult().
- (KJS::BooleanNode::emitCode): Ditto.
- (KJS::NumberNode::emitCode): Ditto.
- (KJS::StringNode::emitCode): Ditto.
- (KJS::RegExpNode::emitCode): Ditto.
- (KJS::ThisNode::emitCode): Ditto.
- (KJS::ResolveNode::emitCode): Do nothing if dst == ignoredResult() and
- the identifier resolves to a local variable.
- (KJS::ObjectLiteralNode::emitCode): Do nothing if dst == ignoredResult()
- and the object is empty.
- (KJS::PostIncResolveNode::emitCode): If dst == ignoredResult(), then do
- nothing for the local constant case, and do a pre-increment in all the
- other cases.
- (KJS::PostDecResolveNode::emitCode): Ditto.
- (KJS::PostIncBracketNode::emitCode): Ditto.
- (KJS::PostDecBracketNode::emitCode): Ditto.
- (KJS::PostIncDotNode::emitCode): Ditto.
- (KJS::PostDecDotNode::emitCode): Ditto.
- (KJS::DeleteValueNode::emitCode): Pass ignoredResult() when evaluating
- the expression.
- (KJS::VoidNode::emitCode): Ditto.
- (KJS::TypeOfResolveNode::emitCode): If dst == ignoredResult(), do nothing
- if the identifier resolves to a local variable, and don't bother generating
- a typeof opcode in the other case.
- (KJS::TypeOfValueNode::emitCode): Ditto.
- (KJS::PreIncResolveNode::emitCode): Do nothing if dst == ignoredResult() and
- the identifier resolves to a local constant.
- (KJS::PreDecResolveNode::emitCode): Ditto.
- (KJS::AssignResolveNode::emitCode): Turn ignoredResult() into 0 in a couple
- places, because we need to put the result into a register so we can assign
- it. At other sites this is taken care of by functions like finalDestination.
- (KJS::CommaNode::emitCode): Pass ignoredResult() when evaluating the first
- expression.
- (KJS::ForNode::emitCode): Pass ignoredResult() when evaluating the first and
- third expressions.
- (KJS::ForInNode::emitCode): Pass ignoredResult() when evaluating the first
- expression.
-
-2008-06-28 Darin Adler <darin@apple.com>
-
- Reviewed by Oliver.
-
- - https://bugs.webkit.org/show_bug.cgi?id=19787
- create most arrays from values in registers rather than with multiple put operations
-
- SunSpider says 0.8% faster.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump): Added argv and argc parameters to new_array.
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): Ditto.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitNewArray): Added.
- * VM/CodeGenerator.h: Added ElementNode* argument to emitNewArray.
-
- * kjs/nodes.cpp:
- (KJS::ArrayNode::emitCode): Pass the ElementNode to emitNewArray so it can be
- initialized with as many elements as possible. If the array doesn't have any
- holes in it, that's all that's needed. If there are holes, then emit some separate
- put operations for the other values in the array and for the length as needed.
-
- * kjs/nodes.h: Added some accessors to ElementNode so the code generator can
- iterate through elements and generate code to evaluate them. Now ArrayNode does
- not need to be a friend. Also took out some unused PlacementNewAdoptType
- constructors.
-
-2008-06-28 Darin Adler <darin@apple.com>
-
- Reviewed by Oliver.
-
- * kjs/nodes.h: Remove obsolete PlacementNewAdopt constructors.
- We no longer mutate the AST in place.
-
-2008-06-28 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Build fix
-
- * VM/Machine.cpp: include stdio.h for printf
-
-2008-06-27 Sam Weinig <sam@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Fix platforms that don't use AllInOne.cpp
-
- * kjs/BooleanConstructor.h:
- * kjs/BooleanPrototype.h:
- * kjs/FunctionPrototype.cpp:
-
-2008-06-27 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Oliver Hunt.
-
- Splits ArrayConstructor out of ArrayPrototype.h/cpp
- Splits BooleanConstructor and BooleanPrototype out of BooleanObject.h/cpp
-
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/Machine.cpp:
- * kjs/AllInOneFile.cpp:
- * kjs/ArrayConstructor.cpp: Copied from kjs/ArrayPrototype.cpp.
- * kjs/ArrayConstructor.h: Copied from kjs/ArrayPrototype.h.
- * kjs/ArrayPrototype.cpp:
- * kjs/ArrayPrototype.h:
- * kjs/BooleanConstructor.cpp: Copied from kjs/BooleanObject.cpp.
- * kjs/BooleanConstructor.h: Copied from kjs/BooleanObject.h.
- * kjs/BooleanObject.cpp:
- * kjs/BooleanObject.h:
- * kjs/BooleanPrototype.cpp: Copied from kjs/BooleanObject.cpp.
- * kjs/BooleanPrototype.h: Copied from kjs/BooleanObject.h.
- * kjs/CommonIdentifiers.h:
- * kjs/FunctionPrototype.cpp:
- * kjs/JSArray.cpp:
- * kjs/JSGlobalObject.cpp:
- * kjs/JSImmediate.cpp:
- * kjs/Shell.cpp:
- * kjs/internal.cpp:
- * kjs/nodes.cpp:
- * kjs/string_object.cpp:
-
-2008-06-27 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Sam.
-
- Bug 18626: SQUIRRELFISH: support the "slow script" dialog <https://bugs.webkit.org/show_bug.cgi?id=18626>
- <rdar://problem/5973931> Slow script dialog needs to be reimplemented for squirrelfish
-
- Adds support for the slow script dialog in squirrelfish. This requires the addition
- of three new op codes, op_loop, op_loop_if_true, and op_loop_if_less which have the
- same behaviour as their simple jump equivalents but have an additional time out check.
-
- Additional assertions were added to other jump instructions to prevent accidentally
- creating loops with jump types that do not support time out checks.
-
- Sunspider does not report a regression, however this appears very sensitive to code
- layout and hardware, so i would expect up to a 1% regression on other systems.
-
- Part of this required moving the old timeout logic from JSGlobalObject and into Machine
- which is the cause of a number of the larger diff blocks.
-
- * JavaScriptCore.exp:
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitJumpIfTrue):
- (KJS::CodeGenerator::emitJumpScopes):
- * VM/ExceptionHelpers.cpp:
- (KJS::InterruptedExecutionError::isWatchdogException):
- (KJS::createInterruptedExecutionException):
- * VM/ExceptionHelpers.h:
- * VM/LabelID.h:
- * VM/Machine.cpp:
- (KJS::Machine::Machine):
- (KJS::Machine::throwException):
- (KJS::Machine::resetTimeoutCheck):
- (KJS::getCurrentTime):
- (KJS::Machine::checkTimeout):
- (KJS::Machine::privateExecute):
- * VM/Machine.h:
- (KJS::Machine::setTimeoutTime):
- (KJS::Machine::startTimeoutCheck):
- (KJS::Machine::stopTimeoutCheck):
- (KJS::Machine::initTimeout):
- * VM/Opcode.cpp:
- (KJS::):
- * VM/Opcode.h:
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::init):
- (KJS::JSGlobalObject::setTimeoutTime):
- (KJS::JSGlobalObject::startTimeoutCheck):
- * kjs/JSGlobalObject.h:
- * kjs/JSObject.h:
- * kjs/interpreter.cpp:
- (KJS::Interpreter::evaluate):
-
-2008-06-27 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Gtk and Qt build fix: Remove RegisterFileStack from the build
- scripts.
-
- * GNUmakefile.am:
- * JavaScriptCore.pri:
-
-2008-06-27 Adele Peterson <adele@apple.com>
-
- Reviewed by Geoff.
-
- Build fixes.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * VM/RegisterFile.h:
- (KJS::RegisterFile::RegisterFile):
- * kjs/JSGlobalObject.cpp:
- * kjs/collector.cpp:
-
-2008-06-27 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- One RegisterFile to rule them all!
-
- SunSpider reports a 0.2% speedup.
-
- This patch removes the RegisterFileStack abstraction and replaces it with
- a single register file that
-
- (a) allocates a fixed storage area, including a fixed area for global
- vars, so that no operation may cause the register file to reallocate
-
- and
-
- (b) swaps between global storage areas when executing code in different
- global objects.
-
- This patch also changes the layout of the register file so that all call
- frames, including call frames for global code, get a header. This is
- required to support re-entrant global code. It also just makes things simpler.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::addGlobalVar): New function. Differs from addVar in
- that
-
- (a) global vars don't contribute to a CodeBlock's numLocals count, since
- global storage is fixed and allocated at startup
-
- and
-
- (b) references to global vars get shifted to elide intermediate stack
- between "r" and the global storage area.
-
- * VM/Machine.cpp:
- (KJS::Machine::dumpRegisters): Updated this function to match the new
- register file layout, and added the ability to dump exact identifiers
- for the different parts of a call frame.
-
- (KJS::Machine::unwindCallFrame): Updated this function to match the new
- register file layout.
-
- (KJS::Machine::execute): Updated this function to initialize a call frame
- header for global code, and to swap global storage areas when switching
- to execution in a new global object.
-
- (KJS::Machine::privateExecute): Got rid of "safeForReentry" and re-reading
- of registerBase because the register file is always safe for reentry now,
- and registerBase never changes.
-
- * VM/Machine.h: Moved the call frame header enum from Machine to RegisterFile,
- to resolve a header dependency problem (a good sign that the enum belonged
- in RegisterFile all along!)
-
- * VM/RegisterFile.cpp:
- * VM/RegisterFile.h: Changed RegisterFile to mmap a fixed size register
- area. This allows us to avoid re-allocting the register file later on.
- Instead, we rely on the OS to allocate physical pages to the register
- file as necessary.
-
- * VM/RegisterFileStack.cpp: Removed. Tada!
- * VM/RegisterFileStack.h: Removed. Tada!
-
- * kjs/DebuggerCallFrame.cpp: Updated this class to match the new
- register file layout, greatly simplifying it in the process.
-
- * kjs/JSActivation.h:
- * kjs/JSActivation.cpp: Moved some of this logic up to JSVariableObject,
- since the global object now needs to be able to tear off its registers
- just like the activation object.
-
- * kjs/JSFunction.cpp: No need to fiddle with the register file anymore.
-
- * kjs/JSGlobalObject.h:
- * kjs/JSGlobalObject.cpp: Updated JSGlobalObject to support moving its
- global storage area into and out of the register file.
-
- * kjs/PropertySlot.cpp: No need to fiddle with the register file anymore.
-
- * kjs/collector.cpp: Renamed markStackObjectConservatively to
- markConservatively, since we don't just mark stack objects this way.
-
- Also, added code to mark the machine's register file.
-
- * kjs/config.h: Moved some platforms #defines from here...
- * wtf/Platform.h: ...to here, to support mmap/VirtualAlloc detection
- in RegisterFile.h.
-
-2008-06-26 Mark Rowe <mrowe@apple.com>
-
- Speculative fix for the Windows build.
-
- * kjs/JSImmediate.cpp:
-
-2008-06-26 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Darin Adler and Geoff Garen.
-
- Fix the malloc zone introspection functions so that malloc_zone_statistics does not give
- bogus output in an application that uses JavaScriptCore.
-
- * kjs/CollectorHeapIntrospector.cpp:
- (KJS::CollectorHeapIntrospector::statistics): Return statistics about memory allocated by the collector.
- * kjs/CollectorHeapIntrospector.h:
- * wtf/FastMalloc.cpp: Zero out the statistics. FastMalloc doesn't track this information at present.
- Returning zero for all values is preferable to returning bogus data.
-
-2008-06-26 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- - https://bugs.webkit.org/show_bug.cgi?id=19721
- speed up JavaScriptCore by not wrapping strings in objects just
- to call functions on them
-
- - optimize UString append and the replace function a bit
-
- SunSpider says 1.8% faster.
-
- * JavaScriptCore.exp: Updated.
-
- * VM/JSPropertyNameIterator.cpp: Added include of JSString.h, now needed
- because jsString returns a JSString*.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): Removed the toObject call from native
- function calls. Also removed code to put the this value into a register.
-
- * kjs/BooleanObject.cpp:
- (KJS::booleanProtoFuncToString): Rewrite to handle false and true
- separately.
-
- * kjs/FunctionPrototype.cpp:
- (KJS::constructFunction): Use single-character append rather than building
- a string for each character.
- * kjs/JSFunction.cpp:
- (KJS::globalFuncUnescape): Ditto.
-
- * kjs/JSImmediate.cpp:
- (KJS::JSImmediate::prototype): Added. Gets the appropriate prototype for
- use with an immediate value. To be used instead of toObject when doing a
- get on an immediate value.
- * kjs/JSImmediate.h: Added prototype.
-
- * kjs/JSObject.cpp:
- (KJS::JSObject::toString): Tweaked formatting.
-
- * kjs/JSObject.h:
- (KJS::JSValue::get): Use prototype instead of toObject to avoid creating
- an object wrapper just to search for properties. This also saves an
- unnecessary hash table lookup since the object wrappers themselves don't
- have any properties.
-
- * kjs/JSString.h: Added toThisString and toThisJSString.
-
- * kjs/JSValue.cpp:
- (KJS::JSCell::toThisString): Added.
- (KJS::JSCell::toThisJSString): Added.
- (KJS::JSCell::getJSNumber): Added.
- (KJS::jsString): Changed return type to JSString*.
- (KJS::jsOwnedString): Ditto.
-
- * kjs/JSValue.h:
- (KJS::JSValue::toThisString): Added.
- (KJS::JSValue::toThisJSString): Added.
- (KJS::JSValue::getJSNumber): Added.
-
- * kjs/NumberObject.cpp:
- (KJS::NumberObject::getJSNumber): Added.
- (KJS::integer_part_noexp): Append C string directly rather than first
- turning it into a UString.
- (KJS::numberProtoFuncToString): Use getJSNumber to check if the value
- is a number rather than isObject(&NumberObject::info). This works for
- immediate numbers, number cells, and NumberObject instances.
- (KJS::numberProtoFuncToLocaleString): Ditto.
- (KJS::numberProtoFuncValueOf): Ditto.
- (KJS::numberProtoFuncToFixed): Ditto.
- (KJS::numberProtoFuncToExponential): Ditto.
- (KJS::numberProtoFuncToPrecision): Ditto.
- * kjs/NumberObject.h: Added getJSNumber.
-
- * kjs/PropertySlot.cpp: Tweaked comment.
-
- * kjs/internal.cpp:
- (KJS::JSString::toThisString): Added.
- (KJS::JSString::toThisJSString): Added.
- (KJS::JSString::getOwnPropertySlot): Changed code that searches the
- prototype chain to start with the string prototype and not create a
- string object.
- (KJS::JSNumberCell::toThisString): Added.
- (KJS::JSNumberCell::getJSNumber): Added.
-
- * kjs/lookup.cpp:
- (KJS::staticFunctionGetter): Moved here, because there's no point in
- having a function that's only used for a function pointer be inline.
- (KJS::setUpStaticFunctionSlot): New function for getStaticFunctionSlot.
-
- * kjs/lookup.h:
- (KJS::staticValueGetter): Don't mark this inline. It doesn't make sense
- to have a function that's only used for a function pointer be inline.
- (KJS::getStaticFunctionSlot): Changed to get properties from the parent
- first before doing any handling of functions. This is the fastest way
- to return the function once the initial setup is done.
-
- * kjs/string_object.cpp:
- (KJS::StringObject::getPropertyNames): Call value() instead of getString(),
- avoiding an unnecessary virtual function call (the call to the type()
- function in the implementation of the isString() function).
- (KJS::StringObject::toString): Added.
- (KJS::StringObject::toThisString): Added.
- (KJS::StringObject::toThisJSString): Added.
- (KJS::substituteBackreferences): Rewrote to use a appending algorithm
- instead of a the old one that tried to replace in place.
- (KJS::stringProtoFuncReplace): Merged this function and the replace function.
- Replaced the hand-rolled dynamic arrays for source ranges and replacements
- with Vector.
- (KJS::stringProtoFuncToString): Handle JSString as well as StringObject.
- Removed the separate valueOf implementation, since it can just share this.
- (KJS::stringProtoFuncCharAt): Use toThisString, which handles JSString as
- well as StringObject, and is slightly more efficient than the old code too.
- (KJS::stringProtoFuncCharCodeAt): Ditto.
- (KJS::stringProtoFuncConcat): Ditto.
- (KJS::stringProtoFuncIndexOf): Ditto.
- (KJS::stringProtoFuncLastIndexOf): Ditto.
- (KJS::stringProtoFuncMatch): Ditto.
- (KJS::stringProtoFuncSearch): Ditto.
- (KJS::stringProtoFuncSlice): Ditto.
- (KJS::stringProtoFuncSplit): Ditto.
- (KJS::stringProtoFuncSubstr): Ditto.
- (KJS::stringProtoFuncSubstring): Ditto.
- (KJS::stringProtoFuncToLowerCase): Use toThisJSString.
- (KJS::stringProtoFuncToUpperCase): Ditto.
- (KJS::stringProtoFuncToLocaleLowerCase): Ditto.
- (KJS::stringProtoFuncToLocaleUpperCase): Ditto.
- (KJS::stringProtoFuncLocaleCompare): Ditto.
- (KJS::stringProtoFuncBig): Use toThisString.
- (KJS::stringProtoFuncSmall): Ditto.
- (KJS::stringProtoFuncBlink): Ditto.
- (KJS::stringProtoFuncBold): Ditto.
- (KJS::stringProtoFuncFixed): Ditto.
- (KJS::stringProtoFuncItalics): Ditto.
- (KJS::stringProtoFuncStrike): Ditto.
- (KJS::stringProtoFuncSub): Ditto.
- (KJS::stringProtoFuncSup): Ditto.
- (KJS::stringProtoFuncFontcolor): Ditto.
- (KJS::stringProtoFuncFontsize): Ditto.
- (KJS::stringProtoFuncAnchor): Ditto.
- (KJS::stringProtoFuncLink): Ditto.
-
- * kjs/string_object.h: Added toString, toThisString, and toThisJSString.
-
- * kjs/ustring.cpp:
- (KJS::UString::append): Added a version that takes a character pointer and
- size, so we don't have to create a UString just to append to another UString.
- * kjs/ustring.h:
-
-2008-06-26 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Maciej.
-
- Make JSGlobalData per-thread.
-
- No change on SunSpider total.
-
- * wtf/ThreadSpecific.h: Re-enabled the actual implementation.
-
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::~JSGlobalObject): Re-added a JSLock-related assertion. We'll probably
- want to preserve these somehow to keep legacy behavior in working condition.
- (KJS::JSGlobalObject::init): Initialize globalData pointer earlier, so that it is ready
- when updating JSGlobalObject linked list.
-
- * kjs/JSGlobalObject.h: (KJS::JSGlobalObject::head): Changed head() to be non-static, and
- to use JSGlobalData associated with the current object.
-
- * kjs/InitializeThreading.cpp: (KJS::initializeThreadingOnce): Removed a no longer needed
- Heap::registerAsMainThread() call.
-
- * kjs/JSGlobalData.h: Removed a lying lie comment - parserObjectExtraRefCounts is not
- transient, and while newParserObjects may conceptually be such, there is still some node
- manipulation going on outside Parser::parse which touches it.
-
- * kjs/JSGlobalData.cpp:
- (KJS::JSGlobalData::~JSGlobalData): Delete recently added members.
- (KJS::JSGlobalData::sharedInstance): Actually use a separate instance.
-
- * kjs/collector.cpp:
- (KJS::Heap::Heap):
- (KJS::Heap::~Heap): Added a destructor, which unconditionally deletes everything.
- (KJS::Heap::sweep): Removed code related to "collect on main thread only" logic.
- (KJS::Heap::collect): Ditto.
- (KJS::Heap::globalObjectCount): Explicitly use per-thread instance of JSGlobalObject linked
- list now that JSGlobalObject::head() is not static. Curently, WebCoreStatistics methods only
- work with the main thread currently anyway.
- (KJS::Heap::protectedGlobalObjectCount): Ditto.
-
- * kjs/collector.h: Removed code related to "collect on main thread only" logic.
-
- * JavaScriptCore.exp: Removed Heap::collectOnMainThreadOnly.
-
-2008-06-26 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- https://bugs.webkit.org/show_bug.cgi?id=19767
- REGRESSION: Crash in sort() when visiting http://www.onnyturf.com/subway/
-
- * kjs/JSArray.cpp: (KJS::AVLTreeAbstractorForArrayCompare::set_balance_factor):
- Made changing balance factor from -1 to +1 work correctly.
-
- * wtf/AVLTree.h: (KJS::AVLTreeDefaultBSet::operator[]): Added an assertion that catches
- this slightly earlier.
-
-2008-06-25 Timothy Hatcher <timothy@apple.com>
-
- Fixes an ASSERT in the profiler when starting multiple profiles
- with the same name inside the same function/program.
-
- Reviewed by Kevin McCullough.
-
- * profiler/Profile.cpp:
- (KJS::Profile::Profile): Initialize m_stoppedCallDepth to zero.
- (KJS::Profile::stopProfiling): Set the current node to the parent,
- because we are in a call that will not get a didExecute call.
- (KJS::Profile::removeProfile): Increment m_stoppedCallDepth to
- account for didExecute not being called for profile.
- (KJS::Profile::willExecute): Increment m_stoppedCallDepth if stopped.
- (KJS::Profile::didExecute): Decrement m_stoppedCallDepth if stopped and
- greater than zero, and return early.
- * profiler/Profile.h: Added stoppedProfiling().
- * profiler/Profiler.cpp:
- (KJS::Profiler::findProfile): Removed.
- (KJS::Profiler::startProfiling): Don't return early for stopped profiles.
- (KJS::Profiler::stopProfiling): Skipp stopped profiles.
- (KJS::Profiler::didFinishAllExecution): Code clean-up.
- * profiler/Profiler.h: Removed findProfile.
-
-2008-06-25 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Alexey Proskuryakov.
-
- Attempt to fix Windows debug build. The compiler gives a warning when
- Structured Exception Handling and destructors are used in the same
- function. Using manual locking and unlocking instead of constructors
- and destructors should fix the warning.
-
- * kjs/Shell.cpp:
- (main):
-
-2008-06-25 Alexey Proskuryakov <ap@webkit.org>
-
- Forgot to address a review comment about better names for tracked objects, doing it now.
-
- * kjs/JSGlobalData.cpp:
- (KJS::JSGlobalData::JSGlobalData):
- * kjs/JSGlobalData.h:
- * kjs/nodes.cpp:
- (KJS::ParserRefCounted::ParserRefCounted):
- (KJS::ParserRefCounted::ref):
- (KJS::ParserRefCounted::deref):
- (KJS::ParserRefCounted::hasOneRef):
- (KJS::ParserRefCounted::deleteNewObjects):
-
-2008-06-25 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoff.
-
- Remove more threadInstance() calls.
-
- * kjs/JSFunction.cpp:
- (KJS::JSFunction::getParameterName):
- (KJS::IndexToNameMap::unMap):
- (KJS::Arguments::deleteProperty):
- * kjs/JSFunction.h:
- Access nullIdentifier without going to thread specific storage.
-
- * JavaScriptCore.exp:
- * kjs/JSGlobalData.cpp:
- (KJS::JSGlobalData::JSGlobalData):
- * kjs/JSGlobalData.h:
- * kjs/Parser.cpp:
- (KJS::Parser::parse):
- * kjs/Parser.h:
- (KJS::ParserRefCountedData::ParserRefCountedData):
- (KJS::Parser::parse):
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::ParserRefCounted::ParserRefCounted):
- (KJS::ParserRefCounted::ref):
- (KJS::ParserRefCounted::deref):
- (KJS::ParserRefCounted::hasOneRef):
- (KJS::ParserRefCounted::deleteNewObjects):
- (KJS::Node::Node):
- (KJS::StatementNode::StatementNode):
- (KJS::BreakpointCheckStatement::BreakpointCheckStatement):
- (KJS::ConstDeclNode::ConstDeclNode):
- (KJS::BlockNode::BlockNode):
- (KJS::ForInNode::ForInNode):
- (KJS::ScopeNode::ScopeNode):
- (KJS::ProgramNode::ProgramNode):
- (KJS::ProgramNode::create):
- (KJS::EvalNode::EvalNode):
- (KJS::EvalNode::create):
- (KJS::FunctionBodyNode::FunctionBodyNode):
- (KJS::FunctionBodyNode::create):
- * kjs/nodes.h:
- (KJS::ExpressionNode::):
- (KJS::NullNode::):
- (KJS::BooleanNode::):
- (KJS::NumberNode::):
- (KJS::ImmediateNumberNode::):
- (KJS::StringNode::):
- (KJS::RegExpNode::):
- (KJS::ThisNode::):
- (KJS::ResolveNode::):
- (KJS::ElementNode::):
- (KJS::ArrayNode::):
- (KJS::PropertyNode::):
- (KJS::PropertyListNode::):
- (KJS::ObjectLiteralNode::):
- (KJS::BracketAccessorNode::):
- (KJS::DotAccessorNode::):
- (KJS::ArgumentListNode::):
- (KJS::ArgumentsNode::):
- (KJS::NewExprNode::):
- (KJS::EvalFunctionCallNode::):
- (KJS::FunctionCallValueNode::):
- (KJS::FunctionCallResolveNode::):
- (KJS::FunctionCallBracketNode::):
- (KJS::FunctionCallDotNode::):
- (KJS::PrePostResolveNode::):
- (KJS::PostIncResolveNode::):
- (KJS::PostDecResolveNode::):
- (KJS::PostfixBracketNode::):
- (KJS::PostIncBracketNode::):
- (KJS::PostDecBracketNode::):
- (KJS::PostfixDotNode::):
- (KJS::PostIncDotNode::):
- (KJS::PostDecDotNode::):
- (KJS::PostfixErrorNode::):
- (KJS::DeleteResolveNode::):
- (KJS::DeleteBracketNode::):
- (KJS::DeleteDotNode::):
- (KJS::DeleteValueNode::):
- (KJS::VoidNode::):
- (KJS::TypeOfResolveNode::):
- (KJS::TypeOfValueNode::):
- (KJS::PreIncResolveNode::):
- (KJS::PreDecResolveNode::):
- (KJS::PrefixBracketNode::):
- (KJS::PreIncBracketNode::):
- (KJS::PreDecBracketNode::):
- (KJS::PrefixDotNode::):
- (KJS::PreIncDotNode::):
- (KJS::PreDecDotNode::):
- (KJS::PrefixErrorNode::):
- (KJS::UnaryOpNode::UnaryOpNode):
- (KJS::UnaryPlusNode::):
- (KJS::NegateNode::):
- (KJS::BitwiseNotNode::):
- (KJS::LogicalNotNode::):
- (KJS::BinaryOpNode::BinaryOpNode):
- (KJS::ReverseBinaryOpNode::ReverseBinaryOpNode):
- (KJS::MultNode::):
- (KJS::DivNode::):
- (KJS::ModNode::):
- (KJS::AddNode::):
- (KJS::SubNode::):
- (KJS::LeftShiftNode::):
- (KJS::RightShiftNode::):
- (KJS::UnsignedRightShiftNode::):
- (KJS::LessNode::):
- (KJS::GreaterNode::):
- (KJS::LessEqNode::):
- (KJS::GreaterEqNode::):
- (KJS::InstanceOfNode::):
- (KJS::InNode::):
- (KJS::EqualNode::):
- (KJS::NotEqualNode::):
- (KJS::StrictEqualNode::):
- (KJS::NotStrictEqualNode::):
- (KJS::BitAndNode::):
- (KJS::BitOrNode::):
- (KJS::BitXOrNode::):
- (KJS::LogicalAndNode::):
- (KJS::LogicalOrNode::):
- (KJS::ConditionalNode::):
- (KJS::ReadModifyResolveNode::):
- (KJS::AssignResolveNode::):
- (KJS::ReadModifyBracketNode::):
- (KJS::AssignBracketNode::):
- (KJS::AssignDotNode::):
- (KJS::ReadModifyDotNode::):
- (KJS::AssignErrorNode::):
- (KJS::CommaNode::):
- (KJS::VarDeclCommaNode::):
- (KJS::ConstStatementNode::):
- (KJS::SourceElements::SourceElements):
- (KJS::EmptyStatementNode::):
- (KJS::DebuggerStatementNode::):
- (KJS::ExprStatementNode::):
- (KJS::VarStatementNode::):
- (KJS::IfNode::):
- (KJS::IfElseNode::):
- (KJS::DoWhileNode::):
- (KJS::WhileNode::):
- (KJS::ForNode::):
- (KJS::ContinueNode::):
- (KJS::BreakNode::):
- (KJS::ReturnNode::):
- (KJS::WithNode::):
- (KJS::LabelNode::):
- (KJS::ThrowNode::):
- (KJS::TryNode::):
- (KJS::ParameterNode::):
- (KJS::FuncExprNode::):
- (KJS::FuncDeclNode::):
- (KJS::CaseClauseNode::):
- (KJS::ClauseListNode::):
- (KJS::CaseBlockNode::):
- (KJS::SwitchNode::):
- Changed ParserRefCounted to hold a JSGlobalData pointer, and used it to replace
- threadInstance calls.
-
-2008-06-24 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Alexey Proskuryakov.
-
- Make the JavaScript shell collect the heap from main() instead of
- jscmain() to suppress leak messages in debug builds.
-
- * kjs/Shell.cpp:
- (main):
- (jscmain):
-
-2008-06-24 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Make the conversion of the pair (less, jtrue) to jless use register
- reference counting information for safety instead of requiring callers
- to decide whether it is safe.
-
- No changes on SunSpider codegen.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitJumpIfTrue):
- * VM/CodeGenerator.h:
- * kjs/nodes.cpp:
- (KJS::DoWhileNode::emitCode):
- (KJS::WhileNode::emitCode):
- (KJS::ForNode::emitCode):
- (KJS::CaseBlockNode::emitCodeForBlock):
-
-2008-06-24 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim.
-
- <rdar://problem/6031594> JSProfiler: Profiler goes into an infinite
- loop sometimes.
- <rdar://problem/6031603> JSProfiler: Profiler asserts in debug and
- give the wrong times in release
-
- Fixed two issues found by Tim in the same test.
-
- * profiler/Profile.cpp:
- (KJS::Profile::removeProfileStart): No longer take profile's time from
- all ancestors, but instead attribute it to its parent. Also add an
- Assert to ensure we only delete the child we mean to.
- (KJS::Profile::removeProfileEnd): Ditto for profileEnd.
- (KJS::Profile::didExecute): Cleaned up the execution order and correctly
- attribute all of the parent's time to the new node.
- * profiler/ProfileNode.cpp: If this node does not have a startTime it
- should not get a giant total time, but instead be 0.
- (KJS::ProfileNode::endAndRecordCall):
- * profiler/ProfileNode.h:
- (KJS::ProfileNode::removeChild): Should reset the sibling pointers since
- one of them has been removed.
-
-2008-06-24 Darin Adler <darin@apple.com>
-
- Reviewed by Cameron.
-
- - fix https://bugs.webkit.org/show_bug.cgi?id=19739
- REGRESSION: fast/js/property-getters-and-setters.html fails
-
- * kjs/JSObject.cpp:
- (KJS::JSObject::put): Remove an untested optimization I checked in by accident.
- The two loops up the prototype chain both need to start from this; instead the
- second loop was starting where the first loop left off.
-
-2008-06-24 Steve Falkenburg <sfalken@apple.com>
-
- Build fix.
-
- * kjs/nodes.cpp:
-
-2008-06-24 Joerg Bornemann <joerg.bornemann@trolltech.com>
-
- Reviewed by Simon.
-
- For the Qt build on Windows don't depend on the presence of GNU CPP
- but use MSVC's preprocessor instead.
- dftables accepts a --preprocessor option which is set in pcre.pri for MSVC platforms.
-
- * pcre/dftables: Added support for specifying the preprocessor command
- to use via --preprocessor, similar to
- WebCore/bindings/scripts/generate-bindings.pl.
- * pcre/pcre.pri: Pass --preprocessor='cl /e' to dftables, or more
- generally speaking QMAKE_CC /E for the win32-msvc buildspecs.
-
-2008-06-24 Simon Hausmann <hausmann@webkit.org>
-
- Fix the Qt build, added missing include.
-
- * kjs/PropertySlot.cpp:
-
-2008-06-24 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Cameron Zwarich.
-
- Make ParserRefCountedCounter actually perform a leak check.
-
- * kjs/nodes.cpp:
- (KJS::ParserRefCountedCounter::~ParserRefCountedCounter): Check for leaks in destructor,
- not in constructor.
- (KJS::ParserRefCountedCounter::increment):
- (KJS::ParserRefCountedCounter::decrement):
- (KJS::ParserRefCounted::ParserRefCounted):
- (KJS::ParserRefCounted::~ParserRefCounted):
- While at it, also made counting thread-safe.
-
-2008-06-24 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Bug 19730: REGRESSION (r34497): Text in alerts in "Leisure suit Larry" is not wrapped
- <https://bugs.webkit.org/show_bug.cgi?id=19730>
-
- Do not convert the pair (less, jtrue) to jless when jtrue is a jump
- target. An example of this is when the condition of a while loop is a
- LogicalOrNode.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitLabel):
-
-2008-06-20 Ariya Hidayat <ariya.hidayat@trolltech.com>
-
- Reviewed by Adam Roben.
-
- Fix compile with MinGW.
-
- * kjs/Shell.cpp:
- * wtf/Threading.h:
- (WTF::atomicIncrement):
- (WTF::atomicDecrement):
-
-2008-06-23 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Prepration for returning memory to the OS on Windows. Track whether a portion of a span of memory was returned to the OS.
- If it was, ask that it be recommitted before returning it to the application as an allocated region.
-
- * wtf/FastMalloc.cpp:
- (WTF::TCMalloc_PageHeap::New): If the span was decommitted, ask that it be recommitted before returning it.
- (WTF::TCMalloc_PageHeap::AllocLarge): Ditto.
- (WTF::TCMalloc_PageHeap::Carve): When splitting a span, ensure that the decommitted state propogates to the two new spans.
- (WTF::TCMalloc_PageHeap::Delete): When merging a span, ensure that the resulting span is marked as decommitted if any of the
- spans being merged were marked as decommitted.
- (WTF::TCMalloc_PageHeap::IncrementalScavenge): Mark as decommitted after releasing the span.
- (WTF::TCMalloc_Central_FreeList::FetchFromSpans): Add an assertion to catch a decommitted span being returned to the application
- without first being recommitted.
- (WTF::TCMalloc_Central_FreeList::Populate): Ditto.
- * wtf/TCSystemAlloc.cpp: Stub out TCMalloc_SystemCommit.
- * wtf/TCSystemAlloc.h:
-
-2008-06-23 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Remove the sample member of Span when NO_TCMALLOC_SAMPLES is defined.
-
- * wtf/FastMalloc.cpp:
- (WTF::TCMalloc_PageHeap::Delete): Only update Span::sample if NO_TCMALLOC_SAMPLES is not defined.
- (WTF::TCMallocStats::do_free): Ditto.
-
-2008-06-23 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- - work toward https://bugs.webkit.org/show_bug.cgi?id=19721
-
- More preparation toward making functions work on primitive types without
- creating wrapper objects. No speedup this time, but prepares for a future
- speedup without slowing things down.
-
- SunSpider reports no change.
-
- - Eliminated the implementsCall, callAsFunction and construct virtual
- functions from JSObject. Instead, the CallData and ConstructData for
- a native function includes a function pointer that the caller can use
- directly. Changed all call sites to use CallData and ConstructData.
-
- - Changed the "this" argument to native functions to be a JSValue rather
- than a JSObject. This prepares us for passing primitives into these
- functions. The conversion to an object now must be done inside the
- function. Critically, if it's a function that can be called on a DOM
- window object, then we have to be sure to call toThisObject on the
- argument before we use it for anything even if it's already an object.
-
- - Eliminated the practice of using constructor objects in the global
- object to make objects of the various basic types. Since these
- constructors can't be replaced by script, there's no reason to involve
- a constructor object at all. Added functions to do the construction
- directly.
-
- - Made some more class members private and protected, including virtual
- function overrides. This can catch code using unnecessarily slow virtual
- function code paths when the type of an object is known statically. If we
- later find a new reason use the members outside the class it's easy to
- make them public again.
-
- - Moved the declarations of the native implementations for functions out
- of header files. These can have internal linkage and be declared inside
- the source file.
-
- - Changed PrototypeFunction to take function pointers with the right
- arguments to be put directly into CallData. This eliminates the
- need to have a separate PrototypeReflexiveFunction, and reveals that the
- real purpose of that class included something else specific to eval --
- storage of a cached global object. So renamed PrototypeReflexiveFunction
- to GlobalEvalFunction.
-
- * API/JSCallbackConstructor.cpp:
- (KJS::constructJSCallback):
- (KJS::JSCallbackConstructor::getConstructData):
- * API/JSCallbackConstructor.h:
- * API/JSCallbackFunction.cpp:
- (KJS::JSCallbackFunction::implementsHasInstance):
- (KJS::JSCallbackFunction::call):
- (KJS::JSCallbackFunction::getCallData):
- * API/JSCallbackFunction.h:
- (KJS::JSCallbackFunction::classInfo):
- * API/JSCallbackObject.h:
- (KJS::JSCallbackObject::classRef):
- (KJS::JSCallbackObject::classInfo):
- * API/JSCallbackObjectFunctions.h:
- (KJS::::getConstructData):
- (KJS::::construct):
- (KJS::::getCallData):
- (KJS::::call):
- * API/JSObjectRef.cpp:
- (JSObjectMakeFunction):
- (JSObjectIsFunction):
- (JSObjectCallAsFunction):
- (JSObjectCallAsConstructor):
- * JavaScriptCore.exp:
- * VM/Machine.cpp:
- (KJS::jsTypeStringForValue):
- (KJS::Machine::privateExecute):
- * kjs/ArrayPrototype.cpp:
- (KJS::arrayProtoFuncToString):
- (KJS::arrayProtoFuncToLocaleString):
- (KJS::arrayProtoFuncJoin):
- (KJS::arrayProtoFuncConcat):
- (KJS::arrayProtoFuncPop):
- (KJS::arrayProtoFuncPush):
- (KJS::arrayProtoFuncReverse):
- (KJS::arrayProtoFuncShift):
- (KJS::arrayProtoFuncSlice):
- (KJS::arrayProtoFuncSort):
- (KJS::arrayProtoFuncSplice):
- (KJS::arrayProtoFuncUnShift):
- (KJS::arrayProtoFuncFilter):
- (KJS::arrayProtoFuncMap):
- (KJS::arrayProtoFuncEvery):
- (KJS::arrayProtoFuncForEach):
- (KJS::arrayProtoFuncSome):
- (KJS::arrayProtoFuncIndexOf):
- (KJS::arrayProtoFuncLastIndexOf):
- (KJS::ArrayConstructor::ArrayConstructor):
- (KJS::constructArrayWithSizeQuirk):
- (KJS::constructWithArrayConstructor):
- (KJS::ArrayConstructor::getConstructData):
- (KJS::callArrayConstructor):
- (KJS::ArrayConstructor::getCallData):
- * kjs/ArrayPrototype.h:
- * kjs/BooleanObject.cpp:
- (KJS::booleanProtoFuncToString):
- (KJS::booleanProtoFuncValueOf):
- (KJS::constructBoolean):
- (KJS::constructWithBooleanConstructor):
- (KJS::BooleanConstructor::getConstructData):
- (KJS::callBooleanConstructor):
- (KJS::BooleanConstructor::getCallData):
- (KJS::constructBooleanFromImmediateBoolean):
- * kjs/BooleanObject.h:
- * kjs/CallData.h:
- (KJS::):
- * kjs/ConstructData.h:
- (KJS::):
- * kjs/FunctionPrototype.cpp:
- (KJS::callFunctionPrototype):
- (KJS::FunctionPrototype::getCallData):
- (KJS::functionProtoFuncToString):
- (KJS::functionProtoFuncApply):
- (KJS::functionProtoFuncCall):
- (KJS::constructWithFunctionConstructor):
- (KJS::FunctionConstructor::getConstructData):
- (KJS::callFunctionConstructor):
- (KJS::FunctionConstructor::getCallData):
- (KJS::constructFunction):
- * kjs/FunctionPrototype.h:
- * kjs/JSArray.cpp:
- (KJS::AVLTreeAbstractorForArrayCompare::compare_key_key):
- (KJS::JSArray::sort):
- (KJS::constructEmptyArray):
- (KJS::constructArray):
- * kjs/JSArray.h:
- (KJS::JSArray::classInfo):
- * kjs/JSFunction.cpp:
- (KJS::JSFunction::call):
- (KJS::globalFuncEval):
- (KJS::globalFuncParseInt):
- (KJS::globalFuncParseFloat):
- (KJS::globalFuncIsNaN):
- (KJS::globalFuncIsFinite):
- (KJS::globalFuncDecodeURI):
- (KJS::globalFuncDecodeURIComponent):
- (KJS::globalFuncEncodeURI):
- (KJS::globalFuncEncodeURIComponent):
- (KJS::globalFuncEscape):
- (KJS::globalFuncUnescape):
- (KJS::globalFuncKJSPrint):
- (KJS::PrototypeFunction::PrototypeFunction):
- (KJS::PrototypeFunction::getCallData):
- (KJS::GlobalEvalFunction::GlobalEvalFunction):
- (KJS::GlobalEvalFunction::mark):
- * kjs/JSFunction.h:
- (KJS::InternalFunction::classInfo):
- (KJS::InternalFunction::functionName):
- (KJS::JSFunction::classInfo):
- (KJS::GlobalEvalFunction::cachedGlobalObject):
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::reset):
- (KJS::JSGlobalObject::mark):
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::JSGlobalObject):
- (KJS::JSGlobalObject::evalFunction):
- * kjs/JSImmediate.cpp:
- (KJS::JSImmediate::toObject):
- * kjs/JSNotAnObject.cpp:
- * kjs/JSNotAnObject.h:
- * kjs/JSObject.cpp:
- (KJS::JSObject::put):
- (KJS::callDefaultValueFunction):
- (KJS::JSObject::defaultValue):
- (KJS::JSObject::lookupGetter):
- (KJS::JSObject::lookupSetter):
- (KJS::JSObject::hasInstance):
- (KJS::JSObject::fillGetterPropertySlot):
- (KJS::Error::create):
- (KJS::constructEmptyObject):
- * kjs/JSObject.h:
- (KJS::GetterSetter::GetterSetter):
- (KJS::GetterSetter::getter):
- (KJS::GetterSetter::setGetter):
- (KJS::GetterSetter::setter):
- (KJS::GetterSetter::setSetter):
- * kjs/JSValue.cpp:
- (KJS::JSCell::deleteProperty):
- (KJS::call):
- (KJS::construct):
- * kjs/JSValue.h:
- * kjs/MathObject.cpp:
- (KJS::mathProtoFuncAbs):
- (KJS::mathProtoFuncACos):
- (KJS::mathProtoFuncASin):
- (KJS::mathProtoFuncATan):
- (KJS::mathProtoFuncATan2):
- (KJS::mathProtoFuncCeil):
- (KJS::mathProtoFuncCos):
- (KJS::mathProtoFuncExp):
- (KJS::mathProtoFuncFloor):
- (KJS::mathProtoFuncLog):
- (KJS::mathProtoFuncMax):
- (KJS::mathProtoFuncMin):
- (KJS::mathProtoFuncPow):
- (KJS::mathProtoFuncRandom):
- (KJS::mathProtoFuncRound):
- (KJS::mathProtoFuncSin):
- (KJS::mathProtoFuncSqrt):
- (KJS::mathProtoFuncTan):
- * kjs/MathObject.h:
- * kjs/NumberObject.cpp:
- (KJS::numberProtoFuncToString):
- (KJS::numberProtoFuncToLocaleString):
- (KJS::numberProtoFuncValueOf):
- (KJS::numberProtoFuncToFixed):
- (KJS::numberProtoFuncToExponential):
- (KJS::numberProtoFuncToPrecision):
- (KJS::NumberConstructor::NumberConstructor):
- (KJS::constructWithNumberConstructor):
- (KJS::NumberConstructor::getConstructData):
- (KJS::callNumberConstructor):
- (KJS::NumberConstructor::getCallData):
- (KJS::constructNumber):
- (KJS::constructNumberFromImmediateNumber):
- * kjs/NumberObject.h:
- (KJS::NumberObject::classInfo):
- (KJS::NumberConstructor::classInfo):
- * kjs/PropertySlot.cpp:
- (KJS::PropertySlot::functionGetter):
- * kjs/RegExpObject.cpp:
- (KJS::regExpProtoFuncTest):
- (KJS::regExpProtoFuncExec):
- (KJS::regExpProtoFuncCompile):
- (KJS::regExpProtoFuncToString):
- (KJS::callRegExpObject):
- (KJS::RegExpObject::getCallData):
- (KJS::constructRegExp):
- (KJS::constructWithRegExpConstructor):
- (KJS::RegExpConstructor::getConstructData):
- (KJS::callRegExpConstructor):
- (KJS::RegExpConstructor::getCallData):
- * kjs/RegExpObject.h:
- (KJS::RegExpConstructor::classInfo):
- * kjs/Shell.cpp:
- (GlobalObject::GlobalObject):
- (functionPrint):
- (functionDebug):
- (functionGC):
- (functionVersion):
- (functionRun):
- (functionLoad):
- (functionReadline):
- (functionQuit):
- * kjs/date_object.cpp:
- (KJS::gmtoffset):
- (KJS::formatLocaleDate):
- (KJS::fillStructuresUsingDateArgs):
- (KJS::DateInstance::getTime):
- (KJS::DateInstance::getUTCTime):
- (KJS::DateConstructor::DateConstructor):
- (KJS::constructDate):
- (KJS::DateConstructor::getConstructData):
- (KJS::callDate):
- (KJS::DateConstructor::getCallData):
- (KJS::dateParse):
- (KJS::dateNow):
- (KJS::dateUTC):
- (KJS::dateProtoFuncToString):
- (KJS::dateProtoFuncToUTCString):
- (KJS::dateProtoFuncToDateString):
- (KJS::dateProtoFuncToTimeString):
- (KJS::dateProtoFuncToLocaleString):
- (KJS::dateProtoFuncToLocaleDateString):
- (KJS::dateProtoFuncToLocaleTimeString):
- (KJS::dateProtoFuncValueOf):
- (KJS::dateProtoFuncGetTime):
- (KJS::dateProtoFuncGetFullYear):
- (KJS::dateProtoFuncGetUTCFullYear):
- (KJS::dateProtoFuncToGMTString):
- (KJS::dateProtoFuncGetMonth):
- (KJS::dateProtoFuncGetUTCMonth):
- (KJS::dateProtoFuncGetDate):
- (KJS::dateProtoFuncGetUTCDate):
- (KJS::dateProtoFuncGetDay):
- (KJS::dateProtoFuncGetUTCDay):
- (KJS::dateProtoFuncGetHours):
- (KJS::dateProtoFuncGetUTCHours):
- (KJS::dateProtoFuncGetMinutes):
- (KJS::dateProtoFuncGetUTCMinutes):
- (KJS::dateProtoFuncGetSeconds):
- (KJS::dateProtoFuncGetUTCSeconds):
- (KJS::dateProtoFuncGetMilliSeconds):
- (KJS::dateProtoFuncGetUTCMilliseconds):
- (KJS::dateProtoFuncGetTimezoneOffset):
- (KJS::dateProtoFuncSetTime):
- (KJS::setNewValueFromTimeArgs):
- (KJS::setNewValueFromDateArgs):
- (KJS::dateProtoFuncSetMilliSeconds):
- (KJS::dateProtoFuncSetUTCMilliseconds):
- (KJS::dateProtoFuncSetSeconds):
- (KJS::dateProtoFuncSetUTCSeconds):
- (KJS::dateProtoFuncSetMinutes):
- (KJS::dateProtoFuncSetUTCMinutes):
- (KJS::dateProtoFuncSetHours):
- (KJS::dateProtoFuncSetUTCHours):
- (KJS::dateProtoFuncSetDate):
- (KJS::dateProtoFuncSetUTCDate):
- (KJS::dateProtoFuncSetMonth):
- (KJS::dateProtoFuncSetUTCMonth):
- (KJS::dateProtoFuncSetFullYear):
- (KJS::dateProtoFuncSetUTCFullYear):
- (KJS::dateProtoFuncSetYear):
- (KJS::dateProtoFuncGetYear):
- * kjs/date_object.h:
- (KJS::DateInstance::internalNumber):
- (KJS::DateInstance::classInfo):
- * kjs/error_object.cpp:
- (KJS::errorProtoFuncToString):
- (KJS::constructError):
- (KJS::constructWithErrorConstructor):
- (KJS::ErrorConstructor::getConstructData):
- (KJS::callErrorConstructor):
- (KJS::ErrorConstructor::getCallData):
- (KJS::NativeErrorConstructor::construct):
- (KJS::constructWithNativeErrorConstructor):
- (KJS::NativeErrorConstructor::getConstructData):
- (KJS::callNativeErrorConstructor):
- (KJS::NativeErrorConstructor::getCallData):
- * kjs/error_object.h:
- (KJS::NativeErrorConstructor::classInfo):
- * kjs/internal.cpp:
- (KJS::JSNumberCell::toObject):
- (KJS::JSNumberCell::toThisObject):
- (KJS::GetterSetter::mark):
- (KJS::GetterSetter::toPrimitive):
- (KJS::GetterSetter::toBoolean):
- (KJS::GetterSetter::toNumber):
- (KJS::GetterSetter::toString):
- (KJS::GetterSetter::toObject):
- (KJS::InternalFunction::InternalFunction):
- (KJS::InternalFunction::implementsHasInstance):
- * kjs/lookup.h:
- (KJS::HashEntry::):
- * kjs/nodes.cpp:
- (KJS::FuncDeclNode::makeFunction):
- (KJS::FuncExprNode::makeFunction):
- * kjs/object_object.cpp:
- (KJS::objectProtoFuncValueOf):
- (KJS::objectProtoFuncHasOwnProperty):
- (KJS::objectProtoFuncIsPrototypeOf):
- (KJS::objectProtoFuncDefineGetter):
- (KJS::objectProtoFuncDefineSetter):
- (KJS::objectProtoFuncLookupGetter):
- (KJS::objectProtoFuncLookupSetter):
- (KJS::objectProtoFuncPropertyIsEnumerable):
- (KJS::objectProtoFuncToLocaleString):
- (KJS::objectProtoFuncToString):
- (KJS::ObjectConstructor::ObjectConstructor):
- (KJS::constructObject):
- (KJS::constructWithObjectConstructor):
- (KJS::ObjectConstructor::getConstructData):
- (KJS::callObjectConstructor):
- (KJS::ObjectConstructor::getCallData):
- * kjs/object_object.h:
- * kjs/string_object.cpp:
- (KJS::replace):
- (KJS::stringProtoFuncToString):
- (KJS::stringProtoFuncValueOf):
- (KJS::stringProtoFuncCharAt):
- (KJS::stringProtoFuncCharCodeAt):
- (KJS::stringProtoFuncConcat):
- (KJS::stringProtoFuncIndexOf):
- (KJS::stringProtoFuncLastIndexOf):
- (KJS::stringProtoFuncMatch):
- (KJS::stringProtoFuncSearch):
- (KJS::stringProtoFuncReplace):
- (KJS::stringProtoFuncSlice):
- (KJS::stringProtoFuncSplit):
- (KJS::stringProtoFuncSubstr):
- (KJS::stringProtoFuncSubstring):
- (KJS::stringProtoFuncToLowerCase):
- (KJS::stringProtoFuncToUpperCase):
- (KJS::stringProtoFuncToLocaleLowerCase):
- (KJS::stringProtoFuncToLocaleUpperCase):
- (KJS::stringProtoFuncLocaleCompare):
- (KJS::stringProtoFuncBig):
- (KJS::stringProtoFuncSmall):
- (KJS::stringProtoFuncBlink):
- (KJS::stringProtoFuncBold):
- (KJS::stringProtoFuncFixed):
- (KJS::stringProtoFuncItalics):
- (KJS::stringProtoFuncStrike):
- (KJS::stringProtoFuncSub):
- (KJS::stringProtoFuncSup):
- (KJS::stringProtoFuncFontcolor):
- (KJS::stringProtoFuncFontsize):
- (KJS::stringProtoFuncAnchor):
- (KJS::stringProtoFuncLink):
- (KJS::stringFromCharCode):
- (KJS::StringConstructor::StringConstructor):
- (KJS::constructWithStringConstructor):
- (KJS::StringConstructor::getConstructData):
- (KJS::callStringConstructor):
- (KJS::StringConstructor::getCallData):
- * kjs/string_object.h:
-
-2008-06-23 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Bug 19716: REGRESSION (SquirrelFish): Reproducible crash after entering a username at mint.com
- <https://bugs.webkit.org/show_bug.cgi?id=19716>
-
- When unwinding callframes for exceptions, check whether the callframe
- was created by a reentrant native call to JavaScript after tearing off
- the local variables instead of before.
-
- * VM/Machine.cpp:
- (KJS::Machine::unwindCallFrame):
-
-2008-06-23 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Get testapi passing again in a debug build.
-
- * API/testapi.c:
- (main): Update the expected output of calling JSValueMakeString on a function object.
-
-2008-06-21 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Print a blank line when exiting the jsc interactive mode to ensure that the shell
- prompt will start on a new line.
-
- * kjs/Shell.cpp:
- (runInteractive):
-
-2008-06-21 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Sam Weinig.
-
- Tweak the paths of the items in the "tests" group to clean things up a little.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2008-06-21 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Sam Weinig.
-
- Fix jsc to link against libedit.dylib rather than libedit.2.dylib.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2008-06-21 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Copy the JavaScriptCore shell (jsc) into JavaScriptCore.framework so that it will
- be included in nightly builds.
- https://bugs.webkit.org/show_bug.cgi?id=19691
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2008-06-21 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Mark Rowe.
-
- Fix the build for non-Mac Darwin platforms by disabling their support
- for readline in the JavaScript shell.
-
- * kjs/config.h:
-
-2008-06-20 Timothy Hatcher <timothy@apple.com>
-
- Use member function pointers for the Profile::forEach function.
- Eliminating a few static functions and simplified things a little.
-
- Reviewed by Alexey Proskuryakov.
-
- * JavaScriptCore.exp: Change the symbol for forEach.
- * profiler/Profile.cpp:
- (KJS::Profile::forEach): Use a member function pointer.
- * profiler/Profile.h:
- (KJS::Profile::sortTotalTimeDescending): Pass a function pointer.
- (KJS::Profile::sortTotalTimeAscending): Ditto.
- (KJS::Profile::sortSelfTimeDescending): Ditto.
- (KJS::Profile::sortSelfTimeAscending): Ditto.
- (KJS::Profile::sortCallsDescending): Ditto.
- * profiler/ProfileNode.h:
- (KJS::ProfileNode::sortTotalTimeDescending): No longer static.
- (KJS::ProfileNode::sortTotalTimeAscending): Ditto.
- (KJS::ProfileNode::sortSelfTimeDescending): Ditto.
- (KJS::ProfileNode::sortSelfTimeAscending): Ditto.
- (KJS::ProfileNode::sortCallsDescending): Ditto.
-
-2008-06-20 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Remove unused destructors.
-
- * kjs/nodes.cpp:
- * kjs/nodes.h:
-
-2008-06-20 Timothy Hatcher <timothy@apple.com>
-
- Fixed an ASSERT(m_actualSelfTime <= m_actualTotalTime) when starting
- and stopping a profile from the Develop menu. Also prevents
- inserting an incorrect parent node as the new head after profiling
- is stopped from the Develop menu.
-
- Reviewed by Dan Bernstein.
-
- * profiler/Profile.cpp:
- (KJS::Profile::stopProfiling): If the current node is already the head
- then there is no more need to record future nodes in didExecute.
- (KJS::Profile::didExecute): Move the code of setupCurrentNodeAsStopped
- into here since this was the only caller. When setting the total time
- keep any current total time while adding the self time of the head.
- (KJS::Profile::setupCurrentNodeAsStopped): Removed.
- * profiler/Profile.h: Removed setupCurrentNodeAsStopped.
-
-2008-06-20 Kevin Ollivier <kevino@theolliviers.com>
-
- !USE(MULTIPLE_THREADS) on Darwin build fix
-
- * kjs/InitializeThreading.cpp:
- (KJS::initializeThreading):
- * kjs/collector.h:
-
-2008-06-20 Kevin McCullough <kmccullough@apple.com>
-
- -Leopard Build Fix.
-
- * profiler/Profile.cpp:
- (KJS::Profile::removeProfileStart):
- (KJS::Profile::removeProfileEnd):
-
-2008-06-20 Kevin McCullough <kmccullough@apple.com>
-
- Just giving credit.
-
- * ChangeLog:
-
-2008-06-20 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim and Dan.
-
- <rdar://problem/6024846> JSProfiler: ASSERT hit in Profiler.
- - Because InspectorController can call startProfiling() and
- stopProfiling() we cannot assert that console.profile() and
- console.profileEnd() will be in the profile tree.
-
- * profiler/Profile.cpp:
- (KJS::Profile::removeProfileStart):
- (KJS::Profile::removeProfileEnd):
-
-2008-06-20 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim.
-
- <rdar://problem/5958770> JSProfiler: Time incorrectly given to (idle)
- if profiling is started and finished within the same function. (19230)
- - Now we profile one more stack frame up from the last frame to allocate
- the time spent in it, if it exists.
-
- * JavaScriptCore.exp:
- * VM/Machine.cpp: We need to let the profiler know when the JS program
- has finished since that is what will actually stop the profiler instead
- of just calling stopProfiling().
- (KJS::Machine::execute):
- * profiler/Profile.cpp:
- (KJS::Profile::create): Moved from Profile.h since it was getting pretty
- long.
- (KJS::Profile::Profile): We now have a client, which is a listener who
- we will return this profile to, once it has actually finished.
- (KJS::Profile::stopProfiling): Instead of fully stopping the profiler
- here, we set the flag and keep it profiling in the background.
- (KJS::Profile::didFinishAllExecution): This is where the profiler
- actually finishes and creates the (idle) node if one should be made.
- (KJS::Profile::removeProfileStart): Don't use m_currentNode since it is
- needed by the profiler as it runs silently in the background.
- (KJS::Profile::removeProfileEnd): Ditto.
- (KJS::Profile::willExecute): Don't profile new functions if we have
- stopped profiling.
- (KJS::Profile::didExecute): Only record one more return as all the
- remaining time will be attributed to that function.
- (KJS::Profile::setupCurrentNodeAsStopped): Sets the current node's time.
- * profiler/Profile.h: Added functions and variables for the above
- changes.
- (KJS::Profile::client):
- * profiler/ProfileNode.h:
- (KJS::CallIdentifier::toString): Debug method.
- * profiler/Profiler.cpp: Added support for the ProfilerClient.
- (KJS::Profiler::startProfiling):
- (KJS::Profiler::stopProfiling): No longer return sthe profile.
- (KJS::Profiler::didFinishAllExecution): Now returns the profile to the
- client instead of stopProfiling.
- * profiler/Profiler.h:
- (KJS::ProfilerClient::~ProfilerClient): Clients will implement this
- interface.
-
-2008-06-19 Ariya Hidayat <ariya.hidayat@trolltech.com>
-
- Reviewed by Simon.
-
- Surpress compiler warning (int vs unsigned comparison).
-
- * wtf/unicode/qt4/UnicodeQt4.h:
- (WTF::Unicode::toLower):
-
-2008-06-19 Ariya Hidayat <ariya.hidayat@trolltech.com>
-
- Reviewed by Timothy Hatcher.
-
- Introduce compiler define for MinGW, to have COMPILER(MINGW).
-
- * wtf/Platform.h:
-
-2008-06-19 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoff.
-
- Make Machine per-JSGlobalData.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitOpcode):
- * VM/Machine.cpp:
- (KJS::callEval):
- (KJS::Machine::unwindCallFrame):
- (KJS::Machine::throwException):
- (KJS::Machine::execute):
- (KJS::Machine::debug):
- * VM/Machine.h:
- * kjs/DebuggerCallFrame.cpp:
- (KJS::DebuggerCallFrame::evaluate):
- * kjs/DebuggerCallFrame.h:
- (KJS::DebuggerCallFrame::DebuggerCallFrame):
- * kjs/ExecState.cpp:
- (KJS::ExecState::ExecState):
- * kjs/ExecState.h:
- (KJS::ExecState::machine):
- * kjs/JSFunction.cpp:
- (KJS::JSFunction::callAsFunction):
- (KJS::JSFunction::argumentsGetter):
- (KJS::JSFunction::callerGetter):
- (KJS::JSFunction::construct):
- (KJS::globalFuncEval):
- * kjs/JSGlobalData.cpp:
- (KJS::JSGlobalData::JSGlobalData):
- * kjs/JSGlobalData.h:
- * kjs/interpreter.cpp:
- (KJS::Interpreter::evaluate):
-
-2008-06-19 Alp Toker <alp@nuanti.com>
-
- GTK+/autotools build fix. JSGlobalObject.cpp in now in
- AllInOneFile.cpp and shouldn't be built separately.
-
- * GNUmakefile.am:
-
-2008-06-19 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Get rid of some threadInstance calls.
-
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::init):
- * kjs/Parser.cpp:
- (KJS::Parser::parse):
- * kjs/Shell.cpp:
- (jscmain):
-
-2008-06-19 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Sam.
-
- Fix an assertion failure at startup.
-
- * kjs/JSObject.h: (KJS::JSObject::JSObject): Allow jsNull prototype in an assertion (I had
- it fixed in a wrong copy of the file, so I wasn't getting the failure).
-
-2008-06-19 Alexey Proskuryakov <ap@webkit.org>
-
- Build fix.
-
- * kjs/collector.cpp:
- (KJS::Heap::Heap):
- (KJS::allocateBlock):
- * kjs/collector.h:
- No, #if PLATFORM(UNIX) was not right. I've just moved the unsafe initialization back for now,
- as the platforms that use that code path do not use multiple threads yet.
-
-2008-06-19 Alexey Proskuryakov <ap@webkit.org>
-
- Windows and Qt build fixes.
-
- * kjs/collector.h:
- * kjs/collector.cpp:
- (KJS::Heap::Heap):
- Wrapped m_pagesize in #if PLATFORM(UNIX), which should better match the sequence of #elifs
- in allocateBlock(). Changed MIN_ARRAY_SIZE to be explicitly size_t, as this type is different
- on different platforms.
-
-2008-06-17 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Prepare JavaScript heap for being per-thread.
-
- * kjs/ExecState.h: Shuffle includes, making it possible to include ExecState.h in JSValue.h.
- (KJS::ExecState::heap): Added an accessor.
-
- * API/JSBase.cpp: (JSGarbageCollect): Collect both shared and per-thread heaps.
-
- * API/JSContextRef.cpp: (JSGlobalContextCreate): When allocating JSGlobalObject, indicate
- that it belongs to a shared heap.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/AllInOneFile.cpp:
- Moved JSGlobalObject.cpp to AllInOneFile, as a build fix for inlineAllocate magic.
-
- * VM/CodeGenerator.h: (KJS::CodeGenerator::globalExec): Added an accessor (working via
- m_scopeChain).
-
- * VM/RegisterFile.h:
- (KJS::RegisterFile::mark):
- * VM/RegisterFileStack.h:
- (KJS::RegisterFileStack::mark):
- Made these pseudo-mark functions take Heap*.
-
- * kjs/InitializeThreading.cpp:
- (KJS::initializeThreading): Initialize heap introspector.
-
- * kjs/JSGlobalData.h: Added Heap to the structure.
-
- * kjs/JSGlobalData.cpp:
- (KJS::JSGlobalData::JSGlobalData): Initialize Heap.
- (KJS::JSGlobalData::sharedInstance): Added a method to access shared global data instance
- for legacy clients.
-
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::~JSGlobalObject): Changed to work with per-thread head; fixed list
- maintenance logic.
- (KJS::JSGlobalObject::init): Changed to work with per-thread head.
- (KJS::JSGlobalObject::put): Assert that a cross-heap operation is not being attempted.
- (KJS::JSGlobalObject::reset): Pass ExecState* where now required.
- (KJS::JSGlobalObject::mark): Pass the current heap to RegisterFileStack::mark.
- (KJS::JSGlobalObject::operator new): Overload operator new to use per-thread or shared heap.
- * kjs/JSGlobalObject.h: Removed static s_head member.
-
- * kjs/PropertyMap.h: (KJS::PropertyMap::PropertyMap): Removed unused SavedProperty.
-
- * kjs/collector.h: Turned Collector into an actual object with its own data, renamed to Heap.
- (KJS::Heap::initializeHeapIntrospector): Added.
- (KJS::Heap::heap): Added a method to determine which heap a JSValue is in, if any.
- (KJS::Heap::allocate): Made non-static.
- (KJS::Heap::inlineAllocateNumber): Ditto.
- (KJS::Heap::markListSet): Ditto.
- (KJS::Heap::cellBlock): Ditto.
- (KJS::Heap::cellOffset): Ditto.
- (KJS::Heap::isCellMarked): Ditto.
- (KJS::Heap::markCell): Ditto.
- (KJS::Heap::reportExtraMemoryCost): Ditto.
- (KJS::CollectorBlock): Added a back-reference to Heap for Heap::heap() method.
- (KJS::SmallCellCollectorBlock): Ditto.
-
- * kjs/collector.cpp: Changed MIN_ARRAY_SIZE to a #define to avoid a PIC branch. Removed
- main thread related machinery.
- (KJS::Heap::Heap): Initialize the newly added data members.
- (KJS::allocateBlock): Marked NEVER_INLINE, as this is a rare case that uses a PIC branch.
- Moved static pagesize to the class to make it safely initialized.
- (KJS::Heap::heapAllocate): Initialize heap back reference after a new block is allocated.
- (KJS::Heap::registerThread): Removed introspector initialization, as it is now performed
- in InitializeThreading.cpp.
- (KJS::Heap::markOtherThreadConservatively): Assert that the "other thread" case only occurs
- for legacy clients using a shared heap.
- (KJS::Heap::markStackObjectsConservatively): Moved fastMallocForbid/Allow down here, since
- it doesn't need to be forbidden during other GC phases.
-
- * kjs/JSImmediate.h:
- (KJS::jsUndefined):
- (KJS::jsNull):
- (KJS::jsBoolean):
- Moved from JSvalue.h, to make these usable in files that cannot include JSValue.h (such
- as list.h).
-
- * API/JSCallbackObjectFunctions.h:
- (KJS::::staticFunctionGetter):
- * API/JSClassRef.cpp:
- (OpaqueJSClass::prototype):
- * API/JSObjectRef.cpp:
- (JSObjectMake):
- (JSObjectMakeFunctionWithCallback):
- (JSObjectMakeConstructor):
- (JSObjectMakeFunction):
- * API/JSValueRef.cpp:
- (JSValueMakeNumber):
- (JSValueMakeString):
- * JavaScriptCore.exp:
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitLoad):
- * VM/JSPropertyNameIterator.cpp:
- (KJS::JSPropertyNameIterator::create):
- (KJS::JSPropertyNameIterator::next):
- * VM/Machine.cpp:
- (KJS::jsAddSlowCase):
- (KJS::jsAdd):
- (KJS::jsTypeStringForValue):
- (KJS::scopeChainForCall):
- (KJS::Machine::throwException):
- (KJS::Machine::execute):
- (KJS::Machine::privateExecute):
- (KJS::Machine::retrieveArguments):
- * kjs/ArrayPrototype.cpp:
- (KJS::arrayProtoFuncToString):
- (KJS::arrayProtoFuncToLocaleString):
- (KJS::arrayProtoFuncJoin):
- (KJS::arrayProtoFuncConcat):
- (KJS::arrayProtoFuncPop):
- (KJS::arrayProtoFuncPush):
- (KJS::arrayProtoFuncShift):
- (KJS::arrayProtoFuncSlice):
- (KJS::arrayProtoFuncSplice):
- (KJS::arrayProtoFuncUnShift):
- (KJS::arrayProtoFuncFilter):
- (KJS::arrayProtoFuncMap):
- (KJS::arrayProtoFuncEvery):
- (KJS::arrayProtoFuncForEach):
- (KJS::arrayProtoFuncSome):
- (KJS::arrayProtoFuncIndexOf):
- (KJS::arrayProtoFuncLastIndexOf):
- (KJS::ArrayConstructor::ArrayConstructor):
- (KJS::ArrayConstructor::construct):
- (KJS::ArrayConstructor::callAsFunction):
- * kjs/BooleanObject.cpp:
- (KJS::BooleanPrototype::BooleanPrototype):
- (KJS::booleanProtoFuncToString):
- (KJS::BooleanConstructor::BooleanConstructor):
- (KJS::BooleanConstructor::construct):
- * kjs/FunctionPrototype.cpp:
- (KJS::FunctionPrototype::FunctionPrototype):
- (KJS::functionProtoFuncToString):
- (KJS::FunctionConstructor::FunctionConstructor):
- (KJS::FunctionConstructor::construct):
- * kjs/JSActivation.cpp:
- (KJS::JSActivation::createArgumentsObject):
- * kjs/JSArray.cpp:
- (KJS::JSArray::JSArray):
- (KJS::JSArray::lengthGetter):
- * kjs/JSFunction.cpp:
- (KJS::JSFunction::lengthGetter):
- (KJS::JSFunction::construct):
- (KJS::Arguments::Arguments):
- (KJS::encode):
- (KJS::decode):
- (KJS::globalFuncParseInt):
- (KJS::globalFuncParseFloat):
- (KJS::globalFuncEscape):
- (KJS::globalFuncUnescape):
- (KJS::PrototypeFunction::PrototypeFunction):
- (KJS::PrototypeReflexiveFunction::PrototypeReflexiveFunction):
- * kjs/JSImmediate.cpp:
- (KJS::JSImmediate::toObject):
- * kjs/JSLock.cpp:
- (KJS::JSLock::registerThread):
- * kjs/JSObject.cpp:
- (KJS::JSObject::put):
- (KJS::JSObject::defineGetter):
- (KJS::JSObject::defineSetter):
- (KJS::Error::create):
- * kjs/JSObject.h:
- (KJS::JSObject::putDirect):
- * kjs/JSString.h:
- (KJS::JSString::JSString):
- * kjs/JSValue.cpp:
- (KJS::JSCell::operator new):
- (KJS::jsString):
- (KJS::jsOwnedString):
- * kjs/JSValue.h:
- (KJS::JSNumberCell::operator new):
- (KJS::jsNumberCell):
- (KJS::jsNaN):
- (KJS::jsNumber):
- (KJS::JSCell::marked):
- (KJS::JSCell::mark):
- (KJS::JSValue::toJSNumber):
- * kjs/MathObject.cpp:
- (KJS::MathObject::getValueProperty):
- (KJS::mathProtoFuncAbs):
- (KJS::mathProtoFuncACos):
- (KJS::mathProtoFuncASin):
- (KJS::mathProtoFuncATan):
- (KJS::mathProtoFuncATan2):
- (KJS::mathProtoFuncCeil):
- (KJS::mathProtoFuncCos):
- (KJS::mathProtoFuncExp):
- (KJS::mathProtoFuncFloor):
- (KJS::mathProtoFuncLog):
- (KJS::mathProtoFuncMax):
- (KJS::mathProtoFuncMin):
- (KJS::mathProtoFuncPow):
- (KJS::mathProtoFuncRandom):
- (KJS::mathProtoFuncRound):
- (KJS::mathProtoFuncSin):
- (KJS::mathProtoFuncSqrt):
- (KJS::mathProtoFuncTan):
- * kjs/NumberObject.cpp:
- (KJS::NumberPrototype::NumberPrototype):
- (KJS::numberProtoFuncToString):
- (KJS::numberProtoFuncToLocaleString):
- (KJS::numberProtoFuncToFixed):
- (KJS::numberProtoFuncToExponential):
- (KJS::numberProtoFuncToPrecision):
- (KJS::NumberConstructor::NumberConstructor):
- (KJS::NumberConstructor::getValueProperty):
- (KJS::NumberConstructor::construct):
- (KJS::NumberConstructor::callAsFunction):
- * kjs/RegExpObject.cpp:
- (KJS::RegExpPrototype::RegExpPrototype):
- (KJS::regExpProtoFuncToString):
- (KJS::RegExpObject::getValueProperty):
- (KJS::RegExpConstructor::RegExpConstructor):
- (KJS::RegExpMatchesArray::fillArrayInstance):
- (KJS::RegExpConstructor::arrayOfMatches):
- (KJS::RegExpConstructor::getBackref):
- (KJS::RegExpConstructor::getLastParen):
- (KJS::RegExpConstructor::getLeftContext):
- (KJS::RegExpConstructor::getRightContext):
- (KJS::RegExpConstructor::getValueProperty):
- (KJS::RegExpConstructor::construct):
- * kjs/RegExpObject.h:
- * kjs/Shell.cpp:
- (GlobalObject::GlobalObject):
- (functionGC):
- (functionRun):
- (functionReadline):
- (jscmain):
- * kjs/date_object.cpp:
- (KJS::formatLocaleDate):
- (KJS::DatePrototype::DatePrototype):
- (KJS::DateConstructor::DateConstructor):
- (KJS::DateConstructor::construct):
- (KJS::DateConstructor::callAsFunction):
- (KJS::DateFunction::DateFunction):
- (KJS::DateFunction::callAsFunction):
- (KJS::dateProtoFuncToString):
- (KJS::dateProtoFuncToUTCString):
- (KJS::dateProtoFuncToDateString):
- (KJS::dateProtoFuncToTimeString):
- (KJS::dateProtoFuncToLocaleString):
- (KJS::dateProtoFuncToLocaleDateString):
- (KJS::dateProtoFuncToLocaleTimeString):
- (KJS::dateProtoFuncValueOf):
- (KJS::dateProtoFuncGetTime):
- (KJS::dateProtoFuncGetFullYear):
- (KJS::dateProtoFuncGetUTCFullYear):
- (KJS::dateProtoFuncToGMTString):
- (KJS::dateProtoFuncGetMonth):
- (KJS::dateProtoFuncGetUTCMonth):
- (KJS::dateProtoFuncGetDate):
- (KJS::dateProtoFuncGetUTCDate):
- (KJS::dateProtoFuncGetDay):
- (KJS::dateProtoFuncGetUTCDay):
- (KJS::dateProtoFuncGetHours):
- (KJS::dateProtoFuncGetUTCHours):
- (KJS::dateProtoFuncGetMinutes):
- (KJS::dateProtoFuncGetUTCMinutes):
- (KJS::dateProtoFuncGetSeconds):
- (KJS::dateProtoFuncGetUTCSeconds):
- (KJS::dateProtoFuncGetMilliSeconds):
- (KJS::dateProtoFuncGetUTCMilliseconds):
- (KJS::dateProtoFuncGetTimezoneOffset):
- (KJS::dateProtoFuncSetTime):
- (KJS::setNewValueFromTimeArgs):
- (KJS::setNewValueFromDateArgs):
- (KJS::dateProtoFuncSetYear):
- (KJS::dateProtoFuncGetYear):
- * kjs/error_object.cpp:
- (KJS::ErrorPrototype::ErrorPrototype):
- (KJS::errorProtoFuncToString):
- (KJS::ErrorConstructor::ErrorConstructor):
- (KJS::ErrorConstructor::construct):
- (KJS::NativeErrorPrototype::NativeErrorPrototype):
- (KJS::NativeErrorConstructor::NativeErrorConstructor):
- (KJS::NativeErrorConstructor::construct):
- * kjs/identifier.h:
- * kjs/internal.cpp:
- (KJS::StringObject::create):
- (KJS::JSString::lengthGetter):
- (KJS::JSString::indexGetter):
- (KJS::JSString::indexNumericPropertyGetter):
- * kjs/interpreter.cpp:
- * kjs/list.cpp:
- (KJS::ArgList::slowAppend):
- * kjs/list.h:
- * kjs/lookup.h:
- (KJS::staticFunctionGetter):
- (KJS::cacheGlobalObject):
- * kjs/nodes.cpp:
- (KJS::Node::emitThrowError):
- (KJS::StringNode::emitCode):
- (KJS::ArrayNode::emitCode):
- (KJS::FuncDeclNode::makeFunction):
- (KJS::FuncExprNode::makeFunction):
- * kjs/nodes.h:
- * kjs/object_object.cpp:
- (KJS::ObjectPrototype::ObjectPrototype):
- (KJS::objectProtoFuncToLocaleString):
- (KJS::objectProtoFuncToString):
- (KJS::ObjectConstructor::ObjectConstructor):
- (KJS::ObjectConstructor::construct):
- * kjs/protect.h:
- (KJS::gcProtect):
- (KJS::gcUnprotect):
- * kjs/string_object.cpp:
- (KJS::StringObject::StringObject):
- (KJS::StringPrototype::StringPrototype):
- (KJS::replace):
- (KJS::stringProtoFuncCharAt):
- (KJS::stringProtoFuncCharCodeAt):
- (KJS::stringProtoFuncConcat):
- (KJS::stringProtoFuncIndexOf):
- (KJS::stringProtoFuncLastIndexOf):
- (KJS::stringProtoFuncMatch):
- (KJS::stringProtoFuncSearch):
- (KJS::stringProtoFuncReplace):
- (KJS::stringProtoFuncSlice):
- (KJS::stringProtoFuncSplit):
- (KJS::stringProtoFuncSubstr):
- (KJS::stringProtoFuncSubstring):
- (KJS::stringProtoFuncToLowerCase):
- (KJS::stringProtoFuncToUpperCase):
- (KJS::stringProtoFuncToLocaleLowerCase):
- (KJS::stringProtoFuncToLocaleUpperCase):
- (KJS::stringProtoFuncLocaleCompare):
- (KJS::stringProtoFuncBig):
- (KJS::stringProtoFuncSmall):
- (KJS::stringProtoFuncBlink):
- (KJS::stringProtoFuncBold):
- (KJS::stringProtoFuncFixed):
- (KJS::stringProtoFuncItalics):
- (KJS::stringProtoFuncStrike):
- (KJS::stringProtoFuncSub):
- (KJS::stringProtoFuncSup):
- (KJS::stringProtoFuncFontcolor):
- (KJS::stringProtoFuncFontsize):
- (KJS::stringProtoFuncAnchor):
- (KJS::stringProtoFuncLink):
- (KJS::StringConstructor::StringConstructor):
- (KJS::StringConstructor::construct):
- (KJS::StringConstructor::callAsFunction):
- (KJS::StringConstructorFunction::StringConstructorFunction):
- (KJS::StringConstructorFunction::callAsFunction):
- * kjs/string_object.h:
- (KJS::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined):
- * kjs/ustring.h:
- Updated for the above changes.
-
-2008-06-17 Timothy Hatcher <timothy@apple.com>
-
- Added a type to DebuggerCallFrame so the under interface can
- distinguish anonymous functions and program call frames.
-
- https://bugs.webkit.org/show_bug.cgi?id=19585
-
- Reviewed by Geoff Garen.
-
- * JavaScriptCore.exp: Export the DebuggerCallFrame::type symbol.
- * kjs/DebuggerCallFrame.cpp:
- (KJS::DebuggerCallFrame::type): Added.
- * kjs/DebuggerCallFrame.h:
-
-2008-06-17 Eric Seidel <eric@webkit.org>
-
- Reviewed by Tim H.
-
- Remove bogus ASSERT which tripped every time for those who use PAC files.
-
- * kjs/Parser.cpp:
- (KJS::Parser::parse):
-
-2008-06-17 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Geoff.
-
- <rdar://problem/5951534> JSProfiler: Don't profile console.profile()
- or console.profileEnd()
-
- * profiler/Profile.cpp:
- (KJS::Profile::stopProfiling): Moved the creation of the (idle) node to
- the Profile (not ProfileNode). This makes sense since the Profile
- should be the one to modify the profile tree. Also each stopProfiling()
- does not need to check if it's the head node anymore. Also fixed an
- oddity where I was using willExecute to create the node.
- (KJS::Profile::removeProfileStart): Removes the call to console.profile
- that started this profile.
- (KJS::Profile::removeProfileEnd): Removes the call to console.profileEnd
- that ended this profile.
- * profiler/Profile.h:
- * profiler/ProfileNode.cpp: Moved the creation of the (idle) node to
- the Profile object.
- (KJS::ProfileNode::stopProfiling):
- * profiler/ProfileNode.h: Added some helper functions and whitespace to
- facilitate readability and the removal of profile() and profileEnd()
- from the Profile tree.
- (KJS::CallIdentifier::operator const char* ):
- (KJS::ProfileNode::firstChild):
- (KJS::ProfileNode::lastChild):
- (KJS::ProfileNode::removeChild):
- (KJS::ProfileNode::toString):
-
-2008-06-17 Ariya Hidayat <ariya.hidayat@trolltech.com>
-
- Rubber stamped by Adam Roben.
-
- Include JSGlobalObject.h to fix the build.
-
- * kjs/ScopeChain.cpp:
-
-2008-06-17 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Reduce code duplication in emitReadModifyAssignment().
-
- * kjs/nodes.cpp:
- (KJS::emitReadModifyAssignment):
-
-2008-06-17 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Sort includes alphabetically.
-
- * kjs/nodes.cpp:
-
-2008-06-16 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Bug 19596: LEAK: Gmail leaks SegmentedVector<RegisterID>
- <https://bugs.webkit.org/show_bug.cgi?id=19596>
-
- When growing SegmentedVector, we start adding segments at the position
- of the last segment, overwriting it. The destructor frees allocated
- segments starting at the segment of index 1, because the segment of
- index 0 is assumed to be the initial inline segment. This causes a leak
- of the segment that is referenced by index 0. Modifying grow() so that
- it starts adding segments at the position after the last segment fixes
- the leak.
-
- Since the initial segment is a special case in the lookup code, this
- bug never manifested itself via incorrect results.
-
- * VM/SegmentedVector.h:
- (KJS::SegmentedVector::grow):
-
-2008-06-16 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Alexey.
-
- - removed nearly unused types.h and LocalStorageEntry.h headers
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/ExecState.h:
- * kjs/LocalStorageEntry.h: Removed.
- * kjs/RegExpObject.cpp:
- * kjs/error_object.cpp:
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- * kjs/types.h: Removed.
-
-2008-06-16 Alp Toker <alp@nuanti.com>
-
- Rubber-stamped by Geoff.
-
- Change c++ to c in minidom and testapi emacs mode line comments.
-
- * API/Node.h:
- * API/NodeList.c:
- * API/NodeList.h:
- * API/testapi.c:
-
-2008-06-16 Alexey Proskuryakov <ap@webkit.org>
-
- Trying to fix Windows build.
-
- * kjs/PropertyNameArray.h:
- * kjs/identifier.cpp:
- Include ExecState.h
-
-2008-06-16 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Slight cleanup to the SymbolTableEntry class.
-
- Renamed isEmpty to isNull, since we usually use "empty" to mean "holds
- the valid, empty value", and "null" to mean "holds no value".
-
- Changed an "== 0" to a "!", to match our style guidelines.
-
- Added some ASSERTs to verify the (possibly questionable) assumption that
- all register indexes will have their high two bits set. Also clarified a
- comment to make that assumption clear.
-
-2008-06-16 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Initialize functionQueueMutex in a safe manner.
-
- * wtf/MainThread.cpp:
- (WTF::functionQueueMutex): Made it an AtomicallyInitializedStatic.
-
- (WTF::dispatchFunctionsFromMainThread):
- (WTF::setMainThreadCallbacksPaused):
- Assert that the current thread is main, meaning that the callbacksPaused static can be
- accessed.
-
-2008-06-16 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoff Garen.
-
- Make Identifier construction use an explicitly passed IdentifierTable.
-
- No change on SunSpider total.
-
- * API/JSCallbackObjectFunctions.h:
- (KJS::::getOwnPropertySlot):
- (KJS::::put):
- (KJS::::deleteProperty):
- (KJS::::getPropertyNames):
- * API/JSObjectRef.cpp:
- (JSObjectMakeFunctionWithCallback):
- (JSObjectMakeFunction):
- (JSObjectHasProperty):
- (JSObjectGetProperty):
- (JSObjectSetProperty):
- (JSObjectDeleteProperty):
- (OpaqueJSPropertyNameArray::OpaqueJSPropertyNameArray):
- (JSObjectCopyPropertyNames):
- * JavaScriptCore.exp:
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::CodeGenerator):
- (KJS::CodeGenerator::registerForLocal):
- (KJS::CodeGenerator::isLocal):
- (KJS::CodeGenerator::addConstant):
- (KJS::CodeGenerator::findScopedProperty):
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::globalData):
- (KJS::CodeGenerator::propertyNames):
- * VM/JSPropertyNameIterator.cpp:
- (KJS::JSPropertyNameIterator::create):
- * VM/Machine.cpp:
- (KJS::Machine::throwException):
- (KJS::Machine::privateExecute):
- * kjs/ArrayPrototype.cpp:
- (KJS::ArrayConstructor::ArrayConstructor):
- * kjs/BooleanObject.cpp:
- (KJS::BooleanConstructor::BooleanConstructor):
- * kjs/FunctionPrototype.cpp:
- (KJS::FunctionConstructor::FunctionConstructor):
- (KJS::FunctionConstructor::construct):
- * kjs/JSArray.cpp:
- (KJS::JSArray::inlineGetOwnPropertySlot):
- (KJS::JSArray::put):
- (KJS::JSArray::deleteProperty):
- (KJS::JSArray::getPropertyNames):
- * kjs/JSFunction.cpp:
- (KJS::Arguments::Arguments):
- * kjs/JSGlobalData.cpp:
- (KJS::JSGlobalData::JSGlobalData):
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::reset):
- * kjs/JSObject.cpp:
- (KJS::JSObject::getOwnPropertySlot):
- (KJS::JSObject::put):
- (KJS::JSObject::putWithAttributes):
- (KJS::JSObject::deleteProperty):
- (KJS::JSObject::findPropertyHashEntry):
- (KJS::JSObject::getPropertyNames):
- (KJS::Error::create):
- * kjs/JSVariableObject.cpp:
- (KJS::JSVariableObject::getPropertyNames):
- * kjs/NumberObject.cpp:
- (KJS::NumberConstructor::NumberConstructor):
- * kjs/PropertyNameArray.cpp:
- (KJS::PropertyNameArray::add):
- * kjs/PropertyNameArray.h:
- (KJS::PropertyNameArray::PropertyNameArray):
- (KJS::PropertyNameArray::addKnownUnique):
- * kjs/PropertySlot.h:
- (KJS::PropertySlot::getValue):
- * kjs/RegExpObject.cpp:
- (KJS::RegExpConstructor::RegExpConstructor):
- * kjs/ScopeChain.cpp:
- (KJS::ScopeChainNode::print):
- * kjs/Shell.cpp:
- (GlobalObject::GlobalObject):
- * kjs/date_object.cpp:
- (KJS::DateConstructor::DateConstructor):
- * kjs/error_object.cpp:
- (KJS::ErrorConstructor::ErrorConstructor):
- (KJS::NativeErrorConstructor::NativeErrorConstructor):
- * kjs/grammar.y:
- * kjs/identifier.cpp:
- (KJS::Identifier::add):
- (KJS::Identifier::addSlowCase):
- * kjs/identifier.h:
- (KJS::Identifier::Identifier):
- (KJS::Identifier::from):
- (KJS::Identifier::equal):
- (KJS::Identifier::add):
- (KJS::operator==):
- (KJS::operator!=):
- * kjs/internal.cpp:
- (KJS::JSString::getOwnPropertySlot):
- * kjs/lexer.cpp:
- (KJS::Lexer::Lexer):
- (KJS::Lexer::lex):
- (KJS::Lexer::makeIdentifier):
- * kjs/lexer.h:
- * kjs/lookup.cpp:
- (KJS::HashTable::createTable):
- * kjs/lookup.h:
- (KJS::HashTable::initializeIfNeeded):
- (KJS::HashTable::entry):
- (KJS::getStaticPropertySlot):
- (KJS::getStaticFunctionSlot):
- (KJS::getStaticValueSlot):
- (KJS::lookupPut):
- * kjs/object_object.cpp:
- (KJS::objectProtoFuncHasOwnProperty):
- (KJS::objectProtoFuncDefineGetter):
- (KJS::objectProtoFuncDefineSetter):
- (KJS::objectProtoFuncLookupGetter):
- (KJS::objectProtoFuncLookupSetter):
- (KJS::objectProtoFuncPropertyIsEnumerable):
- (KJS::ObjectConstructor::ObjectConstructor):
- * kjs/string_object.cpp:
- (KJS::StringObject::getOwnPropertySlot):
- (KJS::StringObject::getPropertyNames):
- (KJS::StringConstructor::StringConstructor):
- Just pass ExecState or JSGlobalData everywhere. Identifier construction is now always
- explicit.
-
- * kjs/nodes.cpp: (KJS::RegExpNode::emitCode): Here, Identifier was created from a non-literal
- char*, which was incorrect, as that uses the pointer value as a key.
-
-2008-06-16 Thiago Macieira <tjmaciei@trolltech.com>
-
- Reviewed by Darin.
-
- https://bugs.webkit.org/show_bug.cgi?id=19577
-
- Fix compilation in C++ environments where C99 headers are not present
-
- The stdbool.h header is a C99 feature, defining the "_Bool" type as well as the
- "true" and "false" constants. But it's completely unnecessary in C++ as the
- language already defines the "bool" type and its two values.
-
- * API/JSBase.h:
- * API/JSContextRef.h:
- * API/JSObjectRef.h:
- * API/JSStringRef.h:
- * API/JSValueRef.h:
-
-2008-06-16 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by John.
-
- <rdar://problem/6012509> JSProfiler: %s are incorrect if you exclude a
- top level node like (idle)
-
- * profiler/Profile.cpp:
- (KJS::Profile::focus):
- (KJS::Profile::exclude): Subtract the selfTime from the totalTime of the
- head since its self time will only be non-zero when one of its children
- were excluded. Since the head's totalTime is used to calculate %s when
- its totalTime is the same as the sum of all its visible childrens' times
- their %s will sum to 100%.
-
-2008-06-16 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam Weinig.
-
- <rdar://problem/5969992> JSProfiler: Remove the recursion limit in the profiler.
-
- * profiler/Profile.cpp:
- (KJS::Profile::willExecute):
-
-2008-06-16 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam.
-
- <rdar://problem/5969992> JSProfiler: Remove the recursion limit in the
- profiler.
- - Remove the last of the uses of recursion in the profiler.
-
- * JavaScriptCore.exp: Export the new function's signature.
- * profiler/Profile.cpp:
- (KJS::calculateVisibleTotalTime): Added a new static method for
- recalculating the visibleTotalTime of methods after focus has changed
- which are visible.
- (KJS::stopProfiling):
- (KJS::Profile::focus): Implemented focus without recursion.
- * profiler/Profile.h: Moved implementation into the definition file.
- * profiler/ProfileNode.cpp:
- (KJS::ProfileNode::traverseNextNodePreOrder): Added an argument for
- whether or not to process the children nodes, this allows focus to skip
- sub trees which have been set as not visible.
- (KJS::ProfileNode::calculateVisibleTotalTime): This function set's a
- node's total visible time to the sum of its self time and its children's
- total times.
- (KJS::ProfileNode::focus): Implemented focus without recursion.
- * profiler/ProfileNode.h:
- (KJS::CallIdentifier::operator!= ):
- (KJS::ProfileNode::setActualTotalTime): Expanded setting the total time
- so that focus could modify only the visible total time.
- (KJS::ProfileNode::setVisibleTotalTime):
-
-2008-06-16 Christian Dywan <christian@twotoasts.de>
-
- Reviewed by Sam.
-
- https://bugs.webkit.org/show_bug.cgi?id=19552
- JavaScriptCore headers use C++ style comments
-
- Replace all C++ style comments with C style multiline
- comments and remove all "mode" lines.
-
- * API/JSBase.h:
- * API/JSClassRef.h:
- * API/JSContextRef.h:
- * API/JSObjectRef.h:
- * API/JSStringRef.h:
- * API/JSStringRefBSTR.h:
- * API/JSStringRefCF.h:
- * API/JSValueRef.h:
- * API/JavaScript.h:
- * API/JavaScriptCore.h:
-
-2008-06-16 Christian Dywan <christian@twotoasts.de>
-
- Reviewed by Sam.
-
- https://bugs.webkit.org/show_bug.cgi?id=19557
- (JavaScriptCore) minidom uses C++ style comments
-
- Use only C style comments in minidom sources
-
- * API/JSNode.c:
- (JSNode_appendChild):
- (JSNode_removeChild):
- * API/JSNode.h:
- * API/JSNodeList.c:
- (JSNodeList_getProperty):
- * API/JSNodeList.h:
- * API/Node.c:
- * API/Node.h:
- * API/NodeList.c:
- (NodeList_new):
- (NodeList_item):
- * API/NodeList.h:
- * API/minidom.c:
- (createStringWithContentsOfFile):
- * wtf/Assertions.h:
- * wtf/UnusedParam.h:
-
-2008-06-16 Adriaan de Groot <groot@kde.org>
-
- Reviewed by Simon.
-
- Fix compilation on Solaris
-
- On some systems, munmap takes a char* instead of a void* (contrary to POSIX and
- Single Unix Specification). Since you can always convert from char* to void*
- but not vice-versa, do the casting to char*.
-
- * kjs/collector.cpp:
- (KJS::allocateBlock):
- (KJS::freeBlock):
-
-2008-06-16 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Make a UnaryOpNode class to reduce boilerplate code for UnaryPlusNode,
- NegateNode, BitwiseNotNode, and LogicalNotNode.
-
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::emitToJSNumber):
- * kjs/nodes.cpp:
- (KJS::UnaryOpNode::emitCode):
- * kjs/nodes.h:
- (KJS::UnaryOpNode::UnaryOpNode):
- (KJS::UnaryPlusNode::):
- (KJS::NegateNode::):
- (KJS::NegateNode::precedence):
- (KJS::BitwiseNotNode::):
- (KJS::BitwiseNotNode::precedence):
- (KJS::LogicalNotNode::):
- (KJS::LogicalNotNode::precedence):
-
-2008-06-16 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Gtk build fix
-
- * GNUmakefile.am:
-
-2008-06-15 Darin Adler <darin@apple.com>
-
- - rename KJS::List to KJS::ArgList
-
- * API/JSCallbackConstructor.cpp:
- (KJS::JSCallbackConstructor::construct):
- * API/JSCallbackConstructor.h:
- * API/JSCallbackFunction.cpp:
- (KJS::JSCallbackFunction::callAsFunction):
- * API/JSCallbackFunction.h:
- * API/JSCallbackObject.h:
- * API/JSCallbackObjectFunctions.h:
- (KJS::::construct):
- (KJS::::callAsFunction):
- * API/JSObjectRef.cpp:
- (JSObjectMakeFunction):
- (JSObjectCallAsFunction):
- (JSObjectCallAsConstructor):
- * JavaScriptCore.exp:
- * VM/Machine.cpp:
- (KJS::Machine::execute):
- (KJS::Machine::privateExecute):
- * VM/Machine.h:
- * kjs/ArrayPrototype.cpp:
- (KJS::arrayProtoFuncToString):
- (KJS::arrayProtoFuncToLocaleString):
- (KJS::arrayProtoFuncJoin):
- (KJS::arrayProtoFuncConcat):
- (KJS::arrayProtoFuncPop):
- (KJS::arrayProtoFuncPush):
- (KJS::arrayProtoFuncReverse):
- (KJS::arrayProtoFuncShift):
- (KJS::arrayProtoFuncSlice):
- (KJS::arrayProtoFuncSort):
- (KJS::arrayProtoFuncSplice):
- (KJS::arrayProtoFuncUnShift):
- (KJS::arrayProtoFuncFilter):
- (KJS::arrayProtoFuncMap):
- (KJS::arrayProtoFuncEvery):
- (KJS::arrayProtoFuncForEach):
- (KJS::arrayProtoFuncSome):
- (KJS::arrayProtoFuncIndexOf):
- (KJS::arrayProtoFuncLastIndexOf):
- (KJS::ArrayConstructor::construct):
- (KJS::ArrayConstructor::callAsFunction):
- * kjs/ArrayPrototype.h:
- * kjs/BooleanObject.cpp:
- (KJS::booleanProtoFuncToString):
- (KJS::booleanProtoFuncValueOf):
- (KJS::BooleanConstructor::construct):
- (KJS::BooleanConstructor::callAsFunction):
- * kjs/BooleanObject.h:
- * kjs/CommonIdentifiers.h:
- * kjs/ExecState.h:
- (KJS::ExecState::emptyList):
- * kjs/FunctionPrototype.cpp:
- (KJS::FunctionPrototype::callAsFunction):
- (KJS::functionProtoFuncToString):
- (KJS::functionProtoFuncApply):
- (KJS::functionProtoFuncCall):
- (KJS::FunctionConstructor::construct):
- (KJS::FunctionConstructor::callAsFunction):
- * kjs/FunctionPrototype.h:
- * kjs/JSActivation.cpp:
- (KJS::JSActivation::createArgumentsObject):
- * kjs/JSArray.cpp:
- (KJS::JSArray::JSArray):
- (KJS::AVLTreeAbstractorForArrayCompare::compare_key_key):
- * kjs/JSArray.h:
- * kjs/JSFunction.cpp:
- (KJS::JSFunction::callAsFunction):
- (KJS::JSFunction::construct):
- (KJS::IndexToNameMap::IndexToNameMap):
- (KJS::Arguments::Arguments):
- (KJS::encode):
- (KJS::decode):
- (KJS::globalFuncEval):
- (KJS::globalFuncParseInt):
- (KJS::globalFuncParseFloat):
- (KJS::globalFuncIsNaN):
- (KJS::globalFuncIsFinite):
- (KJS::globalFuncDecodeURI):
- (KJS::globalFuncDecodeURIComponent):
- (KJS::globalFuncEncodeURI):
- (KJS::globalFuncEncodeURIComponent):
- (KJS::globalFuncEscape):
- (KJS::globalFuncUnescape):
- (KJS::globalFuncKJSPrint):
- (KJS::PrototypeFunction::callAsFunction):
- (KJS::PrototypeReflexiveFunction::callAsFunction):
- * kjs/JSFunction.h:
- * kjs/JSGlobalData.h:
- * kjs/JSImmediate.cpp:
- (KJS::JSImmediate::toObject):
- * kjs/JSNotAnObject.cpp:
- (KJS::JSNotAnObject::construct):
- (KJS::JSNotAnObject::callAsFunction):
- * kjs/JSNotAnObject.h:
- * kjs/JSObject.cpp:
- (KJS::JSObject::put):
- (KJS::JSObject::construct):
- (KJS::JSObject::callAsFunction):
- (KJS::Error::create):
- * kjs/JSObject.h:
- * kjs/MathObject.cpp:
- (KJS::mathProtoFuncAbs):
- (KJS::mathProtoFuncACos):
- (KJS::mathProtoFuncASin):
- (KJS::mathProtoFuncATan):
- (KJS::mathProtoFuncATan2):
- (KJS::mathProtoFuncCeil):
- (KJS::mathProtoFuncCos):
- (KJS::mathProtoFuncExp):
- (KJS::mathProtoFuncFloor):
- (KJS::mathProtoFuncLog):
- (KJS::mathProtoFuncMax):
- (KJS::mathProtoFuncMin):
- (KJS::mathProtoFuncPow):
- (KJS::mathProtoFuncRandom):
- (KJS::mathProtoFuncRound):
- (KJS::mathProtoFuncSin):
- (KJS::mathProtoFuncSqrt):
- (KJS::mathProtoFuncTan):
- * kjs/MathObject.h:
- * kjs/NumberObject.cpp:
- (KJS::numberProtoFuncToString):
- (KJS::numberProtoFuncToLocaleString):
- (KJS::numberProtoFuncValueOf):
- (KJS::numberProtoFuncToFixed):
- (KJS::numberProtoFuncToExponential):
- (KJS::numberProtoFuncToPrecision):
- (KJS::NumberConstructor::construct):
- (KJS::NumberConstructor::callAsFunction):
- * kjs/NumberObject.h:
- * kjs/RegExpObject.cpp:
- (KJS::regExpProtoFuncTest):
- (KJS::regExpProtoFuncExec):
- (KJS::regExpProtoFuncCompile):
- (KJS::regExpProtoFuncToString):
- (KJS::RegExpObject::match):
- (KJS::RegExpObject::test):
- (KJS::RegExpObject::exec):
- (KJS::RegExpObject::callAsFunction):
- (KJS::RegExpConstructor::construct):
- (KJS::RegExpConstructor::callAsFunction):
- * kjs/RegExpObject.h:
- * kjs/Shell.cpp:
- (functionPrint):
- (functionDebug):
- (functionGC):
- (functionVersion):
- (functionRun):
- (functionLoad):
- (functionReadline):
- (functionQuit):
- * kjs/collector.cpp:
- (KJS::Collector::collect):
- * kjs/collector.h:
- (KJS::Collector::markListSet):
- * kjs/date_object.cpp:
- (KJS::formatLocaleDate):
- (KJS::fillStructuresUsingTimeArgs):
- (KJS::fillStructuresUsingDateArgs):
- (KJS::DateConstructor::construct):
- (KJS::DateConstructor::callAsFunction):
- (KJS::DateFunction::callAsFunction):
- (KJS::dateProtoFuncToString):
- (KJS::dateProtoFuncToUTCString):
- (KJS::dateProtoFuncToDateString):
- (KJS::dateProtoFuncToTimeString):
- (KJS::dateProtoFuncToLocaleString):
- (KJS::dateProtoFuncToLocaleDateString):
- (KJS::dateProtoFuncToLocaleTimeString):
- (KJS::dateProtoFuncValueOf):
- (KJS::dateProtoFuncGetTime):
- (KJS::dateProtoFuncGetFullYear):
- (KJS::dateProtoFuncGetUTCFullYear):
- (KJS::dateProtoFuncToGMTString):
- (KJS::dateProtoFuncGetMonth):
- (KJS::dateProtoFuncGetUTCMonth):
- (KJS::dateProtoFuncGetDate):
- (KJS::dateProtoFuncGetUTCDate):
- (KJS::dateProtoFuncGetDay):
- (KJS::dateProtoFuncGetUTCDay):
- (KJS::dateProtoFuncGetHours):
- (KJS::dateProtoFuncGetUTCHours):
- (KJS::dateProtoFuncGetMinutes):
- (KJS::dateProtoFuncGetUTCMinutes):
- (KJS::dateProtoFuncGetSeconds):
- (KJS::dateProtoFuncGetUTCSeconds):
- (KJS::dateProtoFuncGetMilliSeconds):
- (KJS::dateProtoFuncGetUTCMilliseconds):
- (KJS::dateProtoFuncGetTimezoneOffset):
- (KJS::dateProtoFuncSetTime):
- (KJS::setNewValueFromTimeArgs):
- (KJS::setNewValueFromDateArgs):
- (KJS::dateProtoFuncSetMilliSeconds):
- (KJS::dateProtoFuncSetUTCMilliseconds):
- (KJS::dateProtoFuncSetSeconds):
- (KJS::dateProtoFuncSetUTCSeconds):
- (KJS::dateProtoFuncSetMinutes):
- (KJS::dateProtoFuncSetUTCMinutes):
- (KJS::dateProtoFuncSetHours):
- (KJS::dateProtoFuncSetUTCHours):
- (KJS::dateProtoFuncSetDate):
- (KJS::dateProtoFuncSetUTCDate):
- (KJS::dateProtoFuncSetMonth):
- (KJS::dateProtoFuncSetUTCMonth):
- (KJS::dateProtoFuncSetFullYear):
- (KJS::dateProtoFuncSetUTCFullYear):
- (KJS::dateProtoFuncSetYear):
- (KJS::dateProtoFuncGetYear):
- * kjs/date_object.h:
- * kjs/debugger.h:
- * kjs/error_object.cpp:
- (KJS::errorProtoFuncToString):
- (KJS::ErrorConstructor::construct):
- (KJS::ErrorConstructor::callAsFunction):
- (KJS::NativeErrorConstructor::construct):
- (KJS::NativeErrorConstructor::callAsFunction):
- * kjs/error_object.h:
- * kjs/internal.cpp:
- (KJS::JSNumberCell::toObject):
- (KJS::JSNumberCell::toThisObject):
- * kjs/list.cpp:
- (KJS::ArgList::getSlice):
- (KJS::ArgList::markLists):
- (KJS::ArgList::slowAppend):
- * kjs/list.h:
- (KJS::ArgList::ArgList):
- (KJS::ArgList::~ArgList):
- * kjs/object_object.cpp:
- (KJS::objectProtoFuncValueOf):
- (KJS::objectProtoFuncHasOwnProperty):
- (KJS::objectProtoFuncIsPrototypeOf):
- (KJS::objectProtoFuncDefineGetter):
- (KJS::objectProtoFuncDefineSetter):
- (KJS::objectProtoFuncLookupGetter):
- (KJS::objectProtoFuncLookupSetter):
- (KJS::objectProtoFuncPropertyIsEnumerable):
- (KJS::objectProtoFuncToLocaleString):
- (KJS::objectProtoFuncToString):
- (KJS::ObjectConstructor::construct):
- (KJS::ObjectConstructor::callAsFunction):
- * kjs/object_object.h:
- * kjs/string_object.cpp:
- (KJS::replace):
- (KJS::stringProtoFuncToString):
- (KJS::stringProtoFuncValueOf):
- (KJS::stringProtoFuncCharAt):
- (KJS::stringProtoFuncCharCodeAt):
- (KJS::stringProtoFuncConcat):
- (KJS::stringProtoFuncIndexOf):
- (KJS::stringProtoFuncLastIndexOf):
- (KJS::stringProtoFuncMatch):
- (KJS::stringProtoFuncSearch):
- (KJS::stringProtoFuncReplace):
- (KJS::stringProtoFuncSlice):
- (KJS::stringProtoFuncSplit):
- (KJS::stringProtoFuncSubstr):
- (KJS::stringProtoFuncSubstring):
- (KJS::stringProtoFuncToLowerCase):
- (KJS::stringProtoFuncToUpperCase):
- (KJS::stringProtoFuncToLocaleLowerCase):
- (KJS::stringProtoFuncToLocaleUpperCase):
- (KJS::stringProtoFuncLocaleCompare):
- (KJS::stringProtoFuncBig):
- (KJS::stringProtoFuncSmall):
- (KJS::stringProtoFuncBlink):
- (KJS::stringProtoFuncBold):
- (KJS::stringProtoFuncFixed):
- (KJS::stringProtoFuncItalics):
- (KJS::stringProtoFuncStrike):
- (KJS::stringProtoFuncSub):
- (KJS::stringProtoFuncSup):
- (KJS::stringProtoFuncFontcolor):
- (KJS::stringProtoFuncFontsize):
- (KJS::stringProtoFuncAnchor):
- (KJS::stringProtoFuncLink):
- (KJS::StringConstructor::construct):
- (KJS::StringConstructor::callAsFunction):
- (KJS::StringConstructorFunction::callAsFunction):
- * kjs/string_object.h:
-
-2008-06-15 Darin Adler <darin@apple.com>
-
- - new names for more JavaScriptCore files
-
- * API/JSCallbackFunction.cpp:
- * API/JSObjectRef.cpp:
- * DerivedSources.make:
- * GNUmakefile.am:
- * JavaScriptCore.exp:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/Machine.cpp:
- * kjs/AllInOneFile.cpp:
- * kjs/ArrayPrototype.cpp: Copied from JavaScriptCore/kjs/array_object.cpp.
- * kjs/ArrayPrototype.h: Copied from JavaScriptCore/kjs/array_object.h.
- * kjs/BooleanObject.cpp: Copied from JavaScriptCore/kjs/bool_object.cpp.
- * kjs/BooleanObject.h: Copied from JavaScriptCore/kjs/bool_object.h.
- * kjs/ExecState.cpp:
- * kjs/ExecState.h:
- * kjs/FunctionPrototype.cpp: Copied from JavaScriptCore/kjs/function_object.cpp.
- * kjs/FunctionPrototype.h: Copied from JavaScriptCore/kjs/function_object.h.
- * kjs/JSArray.cpp: Copied from JavaScriptCore/kjs/array_instance.cpp.
- * kjs/JSArray.h: Copied from JavaScriptCore/kjs/array_instance.h.
- * kjs/JSFunction.cpp:
- * kjs/JSFunction.h:
- * kjs/JSGlobalObject.cpp:
- * kjs/JSImmediate.cpp:
- * kjs/JSObject.h:
- * kjs/JSString.h:
- * kjs/JSValue.h:
- * kjs/JSVariableObject.cpp:
- * kjs/MathObject.cpp: Copied from JavaScriptCore/kjs/math_object.cpp.
- * kjs/MathObject.h: Copied from JavaScriptCore/kjs/math_object.h.
- * kjs/NumberObject.cpp: Copied from JavaScriptCore/kjs/number_object.cpp.
- * kjs/NumberObject.h: Copied from JavaScriptCore/kjs/number_object.h.
- * kjs/PropertyMap.cpp: Copied from JavaScriptCore/kjs/property_map.cpp.
- * kjs/PropertyMap.h: Copied from JavaScriptCore/kjs/property_map.h.
- * kjs/PropertySlot.cpp: Copied from JavaScriptCore/kjs/property_slot.cpp.
- * kjs/PropertySlot.h: Copied from JavaScriptCore/kjs/property_slot.h.
- * kjs/RegExpObject.cpp: Copied from JavaScriptCore/kjs/regexp_object.cpp.
- * kjs/RegExpObject.h: Copied from JavaScriptCore/kjs/regexp_object.h.
- * kjs/ScopeChain.cpp: Copied from JavaScriptCore/kjs/scope_chain.cpp.
- * kjs/ScopeChain.h: Copied from JavaScriptCore/kjs/scope_chain.h.
- * kjs/ScopeChainMark.h: Copied from JavaScriptCore/kjs/scope_chain_mark.h.
- * kjs/Shell.cpp:
- * kjs/array_instance.cpp: Removed.
- * kjs/array_instance.h: Removed.
- * kjs/array_object.cpp: Removed.
- * kjs/array_object.h: Removed.
- * kjs/bool_object.cpp: Removed.
- * kjs/bool_object.h: Removed.
- * kjs/error_object.h:
- * kjs/function_object.cpp: Removed.
- * kjs/function_object.h: Removed.
- * kjs/internal.cpp:
- * kjs/math_object.cpp: Removed.
- * kjs/math_object.h: Removed.
- * kjs/nodes.cpp:
- * kjs/number_object.cpp: Removed.
- * kjs/number_object.h: Removed.
- * kjs/object_object.cpp:
- * kjs/property_map.cpp: Removed.
- * kjs/property_map.h: Removed.
- * kjs/property_slot.cpp: Removed.
- * kjs/property_slot.h: Removed.
- * kjs/regexp_object.cpp: Removed.
- * kjs/regexp_object.h: Removed.
- * kjs/scope_chain.cpp: Removed.
- * kjs/scope_chain.h: Removed.
- * kjs/scope_chain_mark.h: Removed.
- * kjs/string_object.cpp:
- * kjs/string_object.h:
-
-2008-06-15 Darin Adler <darin@apple.com>
-
- - new names for a few key JavaScriptCore files
-
- * API/JSBase.cpp:
- * API/JSCallbackConstructor.h:
- * API/JSCallbackFunction.cpp:
- * API/JSCallbackFunction.h:
- * API/JSCallbackObject.h:
- * API/JSCallbackObjectFunctions.h:
- * API/JSClassRef.h:
- * API/JSContextRef.cpp:
- * API/JSObjectRef.cpp:
- * API/JSStringRef.cpp:
- * API/JSStringRefCF.cpp:
- * API/JSValueRef.cpp:
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/CodeBlock.cpp:
- * VM/CodeGenerator.cpp:
- * VM/ExceptionHelpers.cpp:
- * VM/ExceptionHelpers.h:
- * VM/JSPropertyNameIterator.cpp:
- * VM/JSPropertyNameIterator.h:
- * VM/Machine.cpp:
- * kjs/AllInOneFile.cpp:
- * kjs/DateMath.cpp:
- * kjs/DebuggerCallFrame.cpp:
- * kjs/ExecState.cpp:
- * kjs/JSActivation.cpp:
- * kjs/JSFunction.cpp: Copied from JavaScriptCore/kjs/function.cpp.
- * kjs/JSFunction.h: Copied from JavaScriptCore/kjs/function.h.
- * kjs/JSImmediate.cpp:
- * kjs/JSNotAnObject.h:
- * kjs/JSObject.cpp: Copied from JavaScriptCore/kjs/object.cpp.
- * kjs/JSObject.h: Copied from JavaScriptCore/kjs/object.h.
- * kjs/JSString.h: Copied from JavaScriptCore/kjs/internal.h.
- * kjs/JSValue.cpp: Copied from JavaScriptCore/kjs/value.cpp.
- * kjs/JSValue.h: Copied from JavaScriptCore/kjs/value.h.
- * kjs/JSVariableObject.h:
- * kjs/JSWrapperObject.h:
- * kjs/Shell.cpp:
- * kjs/SymbolTable.h:
- * kjs/array_instance.h:
- * kjs/collector.cpp:
- * kjs/date_object.cpp:
- * kjs/date_object.h:
- * kjs/error_object.cpp:
- * kjs/function.cpp: Removed.
- * kjs/function.h: Removed.
- * kjs/function_object.cpp:
- * kjs/function_object.h:
- * kjs/grammar.y:
- * kjs/internal.cpp:
- * kjs/internal.h: Removed.
- * kjs/lexer.cpp:
- * kjs/list.h:
- * kjs/lookup.h:
- * kjs/nodes.h:
- * kjs/object.cpp: Removed.
- * kjs/object.h: Removed.
- * kjs/object_object.h:
- * kjs/operations.cpp:
- * kjs/property_map.cpp:
- * kjs/property_slot.cpp:
- * kjs/property_slot.h:
- * kjs/protect.h:
- * kjs/regexp_object.cpp:
- * kjs/scope_chain.cpp:
- * kjs/string_object.h:
- * kjs/ustring.cpp:
- * kjs/value.cpp: Removed.
- * kjs/value.h: Removed.
- * profiler/Profile.cpp:
- * profiler/Profiler.cpp:
-
-2008-06-15 Darin Adler <darin@apple.com>
-
- Rubber stamped by Sam.
-
- - cut down on confusing uses of "Object" and "Imp" in
- JavaScriptCore class names
-
- * API/JSCallbackFunction.cpp:
- (KJS::JSCallbackFunction::JSCallbackFunction):
- * API/JSCallbackFunction.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * kjs/ExecState.h:
- (KJS::ExecState::regExpTable):
- (KJS::ExecState::regExpConstructorTable):
- * kjs/JSGlobalData.cpp:
- (KJS::JSGlobalData::JSGlobalData):
- (KJS::JSGlobalData::~JSGlobalData):
- * kjs/JSGlobalData.h:
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::reset):
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::objectConstructor):
- (KJS::JSGlobalObject::functionConstructor):
- (KJS::JSGlobalObject::arrayConstructor):
- (KJS::JSGlobalObject::booleanConstructor):
- (KJS::JSGlobalObject::stringConstructor):
- (KJS::JSGlobalObject::numberConstructor):
- (KJS::JSGlobalObject::dateConstructor):
- (KJS::JSGlobalObject::regExpConstructor):
- (KJS::JSGlobalObject::errorConstructor):
- (KJS::JSGlobalObject::evalErrorConstructor):
- (KJS::JSGlobalObject::rangeErrorConstructor):
- (KJS::JSGlobalObject::referenceErrorConstructor):
- (KJS::JSGlobalObject::syntaxErrorConstructor):
- (KJS::JSGlobalObject::typeErrorConstructor):
- (KJS::JSGlobalObject::URIErrorConstructor):
- * kjs/array_object.cpp:
- (KJS::ArrayConstructor::ArrayConstructor):
- (KJS::ArrayConstructor::getConstructData):
- (KJS::ArrayConstructor::construct):
- (KJS::ArrayConstructor::callAsFunction):
- * kjs/array_object.h:
- * kjs/bool_object.cpp:
- (KJS::BooleanObject::BooleanObject):
- (KJS::BooleanPrototype::BooleanPrototype):
- (KJS::booleanProtoFuncToString):
- (KJS::booleanProtoFuncValueOf):
- (KJS::BooleanConstructor::BooleanConstructor):
- (KJS::BooleanConstructor::getConstructData):
- (KJS::BooleanConstructor::construct):
- (KJS::BooleanConstructor::callAsFunction):
- * kjs/bool_object.h:
- * kjs/date_object.cpp:
- (KJS::DatePrototype::DatePrototype):
- (KJS::DateConstructor::DateConstructor):
- (KJS::DateConstructor::getConstructData):
- (KJS::DateConstructor::construct):
- (KJS::DateConstructor::callAsFunction):
- (KJS::DateFunction::DateFunction):
- (KJS::DateFunction::callAsFunction):
- * kjs/date_object.h:
- * kjs/error_object.cpp:
- (KJS::ErrorPrototype::ErrorPrototype):
- (KJS::ErrorConstructor::ErrorConstructor):
- (KJS::ErrorConstructor::getConstructData):
- (KJS::ErrorConstructor::construct):
- (KJS::ErrorConstructor::callAsFunction):
- (KJS::NativeErrorConstructor::NativeErrorConstructor):
- (KJS::NativeErrorConstructor::getConstructData):
- (KJS::NativeErrorConstructor::construct):
- (KJS::NativeErrorConstructor::callAsFunction):
- (KJS::NativeErrorConstructor::mark):
- * kjs/error_object.h:
- * kjs/function.cpp:
- (KJS::JSFunction::JSFunction):
- (KJS::JSFunction::mark):
- (KJS::JSFunction::getOwnPropertySlot):
- (KJS::JSFunction::put):
- (KJS::JSFunction::deleteProperty):
- (KJS::PrototypeFunction::PrototypeFunction):
- (KJS::PrototypeReflexiveFunction::PrototypeReflexiveFunction):
- (KJS::PrototypeReflexiveFunction::mark):
- * kjs/function.h:
- * kjs/function_object.cpp:
- (KJS::functionProtoFuncToString):
- (KJS::FunctionConstructor::FunctionConstructor):
- (KJS::FunctionConstructor::getConstructData):
- (KJS::FunctionConstructor::construct):
- (KJS::FunctionConstructor::callAsFunction):
- * kjs/function_object.h:
- * kjs/internal.cpp:
- (KJS::StringObject::create):
- (KJS::JSString::toObject):
- (KJS::JSString::toThisObject):
- (KJS::JSString::getOwnPropertySlot):
- (KJS::InternalFunction::InternalFunction):
- (KJS::InternalFunction::getCallData):
- (KJS::InternalFunction::implementsHasInstance):
- * kjs/math_object.cpp:
- (KJS::MathObject::MathObject):
- (KJS::MathObject::getOwnPropertySlot):
- (KJS::MathObject::getValueProperty):
- * kjs/math_object.h:
- * kjs/number_object.cpp:
- (KJS::NumberObject::NumberObject):
- (KJS::NumberPrototype::NumberPrototype):
- (KJS::numberProtoFuncToString):
- (KJS::numberProtoFuncToLocaleString):
- (KJS::numberProtoFuncValueOf):
- (KJS::numberProtoFuncToFixed):
- (KJS::numberProtoFuncToExponential):
- (KJS::numberProtoFuncToPrecision):
- (KJS::NumberConstructor::NumberConstructor):
- (KJS::NumberConstructor::getOwnPropertySlot):
- (KJS::NumberConstructor::getValueProperty):
- (KJS::NumberConstructor::getConstructData):
- (KJS::NumberConstructor::construct):
- (KJS::NumberConstructor::callAsFunction):
- * kjs/number_object.h:
- * kjs/object.cpp:
- (KJS::JSObject::putDirectFunction):
- * kjs/object.h:
- * kjs/object_object.cpp:
- (KJS::ObjectConstructor::ObjectConstructor):
- (KJS::ObjectConstructor::getConstructData):
- (KJS::ObjectConstructor::construct):
- (KJS::ObjectConstructor::callAsFunction):
- * kjs/object_object.h:
- * kjs/regexp.cpp:
- (KJS::RegExp::RegExp):
- * kjs/regexp_object.cpp:
- (KJS::regExpProtoFuncTest):
- (KJS::regExpProtoFuncExec):
- (KJS::regExpProtoFuncCompile):
- (KJS::regExpProtoFuncToString):
- (KJS::RegExpObject::RegExpObject):
- (KJS::RegExpObject::~RegExpObject):
- (KJS::RegExpObject::getOwnPropertySlot):
- (KJS::RegExpObject::getValueProperty):
- (KJS::RegExpObject::put):
- (KJS::RegExpObject::putValueProperty):
- (KJS::RegExpObject::match):
- (KJS::RegExpObject::test):
- (KJS::RegExpObject::exec):
- (KJS::RegExpObject::getCallData):
- (KJS::RegExpObject::callAsFunction):
- (KJS::RegExpConstructorPrivate::RegExpConstructorPrivate):
- (KJS::RegExpConstructor::RegExpConstructor):
- (KJS::RegExpConstructor::performMatch):
- (KJS::RegExpMatchesArray::RegExpMatchesArray):
- (KJS::RegExpMatchesArray::~RegExpMatchesArray):
- (KJS::RegExpMatchesArray::fillArrayInstance):
- (KJS::RegExpConstructor::arrayOfMatches):
- (KJS::RegExpConstructor::getBackref):
- (KJS::RegExpConstructor::getLastParen):
- (KJS::RegExpConstructor::getLeftContext):
- (KJS::RegExpConstructor::getRightContext):
- (KJS::RegExpConstructor::getOwnPropertySlot):
- (KJS::RegExpConstructor::getValueProperty):
- (KJS::RegExpConstructor::put):
- (KJS::RegExpConstructor::putValueProperty):
- (KJS::RegExpConstructor::getConstructData):
- (KJS::RegExpConstructor::construct):
- (KJS::RegExpConstructor::callAsFunction):
- (KJS::RegExpConstructor::input):
- * kjs/regexp_object.h:
- * kjs/string_object.cpp:
- (KJS::StringObject::StringObject):
- (KJS::StringObject::getOwnPropertySlot):
- (KJS::StringObject::put):
- (KJS::StringObject::deleteProperty):
- (KJS::StringObject::getPropertyNames):
- (KJS::StringPrototype::StringPrototype):
- (KJS::StringPrototype::getOwnPropertySlot):
- (KJS::replace):
- (KJS::stringProtoFuncToString):
- (KJS::stringProtoFuncValueOf):
- (KJS::stringProtoFuncCharAt):
- (KJS::stringProtoFuncCharCodeAt):
- (KJS::stringProtoFuncConcat):
- (KJS::stringProtoFuncIndexOf):
- (KJS::stringProtoFuncLastIndexOf):
- (KJS::stringProtoFuncMatch):
- (KJS::stringProtoFuncSearch):
- (KJS::stringProtoFuncReplace):
- (KJS::stringProtoFuncSlice):
- (KJS::stringProtoFuncSplit):
- (KJS::stringProtoFuncSubstr):
- (KJS::stringProtoFuncSubstring):
- (KJS::stringProtoFuncToLowerCase):
- (KJS::stringProtoFuncToUpperCase):
- (KJS::stringProtoFuncToLocaleLowerCase):
- (KJS::stringProtoFuncToLocaleUpperCase):
- (KJS::stringProtoFuncLocaleCompare):
- (KJS::stringProtoFuncBig):
- (KJS::stringProtoFuncSmall):
- (KJS::stringProtoFuncBlink):
- (KJS::stringProtoFuncBold):
- (KJS::stringProtoFuncFixed):
- (KJS::stringProtoFuncItalics):
- (KJS::stringProtoFuncStrike):
- (KJS::stringProtoFuncSub):
- (KJS::stringProtoFuncSup):
- (KJS::stringProtoFuncFontcolor):
- (KJS::stringProtoFuncFontsize):
- (KJS::stringProtoFuncAnchor):
- (KJS::stringProtoFuncLink):
- (KJS::StringConstructor::StringConstructor):
- (KJS::StringConstructor::getConstructData):
- (KJS::StringConstructor::construct):
- (KJS::StringConstructor::callAsFunction):
- (KJS::StringConstructorFunction::StringConstructorFunction):
- (KJS::StringConstructorFunction::callAsFunction):
- * kjs/string_object.h:
- (KJS::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined):
- * profiler/Profiler.cpp:
- (KJS::createCallIdentifier):
-
-2008-06-15 Darin Adler <darin@apple.com>
-
- Rubber stamped by Sam.
-
- - use JS prefix and simpler names for basic JavaScriptCore types,
- to complement JSValue and JSObject
-
- * JavaScriptCore.exp:
- * VM/Machine.cpp:
- (KJS::jsLess):
- (KJS::jsLessEq):
- (KJS::jsAdd):
- (KJS::callEval):
- (KJS::Machine::execute):
- (KJS::Machine::retrieveArguments):
- (KJS::Machine::retrieveCaller):
- (KJS::Machine::getCallFrame):
- (KJS::Machine::getFunctionAndArguments):
- * VM/Machine.h:
- * VM/Register.h:
- * kjs/DebuggerCallFrame.cpp:
- (KJS::DebuggerCallFrame::functionName):
- * kjs/ExecState.h:
- * kjs/JSActivation.cpp:
- (KJS::JSActivation::createArgumentsObject):
- * kjs/array_instance.cpp:
- (KJS::JSArray::checkConsistency):
- (KJS::JSArray::JSArray):
- (KJS::JSArray::~JSArray):
- (KJS::JSArray::getItem):
- (KJS::JSArray::lengthGetter):
- (KJS::JSArray::inlineGetOwnPropertySlot):
- (KJS::JSArray::getOwnPropertySlot):
- (KJS::JSArray::put):
- (KJS::JSArray::deleteProperty):
- (KJS::JSArray::getPropertyNames):
- (KJS::JSArray::increaseVectorLength):
- (KJS::JSArray::setLength):
- (KJS::JSArray::mark):
- (KJS::JSArray::sort):
- (KJS::JSArray::compactForSorting):
- (KJS::JSArray::lazyCreationData):
- (KJS::JSArray::setLazyCreationData):
- * kjs/array_instance.h:
- * kjs/array_object.cpp:
- (KJS::ArrayPrototype::ArrayPrototype):
- (KJS::ArrayPrototype::getOwnPropertySlot):
- (KJS::arrayProtoFuncToString):
- (KJS::arrayProtoFuncToLocaleString):
- (KJS::arrayProtoFuncConcat):
- (KJS::arrayProtoFuncSort):
- (KJS::ArrayObjectImp::construct):
- * kjs/array_object.h:
- * kjs/completion.h:
- * kjs/function.cpp:
- (KJS::JSFunction::JSFunction):
- (KJS::JSFunction::mark):
- (KJS::JSFunction::getCallData):
- (KJS::JSFunction::callAsFunction):
- (KJS::JSFunction::argumentsGetter):
- (KJS::JSFunction::callerGetter):
- (KJS::JSFunction::lengthGetter):
- (KJS::JSFunction::getOwnPropertySlot):
- (KJS::JSFunction::put):
- (KJS::JSFunction::deleteProperty):
- (KJS::JSFunction::getParameterName):
- (KJS::JSFunction::getConstructData):
- (KJS::JSFunction::construct):
- (KJS::IndexToNameMap::IndexToNameMap):
- (KJS::Arguments::Arguments):
- * kjs/function.h:
- * kjs/function_object.cpp:
- (KJS::functionProtoFuncToString):
- (KJS::functionProtoFuncApply):
- (KJS::FunctionObjectImp::construct):
- * kjs/internal.cpp:
- (KJS::JSString::toPrimitive):
- (KJS::JSString::getPrimitiveNumber):
- (KJS::JSString::toBoolean):
- (KJS::JSString::toNumber):
- (KJS::JSString::toString):
- (KJS::StringInstance::create):
- (KJS::JSString::toObject):
- (KJS::JSString::toThisObject):
- (KJS::JSString::lengthGetter):
- (KJS::JSString::indexGetter):
- (KJS::JSString::indexNumericPropertyGetter):
- (KJS::JSString::getOwnPropertySlot):
- (KJS::JSNumberCell::type):
- (KJS::JSNumberCell::toPrimitive):
- (KJS::JSNumberCell::getPrimitiveNumber):
- (KJS::JSNumberCell::toBoolean):
- (KJS::JSNumberCell::toNumber):
- (KJS::JSNumberCell::toString):
- (KJS::JSNumberCell::toObject):
- (KJS::JSNumberCell::toThisObject):
- (KJS::JSNumberCell::getUInt32):
- (KJS::JSNumberCell::getTruncatedInt32):
- (KJS::JSNumberCell::getTruncatedUInt32):
- (KJS::GetterSetter::mark):
- (KJS::GetterSetter::toPrimitive):
- (KJS::GetterSetter::getPrimitiveNumber):
- (KJS::GetterSetter::toBoolean):
- (KJS::GetterSetter::toNumber):
- (KJS::GetterSetter::toString):
- (KJS::GetterSetter::toObject):
- (KJS::GetterSetter::getOwnPropertySlot):
- (KJS::GetterSetter::put):
- (KJS::GetterSetter::toThisObject):
- * kjs/internal.h:
- (KJS::JSString::JSString):
- (KJS::JSString::getStringPropertySlot):
- * kjs/nodes.cpp:
- (KJS::FuncDeclNode::makeFunction):
- (KJS::FuncExprNode::makeFunction):
- * kjs/nodes.h:
- * kjs/object.cpp:
- (KJS::JSObject::put):
- (KJS::JSObject::deleteProperty):
- (KJS::JSObject::defineGetter):
- (KJS::JSObject::defineSetter):
- (KJS::JSObject::lookupGetter):
- (KJS::JSObject::lookupSetter):
- (KJS::JSObject::fillGetterPropertySlot):
- * kjs/object.h:
- (KJS::GetterSetter::GetterSetter):
- * kjs/operations.cpp:
- (KJS::equal):
- (KJS::strictEqual):
- * kjs/property_map.cpp:
- (KJS::PropertyMap::containsGettersOrSetters):
- * kjs/regexp_object.cpp:
- (KJS::RegExpMatchesArray::getOwnPropertySlot):
- (KJS::RegExpMatchesArray::put):
- (KJS::RegExpMatchesArray::deleteProperty):
- (KJS::RegExpMatchesArray::getPropertyNames):
- (KJS::RegExpMatchesArray::RegExpMatchesArray):
- (KJS::RegExpMatchesArray::fillArrayInstance):
- * kjs/string_object.cpp:
- (KJS::StringInstance::StringInstance):
- (KJS::replace):
- (KJS::stringProtoFuncReplace):
- (KJS::stringProtoFuncToLowerCase):
- (KJS::stringProtoFuncToUpperCase):
- (KJS::stringProtoFuncToLocaleLowerCase):
- (KJS::stringProtoFuncToLocaleUpperCase):
- * kjs/string_object.h:
- (KJS::StringInstance::internalValue):
- * kjs/value.cpp:
- (KJS::JSCell::getNumber):
- (KJS::JSCell::getString):
- (KJS::JSCell::getObject):
- (KJS::jsString):
- (KJS::jsOwnedString):
- * kjs/value.h:
- (KJS::JSNumberCell::JSNumberCell):
- (KJS::jsNumberCell):
- (KJS::JSValue::uncheckedGetNumber):
- * profiler/Profiler.cpp:
- (KJS::createCallIdentifier):
- (KJS::createCallIdentifierFromFunctionImp):
-
-2008-06-15 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Alexey.
-
- - add emitUnaryOp, emitNullaryOp and emitUnaryOpNoDst; use them
-
- This removes some boilerplate code and also reduces the number of
- places that will need to be changed to do on-demand emit of
- loads (and thus support k operands).
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitUnaryOp):
- (KJS::CodeGenerator::emitNullaryOp):
- (KJS::CodeGenerator::emitUnaryOpNoDst):
- (KJS::CodeGenerator::emitPushScope):
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::emitNewObject):
- (KJS::CodeGenerator::emitNewArray):
- (KJS::CodeGenerator::emitNot):
- (KJS::CodeGenerator::emitBitNot):
- (KJS::CodeGenerator::emitToJSNumber):
- (KJS::CodeGenerator::emitNegate):
- (KJS::CodeGenerator::emitInstanceOf):
- (KJS::CodeGenerator::emitTypeOf):
- (KJS::CodeGenerator::emitIn):
- (KJS::CodeGenerator::emitReturn):
- (KJS::CodeGenerator::emitEnd):
- (KJS::CodeGenerator::emitGetPropertyNames):
-
-2008-06-15 Alp Toker <alp@nuanti.com>
-
- Rubber-stamped by Maciej.
-
- Install 'jsc' application by default.
-
- * GNUmakefile.am:
-
-2008-06-15 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - rename testkjs to jsc
-
- * GNUmakefile.am:
- * JavaScriptCore.vcproj/JavaScriptCore.sln:
- * JavaScriptCore.vcproj/jsc: Added.
- * JavaScriptCore.vcproj/jsc/jsc.vcproj: Copied from JavaScriptCore.vcproj/testkjs/testkjs.vcproj.
- * JavaScriptCore.vcproj/testkjs: Removed.
- * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Removed.
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * jscore.bkl:
- * kjs/Shell.cpp: Copied from kjs/testkjs.cpp.
- (main):
- (printUsageStatement):
- (jscmain):
- * kjs/jsc.pro: Copied from kjs/testkjs.pro.
- * kjs/testkjs.cpp: Removed.
- * kjs/testkjs.pro: Removed.
- * tests/mozilla/expected.html:
- * tests/mozilla/js1_2/Array/tostring_1.js:
- * tests/mozilla/js1_2/Array/tostring_2.js:
- * tests/mozilla/jsDriver.pl:
-
-2008-06-15 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Mac build fix.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/nodes.h:
-
-2008-06-15 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Change the spelling of PrecMultiplicitave to PrecMultiplicative.
-
- * kjs/nodes.h:
- (KJS::MultNode::precedence):
- (KJS::DivNode::precedence):
- (KJS::ModNode::precedence):
-
-2008-06-15 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Remove unused preprocessor macros related to exceptions in the old
- interpreter.
-
- * kjs/nodes.cpp:
-
-2008-06-15 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Bug 19484: More instructions needs to use temporary registers
- <https://bugs.webkit.org/show_bug.cgi?id=19484>
-
- Fix codegen for all binary operations so that temporaries are used if
- necessary. This was done by making BinaryOpNode and ReverseBinaryOpNode
- subclasses of ExpressionNode, and eliminating the custom emitCode()
- methods for the individual node classes.
-
- This only adds 3 new instructions to SunSpider code, and there is no
- difference in SunSpider execution time.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitBitNot):
- (KJS::CodeGenerator::emitBinaryOp):
- * VM/CodeGenerator.h:
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::PreIncResolveNode::emitCode):
- (KJS::PreDecResolveNode::emitCode):
- (KJS::BinaryOpNode::emitCode):
- (KJS::ReverseBinaryOpNode::emitCode):
- (KJS::emitReadModifyAssignment):
- (KJS::CaseBlockNode::emitCodeForBlock):
- * kjs/nodes.h:
- (KJS::BinaryOpNode::BinaryOpNode):
- (KJS::ReverseBinaryOpNode::ReverseBinaryOpNode):
- (KJS::MultNode::):
- (KJS::DivNode::):
- (KJS::DivNode::precedence):
- (KJS::ModNode::):
- (KJS::ModNode::precedence):
- (KJS::AddNode::):
- (KJS::AddNode::precedence):
- (KJS::SubNode::):
- (KJS::SubNode::precedence):
- (KJS::LeftShiftNode::):
- (KJS::LeftShiftNode::precedence):
- (KJS::RightShiftNode::):
- (KJS::RightShiftNode::precedence):
- (KJS::UnsignedRightShiftNode::):
- (KJS::UnsignedRightShiftNode::precedence):
- (KJS::LessNode::):
- (KJS::LessNode::precedence):
- (KJS::GreaterNode::):
- (KJS::GreaterNode::precedence):
- (KJS::LessEqNode::):
- (KJS::LessEqNode::precedence):
- (KJS::GreaterEqNode::):
- (KJS::GreaterEqNode::precedence):
- (KJS::InstanceOfNode::):
- (KJS::InstanceOfNode::precedence):
- (KJS::InNode::):
- (KJS::InNode::precedence):
- (KJS::EqualNode::):
- (KJS::EqualNode::precedence):
- (KJS::NotEqualNode::):
- (KJS::NotEqualNode::precedence):
- (KJS::StrictEqualNode::):
- (KJS::StrictEqualNode::precedence):
- (KJS::NotStrictEqualNode::):
- (KJS::NotStrictEqualNode::precedence):
- (KJS::BitAndNode::):
- (KJS::BitAndNode::precedence):
- (KJS::BitOrNode::):
- (KJS::BitOrNode::precedence):
- (KJS::BitXOrNode::):
- (KJS::BitXOrNode::precedence):
- * kjs/nodes2string.cpp:
- (KJS::LessNode::streamTo):
- (KJS::GreaterNode::streamTo):
- (KJS::LessEqNode::streamTo):
- (KJS::GreaterEqNode::streamTo):
- (KJS::InstanceOfNode::streamTo):
- (KJS::InNode::streamTo):
- (KJS::EqualNode::streamTo):
- (KJS::NotEqualNode::streamTo):
- (KJS::StrictEqualNode::streamTo):
- (KJS::NotStrictEqualNode::streamTo):
- (KJS::BitAndNode::streamTo):
- (KJS::BitXOrNode::streamTo):
- (KJS::BitOrNode::streamTo):
-
-2008-06-14 Darin Adler <darin@apple.com>
-
- Rubber stamped by Sam.
-
- - rename a bunch of local symbols within the regular expression code to
- follow our usual coding style, and do a few other name tweaks
-
- * pcre/pcre_compile.cpp:
- (CompileData::CompileData):
- (checkEscape):
- (readRepeatCounts):
- (compileBranch):
- (compileBracket):
- (calculateCompiledPatternLength):
- (returnError):
- (jsRegExpCompile):
- * pcre/pcre_exec.cpp:
- (MatchStack::MatchStack):
- (MatchStack::canUseStackBufferForNextFrame):
- (MatchStack::popCurrentFrame):
- (match):
- (tryFirstByteOptimization):
- (tryRequiredByteOptimization):
- (jsRegExpExecute):
- * pcre/pcre_internal.h:
-
-2008-06-14 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Darin.
-
- Remove redundant uses of get().
-
- * kjs/nodes.cpp:
- (KJS::BracketAccessorNode::emitCode):
- (KJS::AddNode::emitCode):
- (KJS::SubNode::emitCode):
- (KJS::ReadModifyResolveNode::emitCode):
- (KJS::AssignDotNode::emitCode):
- (KJS::ReadModifyDotNode::emitCode):
- (KJS::AssignBracketNode::emitCode):
- (KJS::ReadModifyBracketNode::emitCode):
-
-2008-06-14 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Make code generation not use a temporary for the left-hand side of an
- expression if the right-hand side is a local variable.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::isLocal):
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::leftHandSideNeedsCopy):
- (KJS::CodeGenerator::emitNodeForLeftHandSide):
- * kjs/nodes.cpp:
- (KJS::ResolveNode::isPure):
- (KJS::BracketAccessorNode::emitCode):
- (KJS::AddNode::emitCode):
- (KJS::SubNode::emitCode):
- (KJS::ReadModifyResolveNode::emitCode):
- (KJS::AssignDotNode::emitCode):
- (KJS::ReadModifyDotNode::emitCode):
- (KJS::AssignBracketNode::emitCode):
- (KJS::ReadModifyBracketNode::emitCode):
- * kjs/nodes.h:
- (KJS::ExpressionNode::):
- (KJS::BooleanNode::):
- (KJS::NumberNode::):
- (KJS::StringNode::):
-
-2008-06-14 Darin Adler <darin@apple.com>
-
- Reviewed by Sam.
-
- - more of https://bugs.webkit.org/show_bug.cgi?id=17257
- start ref counts at 1 instead of 0 for speed
-
- * kjs/nodes.cpp:
- (KJS::ParserRefCounted::hasOneRef): Added. Replaces refcount.
- * kjs/nodes.h: Replaced refcount with hasOneRef.
-
- * wtf/ListRefPtr.h:
- (WTF::ListRefPtr::~ListRefPtr): Changed to use hasOneRef instead of
- refcount, so this class can be used with the RefCounted template.
-
- * wtf/RefCounted.h:
- (WTF::RefCounted::hasOneRef): Made const, since there's no reason for
- it to be non-const.
-
-2008-06-14 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - initialize local vars as side effect of call instead of in bytecode
- 1.004x speedup on SunSpider.
-
- This removes just the dispatch overhead for these loads - in the
- future, dead store elimination might be able to eliminate them
- entirely.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::CodeGenerator): For function blocks, don't
- emit loads of undefined for var initialization.
- * VM/Machine.cpp:
- (KJS::slideRegisterWindowForCall): Instead, initialize locals
- as part of the call.
-
-2008-06-14 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Remove helper functions in the parser that are no longer needed.
-
- * kjs/grammar.y:
-
-2008-06-14 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Bug 19484: More instructions needs to use temporary registers
- <https://bugs.webkit.org/show_bug.cgi?id=19484>
-
- Make code generation for AddNode and SubNode use temporaries when
- necessary.
-
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::AddNode::emitCode):
- (KJS::SubNode::emitCode):
- * kjs/nodes.h:
- (KJS::AddNode::):
- (KJS::SubNode::):
-
-2008-06-13 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Combine TrueNode and FalseNode to make BooleanNode, and remove the
- unused class PlaceholderTrueNode.
-
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::BooleanNode::emitCode):
- * kjs/nodes.h:
- (KJS::BooleanNode::):
- (KJS::BooleanNode::precedence):
- * kjs/nodes2string.cpp:
- (KJS::BooleanNode::streamTo):
-
-2008-06-13 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Eliminate the use of temporaries to store the left hand side of an
- expression when the right hand side is a constant. This slightly
- improves the generated bytecode for a few SunSpider tests, but it is
- mostly in preparation for fixing
-
- Bug 19484: More instructions needs to use temporary registers
- <https://bugs.webkit.org/show_bug.cgi?id=19484>
-
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::leftHandSideNeedsCopy):
- (KJS::CodeGenerator::emitNodeForLeftHandSide):
- * kjs/nodes.cpp:
- (KJS::BracketAccessorNode::emitCode):
- (KJS::ReadModifyResolveNode::emitCode):
- (KJS::AssignDotNode::emitCode):
- (KJS::ReadModifyDotNode::emitCode):
- (KJS::AssignBracketNode::emitCode):
- (KJS::ReadModifyBracketNode::emitCode):
- * kjs/nodes.h:
- (KJS::ExpressionNode::):
- (KJS::FalseNode::):
- (KJS::TrueNode::):
- (KJS::NumberNode::):
- (KJS::StringNode::):
-
-2008-06-13 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - prettify opcode stats output
-
- I changed things to be a bit more aligned, also there is a new
- section listing most common opcodes and most common sequences that
- include them.
-
- * VM/Opcode.cpp:
- (KJS::OpcodeStats::~OpcodeStats):
- * VM/Opcode.h:
-
-2008-06-13 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Geoff.
-
- <rdar://problem/5969992> JSProfiler: Remove the recursion limit in the
- profiler.
- - Remove recursion from exclude(). This leaves only focus() to fix.
-
- * JavaScriptCore.exp: Change the signatures of the exported functions.
- * profiler/Profile.cpp:
- (KJS::Profile::forEach): I added a traverseNextNodePreOrder() function
- and so needed to distinguish the other function by labeling it
- traverseNextNodePostOrder().
- (KJS::Profile::exclude): All new exclude that iteratively walks the tree
- * profiler/Profile.h:
- (KJS::Profile::focus): Add a null check for m_head.
- * profiler/ProfileNode.cpp:
- (KJS::ProfileNode::traverseNextNodePostOrder): Renamed
- (KJS::ProfileNode::traverseNextNodePreOrder): Walks the tree in pre-
- order, where the parent is processed before the children.
- (KJS::ProfileNode::setTreeVisible): Iterate over the sub-tree and set
- all of the nodes visible value. This changes another function that used
- recursion.
- (KJS::ProfileNode::exclude): Remove recursion from this function.
- Because we now check for m_visible and we are walking the tree in pre-
- order we do not need to check if an excluded node is in an excluded
- sub-tree.
- * profiler/ProfileNode.h: Added specific selfTime functions to
- facilitate exclude().
- (KJS::ProfileNode::setSelfTime):
- (KJS::ProfileNode::setActualSelfTime):
- (KJS::ProfileNode::setVisibleSelfTime):
-
-2008-06-12 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - https://bugs.webkit.org/show_bug.cgi?id=19434
- speed up SunSpider by avoiding some string boxing
-
- Speeds up SunSpider by 1.1%.
-
- Optimized code path for getting built-in properties from strings -- avoid
- boxing with a string object in that case. We can make further changes to avoid
- even more boxing, but this change alone is a win.
-
- * API/JSCallbackObjectFunctions.h:
- (KJS::JSCallbackObject::staticValueGetter): Use isObject instead of inherits
- in asssert, since the type of slotBase() is now JSValue, not JSObject.
- (KJS::JSCallbackObject::staticFunctionGetter): Ditto.
- (KJS::JSCallbackObject::callbackGetter): Ditto.
-
- * kjs/internal.cpp:
- (KJS::StringImp::getPrimitiveNumber): Updated for change of data member name.
- (KJS::StringImp::toBoolean): Ditto.
- (KJS::StringImp::toNumber): Ditto.
- (KJS::StringImp::toString): Ditto.
- (KJS::StringInstance::create): Added; avoids a bit of cut and paste code.
- (KJS::StringImp::toObject): Use StringInstance::create.
- (KJS::StringImp::toThisObject): Ditto.
- (KJS::StringImp::lengthGetter): Added. Replaces the getter that used to live in
- the StringInstance class.
- (KJS::StringImp::indexGetter): Ditto.
- (KJS::StringImp::indexNumericPropertyGetter): Ditto.
- (KJS::StringImp::getOwnPropertySlot): Added. Deals with built in properties of
- the string class without creating a StringInstance.
-
- * kjs/internal.h:
- (KJS::StringImp::getStringPropertySlot): Added. To be used by both the string
- and string object getOwnPropertySlot function.
-
- * kjs/lookup.h:
- (KJS::staticFunctionGetter): Updated since slotBase() is now a JSValue rather
- than a JSObject.
-
- * kjs/object.h: Removed PropertySlot::slotBase() function, which can now move
- back into property_slot.h where it belongs since it doesn't have to cast to
- JSObject*.
-
- * kjs/property_slot.cpp:
- (KJS::PropertySlot::functionGetter): Updated since slot.slotBase() is now a JSValue*
- instead of JSObject*. setGetterSlot still guarantees the base is a JSObject*.
- * kjs/property_slot.h:
- (KJS::PropertySlot::PropertySlot): Changed base to JSValue* intead of JSCell*.
- (KJS::PropertySlot::setStaticEntry): Ditto.
- (KJS::PropertySlot::setCustom): Ditto.
- (KJS::PropertySlot::setCustomIndex): Ditto.
- (KJS::PropertySlot::setCustomNumeric): Ditto.
- (KJS::PropertySlot::slotBase): Moved inline here since it no longer involves a
- downcast to JSObject*.
- (KJS::PropertySlot::setBase): Changed to JSValue*.
-
- * kjs/string_object.cpp:
- (KJS::StringInstance::getOwnPropertySlot): Changed to use getStringPropertySlot
- instead of coding the properties here. This allows sharing the code with StringImp.
-
- * kjs/string_object.h: Removed inlineGetOwnPropertySlot, lengthGetter, and indexGetter.
- Made one of the constructors protected.
-
- * kjs/value.h: Made getOwnPropertySlot private in the JSCell class -- this is better
- since it's not the real JSObject getOwnPropertySlot semantic and most callers shouldn't
- use it.
-
-2008-06-12 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Maciej.
-
- Preparation to making JavaScript heap per-thread.
-
- * kjs/collector.cpp:
- (KJS::Collector::collect):
- * kjs/collector.h:
- (KJS::Collector::markListSet):
- The collector now holds the list of protected lists itself, to be made per-instance.
-
- * kjs/list.h: Changed to hold a pointer to a mark set this list is in, if any.
- (KJS::List::List): Explicitly initialize m_size with zero, as m_vector.size() is
- guaranteed to be such anyway.
- (KJS::List::append): Changed the fast case to only be executed as long as inline buffer
- is used, because otherwise, we now do more expensive checks.
-
- * kjs/list.cpp:
- (KJS::List::markLists): Renamed from markProtectedListsSlowCase, made it take the list set
- as a parameter.
- (KJS::List::slowAppend): If a non-immediate value is appended, the list needs to be added
- to an appropriate Heap's protected list. For now, a static Collector::markListSet() is
- used, but the code is layed out in preparation to making the switch to multiple heaps.
-
- * JavaScriptCore.exp: Updated export list.
-
-2008-06-12 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Bug 19510: CodeBlock::needsFullScopeChain not always set for global code
- <https://bugs.webkit.org/show_bug.cgi?id=19510>
-
- This fixes the symptoms by using CodeGenerator::m_codeType to determine
- when to use temporaries instead of CodeBlock::needsFullScopeChain, but
- it does not fix the problem itself.
-
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::leftHandSideNeedsCopy):
-
-2008-06-11 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Bug 19498: REGRESSION (r34497): crash while loading GMail
- <https://bugs.webkit.org/show_bug.cgi?id=19498>
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitJumpIfTrueMayCombine):
- (KJS::CodeGenerator::emitJumpIfTrue):
- * VM/CodeGenerator.h:
- * kjs/nodes.cpp:
- (KJS::DoWhileNode::emitCode):
- (KJS::WhileNode::emitCode):
- (KJS::ForNode::emitCode):
- (KJS::CaseBlockNode::emitCodeForBlock):
-
-2008-06-11 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - a little bit of cleanup and prep for some upcoming optimizations
-
- * JavaScriptCore.exp: Re-sorted this file (with sort command line tool).
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump): Fixed printf to avoid warnings -- to use %lu we
- need to make sure the type is unsigned long.
- * kjs/object.cpp:
- (KJS::Error::create): Eliminated unused error names array, and also put
- the strings into the code since there was already a switch statment.
- This also avoids having to contemplate a hypothetical access past the
- end of the array.
- * kjs/object.h: Got rid of errorNames.
- * kjs/property_slot.cpp: Deleted unused ungettableGetter.
- * kjs/property_slot.h: Ditto.
- * wtf/AlwaysInline.h: Added LIKELY alongside UNLIKELY.
-
-2008-06-11 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Darin.
-
- Bug 19457: Create fused opcodes for tests and conditional jumps
- <https://bugs.webkit.org/show_bug.cgi?id=19457>
-
- Add a new jless instruction, and modify the code generator to emit it
- instead of the pair (less, jtrue).
-
- Gives a 3.6% improvement on SunSpider.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::CodeGenerator):
- (KJS::CodeGenerator::emitOpcode):
- (KJS::CodeGenerator::retrieveLastBinaryOp):
- (KJS::CodeGenerator::rewindBinaryOp):
- (KJS::CodeGenerator::emitJump):
- (KJS::CodeGenerator::emitJumpIfTrue):
- (KJS::CodeGenerator::emitJumpIfFalse):
- (KJS::CodeGenerator::emitMove):
- (KJS::CodeGenerator::emitNot):
- (KJS::CodeGenerator::emitEqual):
- (KJS::CodeGenerator::emitNotEqual):
- (KJS::CodeGenerator::emitStrictEqual):
- (KJS::CodeGenerator::emitNotStrictEqual):
- (KJS::CodeGenerator::emitLess):
- (KJS::CodeGenerator::emitLessEq):
- (KJS::CodeGenerator::emitPreInc):
- (KJS::CodeGenerator::emitPreDec):
- (KJS::CodeGenerator::emitPostInc):
- (KJS::CodeGenerator::emitPostDec):
- (KJS::CodeGenerator::emitToJSNumber):
- (KJS::CodeGenerator::emitNegate):
- (KJS::CodeGenerator::emitAdd):
- (KJS::CodeGenerator::emitMul):
- (KJS::CodeGenerator::emitDiv):
- (KJS::CodeGenerator::emitMod):
- (KJS::CodeGenerator::emitSub):
- (KJS::CodeGenerator::emitLeftShift):
- (KJS::CodeGenerator::emitRightShift):
- (KJS::CodeGenerator::emitUnsignedRightShift):
- (KJS::CodeGenerator::emitBitAnd):
- (KJS::CodeGenerator::emitBitXOr):
- (KJS::CodeGenerator::emitBitOr):
- (KJS::CodeGenerator::emitBitNot):
- (KJS::CodeGenerator::emitInstanceOf):
- (KJS::CodeGenerator::emitTypeOf):
- (KJS::CodeGenerator::emitIn):
- (KJS::CodeGenerator::emitLoad):
- (KJS::CodeGenerator::emitNewObject):
- (KJS::CodeGenerator::emitNewArray):
- (KJS::CodeGenerator::emitResolve):
- (KJS::CodeGenerator::emitGetScopedVar):
- (KJS::CodeGenerator::emitPutScopedVar):
- (KJS::CodeGenerator::emitResolveBase):
- (KJS::CodeGenerator::emitResolveWithBase):
- (KJS::CodeGenerator::emitResolveFunction):
- (KJS::CodeGenerator::emitGetById):
- (KJS::CodeGenerator::emitPutById):
- (KJS::CodeGenerator::emitPutGetter):
- (KJS::CodeGenerator::emitPutSetter):
- (KJS::CodeGenerator::emitDeleteById):
- (KJS::CodeGenerator::emitGetByVal):
- (KJS::CodeGenerator::emitPutByVal):
- (KJS::CodeGenerator::emitDeleteByVal):
- (KJS::CodeGenerator::emitPutByIndex):
- (KJS::CodeGenerator::emitNewFunction):
- (KJS::CodeGenerator::emitNewRegExp):
- (KJS::CodeGenerator::emitNewFunctionExpression):
- (KJS::CodeGenerator::emitCall):
- (KJS::CodeGenerator::emitReturn):
- (KJS::CodeGenerator::emitEnd):
- (KJS::CodeGenerator::emitConstruct):
- (KJS::CodeGenerator::emitPushScope):
- (KJS::CodeGenerator::emitPopScope):
- (KJS::CodeGenerator::emitDebugHook):
- (KJS::CodeGenerator::emitComplexJumpScopes):
- (KJS::CodeGenerator::emitJumpScopes):
- (KJS::CodeGenerator::emitNextPropertyName):
- (KJS::CodeGenerator::emitGetPropertyNames):
- (KJS::CodeGenerator::emitCatch):
- (KJS::CodeGenerator::emitThrow):
- (KJS::CodeGenerator::emitNewError):
- (KJS::CodeGenerator::emitJumpSubroutine):
- (KJS::CodeGenerator::emitSubroutineReturn):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.cpp:
- * VM/Opcode.h:
-
-2008-06-11 Darin Adler <darin@apple.com>
-
- Reviewed by Alexey.
-
- - fix https://bugs.webkit.org/show_bug.cgi?id=19442
- JavaScript array implementation doesn't maintain m_numValuesInVector when sorting
-
- * kjs/array_instance.cpp:
- (KJS::ArrayInstance::checkConsistency): Added. Empty inline version for when
- consistency checks are turned off.
- (KJS::ArrayInstance::ArrayInstance): Check consistency after construction.
- (KJS::ArrayInstance::~ArrayInstance): Check consistency before destruction.
- (KJS::ArrayInstance::put): Check consistency before and after.
- (KJS::ArrayInstance::deleteProperty): Ditto.
- (KJS::ArrayInstance::setLength): Ditto.
- (KJS::compareByStringPairForQSort): Use typedef for clarity.
- (KJS::ArrayInstance::sort): Check consistency before and after. Also broke the loop
- to set up sorting into two separate passes. Added FIXMEs about various exception
- safety issues. Added code to set m_numValuesInVector after sorting.
- (KJS::ArrayInstance::compactForSorting): Ditto.
-
- * kjs/array_instance.h: Added a definition of an enum for the types of consistency
- check and a declaration of the consistency checking function.
-
-2008-06-10 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Link against libedit on Mac since HAVE(READLINE) is defined there.
-
- * jscore.bkl:
-
-2008-06-10 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- https://bugs.webkit.org/show_bug.cgi?id=16503
- match limit takes at least 13% of the time on the SunSpider regexp-dna test
-
- Make the limit test slightly more efficient. It is not clear how much of a win it is,
- as the improvement on regexp-dna varies from 2.3% to 0.6% depending on what revision I
- apply the patch to. Today, the win on regexp-dna was minimal, but the total win was whopping
- 0.5%, due to random code generation changes.
-
- * pcre/pcre_exec.cpp: (match): Avoid loading a constant on each iteration.
-
-2008-06-09 Alp Toker <alp@nuanti.com>
-
- gcc3/autotools build fix. Add explicit -O2 -fno-strict-aliasing to
- each of the tools since these are no longer set globally.
-
- * GNUmakefile.am:
-
-2008-06-09 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Sam.
-
- Add an include for readline/history.h to fix the build for Darwin users
- with the GNU readline library installed. Also, clean up the style of
- the HAVE(READLINE) check.
-
- * kjs/testkjs.cpp:
- (runInteractive):
-
-2008-06-09 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Darin.
-
- Bug 17531: Add interactive mode to testkjs
- <https://bugs.webkit.org/show_bug.cgi?id=17531>
-
- This is a cleaned up version of Sam's earlier patch to add an
- interactive mode to testkjs.
-
- Readline support is only enabled on Darwin platforms for now, but
- other ports can enable it by defining HAVE_READLINE in kjs/config.h.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/config.h:
- * kjs/testkjs.cpp:
- (Options::Options):
- (runWithScripts):
- (runInteractive):
- (printUsageStatement):
- (parseArguments):
- (kjsmain):
-
-2008-06-08 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Darin.
-
- Bug 19346: REGRESSION: Mootools 1.2 Class inheritance broken in post-SquirrelFish merge
- <https://bugs.webkit.org/show_bug.cgi?id=19346>
-
- A check for whether a function's caller is eval code accidentally included
- the case where the caller's caller is native code. Add a CodeType field to
- CodeBlock and use this for the eval caller test instead.
-
- * VM/CodeBlock.h:
- (KJS::CodeBlock::CodeBlock):
- (KJS::ProgramCodeBlock::ProgramCodeBlock):
- (KJS::EvalCodeBlock::EvalCodeBlock):
- * VM/Machine.cpp:
- (KJS::getCallerFunctionOffset):
- * kjs/nodes.cpp:
- (KJS::FunctionBodyNode::generateCode):
- (KJS::ProgramNode::generateCode):
-
-2008-06-07 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Dan Bernstein.
-
- Bug 17928: testkjs shouldn't require "-f"
- <https://bugs.webkit.org/show_bug.cgi?id=17928>
-
- * kjs/testkjs.cpp:
- (printUsageStatement):
- (parseArguments):
-
-2008-06-07 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Eric.
-
- Bug 17548: JavaScriptCore print(a, b) differs from Spidermonkey Behavior
- <https://bugs.webkit.org/show_bug.cgi?id=17548>
-
- * kjs/testkjs.cpp:
- (functionPrint):
-
-2008-06-07 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Sam.
-
- Bug 17547: JavaScriptCore print() differs from Spidermonkey Behavior
- <https://bugs.webkit.org/show_bug.cgi?id=17547>
-
- * kjs/testkjs.cpp:
- (functionPrint):
-
-2008-06-07 Alexey Proskuryakov <ap@webkit.org>
-
- More build fixes.
-
- * kjs/JSGlobalData.cpp: Fixed an included file name for case-sensitive file systems, fixed
- JSGlobalData::threadInstance() for non-multithreaded builds.
-
-2008-06-07 Alexey Proskuryakov <ap@webkit.org>
-
- Build fix - actually adding JSGlobalData.cpp to non-Mac builds!
-
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCoreSources.bkl:
-
-2008-06-07 Alexey Proskuryakov <ap@webkit.org>
-
- Try to fix Gtk/gcc 4.3 build.
-
- * kjs/JSGlobalData.h: Include ustring.h instead of forward-declaring UString::Rep.
-
-2008-06-06 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Combine per-thread objects into one, to make it easier to support legacy clients (for
- which they shouldn't be really per-thread).
-
- No change on SunSpider total.
-
- * JavaScriptCore.xcodeproj/project.pbxproj: Added JSGlobalData.{h,cpp}
-
- * kjs/JSGlobalData.cpp: Added.
- (KJS::JSGlobalData::JSGlobalData):
- (KJS::JSGlobalData::~JSGlobalData):
- (KJS::JSGlobalData::threadInstance):
- * kjs/JSGlobalData.h: Added.
- This class encapsulates all data that should be per-thread (or shared between legacy clients).
- It will also keep a Heap pointer, but right now, Heap (Collector) methods are all static.
-
- * kjs/identifier.h:
- (KJS::Identifier::Identifier):
- Added a constructor explicitly taking JSGlobalData to access IdentifierTable. Actually,
- all of them should, but this will be a separate patch.
-
- * kjs/identifier.cpp:
- (KJS::IdentifierTable::literalTable):
- (KJS::createIdentifierTable):
- (KJS::deleteIdentifierTable):
- (KJS::Identifier::add):
- (KJS::Identifier::addSlowCase):
- Combined IdentifierTable and LiteralIdentifierTable into a single class for simplicity.
-
- * kjs/grammar.y: kjsyyparse now takes JSGlobalData, not just a Lexer.
-
- * kjs/nodes.cpp:
- (KJS::Node::Node):
- (KJS::EvalFunctionCallNode::emitCode):
- (KJS::ScopeNode::ScopeNode):
- Changed to access Lexer and Parser via JSGlobalData::threadInstance(). This is also a
- temporary measure, they will need to use JSGlobalData explicitly.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::CodeGenerator):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::callEval):
- * kjs/CommonIdentifiers.cpp:
- (KJS::CommonIdentifiers::CommonIdentifiers):
- * kjs/CommonIdentifiers.h:
- * kjs/DebuggerCallFrame.cpp:
- (KJS::DebuggerCallFrame::evaluate):
- * kjs/ExecState.cpp:
- (KJS::ExecState::ExecState):
- * kjs/ExecState.h:
- (KJS::ExecState::globalData):
- (KJS::ExecState::identifierTable):
- (KJS::ExecState::propertyNames):
- (KJS::ExecState::emptyList):
- (KJS::ExecState::lexer):
- (KJS::ExecState::parser):
- (KJS::ExecState::arrayTable):
- (KJS::ExecState::dateTable):
- (KJS::ExecState::mathTable):
- (KJS::ExecState::numberTable):
- (KJS::ExecState::RegExpImpTable):
- (KJS::ExecState::RegExpObjectImpTable):
- (KJS::ExecState::stringTable):
- * kjs/InitializeThreading.cpp:
- (KJS::initializeThreadingOnce):
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::init):
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
- (KJS::JSGlobalObject::head):
- (KJS::JSGlobalObject::globalData):
- * kjs/Parser.cpp:
- (KJS::Parser::parse):
- * kjs/Parser.h:
- * kjs/function.cpp:
- (KJS::FunctionImp::getParameterName):
- (KJS::IndexToNameMap::unMap):
- (KJS::globalFuncEval):
- * kjs/function_object.cpp:
- (KJS::FunctionObjectImp::construct):
- * kjs/interpreter.cpp:
- (KJS::Interpreter::checkSyntax):
- (KJS::Interpreter::evaluate):
- * kjs/lexer.cpp:
- (kjsyylex):
- * kjs/lexer.h:
- * kjs/testkjs.cpp:
- (prettyPrintScript):
- Updated for the above changes. Most of threadInstance uses here will need to be replaced with
- explicitly passed pointers to support legacy JSC clients.
-
- * JavaScriptCore.exp: Removed KJS::parser().
-
-2008-06-06 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Bug 19424: Add support for logging opcode pair counts
- <https://bugs.webkit.org/show_bug.cgi?id=19424>
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.cpp:
- (KJS::OpcodeStats::OpcodeStats):
- (KJS::compareOpcodeIndices):
- (KJS::compareOpcodePairIndices):
- (KJS::OpcodeStats::~OpcodeStats):
- (KJS::OpcodeStats::recordInstruction):
- (KJS::OpcodeStats::resetLastInstruction):
- * VM/Opcode.h:
-
-2008-06-06 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- <rdar://problem/5969992> JSProfiler: Remove the recursion limit in the
- profiler.
- - Change the remaining functions that do not take arguments, from using
- recursion to using iteration.
-
- * JavaScriptCore.exp:
- * profiler/Profile.cpp:
- (KJS::stopProfiling):
- (KJS::restoreAll):
- (KJS::Profile::stopProfiling): Use foreach instead of recursion.
- (KJS::Profile::restoreAll): Ditto.
- * profiler/Profile.h:
- * profiler/ProfileNode.cpp: Remove recursion.
- (KJS::ProfileNode::stopProfiling):
- (KJS::ProfileNode::restore):
- * profiler/ProfileNode.h:
-
-2008-06-05 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Alexey.
-
- Fix Greater and GreaterEq nodes to emit code for the left
- and right sub-expressions in the correct order.
-
- * kjs/nodes.cpp:
- (KJS::GreaterNode::emitCode):
- (KJS::GreaterEqNode::emitCode):
-
-2008-06-05 Antti Koivisto <antti@apple.com>
-
- Reviewed by Alp Toker.
-
- Fix whitespaces.
-
- * kjs/collector.cpp:
- (KJS::getPlatformThreadRegisters):
-
-2008-06-05 Antti Koivisto <antti@apple.com>
-
- Reviewed by Darin.
-
- Support compiling JavaScriptCore for ARM.
-
- * kjs/collector.cpp:
- (KJS::getPlatformThreadRegisters):
- (KJS::otherThreadStackPointer):
-
-2008-06-05 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Jon.
-
- - Name changes.
-
- * JavaScriptCore.exp:
- * profiler/Profile.cpp:
- (KJS::Profile::Profile):
- (KJS::Profile::stopProfiling):
- (KJS::Profile::didExecute):
- (KJS::Profile::forEach):
- (KJS::Profile::debugPrintData):
- (KJS::Profile::debugPrintDataSampleStyle):
- * profiler/Profile.h:
- (KJS::Profile::callTree):
- (KJS::Profile::totalTime):
- (KJS::Profile::sortTotalTimeDescending):
- (KJS::Profile::sortTotalTimeAscending):
- (KJS::Profile::sortSelfTimeDescending):
- (KJS::Profile::sortSelfTimeAscending):
- (KJS::Profile::sortCallsDescending):
- (KJS::Profile::sortCallsAscending):
- (KJS::Profile::sortFunctionNameDescending):
- (KJS::Profile::sortFunctionNameAscending):
- (KJS::Profile::focus):
- (KJS::Profile::exclude):
- (KJS::Profile::restoreAll):
-
-2008-06-05 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Stephanie Lewis.
-
- Added the -fno-move-loop-invariants flag to the pcre_exec.cpp build, to
- tell GCC not to perform loop invariant motion, since GCC's loop
- invariant motion doesn't do very well with computed goto code.
-
- SunSpider reports no change.
-
-2008-06-05 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Stephanie Lewis.
-
- Added the -fno-tree-pre flag to the Machine.cpp build, to tell GCC not
- to perform Partial Redundancy Elimination (PRE) on trees in Machine.cpp,
- since GCC's PRE doesn't do very well with computed goto code.
-
- SunSpider reports a .7% speedup.
-
-2008-06-05 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Stephanie Lewis (or maybe the other way around).
-
- Minor change to PCRE to help out certain compilers.
-
- SunSpider reports no change, maybe a small speedup.
-
- * pcre/pcre_exec.cpp:
- (match): Use instructionPtr++ a little less, to avoid confusing the
- optimizer.
-
-2008-06-05 Alexey Proskuryakov <ap@webkit.org>
-
- Re-landing an independent part of a previously rolled out threading patch.
-
- * wtf/ThreadSpecific.h: Make sure to initialize POD thread-specific varaibles, too
- (replaced "new T" with "new T()").
-
-2008-06-05 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Hyatt.
-
- - force inlining of a template function that only has one call site per specialization
- 1.3% speedup on SunSpider
-
- * kjs/collector.cpp:
- (KJS::Collector::heapAllocate): This template function is only
- called from allocate() and allocateNumber() (once per
- specialization) and the extra call overhead for GC allocation
- shows up, so force inlining.
-
-2008-06-05 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Alexey and Oliver.
-
- - remove profiler fetch hack
- I measure an 0.5% progression from this, others show a wash. It seems not needed any more.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-06-05 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Bug 19400: subscript operator does not protect base when necessary
- <https://bugs.webkit.org/show_bug.cgi?id=19400>
-
- Use a temporary for the base in BracketAccessorNode if the subscript
- might possibly modify it.
-
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::BracketAccessorNode::emitCode):
- * kjs/nodes.h:
- (KJS::BracketAccessorNode::):
-
-2008-06-04 Sam Weinig <sam@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- Big cleanup of formatting and whitespace.
-
-2008-06-04 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Add an option to dump statistics on executed instructions.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.cpp:
- (KJS::OpcodeStats::~OpcodeStats):
- (KJS::OpcodeStats::recordInstruction):
- * VM/Opcode.h:
-
-2008-06-04 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Geoff.
-
- <rdar://problem/5969992> JSProfiler: Remove the recursion limit in the
- profiler.
- - This patch removes the use of recursion for the sort functions.
-
- * JavaScriptCore.exp: Change the signatures of the functions being
- exported.
- * profiler/Profile.cpp:
- (KJS::Profile::sort): This generic function will accept any of the
- static sort functions and apply them to the whole tree.
- * profiler/Profile.h: All of the sorting functions now call the new
- sort() function.
- (KJS::Profile::sortTotalTimeDescending):
- (KJS::Profile::sortTotalTimeAscending):
- (KJS::Profile::sortSelfTimeDescending):
- (KJS::Profile::sortSelfTimeAscending):
- (KJS::Profile::sortCallsDescending):
- (KJS::Profile::sortCallsAscending):
- (KJS::Profile::sortFunctionNameDescending):
- (KJS::Profile::sortFunctionNameAscending):
- * profiler/ProfileNode.cpp:
- (KJS::ProfileNode::ProfileNode): m_head used to point to the head node
- if this was the head node. It now points to null to make iteration easy
- (KJS::ProfileNode::willExecute): Now must check if m_head is null, this
- check used to happend in the constructor.
- (KJS::ProfileNode::stopProfiling): Again the check is slightly different
- to determine if this is the head.
- (KJS::ProfileNode::traverseNextNode): This function returns the next
- node in post order.
- (KJS::ProfileNode::sort): This generic function will sort according to
- the comparator passed in, then reset the children pointers to macth the
- new order.
- * profiler/ProfileNode.h: The sorting function were removed from the
- definition file and instead use the new generic sort() function
- (KJS::ProfileNode::totalPercent): because the head can now be empty we
- need to check here too for the head node.
- (KJS::ProfileNode::selfPercent): Ditto
- (KJS::ProfileNode::firstChild): This function is necessary for the
- iterative algorithm in Profile.cpp.
- (KJS::ProfileNode::sortTotalTimeDescending):
- (KJS::ProfileNode::sortTotalTimeAscending):
- (KJS::ProfileNode::sortSelfTimeDescending):
- (KJS::ProfileNode::sortSelfTimeAscending):
- (KJS::ProfileNode::sortCallsDescending):
- (KJS::ProfileNode::sortCallsAscending):
- (KJS::ProfileNode::sortFunctionNameDescending):
- (KJS::ProfileNode::sortFunctionNameAscending):
- (KJS::ProfileNode::childrenBegin):
- (KJS::ProfileNode::childrenEnd):
- (KJS::ProfileNode::totalTimeDescendingComparator):
- (KJS::ProfileNode::totalTimeAscendingComparator):
- (KJS::ProfileNode::selfTimeDescendingComparator):
- (KJS::ProfileNode::selfTimeAscendingComparator):
- (KJS::ProfileNode::callsDescendingComparator):
- (KJS::ProfileNode::callsAscendingComparator):
- (KJS::ProfileNode::functionNameDescendingComparator):
- (KJS::ProfileNode::functionNameAscendingComparator):
-
-2008-06-04 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Fix JSClassCreate to work with old JSCore API threading model.
-
- No change on SunSpider.
-
- * API/JSClassRef.cpp: (OpaqueJSClass::OpaqueJSClass): Since JSClass is constructed without
- a context, there is no way for it to create Identifiers.
- Also, added initializeThreading(), just for good measure.
-
- * API/JSCallbackObjectFunctions.h: (KJS::::getPropertyNames): Make an Identifier out of the
- string here, because propertyNames.add() needs that.
-
- * kjs/identifier.cpp:
- * kjs/identifier.h:
- (KJS::Identifier::equal):
- * kjs/ustring.cpp:
- (KJS::equal):
- Moved equal() from identifier.h to ustring.h, because it's not really about Identifiers,
- and to make it possible to use it from StrHash.
- Include StrHash.h from ustring.h to avoid having the behavior depend on headers that happen
- to be included.
-
- * wtf/StrHash.h: Removed.
- * kjs/ustring.h: Made RefPtr<UString::Rep> use the same default hash as UString::Rep* (it
- used to default to pointer equality). Moved the whole StrHash header into ustring.h.
-
- * JavaScriptCore.exp: Export equal() for WebCore use (this StrHash is used in c_class.cpp,
- jni_class.cpp, and npruntime.cpp).
-
-2008-06-04 Alexey Proskuryakov <ap@webkit.org>
-
- Rubber-stamped by Darin.
-
- Fix spacing in collector.{h,cpp}.
-
- * kjs/collector.cpp:
- * kjs/collector.h:
-
-2008-06-03 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Build fix. The cleanup in r34355 missed a method.
-
- * kjs/nodes.cpp:
- * kjs/nodes.h:
-
-2008-06-03 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- - https://bugs.webkit.org/show_bug.cgi?id=19269
- speed up SunSpider by eliminating the toObject call for most get/put/delete
-
- Makes standalone SunSpider 1.025x as fast as before.
-
- The getOwnPropertySlot virtual function now takes care of the toObject call
- for get. Similarly, the put function (and later deleteProperty) does the
- same for those operations. To do this, the virtual functions were moved from
- the JSObject class to the JSCell class. Also, since the caller no longer knows
- the identity of the "original object", which is used by JavaScript-function
- based getters, changed the PropertySlot class so the original object is
- already stored in the slot when getOwnPropertySlot is called, if the caller
- intends to call getValue.
-
- This affected the old interpreter code enough that the easiest thing for me
- was to just delete it. While I am not certain the mysterious slowdown is not
- still occurring, the net change is definitely a significant speedup.
-
- * JavaScriptCore.exp: Updated.
-
- * VM/Machine.cpp: Moved the UNLIKELY macro into AlwaysInline.h.
- (KJS::resolve): Set up the originalObject in the PropertySlot before
- calling getPropertySlot. Also removed the originalObject argument from
- getValue.
- (KJS::resolve_skip): Ditto.
- (KJS::resolveBaseAndProperty): Ditto.
- (KJS::resolveBaseAndFunc): Ditto.
- (KJS::Machine::privateExecute): Removed the toObject calls from the get and
- put functions where possible, instead calling directly with JSValue and letting
- the JSValue and JSCell calls handle toObject. Same for toThisObject.
-
- * kjs/ExecState.h: Removed OldInterpreterExecState.
-
- * API/JSBase.cpp: Updated includes.
-
- * kjs/LocalStorageEntry.h: Removed contents. Later we can remove the file too.
-
- * kjs/array_instance.cpp:
- (KJS::ArrayInstance::lengthGetter): Removed originalObject argumet.
- (KJS::ArrayInstance::inlineGetOwnPropertySlot): Don't pass a base value to
- setValueSlot. Also use UNLIKELY around the "getting elements past the end of
- the array" code path; less common than successfully getting an element.
-
- * kjs/array_object.cpp:
- (KJS::getProperty): Initialize the PropertySlot with the original object.
- Don't pass the original object to the get function.
- (KJS::arrayProtoFuncFilter): Ditto.
- (KJS::arrayProtoFuncMap): Ditto.
- (KJS::arrayProtoFuncEvery): Ditto.
- (KJS::arrayProtoFuncForEach): Ditto.
- (KJS::arrayProtoFuncSome): Ditto.
-
- * kjs/function_object.cpp:
- (KJS::FunctionObjectImp::construct): Removed an obsolete comment.
-
- * kjs/grammar.y: Eliminated support for some of the node types that were
- used to optimize executing from the syntax tree.
-
- * kjs/internal.cpp:
- (KJS::StringImp::toThisObject): Added. Same as toObject.
- (KJS::NumberImp::toThisObject): Ditto.
- (KJS::GetterSetterImp::getOwnPropertySlot): Added. Not reached.
- (KJS::GetterSetterImp::put): Ditto.
- (KJS::GetterSetterImp::toThisObject): Ditto.
-
- * kjs/internal.h: Added toThisObject to NumberImp for speed.
-
- * kjs/lexer.cpp:
- (KJS::Lexer::shift): Changed shift to just do a single character, to unroll
- the loop and especially to make the one character case faster.
- (KJS::Lexer::setCode): Call shift multiple times instead of passing a number.
- (KJS::Lexer::lex): Ditto.
- (KJS::Lexer::matchPunctuator): Ditto. Also removed unneeded elses after returns.
- (KJS::Lexer::scanRegExp): Ditto.
- * kjs/lexer.h: Removed the count argument from shift.
-
- * kjs/math_object.cpp:
- (KJS::mathProtoFuncPow): Call jsNaN instead of jsNumber(NaN).
-
- * kjs/nodes.cpp: Removed some of the things needed only for the pre-SquirrelFish
- execution model.
- (KJS::ForNode::emitCode): Handle cases where some expressions are missing by
- not emitting any code at all. The old way was to emit code for "true", but
- this is an unnecessary remnant of the old way of doing things.
-
- * kjs/nodes.h: Removed some of the things needed only for the pre-SquirrelFish
- execution model.
-
- * kjs/object.cpp:
- (KJS::JSObject::fillGetterPropertySlot): Changed to only pass in the getter
- function. The old code passed in a base, but it was never used when
- actually getting the property; the toThisObject call was pointless. Also
- changed to not pass a base for setUndefined.
-
- * kjs/object.h: Added the new JSCell operations to GetterSetterImp.
- Never called.
- (KJS::JSObject::get): Initialize the object in the PropertySlot and don't
- pass it in getValue.
- (KJS::JSObject::getOwnPropertySlotForWrite): Removed the base argument
- in calls to setValueSlot.
- (KJS::JSObject::getOwnPropertySlot): Ditto.
- (KJS::JSValue::get): Added. Here because it calls through to JSObject.
- A version of JSObject::get that also handles the other types of JSValue
- by creating the appropriate wrapper. Saves the virtual call to toObject.
- (KJS::JSValue::put): Ditto.
- (KJS::JSValue::deleteProperty): Ditto.
-
- * kjs/property_slot.cpp:
- (KJS::PropertySlot::undefinedGetter): Removed the originalObject argument.
- (KJS::PropertySlot::ungettableGetter): Ditto.
- (KJS::PropertySlot::functionGetter): Ditto. Use the value in the base
- as the "this" object, which will be set to the original object by the new
- PropertySlot initialization code. Also call toThisObject. The old code did
- not do this, but needed to so we can properly handle the activation object
- like the other similar code paths.
-
- * kjs/property_slot.h:
- (KJS::PropertySlot::PropertySlot): Added a constructor that takes a base
- object. In debug builds, set the base to 0 if you don't pass one.
- (KJS::PropertySlot::getValue): Don't take or pass the originalObject.
- (KJS::PropertySlot::setValueSlot): Don't take a base object, and clear the
- base object in debug builds.
- (KJS::PropertySlot::setGetterSlot): Ditto.
- (KJS::PropertySlot::setUndefined): Ditto.
- (KJS::PropertySlot::setUngettable): Ditto.
- (KJS::PropertySlot::slotBase): Assert that a base object is present.
- This will fire if someone actually calls the get function without having
- passed in a base object and the getter needs it.
- (KJS::PropertySlot::setBase): Added. Used by the code that implements
- toObject so it can supply the original object after the fact.
- (KJS::PropertySlot::clearBase): Added. Clears the base, but is debug-only
- code because it's an error to fetch the base if you don't have a guarantee
- it was set.
-
- * API/JSCallbackObject.h:
- * API/JSCallbackObjectFunctions.h:
- (KJS::JSCallbackObject::cachedValueGetter):
- (KJS::JSCallbackObject::staticValueGetter):
- (KJS::JSCallbackObject::staticFunctionGetter):
- (KJS::JSCallbackObject::callbackGetter):
- * kjs/JSActivation.cpp:
- (KJS::JSActivation::getOwnPropertySlot):
- (KJS::JSActivation::argumentsGetter):
- * kjs/JSActivation.h:
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::symbolTableGet):
- * kjs/array_instance.h:
- * kjs/function.cpp:
- (KJS::FunctionImp::argumentsGetter):
- (KJS::FunctionImp::callerGetter):
- (KJS::FunctionImp::lengthGetter):
- (KJS::Arguments::mappedIndexGetter):
- * kjs/function.h:
- * kjs/lookup.h:
- (KJS::staticFunctionGetter):
- (KJS::staticValueGetter):
- * kjs/string_object.cpp:
- (KJS::StringInstance::lengthGetter):
- (KJS::StringInstance::indexGetter):
- (KJS::stringInstanceNumericPropertyGetter):
- * kjs/string_object.h:
- Removed originalObject arguments from getters. Don't pass base values to
- the various PropertySlot functions that no longer take them.
-
- * kjs/value.cpp:
- (KJS::JSCell::getOwnPropertySlot): Added. Calls toObject and then sets the slot.
- This function has to always return true, because the caller can't walk the prototype
- chain. Because of that, we do a getPropertySlot, not getOwnPropertySlot, which works
- for the caller. This is private, only called by getOwnPropertySlotInternal.
- (KJS::JSCell::put): Added. Calls toObject and then put.
- (KJS::JSCell::toThisObject): Added. Calls toObject.
-
- * kjs/value.h: Added get, put, and toThisObject to both JSValue
- and JSCell. These take care of the toObject operation without an additional virtual
- function call, and so make the common "already an object" case faster.
-
- * wtf/AlwaysInline.h: Moved the UNLIKELY macro here for now. Maybe we can find a
- better place later, or rename this header.
-
-2008-06-03 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Tim.
-
- Bug 12983: Web Inspector break on the debugger keyword
- <https://bugs.webkit.org/show_bug.cgi?id=12983>
-
- Added a DebuggerStatementNode to handle codegen, and added a new
- DidReachBreakPoint debug event (which will hopefully be useful
- if we ever move breakpoint management into JSC proper). Also
- added didReachBreakpoint to Debugger to allow us to actually respond
- to this event.
-
- * VM/CodeBlock.cpp:
- (KJS::debugHookName):
- * VM/Machine.cpp:
- (KJS::Machine::debug):
- * VM/Machine.h:
- * kjs/debugger.h:
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::DebuggerStatementNode::emitCode):
- (KJS::DebuggerStatementNode::execute):
- * kjs/nodes.h:
- (KJS::DebuggerStatementNode::):
- * kjs/nodes2string.cpp:
- (KJS::DebuggerStatementNode::streamTo):
-
-2008-06-03 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - document remaining opcodes.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): Document call, call_eval,
- construct, ret and end opcodes.
-
-2008-06-03 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): Document throw and catch opcodes.
-
-2008-06-02 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Removed JSObject::call, since it just called JSObject::callAsFunction.
-
- SunSpider reports no change.
-
-2008-06-02 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- A little cleanup in the CodeGenerator.
-
- * VM/CodeGenerator.cpp: A few changes here.
-
- (1) Removed remaining cases of the old hack of putting "this" into the
- symbol table; replaced with explicit tracking of m_thisRegister.
-
- (2) Made m_thisRegister behave the same for function, eval, and program
- code, removing the static programCodeThis() function.
-
- (3) Added a feature to nix a ScopeNode's declaration stacks when done
- compiling, to save memory.
-
- (4) Removed code that copied eval declarations into special vectors: we
- just use the originals in the ScopeNode now.
-
- * VM/CodeGenerator.h: Removed unneded parameters from the CodeGenerator
- constructor: we just use get that data from the ScopeNode now.
-
- * VM/Machine.cpp:
- (KJS::Machine::execute): When executing an eval node, don't iterate a
- special copy of its declarations; iterate the originals, instead.
-
- * kjs/nodes.cpp: Moved responsibility for knowing what AST data to throw
- away into the CodeGenerator. Nodes no longer call shrinkCapacity on
- their data directly.
-
- * kjs/nodes.h: Changed FunctionStack to ref its contents, so declaration
- data stays around even after we've thrown away the AST, unless we explicitly
- throw away the declaration data, too. This is useful for eval code, which
- needs to reference its declaration data at execution time. (Soon, it will
- be useful for program code, too, since program code should do the same.)
-
-2008-06-02 Adam Roben <aroben@apple.com>
-
- Build fix for non-AllInOne builds
-
- * kjs/array_object.cpp: Added a missing #include.
-
-2008-06-02 Kevin McCullough <kmccullough@apple.com>
-
- Took out accidental confilct lines I checked in.
-
- * ChangeLog:
-
-2008-06-02 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin.
-
- <rdar://problem/5969992> JSProfiler: Remove the recursion limit in the
- profiler
- Implement Next Sibling pointers as groundwork for removing the recursion
- limit in the profiler.
-
- * profiler/ProfileNode.cpp: Also I renamed parentNode and headNode since
- 'node' is redundant.
- (KJS::ProfileNode::ProfileNode): Initialize the nextSibling.
- (KJS::ProfileNode::willExecute): If there are already children then the
- new child needs to be the nextSibling of the last child.
- (KJS::ProfileNode::didExecute):
- (KJS::ProfileNode::addChild): Ditto.
- (KJS::ProfileNode::stopProfiling):
- (KJS::ProfileNode::sortTotalTimeDescending): For all of the sorting
- algorithms once the children are sorted their nextSibling pointers need
- to be reset to reflect the new order.
- (KJS::ProfileNode::sortTotalTimeAscending):
- (KJS::ProfileNode::sortSelfTimeDescending):
- (KJS::ProfileNode::sortSelfTimeAscending):
- (KJS::ProfileNode::sortCallsDescending):
- (KJS::ProfileNode::sortCallsAscending):
- (KJS::ProfileNode::sortFunctionNameDescending):
- (KJS::ProfileNode::sortFunctionNameAscending):
- (KJS::ProfileNode::resetChildrensSiblings): This new function simply
- loops over all of the children and sets their nextSibling pointers to
- the next child in the Vector
- (KJS::ProfileNode::debugPrintData):
- * profiler/ProfileNode.h:
- (KJS::ProfileNode::parent):
- (KJS::ProfileNode::setParent):
- (KJS::ProfileNode::nextSibling):
- (KJS::ProfileNode::setNextSibling):
- (KJS::ProfileNode::totalPercent):
- (KJS::ProfileNode::selfPercent):
-
-2008-06-02 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Removed the recursion limit from JSObject::call, since the VM does
- recursion checking now.
-
- This should allow us to remove JSObject::call entirely, netting a small
- speedup.
-
- * kjs/object.cpp:
- (KJS::JSObject::call):
-
-2008-06-02 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Adele Peterson.
-
- Added a specific affordance for avoiding stack overflow when converting
- recursive arrays to string, in preparation for removing generic stack
- overflow checking from JSObject::call.
-
- Tested by fast/js/toString-stack-overflow.html.
-
-2008-06-02 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Alice Liu.
-
- Refactored some hand-rolled code to call ScopeChain::globalObject instead.
-
-2008-06-02 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Fixed ASSERT due to execution continuing after an exception is thrown
- during array sort.
-
- * kjs/array_instance.cpp:
- (KJS::AVLTreeAbstractorForArrayCompare::compare_key_key): Don't call the
- custom comparator function if an exception has been thrown. Just return
- 1 for everything, so the sort completes quickly. (The result will be
- thrown away.)
-
-2008-05-30 Timothy Hatcher <timothy@apple.com>
-
- Made the starting line number of scripts be 1-based throughout the engine.
- This cleans up script line numbers so they are all consistent now and fixes
- some cases where script execution was shown as off by one line in the debugger.
-
- No change in SunSpider.
-
- Reviewed by Oliver Hunt.
-
- * API/minidom.c:
- (main): Pass a line number of 1 instead of 0 to parser().parse().
- * API/testapi.c:
- (main): Ditto. And removes a FIXME and changed an assertEqualsAsNumber
- to use 1 instead of 2 for the line number.
- * VM/Machine.cpp:
- (KJS::callEval): Pass a line number of 1 instead of 0.
- (KJS::Machine::debug): Use firstLine for WillExecuteProgram instead of
- lastLine. Use lastLine for DidExecuteProgram instead of firstLine.
- * kjs/DebuggerCallFrame.cpp:
- (KJS::DebuggerCallFrame::evaluate): Pass a line number of 1 instead of
- 0 to parser().parse().
- * kjs/Parser.cpp:
- (KJS::Parser::parse): ASSERT startingLineNumber is greatter than 0. Change
- the startingLineNumber to be 1 if it was less than or equal to 0. This is needed
- for release builds to maintain compatibility with the JavaScriptCore API.
- * kjs/function.cpp:
- (KJS::globalFuncEval): Pass a line number of 1 instead of 0 to parser().parse().
- * kjs/function_object.cpp:
- (FunctionObjectImp::construct): Pass a line number of 1 instead of 0 to construct().
- * kjs/lexer.cpp:
- (Lexer::setCode): Made yylineno = startingLineNumber instead of adding 1.
- * kjs/testkjs.cpp:
- (functionRun): Pass a line number of 1 instead of 0 to Interpreter::evaluate().
- (functionLoad): Ditto.
- (prettyPrintScript): Ditto.
- (runWithScripts): Ditto.
- * profiler/Profiler.cpp:
- (WebCore::createCallIdentifier): Removed a plus 1 of startingLineNumber.
-
-2008-05-30 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- https://bugs.webkit.org/show_bug.cgi?id=19180
- speed up SunSpider by optimizing immediate number cases
-
- Also fixed a JavaScriptCore regression seen on PowerPC - we didn't clip left shift
- parameter to 0...31.
-
- 0.5% improvement on SunSpider overall, although a 8.5 regression on bitops-3bit-bits-in-byte.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
- * kjs/JSImmediate.h:
- (KJS::JSImmediate::toTruncatedUInt32): Added. Same as getTruncatedInt32, but casts the result
- to unsigned.
-
-2008-05-30 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- https://bugs.webkit.org/show_bug.cgi?id=19180
- speed up SunSpider by optimizing immediate number cases
-
- Also fixed two JavaScriptCore regressions seen on PowerPC - we didn't clip right shift
- parameter to 0...31.
-
- 1.6% improvement on SunSpider, without significant regressions on any tests.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- Added fast paths for >>, ==, ===, !=, !==. Changed order of memory accesses in many
- cases, making them less dependent on gcc's ability to properly assign registers. With this,
- I could move exception checks back into slow code paths, and saw less randomness in general.
-
- * kjs/JSImmediate.h:
- (KJS::JSImmediate::rightShiftImmediateNumbers):
- Added.
-
-2008-05-29 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - fixed <rdar://problem/5972943> REGRESSION(r33979): Flash clips do not play on cnn.com
-
- Finally blocks could clobber registers that had to remain live
- until they returned. This patch takes a conservative approach and
- makes sure that finally blocks do not reuse any registers that
- were previously allocated for the function. In the future this
- could probably be tightened up to be less profligate with the
- register allocation.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::highestUsedRegister):
- * VM/CodeGenerator.h:
- * kjs/nodes.cpp:
- (KJS::TryNode::emitCode):
-
-2008-05-29 Steve Falkenburg <sfalken@apple.com>
-
- Build fix.
-
- * kjs/array_instance.cpp:
-
-2008-05-29 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- https://bugs.webkit.org/show_bug.cgi?id=19294
- <rdar://problem/5969062> A crash when iterating over a sparse array backwards.
-
- * kjs/array_instance.cpp: Turned sparseArrayCutoff into a macro, so that using max() on it
- doesn't cause a PIC branch.
- (KJS::ArrayInstance::increaseVectorLength): Added a comment about this function not
- preserving class invariants.
- (KJS::ArrayInstance::put): Update m_storage after reallocation. Move values that fit to
- the vector from the map in all code paths.
-
-2008-05-29 Thiago Macieira <tjmaciei@trolltech.com>
-
- Reviewed by Simon.
-
- Fix compilation in Solaris with Sun CC
-
- Lots of WebKit code uses C99 functions that, strict as it
- is, the Solaris system doesn't provide in C++. So we must define them
- for both GCC and the Sun CC.
-
- * wtf/MathExtras.h:
-
-2008-05-28 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Anders.
-
- Fix codegen for assignment being used as a function.
-
- FunctionCallValueNode::emitCode failed to account for the
- potential of the function expression to allocate arbitrary
- registers.
-
- * kjs/nodes.cpp:
- (KJS::FunctionCallValueNode::emitCode):
-
-2008-05-27 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Tim Hatcher.
-
- Fixed https://bugs.webkit.org/show_bug.cgi?id=19183
- REGRESSION (r33979): Crash in DebuggerCallFrame::functionName when
- clicking button in returnEvent-crash.html
-
- Added two new debugger hooks, willExecuteProgram and didExecuteProgram,
- along with code to generate them, code to invoke them when unwinding
- due to an exception, and code to dump them.
-
- SunSpider reports no change.
-
- * VM/CodeBlock.cpp:
- (KJS::debugHookName): I had to mark this function NEVER_INLINE to avoid
- a .4% performance regression. The mind boggles.
-
-2008-05-28 Adam Roben <aroben@apple.com>
-
- Fix JavaScriptCore tests on OS X
-
- We were quoting the path to testkjs too late, after it had already
- been combined with spaces and other options.
-
- * tests/mozilla/jsDriver.pl:
- (top level): Move path quoting from here...
- (sub get_kjs_engine_command): ...to here.
-
-2008-05-28 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Oliver.
-
- <rdar://problem/5968071> "const f" crashes in JavaScriptCore
-
- Make sure to null check the initializer.
-
- * kjs/nodes.cpp:
- (KJS::ConstDeclNode::emitCodeSingle):
-
-2008-05-28 Adam Roben <aroben@apple.com>
-
- Make run-javascriptcore-tests work with a space in the path to testkjs
-
- Reviewed by Alexey Proskuryakov.
-
- * tests/mozilla/jsDriver.pl: Quote the path to the engine so that
- spaces will be interpreted correctly.
-
-2008-05-28 Alexey Proskuryakov <ap@webkit.org>
-
- Fixed a misguiding comment - my measurement for negative numbers only included cases
- where both operands were negative, which is not very interesting.
-
- * VM/Machine.cpp:
-
-2008-05-28 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Maciej.
-
- Based on a patch by Oliver Hunt.
-
- https://bugs.webkit.org/show_bug.cgi?id=19180
- speed up SunSpider by optimizing immediate number cases
-
- 1.4% speedup on SunSpider.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * kjs/JSImmediate.h:
- (KJS::JSImmediate::incImmediateNumber):
- (KJS::JSImmediate::decImmediateNumber):
- Added fast paths for ++ and --.
-
- (KJS::JSImmediate::canDoFastAdditiveOperations): Corrected a comment.
-
-2008-05-28 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- https://bugs.webkit.org/show_bug.cgi?id=19180
- speed up SunSpider by optimizing immediate number cases
-
- 2% speedup overall, maximum 10% on controlflow-recursive and bitops-3bit-bits-in-byte,
- but a 4% regression on bitops-bits-in-byte and bitops-bitwise-and.
-
- * kjs/JSImmediate.h:
- (KJS::JSImmediate::canDoFastAdditiveOperations):
- (KJS::JSImmediate::addImmediateNumbers):
- (KJS::JSImmediate::subImmediateNumbers):
- Added fast cases that work with positive values less than 2^30.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): Use the above operations. Also updated SunSpider frequencies
- with my results (looks like tag values have changed, not sure what caused the minor variation
- in actual frequencies).
-
-2008-05-27 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
- Remove code that appended Cygwin's /bin directory to PATH.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
- Prepend Cygwin's /bin directory to PATH. We prepend instead of append
- so that Cygwin's utilities will win out over Win32 versions of the
- same utilities (particularly perl). We do the prepend here instead of
- in the Makefile because nmake doesn't seem to like prepending to PATH
- inside the Makefile. This also matches the way WebCoreGenerated works.
-
-2008-05-27 Adam Roben <aroben@apple.com>
-
- Roll out r34163
-
- A better fix is on the way.
-
- * DerivedSources.make:
- * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
-
-2008-05-27 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * DerivedSources.make: Don't generate the bytecode docs if
- OMIT_BYTECODE_DOCS is set to 1.
- * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Set
- OMIT_BYTECODE_DOCS for production builds.
-
-2008-05-27 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Geoff and Maciej.
-
- <rdar://problem/5806428>
- https://bugs.webkit.org/show_bug.cgi?id=17925
- Crash in KJS::JSObject::put after setting this.__proto__
-
- Set slotIsWriteable to false for __proto__, we want setting __proto__ to go through JSObject::put instead.
-
- * kjs/object.h:
- (KJS::JSObject::getOwnPropertySlotForWrite):
-
-2008-05-27 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fixes to catch up with SquirrelFish, etc.
-
- * JavaScriptCoreSources.bkl:
- * jscore.bkl:
- * wtf/Platform.h:
-
-2008-05-27 Darin Adler <darin@apple.com>
-
- Reviewed by Tim Hatcher.
-
- - https://bugs.webkit.org/show_bug.cgi?id=19180
- speed up SunSpider by optimizing immediate number cases
-
- Add immediate number cases for the &, |, and ^ operators.
- Makes standalone SunSpider 1.010x faster.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): Add areBothImmediateNumbers special cases
- for the &, |, and ^ operators.
-
- * kjs/JSImmediate.h:
- (KJS::JSImmediate::xorImmediateNumbers): Added.
- (KJS::JSImmediate::orImmediateNumbers): Added.
-
-2008-05-26 Stephanie Lewis <slewis@apple.com>
-
- Windows build fix.
-
- * kjs/testkjs.cpp:
-
-2008-05-26 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Anders.
-
- - make addStaticGlobals protected instead of private so subclasses can use it
-
- * JavaScriptCore.exp:
- * kjs/JSGlobalObject.h:
-
-2008-05-26 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Fixed <rdar://problem/5960859> After an eval of a non-string or a syntax
- error, all profile stack frames are incorrect
-
- SunSpider reports a .3% speedup, possibly because eval of a string is a
- little more efficient now.
-
- * VM/Machine.cpp:
- (KJS::callEval): Make sure to call didExecute when returning early. I
- simplified this function to remove one early return, making the job
- of adding special code to early returns easier.
-
- (KJS::Machine::execute): Use the new function ExecState when notifying
- the profiler. (This doesn't change behavior now, but it might prevent
- subtle errors in the future.)
-
-2008-05-23 Tor Arne Vestbø <tavestbo@trolltech.com>
-
- Reviewed by Simon.
-
- Fixed toLower and toUpper implementations to allow being called
- with a null result pointer and resultLength, to determine the
- number of characters needed for the case conversion.
-
- * wtf/unicode/qt4/UnicodeQt4.h:
- (WTF::Unicode::toLower):
- (WTF::Unicode::toUpper):
-
-2008-05-25 Alexey Proskuryakov <ap@webkit.org>
-
- Fixing a typo in the previous commit made as a last minute change.
-
- * kjs/regexp_object.cpp:
-
-2008-05-24 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Changed regular expression matching result array to be lazily filled, because many callers
- only care about it being non-null.
-
- 2% improvement on Acid3 test 26.
-
- * kjs/array_instance.cpp: Added a void* member to ArrayStorage for ArrayInstance subclasses
- to use.
- * kjs/array_instance.h:
- (KJS::ArrayInstance::lazyCreationData):
- (KJS::ArrayInstance::setLazyCreationData):
- Added methods to access it from subclasses.
-
- * kjs/regexp_object.cpp:
- (KJS::RegExpMatchesArray::RegExpMatchesArray):
- (KJS::RegExpMatchesArray::getOwnPropertySlot):
- (KJS::RegExpMatchesArray::put):
- (KJS::RegExpMatchesArray::deleteProperty):
- (KJS::RegExpMatchesArray::getPropertyNames):
- (KJS::RegExpMatchesArray::fillArrayInstanceIfNeeded):
- (KJS::RegExpMatchesArray::~RegExpMatchesArray):
- (KJS::RegExpObjectImp::arrayOfMatches):
- RegExpMatchesArray is a subclass of ArrayInstance that isn't filled until
- accessed for the first time.
-
-2008-05-24 Alp Toker <alp@nuanti.com>
-
- Win32/gcc build fix. Remove MSVC assumption.
-
- * wtf/TCSpinLock.h:
- (TCMalloc_SlowLock):
-
-2008-05-24 Oleg Finkelshteyn <olegfink@gmail.com>
-
- Rubber-stamped, tweaked and landed by Alexey.
-
- Build fix for gcc 4.3.
-
- * JavaScriptCore/kjs/testkjs.cpp:
- * JavaScriptCore/VM/CodeBlock.cpp:
- Add missing standard includes.
-
-2008-05-23 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Geoff.
-
- <rdar://problem/5959886> REGRESSION: Assertion failure in JSImmediate::toString when loading GMail (19217)
-
- Change List to store a JSValue*** pointer + an offset instead of a JSValue** pointer to protect against the case where
- a register file changes while a list object points to its buffer.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * kjs/JSActivation.cpp:
- (KJS::JSActivation::createArgumentsObject):
- * kjs/list.cpp:
- (KJS::List::getSlice):
- * kjs/list.h:
- (KJS::List::List):
- (KJS::List::at):
- (KJS::List::append):
- (KJS::List::begin):
- (KJS::List::end):
- (KJS::List::buffer):
-
-2008-05-23 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam.
-
- <rdar://problem/5960012> JSProfiler: Stack overflow if recursion is
- too deep.
- -Use a simple depth limit to restrict too deep of recursion.
-
- * profiler/Profile.cpp:
- (KJS::Profile::willExecute):
- (KJS::Profile::didExecute):
- * profiler/Profile.h:
-
-2008-05-23 Geoffrey Garen <ggaren@apple.com>
-
- Rolling back in r34085, with performance resolved.
-
- Apparently, passing the eval function to callEval gave GCC a hernia.
-
- Reviewed by Darin Adler, Kevin McCullough, and Oliver Hunt.
-
- Fixed <rdar://problem/5959447> Crashes and incorrect reporting in the
- JavaScript profiler
-
- * VM/Machine.cpp:
- (KJS::Machine::unwindCallFrame): Fixed incorrect reporting / a crash
- when unwinding from inside eval and/or program code: detect the
- difference, and do the right thing. Also, be sure to notify the profiler
- *before* deref'ing the scope chain, since the profiler uses the scope chain.
-
- (KJS::Machine::execute): Fixed incorrect reporting / crash when calling
- a JS function re-entrently: Machine::execute(FunctionBodyNode*...)
- should not invoke the didExecute hook, because op_ret already does that.
- Also, use the new function's ExecState when calling out to the profiler.
- (Not important now, but could have become a subtle bug later.)
-
- (KJS::Machine::privateExecute): Fixed a hard to reproduce crash when
- profiling JS functions: notify the profiler *before* deref'ing the scope
- chain, since the profiler uses the scope chain.
-
- * kjs/object.cpp:
- (KJS::JSObject::call): Removed these hooks, because they are now unnecessary.
-
- * profiler/Profile.cpp: Added a comment to explain a subtlety that only
- Kevin and I understood previously. (Now, the whole world can understand!)
-
- * profiler/Profiler.cpp:
- (KJS::shouldExcludeFunction): Don't exclude .call and .apply. That was
- a hack to fix bugs that no longer exist.
-
- Finally, sped things up a little bit by changing the "Is the profiler
- running?" check into an ASSERT, since we only call into the profiler
- when it's running:
-
- (KJS::Profiler::willExecute):
- (KJS::Profiler::didExecute):
-
-2008-05-23 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- - fixed <rdar://problem/5957662> REGRESSION(r33943-r33980): Can't send email , attach file or save as draft from hotmail.com
-
- SunSpider reports no change.
-
- This is a reworking of r34073, which I rolled out because it caused
- lots of crashes.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::CodeGenerator): Use removeDirect to nix old
- properties whose names collide with new functions. (Don't use putWithAttributes
- because that tries to write to the register file, which hasn't grown to
- fit this program yet.)
-
-2008-05-23 Darin Adler <darin@apple.com>
-
- Reviewed by Mark Rowe.
-
- As allocateNumber is used via jsNumberCell outside of JavaScriptCore,
- we need to provide a non-inlined version of it to avoid creating a
- weak external symbol.
-
- * JavaScriptCore.exp:
- * kjs/AllInOneFile.cpp:
- * kjs/collector.cpp:
- (KJS::Collector::allocate):
- (KJS::Collector::allocateNumber):
- * kjs/collector.h:
- (KJS::Collector::allocate):
- (KJS::Collector::inlineAllocateNumber):
- * kjs/value.h:
- (KJS::NumberImp::operator new):
-
-2008-05-23 Geoffrey Garen <ggaren@apple.com>
-
- Rolled out r34073 because it caused lots of layout test crashes.
-
-2008-05-23 Geoffrey Garen <ggaren@apple.com>
-
- Rolled out r34085 because it measured as a 7.6% performance regression.
-
-2008-05-23 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add the
- profiler directory to the include path.
-
-2008-05-23 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Anders.
-
- SQUIRRELFISH: JavaScript error messages are missing informative text
-
- Partial fix.
- Tidy up error messages, makes a couple of them provide slightly more info.
- Inexplicably leads to a 1% SunSpider Progression.
-
- * VM/ExceptionHelpers.cpp:
- (KJS::createError):
- (KJS::createInvalidParamError):
- (KJS::createNotAConstructorError):
- (KJS::createNotAFunctionError):
- * VM/ExceptionHelpers.h:
- * VM/Machine.cpp:
- (KJS::isNotObject):
-
-2008-05-23 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Tim H.
-
- Fix call stack reported by profiler when entering event handlers.
-
- JSObject::call was arbitrarily notifying the profiler when it was
- called, even if it was JS code, which notifies the profile on entry
- in any case.
-
- * kjs/object.cpp:
- (KJS::JSObject::call):
-
-2008-05-16 Alp Toker <alp@nuanti.com>
-
- Build fix for gcc 3. Default constructor required in ExecState,
- used by OldInterpreterExecState.
-
- * kjs/ExecState.h:
- (KJS::ExecState::ExecState):
-
-2008-05-23 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fix <rdar://problem/5954997> global-recursion-on-full-stack.html crashes under guardmalloc.
-
- Growing the register file with uncheckedGrow from within Machine::execute is not safe as the
- register file may be too close to its maximum size to grow successfully. By using grow,
- checking the result and throwing a stack overflow error we can avoid crashing.
-
- * VM/Machine.cpp:
- (KJS::Machine::execute):
- * VM/RegisterFile.h: Remove the now-unused uncheckedGrow.
-
-2008-05-23 Oliver Hunt <oliver@apple.com>
-
- RS=Kevin McCullough
-
- Remove JAVASCRIPT_PROFILER define
-
- * VM/Machine.cpp:
- (KJS::callEval):
- (KJS::Machine::unwindCallFrame):
- (KJS::Machine::execute):
- (KJS::Machine::privateExecute):
- * kjs/config.h:
- * kjs/object.cpp:
- (KJS::JSObject::call):
-
-2008-05-23 Oliver Hunt <oliver@apple.com>
-
- <rdar://problem/5951561> Turn on JavaScript Profiler
-
- Reviewed by Kevin McCullough.
-
- Flipped the switch on the profiler, rearranged how we
- signal the the profiler is active so that calls aren't
- needed in the general case.
-
- Also fixed the entry point for Machine::execute(FunctionBodyNode..)
- to correctly indicate function exit.
-
- Results in a 0.7-1.0% regression in SunSpider :-(
-
- * VM/Machine.cpp:
- (KJS::callEval):
- (KJS::Machine::unwindCallFrame):
- (KJS::Machine::execute):
- (KJS::Machine::privateExecute):
- * kjs/config.h:
- * profiler/Profiler.cpp:
- (KJS::Profiler::profiler):
- (KJS::Profiler::startProfiling):
- (KJS::Profiler::stopProfiling):
- * profiler/Profiler.h:
- (KJS::Profiler::enabledProfilerReference):
-
-2008-05-23 Simon Hausmann <hausmann@webkit.org>
-
- Fix the Qt build by adding profiler/ to the include search path.
-
- * JavaScriptCore.pri:
-
-2008-05-22 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- Fix a bug in the profiler where time in the current function is given to
- (idle).
-
- * profiler/Profile.cpp:
- (KJS::Profile::didExecute): Set the start time and then call didExecute
- to calculate the time spent in this function.
- * profiler/ProfileNode.cpp: Remove confusing calculations that are no
- longer necessary.
- (KJS::ProfileNode::insertNode):
- * profiler/ProfileNode.h: Expose access to the start time to allow the
- simpler time calculations above.
- (KJS::ProfileNode::startTime):
- (KJS::ProfileNode::setStartTime):
-
-2008-05-22 Adam Roben <aroben@apple.com>
-
- Show "(Function object)" instead of "(JSInpectorCallbackWrapper
- object)" in profiles
-
- Reviewed by Kevin McCullough.
-
- * profiler/Profiler.cpp:
- (KJS::createCallIdentifier): Use JSObject::className instead of
- getting the class name from the ClassInfo directly. JSObject
- subclasses can override className to provide a custom class name, and
- it seems like we should honor that.
-
-2008-05-22 Timothy Hatcher <timothy@apple.com>
-
- Added Profile::restoreAll and added ProfileNode::restoreAll
- to the export file.
-
- Reviewed by Adam Roben.
-
- * JavaScriptCore.exp:
- * profiler/Profile.h:
-
-2008-05-22 Alp Toker <alp@nuanti.com>
-
- GTK+ build fix. Add JavaScriptCore/profiler to include path.
-
- * GNUmakefile.am:
-
-2008-05-22 Adam Roben <aroben@apple.com>
-
- Implement sub-millisecond profiling on Windows
-
- Reviewed by Kevin McCullough.
-
- * profiler/ProfileNode.cpp:
- (KJS::getCount): Added. On Windows, we use QueryPerformanceCounter. On
- other platforms, we use getCurrentUTCTimeWithMicroseconds.
- (KJS::ProfileNode::endAndRecordCall): Use getCount instead of
- getCurrentUTCTimeWithMicroseconds.
- (KJS::ProfileNode::startTimer): Ditto.
-
-2008-05-22 Adam Roben <aroben@apple.com>
-
- Fix a profiler assertion when calling a NodeList as a function
-
- Reviewed by Kevin McCullough.
-
- * profiler/Profiler.cpp:
- (KJS::createCallIdentifier): Don't assert when a non-function object
- is called as a function. Instead, build up a CallIdentifier using the
- object's class name.
-
-2008-05-22 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin.
-
- <rdar://problem/5951529> JSProfiler: Allow the profiler to "Exclude" a
- profile node.
- -Implement 'exclude'; where the excluded node attributes its time to its
- parent's self time.
-
- * JavaScriptCore.exp: Export the exclude function.
- * profiler/Profile.h:
- (KJS::Profile::exclude):
- * profiler/ProfileNode.cpp:
- (KJS::ProfileNode::setTreeVisible): New function that allows a change in
- visiblitiy to be propogated to all the children of a node.
- (KJS::ProfileNode::exclude): If the node matches the callIdentifier then
- set the visiblity of this node and all of its children to false and
- attribute it's total time to it's caller's self time.
- * profiler/ProfileNode.h:
-
-2008-05-22 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fix access to static global variables in Windows release builds.
-
- * kjs/JSGlobalObject.h: Don't store a reference to an Identifier
- in GlobalPropertyInfo as the Identifier is likely to be a temporary
- and therefore may be destroyed before the GlobalPropertyInfo.
-
-2008-05-22 Kevin McCullough <kmccullough@apple.com>
-
- Build fix.
-
- * VM/Machine.cpp:
- (KJS::callEval):
-
-2008-05-22 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam.
-
- <rdar://problem/5951561> Turn on JavaScript Profiler
- Get basic JS profiling working.
- Even with this patch the profiler will not be compiled in because we do
- not know the extend, if any, of the performance regression it would cause
- when it is not in use. However with these changes, if the profiler were
- on, it would not crash and show good profiling data.
-
- * VM/Machine.cpp: Instrument the calls sites that are needed for profiling.
- (KJS::callEval):
- (KJS::Machine::unwindCallFrame):
- (KJS::Machine::execute):
- (KJS::Machine::privateExecute):
- * kjs/function.cpp: Ditto.
- (KJS::globalFuncEval):
- * kjs/interpreter.cpp: Ditto.
- (KJS::Interpreter::evaluate):
- * profiler/Profile.cpp:
- (KJS::Profile::willExecute):
- (KJS::Profile::didExecute): Because we do not get a good context when
- startProfiling is called it is possible that m_currentNode will be at the
- top of the known stack when a didExecute() is called. What we then do is
- create a new node that represents the function being exited and insert
- it between the head and the currently known children, since they should
- be children of this new node.
- * profiler/ProfileNode.cpp:
- (KJS::ProfileNode::ProfileNode):
- (KJS::ProfileNode::willExecute): Rename the add function for consistency.
- (KJS::ProfileNode::addChild): Appends the child to this node but also
- sets the parent pointer of the children to this node.
- (KJS::ProfileNode::insertNode): Insert a node between this node and its
- children. Also set the time for the new node since it is now exiting
- and we don't really know when it started.
- (KJS::ProfileNode::stopProfiling):
- (KJS::ProfileNode::startTimer):
- * profiler/ProfileNode.h:
- (KJS::CallIdentifier::toString): Added for debugging.
- (KJS::ProfileNode::setParent):
- (KJS::ProfileNode::setSelfTime): Fixed an old bug where we set the
- visibleTotalTime not the visibleSelfTime.
- (KJS::ProfileNode::children):
- (KJS::ProfileNode::toString): Added for debugging.
- * profiler/Profiler.cpp: remove unecessary calls.
- (KJS::Profiler::startProfiling):
-
-2008-05-22 Sam Weinig <sam@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Rename register arguments for op_call, op_call_eval, op_end, and op_construct
- to document what they are for.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitCall):
- (KJS::CodeGenerator::emitCallEval):
- (KJS::CodeGenerator::emitEnd):
- (KJS::CodeGenerator::emitConstruct):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-05-22 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Darin.
-
- Bug 19116: SquirrelFish shouldn't regress on variable lookups
- <https://bugs.webkit.org/show_bug.cgi?id=19116>
-
- Last of the multiscope look up optimisations. This is a wash overall on SunSpider
- but is a factor of 5-10 improvement in multiscope read/write/modify (eg. ++, --, +=,
- ... applied to any non-local var).
-
- * kjs/nodes.cpp:
- (KJS::PostIncResolveNode::emitCode):
- (KJS::PostDecResolveNode::emitCode):
- (KJS::PreIncResolveNode::emitCode):
- (KJS::PreDecResolveNode::emitCode):
- (KJS::ReadModifyResolveNode::emitCode):
-
-2008-05-22 David Kilzer <ddkilzer@apple.com>
-
- <rdar://problem/5954233> Add method to release free memory from FastMalloc
-
- Patch suggested by Mark Rowe. Rubber-stamped by Maciej.
-
- * JavaScriptCore.exp: Export _releaseFastMallocFreeMemory.
- * wtf/FastMalloc.cpp:
- (WTF::TCMallocStats::): Added releaseFastMallocFreeMemory() for both
- system malloc and FastMalloc code paths.
- * wtf/FastMalloc.h: Define releaseFastMallocFreeMemory().
-
-2008-05-22 Oliver Hunt <oliver@apple.com>
-
- RS=Maciej.
-
- Roll out r34020 as it causes recursion tests to fail.
-
- * kjs/object.cpp:
- (KJS::JSObject::call):
-
-2008-05-22 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Mark.
-
- Don't leak the SymbolTable when compiling eval code.
-
- * kjs/nodes.cpp:
- (KJS::EvalNode::generateCode):
-
-2008-05-22 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Oliver.
-
- Qt build fix.
-
- * JavaScriptCore.pri: Added DebuggerCallFrame to the build.
- * VM/LabelID.h: Include limits.h for UINT_MAX.
- * wtf/VectorTraits.h: Include memory for std::auto_ptr.
-
-2008-05-22 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Adam Roben.
-
- Removed the old recursion guard mechanism, since squirrelfish has its
- own mechanism. Also removed some old JS call tracing code, since we
- have other ways to do that, too.
-
- SunSpider reports no change.
-
- * kjs/object.cpp:
- (KJS::JSObject::call):
-
-2008-05-22 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - fixed <rdar://problem/5954979> crash on celtic kane JS benchmark
-
- * kjs/nodes.cpp:
- (KJS::WithNode::emitCode):
- (KJS::TryNode::emitCode):
-
-2008-05-21 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Maciej and Geoff.
-
- <rdar://problem/5951561> Turn on JavaScript Profiler
- -As part of the effort to turn on the profiler it would be helpful if it
- did not need ExecStates to represent the stack location of the currently
- executing statement.
- -We now create each node as necessary with a reference to the current
- node and each node knows its parent so that the tree can be made without
- the entire stack.
-
- * profiler/Profile.cpp:
- (KJS::Profile::Profile): The current node starts at the head.
- (KJS::Profile::stopProfiling): The current node is cleared when profiling
- stops.
- (KJS::Profile::willExecute): The current node either adds a new child or
- starts and returns a reference to an already existing child if the call
- ID that is requested already exists.
- (KJS::Profile::didExecute): The current node finishes and returns its
- parent.
- * profiler/Profile.h: Use a single callIdentifier instead of a vector
- since we no longer use the whole stack.
- * profiler/ProfileNode.cpp: Now profile nodes keep a reference to their
- parent.
- (KJS::ProfileNode::ProfileNode): Initialize the parent.
- (KJS::ProfileNode::didExecute): Record the time and return the parent.
- (KJS::ProfileNode::addOrStartChild): If the given callIdentifier is
- already a child, start it and return it, otherwise create a new one and
- return that.
- (KJS::ProfileNode::stopProfiling): Same logic, just use the new function.
- * profiler/ProfileNode.h: Utilize the parent.
- (KJS::ProfileNode::create):
- (KJS::ProfileNode::parent):
- * profiler/Profiler.cpp:
- (KJS::Profiler::startProfiling): Here is the only place where the
- ExecState is used to figure out where in the stack the profiler is
- currently profiling.
- (KJS::dispatchFunctionToProfiles): Only send one CallIdentifier instead
- of a vector of them.
- (KJS::Profiler::willExecute): Ditto.
- (KJS::Profiler::didExecute): Ditto.
- (KJS::createCallIdentifier): Create only one CallIdentifier.
- (KJS::createCallIdentifierFromFunctionImp): Ditto.
- * profiler/Profiler.h:
-
-2008-05-21 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - https://bugs.webkit.org/show_bug.cgi?id=19180
- speed up the < operator for the case when both values are integers
-
- Makes standalone SunSpider 1.022x faster.
-
- * VM/Machine.cpp:
- (KJS::jsLess): Add a special case for when both are numbers that fit in a JSImmediate.
-
-2008-05-21 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver and Sam.
-
- - fixed <rdar://problem/5815631> REGRESSION (r31239): Multiscope optimisation of function calls results in incorrect this value (breaks tvtv.de)
-
- Track global this value in the scope chain so we can retrieve it
- efficiently but it follows lexical scope properly.
-
- * kjs/ExecState.h:
- (KJS::ExecState::globalThisValue):
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
- * kjs/function_object.cpp:
- (KJS::FunctionObjectImp::construct):
- * kjs/scope_chain.h:
- (KJS::ScopeChainNode::ScopeChainNode):
- (KJS::ScopeChainNode::globalThisObject):
- (KJS::ScopeChainNode::push):
- (KJS::ScopeChain::ScopeChain):
-
-2008-05-21 Kevin McCullough <kmccullough@apple.com>
-
- Sadness :(
-
- * kjs/config.h:
-
-2008-05-21 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Maciej.
-
- <rdar://problem/5950867> JSProfiler: Allow the profiler to "Focus" a
- profile node.
- - This patch updatest the times of the visible nodes correctly, but to do
- so, some of the design of the ProfileNode changed.
-
- * JavaScriptCore.exp: export focus' symbol.
- * profiler/Profile.cpp: ProfileNodes now take a reference to the head of
- the profile tree to get up-to-date accurate total profile time.
- (KJS::Profile::Profile): Pass 0 for the head node.
- (KJS::Profile::stopProfiling): stopProfiling no longer needs the time
- passed into it, since it can get it from the head and it does not need to
- be told it is the head because it can figure it out on it's own.
- (KJS::Profile::willExecute): Set the head node for each created node.
- * profiler/Profile.h:
- (KJS::Profile::focus): Instead of taking a CallIdentifier that the caller
- would have to create, now focus() takes a ProfileNode that they should
- already have a reference to and focus() can extract the CallIdentifier
- from it.
- * profiler/ProfileNode.cpp: Create actual and visible versions fo the
- total and self times for focus and exclude. Also add a head node
- reference so that nodes can get information from their head.
- (KJS::ProfileNode::ProfileNode):
- (KJS::ProfileNode::stopProfiling): Rename the total and self time
- variables and set the visual ones to the actual ones, so that without any
- changes to the visual versions of these variables, their times will match
- the actual times.
- (KJS::ProfileNode::focus): Now focus() has a bool to force it's children
- to be visible if this node is visible. If this node does not match the
- CallIdentifier being focused then the visibleTotalTime is only updated if
- one or more of it's children is the CallIdentifier being focused.
- (KJS::ProfileNode::restoreAll): Restores all variables with respect to
- the visible data in the ProfileNode.
- (KJS::ProfileNode::endAndRecordCall): Name change.
- (KJS::ProfileNode::debugPrintData): Dump the new variables.
- (KJS::ProfileNode::debugPrintDataSampleStyle): Name change.
- * profiler/ProfileNode.h: Use the new variables and reference to the head
- node.
- (KJS::ProfileNode::create):
- (KJS::ProfileNode::totalTime):
- (KJS::ProfileNode::setTotalTime):
- (KJS::ProfileNode::selfTime):
- (KJS::ProfileNode::setSelfTime):
- (KJS::ProfileNode::totalPercent):
- (KJS::ProfileNode::selfPercent):
- (KJS::ProfileNode::setVisible):
-
-2008-05-21 Alp Toker <alp@nuanti.com>
-
- GTK+/UNIX testkjs build fix. Include signal.h.
-
- * kjs/testkjs.cpp:
-
-2008-05-21 Oliver Hunt <oliver@apple.com>
-
- Yet more windows build fixes
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
-
-2008-05-21 Oliver Hunt <oliver@apple.com>
-
- Yet more windows build fixes
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
-
-2008-05-21 Alp Toker <alp@nuanti.com>
-
- GTK+ build fix. Add DebuggerCallFrame.cpp and take AllInOneFile.cpp
- changes into account.
-
- * GNUmakefile.am:
-
-2008-05-21 Oliver Hunt <oliver@apple.com>
-
- Add DebuggerCallFrame.{h,cpp} to the project file
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
-
-2008-05-21 Alp Toker <alp@nuanti.com>
-
- GTK+ port build fixes following squirrelfish merge r33979.
-
- * GNUmakefile.am:
-
-2008-05-21 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin.
-
- - save a hash lookup wne writing to global properties
- 0.3% speedup on SunSpider, 7% on bitops-bitwise-and
-
- * VM/Machine.cpp:
- (KJS::resolveBase): Check for being a the end of the scope chain
- before hash lookup.
-
-2008-05-21 Alp Toker <alp@nuanti.com>
-
- Rubber-stamped by Maciej.
-
- Replace non-standard #pragma marks with comments to avoid compiler
- warnings.
-
- * profiler/ProfileNode.cpp:
-
-2008-05-21 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Mark Rowe.
-
- Fix layout test failure in fast/dom/getter-on-window-object2 introduced in r33961.
-
- * JavaScriptCore.exp:
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::defineGetter):
- (KJS::JSGlobalObject::defineSetter):
- * kjs/JSGlobalObject.h:
-
-=== End merge of squirrelfish ===
-
-2008-05-21 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Tim Hatcher.
-
- Merged with trunk WebCore's new debugger.
-
- * kjs/DebuggerCallFrame.cpp:
- (KJS::DebuggerCallFrame::evaluate): Changed this function to separate
- the exception value from the return value. The WebKit debugger treats
- them as one, but the WebCore debugger doesn't.
-
- * kjs/DebuggerCallFrame.h:
- (KJS::DebuggerCallFrame::dynamicGlobalObject): Added a new accessor for
- the dynamic global object, since the debugger doesn't want the lexical
- global object.
-
-2008-05-21 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 19116: SquirrelFish shouldn't regress on variable lookups
- <https://bugs.webkit.org/show_bug.cgi?id=19116>
-
- Optimise cross scope assignment, 0.4% progression in sunspider.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitPutScopedVar):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::AssignResolveNode::emitCode):
-
-2008-05-21 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - check property map before symbol table in JSGlobalObject::getOwnPropertySlot
- 0.5% speedup on SunSpider
-
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::getOwnPropertySlot): Check property map before symbol table
- because symbol table access is likely to have been optimized.
-
-2008-05-21 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 19116: SquirrelFish shouldn't regress on variable lookups
- <https://bugs.webkit.org/show_bug.cgi?id=19116>
-
- Optimise multiscope lookup of statically resolvable function calls.
- SunSpider reports a 1.5% improvement, including 37% on
- controlflow-recursive for some reason :D
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitResolve):
- * VM/CodeGenerator.h:
- * kjs/nodes.cpp:
- (KJS::FunctionCallResolveNode::emitCode):
-
-2008-05-21 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - give JSGlobalObject a special version of getOwnPropertySlot that tells you if the slot is directly writable
- (WebCore change using this is a 2.6% speedup on in-browser SunSpider).
-
- * JavaScriptCore.exp:
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::getOwnPropertySlot):
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::symbolTableGet):
- * kjs/object.h:
- (KJS::JSObject::getDirectLocation):
- (KJS::JSObject::getOwnPropertySlotForWrite):
- * kjs/property_map.cpp:
- (KJS::PropertyMap::getLocation):
- * kjs/property_map.h:
- * kjs/property_slot.h:
- (KJS::PropertySlot::putValue):
-
-2008-05-20 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 19116: SquirrelFish shouldn't regress on variable lookups
- <https://bugs.webkit.org/show_bug.cgi?id=19116>
-
- This restores multiscope optimisation to simple resolve, producing
- a 2.6% progression in SunSpider. Have verified that none of the
- sites broken by the multiscope optimisation in trunk were effected
- by this change.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeBlock.h:
- (KJS::CodeBlock::CodeBlock):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::findScopedProperty):
- (KJS::CodeGenerator::emitResolve):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::resolve_n):
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/JSVariableObject.h:
-
-2008-05-20 Oliver Hunt <oliver@apple.com>
-
- Fixerate the windows build.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * VM/CodeGenerator.cpp:
- * VM/RegisterFile.h:
- * kjs/JSGlobalObject.h:
- * kjs/Parser.cpp:
- * kjs/interpreter.h:
-
-2008-05-20 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Bug 19110: SquirrelFish: Google Maps - no maps
- <https://bugs.webkit.org/show_bug.cgi?id=19110>
-
- Correct a comedy of errors present in my original patch to "fix"
- exceptions occurring midway through pre and post increment. This
- solution is cleaner than the original, doesn't need the additional
- opcodes, and as an added benefit does not break Google Maps.
-
- Sunspider reports a 0.4% progression.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::PreIncResolveNode::emitCode):
- (KJS::PreDecResolveNode::emitCode):
- (KJS::PreIncBracketNode::emitCode):
- (KJS::PreDecBracketNode::emitCode):
- (KJS::PreIncDotNode::emitCode):
- (KJS::PreDecDotNode::emitCode):
-
-2008-05-20 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - inline JSGlobalObject::getOwnPropertySlot
- 1% improvement on in-browser SunSpider (a wash command-line)
-
- * kjs/JSGlobalObject.cpp:
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::getOwnPropertySlot):
-
-2008-05-18 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 18752: SQUIRRELFISH: exceptions are not always handled by the vm
- <https://bugs.webkit.org/show_bug.cgi?id=18752>
-
- Handle exceptions thrown by toString conversion in subscript operators,
- this should basically complete exception handling in SquirrelFish.
-
- Sunspider reports no regression.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-05-17 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- [Reapplying patch with previously missing files from r33553 -- Oliver]
-
- Behold: debugging.
-
- SunSpider reports no change.
-
- * JavaScriptCore.xcodeproj/project.pbxproj: Added DebuggerCallFrame.h/.cpp,
- and created a debugger folder.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::generate): If the debugger is attached, always
- generate full scope chains for its sake.
-
- * VM/Machine.cpp:
- (KJS::Machine::unwindCallFrame): Notify the debugger when unwinding
- due to an exception, so it doesn't keep stale call frames around.
-
- (KJS::Machine::execute): Set Callee to 0 in eval frames, so the
- debugger can distinguish them from function call frames.
-
- (KJS::Machine::debug): Simplified this function, since the debugger
- doesn't actually need all the information we used to provide.
-
- (KJS::Machine::privateExecute): Treat debugging hooks like other function
- calls, so the code we hook into (the debugger UI) can be optimized.
-
- * kjs/debugger.cpp: Nixed these default callback implementations and
- made the callbacks pure virtual instead, so the compiler could tell me
- if I made a mistake in one of the subclasses.
-
- * kjs/debugger.h: Removed a bunch of irrelevent data from the debugger
- callbacks. Changed from passing an ExecState* to passing a
- DebuggerCallFrame*, since an ExecState* doesn't contain sufficient
- information anymore.
-
- * kjs/function.cpp:
- (KJS::globalFuncEval): Easiest bug fix evar!
-
- [Previously missing files from r33553]
- * kjs/DebuggerCallFrame.cpp: Copied from JavaScriptCore/profiler/FunctionCallProfile.h.
- (KJS::DebuggerCallFrame::functionName):
- (KJS::DebuggerCallFrame::thisObject):
- (KJS::DebuggerCallFrame::evaluateScript):
- * kjs/DebuggerCallFrame.h: Copied from JavaScriptCore/VM/Register.h.
- (KJS::DebuggerCallFrame::DebuggerCallFrame):
- (KJS::DebuggerCallFrame::scopeChain):
- (KJS::DebuggerCallFrame::exception):
-
-2008-05-17 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Bug 18991: SquirrelFish: Major codegen issue in a.b=expr, a[b]=expr
- <https://bugs.webkit.org/show_bug.cgi?id=18991>
-
- Fix the last remaining blocking cases of this bug.
-
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::ReadModifyResolveNode::emitCode):
-
-2008-05-17 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Partial fix for:
-
- Bug 18991: SquirrelFish: Major codegen issue in a.b=expr, a[b]=expr
- <https://bugs.webkit.org/show_bug.cgi?id=18991>
-
- Ensure that the code generated for assignments uses temporaries whenever
- necessary. This patch covers the vast majority of situations, but there
- are still a few left.
-
- This patch also adds some missing cases to CodeBlock::dump().
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::destinationForAssignResult):
- (KJS::CodeGenerator::leftHandSideNeedsCopy):
- (KJS::CodeGenerator::emitNodeForLeftHandSide):
- * kjs/NodeInfo.h:
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::AssignDotNode::emitCode):
- (KJS::ReadModifyDotNode::emitCode):
- (KJS::AssignBracketNode::emitCode):
- (KJS::ReadModifyBracketNode::emitCode):
- (KJS::ForInNode::ForInNode):
- * kjs/nodes.h:
- (KJS::ReadModifyResolveNode::):
- (KJS::AssignResolveNode::):
- (KJS::ReadModifyBracketNode::):
- (KJS::AssignBracketNode::):
- (KJS::AssignDotNode::):
- (KJS::ReadModifyDotNode::):
-
-2008-05-17 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 19106: SquirrelFish: Activation is not marked correctly
- <https://bugs.webkit.org/show_bug.cgi?id=19106>
-
- We can't rely on the symbol table for a count of the number of globals
- we need to mark as that misses duplicate parameters and 'this'. Now we
- use the actual local register count from the codeBlock.
-
- * kjs/JSActivation.cpp:
- (KJS::JSActivation::mark):
-
-2008-05-16 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Bug 19076: SquirrelFish: RegisterFile can be corrupted if implictly reenter global scope with no declared vars
- <https://bugs.webkit.org/show_bug.cgi?id=19076>
-
- Don't delay allocation of initial global RegisterFile, as we can't guarantee we will be able
- to allocate the global 'this' register safely at any point after initialisation of the Global
- Object.
-
- Unfortunately this initial allocation caused a regression of 0.2-0.3%, however this patch adds
- support for the static slot optimisation for the global Math object which brings it to a 0.3%
- progression.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::programCodeThis):
- (KJS::CodeGenerator::CodeGenerator):
- (KJS::CodeGenerator::addParameter):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::execute):
- * kjs/ExecState.h:
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::reset):
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::GlobalPropertyInfo::GlobalPropertyInfo):
- (KJS::JSGlobalObject::addStaticGlobals):
- * kjs/nodes.cpp:
-
-2008-05-16 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver Hunt.
-
- Bug 19098: SquirrelFish: Ref'd temporaries can be clobbered
- <https://bugs.webkit.org/show_bug.cgi?id=19098>
-
- When doing code generation for a statement list, increase the reference
- count on a register that might eventually be returned, so that it doesn't
- get clobbered by a request for a new temporary.
-
- * kjs/nodes.cpp:
- (KJS::statementListEmitCode):
-
-2008-05-16 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - fixed Bug 19044: SquirrelFish: Bogus values enter evaluation when closing over scope with parameter and var with same name
- https://bugs.webkit.org/show_bug.cgi?id=19044
-
- * kjs/JSActivation.cpp:
- (KJS::JSActivation::copyRegisters): Use numLocals from the code
- block rather than the size of the symbol table for the number of
- registers to copy, to account for duplicate parameters and vars
- with the same name as parameters (we still have potentially
- suboptimal codegen in that we allocate a local register for the
- var in the latter case but it is never used).
-
-2008-05-15 Geoffrey Garen <ggaren@apple.com>
-
- Not reviewed.
-
- We regret to inform you that your program is crashing because you were
- stupid.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): Math is hard.
-
-2008-05-14 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- A little more debugger action: filled in op_debug. All debugger control
- flow works now, but variable inspection and backtraces still don't.
-
- SunSpider reports no change.
-
- * VM/CodeGenerator.cpp: Changed op_debug to accept line number parameters.
-
- * VM/Machine.cpp:
- (KJS::Machine::getFunctionAndArguments): Moved op_debug into a
- NEVER_INLINE function to avoid a stunning 10% performance regression.
- Also factored out a common function for retrieving the function and
- arguments from a call frame.
-
- * kjs/JSActivation.cpp:
- (KJS::JSActivation::createArgumentsObject): Use the new factored out
- function mentioned above.
-
- * kjs/Parser.cpp:
- (KJS::Parser::parse): Increment m_sourceId before assigning it, so the
- sourceId we send to the debugger matches the sourceId recorded in the
- node.
-
- * kjs/nodes.cpp: Emit debugging hooks.
-
-2008-05-14 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 19024: SQUIRRELFISH: ASSERTION FAILED: activation->isActivationObject() in Machine::unwindCallFrame
- <https://bugs.webkit.org/show_bug.cgi?id=19024>
-
- This fixes a number of issues. The most important is that we now check every register
- file for tainting rather than just looking for function register files as that was
- insufficient. Additionally guarded against implicit re-entry into Eval code.
-
- Also added a few additional assertions to reduce the amout of time between something
- going wrong and us seeing the error.
-
- * VM/Machine.cpp:
- (KJS::Machine::execute):
- (KJS::Machine::privateExecute):
- * VM/RegisterFile.cpp:
- (KJS::RegisterFile::growBuffer):
- (KJS::RegisterFile::addGlobalSlots):
- * VM/RegisterFileStack.cpp:
- (KJS::RegisterFileStack::pushGlobalRegisterFile):
- (KJS::RegisterFileStack::pushFunctionRegisterFile):
- * VM/RegisterFileStack.h:
- (KJS::RegisterFileStack::inImplicitCall):
-
-2008-05-14 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- A little more debugger action: emit opcodes for debugger hooks. Right
- now, the opcode implementation is just a stub.
-
- SunSpider reports no change.
-
- Some example codegen for "function f() { 1; }":
-
- [ 0] dbg DidEnterCallFrame
- [ 2] dbg WillExecuteStatement
- [ 4] load tr0, 1(@k0)
- [ 7] load tr0, undefined(@k1)
- [ 10] dbg WillLeaveCallFrame
- [ 12] ret tr0
-
-2008-05-14 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Bug 19025: SQUIRRELFISH: malformed syntax in onload handler causes crash
- <https://bugs.webkit.org/show_bug.cgi?id=19025>
-
- Simple fix -- move the use of functionBodyNode to after the null check.
-
- * kjs/function_object.cpp:
- (KJS::FunctionObjectImp::construct):
-
-2008-05-13 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fixed a codegen crash with run-time parse errors.
-
- SunSpider reports no change.
-
- emitThrowError needs to return the temporary holding the error, not dst,
- since dst may be NULL. In fact, emitThrowError shouldn't take a dst
- parameter at all, since exceptions should not modify the destination
- register.
-
-2008-05-13 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Bug 19027: SquirrelFish: Incorrect codegen for pre-increment
- <https://bugs.webkit.org/show_bug.cgi?id=19027>
-
- This fixes the codegen issues for the pre-inc/decrement operators
- to prevent incorrectly clobbering the destination in the event of
- an exception.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitPreInc):
- (KJS::CodeGenerator::emitPreDec):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::PreIncResolveNode::emitCode):
- (KJS::PreDecResolveNode::emitCode):
- (KJS::PreIncBracketNode::emitCode):
- (KJS::PreDecBracketNode::emitCode):
- (KJS::PreIncDotNode::emitCode):
- (KJS::PreDecDotNode::emitCode):
-
-2008-05-13 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- A little more debugger action: supply a real line number, sourceId,
- and sourceURL in op_new_error.
-
- SunSpider reports a .2% speedup. Not sure what that's about.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): Use the new good stuff in op_new_error.
-
- * kjs/nodes.cpp:
- (KJS::RegExpNode::emitCode): Use the shared emitThrowError instead of
- rolling our own.
-
-2008-05-13 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- A little more debugger action: implemented the exception callback.
-
- SunSpider reports a .2% speedup. Not sure what that's about.
-
- * VM/CodeBlock.h: A little refactoring here. Store a pointer to our
- owner ScopeNode so we can retrieve data from it. This allows us to
- stop storing copies of the data ourselves. Also, store a "this" register
- instead of a code type, since we were only using the code type to
- calculate the "this" register.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::generate): Calculate the "this" register mentioned
- above. Also, take care of removing "this" from the symbol table after
- codegen is done, since relying on the timing of a destructor for correct
- behavior is not so good.
-
- * VM/Machine.cpp:
- (KJS::Machine::throwException): Invoke the debugger's exception callback.
- (KJS::Machine::privateExecute): Use the "this" register mentioned above.
-
-2008-05-13 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Removed some unused exception machinery.
-
- SunSpider reports a .3% speedup.
-
- * API/JSCallbackObject.h:
- * API/JSCallbackObjectFunctions.h:
- * JavaScriptCore.exp:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * kjs/internal.cpp:
- * kjs/object.cpp:
- * kjs/object.h:
- * kjs/value.h:
-
-2008-05-13 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- A little more debugger action.
-
- * kjs/debugger.cpp:
- * kjs/debugger.h: Removed debuggersPresent because it was unused.
- Replaced AttachedGlobalObject linked list with a HashSet because HashSet
- is faster and simpler. Changed all functions to return void instead of
- bool, because no clients ever return false, and we don't want to support
- it.
-
- * kjs/nodes.cpp: Did some up-keep to avoid build bustage.
- (KJS::Node::handleException):
- (KJS::BreakpointCheckStatement::execute):
- (KJS::FunctionBodyNodeWithDebuggerHooks::execute):
-
-2008-05-13 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Darin.
-
- Bug 18752: SQUIRRELFISH: exceptions are not always handled by the vm
- <https://bugs.webkit.org/show_bug.cgi?id=18752>
-
- Replace old attempt at "branchless" exceptions as the extra information
- being passed made gcc an unhappy compiler, replacing these custom toNumber
- calls with ordinary toNumber logic (by relying on toNumber now preventing
- side effects after an exception has been thrown) provided sufficient leeway
- to add the additional checks for the remaining unchecked cases.
-
- This leaves only toString conversions in certain contexts as possibly
- misbehaving.
-
- * VM/Machine.cpp:
- (KJS::jsAdd):
- (KJS::resolve):
- (KJS::resolveBaseAndProperty):
- (KJS::resolveBaseAndFunc):
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/value.h:
- (KJS::JSValue::safeGetNumber):
-
-2008-05-13 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- First steps toward supporting the debugger API: support the sourceParsed
- callback; plus some minor fixups.
-
- SunSpider reports no regression.
-
- * VM/CodeGenerator.h: Removed a misleading comment.
-
- * kjs/Parser.h: Changed the parser to take an ExecState*, so it can
- implement the sourceParsed callback -- that way, we only have to
- implement the callback in one place.
-
- * kjs/debugger.cpp: Nixed DebuggerImp, because its sole purpose in life
- was to demonstrate the misapplication of design patterns.
-
- * kjs/debugger.h: Changed sourceParsed to take a SourceProvider, to
- reduce copying, and not to return a value, because pausing execution
- after parsing is complicated, and no clients needed that ability, anyway.
-
- * kjs/grammar.y: Make sure never to pass a NULL SourceElements* to
- didFinishParsing -- that simplifies some code down the road.
-
- * kjs/nodes.cpp: Don't generate special AST nodes just because the
- debugger is attached -- that's a relic of the old AST execution model,
- and those nodes haven't been maintained.
-
-2008-05-13 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Bug 18752: SQUIRRELFISH: exceptions are not always handled by the vm
- <https://bugs.webkit.org/show_bug.cgi?id=18752>
-
- First step: prevent incorrect evaluation of valueOf/toString conversion
- in right hand side of expression after earlier conversion throws.
-
- * API/JSCallbackObjectFunctions.h:
- (KJS::::toNumber):
- * kjs/object.cpp:
- (KJS::JSObject::defaultValue):
-
-2008-05-12 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Bug 18934: SQUIRRELFISH: ASSERT @ nytimes.com due to RegisterFile being clobbered
- <https://bugs.webkit.org/show_bug.cgi?id=18934>
-
- Unfortunately we cannot create new statically optimised globals if there are any
- tainted RegisterFiles on the RegisterFileStack. To handle this we re-introduce
- (in a slightly cleaner form) the inImplicitCall concept to the RegisterFileStack.
-
- * VM/Machine.cpp:
- (KJS::Machine::execute):
- * VM/RegisterFileStack.cpp:
- (KJS::RegisterFileStack::pushFunctionRegisterFile):
- * VM/RegisterFileStack.h:
-
-2008-05-12 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Introduced support for function.caller.
-
- Improved support for walking interesting scopes for function introspection.
-
- This fixes all remaining layout tests not blocked by rebasing to trunk.
-
- SunSpider reports no change.
-
- * VM/Machine.cpp:
- (KJS::Machine::dumpRegisters): Fixed a spacing issue.
-
-2008-05-11 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Bug 18961: SQUIRRELFISH: Gmail doesn't load
- <https://bugs.webkit.org/show_bug.cgi?id=18961>
-
- Fix codegen for logical nodes so that they don't use their destination
- as a temporary.
-
- * kjs/nodes.cpp:
- (KJS::LogicalAndNode::emitCode):
- (KJS::LogicalOrNode::emitCode):
-
-2008-05-10 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - JavaScriptCore part of fix for: "SQUIRRELFISH: function toString broken after calling"
- https://bugs.webkit.org/show_bug.cgi?id=18869
-
- Three layout tests are fixed:
- fast/js/toString-elision-trailing-comma.html
- fast/js/toString-prefix-postfix-preserve-parens.html
- fast/js/kde/lval-exceptions.html
-
- Functions now save a shared subrange of the original source used
- to make them (so in the common case this adds no storage above the
- memory cache).
-
- * kjs/SourceProvider.h: Added.
- (KJS::SourceProvider): New abstract base class for classes that provide on-demand access
- to the source for a JavaScript program. This allows function objects to have access to their
- original source without copying.
- (KJS::UStringSourceProvider): SourceProvider subclass backed by a KJS::UString.
- (KJS::UStringSourceProvider::create):
- (KJS::UStringSourceProvider::getRange):
- (KJS::UStringSourceProvider::data):
- (KJS::UStringSourceProvider::length):
- (KJS::UStringSourceProvider::UStringSourceProvider):
- * kjs/SourceRange.h: Added.
- (KJS::SourceRange::SourceRange): Class that holds a SourceProvider and a character range into
- the source, to encapsulate on-demand access to the source of a function.
- (KJS::SourceRange::toString):
- * VM/Machine.cpp:
- (KJS::eval): Pass a UStringSourceProvider to the parser.
- * kjs/Parser.cpp:
- (KJS::Parser::parse): Take a SourceProvider and pass it on to the lexer.
- * kjs/Parser.h:
- (KJS::Parser::parse): Take a SourceProvider.
- * kjs/lexer.cpp:
- (KJS::Lexer::setCode): Take a SourceProvider; keep it around, and
- use it to get the raw buffer and length.
- * kjs/lexer.h:
- (KJS::Lexer::sourceRange): Convenience function to get a source
- range based on the lexer's source provieder, and char offsets
- right before and after the desired range.
- * kjs/function.cpp:
- (KJS::globalFuncEval): Pass a UStringSourceProvider to the parser.
- * kjs/function_object.cpp:
- (KJS::functionProtoFuncToString): Use toSourceString to get the source.
- (KJS::FunctionObjectImp::construct): Give the parser a UStringSourceProvider.
- * kjs/grammar.y: When parsing a function declaration, function
- expression, or getter or setter, tell the function body about its
- SourceRange.
- * kjs/interpreter.cpp:
- (KJS::Interpreter::checkSyntax): Pass a SourceProvider to the parser.
- (KJS::Interpreter::evaluate): Pass a SourceProvider to the parser.
- * kjs/interpreter.h:
- * kjs/nodes.h:
- (KJS::FunctionBodyNode::setSource): Establish a SourceRange for this function.
- (KJS::FunctionBodyNode::toSourceString): Get the source string out
- of the SourceRange.
- (KJS::FuncExprNode::): Take a SourceRange and set it on the body.
- (KJS::FuncDeclNode::): ditto
- * kjs/testkjs.cpp:
- (prettyPrintScript): Use a SourceProvider appropriately.
- * JavaScriptCore.exp: Export new symbols.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add new files.
- * JavaScriptCore.xcodeproj/project.pbxproj: Add new files.
-
-2008-05-09 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bring back RegisterFile tainting in order to correctly handle
- natively implemented getters and setters that re-enter JavaScript
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/RegisterFile.h:
- * kjs/function.cpp:
- (KJS::FunctionImp::callAsFunction):
- * kjs/object.cpp:
- (KJS::JSObject::put):
- (KJS::tryGetAndCallProperty):
- * kjs/property_slot.cpp:
- (KJS::PropertySlot::functionGetter):
-
-2008-05-09 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - track character offsets of open and close braces, in preparation for saving function source
-
- I verified that there is no performance regression from this change.
-
- * kjs/grammar.y:
- * kjs/lexer.cpp:
- (KJS::Lexer::lex):
- (KJS::Lexer::matchPunctuator):
- * kjs/lexer.h:
-
-2008-05-09 Oliver Hunt <oliver@apple.com>
-
- Debug build fix
-
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::restoreLocalStorage):
-
-2008-05-09 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Build fixes for SquirrelFish on windows.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
- * VM/Register.h:
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::restoreLocalStorage):
- * kjs/collector.cpp:
- (KJS::Collector::allocate):
- (KJS::Collector::allocateNumber):
- * kjs/collector.h:
- (KJS::Collector::allocate):
- (KJS::Collector::allocateNumber):
- * kjs/property_slot.cpp:
-
-2008-05-08 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Geoff.
-
- - fix activation tearoff in the case where functions are called with too many arguments
-
- Fixes:
- fast/canvas/patternfill-repeat.html
- fast/dom/SelectorAPI/bug-17313.html
-
- * VM/Machine.cpp:
- (KJS::slideRegisterWindowForCall):
- (KJS::scopeChainForCall):
- (KJS::Machine::execute):
- (KJS::Machine::privateExecute):
-
-2008-05-08 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fixed failure in fast/canvas/canvas-pattern-behaviour.html.
-
- SunSpider reports a small speedup. Not sure what that's about.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump): Fixed op_call_eval to dump as "op_call_eval".
- This helped me while debugging.
-
- * VM/Machine.cpp:
- (KJS::Machine::unwindCallFrame): When looking for an activation to tear
- off, don't use the scope chain. Inside eval, the scope chain doesn't
- belong to us; it belongs to our calling function.
-
- Also, don't use the needsFullScopeChain flag to decide whether to tear
- off the activation. "function.arguments" can create an activation
- for a function whose needsFullScopeChain flag is set to false.
-
-2008-05-08 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - fix function.call for calls of more than 8 arguments
-
- Fixes svg/carto.net/button.svg
-
- * kjs/list.cpp:
- (KJS::List::getSlice): properly set up the m_buffer of the target list.
-
-2008-05-08 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - don't return a null RegisterID from RegExpNode in the exception case, since the caller may need a real register
-
- Fixes:
- - fast/regex/early-acid3-86.html
- - http/tests/misc/acid3.html
-
- * kjs/nodes.cpp:
- (KJS::RegExpNode::emitCode):
-
-2008-05-07 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Fix a performance regression caused by the introduction of property
- attributes to SymbolTable in r32859 by encoding the attributes and the
- register index into a single field of SymbolTableEntry.
-
- This leaves Node::optimizeVariableAccess() definitely broken, although
- it was probably not entirely correct in SquirrelFish before this change.
-
- * VM/CodeBlock.h:
- (KJS::missingThisObjectMarker):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::addVar):
- (KJS::CodeGenerator::CodeGenerator):
- (KJS::CodeGenerator::registerForLocal):
- (KJS::CodeGenerator::registerForLocalConstInit):
- (KJS::CodeGenerator::isLocalConstant):
- (KJS::CodeGenerator::addConstant):
- (KJS::CodeGenerator::emitCall):
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::IdentifierMapIndexHashTraits::emptyValue):
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::saveLocalStorage):
- * kjs/JSVariableObject.cpp:
- (KJS::JSVariableObject::getPropertyNames):
- (KJS::JSVariableObject::getPropertyAttributes):
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::symbolTableGet):
- (KJS::JSVariableObject::symbolTablePut):
- (KJS::JSVariableObject::symbolTablePutWithAttributes):
- * kjs/SymbolTable.h:
- (KJS::SymbolTableEntry::SymbolTableEntry):
- (KJS::SymbolTableEntry::isEmpty):
- (KJS::SymbolTableEntry::getIndex):
- (KJS::SymbolTableEntry::getAttributes):
- (KJS::SymbolTableEntry::setAttributes):
- (KJS::SymbolTableEntry::isReadOnly):
- * kjs/nodes.cpp:
- (KJS::getSymbolTableEntry):
- (KJS::PostIncResolveNode::optimizeVariableAccess):
- (KJS::PostDecResolveNode::optimizeVariableAccess):
- (KJS::DeleteResolveNode::optimizeVariableAccess):
- (KJS::TypeOfResolveNode::optimizeVariableAccess):
- (KJS::PreIncResolveNode::optimizeVariableAccess):
- (KJS::PreDecResolveNode::optimizeVariableAccess):
- (KJS::ReadModifyResolveNode::optimizeVariableAccess):
- (KJS::AssignResolveNode::optimizeVariableAccess):
- (KJS::ProgramNode::initializeSymbolTable):
-
-2008-05-06 Maciej Stachowiak <mjs@apple.com>
-
- Rubber stamped by Oliver.
-
- - add missing ! in an assert that I failed to reverse
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::CodeGenerator):
-
-2008-05-06 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - fixed "SQUIRRELFISH: window.this shows up as a property, but it shouldn't"
- https://bugs.webkit.org/show_bug.cgi?id=18868
-
- The basic approach is to have "this" only be present in the symbol
- table at compile time, not runtime.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::~CodeGenerator): Remove "this" from symbol table.
- (KJS::CodeGenerator::CodeGenerator): Add "this" back when re-using
- a symbol table.
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::execute): Don't assert that "this" is in the symbol table.
-
-2008-05-06 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Trivial support for function.arguments: Currently, we only support
- function.arguments from within the scope of function.
-
- This fixes the remaining Mozilla JS test failures.
-
- SunSpider reports no change.
-
- * JavaScriptCore.exp:
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): Separated scope chain deref from
- activation register copying: since it is now possible for client code
- to create an activation on behalf of a function that otherwise wouldn't
- need one, having an activation no longer necessarily means that you need
- to deref the scope chain.
-
- (KJS::Machine::getCallFrame): For now, this function only examines the
- current scope. Walking parent scopes requires some refactoring in the
- way we track execution stacks.
-
- * kjs/ExecState.cpp:
- (KJS::ExecState::ExecState): We use a negative call frame offset to
- indicate that a given scope is not a function call scope.
-
-2008-05-05 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Fix call frame set up for native -> JS function calls.
-
- * VM/Machine.cpp:
- (KJS::Machine::execute):
-
-2008-05-05 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fixed ecma_3/Object/8.6.2.6-001.js, and similar bugs.
-
- SunSpider reports a .4% speedup. Not sure what that's about.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): Check for exception return from equal,
- since toPrimitive can throw.
-
- * kjs/operations.cpp:
- (KJS::strictEqual): In response to an error I made in an earlier version
- of this patch, I changed strictEqual to make clear the fact that it
- performs no conversions and can't throw, making it slightly more efficient
- in the process.
-
-2008-05-05 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - fix some dumb mistakes in my last patch
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitPushScope):
- (KJS::CodeGenerator::emitGetPropertyNames):
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-05-05 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - document opcodes relating to jumps, scopes, and property name iteration
-
- Documented jmp, jtrue, false, push_scope, pop_scope, get_pnames,
- next_pname and jmp_scopes.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitJump):
- (KJS::CodeGenerator::emitJumpIfTrue):
- (KJS::CodeGenerator::emitJumpIfFalse):
- (KJS::CodeGenerator::emitPushScope):
- (KJS::CodeGenerator::emitNextPropertyName):
- (KJS::CodeGenerator::emitGetPropertyNames):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * kjs/nodes.cpp:
- (KJS::LogicalAndNode::emitCode):
- (KJS::LogicalOrNode::emitCode):
- (KJS::ConditionalNode::emitCode):
- (KJS::IfNode::emitCode):
- (KJS::IfElseNode::emitCode):
- (KJS::DoWhileNode::emitCode):
- (KJS::WhileNode::emitCode):
- (KJS::ForNode::emitCode):
- (KJS::ForInNode::emitCode):
- (KJS::WithNode::emitCode):
-
-2008-05-05 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Bug 18749: SQUIRRELFISH: const support is broken
- <https://bugs.webkit.org/show_bug.cgi?id=18749>
-
- Adds support for const during code generation.
-
- Fixes 2 layout tests.
-
- * ChangeLog:
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::addVar):
- (KJS::CodeGenerator::CodeGenerator):
- (KJS::CodeGenerator::isLocalConstant):
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::addVar):
- * kjs/nodes.cpp:
- (KJS::PostIncResolveNode::emitCode):
- (KJS::PostDecResolveNode::emitCode):
- (KJS::PreIncResolveNode::emitCode):
- (KJS::PreDecResolveNode::emitCode):
- (KJS::ReadModifyResolveNode::emitCode):
- (KJS::AssignResolveNode::emitCode):
-
-2008-05-04 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Geoff.
-
- - document some more opcodes (and fix argument names)
-
- Added docs for eq, neq, stricteq, nstriceq, less and lesseq.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitEqual):
- (KJS::CodeGenerator::emitNotEqual):
- (KJS::CodeGenerator::emitStrictEqual):
- (KJS::CodeGenerator::emitNotStrictEqual):
- (KJS::CodeGenerator::emitLess):
- (KJS::CodeGenerator::emitLessEq):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * kjs/nodes.cpp:
- (KJS::LessNode::emitCode):
- (KJS::GreaterNode::emitCode):
- (KJS::LessEqNode::emitCode):
- (KJS::GreaterEqNode::emitCode):
- (KJS::EqualNode::emitCode):
- (KJS::NotEqualNode::emitCode):
- (KJS::StrictEqualNode::emitCode):
- (KJS::NotStrictEqualNode::emitCode):
- (KJS::CaseBlockNode::emitCodeForBlock):
-
-2008-05-04 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- More scaffolding for f.arguments.
-
- Track the offset of the last call frame in the ExecState, so we can
- produce a backtrace at any time.
-
- Also, record numLocals, the sum of numVars + numParameters, in each code
- block, to make updates to the ExecState a little cheaper than they
- would be otherwise.
-
- We now use numLocals in a bunch of places where we used to calculate
- numVars + numParameters or -numVars - numParameters.
-
- Reports are mixed, but all in all, this seems to be a wash on SunSpider.
-
-2008-05-04 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Whoops, correctly handle properties that don't exist in the
- symbol table.
-
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::symbolTablePutWithAttributes):
-
-2008-05-04 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Add attribute information to SymbolTable as ground work for
- various DontEnum and ReadOnly issues.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::addVar):
- (KJS::CodeGenerator::CodeGenerator):
- (KJS::CodeGenerator::registerForLocal):
- (KJS::CodeGenerator::registerForLocalConstInit):
- (KJS::CodeGenerator::addConstant):
- * VM/Machine.cpp:
- (KJS::Machine::execute):
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::saveLocalStorage):
- * kjs/JSVariableObject.cpp:
- (KJS::JSVariableObject::getPropertyNames):
- (KJS::JSVariableObject::getPropertyAttributes):
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::symbolTablePut):
- (KJS::JSVariableObject::symbolTablePutWithAttributes):
- * kjs/SymbolTable.h:
- (KJS::SymbolTableEntry::SymbolTableEntry):
- (KJS::SymbolTableIndexHashTraits::emptyValue):
- * kjs/nodes.cpp:
- (KJS::getSymbolTableEntry):
- (KJS::ReadModifyResolveNode::optimizeVariableAccess):
- (KJS::AssignResolveNode::optimizeVariableAccess):
- (KJS::ProgramNode::initializeSymbolTable):
-
-2008-05-04 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- More scaffolding for f.arguments.
-
- Store the register file associated with an ExecState in the ExecState.
-
- SunSpider reports no change.
-
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): Moved
- registerFileStack above globalExec, so it gets initialized first.
- Removed remnants of old activation scheme.
-
-2008-05-04 Maciej Stachowiak <mjs@apple.com>
-
- Rubber stamped by Oliver.
-
- - renamed a few opcodes and fixed assembly formatting to accomodate the longest opcode
-
- equal --> eq
- nequal --> neq
- resolve_base_and_property --> resolve_with_base
- resolve_base_and_func --> resolve_func
- get_prop_id --> get_by_id
- put_prop_id --> put_by_id
- delete_prop_id --> del_by_id
- get_prop_val --> get_by_val
- put_prop_val --> put_by_val
- delete_prop_val --> del_by_val
- put_prop_index --> put_by_index
-
- * VM/CodeBlock.cpp:
- (KJS::printUnaryOp):
- (KJS::printBinaryOp):
- (KJS::printConditionalJump):
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitEqual):
- (KJS::CodeGenerator::emitNotEqual):
- (KJS::CodeGenerator::emitResolveWithBase):
- (KJS::CodeGenerator::emitResolveFunction):
- (KJS::CodeGenerator::emitGetById):
- (KJS::CodeGenerator::emitPutById):
- (KJS::CodeGenerator::emitDeleteById):
- (KJS::CodeGenerator::emitGetByVal):
- (KJS::CodeGenerator::emitPutByVal):
- (KJS::CodeGenerator::emitDeleteByVal):
- (KJS::CodeGenerator::emitPutByIndex):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::ArrayNode::emitCode):
- (KJS::PropertyListNode::emitCode):
- (KJS::BracketAccessorNode::emitCode):
- (KJS::DotAccessorNode::emitCode):
- (KJS::EvalFunctionCallNode::emitCode):
- (KJS::FunctionCallResolveNode::emitCode):
- (KJS::FunctionCallBracketNode::emitCode):
- (KJS::FunctionCallDotNode::emitCode):
- (KJS::PostIncResolveNode::emitCode):
- (KJS::PostDecResolveNode::emitCode):
- (KJS::PostIncBracketNode::emitCode):
- (KJS::PostDecBracketNode::emitCode):
- (KJS::PostIncDotNode::emitCode):
- (KJS::PostDecDotNode::emitCode):
- (KJS::DeleteResolveNode::emitCode):
- (KJS::DeleteBracketNode::emitCode):
- (KJS::DeleteDotNode::emitCode):
- (KJS::TypeOfResolveNode::emitCode):
- (KJS::PreIncResolveNode::emitCode):
- (KJS::PreDecResolveNode::emitCode):
- (KJS::PreIncBracketNode::emitCode):
- (KJS::PreDecBracketNode::emitCode):
- (KJS::PreIncDotNode::emitCode):
- (KJS::PreDecDotNode::emitCode):
- (KJS::ReadModifyResolveNode::emitCode):
- (KJS::AssignResolveNode::emitCode):
- (KJS::AssignDotNode::emitCode):
- (KJS::ReadModifyDotNode::emitCode):
- (KJS::AssignBracketNode::emitCode):
- (KJS::ReadModifyBracketNode::emitCode):
- (KJS::ConstDeclNode::emitCodeSingle):
- (KJS::ForInNode::emitCode):
- (KJS::TryNode::emitCode):
-
-2008-05-04 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Fix assertion when accessing arguments object with too many arguments provided
-
- The arguments constructor was assuming that the register offset given for argv
- was an absolute offset into the registerfile, rather than the offset from the
- frame. This patches corrects that issue.
-
- * kjs/JSActivation.cpp:
- (KJS::JSActivation::createArgumentsObject):
-
-2008-05-04 Geoffrey Garen <ggaren@apple.com>
-
- Rubber stamped by Sam Weinig.
-
- Cleaned up Machine.cpp according to our style guidelines: moved static
- data to the top of the file; moved stand-alone functions below that;
- moved the Machine constructor above other Machine member functions.
-
-2008-05-03 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Sam.
-
- - fix accidental breakage from last patch
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-05-03 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Geoff.
-
- - a bunch more opcode documentation and corresponding parameter name fixes
-
- I renamed a few opcodes:
-
- type_of --> typeof (that's what the JS operator is named)
- instance_of --> instanceof (ditto)
- create_error --> new_error (for consistency with other new_* opcodes)
-
- I documented the following opcodes:
-
- - load
- - new_object
- - new_array
- - new_regexp
- - mov
- - pre_inc
- - pre_dec
- - post_inc
- - post_dec
- - to_jsnumber
- - negate
- - bitnot
- - not
- - instanceof
- - typeof
- - in
- - new_func
- - new_funcexp
- - new_error
-
- I also fixed formatting on some existing opcode docs.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitMove):
- (KJS::CodeGenerator::emitNot):
- (KJS::CodeGenerator::emitPreInc):
- (KJS::CodeGenerator::emitPreDec):
- (KJS::CodeGenerator::emitPostInc):
- (KJS::CodeGenerator::emitPostDec):
- (KJS::CodeGenerator::emitToJSNumber):
- (KJS::CodeGenerator::emitNegate):
- (KJS::CodeGenerator::emitBitNot):
- (KJS::CodeGenerator::emitInstanceOf):
- (KJS::CodeGenerator::emitTypeOf):
- (KJS::CodeGenerator::emitIn):
- (KJS::CodeGenerator::emitLoad):
- (KJS::CodeGenerator::emitNewObject):
- (KJS::CodeGenerator::emitNewArray):
- (KJS::CodeGenerator::emitNewRegExp):
- (KJS::CodeGenerator::emitNewError):
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::scopeDepth):
- (KJS::CodeGenerator::addVar):
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::Node::emitThrowError):
- (KJS::RegExpNode::emitCode):
- (KJS::TypeOfValueNode::emitCode):
- (KJS::UnaryPlusNode::emitCode):
- (KJS::NegateNode::emitCode):
- (KJS::BitwiseNotNode::emitCode):
- (KJS::LogicalNotNode::emitCode):
- (KJS::InstanceOfNode::emitCode):
- (KJS::InNode::emitCode):
-
-2008-05-03 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Geoff and Sam.
-
- - generate HTML bytecode docs at build time
-
- * DerivedSources.make:
- * docs: Added.
- * docs/make-bytecode-docs.pl: Added.
-
-2008-05-03 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Update ExecState::m_scopeChain when switching scope chains inside the
- machine.
-
- This fixes uses of lexicalGlobalObject, such as, in a subframe
-
- alert(top.makeArray() instanceof Array ? "FAIL" : "PASS");
-
- and a bunch of the security failures listed in
- https://bugs.webkit.org/show_bug.cgi?id=18870. (Those tests still fail,
- seemingly because of regressions in exception messages).
-
- SunSpider reports no change.
-
- * VM/Machine.cpp: Factored out scope chain updating into a common
- function that takes care to update ExecState::m_scopeChain, too.
-
- * kjs/ExecState.h: I made Machine a friend of ExecState so that Machine
- could update ExecState::m_scopeChain, even though that value is
- read-only for everyone else.
-
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): Changed
- this client to be a little friendlier to ExecState's internal
- storage type for scope chain data.
-
-2008-05-03 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Fixed https://bugs.webkit.org/show_bug.cgi?id=18876
- Squirrelfish: ScopeChainNode leak in op_jmp_scopes.
-
- SunSpider reports no change.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): Don't construct a ScopeChain object,
- since the direct threaded interpreter will goto across its destructor.
-
-2008-05-03 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- A bit more efficient fix than r32832: Don't copy globals into function
- register files; instead, have the RegisterFileStack track only the base
- of the last *global* register file, so the global object's register
- references stay good.
-
- SunSpider reports a .3% speedup. Not sure what that's about.
-
-2008-05-03 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 18864: SquirrelFish: Support getter and setter definition in object literals
- <https://bugs.webkit.org/show_bug.cgi?id=18864>
-
- Add new opcodes to allow us to add getters and setters to an object. These are
- only used by the codegen for object literals.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitPutGetter):
- (KJS::CodeGenerator::emitPutSetter):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::PropertyListNode::emitCode):
-
-2008-05-02 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - properly copy globals into and out of implicit call register
- files, otherwise they will fail at global lookup
-
- Fixes fast/js/array-tostring-and-join.html layout test.
-
- * VM/RegisterFileStack.cpp:
- (KJS::RegisterFileStack::pushGlobalRegisterFile):
- (KJS::RegisterFileStack::popGlobalRegisterFile):
- (KJS::RegisterFileStack::pushFunctionRegisterFile):
- (KJS::RegisterFileStack::popFunctionRegisterFile):
-
-2008-05-02 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fixed https://bugs.webkit.org/show_bug.cgi?id=18822
- SQUIRRELFISH: incorrect eval used in some cases
-
- Changed all code inside the machine to fetch the lexical global object
- directly from the scope chain, instead of from the ExecState.
-
- Clients who fetch the lexical global object through the ExecState
- still don't work.
-
- SunSpider reports no change.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): Fetch the lexical global object from
- the scope chain.
-
- * kjs/ExecState.h:
- (KJS::ExecState::ExecState::lexicalGlobalObject): Moved the logic for
- this function into ScopeChainNode, but kept this function around to
- support existing clients.
-
-2008-05-02 Geoffrey Garen <ggaren@apple.com>
-
- Rubber stamped by Oliver Hunt.
-
- Removed ExecState.cpp from AllInOneFile.cpp, for a .2% speedup.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/AllInOneFile.cpp:
-
-2008-05-01 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff and Maciej.
-
- Bug 18827: SquirrelFish: Prevent getters and setters from destroying the current RegisterFile
- <https://bugs.webkit.org/show_bug.cgi?id=18827>
-
- Remove safe/unsafe RegisterFile concept, and instead just add additional
- logic to ensure we always push/pop RegisterFiles when executing getters
- and setters, similar to the logic for valueOf and toString.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/RegisterFile.h:
- * kjs/function.cpp:
- (KJS::FunctionImp::callAsFunction):
- * kjs/object.cpp:
- (KJS::JSObject::put):
- * kjs/property_slot.cpp:
- (KJS::PropertySlot::functionGetter):
-
-2008-05-01 Oliver Hunt <oliver@apple.com>
-
- RS=Geoff
-
- Rename unsafeForReentry to safeForReentry to avoid double negatives.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/RegisterFile.h:
- * kjs/function.cpp:
- (KJS::FunctionImp::callAsFunction):
-
-2008-05-01 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 18827: SquirrelFish: Prevent getters and setters from destroying the current RegisterFile
- <https://bugs.webkit.org/show_bug.cgi?id=18827>
-
- This patch makes getters and setters work. It does this by
- tracking whether the RegisterFile is "safe", that is whether
- the interpreter is in a state that in which it can handle
- the RegisterFile being reallocated.
-
- * VM/Machine.cpp:
- (KJS::resolve):
- (KJS::Machine::privateExecute):
- * VM/RegisterFile.h:
- * kjs/function.cpp:
- (KJS::FunctionImp::callAsFunction):
-
-2008-04-30 Geoffrey Garen <ggaren@apple.com>
-
- Release build fix: Always compile in "isGlobalObject", since it's
- listed in our .exp file.
-
- * kjs/ExecState.cpp:
- (KJS::ExecState::isGlobalObject):
- * kjs/ExecState.h:
-
-2008-04-30 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Minor code restructuring to prepare for getters and setters,
- also helps exception semantics a bit.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-04-30 Geoffrey Garen <ggaren@apple.com>
-
- Fixed tyop.
-
- * kjs/ExecState.h:
-
-2008-04-30 Geoffrey Garen <ggaren@apple.com>
-
- Debug build fix: export a missing symbol.
-
- * JavaScriptCore.exp:
-
-2008-04-30 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- A little more ExecState refactoring: Now, only the global object creates
- an ExecState.
-
- Also inlined ExecState::lexicalGlobalObject().
-
- SunSpider reports no change.
-
-2008-04-30 Geoffrey Garen <ggaren@apple.com>
-
- WebCore build fix: forward-declare ScopeChain.
-
- * kjs/interpreter.h:
-
-2008-04-30 Geoffrey Garen <ggaren@apple.com>
-
- Build fix for JavaScriptGlue: export a missing symbol.
-
- * JavaScriptCore.exp:
-
-2008-04-30 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Removed a lot of unused bits from ExecState, moving them into
- OldInterpreterExecState, the fake scaffolding class.
-
- The clutter was making it hard to see the forest from the trees.
-
- .4% SunSpider speedup, probably because ExecState::lexicalGlobalObject()
- is faster now.
-
-2008-04-29 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 18643: SQUIRRELFISH: need to support implicit function calls (valueOf, toString, getters/setters)
- <https://bugs.webkit.org/show_bug.cgi?id=18643>
-
- Prevent static slot optimisation for new variables and functions in
- globally re-entrant code called from an an implicit function call.
-
- This is necessary to prevent us from needing to resize the global
- slot portion of the root RegisterFile during an implicit (and hence
- unguarded) function call.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::CodeGenerator):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::execute):
- * VM/RegisterFile.h:
- * VM/RegisterFileStack.cpp:
- (KJS::RegisterFileStack::pushGlobalRegisterFile):
- (KJS::RegisterFileStack::popGlobalRegisterFile):
- (KJS::RegisterFileStack::pushFunctionRegisterFile):
- (KJS::RegisterFileStack::popFunctionRegisterFile):
- * VM/RegisterFileStack.h:
- (KJS::RegisterFileStack::inImplicitFunctionCall):
- (KJS::RegisterFileStack::lastGlobal):
- * kjs/nodes.cpp:
- (KJS::ProgramNode::generateCode):
- * kjs/nodes.h:
- (KJS::ProgramNode::):
-
-2008-04-29 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- In nested program code, don't propogate "this" back to the parent
- register file. ("this" should remain constant in the parent register
- file, regardless of the scripts it invokes.)
-
- * VM/RegisterFile.cpp:
- (KJS::RegisterFile::copyGlobals):
-
-2008-04-28 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Restore base pointer when popping a global RegisterFile
-
- * VM/RegisterFileStack.cpp:
- (KJS::RegisterFileStack::popGlobalRegisterFile):
-
-2008-04-28 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Bug 18643: SQUIRRELFISH: need to support implicit function calls (valueOf, toString, getters/setters)
- <https://bugs.webkit.org/show_bug.cgi?id=18643>
-
- Partial fix. This results in all implicit calls to toString or valueOf
- executing in a separate RegisterFile, so ensuring that the the pointers
- in the triggering interpreter don't get trashed. This still leaves the
- task of preventing new global re-entry from toString and valueOf from
- clobbering the RegisterFile.
-
- * VM/Machine.cpp:
- (KJS::Machine::execute):
- * VM/RegisterFileStack.cpp:
- (KJS::RegisterFileStack::pushFunctionRegisterFile):
- (KJS::RegisterFileStack::popFunctionRegisterFile):
- * VM/RegisterFileStack.h:
- * kjs/object.cpp:
- (KJS::tryGetAndCallProperty):
-
-2008-04-28 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Simplified activation object a bit: No need to store the callee
- in the activation object -- we can pull it out of the call frame
- when needed, instead.
-
- SunSpider reports no change.
-
-2008-04-28 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- RS by Oliver Hunt on moving JSArguments.cpp out of AllInOneFile.cpp.
-
- Substantially more handling of "arguments": "arguments" works fully
- now, but "f.arguments" still doesn't work.
-
- Fixes 10 regression tests.
-
- SunSpider reports no regression.
-
- * kjs/JSActivation.cpp:
- (KJS::JSActivation::createArgumentsObject): Reconstruct an arguments
- List to pass to the arguments object constructor.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/AllInOneFile.cpp: Removed JSActivation.cpp from AllInOneFile.cpp
- because that seems to make GCC happy. (Previously, I had added
- JSActivation.cpp to AllInOneFile.cpp because *that* seemed to make GCC
- happy. So it goes.)
-
-2008-04-28 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Groundwork for more handling of "arguments". I'm not checking in the
- actual handling of "arguments" yet, because it still needs a little
- fiddling to avoid a performance regression.
-
- SunSpider reports no change.
-
- * VM/Machine.cpp:
- (KJS::initializeCallFrame): Put argc in the register file, so the
- arguments object can find it later, to determine arguments.length.
-
- * kjs/nodes.h:
- (KJS::FunctionBodyNode::): Added a special code accessor for when you
- know the code has already been generated, and you don't have a scopeChain
- to supply for potential code generation. (This is the case when the
- activation object creates the arguments object.)
-
-2008-04-28 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Replace unsafe use of auto_ptr in Vector with manual memory
- management.
-
- * VM/RegisterFileStack.cpp:
- (KJS::RegisterFileStack::~RegisterFileStack):
- (KJS::RegisterFileStack::popRegisterFile):
- * VM/RegisterFileStack.h:
-
-2008-04-27 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Bug 18746: SQUIRRELFISH: indirect eval used when direct eval should be used
- <https://bugs.webkit.org/show_bug.cgi?id=18746>
-
- Change the base to the correct value of the 'this' object after the direct
- eval test instead of before.
-
- Fixes 5 layout tests.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * kjs/nodes.cpp:
- (KJS::EvalFunctionCallNode::emitCode):
-
-2008-04-26 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - document all property getting, setting and deleting opcodes
-
- (And fix function parameter names to match corresponding opcode parameter names.)
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitResolve):
- (KJS::CodeGenerator::emitResolveBase):
- (KJS::CodeGenerator::emitResolveBaseAndProperty):
- (KJS::CodeGenerator::emitResolveBaseAndFunc):
- (KJS::CodeGenerator::emitGetPropId):
- (KJS::CodeGenerator::emitPutPropId):
- (KJS::CodeGenerator::emitDeletePropId):
- (KJS::CodeGenerator::emitPutPropVal):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::resolve):
- (KJS::resolveBase):
- (KJS::resolveBaseAndProperty):
- (KJS::resolveBaseAndFunc):
- (KJS::Machine::privateExecute):
- * kjs/nodes.cpp:
- (KJS::ResolveNode::emitCode):
- (KJS::ArrayNode::emitCode):
- (KJS::PropertyListNode::emitCode):
- (KJS::BracketAccessorNode::emitCode):
- (KJS::EvalFunctionCallNode::emitCode):
- (KJS::FunctionCallResolveNode::emitCode):
- (KJS::FunctionCallBracketNode::emitCode):
- (KJS::PostIncResolveNode::emitCode):
- (KJS::PostDecResolveNode::emitCode):
- (KJS::PostIncBracketNode::emitCode):
- (KJS::PostDecBracketNode::emitCode):
- (KJS::PostIncDotNode::emitCode):
- (KJS::PostDecDotNode::emitCode):
- (KJS::DeleteResolveNode::emitCode):
- (KJS::TypeOfResolveNode::emitCode):
- (KJS::PreIncResolveNode::emitCode):
- (KJS::PreDecResolveNode::emitCode):
- (KJS::PreIncBracketNode::emitCode):
- (KJS::PreDecBracketNode::emitCode):
- (KJS::AssignResolveNode::emitCode):
- (KJS::AssignDotNode::emitCode):
- (KJS::ReadModifyDotNode::emitCode):
- (KJS::AssignBracketNode::emitCode):
- (KJS::ReadModifyBracketNode::emitCode):
- (KJS::ConstDeclNode::emitCodeSingle):
-
-2008-04-26 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 18628: SQUIRRELFISH: need to support recursion limit
- <https://bugs.webkit.org/show_bug.cgi?id=18628>
-
- Basically completes recursion limiting. There is still some
- tuning we may want to do to make things better in the face of
- very bad code, but certainly nothing worse than anything already
- possible in trunk.
-
- Also fixes a WebKit test by fixing the exception text :D
-
- * JavaScriptCore.exp:
- * VM/ExceptionHelpers.cpp:
- * VM/Machine.cpp:
- (KJS::Machine::execute):
- * VM/RegisterFile.cpp:
- (KJS::RegisterFile::growBuffer):
- (KJS::RegisterFile::addGlobalSlots):
- * VM/RegisterFile.h:
- (KJS::RegisterFile::grow):
- (KJS::RegisterFile::uncheckedGrow):
- * VM/RegisterFileStack.cpp:
- (KJS::RegisterFileStack::pushRegisterFile):
- * VM/RegisterFileStack.h:
-
-2008-04-25 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Bug 18628: SQUIRRELFISH: need to support recursion limit
- <https://bugs.webkit.org/show_bug.cgi?id=18628>
-
- Put a limit on the level of reentry recursion. 128 levels of re-entrant recursion
- seems reasonable as it is greater than the old eval limit, and a long way short of
- the reentry depth needed to overflow the stack.
-
- * VM/Machine.cpp:
- (KJS::Machine::execute):
- * VM/Machine.h:
-
-2008-04-25 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- A tiny bit of cleanup to the regexp code.
-
- Removed some static_cast.
-
- Removed createRegExpImp because it's no longer used.
-
-2008-04-25 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 18736: SQUIRRELFISH: switch statements with no default have incorrect codegen
- <https://bugs.webkit.org/show_bug.cgi?id=18736>
-
- Ensure the "default" target is correct in the absence of an explicit default handler.
-
- * kjs/nodes.cpp:
- (KJS::CaseBlockNode::emitCodeForBlock):
-
-2008-04-25 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 18628: SQUIRRELFISH: need to support recursion limit
- <https://bugs.webkit.org/show_bug.cgi?id=18628>
-
- More bounds checking.
-
- * VM/Machine.cpp:
- (KJS::Machine::execute):
- * VM/RegisterFile.cpp:
- (KJS::RegisterFile::growBuffer):
- * VM/RegisterFile.h:
-
-2008-04-25 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - fix signal catching magic
-
- The signal handlers are restored to _exit but are only set when
- running under run-javascriptcore-tests. fprintf from a signal
- handler is not safe.
-
- * kjs/testkjs.cpp:
- (main):
- (parseArguments):
- * tests/mozilla/jsDriver.pl:
-
-2008-04-25 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Bug 18732: SQUIRRELFISH: exceptions thrown by native constructors are ignored
- <https://bugs.webkit.org/show_bug.cgi?id=18732>
-
- Fixes another regression test.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-04-25 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Bug 18728: SQUIRRELFISH: invalid regular expression constants should throw exceptions
- <https://bugs.webkit.org/show_bug.cgi?id=18728>
-
- Fixes another regression test.
-
- * kjs/nodes.cpp:
- (KJS::RegExpNode::emitCode):
-
-2008-04-24 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Geoffrey Garen.
-
- Bug 18735: SQUIRRELFISH: closures are sometimes given an incorrect 'this' value when called
- <https://bugs.webkit.org/show_bug.cgi?id=18735>
-
- The overloaded toThisObject method was not copied over to JSActivation.
-
- Fixes two regression tests.
-
- * kjs/JSActivation.cpp:
- (KJS::JSActivation::toThisObject):
- * kjs/JSActivation.h:
-
-2008-04-24 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Added support for arguments.callee.
-
-2008-04-24 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 18628: SQUIRRELFISH: need to support recursion limit
- <https://bugs.webkit.org/show_bug.cgi?id=18628>
-
- Partial fix -- this gets us some of the required bounds checking, but not
- complete coverage. But it does manage to do them without regressing :D
-
- * VM/ExceptionHelpers.cpp:
- (KJS::createError):
- (KJS::createStackOverflowError):
- * VM/ExceptionHelpers.h:
- * VM/Machine.cpp:
- (KJS::slideRegisterWindowForCall):
- (KJS::Machine::execute):
- (KJS::Machine::privateExecute):
- * VM/RegisterFile.cpp:
- * VM/RegisterFile.h:
- (KJS::RegisterFile::):
- (KJS::RegisterFile::RegisterFile):
- (KJS::RegisterFile::grow):
-
-2008-04-24 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- A tiny bit more handling of "arguments": create a real, but mostly
- hollow, arguments object.
-
- Fixes 2 regression tests.
-
-2008-04-24 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Bug 18717: SQUIRRELFISH: eval returns the wrong value for a variable declaration statement
- <https://bugs.webkit.org/show_bug.cgi?id=18717>
-
- Fixes a regression test, but exposes the failure of another due to the
- lack of getters and setters.
-
- * kjs/nodes.cpp:
- (KJS::ConstDeclNode::emitCodeSingle):
- (KJS::ConstDeclNode::emitCode):
- (KJS::ConstStatementNode::emitCode):
- (KJS::VarStatementNode::emitCode):
- * kjs/nodes.h:
-
-2008-04-24 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Print a CRASH statement when crashing, so test failures are not a
- mystery.
-
- * kjs/testkjs.cpp:
- (handleCrash):
- (main):
-
-2008-04-24 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Geoffrey Garen.
-
- Bug 18716: SQUIRRELFISH: typeof should return undefined for an undefined variable reference
- <https://bugs.webkit.org/show_bug.cgi?id=18716>
-
- This fixes 2 more regression tests.
-
- * kjs/nodes.cpp:
- (KJS::TypeOfResolveNode::emitCode):
-
-2008-04-24 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Put the callee in the call frame.
-
- Necessary in order to support "arguments" and "arguments.callee".
-
- Also fixes a latent GC bug, where an executing function could be
- subject to GC if the register holding it were overwritten. Here's
- an example that would have caused problems:
-
- function f()
- {
- // Flood the machine stack to eliminate any old pointers to f.
- g.call({});
-
- // Overwrite f in the register file.
- f = 1;
-
- // Force a GC.
- for (var i = 0; i < 5000; ++i) {
- ({});
- }
-
- // Welcome to crash-ville.
- }
-
- function g()
- {
- }
-
- f();
-
- * VM/Machine.h: Changed the order of arguments to
- execute(FunctionBodyNode*...) to match the other execute functions.
- * kjs/function.cpp: Updated to match new argument requirements from
- execute(FunctionBodyNode*...). Renamed newObj to thisObj to match the
- rest of JavaScriptCore.
-
- SunSpider reports no change.
-
-2008-04-23 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Bug 18707: SQUIRRELFISH: eval always performs toString() on its argument
- <https://bugs.webkit.org/show_bug.cgi?id=18707>
-
- This fixes 4 more regression tests.
-
- * VM/Machine.cpp:
- (KJS::eval):
-
-2008-04-23 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - fix logic bug in SegmentedVector::grow which would sometimes fail to resize a segment when needed
-
- Fixes 3 JSC tests.
-
- * VM/SegmentedVector.h:
- (KJS::SegmentedVector::grow):
-
-2008-04-23 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Degenerate handling of "arguments" as a property of the activation
- object. Currently, we just return a vanilla object.
-
- SunSpider reports no change.
-
- Fixes:
-
- ecma_3/Function/regress-94506.js.
-
- Reveals to have been secretly broken:
-
- ecma_3/Function/15.3.4.3-1.js
- ecma_3/Function/15.3.4.4-1.js
-
- These tests were passing incorrectly. testkjs creates a global array
- named "arguments" to hold command-line arguments. That array was
- tricking these tests into thinking that an arguments object with length
- 0 had been created. Since our new vanilla object shadows the global
- property named arguments, that object no longer fools these tests into
- passing.
-
- Net change: +1 failing test.
-
- * kjs/AllInOneFile.cpp: Had to put JSActivation.cpp into AllInOneFile.cpp
- to solve a surprising 8.6% regression in bitops-3bit-bits-in-byte.
-
-2008-04-23 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - save and restore callFrame
-
- * VM/Machine.cpp:
- (KJS::slideRegisterWindowForCall):
- (KJS::Machine::execute):
- (KJS::Machine::privateExecute):
- * kjs/testkjs.cpp:
- (main):
-
-2008-04-23 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fixed scopes for named function expressions.
-
- Fixes one regression test.
-
- Two changes here:
-
- (1) The function's name is supposed to have attributes DontDelete,
- ReadOnly, regardless of the type of code executing.
-
- (2) Push the name object on the function's scope chain, rather than
- the ExecState's scope chain because, well, that's where it belongs.
-
-2008-04-23 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Inlined JSObject::putDirect, for a .4% SunSpider speedup.
-
- I did this as a first step toward removing nodes.cpp from
- AllInOneFile.cpp, but I'm putting that larger project aside for now.
-
-2008-04-23 Maciej Stachowiak <mjs@apple.com>
-
- Rubber stamped by Geoff.
-
- - add OldInterpreterExecState class and use it in dead code
-
- This will allow removing things from the real ExecState class
- without having to figure out how to remove all this code without
- getting a perf regression.
-
- * kjs/nodes.cpp:
- (KJS::ExpressionNode::evaluateToNumber):
- (KJS::ExpressionNode::evaluateToBoolean):
- (KJS::ExpressionNode::evaluateToInt32):
- (KJS::ExpressionNode::evaluateToUInt32):
- (KJS::Node::setErrorCompletion):
- (KJS::Node::throwError):
- (KJS::Node::throwUndefinedVariableError):
- (KJS::Node::handleException):
- (KJS::Node::rethrowException):
- (KJS::BreakpointCheckStatement::execute):
- (KJS::BreakpointCheckStatement::optimizeVariableAccess):
- (KJS::NullNode::evaluate):
- (KJS::FalseNode::evaluate):
- (KJS::TrueNode::evaluate):
- (KJS::NumberNode::evaluate):
- (KJS::NumberNode::evaluateToNumber):
- (KJS::NumberNode::evaluateToBoolean):
- (KJS::NumberNode::evaluateToInt32):
- (KJS::NumberNode::evaluateToUInt32):
- (KJS::ImmediateNumberNode::evaluate):
- (KJS::ImmediateNumberNode::evaluateToInt32):
- (KJS::ImmediateNumberNode::evaluateToUInt32):
- (KJS::StringNode::evaluate):
- (KJS::StringNode::evaluateToNumber):
- (KJS::StringNode::evaluateToBoolean):
- (KJS::RegExpNode::evaluate):
- (KJS::ThisNode::evaluate):
- (KJS::ResolveNode::inlineEvaluate):
- (KJS::ResolveNode::evaluate):
- (KJS::ResolveNode::evaluateToNumber):
- (KJS::ResolveNode::evaluateToBoolean):
- (KJS::ResolveNode::evaluateToInt32):
- (KJS::ResolveNode::evaluateToUInt32):
- (KJS::getSymbolTableEntry):
- (KJS::ResolveNode::optimizeVariableAccess):
- (KJS::LocalVarAccessNode::inlineEvaluate):
- (KJS::LocalVarAccessNode::evaluate):
- (KJS::LocalVarAccessNode::evaluateToNumber):
- (KJS::LocalVarAccessNode::evaluateToBoolean):
- (KJS::LocalVarAccessNode::evaluateToInt32):
- (KJS::LocalVarAccessNode::evaluateToUInt32):
- (KJS::getNonLocalSymbol):
- (KJS::ScopedVarAccessNode::inlineEvaluate):
- (KJS::ScopedVarAccessNode::evaluate):
- (KJS::ScopedVarAccessNode::evaluateToNumber):
- (KJS::ScopedVarAccessNode::evaluateToBoolean):
- (KJS::ScopedVarAccessNode::evaluateToInt32):
- (KJS::ScopedVarAccessNode::evaluateToUInt32):
- (KJS::NonLocalVarAccessNode::inlineEvaluate):
- (KJS::NonLocalVarAccessNode::evaluate):
- (KJS::NonLocalVarAccessNode::evaluateToNumber):
- (KJS::NonLocalVarAccessNode::evaluateToBoolean):
- (KJS::NonLocalVarAccessNode::evaluateToInt32):
- (KJS::NonLocalVarAccessNode::evaluateToUInt32):
- (KJS::ElementNode::optimizeVariableAccess):
- (KJS::ElementNode::evaluate):
- (KJS::ArrayNode::optimizeVariableAccess):
- (KJS::ArrayNode::evaluate):
- (KJS::ObjectLiteralNode::optimizeVariableAccess):
- (KJS::ObjectLiteralNode::evaluate):
- (KJS::PropertyListNode::optimizeVariableAccess):
- (KJS::PropertyListNode::evaluate):
- (KJS::PropertyNode::optimizeVariableAccess):
- (KJS::PropertyNode::evaluate):
- (KJS::BracketAccessorNode::optimizeVariableAccess):
- (KJS::BracketAccessorNode::inlineEvaluate):
- (KJS::BracketAccessorNode::evaluate):
- (KJS::BracketAccessorNode::evaluateToNumber):
- (KJS::BracketAccessorNode::evaluateToBoolean):
- (KJS::BracketAccessorNode::evaluateToInt32):
- (KJS::BracketAccessorNode::evaluateToUInt32):
- (KJS::DotAccessorNode::optimizeVariableAccess):
- (KJS::DotAccessorNode::inlineEvaluate):
- (KJS::DotAccessorNode::evaluate):
- (KJS::DotAccessorNode::evaluateToNumber):
- (KJS::DotAccessorNode::evaluateToBoolean):
- (KJS::DotAccessorNode::evaluateToInt32):
- (KJS::DotAccessorNode::evaluateToUInt32):
- (KJS::ArgumentListNode::optimizeVariableAccess):
- (KJS::ArgumentListNode::evaluateList):
- (KJS::ArgumentsNode::optimizeVariableAccess):
- (KJS::NewExprNode::optimizeVariableAccess):
- (KJS::NewExprNode::inlineEvaluate):
- (KJS::NewExprNode::evaluate):
- (KJS::NewExprNode::evaluateToNumber):
- (KJS::NewExprNode::evaluateToBoolean):
- (KJS::NewExprNode::evaluateToInt32):
- (KJS::NewExprNode::evaluateToUInt32):
- (KJS::ExpressionNode::resolveAndCall):
- (KJS::EvalFunctionCallNode::optimizeVariableAccess):
- (KJS::EvalFunctionCallNode::evaluate):
- (KJS::FunctionCallValueNode::optimizeVariableAccess):
- (KJS::FunctionCallValueNode::evaluate):
- (KJS::FunctionCallResolveNode::optimizeVariableAccess):
- (KJS::FunctionCallResolveNode::inlineEvaluate):
- (KJS::FunctionCallResolveNode::evaluate):
- (KJS::FunctionCallResolveNode::evaluateToNumber):
- (KJS::FunctionCallResolveNode::evaluateToBoolean):
- (KJS::FunctionCallResolveNode::evaluateToInt32):
- (KJS::FunctionCallResolveNode::evaluateToUInt32):
- (KJS::LocalVarFunctionCallNode::inlineEvaluate):
- (KJS::LocalVarFunctionCallNode::evaluate):
- (KJS::LocalVarFunctionCallNode::evaluateToNumber):
- (KJS::LocalVarFunctionCallNode::evaluateToBoolean):
- (KJS::LocalVarFunctionCallNode::evaluateToInt32):
- (KJS::LocalVarFunctionCallNode::evaluateToUInt32):
- (KJS::ScopedVarFunctionCallNode::inlineEvaluate):
- (KJS::ScopedVarFunctionCallNode::evaluate):
- (KJS::ScopedVarFunctionCallNode::evaluateToNumber):
- (KJS::ScopedVarFunctionCallNode::evaluateToBoolean):
- (KJS::ScopedVarFunctionCallNode::evaluateToInt32):
- (KJS::ScopedVarFunctionCallNode::evaluateToUInt32):
- (KJS::NonLocalVarFunctionCallNode::inlineEvaluate):
- (KJS::NonLocalVarFunctionCallNode::evaluate):
- (KJS::NonLocalVarFunctionCallNode::evaluateToNumber):
- (KJS::NonLocalVarFunctionCallNode::evaluateToBoolean):
- (KJS::NonLocalVarFunctionCallNode::evaluateToInt32):
- (KJS::NonLocalVarFunctionCallNode::evaluateToUInt32):
- (KJS::FunctionCallBracketNode::optimizeVariableAccess):
- (KJS::FunctionCallBracketNode::evaluate):
- (KJS::FunctionCallDotNode::optimizeVariableAccess):
- (KJS::FunctionCallDotNode::inlineEvaluate):
- (KJS::FunctionCallDotNode::evaluate):
- (KJS::FunctionCallDotNode::evaluateToNumber):
- (KJS::FunctionCallDotNode::evaluateToBoolean):
- (KJS::FunctionCallDotNode::evaluateToInt32):
- (KJS::FunctionCallDotNode::evaluateToUInt32):
- (KJS::PostIncResolveNode::optimizeVariableAccess):
- (KJS::PostIncResolveNode::evaluate):
- (KJS::PostIncLocalVarNode::evaluate):
- (KJS::PostDecResolveNode::optimizeVariableAccess):
- (KJS::PostDecResolveNode::evaluate):
- (KJS::PostDecLocalVarNode::evaluate):
- (KJS::PostDecLocalVarNode::inlineEvaluateToNumber):
- (KJS::PostDecLocalVarNode::evaluateToNumber):
- (KJS::PostDecLocalVarNode::evaluateToBoolean):
- (KJS::PostDecLocalVarNode::evaluateToInt32):
- (KJS::PostDecLocalVarNode::evaluateToUInt32):
- (KJS::PostfixBracketNode::optimizeVariableAccess):
- (KJS::PostIncBracketNode::evaluate):
- (KJS::PostDecBracketNode::evaluate):
- (KJS::PostfixDotNode::optimizeVariableAccess):
- (KJS::PostIncDotNode::evaluate):
- (KJS::PostDecDotNode::evaluate):
- (KJS::PostfixErrorNode::evaluate):
- (KJS::DeleteResolveNode::optimizeVariableAccess):
- (KJS::DeleteResolveNode::evaluate):
- (KJS::LocalVarDeleteNode::evaluate):
- (KJS::DeleteBracketNode::optimizeVariableAccess):
- (KJS::DeleteBracketNode::evaluate):
- (KJS::DeleteDotNode::optimizeVariableAccess):
- (KJS::DeleteDotNode::evaluate):
- (KJS::DeleteValueNode::optimizeVariableAccess):
- (KJS::DeleteValueNode::evaluate):
- (KJS::VoidNode::optimizeVariableAccess):
- (KJS::VoidNode::evaluate):
- (KJS::TypeOfValueNode::optimizeVariableAccess):
- (KJS::TypeOfResolveNode::optimizeVariableAccess):
- (KJS::LocalVarTypeOfNode::evaluate):
- (KJS::TypeOfResolveNode::evaluate):
- (KJS::TypeOfValueNode::evaluate):
- (KJS::PreIncResolveNode::optimizeVariableAccess):
- (KJS::PreIncLocalVarNode::evaluate):
- (KJS::PreIncResolveNode::evaluate):
- (KJS::PreDecResolveNode::optimizeVariableAccess):
- (KJS::PreDecLocalVarNode::evaluate):
- (KJS::PreDecResolveNode::evaluate):
- (KJS::PreIncConstNode::evaluate):
- (KJS::PreDecConstNode::evaluate):
- (KJS::PostIncConstNode::evaluate):
- (KJS::PostDecConstNode::evaluate):
- (KJS::PrefixBracketNode::optimizeVariableAccess):
- (KJS::PreIncBracketNode::evaluate):
- (KJS::PreDecBracketNode::evaluate):
- (KJS::PrefixDotNode::optimizeVariableAccess):
- (KJS::PreIncDotNode::evaluate):
- (KJS::PreDecDotNode::evaluate):
- (KJS::PrefixErrorNode::evaluate):
- (KJS::UnaryPlusNode::optimizeVariableAccess):
- (KJS::UnaryPlusNode::evaluate):
- (KJS::UnaryPlusNode::evaluateToBoolean):
- (KJS::UnaryPlusNode::evaluateToNumber):
- (KJS::UnaryPlusNode::evaluateToInt32):
- (KJS::UnaryPlusNode::evaluateToUInt32):
- (KJS::NegateNode::optimizeVariableAccess):
- (KJS::NegateNode::evaluate):
- (KJS::NegateNode::evaluateToNumber):
- (KJS::BitwiseNotNode::optimizeVariableAccess):
- (KJS::BitwiseNotNode::inlineEvaluateToInt32):
- (KJS::BitwiseNotNode::evaluate):
- (KJS::BitwiseNotNode::evaluateToNumber):
- (KJS::BitwiseNotNode::evaluateToBoolean):
- (KJS::BitwiseNotNode::evaluateToInt32):
- (KJS::BitwiseNotNode::evaluateToUInt32):
- (KJS::LogicalNotNode::optimizeVariableAccess):
- (KJS::LogicalNotNode::evaluate):
- (KJS::LogicalNotNode::evaluateToBoolean):
- (KJS::MultNode::optimizeVariableAccess):
- (KJS::MultNode::inlineEvaluateToNumber):
- (KJS::MultNode::evaluate):
- (KJS::MultNode::evaluateToNumber):
- (KJS::MultNode::evaluateToBoolean):
- (KJS::MultNode::evaluateToInt32):
- (KJS::MultNode::evaluateToUInt32):
- (KJS::DivNode::optimizeVariableAccess):
- (KJS::DivNode::inlineEvaluateToNumber):
- (KJS::DivNode::evaluate):
- (KJS::DivNode::evaluateToNumber):
- (KJS::DivNode::evaluateToInt32):
- (KJS::DivNode::evaluateToUInt32):
- (KJS::ModNode::optimizeVariableAccess):
- (KJS::ModNode::inlineEvaluateToNumber):
- (KJS::ModNode::evaluate):
- (KJS::ModNode::evaluateToNumber):
- (KJS::ModNode::evaluateToBoolean):
- (KJS::ModNode::evaluateToInt32):
- (KJS::ModNode::evaluateToUInt32):
- (KJS::throwOutOfMemoryErrorToNumber):
- (KJS::addSlowCase):
- (KJS::addSlowCaseToNumber):
- (KJS::add):
- (KJS::addToNumber):
- (KJS::AddNode::optimizeVariableAccess):
- (KJS::AddNode::evaluate):
- (KJS::AddNode::inlineEvaluateToNumber):
- (KJS::AddNode::evaluateToNumber):
- (KJS::AddNode::evaluateToInt32):
- (KJS::AddNode::evaluateToUInt32):
- (KJS::AddNumbersNode::inlineEvaluateToNumber):
- (KJS::AddNumbersNode::evaluate):
- (KJS::AddNumbersNode::evaluateToNumber):
- (KJS::AddNumbersNode::evaluateToInt32):
- (KJS::AddNumbersNode::evaluateToUInt32):
- (KJS::AddStringsNode::evaluate):
- (KJS::AddStringLeftNode::evaluate):
- (KJS::AddStringRightNode::evaluate):
- (KJS::SubNode::optimizeVariableAccess):
- (KJS::SubNode::inlineEvaluateToNumber):
- (KJS::SubNode::evaluate):
- (KJS::SubNode::evaluateToNumber):
- (KJS::SubNode::evaluateToInt32):
- (KJS::SubNode::evaluateToUInt32):
- (KJS::LeftShiftNode::optimizeVariableAccess):
- (KJS::LeftShiftNode::inlineEvaluateToInt32):
- (KJS::LeftShiftNode::evaluate):
- (KJS::LeftShiftNode::evaluateToNumber):
- (KJS::LeftShiftNode::evaluateToInt32):
- (KJS::LeftShiftNode::evaluateToUInt32):
- (KJS::RightShiftNode::optimizeVariableAccess):
- (KJS::RightShiftNode::inlineEvaluateToInt32):
- (KJS::RightShiftNode::evaluate):
- (KJS::RightShiftNode::evaluateToNumber):
- (KJS::RightShiftNode::evaluateToInt32):
- (KJS::RightShiftNode::evaluateToUInt32):
- (KJS::UnsignedRightShiftNode::optimizeVariableAccess):
- (KJS::UnsignedRightShiftNode::inlineEvaluateToUInt32):
- (KJS::UnsignedRightShiftNode::evaluate):
- (KJS::UnsignedRightShiftNode::evaluateToNumber):
- (KJS::UnsignedRightShiftNode::evaluateToInt32):
- (KJS::UnsignedRightShiftNode::evaluateToUInt32):
- (KJS::lessThan):
- (KJS::lessThanEq):
- (KJS::LessNode::optimizeVariableAccess):
- (KJS::LessNode::inlineEvaluateToBoolean):
- (KJS::LessNode::evaluate):
- (KJS::LessNode::evaluateToBoolean):
- (KJS::LessNumbersNode::inlineEvaluateToBoolean):
- (KJS::LessNumbersNode::evaluate):
- (KJS::LessNumbersNode::evaluateToBoolean):
- (KJS::LessStringsNode::inlineEvaluateToBoolean):
- (KJS::LessStringsNode::evaluate):
- (KJS::LessStringsNode::evaluateToBoolean):
- (KJS::GreaterNode::optimizeVariableAccess):
- (KJS::GreaterNode::inlineEvaluateToBoolean):
- (KJS::GreaterNode::evaluate):
- (KJS::GreaterNode::evaluateToBoolean):
- (KJS::LessEqNode::optimizeVariableAccess):
- (KJS::LessEqNode::inlineEvaluateToBoolean):
- (KJS::LessEqNode::evaluate):
- (KJS::LessEqNode::evaluateToBoolean):
- (KJS::GreaterEqNode::optimizeVariableAccess):
- (KJS::GreaterEqNode::inlineEvaluateToBoolean):
- (KJS::GreaterEqNode::evaluate):
- (KJS::GreaterEqNode::evaluateToBoolean):
- (KJS::InstanceOfNode::optimizeVariableAccess):
- (KJS::InstanceOfNode::evaluate):
- (KJS::InstanceOfNode::evaluateToBoolean):
- (KJS::InNode::optimizeVariableAccess):
- (KJS::InNode::evaluate):
- (KJS::InNode::evaluateToBoolean):
- (KJS::EqualNode::optimizeVariableAccess):
- (KJS::EqualNode::inlineEvaluateToBoolean):
- (KJS::EqualNode::evaluate):
- (KJS::EqualNode::evaluateToBoolean):
- (KJS::NotEqualNode::optimizeVariableAccess):
- (KJS::NotEqualNode::inlineEvaluateToBoolean):
- (KJS::NotEqualNode::evaluate):
- (KJS::NotEqualNode::evaluateToBoolean):
- (KJS::StrictEqualNode::optimizeVariableAccess):
- (KJS::StrictEqualNode::inlineEvaluateToBoolean):
- (KJS::StrictEqualNode::evaluate):
- (KJS::StrictEqualNode::evaluateToBoolean):
- (KJS::NotStrictEqualNode::optimizeVariableAccess):
- (KJS::NotStrictEqualNode::inlineEvaluateToBoolean):
- (KJS::NotStrictEqualNode::evaluate):
- (KJS::NotStrictEqualNode::evaluateToBoolean):
- (KJS::BitAndNode::optimizeVariableAccess):
- (KJS::BitAndNode::evaluate):
- (KJS::BitAndNode::inlineEvaluateToInt32):
- (KJS::BitAndNode::evaluateToNumber):
- (KJS::BitAndNode::evaluateToBoolean):
- (KJS::BitAndNode::evaluateToInt32):
- (KJS::BitAndNode::evaluateToUInt32):
- (KJS::BitXOrNode::optimizeVariableAccess):
- (KJS::BitXOrNode::inlineEvaluateToInt32):
- (KJS::BitXOrNode::evaluate):
- (KJS::BitXOrNode::evaluateToNumber):
- (KJS::BitXOrNode::evaluateToBoolean):
- (KJS::BitXOrNode::evaluateToInt32):
- (KJS::BitXOrNode::evaluateToUInt32):
- (KJS::BitOrNode::optimizeVariableAccess):
- (KJS::BitOrNode::inlineEvaluateToInt32):
- (KJS::BitOrNode::evaluate):
- (KJS::BitOrNode::evaluateToNumber):
- (KJS::BitOrNode::evaluateToBoolean):
- (KJS::BitOrNode::evaluateToInt32):
- (KJS::BitOrNode::evaluateToUInt32):
- (KJS::LogicalAndNode::optimizeVariableAccess):
- (KJS::LogicalAndNode::evaluate):
- (KJS::LogicalAndNode::evaluateToBoolean):
- (KJS::LogicalOrNode::optimizeVariableAccess):
- (KJS::LogicalOrNode::evaluate):
- (KJS::LogicalOrNode::evaluateToBoolean):
- (KJS::ConditionalNode::optimizeVariableAccess):
- (KJS::ConditionalNode::evaluate):
- (KJS::ConditionalNode::evaluateToBoolean):
- (KJS::ConditionalNode::evaluateToNumber):
- (KJS::ConditionalNode::evaluateToInt32):
- (KJS::ConditionalNode::evaluateToUInt32):
- (KJS::valueForReadModifyAssignment):
- (KJS::ReadModifyResolveNode::optimizeVariableAccess):
- (KJS::AssignResolveNode::optimizeVariableAccess):
- (KJS::ReadModifyLocalVarNode::evaluate):
- (KJS::AssignLocalVarNode::evaluate):
- (KJS::ReadModifyConstNode::evaluate):
- (KJS::AssignConstNode::evaluate):
- (KJS::ReadModifyResolveNode::evaluate):
- (KJS::AssignResolveNode::evaluate):
- (KJS::AssignDotNode::optimizeVariableAccess):
- (KJS::AssignDotNode::evaluate):
- (KJS::ReadModifyDotNode::optimizeVariableAccess):
- (KJS::ReadModifyDotNode::evaluate):
- (KJS::AssignErrorNode::evaluate):
- (KJS::AssignBracketNode::optimizeVariableAccess):
- (KJS::AssignBracketNode::evaluate):
- (KJS::ReadModifyBracketNode::optimizeVariableAccess):
- (KJS::ReadModifyBracketNode::evaluate):
- (KJS::CommaNode::optimizeVariableAccess):
- (KJS::CommaNode::evaluate):
- (KJS::ConstDeclNode::optimizeVariableAccess):
- (KJS::ConstDeclNode::handleSlowCase):
- (KJS::ConstDeclNode::evaluateSingle):
- (KJS::ConstDeclNode::evaluate):
- (KJS::ConstStatementNode::optimizeVariableAccess):
- (KJS::ConstStatementNode::execute):
- (KJS::statementListExecute):
- (KJS::BlockNode::optimizeVariableAccess):
- (KJS::BlockNode::execute):
- (KJS::EmptyStatementNode::execute):
- (KJS::ExprStatementNode::optimizeVariableAccess):
- (KJS::ExprStatementNode::execute):
- (KJS::VarStatementNode::optimizeVariableAccess):
- (KJS::VarStatementNode::execute):
- (KJS::IfNode::optimizeVariableAccess):
- (KJS::IfNode::execute):
- (KJS::IfElseNode::optimizeVariableAccess):
- (KJS::IfElseNode::execute):
- (KJS::DoWhileNode::optimizeVariableAccess):
- (KJS::DoWhileNode::execute):
- (KJS::WhileNode::optimizeVariableAccess):
- (KJS::WhileNode::execute):
- (KJS::ForNode::optimizeVariableAccess):
- (KJS::ForNode::execute):
- (KJS::ForInNode::optimizeVariableAccess):
- (KJS::ForInNode::execute):
- (KJS::ContinueNode::execute):
- (KJS::BreakNode::execute):
- (KJS::ReturnNode::optimizeVariableAccess):
- (KJS::ReturnNode::execute):
- (KJS::WithNode::optimizeVariableAccess):
- (KJS::WithNode::execute):
- (KJS::CaseClauseNode::optimizeVariableAccess):
- (KJS::CaseClauseNode::evaluate):
- (KJS::CaseClauseNode::executeStatements):
- (KJS::ClauseListNode::optimizeVariableAccess):
- (KJS::CaseBlockNode::optimizeVariableAccess):
- (KJS::CaseBlockNode::executeBlock):
- (KJS::SwitchNode::optimizeVariableAccess):
- (KJS::SwitchNode::execute):
- (KJS::LabelNode::optimizeVariableAccess):
- (KJS::LabelNode::execute):
- (KJS::ThrowNode::optimizeVariableAccess):
- (KJS::ThrowNode::execute):
- (KJS::TryNode::optimizeVariableAccess):
- (KJS::TryNode::execute):
- (KJS::ProgramNode::initializeSymbolTable):
- (KJS::ScopeNode::optimizeVariableAccess):
- (KJS::ProgramNode::processDeclarations):
- (KJS::EvalNode::processDeclarations):
- (KJS::ProgramNode::execute):
- (KJS::EvalNode::execute):
- (KJS::FunctionBodyNodeWithDebuggerHooks::execute):
- (KJS::FuncDeclNode::execute):
- (KJS::FuncExprNode::evaluate):
- * kjs/nodes.h:
- (KJS::Node::):
- (KJS::FalseNode::):
- (KJS::TrueNode::):
- (KJS::ArgumentsNode::):
-
-2008-04-23 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Bug 18672: SQUIRRELFISH: codegen fails with a large number of temporaries
- <https://bugs.webkit.org/show_bug.cgi?id=18672>
-
- Add a SegmentedVector type, which provides a Vector<T> which maintains
- existing memory locations during resize. This allows dynamically sizing
- local, temporary and label "vectors" in CodeGenerator.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::addVar):
- (KJS::CodeGenerator::CodeGenerator):
- (KJS::CodeGenerator::newTemporary):
- (KJS::CodeGenerator::newLabel):
- * VM/CodeGenerator.h:
- * VM/SegmentedVector.h: Added.
- (KJS::SegmentedVector::SegmentedVector):
- (KJS::SegmentedVector::~SegmentedVector):
- (KJS::SegmentedVector::last):
- (KJS::SegmentedVector::append):
- (KJS::SegmentedVector::removeLast):
- (KJS::SegmentedVector::size):
- (KJS::SegmentedVector::operator[]):
- (KJS::SegmentedVector::resize):
- (KJS::SegmentedVector::shrink):
- (KJS::SegmentedVector::grow):
-
-2008-04-23 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- A little refactoring in preparation for supporting 'arguments'.
-
- Fixes 2 regression tests.
-
- SunSpider reports no change.
-
- We now check the activation register, instead of the codeBlock, to
- determine whether we need to tear off the activation. This is to support
- "f.arguments", which will create an activation/arguments pair for f,
- even though the needsFullScopeChain flag is false for f's codeBlock.
-
- The test fixes resulted from calling initializeCallFrame for re-entrant
- function code, instead of initializing (not enough) parts of the call
- frame by hand.
-
-2008-04-22 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Sam.
-
- - propagate the "this" value properly to local eval
-
- (fixes a measly one regression test)
-
- * VM/CodeBlock.h:
- (KJS::CodeBlock::CodeBlock):
- (KJS::ProgramCodeBlock::ProgramCodeBlock):
- (KJS::EvalCodeBlock::EvalCodeBlock):
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-04-22 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Add support for function declarations in eval code.
-
- (this fixes 12 more regression tests)
-
- * VM/CodeBlock.h:
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::CodeGenerator):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::execute):
- * kjs/nodes.cpp:
- (KJS::EvalNode::generateCode):
-
-2008-04-22 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Implement LabelNode.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::pushJumpContext):
- (KJS::CodeGenerator::jumpContextForContinue):
- (KJS::CodeGenerator::jumpContextForBreak):
- * VM/CodeGenerator.h:
- * kjs/nodes.cpp:
- (KJS::DoWhileNode::emitCode):
- (KJS::WhileNode::emitCode):
- (KJS::ForNode::emitCode):
- (KJS::ForInNode::emitCode):
- (KJS::ContinueNode::emitCode):
- (KJS::BreakNode::emitCode):
- (KJS::SwitchNode::emitCode):
- (KJS::LabelNode::emitCode):
-
-2008-04-22 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fixed crash when unwinding from exceptions inside eval.
-
- * VM/Machine.cpp:
- (KJS::Machine::unwindCallFrame): Don't assume that the top of the
- current call frame's scope chain is an activation: it can be the global
- object, instead.
-
-2008-04-22 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Geoff.
-
- * kjs/testkjs.cpp:
- (main): Convert signals to exit codes, so that crashing tests are
- detected as regression test failures.
-
-2008-04-22 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt and Maciej Stachowiak.
-
- Renamed "needsActivation" to "needsFullScopeChain" because lying will
- make hair grow on the backs of your hands.
-
-2008-04-21 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fixed ScopeChainNode lifetime problems:
-
- (1) In "with" and "catch" scopes, we would construct a ScopeChain
- object and then jump across its destructor, leaking the ScopeChainNode
- we had pushed.
-
- (2) In global and eval scopes, we would fail to initially ref
- "scopeChain", causing us to overrelease it later. Now that we ref
- "scopeChain" properly, we also need to deref it when the script
- terminates.
-
- SunSpider reports a .2% regression, but an earlier round of ScopeChain
- refactoring was a .4% speedup, so there.
-
-2008-04-22 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Alexey.
-
- - use global object instead of null for "this" on unqualified calls
-
- This fixes 10 more JSC test regressions.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-04-22 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - throw proper exceptions for objects that don't implement call or construct
-
- This fixes 21 more JSC test regressions. It is also seemingly an
- 0.5% progression.
-
- * VM/ExceptionHelpers.cpp:
- (KJS::createNotAnObjectError):
- (KJS::createNotAConstructorError):
- (KJS::createNotAFunctionError):
- * VM/ExceptionHelpers.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-04-21 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Implement emitCode for ConstDeclNode.
-
- This fixes the crash (assertion) in js1_5/Scope/scope-001.js
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::registerForLocalConstInit):
- * VM/CodeGenerator.h:
- * kjs/nodes.cpp:
- (KJS::AssignResolveNode::emitCode):
- (KJS::ConstDeclNode::emitCodeSingle):
- (KJS::ConstDeclNode::emitCode):
- (KJS::ConstStatementNode::emitCode):
- * kjs/nodes.h:
-
-2008-04-21 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Sam.
-
- - add some support for the split window object
-
- This fixes many layout tests.
-
- * VM/Machine.cpp:
- (KJS::resolveBaseAndFunc): Use toThisObject() to ensure we get the
- wrapper global, if one exists, as the "this" object.
- * kjs/function.cpp:
- (KJS::globalFuncEval): Use toGlobalObject() to handle the wrapper
- case properly.
-
-2008-04-21 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - restore ScopeChain::operator= to avoid crash on many layout tests
-
- Otherwise, FunctionImp::setScope would cause a reference
- underflow. I implemented using the copy construct and swap idiom.
-
- * kjs/scope_chain.h:
- (KJS::ScopeChain::swap):
- (KJS::ScopeChain::operator=):
-
-2008-04-21 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Bug 18649: SQUIRRELFISH: correctly handle exceptions in eval code
- <https://bugs.webkit.org/show_bug.cgi?id=18649>
-
- Allocate a callframe for eval() and initialise with a null codeBlock to
- indicate native code. This prevents the unwinder from clobbering the
- register stack.
-
- * VM/Machine.cpp:
- (KJS::Machine::execute):
-
-2008-04-21 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Removed ScopeChain::push(ScopeChain&) because it was unused. Moved
- ScopeChain::print to ScopeChainNode.
-
- ScopeChain is now nothing more than a resource-handling wrapper around
- ScopeChainNode.
-
-2008-04-21 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Bug 18671: SquirrelFish: continue inside switch fails
- <https://bugs.webkit.org/show_bug.cgi?id=18671>
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::jumpContextForLabel):
- * VM/CodeGenerator.h:
- * kjs/nodes.cpp:
- (KJS::ContinueNode::emitCode):
-
-2008-04-21 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Moved push(JSObject*) and pop() from ScopeChain to ScopeChainNode,
- rearranging scope_chain.h a bit.
-
- SunSpider reports no change.
-
-2008-04-21 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Moved bottom() from ScopeChain to ScopeChainNode, simplifying it based
- on the knowledge that the ScopeChain is never empty.
-
- SunSpider reports no change.
-
-2008-04-21 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Moved begin() and end() from ScopeChain to ScopeChainNode.
-
- Also marked a few methods "const".
-
- SunSpider reports no change.
-
-2008-04-21 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Turned ScopeChain::depth into a stand-alone function, and simplified it
- a bit.
-
- I also moved ScopeChain::depth to Machine.cpp because it doesn't report
- the true depth of the ScopeChain -- just the Machine's perspective of
- its depth within a given call frame.
-
- SunSpider reports no change.
-
-2008-04-21 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Removed indirection in ScopeChain::ref / ScopeChain::deref.
-
- SunSpider reports no change.
-
- * kjs/scope_chain.h:
- (KJS::ScopeChain::ScopeChain):
- (KJS::ScopeChain::~ScopeChain):
- (KJS::ScopeChain::clear):
-
-2008-04-21 Oliver Hunt <oliver@apple.com>
-
- Fix debug build
-
- * kjs/nodes.cpp:
- (KJS::ConstDeclNode::evaluateSingle):
-
-2008-04-21 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Bug 18664: SQUIRRELFISH: correctly throw a SyntaxError when parsing of eval code fails
- <https://bugs.webkit.org/show_bug.cgi?id=18664>
-
- Correctly throw a SyntaxError when parsing of eval code fails.
-
- * VM/Machine.cpp:
- (KJS::eval):
-
-2008-04-21 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Partial fix for Bug 18649: SQUIRRELFISH: correctly handle exceptions in eval code
-
- Make sure we correct the register state before jumping to vm_throw.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-04-21 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Simplified ScopeChain ref/deref.
-
- SunSpider reports a .4% speedup.
-
- * kjs/scope_chain.h:
- (KJS::ScopeChainNode::ref): Removed this function because it was nonsense.
- ScopeChainNodes are initialized with a refCount of 1, so the loop was
- guaranteed to iterate exactly once.
-
-2008-04-21 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Removed support for empty ScopeChains.
-
- SunSpider reports no change.
-
-2008-04-21 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Removed some completely unused ScopeChain member functions.
-
- SunSpider reports no change.
-
-2008-04-21 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Avoid creating unnecessary ScopeChain objects, to reduce refcount churn.
-
- SunSpider reports no change.
-
-2008-04-21 Maciej Stachowiak <mjs@apple.com>
-
- Rubber stamped by Alexey.
-
- Add some braces.x
-
- * kjs/testkjs.cpp:
- (runWithScripts):
-
-2008-04-21 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - only print "End:" output when -d flag is passed.
-
- This fixes half of our failing JSC regression tests.
-
- * kjs/testkjs.cpp:
- (runWithScripts):
-
-2008-04-21 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Add support for variable declarations in eval code.
-
- * VM/CodeBlock.h:
- (KJS::EvalCodeBlock::EvalCodeBlock):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::CodeGenerator):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::execute):
- * VM/Machine.h:
- * kjs/function.cpp:
- (KJS::globalFuncEval):
- * kjs/nodes.cpp:
- (KJS::EvalNode::generateCode):
- * kjs/nodes.h:
- (KJS::EvalNode::):
-
-2008-04-20 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Throw exceptions for invalid continue, break, and return statements.
-
- Simple refactoring and extension of Cameron's AssignErrorNode, etc patch
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::CodeGenerator):
- (KJS::CodeGenerator::pushJumpContext):
- (KJS::CodeGenerator::popJumpContext):
- (KJS::CodeGenerator::jumpContextForLabel):
- * VM/CodeGenerator.h:
- * kjs/nodes.cpp:
- (KJS::Node::emitThrowError):
- (KJS::ContinueNode::emitCode):
- (KJS::BreakNode::emitCode):
- (KJS::ReturnNode::emitCode):
- * kjs/nodes.h:
-
-2008-04-20 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Removed Machine.cpp from AllInOneFile.cpp, and manually inlined a few
- things that used to be inlined automatically.
-
- 1.9% speedup on SunSpider.
-
- My hope is that we'll face fewer surprises in Machine.cpp codegen, now
- that GCC is making fewer decisions. The speedup seems to confirm that.
-
-2008-04-20 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 18642: Iterator context may get placed into the return register, leading to much badness
- <https://bugs.webkit.org/show_bug.cgi?id=18642>
-
- To prevent incorrectly reusing what will become the result register for
- eval and global code execution, we need to request and ref the destination
- in advance of codegen. Unfortunately this may lead to unnecessary copying,
- although in future we can probably limit this. Curiously SunSpider shows
- a progression in a number of tests, although it comes out as a wash overall.
-
- * kjs/nodes.cpp:
- (KJS::EvalNode::emitCode):
- (KJS::ProgramNode::emitCode):
-
-2008-04-20 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Add support for AssignErrorNode, PrefixErrorNode, and PostfixErrorNode.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitCreateError):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::PostfixErrorNode::emitCode):
- (KJS::PrefixErrorNode::emitCode):
- (KJS::AssignErrorNode::emitCode):
- * kjs/nodes.h:
-
-2008-04-20 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff and Mark.
-
- Provide line number information in exceptions
-
- Simple patch, adds line number information metadata to CodeBlock
- and a simple method to get the line number responsible for a given
- Instruction*.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::lineNumberForVPC):
- * VM/CodeBlock.h:
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::emitNode):
- * VM/Machine.cpp:
- (KJS::Machine::throwException):
-
-2008-04-20 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Provide "sourceURL" in exceptions
-
- * VM/CodeBlock.h:
- * VM/Machine.cpp:
- (KJS::Machine::throwException):
- * kjs/nodes.cpp:
- (KJS::EvalNode::generateCode):
- (KJS::ProgramNode::generateCode):
-
-2008-04-19 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Don't call emitCode directly on subnodes, instead use CodeGenerator::emitNode
-
- This patch just a preparation for tracking line numbers.
-
- * kjs/nodes.cpp:
- (KJS::ObjectLiteralNode::emitCode):
- (KJS::PropertyListNode::emitCode):
- (KJS::ArgumentListNode::emitCode):
- (KJS::TryNode::emitCode):
-
-2008-04-19 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 18619: Support continue, break, and return in try .. finally blocks
- <https://bugs.webkit.org/show_bug.cgi?id=18619>
-
- This patch replaces the current partial finally support (which uses code
- duplication to achieve what it does) with a subroutine based approach.
- This has a number of advantages over code duplication:
- * Reduced code size
- * Simplified exception handling as the finaliser code only exists in
- one place, so no "magic" is needed to get the correct handler for a
- finaliser.
- * When we support instruction to line number mapping we won't need to
- worry about the dramatic code movement caused by duplication
-
- On the downside it is necessary to add two new opcodes, op_jsr and op_sret
- to enter and exit the finaliser subroutines, happily SunSpider reports
- a performance progression (gcc amazes me) and ubench reports a wash.
-
- While jsr and sret provide a mechanism that allows us to enter and exit
- any arbitrary finaliser we need to, it was still necessary to increase
- the amount of information tracked when entering and exiting both finaliser
- scopes and dynamic scopes ("with"). This means "scopeDepth" is now
- the combination of "finaliserDepth" and "dynamicScopeDepth". We also
- now use a scopeContextStack to ensure that we pop scopes and execute
- finalisers in the correct order. This increases the cost of "with" nodes
- during codegen, but it should not be significant enough to effect real
- world performance and greatly simplifies codegen for return, break and
- continue when interacting with finalisers.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- Pretty printing of jsr/sret opcodes
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::CodeGenerator):
- (KJS::CodeGenerator::emitPushScope):
- (KJS::CodeGenerator::emitPopScope):
- Dynamic scopes need to be tracked on the scopeContextStack now
-
- (KJS::CodeGenerator::pushFinallyContext):
- (KJS::CodeGenerator::popFinallyContext):
- Handle entry and exit from code regions with finalisers. This is
- needed solely to support return, continue and break inside finaliser
- regions.
-
- (KJS::CodeGenerator::emitComplexJumpScopes):
- Helper function for emitJumpScopes to handle the complex codegen
- needed to handle return, continue and break inside a finaliser region
-
- (KJS::CodeGenerator::emitJumpScopes):
- Updated to be aware of finalisers, if a cross-scope jump occurs inside
- a finaliser we hand off codegen to emitComplexJumpScopes, otherwise
- we can handle the normal (trivial) case with a single instruction.
-
- (KJS::CodeGenerator::emitJumpSubroutine):
- (KJS::CodeGenerator::emitSubroutineReturn):
- Trivial opcode emitter functions.
-
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::scopeDepth):
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- Implement op_jsr and op_sret.
-
- * VM/Opcode.h:
- Ad op_jsr and op_sret
-
- * kjs/nodes.cpp:
- (KJS::TryNode::emitCode):
- Fix codegen for new finaliser model.
-
-2008-04-17 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Oliver Hunt.
-
- Remove unnecessary files from testkjs, testapi and minidom targets.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2008-04-17 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fixed ASSERT seen during run-sunspider of a debug build.
-
- * VM/CodeGenerator.h: Made the default codegen buffers bigger. SunSpider
- runs all tests in one global environment, so you end up with more than
- 128 locals. This is just a stop-gap until we code up a real
- solution to arbitrary symbol and label limits.
-
-2008-04-17 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fixed a bug in exception unwinding, where we wouldn't deref the scope
- chain in global scope, so we would leak ScopeChainNodes when exceptions
- were thrown inside "with" and "catch" scopes.
-
- Also did some cleanup of the unwinding code along the way.
-
- Scope chain reference counting is still wrong in a few ways. I thought
- I would fix this portion of it first.
-
- run-sunspider shows no change.
-
- * VM/Machine.cpp:
- (KJS::Machine::unwindCallFrame):
- (KJS::Machine::throwException):
- (KJS::Machine::privateExecute):
- * VM/Machine.h:
-
-2008-04-17 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Add more exception checking to toNumber conversions
-
- This corrects op_pre_dec, op_negate, op_mod and op_sub.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-04-17 Geoffrey Garen <ggaren@apple.com> and Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver Hunt.
-
- Behold: eval.
-
- Introduced a new opcode: op_call_eval. In the normal case, it performs
- an eval. In the case where eval has been overridden in some way, it
- performs a function call.
-
- * VM/CodeGenerator.h: Added a feature so the code generator knows not
- to optimized locals in eval code.
-
-2008-04-17 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Added some ASSERTs to document codegen failures in
- run-javascriptcore-tests.
-
- For all tests, program-level codegen now either succeeds, or fails with
- an ASSERT.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::addVar):
- (KJS::CodeGenerator::CodeGenerator):
- (KJS::CodeGenerator::newTemporary):
- (KJS::CodeGenerator::newLabel):
-
-2008-04-17 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fixed another case of a dst register being an unreferenced temporary
- (caused an ASSERT when running the full sunspider suite).
-
- * kjs/nodes.cpp:
- (KJS::CaseBlockNode::emitCodeForBlock):
-
-2008-04-16 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Geoff.
-
- - add documentation (and meaningful parameter names) for arithmetic and bitwise binary ops
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitMul):
- (KJS::CodeGenerator::emitDiv):
- (KJS::CodeGenerator::emitMod):
- (KJS::CodeGenerator::emitSub):
- (KJS::CodeGenerator::emitLeftShift):
- (KJS::CodeGenerator::emitRightShift):
- (KJS::CodeGenerator::emitUnsignedRightShift):
- (KJS::CodeGenerator::emitBitAnd):
- (KJS::CodeGenerator::emitBitXOr):
- (KJS::CodeGenerator::emitBitOr):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::MultNode::emitCode):
- (KJS::DivNode::emitCode):
- (KJS::ModNode::emitCode):
- (KJS::SubNode::emitCode):
- (KJS::LeftShiftNode::emitCode):
- (KJS::RightShiftNode::emitCode):
- (KJS::UnsignedRightShiftNode::emitCode):
- (KJS::BitAndNode::emitCode):
- (KJS::BitXOrNode::emitCode):
- (KJS::BitOrNode::emitCode):
- (KJS::emitReadModifyAssignment):
- (KJS::ReadModifyResolveNode::emitCode):
-
-2008-04-16 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Exception checks for toNumber in op_pre_inc
-
- This is somewhat more convoluted than the simple hadException checks
- we currently use. Instead we use special toNumber conversions that
- select between the exception and ordinary vPC. This allows us to
- remove any branches in the common case (incrementing a number).
-
- * API/JSCallbackObject.h:
- * API/JSCallbackObjectFunctions.h:
- (KJS::::toNumber):
- * ChangeLog:
- * JavaScriptCore.exp:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/JSPropertyNameIterator.cpp:
- (KJS::JSPropertyNameIterator::toNumber):
- * VM/JSPropertyNameIterator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/ExecState.cpp:
- (KJS::ExecState::ExecState):
- * kjs/ExecState.h:
- * kjs/JSNotAnObject.cpp:
- (KJS::JSNotAnObject::toNumber):
- * kjs/JSNotAnObject.h:
- * kjs/internal.cpp:
- (KJS::StringImp::toNumber):
- (KJS::NumberImp::toNumber):
- (KJS::GetterSetterImp::toNumber):
- * kjs/internal.h:
- * kjs/object.cpp:
- (KJS::JSObject::toNumber):
- * kjs/object.h:
- * kjs/value.h:
- (KJS::JSValue::toNumber):
-
-2008-04-16 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Geoff.
-
- - ensure that activations are kept in a register to protect them from GC
-
- Also renamed OptionalCalleeScopeChain constant to OptionalCalleeActivation, since
- that is what is now kept there, and there is no more need to keep the scope chain in
- the register file.
-
- * VM/Machine.cpp:
- (KJS::initializeCallFrame):
- (KJS::scopeChainForCall):
- * VM/Machine.h:
- (KJS::Machine::):
-
-2008-04-16 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Made "this" work in program code / global scope.
-
- The machine can initialize "this" prior to execution because it knows
- that, for program code, "this" is always stored in lr1.
-
- * VM/Machine.cpp:
- (KJS::Machine::execute):
- * VM/Machine.h:
- (KJS::Machine::):
- * kjs/interpreter.cpp:
- (KJS::Interpreter::evaluate):
-
-2008-04-16 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fixed a codegen bug when returning from inside a dynamic scope (a with
- or catch block): we need to pop any dynamic scope(s) that have been
- added so op_ret can find the activation object at the top of the scope
- chain.
-
- * kjs/nodes.cpp:
- (KJS::ReturnNode::emitCode): If we're returning from inside a dynamic
- scope, emit a jmp_scopes to take care of popping any dynamic scope(s)
- and then branching to the return instruction.
-
-2008-04-16 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Geoff.
-
- - document the add and get_prop_id opcodes
-
- In addition to adding documentation in comments, I changed
- references to register IDs or indices relating to these opcodes to
- have meaningful names instead of r0 r1 r2.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitAdd):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * kjs/nodes.cpp:
- (KJS::DotAccessorNode::emitCode):
- (KJS::FunctionCallDotNode::emitCode):
- (KJS::PostIncDotNode::emitCode):
- (KJS::PostDecDotNode::emitCode):
- (KJS::PreIncDotNode::emitCode):
- (KJS::PreDecDotNode::emitCode):
- (KJS::AddNode::emitCode):
- (KJS::ReadModifyDotNode::emitCode):
-
-2008-04-15 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt and Maciej Stachowiak.
-
- Fixed a codegen bug in with and switch, and added an ASSERT to
- make sure it doesn't happen again.
-
- emitCode() assumes that dst, if non-zero, is either referenced or
- non-temporary (i.e., it assumes that newTemporary() will return a
- register not equal to dst). Certain callers to emitCode() weren't
- guaranteeing that to be so, so temporary register values were being
- overwritten.
-
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::emitNode): ASSERT that dst is referenced or non-temporary.
-
- * kjs/nodes.cpp:
- (KJS::CommaNode::emitCode): Reference the dst we pass.
-
- (KJS::WithNode::emitCode): No need to pass an explicit dst register.
-
- (KJS::CaseBlockNode::emitCodeForBlock): No need to pass an explicit dst register.
- (KJS::SwitchNode::emitCode): No need to pass an explicit dst register.
-
- * kjs/nodes.h: Made dst the last parameter to emitCodeForBlock, to match
- emitCode.
-
-2008-04-15 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 18526: Throw exceptions when resolve fails for op_resolve_base_and_func.
- <https://bugs.webkit.org/show_bug.cgi?id=18526>
-
- Very simple fix, sunspider shows a 0.7% progression, ubench shows a 0.4% regression.
-
- * VM/Machine.cpp:
- (KJS::resolveBaseAndFunc):
- (KJS::Machine::privateExecute):
-
-2008-04-15 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - fix incorrect result on 3d-raytrace test
-
- Oliver found and tracked down this bug, I just typed in the fix.
-
- * VM/Machine.cpp:
- (KJS::slideRegisterWindowForCall): When setting omitted parameters to undefined,
- account for the space for local variables.
-
-2008-04-15 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - fix codegen handling of dst registers
-
- 1.006x speedup (not sure why).
-
- Most emitCode functions take an optional "dst" parameter that says
- where the output of the instruction should be written. I made some
- functions for convenient handling of the dst register:
-
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::tempDestination): Takes the dst register. Returns it if
- it is not null and is a temporary, otherwise allocates a new temporary. This is
- intended for cases where an intermediate value might be written into the dst
-
- (KJS::CodeGenerator::finalDestination): Takes the dst register and an optional
- register that was used as a temp destination. Picks the right thing for the final
- output. Intended to be used as the output register for the instruction that generates
- the final value of a particular node.
-
- (KJS::CodeGenerator::moveToDestinationIfNeeded): Takes dst and a
- RegisterID; moves from the register to dst if dst is defined and
- different from the register. This is intended for cases where the
- result of a node is already in a specific register (likely a
- local), and so no code needs to be generated unless a specific
- destination has been requested, in which case a move is needed.
-
- I also applied these methods throughout emitCode functions. In
- some cases this was just cleanup, in other cases I fixed actual
- codegen bugs. Below I have given specific comments for the cases
- where I believe I fixed a codegen bug, or improved quality of codegen.
-
- * kjs/nodes.cpp:
- (KJS::NullNode::emitCode):
- (KJS::FalseNode::emitCode):
- (KJS::TrueNode::emitCode):
- (KJS::NumberNode::emitCode):
- (KJS::StringNode::emitCode):
- (KJS::RegExpNode::emitCode):
- (KJS::ThisNode::emitCode): Now avoids emitting a mov when dst is
- the same as the this register (the unlikely case of "this = this");
- (KJS::ResolveNode::emitCode): Now avoids emitting a mov when dst
- is the same as the local regiester, in the local var case (the
- unlikely case of "x = x");
- (KJS::ArrayNode::emitCode): Fixed a codegen bug where array
- literal element expressions may have observed an intermediate
- value of constructing the array.
- (KJS::ObjectLiteralNode::emitCode):
- (KJS::PropertyListNode::emitCode): Fixed a codegen bug where object literal
- property definition expressions may have obesrved an intermediate value of
- constructing the object.
- (KJS::BracketAccessorNode::emitCode):
- (KJS::DotAccessorNode::emitCode):
- (KJS::NewExprNode::emitCode):
- (KJS::FunctionCallValueNode::emitCode):
- (KJS::FunctionCallBracketNode::emitCode):
- (KJS::FunctionCallDotNode::emitCode):
- (KJS::PostIncResolveNode::emitCode):
- (KJS::PostDecResolveNode::emitCode):
- (KJS::PostIncBracketNode::emitCode):
- (KJS::PostDecBracketNode::emitCode):
- (KJS::PostIncDotNode::emitCode):
- (KJS::PostDecDotNode::emitCode):
- (KJS::DeleteResolveNode::emitCode):
- (KJS::DeleteBracketNode::emitCode):
- (KJS::DeleteDotNode::emitCode):
- (KJS::DeleteValueNode::emitCode):
- (KJS::VoidNode::emitCode):
- (KJS::TypeOfResolveNode::emitCode):
- (KJS::TypeOfValueNode::emitCode):
- (KJS::PreIncResolveNode::emitCode): Fixed a codegen bug where the final
- value would not be output to the dst register in the local var case.
- (KJS::PreDecResolveNode::emitCode): Fixed a codegen bug where the final
- value would not be output to the dst register in the local var case.
- (KJS::PreIncBracketNode::emitCode):
- (KJS::PreDecBracketNode::emitCode):
- (KJS::PreIncDotNode::emitCode):
- (KJS::PreDecDotNode::emitCode):
- (KJS::UnaryPlusNode::emitCode):
- (KJS::NegateNode::emitCode):
- (KJS::BitwiseNotNode::emitCode):
- (KJS::LogicalNotNode::emitCode):
- (KJS::MultNode::emitCode):
- (KJS::DivNode::emitCode):
- (KJS::ModNode::emitCode):
- (KJS::AddNode::emitCode):
- (KJS::SubNode::emitCode):
- (KJS::LeftShiftNode::emitCode):
- (KJS::RightShiftNode::emitCode):
- (KJS::UnsignedRightShiftNode::emitCode):
- (KJS::LessNode::emitCode):
- (KJS::GreaterNode::emitCode):
- (KJS::LessEqNode::emitCode):
- (KJS::GreaterEqNode::emitCode):
- (KJS::InstanceOfNode::emitCode):
- (KJS::InNode::emitCode):
- (KJS::EqualNode::emitCode):
- (KJS::NotEqualNode::emitCode):
- (KJS::StrictEqualNode::emitCode):
- (KJS::NotStrictEqualNode::emitCode):
- (KJS::BitAndNode::emitCode):
- (KJS::BitXOrNode::emitCode):
- (KJS::BitOrNode::emitCode):
- (KJS::LogicalAndNode::emitCode):
- (KJS::LogicalOrNode::emitCode):
- (KJS::ConditionalNode::emitCode):
- (KJS::emitReadModifyAssignment): Allow an out argument separate from the operands,
- needed for fixes below.
- (KJS::ReadModifyResolveNode::emitCode): Fixed a codegen bug where the right side of
- the expression may observe an intermediate value.
- (KJS::AssignResolveNode::emitCode): Fixed a codegen bug where the right side of the
- expression may observe an intermediate value.
- (KJS::ReadModifyDotNode::emitCode): Fixed a codegen bug where the right side of the
- expression may observe an intermediate value.
- (KJS::ReadModifyBracketNode::emitCode): Fixed a codegen bug where the right side of the
- expression may observe an intermediate value.
- (KJS::CommaNode::emitCode): Avoid writing temporary value to dst register.
- (KJS::ReturnNode::emitCode): Void return should return undefined, not null.
- (KJS::FuncExprNode::emitCode):
-
-2008-04-15 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Geoff.
-
- - fix huge performance regression (from trunk) in string-unpack-code
-
- This restores string-unpack-code performance to parity with
- trunk (2.27x speedup relative to previous SquirrelFish)
-
- * VM/Machine.cpp:
- (KJS::Machine::execute): Shrink register file after call to avoid
- growing repeatedly.
-
-2008-04-15 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Fixed dumpCallFrame to match our new convention of passing around a
- ScopeChainNode* instead of a ScopeChain*.
-
- * JavaScriptCore.exp:
- * VM/Machine.cpp:
- (KJS::Machine::dumpCallFrame):
- * VM/Machine.h:
-
-2008-04-15 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 18436: Need to throw exception on read/modify/write or similar resolve for nonexistent property
- <https://bugs.webkit.org/show_bug.cgi?id=18436>
-
- Add op_resolve_base_and_property for read/modify/write operations,
- this adds a "superinstruction" to resolve the base and value of a
- property simultaneously. Just using resolveBase and resolve results
- in an 5% regression in ubench, 30% in loop-empty-resolve (which is
- expected). 1.3% progression in sunspider, 2.1% in ubench, with a
- 21% gain in loop-empty-resolve. The only outlier is function-missing-args
- which gets a 3% regression that I could never resolve.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitResolveBaseAndProperty):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::resolveBaseAndProperty):
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::PostIncResolveNode::emitCode):
- (KJS::PostDecResolveNode::emitCode):
- (KJS::PreIncResolveNode::emitCode):
- (KJS::PreDecResolveNode::emitCode):
- (KJS::ReadModifyResolveNode::emitCode):
-
-2008-04-15 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - fixed "SquirrelFish crashes due to bad scope chain on some SunSpider tests"
- https://bugs.webkit.org/show_bug.cgi?id=18508
-
- 3d-raytrace and string-unpack-code now run.
-
- The basic approach is to pass around ScopeChainNode* instead of
- ScopeChain*, which in addition to not becoming suddenly an invalid
- pointer also saves an indirection.
-
- This is an 0.4% speedup on SunSpider --squirrelfish (1.8% on --ubench)
-
- * VM/Machine.cpp:
- (KJS::resolve):
- (KJS::resolveBase):
- (KJS::resolveBaseAndFunc):
- (KJS::initializeCallFrame):
- (KJS::scopeChainForCall):
- (KJS::Machine::unwindCallFrame):
- (KJS::Machine::throwException):
- (KJS::Machine::execute):
- (KJS::Machine::privateExecute):
- * VM/Machine.h:
- * VM/Register.h:
- (KJS::Register::):
- * kjs/nodes.cpp:
- (KJS::EvalNode::generateCode):
- (KJS::FunctionBodyNode::generateCode):
- (KJS::ProgramNode::generateCode):
- (KJS::ProgramNode::processDeclarations):
- (KJS::EvalNode::processDeclarations):
- (KJS::FuncDeclNode::makeFunction):
- (KJS::FuncExprNode::makeFunction):
- * kjs/nodes.h:
- (KJS::ProgramNode::):
- (KJS::EvalNode::):
- (KJS::FunctionBodyNode::):
- * kjs/object.h:
- * kjs/scope_chain.h:
- (KJS::ScopeChainNode::ScopeChainNode):
- (KJS::ScopeChainNode::deref):
- (KJS::ScopeChainIterator::ScopeChainIterator):
- (KJS::ScopeChainIterator::operator*):
- (KJS::ScopeChainIterator::operator->):
- (KJS::ScopeChain::ScopeChain):
- (KJS::ScopeChain::node):
- (KJS::ScopeChain::deref):
- (KJS::ScopeChain::ref):
- (KJS::ScopeChainNode::ref):
- (KJS::ScopeChainNode::release):
- (KJS::ScopeChainNode::begin):
- (KJS::ScopeChainNode::end):
-
-2008-04-14 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fixed crash when accessing registers in a torn-off activation object.
-
- * kjs/JSActivation.cpp:
- (KJS::JSActivation::copyRegisters): Update our registerOffset after
- copying our registers, since our offset should now be relative to
- our private register array, not the shared register file.
-
-2008-04-14 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - fix a codegen flaw that makes some tests run way too fast or way too slow
-
- The basic problem was that FunctionCallResolveNode results in
- codegen which can incorrectly write an intermediate value into the
- dst register even when that is a local. I added convenience
- functions to CodeGenerator for getting this right, but for now I
- only fixed FunctionCallResolve.
-
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::tempDestination):
- (KJS::CodeGenerator::):
- * kjs/nodes.cpp:
- (KJS::FunctionCallResolveNode::emitCode):
-
-2008-04-14 Gabor Loki <loki@inf.u-szeged.hu>
-
- Reviewed and slightly tweaked by Geoffrey Garen.
-
- Bug 18489: Squirrelfish doesn't build on linux
- <https://bugs.webkit.org/show_bug.cgi?id=18489>
-
- * JavaScriptCore.pri: Add VM into include path and its files into
- source set
- * VM/JSPropertyNameIterator.cpp: Fix include name
- * VM/Machine.cpp: Add UNLIKELY macro for GCC
- * VM/Machine.h: Add missing includes
- * VM/RegisterFile.cpp: Add missing include
- * kjs/testkjs.pro: Add VM into include path
-
-2008-04-14 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Restored OwnPtr in some places where I had removed it previously. We
- can have an OwnPtr to an undefined class in a header as long as the
- class's destructor isn't in the header.
-
-2008-04-14 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Fixed access to "this" inside dynamic scopes.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::registerForLocal): Always return a register for
- "this", even if we're not optimizing access to other locals. Because
- "this" is a keyword, it's always in a register and always accessible.
-
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::shouldOptimizeLocals): Factored out a function
- for determining whether we should optimize access to locals, since
- eval will need to make this test a little more complicated.
-
-2008-04-14 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Adam.
-
- - fix crash when running SunSpider full harness
-
- When growing the register file's buffer to make space for new globals,
- make sure to copy accounting for the fact that the new space is logically
- at the beginning of the buffer in this case, instead of at the end as when
- growing for a new call frame.
-
- * VM/RegisterFile.cpp:
- (KJS::RegisterFile::newBuffer):
- (KJS::RegisterFile::growBuffer):
- (KJS::RegisterFile::addGlobalSlots):
- * VM/RegisterFile.h:
-
-2008-04-11 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Mark constant pools for global and eval code (collectively known as
- "program code"). (Constant pools for function code are already marked by
- their functions.)
-
- The global object is responsible for marking program code constant
- pools. Code blocks add themselves to the mark set at creation time, and
- remove themselves from the mark set at destruction time.
-
- sunspider --squirrelfish reports a 1% speedup, perhaps because
- generateCode() is now non-virtual.
-
- * kjs/nodes.cpp: I had to use manual init and delete in this file
- because putting an OwnPtr into the header would have created a circular
- header dependency.
-
-2008-04-10 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Bug 18231: Improve support for function call nodes in SquirrelFish
- <https://bugs.webkit.org/show_bug.cgi?id=18231>
-
- Use correct value of 'this' for function calls.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitResolveBaseAndFunc):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::resolveBaseAndFunc):
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::FunctionCallResolveNode::emitCode):
-
-2008-04-10 Geoffrey Garen <ggaren@apple.com>
-
- This time for sure.
-
- * kjs/interpreter.cpp:
- (KJS::Interpreter::evaluate):
-
-2008-04-10 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Fixed Interpreter::execute to honor the new model for returning non-NULL
- values when an exception is thrown.
-
- * kjs/interpreter.cpp:
- (KJS::Interpreter::evaluate):
-
-2008-04-10 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Fix SquirrelFish interpreter to pass internal exceptions back to
- native code correctly.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-04-10 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- Replace the use of getCallData in op_construct with the new
- getConstructData function that replaces implementsConstruct.
-
- * API/JSCallbackConstructor.cpp:
- (KJS::JSCallbackConstructor::getConstructData):
- * API/JSCallbackConstructor.h:
- * API/JSCallbackObject.h:
- * API/JSCallbackObjectFunctions.h:
- (KJS::::getConstructData):
- (KJS::::construct):
- * API/JSObjectRef.cpp:
- (JSObjectIsConstructor):
- * JavaScriptCore.exp:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * kjs/CallData.h:
- * kjs/ConstructData.h: Copied from JavaScriptCore/kjs/CallData.h.
- * kjs/array_object.cpp:
- (KJS::ArrayObjectImp::getConstructData):
- * kjs/array_object.h:
- * kjs/bool_object.cpp:
- (KJS::BooleanObjectImp::getConstructData):
- * kjs/bool_object.h:
- * kjs/date_object.cpp:
- (KJS::DateObjectImp::getConstructData):
- * kjs/date_object.h:
- * kjs/error_object.cpp:
- (KJS::ErrorObjectImp::getConstructData):
- (KJS::NativeErrorImp::getConstructData):
- * kjs/error_object.h:
- * kjs/function.cpp:
- (KJS::FunctionImp::getCallData):
- (KJS::FunctionImp::getConstructData):
- (KJS::FunctionImp::construct):
- * kjs/function.h:
- * kjs/function_object.cpp:
- (KJS::FunctionObjectImp::getConstructData):
- * kjs/function_object.h:
- * kjs/nodes.cpp:
- (KJS::NewExprNode::inlineEvaluate):
- * kjs/number_object.cpp:
- (KJS::NumberObjectImp::getConstructData):
- * kjs/number_object.h:
- * kjs/object.cpp:
- * kjs/object.h:
- * kjs/object_object.cpp:
- (KJS::ObjectObjectImp::getConstructData):
- * kjs/object_object.h:
- * kjs/regexp_object.cpp:
- (KJS::RegExpObjectImp::getConstructData):
- * kjs/regexp_object.h:
- * kjs/string_object.cpp:
- (KJS::StringObjectImp::getConstructData):
- * kjs/string_object.h:
- * kjs/value.cpp:
- (KJS::JSCell::getConstructData):
- * kjs/value.h:
- (KJS::JSValue::getConstructData):
-
-2008-04-10 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Bug 18420: SquirrelFish: need to throw Reference and Type errors
- when attempting invalid operations on JSValues
-
- Add validation and exception checks to SquirrelFish so that the
- correct exceptions are thrown for undefined variables, type errors
- and toObject failure. Also handle exceptions thrown by native
- function calls.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/ExceptionHelpers.cpp: Added.
- (KJS::substitute):
- (KJS::createError):
- (KJS::createUndefinedVariableError):
- * VM/ExceptionHelpers.h: Added.
- Helper functions
- * VM/Machine.cpp:
- (KJS::resolve):
- Modified to signal failure
- (KJS::isNotObject):
- Wrapper for JSValue::isObject and exception creation (these need
- to be merged, lest GCC go off the deep end)
- (KJS::Machine::privateExecute):
- Adding the many exception and validity checks.
-
- * kjs/JSNotAnObject.cpp: Added.
- Stub object used to reduce the need for multiple exception checks
- when toObject fails.
- (KJS::JSNotAnObject::toPrimitive):
- (KJS::JSNotAnObject::getPrimitiveNumber):
- (KJS::JSNotAnObject::toBoolean):
- (KJS::JSNotAnObject::toNumber):
- (KJS::JSNotAnObject::toString):
- (KJS::JSNotAnObject::toObject):
- (KJS::JSNotAnObject::mark):
- (KJS::JSNotAnObject::getOwnPropertySlot):
- (KJS::JSNotAnObject::put):
- (KJS::JSNotAnObject::deleteProperty):
- (KJS::JSNotAnObject::defaultValue):
- (KJS::JSNotAnObject::construct):
- (KJS::JSNotAnObject::callAsFunction):
- (KJS::JSNotAnObject::getPropertyNames):
- * kjs/JSNotAnObject.h: Added.
- (KJS::JSNotAnObject::JSNotAnObject):
- * kjs/JSImmediate.cpp:
- (KJS::JSImmediate::toObject):
- modified to create an JSNotAnObject rather than throwing an exception
- directly.
-
-2008-04-10 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Pass a function body node its function's scope chain, rather than the
- current execution context's scope chain, when compiling it.
-
- This doesn't matter yet, but it will once we start using the scope
- chain during compilation.
-
- sunspider --squirrelfish notes a tiny speedup.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-04-10 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fix two bugs when throwing exceptions from re-entrant JS calls:
-
- (1) Don't shrink the register file to 0, since our caller may still
- be using it.
-
- (2) In case of exception, return jsNull() instead of 0 because,
- surprisingly, some JavaScriptCore clients rely on a function's return
- value being safe to operate on even if the function threw an exception.
-
- Also:
-
- - Changed FunctionImp::callAsFunction to honor the new semantics of
- exceptions not returning 0.
-
- - Renamed "handlerPC" to "handlerVPC" to match other uses of "VPC".
-
- - Renamed "exceptionData" to "exceptionValue", because "data" seemed to
- imply something more than just a JSValue.
-
- - Merged prepareException into throwException, since throwException was
- its only caller, and it seemed weird that throwException didn't take
- an exception as an argument.
-
- sunspider --squirrelfish does not seem to complain on my machine, but it
- complains a little (.6%) on Oliver's.
-
-2008-04-10 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fixed op_construct for CallTypeNative to reacquire "r" before setting
- its return value, since registerBase can theoretically change during the
- execution of arbitrary code. (Not sure if any native constructors
- actually make this possible.)
-
- sunspider --squirrelfish does not seem to complain.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-04-10 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt and Sam Weinig.
-
- Re-entrant execution of function code (global code -> built-in function
- -> JS function):
-
- Miraculously, sunspider --squirrelfish does not seem to complain.
-
- A re-entrant function call is the same as a normal function call with
- one exception: the re-entrant call leaves everything except for
- CallerCodeBlock in the call frame header uninitialized, since the call
- doesn't need to return to JS code. (It sets CallerCodeBlock to 0, to
- indicate that the call shouldn't return to JS code.)
-
- Also fixed a few issues along the way:
-
- - Fixed two bugs in the read-write List implementation that caused
- m_size and m_buffer to go stale.
-
- - Changed native call code to update "r" *before* setting the return
- value, since the call may in turn call JS code, which changes the value
- of "r".
-
- - Migrated initialization of "r" outside of Machine::privateExecute,
- because global code and function code initialize "r" differently.
-
- - Migrated a codegen warning from Machine::privateExecute to the wiki.
-
- - Removed unnecessary "r" parameter from slideRegisterWindowForCall
-
- * VM/Machine.cpp:
- (KJS::slideRegisterWindowForCall):
- (KJS::scopeChainForCall):
- (KJS::Machine::execute):
- (KJS::Machine::privateExecute):
- * VM/Machine.h:
- * kjs/function.cpp:
- (KJS::FunctionImp::callAsFunction):
- * kjs/list.cpp:
- (KJS::List::getSlice):
- * kjs/list.h:
- (KJS::List::clear):
-
-2008-04-10 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - fix problem with code generation for return with no argument
-
- 3d-cube now runs
-
- * kjs/nodes.cpp:
- (KJS::ReturnNode::emitCode):
-
-2008-04-10 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - Implement support for JS constructors
-
- access-binary-trees and access-nbody now run.
-
- Inexplicably a 1% speedup.
-
- * VM/Machine.cpp:
- (KJS::initializeCallFrame):
- (KJS::Machine::privateExecute):
- * VM/Machine.h:
- (KJS::Machine::):
-
-2008-04-10 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - More code cleanup in preparation for JS constructors
-
- Factor the remaining interesting parts of JS function calls into
- slideRegisterWindowForCall and scopeChainForCall.
-
- * VM/Machine.cpp:
- (KJS::slideRegisterWindowForCall):
- (KJS::scopeChainForCall):
- (KJS::Machine::privateExecute):
-
-2008-04-10 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Geoff.
-
- - Code cleanup in preparation for JS constructors
-
- - Renamed returnInfo to callFrame.
- - Made an enum which defines what goes where in the call frame.
- - Factored out initializeCallFrame function from op_call
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitCall):
- (KJS::CodeGenerator::emitConstruct):
- * VM/Machine.cpp:
- (KJS::Machine::dumpRegisters):
- (KJS::initializeCallFrame):
- (KJS::Machine::unwindCallFrame):
- (KJS::Machine::execute):
- (KJS::Machine::privateExecute):
- * VM/Machine.h:
- (KJS::Machine::):
-
-2008-04-10 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fixed two bugs in register allocation for function calls:
-
- (1) op_call used to allocate codeBlock->numVars too many registers for
- each call frame, due to duplicated math. Fixing this revealed...
-
- (2) By unconditionally calling resize(), op_call used to truncate the
- register file when calling a function whose registers fit wholly within
- the register file already allocated by its caller.
-
- sunspider --squirrelfish reports no regression.
-
- I also threw in a little extra formatting to dumpCallFrame, because it
- helped me debug these issues.
-
- * VM/Machine.cpp:
- (KJS::Machine::dumpRegisters):
- (KJS::Machine::execute):
- (KJS::Machine::privateExecute):
- * VM/RegisterFile.h:
- (KJS::RegisterFile::shrink):
- (KJS::RegisterFile::grow):
- * VM/RegisterFileStack.cpp:
- (KJS::RegisterFileStack::popRegisterFile):
-
-2008-04-09 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Next step toward re-entrant execution of function code (global code ->
- built-in function -> JS function):
-
- Made op_ret return from Machine::privateExecute if its calling codeBlock
- is NULL.
-
- I'm checking this in by itself to demonstrate that a more clever
- mechanism is not necessary for performance.
-
- sunspider --squirrelfish reports no regression.
-
- * ChangeLog:
- * VM/Machine.cpp:
- (KJS::Machine::execute):
- (KJS::Machine::privateExecute):
-
-2008-04-09 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Next step toward re-entrant execution of function code (global code ->
- built-in function -> JS function):
-
- Made Machine::execute return a value.
-
- Sketched out some code for Machine::execute for functions -- still
- doesn't work yet, though.
-
- sunspider --squirrelfish reports no regression.
-
- * VM/Machine.cpp:
- (KJS::Machine::execute):
- (KJS::Machine::privateExecute):
- * VM/Machine.h:
- * kjs/interpreter.cpp:
- (KJS::Interpreter::evaluate):
- * kjs/testkjs.cpp:
- (runWithScripts):
-
-2008-04-09 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- First step toward re-entrant execution of function code (global code ->
- built-in function -> JS function):
-
- Tiny bit of refactoring in the Machine class.
-
- sunspider --squirrelfish reports no regression.
-
- * VM/Machine.cpp:
- (KJS::Machine::dumpRegisters):
- (KJS::Machine::unwindCallFrame):
- (KJS::Machine::execute):
- (KJS::Machine::privateExecute):
- * VM/Machine.h:
- (KJS::Machine::isGlobalCallFrame):
- * kjs/interpreter.cpp:
- (KJS::Interpreter::evaluate):
-
-2008-04-08 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Support for re-entrant execution of global code (global code -> built-in
- function -> global code).
-
- Keep a stack of register files instead of just one. Globals propogate
- between register files as the register files enter and exit the stack.
-
- An activation still uses its own register file's base as its
- registerBase, but the global object uses the register file *stack*'s
- registerBase, which updates dynamically to match the register file at
- the top of the stack.
-
- sunspider --squirrelfish reports no regression.
-
-2008-04-08 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Geoff.
-
- - initial preparatory work for JS constructors
-
- 1) Allocate registers for the returnInfo block and "this" value when generating code for
- op_construct. These are not used yet, but the JS branch of op_construct will use them.
-
- 2) Adjust argc and argv appropriately for native constructor calls.
-
- 3) Assign return value in a more straightforward way in op_ret since this is actually
- a bit faster (and makes up for the allocation of extra registers above).
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitConstruct):
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-04-07 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fixed crashing SunSpider tests.
-
- Let's just pretend this never happened, bokay?
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::CodeGenerator):
- * VM/CodeGenerator.h:
- * VM/RegisterFile.cpp:
- (KJS::RegisterFile::addGlobals):
-
-2008-04-07 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Restored dumping of generated code as a command-line switch:
- run-testkjs -d will do it.
-
-2008-04-07 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Next step toward supporting re-entrant evaluation: Moved register file
- maintenance code into a proper "RegisterFile" class.
-
- There's a subtle change to the register file's internal layout: for
- global code / the global object, registerOffset is always 0 now. In
- other words, all register counting starts at 0, not 0 + (number of
- global variables). The helps simplify accounting when the number of
- global variables changes.
-
-2008-04-07 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Bug 18338: Support exceptions in SquirrelFish <http://bugs.webkit.org/show_bug.cgi?id=18338>
-
- Initial support for exceptions in SquirrelFish, only supports finalisers in the
- simple cases (eg. exceptions and non-goto/return across finaliser boundaries).
- This doesn't add the required exception checks to existing code, it merely adds
- support for throw, catch, and the required stack unwinding.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- (KJS::CodeBlock::getHandlerForVPC):
- * VM/CodeBlock.h:
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitCatch):
- (KJS::CodeGenerator::emitThrow):
- * VM/CodeGenerator.h:
- * VM/JSPropertyNameIterator.cpp:
- (KJS::JSPropertyNameIterator::create):
- * VM/Machine.cpp:
- (KJS::prepareException):
- (KJS::Machine::unwindCallFrame):
- (KJS::Machine::throwException):
- (KJS::Machine::privateExecute):
- * VM/Machine.h:
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::ThrowNode::emitCode):
- (KJS::TryNode::emitCode):
- * kjs/nodes.h:
- * kjs/scope_chain.cpp:
- (KJS::ScopeChain::depth):
- * kjs/scope_chain.h:
-
-2008-04-06 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- First step toward supporting re-entrant evaluation: Switch register
- clients from using "registers", a pointer to a register vector, to
- "registerBase", an indirect pointer to the logical first entry in the
- register file. (The logical first entry is the first entry that is not
- a global variable).
-
- With a vector, offsets into the register file remain good when the
- underlying buffer reallocates, but they go bad when the logical
- first entry moves. (The logical first entry moves when new global
- variables get added to the beginning of the register file.) With an
- indirect pointer to the logical first entry, offsets will remain good
- regardless.
-
- 1.4% speedup on sunspider --squirrelfish. I suspect this is due to
- reduced allocation when creating closures, and reduced indirection
- through the register vector.
-
- * wtf/Vector.h: Added an accessor for an indirect pointer to the vector's
- buffer, which we currently use (incorrectly) for registerBase. This is
- temporary scaffolding to allow us to change client code without
- changing behavior.
-
-2008-04-06 Sam Weinig <sam@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Implement codegen for ReadModifyDotNode.
-
- * kjs/nodes.cpp:
- (KJS::ReadModifyDotNode::emitCode):
- * kjs/nodes.h:
-
-2008-04-06 Sam Weinig <sam@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Fix codegen for PostIncDotNode and implement codegen for PostIncBracketNode,
- PostDecBracketNode and PostDecDotNode.
-
- * kjs/nodes.cpp:
- (KJS::PostIncBracketNode::emitCode):
- (KJS::PostDecBracketNode::emitCode):
- (KJS::PostIncDotNode::emitCode):
- (KJS::PostDecDotNode::emitCode):
- * kjs/nodes.h:
-
-2008-04-06 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- Implement codegen for PreDecResolveNode, PreIncBracketNode, PreDecBracketNode,
- PreIncDotNode and PreDecDotNode. This required adding one new op code, op_pre_dec.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitPreDec):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::PreDecResolveNode::emitCode):
- (KJS::PreIncBracketNode::emitCode):
- (KJS::PreDecBracketNode::emitCode):
- (KJS::PreIncDotNode::emitCode):
- (KJS::PreDecDotNode::emitCode):
- * kjs/nodes.h:
-
-2008-04-06 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Improved register dumping, plus a liberal smattering of "const". Here's
- what the new format looks like:
-
- (gdb) call (void)dumpCallFrame(codeBlock, scopeChain, registers->begin(), r)
- 4 instructions; 48 bytes at 0x509210; 3 locals (2 parameters); 1 temporaries
-
- [ 0] load lr1, undefined(@k0)
- [ 3] load lr1, 2(@k1)
- [ 6] add tr0, lr2, lr1
- [ 10] ret tr0
-
- Constants:
- k0 = undefined
- k1 = 2
-
- Register frame:
-
- ----------------------------------------
- use | address | value
- ----------------------------------------
- [return info] | 0x80ac08 | 0x5081c0
- [return info] | 0x80ac0c | 0x508e90
- [return info] | 0x80ac10 | 0x504acc
- [return info] | 0x80ac14 | 0x2
- [return info] | 0x80ac18 | 0x0
- [return info] | 0x80ac1c | 0x7
- [return info] | 0x80ac20 | 0x0
- ----------------------------------------
- [param] | 0x80ac24 | 0x1
- [param] | 0x80ac28 | 0x7
- [var] | 0x80ac2c | 0xb
- [temp] | 0x80ac30 | 0xf
-
-2008-04-06 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Support for evaluating multiple scripts in the same global environment.
- (Still don't support re-entrant evaluation yet.)
-
- The main changes here are:
-
- (1) Obey the ECMA 10.1.3 rules regarding how to resolve collisions when
- a given symbol is declared more than once. (This patch fixes the same
- issue for function code, too.)
-
- (2) In the case of var and/or function collisions, reuse the existing
- storage slot. For global code, this is required for previously
- generated instructions to continue to work. For function code, it's
- more of a "nice to have": it makes register layout in the case of
- collisions easier to understand, and has the added benefit of saving
- memory.
-
- (3) Allocate slots in the CodeGenerator's m_locals vector in parallel
- to register indexes in the symbol table. This ensures that, given an
- index in the symbol table, we can find the corresponding RegisterID
- without hashing, which speeds up codegen.
-
- I moved responsibility for emitting var and function initialization
- instructions into the CodeGenerator, because bookkeeping in cases where
- var, function, and/or parameter names collide requires a lot of
- internal knowledge about the CodeGenerator.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::addVar): Removed responsibility for checking whether
- a var declaration overwrites "arguments", because the check is
- inappropriate for global code, which may not have a pre-existing
- "arguments" symbol in scope. Also changed this function to return a
- boolean indicating whether addVar actually created a new RegisterID,
- or just reused an old one.
-
- (KJS::CodeGenerator::CodeGenerator): Split out the constructors for
- function code and global code, since they're quite different now.
-
- (KJS::CodeGenerator::registerForLocal): This function does its job
- without any hashing now.
-
- * VM/Machine.cpp: Move old globals and update "r" before executing a
- new script. That way, old globals stay at a constant offset from "r",
- and previously optimized code still works.
-
- * VM/RegisterID.h: Added the ability to allocate a RegisterID before
- initializing its index field. We use this for parameters now.
-
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::symbolTableGet): Changed the ungettable getter
- ASSERT to account for the fact that symbol indexes are all negative.
-
-2008-04-05 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- Implement codegen for InNode.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitIn):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::InNode::emitCode):
- * kjs/nodes.h:
-
-2008-04-05 Sam Weinig <sam@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- - Implement codegen for DeleteResolveNode, DeleteBracketNode, DeleteDotNode and DeleteValueNode.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitGetPropId):
- (KJS::CodeGenerator::emitPutPropId):
- (KJS::CodeGenerator::emitDeletePropId):
- (KJS::CodeGenerator::emitDeletePropVal):
- (KJS::CodeGenerator::emitPutPropIndex):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::DeleteResolveNode::emitCode):
- (KJS::DeleteBracketNode::emitCode):
- (KJS::DeleteDotNode::emitCode):
- (KJS::DeleteValueNode::emitCode):
- * kjs/nodes.h:
-
-2008-04-04 Sam Weinig <sam@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- - Implement codegen for Switch statements.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::pushJumpContext):
- (KJS::CodeGenerator::popJumpContext):
- (KJS::CodeGenerator::jumpContextForLabel):
- * VM/CodeGenerator.h:
- Rename LoopContext to JumpContext now that it used of Switch statements in addition
- to loops.
-
- * kjs/nodes.cpp:
- (KJS::DoWhileNode::emitCode):
- (KJS::WhileNode::emitCode):
- (KJS::ForNode::emitCode):
- (KJS::ForInNode::emitCode):
- (KJS::ContinueNode::emitCode):
- (KJS::BreakNode::emitCode):
- (KJS::CaseBlockNode::emitCodeForBlock):
- (KJS::SwitchNode::emitCode):
- * kjs/nodes.h:
- (KJS::CaseClauseNode::expr):
- (KJS::CaseClauseNode::children):
- (KJS::CaseBlockNode::):
-
-2008-04-03 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Sam.
-
- - fix crash in codegen from new nodes
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitConstruct):
- * kjs/nodes.h:
-
-2008-04-03 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Geoff.
-
- * kjs/nodes.cpp:
- (KJS::ReadModifyResolveNode::emitCode):
- (KJS::ReadModifyBracketNode::emitCode):
- * kjs/nodes.h:
-
-2008-04-02 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Geoff.
-
- - take a shot at marking constant pools for global and eval code
-
- Geoff says this won't really work in all cases but is an ok stopgap.
-
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::mark):
-
-2008-04-02 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Geoff.
-
- - fix 2x perf regression in 3d-morph
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): If we subbed in null for the global object,
- don't toObject it, since that will throw an exception (very slowly).
-
-2008-04-02 Maciej Stachowiak <mjs@apple.com>
-
- Rubber stamped by Geoff
-
- - fix Release build
-
- * kjs/nodes.cpp:
- (KJS::getNonLocalSymbol):
-
-2008-04-02 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Removed the last vestiges of LocalStorage from JSVariableObject and
- JSGlobalObject.
-
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::saveLocalStorage): Save and restore from/to
- registers. Use stub isReadOnly and isDontEnum methods for now, until
- we really implement attributes in the symbol table.
- (KJS::JSGlobalObject::restoreLocalStorage):
- (KJS::JSGlobalObject::reset):
-
- * kjs/JSVariableObject.cpp:
- (KJS::JSVariableObject::getPropertyNames): Use stub isDontEnum method
- for now, as above.
- (KJS::JSVariableObject::getPropertyAttributes): ditto
-
- * kjs/JSVariableObject.h: Removed LocalStorage from JSVariableObjectData.
- Removed mark method, because subclasses implement different strategies for
- marking registers.
- (KJS::JSVariableObject::isReadOnly): Stub method
- (KJS::JSVariableObject::isDontEnum): ditto
-
- Changed the code below to ASSERT_NOT_REACHED() and return 0, since it
- can no longer retrieve LocalStorage from the ExecState. (Eventually,
- we'll just remove this code and all its friends, but that's a task for
- later.)
-
- * kjs/ExecState.cpp:
- (KJS::ExecState::ExecState):
- * kjs/function.cpp:
- (KJS::ActivationImp::markChildren):
- * kjs/function.h:
- * kjs/nodes.cpp:
- (KJS::getNonLocalSymbol):
- (KJS::ScopeNode::optimizeVariableAccess):
- (KJS::ProgramNode::processDeclarations):
-
-2008-04-01 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Got globals?
-
- To get things working, I had to roll out
- http://trac.webkit.org/projects/webkit/changeset/31226 for the time
- being.
-
- * VM/CodeBlock.h: Removed obsolete function.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): For the sake of re-entrancy, we track
- and restore the global object's old rOffset value. (No way to test this
- yet, but I think it will work.)
-
-2008-04-01 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Geoff.
-
- - mark the constant pool (at least for function code blocks)
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::mark):
- * VM/CodeBlock.h:
- * kjs/function.cpp:
- (KJS::FunctionImp::mark):
- * kjs/nodes.cpp:
- (KJS::ScopeNode::mark):
- * kjs/nodes.h:
- (KJS::FuncExprNode::body):
- (KJS::FuncDeclNode::body):
-
-2008-04-01 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Beth Dakin.
-
- Cleaned up a few loose ends.
-
- * JavaScriptCore.exp: Export dumpRegisters, so it's visible to gdb even
- if we don't explicitly call it in the source text.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): No need to call dumpRegisters anymore,
- since that was just a hack for gdb's sake.
-
- * kjs/JSActivation.h: Removed obsolete comment.
-
- * VM/CodeGenerator.cpp: Added ASSERTs to verify that the localCount
- we're given matches the number of locals actually allocated.
-
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::CodeGenerator): Changed "localCount" to include
- the parameter count, since we're using the word "local" to mean
- parameter, var, function, or "this". Renamed "m_nextLocal" to
- "m_nextVar", since "m_nextLocal" doesn't contrast well with
- "m_nextParameter".
-
- Also moved tracking of implicit "this" parameter from here...
-
- * kjs/nodes.cpp:
- (KJS::FunctionBodyNode::generateCode): ... to here
- (KJS::ProgramNode::generateCode): ... and here
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump): Added missing "\n".
-
-2008-04-01 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Bug 18274: ResolveNode::emitCode() doesn't make a new temporary when dst
- is 0, leading to incorrect codegen
- <http://bugs.webkit.org/show_bug.cgi?id=18274>
-
- * kjs/nodes.cpp:
- (KJS::FunctionCallBracketNode::emitCode):
- (KJS::FunctionCallDotNode::emitCode):
-
-2008-04-01 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - fix bug in for..in codegen (gotta use ident, not m_ident)
-
- * kjs/nodes.cpp:
- (KJS::ForInNode::emitCode):
-
-2008-04-01 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - Add suport for regexp literals
-
- * VM/CodeBlock.cpp:
- (KJS::regexpToSourceString):
- (KJS::regexpName):
- (KJS::CodeBlock::dump):
- * VM/CodeBlock.h:
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::addRegExp):
- (KJS::CodeGenerator::emitNewRegExp):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::RegExpNode::emitCode):
- * kjs/nodes.h:
-
-2008-04-01 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff
-
- Add support for for..in nodes
-
- Added two new opcodes to get_pnames and next_pname to handle iterating
- over the set of properties on an object. This iterator is explicitly
- invalidated and the property name array is released on standard exit
- from the loop, otherwise we rely on GC to do the clean up for us.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitNextPropertyName):
- (KJS::CodeGenerator::emitGetPropertyNames):
- * VM/CodeGenerator.h:
- * VM/JSPropertyNameIterator.cpp: Added.
- (KJS::JSPropertyNameIterator::JSPropertyNameIterator):
- (KJS::JSPropertyNameIterator::type):
- (KJS::JSPropertyNameIterator::toPrimitive):
- (KJS::JSPropertyNameIterator::getPrimitiveNumber):
- (KJS::JSPropertyNameIterator::toBoolean):
- (KJS::JSPropertyNameIterator::toNumber):
- (KJS::JSPropertyNameIterator::toString):
- (KJS::JSPropertyNameIterator::toObject):
- (KJS::JSPropertyNameIterator::mark):
- (KJS::JSPropertyNameIterator::next):
- (KJS::JSPropertyNameIterator::invalidate):
- (KJS::JSPropertyNameIterator::~JSPropertyNameIterator):
- (KJS::JSPropertyNameIterator::create):
- * VM/JSPropertyNameIterator.h: Added.
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * VM/Register.h:
- (KJS::Register::):
- * kjs/PropertyNameArray.h:
- * kjs/nodes.cpp:
- (KJS::ForInNode::emitCode):
- * kjs/nodes.h:
- * kjs/value.h:
-
-2008-04-01 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Change CodeGenerator::emitCall() so it increments the reference count of
- registers passed to it, and change its callers so they don't needlessly
- increment the reference count of the registers they are passing.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitCall):
- * kjs/nodes.cpp:
- (KJS::FunctionCallResolveNode::emitCode):
- (KJS::FunctionCallDotNode::emitCode):
-
-2008-04-01 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - generate call for PostIncDotNode
-
- * kjs/nodes.cpp:
- (KJS::PostIncDotNode::emitCode):
- * kjs/nodes.h:
-
-2008-04-01 Maciej Stachowiak <mjs@apple.com>
-
- Build fix.
-
- - fix build (not sure how this ever worked?)
-
- * kjs/nodes.cpp:
- (KJS::FunctionCallBracketNode::emitCode):
-
-2008-04-01 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Geoff.
-
- - generate code for FunctionCallBracketNode
-
- * kjs/nodes.cpp:
- (KJS::FunctionCallBracketNode::emitCode):
- * kjs/nodes.h:
-
-2008-04-01 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Geoff.
-
- - Fix two crashing SunSpider tests
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): set up 'this' properly for native calls.
- * kjs/list.h:
- (KJS::List::List): Fix intialization of buffer and size from
- vector, the initialization order was wrong.
-
-2008-04-01 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: marked ASSERT-only variables as UNUSED_PARAMs.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::symbolTableInitializeVariable):
-
-2008-04-01 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Next step toward global code: Moved get, put, and initializeVariable
- functionality up into JSVariableObject, and changed JSActivation to
- rely on it.
-
- * kjs/JSActivation.cpp:
- (KJS::JSActivation::JSActivation):
- (KJS::JSActivation::getOwnPropertySlot):
- (KJS::JSActivation::put):
- (KJS::JSActivation::initializeVariable):
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::valueAt):
- (KJS::JSVariableObject::isReadOnly):
- (KJS::JSVariableObject::symbolTableGet):
- (KJS::JSVariableObject::symbolTablePut):
- (KJS::JSVariableObject::symbolTableInitializeVariable):
-
-2008-04-01 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Sam.
-
- - fix HashTable assertion on some SunSpider tests
-
- Don't use -1 as the deleted value for JSValue*-keyed hashtables,
- since it is a valid value (it's the immediate for -1).
-
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::JSValueHashTraits::emptyValue):
- (KJS::CodeGenerator::JSValueHashTraits::deletedValue):
- * kjs/JSImmediate.h:
- (KJS::JSImmediate::impossibleValue):
-
-2008-04-01 Sam Weinig <sam@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- Add support for calling Native constructors like new Array().
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitConstruct):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::NewExprNode::emitCode):
- * kjs/nodes.h:
-
-2008-04-01 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Sam.
-
- - add some missing toOpbject calls to avoid crashing when calling methods on primitives
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-04-01 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Changed Machine::dumpRegisters to take a pointer instead of a reference,
- so gdb understands how to call it.
-
- * VM/Machine.cpp:
- (KJS::Machine::dumpRegisters):
- (KJS::Machine::privateExecute):
- * VM/Machine.h:
-
-2008-03-31 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Fix CodeGenerator::addConstant() so it uses the functionExpressions
- counter for function expressions, not the functions counter.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::addConstant):
-
-2008-03-31 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- Add emitCode support for TypeOfResolveNode and TypeOfValueNode.
- Added new opcode op_type_of to handle them.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitNot):
- (KJS::CodeGenerator::emitInstanceOf):
- (KJS::CodeGenerator::emitTypeOf):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::jsTypeStringForValue):
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::TypeOfResolveNode::emitCode):
- (KJS::TypeOfValueNode::emitCode):
- * kjs/nodes.h:
-
-2008-03-31 Sam Weinig <sam@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Fix non-computed goto version of isOpcode. op_end is a valid opcode.
-
- * VM/Machine.cpp:
- (KJS::Machine::isOpcode):
-
-2008-03-31 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Added op_post_dec.
-
-2008-03-31 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Geoffrey Garen.
-
- Add support for FunctionCallDotNode.
-
- * kjs/nodes.cpp:
- (KJS::FunctionCallDotNode::emitCode):
- * kjs/nodes.h:
-
-2008-03-31 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Beth Dakin.
-
- Next step toward global code: Removed more obsolete API, moved
- saveLocalStorage and restoreLocalStorage to JSGlobalObject subclass,
- since it's only intended for use there.
-
- * ChangeLog:
- * JavaScriptCore.exp:
- * kjs/Activation.h:
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::saveLocalStorage):
- (KJS::JSGlobalObject::restoreLocalStorage):
- * kjs/JSGlobalObject.h:
- * kjs/JSVariableObject.cpp:
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::JSVariableObjectData::JSVariableObjectData):
- * kjs/function.cpp:
- (KJS::ActivationImp::ActivationImp):
-
-2008-03-31 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Beth Dakin.
-
- Next step toward global code: subclass JSActivation + JSActivationData
- from JSVariableObject + JSVariableObjectData.
-
- JSActivation now relies on JSVariableObject for access to registers and
- symbol table, and for some delete functionality, but not for anything
- else yet.
-
- (KJS::JSActivation::mark): Cleaned up the style here a little bit.
-
-2008-03-31 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Beth Dakin.
-
- Next step toward global code: store "rOffset" in JSVariableObjectData.
-
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::JSVariableObjectData::JSVariableObjectData):
-
-2008-03-31 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Next steps toward global code:
-
- * Moved access to the register file into JSVariableObject.
-
- * Added more ASSERTs to indicate obsolete APIs there are just hanging
- around to stave off build failures.
-
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::registers):
- (KJS::JSVariableObject::JSVariableObjectData::JSVariableObjectData):
- (KJS::JSVariableObject::JSVariableObject):
-
-2008-03-31 Sam Weinig <sam@webkit.org>
-
- Reviewed by Oliver. Tweaked somewhat by Maciej.
-
- - implement codegen for ReadModifyResolveNode
-
- * kjs/nodes.cpp:
- (KJS::emitReadModifyAssignment):
- (KJS::ReadModifyResolveNode::emitCode):
- * kjs/nodes.h:
-
-2008-03-31 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Geoff.
-
- Fix the build -- r31492 removed activation tear-off, but r31493 used it.
-
- * kjs/nodes.cpp:
- (KJS::FuncExprNode::makeFunction):
-
-2008-03-31 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Add support for FuncExprNode to SquirrelFish.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeBlock.h:
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::addConstant):
- (KJS::CodeGenerator::emitNewFunctionExpression):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::FuncExprNode::emitCode):
- (KJS::FuncExprNode::makeFunction):
- * kjs/nodes.h:
-
-2008-03-31 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- First step toward global code: removed some obsolete JSGlobalObject
- APIs, changing clients to ASSERT_NOT_REACHED.
-
- Activation tear-off and scope chain pushing is obsolete because we
- statically detect whether an activation + scope node is required.
-
- The variableObject() and activationObject() accessors are obsolete
- because they haven't been maintained, and they're mostly used by
- node evaluation code, anyway.
-
- The localStorage() accessor is obsolete because everything is in
- registers now, and it's mostly used by node evaluation code, anyway.
-
-2008-03-31 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin.
-
- - implement codegen for bracket accessor and bracket assign
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitGetPropVal):
- (KJS::CodeGenerator::emitPutPropVal):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::BracketAccessorNode::emitCode):
- (KJS::AssignBracketNode::emitCode):
- * kjs/nodes.h:
-
-2008-03-31 Geoffrey Garen <ggaren@apple.com>
-
- Not reviewed.
-
- Removed FIXME that I just fixed.
-
- Added ASSERT to cover an error previously only covered by a FIXME.
-
- * kjs/JSActivation.cpp:
- (KJS::JSActivation::getOwnPropertySlot):
-
-2008-03-31 Geoffrey Garen <ggaren@apple.com>
-
- Not reviewed.
-
- Fixed indentation inside op_call. (I had left this code badly indented
- to make the behavior-changing diff clearer.)
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-03-31 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Fixed up logging of jump instructions to follow the following style:
-
- jump offset(->absoluteTarget)
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
-
-2008-03-31 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Changed the SymbolTable API to use int instead of size_t. It has been
- using int internally for a while now (since squirrelfish symbols can
- have negative indices).
-
-2008-03-31 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Add support for FunctionCallValueNode.
-
- * kjs/nodes.cpp:
- (KJS::FunctionCallValueNode::emitCode):
- * kjs/nodes.h:
-
-2008-03-31 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- 1) Implemented array literals
-
- 2) Renamed op_object_get and op_object_put to op_get_prop_id and
- op_put_prop_id in preparation for new variants.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitNewArray):
- (KJS::CodeGenerator::emitGetPropId):
- (KJS::CodeGenerator::emitPutPropId):
- (KJS::CodeGenerator::emitPutPropIndex):
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::CodeGenerator):
- (KJS::CodeGenerator::propertyNames):
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::ArrayNode::emitCode):
- (KJS::PropertyListNode::emitCode):
- (KJS::DotAccessorNode::emitCode):
- (KJS::PostIncResolveNode::emitCode):
- (KJS::PreIncResolveNode::emitCode):
- (KJS::AssignResolveNode::emitCode):
- (KJS::AssignDotNode::emitCode):
- * kjs/nodes.h:
-
-2008-03-30 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Implemented native function calls. (Re-entering from native code back
- to JS doesn't work yet, though.)
-
- 0.2% speedup overall, due to some inlining tweaks. 3.6% regression on
- function-empty.js, since we're making a new virtual call and taking a
- new branch inside every op_call.
-
- I adjusted the JavaScriptCore calling convention to minimize overhead,
- like so:
-
- The machine calls a single virtual function, "getCallData", to get all
- the data it needs for a function call. Native code still uses the old
- "isObject()" check followed by an "implementsCall()" check, which
- aliases to "getCallData". (We can optimize native code to use getCallData
- at our leisure.)
-
- To supply a list of arguments, the machine calls a new List constructor
- that just takes a pointer and a length, without copying. Native code
- still appends to the list one argument at a time. (We can optimize
- native code to use the new List constructor at our leisure.)
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): Changed resize() call to grow() call,
- to encourage the compiler to inline the Vector code.
-
- * kjs/CallData.h: Added.
- (KJS::): CallData is a union because eventually native calls will stuff
- a function pointer into it, to eliminate the callAsFunction virtual call.
-
- * kjs/function.cpp:
- (KJS::FunctionImp::callAsFunction): Changed this to an ASSERT since
- it's not implemented yet.
-
- * kjs/list.h: Made the List class two-faced, to support the old way and
- the new way during this transition phase: lists can be made read-only
- with just a pointer and a legnth, or you can append to them one item
- at a time.
-
- * kjs/value.h:
- (KJS::jsUndefined): Marked this function ALWAYS_INLINE for the benefit
- of a certain compiler that doesn't know what's best for it.
-
-2008-03-30 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- Dump code that codegen can't handle yet, so it's easier to prioritize missing nodes.
-
- * kjs/nodes.h:
- (KJS::Node::emitCode):
-
-2008-03-30 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- Improve dumping of bytecode and fix coding style accordingly.
-
- Registers are printed as lr1 for locals, tr1 for temp registers. Identifiers print as
- foobar(@id0) and constants print as "foo"(@k1) or 312.4(@k2) or the like. Constant and
- identifier tables are dumped for reference.
-
- * VM/CodeBlock.cpp:
- (KJS::escapeQuotes):
- (KJS::valueToSourceString):
- (KJS::registerName):
- (KJS::constantName):
- (KJS::idName):
- (KJS::printUnaryOp):
- (KJS::printBinaryOp):
- (KJS::CodeBlock::dump):
- * VM/Machine.cpp:
- (KJS::resolve):
- (KJS::resolveBase):
- (KJS::Machine::privateExecute):
-
-2008-03-30 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- Implement StringNode and VoidNode (both pretty trivial).
-
- * kjs/nodes.cpp:
- (KJS::StringNode::emitCode):
- (KJS::VoidNode::emitCode):
- * kjs/nodes.h:
-
-2008-03-30 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Sam.
-
- Implement CommaNode.
-
- * kjs/nodes.cpp:
- (KJS::CommaNode::emitCode):
- * kjs/nodes.h:
-
-2008-03-30 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Adds support for dot notation and object literals.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitNewObject):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::ObjectLiteralNode::emitCode):
- (KJS::PropertyListNode::emitCode):
- (KJS::DotAccessorNode::emitCode):
- (KJS::AssignDotNode::emitCode):
- * kjs/nodes.h:
-
-2008-03-29 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Mark the register file.
-
- It's a conservative mark for now, but once registers are typed, we can
- do an exact mark.
-
- 1.4% regression regardless of whether we actually do the marking.
- GCC is is worth every penny.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): Most of the changes here are just for
- the fact that "registers" is a pointer now.
-
- * kjs/JSGlobalObject.cpp: The global object owns the register file now.
-
-2008-03-28 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 18204: SquirrelFish: continue/break do not correctly handle scope popping
- <http://bugs.webkit.org/show_bug.cgi?id=18204>
-
- We now track the scope depth as part of a loop context, and add an
- extra instruction op_jump_scopes that is used to perform a jump across
- dynamic scope boundaries.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitJumpScopes):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::ContinueNode::emitCode):
- (KJS::BreakNode::emitCode):
-
-2008-03-28 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- Add emitCode support for ConditionalNode.
-
- * kjs/nodes.cpp:
- (KJS::ConditionalNode::emitCode):
- * kjs/nodes.h:
-
-2008-03-28 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Responding to feedback, added some comments, fixed up a few names, and
- clarified that "locals" always means all local variables, functions,
- and parameters.
-
-2008-03-28 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Added support for "this".
-
- Supply an implicit "this" value as the first argument to every function.
- Alias the "this" keyword to that argument.
-
- 1% regression overall, 2.5% regression on empty function calls. Seems
- like a reasonable cost for now, since we're doing more work.
- (Eventually, we might decide to create a version of op_call specialized
- for a known null "this" value.)
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitCall):
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::CodeGenerator):
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * kjs/CommonIdentifiers.cpp:
- (KJS::CommonIdentifiers::CommonIdentifiers):
- * kjs/CommonIdentifiers.h:
- * kjs/nodes.cpp:
- (KJS::ThisNode::emitCode):
- (KJS::FunctionCallResolveNode::emitCode):
- * kjs/nodes.h:
-
-2008-03-28 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Bug 18192: Squirrelfish needs support for break and continue
- <http://bugs.webkit.org/show_bug.cgi?id=18192>
-
- Added a loop context stack to the code generator to provide the
- correct jump labels for continue and goto. Added logic to the
- currently implemented loop constructs to manage entry and exit
- from the loop contexts. Finally, implemented codegen for break
- and continue (and a pass through for LabelNode)
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::pushLoopContext):
- (KJS::CodeGenerator::popLoopContext):
- (KJS::CodeGenerator::loopContextForIdentifier):
- (KJS::CodeGenerator::labelForContinue):
- (KJS::CodeGenerator::labelForBreak):
- * VM/CodeGenerator.h:
- * kjs/nodes.cpp:
- (KJS::DoWhileNode::emitCode):
- (KJS::WhileNode::emitCode):
- (KJS::ForNode::emitCode):
- (KJS::ContinueNode::emitCode):
- (KJS::BreakNode::emitCode):
- (KJS::LabelNode::emitCode):
- * kjs/nodes.h:
-
-2008-03-27 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- Add emitCode support for UnaryPlusNode, NegateNode, BitwiseNotNode and LogicalNotNode.
-
- * VM/CodeBlock.cpp:
- (KJS::printUnaryOp):
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitToJSNumber):
- (KJS::CodeGenerator::emitNegate):
- (KJS::CodeGenerator::emitBitNot):
- (KJS::CodeGenerator::emitNot):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::UnaryPlusNode::emitCode):
- (KJS::NegateNode::emitCode):
- (KJS::BitwiseNotNode::emitCode):
- (KJS::LogicalNotNode::emitCode):
- * kjs/nodes.h:
-
-2008-03-27 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej Stachowiak.
-
- Add support for LogicalAndNode and LogicalOrNode.
-
- * kjs/nodes.cpp:
- (KJS::LogicalAndNode::emitCode):
- (KJS::LogicalOrNode::emitCode):
- * kjs/nodes.h:
-
-2008-03-27 Sam Weinig <sam@webkit.org>
-
- Clean up code and debug output.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-03-27 Geoffrey Garen <ggaren@apple.com>
-
- Moved an ASSERT to a more logical place.
-
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-03-27 Sam Weinig <sam@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Add emitCode support for InstanceOfNode.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitInstanceOf):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::InstanceOfNode::emitCode):
- * kjs/nodes.h:
-
-2008-03-27 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Bug 18142: squirrelfish needs to support dynamic scoping/with
- <http://bugs.webkit.org/show_bug.cgi?id=18142>
-
- Add support for dynamic scoping and add code to handle 'with'
- statements.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeBlock.h:
- (KJS::CodeBlock::CodeBlock):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::getRegister):
- (KJS::CodeGenerator::emitPushScope):
- (KJS::CodeGenerator::emitPopScope):
- * VM/CodeGenerator.h:
- (KJS::CodeGenerator::CodeGenerator):
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::WithNode::emitCode):
- * kjs/nodes.h:
-
-2008-03-27 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- Add emitCode support for NullNode, FalseNode, TrueNode, IfNode, IfElseNode, DoWhileNode and WhileNode
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump): Dump op_jfalse opcode.
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitJumpIfFalse): Identical to emitJumpIfTrue except it emits the op_jfalse opcode.
- (KJS::CodeGenerator::emitLoad): Add and emitLoad override for booleans.
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute): Adds execution of op_jfalse. It is identical to op_jtrue, except the
- the condition is reversed.
- * VM/Opcode.h: Add op_jfalse.
- * kjs/nodes.cpp:
- (KJS::NullNode::emitCode): Added.
- (KJS::FalseNode::emitCode): Added.
- (KJS::TrueNode::emitCode): Added.
- (KJS::IfNode::emitCode): Added.
- (KJS::IfElseNode::emitCode): Added.
- (KJS::DoWhileNode::emitCode): Added.
- (KJS::WhileNode::emitCode): Added.
- * kjs/nodes.h:
-
-2008-03-26 Geoffrey Garen <ggaren@apple.com>
-
- Nixed an unused List.
-
- The calm before my stormy war against the List class.
-
- * kjs/function_object.cpp:
- (KJS::FunctionObjectImp::construct):
-
-2008-03-26 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Geoffrey Garen.
-
- Adds support for EqualNode, NotEqualNode, StrictEqualNode, NotStrictEqualNode,
- LessEqNode, GreaterNode, GreaterEqNode, MultNode, DivNode, ModNode, SubNode,
- LeftShiftNode, RightShiftNode, UnsignedRightShiftNode, BitAndNode, BitXOrNode,
- and BitOrNode.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitEqual):
- (KJS::CodeGenerator::emitNotEqual):
- (KJS::CodeGenerator::emitStrictEqual):
- (KJS::CodeGenerator::emitNotStrictEqual):
- (KJS::CodeGenerator::emitLessEq):
- (KJS::CodeGenerator::emitMult):
- (KJS::CodeGenerator::emitDiv):
- (KJS::CodeGenerator::emitMod):
- (KJS::CodeGenerator::emitSub):
- (KJS::CodeGenerator::emitLeftShift):
- (KJS::CodeGenerator::emitRightShift):
- (KJS::CodeGenerator::emitUnsignedRightShift):
- (KJS::CodeGenerator::emitBitAnd):
- (KJS::CodeGenerator::emitBitXOr):
- (KJS::CodeGenerator::emitBitOr):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::jsLessEq):
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (KJS::MultNode::emitCode):
- (KJS::DivNode::emitCode):
- (KJS::ModNode::emitCode):
- (KJS::SubNode::emitCode):
- (KJS::LeftShiftNode::emitCode):
- (KJS::RightShiftNode::emitCode):
- (KJS::UnsignedRightShiftNode::emitCode):
- (KJS::GreaterNode::emitCode):
- (KJS::LessEqNode::emitCode):
- (KJS::GreaterEqNode::emitCode):
- (KJS::EqualNode::emitCode):
- (KJS::NotEqualNode::emitCode):
- (KJS::StrictEqualNode::emitCode):
- (KJS::NotStrictEqualNode::emitCode):
- (KJS::BitAndNode::emitCode):
- (KJS::BitXOrNode::emitCode):
- (KJS::BitOrNode::emitCode):
- * kjs/nodes.h:
-
-2008-03-26 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Only print debug dumps in debug builds.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::generate):
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
-
-2008-03-26 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Moved a few files around in the XCode project.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2008-03-26 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Made closures work.
-
- An activation object aliases to the register file until its associated
- function returns, at which point it copies the registers for locals and
- parameters into an independent storage buffer.
-
-2008-03-24 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fixed recent 25% regression on simple for loop test. GCC seems to be
- very finicky about the code that gets inlined into
- Machine::privateExecute.
-
- Everything in this patch is simply the result of experiment.
-
- The resolve and resolve_base opcodes do not seem to have gotten slower
- from this change.
-
- * VM/Machine.cpp:
- (KJS::resolve):
- (KJS::resolveBase):
- (KJS::Machine::privateExecute):
- * kjs/nodes.h:
-
-2008-03-24 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff Garen.
-
- Bug 18059: squirrelfish needs to compile on platforms without computed goto
- <http://bugs.webkit.org/show_bug.cgi?id=18059>
-
- "Standard" macro style support for conditionalising the use of computed goto.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/Machine.cpp:
- (KJS::Machine::isOpcode):
- (KJS::Machine::privateExecute):
- * VM/Machine.h:
- (KJS::Machine::getOpcode):
- (KJS::Machine::getOpcodeID):
- * VM/Opcode.h:
- * wtf/Platform.h:
-
-2008-03-24 Geoffrey Garen <ggaren@apple.com>
-
- Moved my notes from nodes.h to the wiki.
-
- * kjs/nodes.h:
-
-2008-03-24 Geoffrey Garen <ggaren@apple.com>
-
- SquirrelFish lives.
-
- Initial check-in of the code I've been carrying around. Lots of stuff
- doesn't work. Plus a bunch of empty files.
-
-=== Start merge of squirrelfish ===
-
-2008-05-21 Darin Adler <darin@apple.com>
-
- - try to fix the Windows build
-
- * profiler/Profiler.cpp:
- (KJS::Profiler::stopProfiling): Use ptrdiff_t instead of the less-common but incredibly
- similar ssize_t type.
- * wtf/AVLTree.h:
- (KJS::AVLTree::search): Added a typename for a dependent name that's a type.
-
-2008-05-21 Darin Adler <darin@apple.com>
-
- Reviewed by Anders.
-
- - fix <rdar://problem/5952721> bug in JavaScript arguments object property lookup
-
- Test: fast/js/arguments-bad-index.html
-
- * kjs/function.cpp:
- (KJS::IndexToNameMap::IndexToNameMap): Use unsigned instead of int.
- (KJS::IndexToNameMap::isMapped): Use unsigned instead of int, and also use the
- strict version of the numeric conversion function, since we don't want to allow
- trailing junk.
- (KJS::IndexToNameMap::unMap): Ditto.
- (KJS::IndexToNameMap::operator[]): Ditto.
- * kjs/function.h: Changed IndexToNameMap::size type from int to unsigned.
-
-2008-05-21 Timothy Hatcher <timothy@apple.com>
-
- Change the Profiler to allow multiple profiles to be running at
- the same time. This can happen when you have nested console.profile()
- calls. This required two changes. First, the Profiler needed to keep a
- Vector of current profiles, instead of one. Second, a Profile needs
- to keep track of the global ExecState it started in and the page group
- identifier it is tracking.
-
- The stopProfiling call now takes the same arguments as startProfiling.
- This makes sure the correct profile is stopped. Passing a null UString
- as the title will stop the last profile for the matching ExecState.
-
- <rdar://problem/5951559> Multiple pages profiling can interfere with each other
-
- Reviewed by Kevin McCullough.
-
- * JavaScriptCore.exp: Added new exports. Removed old symbols.
- * profiler/Profile.cpp:
- (KJS::Profile::Profile): New constructor arguments for the
- originatingGlobalExec and pageGroupIdentifier.
- (KJS::Profile::stopProfiling): Set the m_originatingGlobalExec to null.
- * profiler/Profile.h:
- (KJS::Profile::create): Additional arguments.
- (KJS::Profile::originatingGlobalExec): Return m_originatingGlobalExec.
- (KJS::Profile::pageGroupIdentifier): Return m_pageGroupIdentifier.
- * profiler/Profiler.cpp:
- (KJS::Profiler::findProfile): Added. Finds a Profile that matches
- the ExecState and title.
- (KJS::Profiler::startProfiling): Return early if there is already
- a Profile with the ExecState and title. If not, create a new profile
- and append it to m_currentProfiles.
- (KJS::Profiler::stopProfiling): Loops through m_currentProfiles
- and find the one matching the ExecState and title. If one is found
- call stopProfiling and return the Profile after removing it
- from m_currentProfiles.
- (KJS::dispatchFunctionToProfiles): Helper inline function to loop through
- m_currentProfiles and call a Profile function.
- (KJS::Profiler::willExecute): Call dispatchFunctionToProfiles.
- (KJS::Profiler::didExecute): Ditto.
- * profiler/Profiler.h:
-
-2008-05-21 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- <rdar://problem/5908520> REGRESSION (3.1.1-r33033): Crash in WebKit when opening or
- refreshing page on people.com
-
- The problem was that STL algorithms do not work with non-conformant comparators, and the
- site used sort(function() { return 0.5 - Math.random(); } to randomly shuffle an array.
-
- https://bugs.webkit.org/show_bug.cgi?id=18687
- REGRESSION(r32220): ecma/Array/15.4.4.5-3.js test now fails in GMT(BST)
-
- Besides relying on sort stability, this test was just broken, and kept failing with the
- new stable sort.
-
- Tests: fast/js/sort-randomly.html
- fast/js/sort-stability.html
- fast/js/comparefn-sort-stability.html
-
- * kjs/avl_tree.h: Added an AVL tree implementation.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * wtf/AVLTree.h: Added.
- Added an AVL tree implementation.
-
- * kjs/array_instance.cpp:
- (KJS::ArrayInstance::increaseVectorLength):
- (KJS::ArrayInstance::sort):
- (KJS::AVLTreeAbstractorForArrayCompare::get_less):
- (KJS::AVLTreeAbstractorForArrayCompare::set_less):
- (KJS::AVLTreeAbstractorForArrayCompare::get_greater):
- (KJS::AVLTreeAbstractorForArrayCompare::set_greater):
- (KJS::AVLTreeAbstractorForArrayCompare::get_balance_factor):
- (KJS::AVLTreeAbstractorForArrayCompare::set_balance_factor):
- (KJS::AVLTreeAbstractorForArrayCompare::compare_key_key):
- (KJS::AVLTreeAbstractorForArrayCompare::compare_key_node):
- (KJS::AVLTreeAbstractorForArrayCompare::compare_node_node):
- (KJS::AVLTreeAbstractorForArrayCompare::null):
- (KJS::ArrayInstance::compactForSorting):
-
- * kjs/array_instance.h: increaseVectorLength() now returns a bool to indicate whether it was
- successful.
-
- * wtf/Vector.h:
- (WTF::Vector::Vector):
- (WTF::::operator=):
- (WTF::::fill):
- Make these methods fail instead of crash when allocation fails, matching resize() and
- reserveCapacity(), which already had this behavior. Callers need to check for null buffer
- after making any Vector call that can try to allocate.
-
- * tests/mozilla/ecma/Array/15.4.4.5-3.js: Fixed the test to use a consistent sort function,
- as suggested in comments to a Mozilla bug filed about it (I'll keep tracking the bug to see
- what the final resolution is).
-
-2008-05-20 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim.
-
- <rdar://problem/5950867> JSProfiler: Allow the profiler to "Focus" a
- profile node.
- - Implements focus by adding the idea of a profileNode being visible and
- adding the ability to reset all of the visible flags.
-
- * profiler/Profile.h:
- (KJS::Profile::focus):
- * profiler/ProfileNode.cpp:
- (KJS::ProfileNode::ProfileNode): Initialize the visible flag.
- (KJS::ProfileNode::setTreeVisible): Set the visibility of this node and
- all of its descendents.
- (KJS::ProfileNode::focus): Determine if this node should be visible when
- focusing, if the functionName matches this node's function name or if any
- of this node's children are visible.
- (KJS::ProfileNode::restoreAll): Restore all nodes' visible flag.
- (KJS::ProfileNode::debugPrintData):
- * profiler/ProfileNode.h:
- (KJS::ProfileNode::visible):
- (KJS::ProfileNode::setVisible):
-
-2008-05-20 Timothy Hatcher <timothy@apple.com>
-
- Fixes a couple performance issues with the profiler. Also fixes
- a regression where some nodes wouldn't be added to the tree.
-
- Reviewed by Kevin McCullough.
-
- * profiler/ProfileNode.cpp:
- (KJS::ProfileNode::addChild): Compare callIdentifier instead
- of functionName.
- * profiler/ProfileNode.h:
- (CallIdentifier.operator==): Compare the CallIdentifiers in
- an order that fails sooner for non-matches.
- (CallIdentifier.callIdentifier): Return the CallIdentifier by
- reference to prevent making a new copy each time.
-
-2008-05-20 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin.
-
- <rdar://problem/5950796> JSProfiler: dump functions are in the code
- Removed dump and logging functions from the Release version of the code
- and renamed them to be obviously for debugging only.
-
- * JavaScriptCore.exp:
- * profiler/Profile.cpp:
- (KJS::Profile::debugPrintData):
- (KJS::Profile::debugPrintDataSampleStyle):
- * profiler/Profile.h:
- * profiler/ProfileNode.cpp:
- (KJS::ProfileNode::debugPrintData):
- (KJS::ProfileNode::debugPrintDataSampleStyle):
- * profiler/ProfileNode.h:
- * profiler/Profiler.cpp:
- * profiler/Profiler.h:
-
-2008-05-20 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- <rdar://problem/5950538> JSProfiler: Keep track of non-JS execution time
- We now have an extra node that represents the excess non-JS time.
- - Also changed "SCRIPT" and "anonymous function" to be more consistent
- with the debugger.
-
- * profiler/ProfileNode.cpp:
- (KJS::ProfileNode::stopProfiling): If this ProfileNode is the head node
- create a new child that has the excess execution time.
- (KJS::ProfileNode::calculatePercentages): Moved calculation of the
- percentages into a function since it's called from multiple places.
- * profiler/ProfileNode.h: Add the newly needed functions used above.
- (KJS::ProfileNode::setTotalTime):
- (KJS::ProfileNode::setSelfTime):
- (KJS::ProfileNode::setNumberOfCalls):
- * profiler/Profiler.cpp: renamed "SCRIPT" and "anonymous function" to be
- consistent with the debugger and use constants that can be localized
- more easily.
- (KJS::getCallIdentifiers):
- (KJS::getCallIdentifierFromFunctionImp):
-
-2008-05-20 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim.
-
- <rdar://problem/5770054> JavaScript profiler (10928)
- Removed only profiler-internal use of currentProfile since that concept
- is changing.
-
- * profiler/Profile.h: Now stopProfiling takes a time and bool as
- arguments. The time is used to calculate %s from and the bool tells
- if this node is the head node and should be the one calculating the time.
- (KJS::Profile::stopProfiling):
- * profiler/ProfileNode.cpp: Ditto.
- (KJS::ProfileNode::stopProfiling):
- * profiler/ProfileNode.h: Ditto.
-
-2008-05-20 Kevin McCullough <kmccullough@apple.com>
-
- Accidentally turned on the profiler.
-
- * kjs/config.h:
-
-
-2008-05-20 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim.
-
- <rdar://problem/5770054> JavaScript profiler (10928)
- Split function name into 3 parts so that the Web Inspector can link it to
- the resource location from whence it came.
-
- * kjs/ustring.cpp: Implemented operator> for UStrings
- (KJS::operator>):
- * kjs/ustring.h:
- * profiler/Profile.cpp:
- (KJS::Profile::Profile): Initialize all 3 values.
- (KJS::Profile::willExecute): Use CallIdentifier struct.
- (KJS::Profile::didExecute): Ditto.
- * profiler/Profile.h: Ditto and remove unused function.
- * profiler/ProfileNode.cpp:
- (KJS::ProfileNode::ProfileNode): Use CallIdentifier struct.
- (KJS::ProfileNode::willExecute): Ditto and fix an issue where we
- restarted the m_startTime even though it was already started.
- (KJS::ProfileNode::didExecute): Ditto.
- (KJS::ProfileNode::findChild): Ditto.
- (KJS::functionNameDescendingComparator): Ditto and use new comparator.
- (KJS::functionNameAscendingComparator): Ditto.
- (KJS::ProfileNode::printDataInspectorStyle): Use CallIdentifier struct.
- (KJS::ProfileNode::printDataSampleStyle): Ditto.
- * profiler/ProfileNode.h:
- (KJS::CallIdentifier::CallIdentifier): Describe the CallIdentifier struct
- (KJS::CallIdentifier::operator== ):
- (KJS::ProfileNode::create): Use the CallIdentifier struct.
- (KJS::ProfileNode::callIdentifier):
- (KJS::ProfileNode::functionName): Now only return the function name, not
- the url and line number too.
- (KJS::ProfileNode::url):
- (KJS::ProfileNode::lineNumber):
- * profiler/Profiler.cpp: Use the CallIdentifier struct.
- (KJS::Profiler::startProfiling):
- (KJS::Profiler::willExecute):
- (KJS::Profiler::didExecute):
- (KJS::getCallIdentifiers):
- (KJS::getCallIdentifierFromFunctionImp):
-
-2008-05-20 Timothy Hatcher <timothy@apple.com>
-
- Rename sortFileName{Ascending,Descending} to
- sortFunctionName{Ascending,Descending}.
-
- Reviewed by Kevin McCullough.
-
- * JavaScriptCore.exp:
- * kjs/config.h:
- * profiler/Profile.h:
- * profiler/ProfileNode.cpp:
- (KJS::functionNameDescendingComparator):
- (KJS::ProfileNode::sortFunctionNameDescending):
- (KJS::functionNameAscendingComparator):
- (KJS::ProfileNode::sortFunctionNameAscending):
- * profiler/ProfileNode.h:
-
-2008-05-19 Timothy Hatcher <timothy@apple.com>
-
- Make the profiler use higher than millisecond resolution time-stamps.
-
- Reviewed by Kevin McCullough.
-
- * kjs/DateMath.cpp:
- (KJS::getCurrentUTCTime): Call getCurrentUTCTimeWithMicroseconds and
- floor the result.
- (KJS::getCurrentUTCTimeWithMicroseconds): Copied from the previous
- implementation of getCurrentUTCTime without the floor call.
- * kjs/DateMath.h: Addded getCurrentUTCTimeWithMicroseconds.
- * profiler/ProfileNode.cpp:
- (KJS::ProfileNode::ProfileNode): Use getCurrentUTCTimeWithMicroseconds.
-
-2008-05-19 Timothy Hatcher <timothy@apple.com>
-
- Fixes a bug in the profiler where call and apply would show up
- and double the time spent in a function. We don't want to show call
- and apply at all in the profiles. This change excludes them.
-
- Reviewed by Kevin McCullough.
-
- * profiler/ProfileNode.cpp:
- (KJS::ProfileNode::stopProfiling): Remove a second for loop and
- calculate self time in the existing loop.
- * profiler/Profiler.cpp:
- (KJS::shouldExcludeFunction): Helper inline function that returns
- true in the current function in an InternalFunctionImp and it is
- has the functionName call or apply.
- (KJS::Profiler::willExecute): Call shouldExcludeFunction and return
- early if if returns true.
- (KJS::Profiler::didExecute): Ditto.
-
-2008-05-19 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim.
-
- <rdar://problem/5770054> JavaScript profiler (10928)
- - Implement sorting by function name.
-
- * JavaScriptCore.exp:
- * profiler/Profile.h:
- (KJS::Profile::sortFileNameDescending):
- (KJS::Profile::sortFileNameAscending):
- * profiler/ProfileNode.cpp:
- (KJS::fileNameDescendingComparator):
- (KJS::ProfileNode::sortFileNameDescending):
- (KJS::fileNameAscendingComparator):
- (KJS::ProfileNode::sortFileNameAscending):
- * profiler/ProfileNode.h:
-
-2008-05-19 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- <rdar://problem/5770054> JavaScript profiler (10928)
- - Pass the exec state to profiler when calling startProfiling so that if
- profiling is started within an execution context that location is
- recorded correctly.
-
- * JavaScriptCore.exp:
- * profiler/ProfileNode.cpp:
- (KJS::ProfileNode::printDataInspectorStyle): Dump more info for debugging
- purposes.
- * profiler/Profiler.cpp:
- (KJS::Profiler::startProfiling):
- * profiler/Profiler.h:
-
-2008-05-19 Kevin McCullough <kmccullough@apple.com>
-
- Rubberstamped by Geoff.
-
- Turn off the profiler because it is a performance regression.
-
- * kjs/config.h:
-
-2008-05-19 Alp Toker <alp@nuanti.com>
-
- Reviewed by Anders and Beth.
-
- http://bugs.webkit.org/show_bug.cgi?id=16495
- [GTK] Accessibility support with ATK/AT-SPI
-
- Initial ATK/AT-SPI accessibility support for the GTK+ port.
-
- * wtf/Platform.h:
-
-2008-05-19 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim.
-
- <rdar://problem/5770054> JavaScript profiler (10928)
- -In an effort to make the profiler as efficient as possible instead of
- prepending to a vector we keep the vector in reverse order and operate
- over it backwards.
-
- * profiler/Profile.cpp:
- (KJS::Profile::willExecute):
- (KJS::Profile::didExecute):
- * profiler/ProfileNode.cpp:
- (KJS::ProfileNode::didExecute):
- (KJS::ProfileNode::endAndRecordCall):
- * profiler/ProfileNode.h:
- * profiler/Profiler.cpp:
- (KJS::getStackNames):
-
-2008-05-16 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim.
-
- <rdar://problem/5770054> JavaScript profiler (10928)
- Implement sorting for the profiler.
- I chose to sort the profileNodes in place since there is no reason they
- need to retain their original order.
-
- * JavaScriptCore.exp: Export the symbols.
- * profiler/Profile.h: Add the different ways a profile can be sorted.
- (KJS::Profile::sortTotalTimeDescending):
- (KJS::Profile::sortTotalTimeAscending):
- (KJS::Profile::sortSelfTimeDescending):
- (KJS::Profile::sortSelfTimeAscending):
- (KJS::Profile::sortCallsDescending):
- (KJS::Profile::sortCallsAscending):
- * profiler/ProfileNode.cpp: Implement those ways.
- (KJS::totalTimeDescendingComparator):
- (KJS::ProfileNode::sortTotalTimeDescending):
- (KJS::totalTimeAscendingComparator):
- (KJS::ProfileNode::sortTotalTimeAscending):
- (KJS::selfTimeDescendingComparator):
- (KJS::ProfileNode::sortSelfTimeDescending):
- (KJS::selfTimeAscendingComparator):
- (KJS::ProfileNode::sortSelfTimeAscending):
- (KJS::callsDescendingComparator):
- (KJS::ProfileNode::sortCallsDescending):
- (KJS::callsAscendingComparator):
- (KJS::ProfileNode::sortCallsAscending):
- * profiler/ProfileNode.h: No longer use a Deque since it cannot be
- sorted by std::sort and there was no reason not to use a Vector. I
- previously had though I would do prepending but am not.
- (KJS::ProfileNode::selfTime):
- (KJS::ProfileNode::totalPercent):
- (KJS::ProfileNode::selfPercent):
- (KJS::ProfileNode::children):
- * profiler/Profiler.cpp: Removed these functions as they can be called
- directoy on the Profile object after getting the Vector of them.
- (KJS::getStackNames):
- * profiler/Profiler.h:
-
-2008-05-15 Ariya Hidayat <ariya.hidayat@trolltech.com>
-
- Reviewed by Simon.
-
- Since WebKitGtk is fully using autotools now, clean-up the .pro/.pri files
- from gtk-port.
-
- * JavaScriptCore.pro:
- * kjs/testkjs.pro:
-
-2008-05-15 Kevin McCullough <kmccullough@apple.com>
-
- - Build fix.
-
- * JavaScriptCore.exp:
-
-2008-05-15 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim.
-
- <rdar://problem/5770054> JavaScript profiler (10928)
- - Cache some values to save on computing them repetitively. This will be
- a big savings when we sort since we won't have to walk the tree for
- every comparison!
- - We cache these values when we end profiling because otherwise we won't
- know which profile to get the totalTime for the whole profile from without
- retaining a reference to the head profile or looking up the profile from
- the list of all profiles.
- - Also it's safe to assume we won't be asked for these values while we
- are still profiling since the WebInspector only get's profileNodes from
- profiles that are in the allProfiles() list and a profile is only added
- to that list after it has finished and these values will no longer
- change.
-
- * JavaScriptCore.exp:
- * profiler/ProfileNode.cpp:
- (KJS::ProfileNode::ProfileNode):
- (KJS::ProfileNode::stopProfiling):
- (KJS::ProfileNode::printDataInspectorStyle):
- (KJS::ProfileNode::printDataSampleStyle):
- (KJS::ProfileNode::endAndRecordCall):
- * profiler/ProfileNode.h:
- (KJS::ProfileNode::totalTime):
- (KJS::ProfileNode::selfTime):
- (KJS::ProfileNode::totalPercent):
- (KJS::ProfileNode::selfPercent):
- * profiler/Profiler.cpp:
- (KJS::Profiler::stopProfiling):
-
-2008-05-15 Simon Hausmann <shausman@trolltech.com>
-
- Reviewed by Holger.
-
- Fix compilation when compiling with MSVC and wchar_t support.
-
- * wtf/unicode/qt4/UnicodeQt4.h:
- (WTF::Unicode::foldCase):
- (WTF::Unicode::umemcasecmp):
-
-2008-05-14 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim.
-
- <rdar://problem/5770054> JavaScript profiler (10928)
- - Turn on the profiler.
-
- * kjs/config.h:
-
-2008-05-14 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim.
-
- <rdar://problem/5770054> JavaScript profiler (10928)
- - Expose the new profiler functions to the WebInspector.
-
- * JavaScriptCore.exp:
-
-2008-05-14 Kevin McCullough <kmccullough@apple.com>
-
- Giving credit where credit is due.
-
- * ChangeLog:
-
-2008-05-14 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Geoff and Sam.
-
- <rdar://problem/5770054> JavaScript profiler (10928)
- Add the ability to get percentages of total and self time for displaying
- in the WebInspector.
-
- * profiler/Profile.h:
- (KJS::Profile::totalProfileTime):
- * profiler/ProfileNode.cpp:
- (KJS::ProfileNode::totalPercent):
- (KJS::ProfileNode::selfPercent):
- * profiler/ProfileNode.h:
- * profiler/Profiler.h:
- (KJS::Profiler::currentProfile):
-
-2008-05-14 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam.
-
- <rdar://problem/5770054> JavaScript profiler (10928)
- - Rename FunctionCallProfile to ProfileNode.
-
- * GNUmakefile.am:
- * JavaScriptCore.exp:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * profiler/FunctionCallProfile.cpp: Removed.
- * profiler/FunctionCallProfile.h: Removed.
- * profiler/Profile.cpp:
- (KJS::Profile::Profile):
- (KJS::Profile::willExecute):
- * profiler/Profile.h:
- (KJS::Profile::callTree):
- * profiler/ProfileNode.cpp: Copied from profiler/FunctionCallProfile.cpp.
- (KJS::ProfileNode::ProfileNode):
- (KJS::ProfileNode::willExecute):
- (KJS::ProfileNode::didExecute):
- (KJS::ProfileNode::addChild):
- (KJS::ProfileNode::findChild):
- (KJS::ProfileNode::stopProfiling):
- (KJS::ProfileNode::selfTime):
- (KJS::ProfileNode::printDataInspectorStyle):
- (KJS::ProfileNode::printDataSampleStyle):
- (KJS::ProfileNode::endAndRecordCall):
- * profiler/ProfileNode.h: Copied from profiler/FunctionCallProfile.h.
- (KJS::ProfileNode::create):
- (KJS::ProfileNode::children):
- * profiler/Profiler.cpp:
-
-2008-05-14 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by John.
-
- <rdar://problem/5770054> JavaScript profiler (10928)
- - Have each FunctionCallProfile be able to return it's total and self time.
-
- * JavaScriptCore.exp:
- * profiler/FunctionCallProfile.cpp:
- (KJS::FunctionCallProfile::selfTime):
- * profiler/FunctionCallProfile.h:
- (KJS::FunctionCallProfile::totalTime):
-
-2008-05-14 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- <rdar://problem/5934376> REGRESSION: A script fails because of a straw BOM character in it.
-
- <https://bugs.webkit.org/show_bug.cgi?id=4931>
- Unicode format characters (Cf) should be removed from JavaScript source
-
- Of all Cf characters, we are only removing BOM, because this is what Firefox trunk has
- settled upon, after extensive discussion and investigation.
-
- Based on Darin's work on this bug.
-
- Test: fast/js/removing-Cf-characters.html
-
- * kjs/lexer.cpp:
- (KJS::Lexer::setCode): Tweak formatting. Use a call to shift(4) to read in the
- first characters, instead of having special case code here.
- (KJS::Lexer::shift): Add a loop when reading a character to skip BOM characters.
-
-2008-05-13 Matt Lilek <webkit@mattlilek.com>
-
- Not reviewed, build fix.
-
- * kjs/date_object.cpp:
- (KJS::DateObjectFuncImp::callAsFunction):
-
-2008-05-13 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam.
-
- <rdar://problem/5933644> Implement Date.now
-
- Implement Date.now which returns the number of milliseconds since the epoch.
-
- * kjs/CommonIdentifiers.h:
- * kjs/date_object.cpp:
- (KJS::DateObjectFuncImp::):
- (KJS::DateObjectImp::DateObjectImp):
- (KJS::DateObjectFuncImp::callAsFunction):
-
-2008-05-13 Kevin McCullough <kmccullough@apple.com>
-
- Giving credit where credit is due.
-
- * ChangeLog:
-
-2008-05-13 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam and Geoff.
-
- <rdar://problem/5770054> JavaScript profiler (10928)
- Use PassRefPtrs instead of RefPtrs when appropriate.
-
- * profiler/FunctionCallProfile.cpp:
- (KJS::FunctionCallProfile::addChild):
- * profiler/FunctionCallProfile.h:
- * profiler/Profile.h:
- (KJS::Profile::callTree):
-
-2008-05-13 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam.
-
- <rdar://problem/5770054> JavaScript profiler (10928)
- - Made some functions static (as per Adam) and changed from using raw
- pointers to RefPtr for making these JavaScript Objects.
-
- * profiler/FunctionCallProfile.cpp:
- (KJS::FunctionCallProfile::addChild):
- (KJS::FunctionCallProfile::findChild):
- * profiler/FunctionCallProfile.h:
- (KJS::FunctionCallProfile::create):
- * profiler/Profile.cpp:
- (KJS::Profile::Profile):
- (KJS::Profile::willExecute):
- (KJS::Profile::didExecute):
- (KJS::functionNameCountPairComparator):
- * profiler/Profile.h:
- (KJS::Profile::create):
- (KJS::Profile::title):
- (KJS::Profile::callTree):
- * profiler/Profiler.cpp:
- (KJS::Profiler::startProfiling):
- * profiler/Profiler.h:
- (KJS::Profiler::allProfiles):
- (KJS::Profiler::clearProfiles):
-
-2008-05-13 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- <rdar://problem/4949018> JavaScriptCore API claims to work with UTF8 strings, but only works
- with ASCII strings
-
- * kjs/ustring.h:
- * kjs/ustring.cpp:
- (KJS::UString::Rep::createFromUTF8):
- Added. Implementation adapted from JSStringCreateWithUTF8CString().
-
- * API/JSStringRef.cpp:
- (JSStringCreateWithUTF8CString):
- * API/JSClassRef.cpp:
- (OpaqueJSClass::OpaqueJSClass):
- Use UString::Rep::createFromUTF8().
-
-2008-05-12 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Tim Hatcher.
-
- <rdar://problem/4859666> WebKit needs availability macros in order to deprecate APIs
-
- Create WebKit availability macros that key off the Mac OS X version being targeted to
- determine the WebKit version being targeted. Applications can define
- WEBKIT_VERSION_MIN_REQUIRED before including WebKit headers in order to target a specific
- version of WebKit.
-
- The availability header is being added to JavaScriptCore rather than WebKit as JavaScriptCore
- is the lowest-level portion of the public WebKit API.
-
- * API/WebKitAvailability.h: Added.
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2008-05-12 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Maciej.
-
- https://bugs.webkit.org/show_bug.cgi?id=18828
- Reproducible crash with PAC file
-
- Naively moving JavaScriptCore into thread-specific data was inappropriate in the face of
- exiting JavaScriptCore API clients, which expect a different therading model. Temporarily
- disabling ThreadSpecific implementation until this can be sorted out.
-
- * wtf/ThreadSpecific.h:
- (WTF::::ThreadSpecific):
- (WTF::::~ThreadSpecific):
- (WTF::::get):
- (WTF::::set):
-
-2008-05-12 Alexey Proskuryakov <ap@webkit.org>
-
- Roll out recent threading changes (r32807, r32810, r32819, r32822) to simplify
- SquirrelFish merging.
-
- * API/JSBase.cpp:
- (JSGarbageCollect):
- * API/JSCallbackObjectFunctions.h:
- (KJS::::staticFunctionGetter):
- * API/JSClassRef.cpp:
- (OpaqueJSClass::prototype):
- * API/JSObjectRef.cpp:
- (JSObjectMake):
- (JSObjectMakeFunctionWithCallback):
- (JSObjectMakeConstructor):
- (JSObjectMakeFunction):
- * API/JSValueRef.cpp:
- (JSValueMakeNumber):
- (JSValueMakeString):
- * JavaScriptCore.exp:
- * kjs/ExecState.h:
- * kjs/InitializeThreading.cpp:
- (KJS::initializeThreadingOnce):
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::~JSGlobalObject):
- (KJS::JSGlobalObject::init):
- (KJS::JSGlobalObject::put):
- (KJS::JSGlobalObject::reset):
- (KJS::JSGlobalObject::tearOffActivation):
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::head):
- (KJS::JSGlobalObject::perThreadData):
- * kjs/JSLock.cpp:
- (KJS::JSLock::registerThread):
- * kjs/JSLock.h:
- (KJS::JSLock::JSLock):
- * kjs/array_instance.cpp:
- (KJS::ArrayInstance::ArrayInstance):
- (KJS::ArrayInstance::lengthGetter):
- * kjs/array_object.cpp:
- (KJS::arrayProtoFuncToString):
- (KJS::arrayProtoFuncToLocaleString):
- (KJS::arrayProtoFuncJoin):
- (KJS::arrayProtoFuncConcat):
- (KJS::arrayProtoFuncPop):
- (KJS::arrayProtoFuncPush):
- (KJS::arrayProtoFuncShift):
- (KJS::arrayProtoFuncSlice):
- (KJS::arrayProtoFuncSplice):
- (KJS::arrayProtoFuncUnShift):
- (KJS::arrayProtoFuncFilter):
- (KJS::arrayProtoFuncMap):
- (KJS::arrayProtoFuncEvery):
- (KJS::arrayProtoFuncForEach):
- (KJS::arrayProtoFuncSome):
- (KJS::arrayProtoFuncIndexOf):
- (KJS::arrayProtoFuncLastIndexOf):
- (KJS::ArrayObjectImp::ArrayObjectImp):
- (KJS::ArrayObjectImp::construct):
- * kjs/bool_object.cpp:
- (KJS::BooleanPrototype::BooleanPrototype):
- (KJS::booleanProtoFuncToString):
- (KJS::BooleanObjectImp::BooleanObjectImp):
- (KJS::BooleanObjectImp::construct):
- * kjs/collector.cpp:
- (KJS::allocateBlock):
- (KJS::Collector::recordExtraCost):
- (KJS::Collector::heapAllocate):
- (KJS::Collector::allocate):
- (KJS::Collector::allocateNumber):
- (KJS::Collector::registerAsMainThread):
- (KJS::onMainThread):
- (KJS::PlatformThread::PlatformThread):
- (KJS::getCurrentPlatformThread):
- (KJS::Collector::Thread::Thread):
- (KJS::destroyRegisteredThread):
- (KJS::initializeRegisteredThreadKey):
- (KJS::Collector::registerThread):
- (KJS::Collector::markStackObjectsConservatively):
- (KJS::Collector::markCurrentThreadConservativelyInternal):
- (KJS::Collector::markCurrentThreadConservatively):
- (KJS::suspendThread):
- (KJS::resumeThread):
- (KJS::getPlatformThreadRegisters):
- (KJS::otherThreadStackPointer):
- (KJS::Collector::markOtherThreadConservatively):
- (KJS::protectedValues):
- (KJS::Collector::protect):
- (KJS::Collector::unprotect):
- (KJS::Collector::collectOnMainThreadOnly):
- (KJS::Collector::markProtectedObjects):
- (KJS::Collector::markMainThreadOnlyObjects):
- (KJS::Collector::sweep):
- (KJS::Collector::collect):
- (KJS::Collector::size):
- (KJS::Collector::globalObjectCount):
- (KJS::Collector::protectedGlobalObjectCount):
- (KJS::Collector::protectedObjectCount):
- (KJS::Collector::protectedObjectTypeCounts):
- (KJS::Collector::isBusy):
- (KJS::Collector::reportOutOfMemoryToAllExecStates):
- * kjs/collector.h:
- (KJS::Collector::cellBlock):
- (KJS::Collector::cellOffset):
- (KJS::Collector::isCellMarked):
- (KJS::Collector::markCell):
- (KJS::Collector::reportExtraMemoryCost):
- * kjs/date_object.cpp:
- (KJS::formatLocaleDate):
- (KJS::DatePrototype::DatePrototype):
- (KJS::DateObjectImp::DateObjectImp):
- (KJS::DateObjectImp::construct):
- (KJS::DateObjectImp::callAsFunction):
- (KJS::DateObjectFuncImp::DateObjectFuncImp):
- (KJS::DateObjectFuncImp::callAsFunction):
- (KJS::dateProtoFuncToString):
- (KJS::dateProtoFuncToUTCString):
- (KJS::dateProtoFuncToDateString):
- (KJS::dateProtoFuncToTimeString):
- (KJS::dateProtoFuncToLocaleString):
- (KJS::dateProtoFuncToLocaleDateString):
- (KJS::dateProtoFuncToLocaleTimeString):
- (KJS::dateProtoFuncValueOf):
- (KJS::dateProtoFuncGetTime):
- (KJS::dateProtoFuncGetFullYear):
- (KJS::dateProtoFuncGetUTCFullYear):
- (KJS::dateProtoFuncToGMTString):
- (KJS::dateProtoFuncGetMonth):
- (KJS::dateProtoFuncGetUTCMonth):
- (KJS::dateProtoFuncGetDate):
- (KJS::dateProtoFuncGetUTCDate):
- (KJS::dateProtoFuncGetDay):
- (KJS::dateProtoFuncGetUTCDay):
- (KJS::dateProtoFuncGetHours):
- (KJS::dateProtoFuncGetUTCHours):
- (KJS::dateProtoFuncGetMinutes):
- (KJS::dateProtoFuncGetUTCMinutes):
- (KJS::dateProtoFuncGetSeconds):
- (KJS::dateProtoFuncGetUTCSeconds):
- (KJS::dateProtoFuncGetMilliSeconds):
- (KJS::dateProtoFuncGetUTCMilliseconds):
- (KJS::dateProtoFuncGetTimezoneOffset):
- (KJS::dateProtoFuncSetTime):
- (KJS::setNewValueFromTimeArgs):
- (KJS::setNewValueFromDateArgs):
- (KJS::dateProtoFuncSetYear):
- (KJS::dateProtoFuncGetYear):
- * kjs/error_object.cpp:
- (KJS::ErrorPrototype::ErrorPrototype):
- (KJS::errorProtoFuncToString):
- (KJS::ErrorObjectImp::ErrorObjectImp):
- (KJS::ErrorObjectImp::construct):
- (KJS::NativeErrorPrototype::NativeErrorPrototype):
- (KJS::NativeErrorImp::NativeErrorImp):
- (KJS::NativeErrorImp::construct):
- * kjs/function.cpp:
- (KJS::FunctionImp::lengthGetter):
- (KJS::FunctionImp::construct):
- (KJS::Arguments::Arguments):
- (KJS::ActivationImp::createArgumentsObject):
- (KJS::encode):
- (KJS::decode):
- (KJS::globalFuncParseInt):
- (KJS::globalFuncParseFloat):
- (KJS::globalFuncEscape):
- (KJS::globalFuncUnescape):
- (KJS::PrototypeFunction::PrototypeFunction):
- (KJS::PrototypeReflexiveFunction::PrototypeReflexiveFunction):
- * kjs/function_object.cpp:
- (KJS::FunctionPrototype::FunctionPrototype):
- (KJS::functionProtoFuncToString):
- (KJS::FunctionObjectImp::FunctionObjectImp):
- (KJS::FunctionObjectImp::construct):
- * kjs/internal.cpp:
- (KJS::StringImp::toObject):
- * kjs/internal.h:
- (KJS::StringImp::StringImp):
- (KJS::NumberImp::operator new):
- * kjs/list.cpp:
- (KJS::List::markSet):
- (KJS::List::markProtectedListsSlowCase):
- (KJS::List::expandAndAppend):
- * kjs/list.h:
- (KJS::List::List):
- (KJS::List::~List):
- (KJS::List::markProtectedLists):
- * kjs/lookup.h:
- (KJS::staticFunctionGetter):
- (KJS::cacheGlobalObject):
- * kjs/math_object.cpp:
- (KJS::MathObjectImp::getValueProperty):
- (KJS::mathProtoFuncAbs):
- (KJS::mathProtoFuncACos):
- (KJS::mathProtoFuncASin):
- (KJS::mathProtoFuncATan):
- (KJS::mathProtoFuncATan2):
- (KJS::mathProtoFuncCeil):
- (KJS::mathProtoFuncCos):
- (KJS::mathProtoFuncExp):
- (KJS::mathProtoFuncFloor):
- (KJS::mathProtoFuncLog):
- (KJS::mathProtoFuncMax):
- (KJS::mathProtoFuncMin):
- (KJS::mathProtoFuncPow):
- (KJS::mathProtoFuncRandom):
- (KJS::mathProtoFuncRound):
- (KJS::mathProtoFuncSin):
- (KJS::mathProtoFuncSqrt):
- (KJS::mathProtoFuncTan):
- * kjs/nodes.cpp:
- (KJS::ParserRefCounted::ParserRefCounted):
- (KJS::ParserRefCounted::ref):
- (KJS::ParserRefCounted::deref):
- (KJS::ParserRefCounted::refcount):
- (KJS::ParserRefCounted::deleteNewObjects):
- (KJS::Node::handleException):
- (KJS::NumberNode::evaluate):
- (KJS::StringNode::evaluate):
- (KJS::ArrayNode::evaluate):
- (KJS::PostIncResolveNode::evaluate):
- (KJS::PostIncLocalVarNode::evaluate):
- (KJS::PostDecResolveNode::evaluate):
- (KJS::PostDecLocalVarNode::evaluate):
- (KJS::PostDecLocalVarNode::inlineEvaluateToNumber):
- (KJS::PostIncBracketNode::evaluate):
- (KJS::PostDecBracketNode::evaluate):
- (KJS::PostIncDotNode::evaluate):
- (KJS::PostDecDotNode::evaluate):
- (KJS::typeStringForValue):
- (KJS::LocalVarTypeOfNode::evaluate):
- (KJS::TypeOfResolveNode::evaluate):
- (KJS::TypeOfValueNode::evaluate):
- (KJS::PreIncLocalVarNode::evaluate):
- (KJS::PreIncResolveNode::evaluate):
- (KJS::PreDecLocalVarNode::evaluate):
- (KJS::PreDecResolveNode::evaluate):
- (KJS::PreIncConstNode::evaluate):
- (KJS::PreDecConstNode::evaluate):
- (KJS::PostIncConstNode::evaluate):
- (KJS::PostDecConstNode::evaluate):
- (KJS::PreIncBracketNode::evaluate):
- (KJS::PreDecBracketNode::evaluate):
- (KJS::PreIncDotNode::evaluate):
- (KJS::PreDecDotNode::evaluate):
- (KJS::NegateNode::evaluate):
- (KJS::BitwiseNotNode::evaluate):
- (KJS::MultNode::evaluate):
- (KJS::DivNode::evaluate):
- (KJS::ModNode::evaluate):
- (KJS::addSlowCase):
- (KJS::add):
- (KJS::AddNumbersNode::evaluate):
- (KJS::AddStringsNode::evaluate):
- (KJS::AddStringLeftNode::evaluate):
- (KJS::AddStringRightNode::evaluate):
- (KJS::SubNode::evaluate):
- (KJS::LeftShiftNode::evaluate):
- (KJS::RightShiftNode::evaluate):
- (KJS::UnsignedRightShiftNode::evaluate):
- (KJS::BitXOrNode::evaluate):
- (KJS::BitOrNode::evaluate):
- (KJS::valueForReadModifyAssignment):
- (KJS::ForInNode::execute):
- (KJS::TryNode::execute):
- (KJS::FuncDeclNode::makeFunction):
- (KJS::FuncExprNode::evaluate):
- * kjs/nodes.h:
- * kjs/number_object.cpp:
- (KJS::NumberPrototype::NumberPrototype):
- (KJS::numberProtoFuncToString):
- (KJS::numberProtoFuncToLocaleString):
- (KJS::numberProtoFuncToFixed):
- (KJS::numberProtoFuncToExponential):
- (KJS::numberProtoFuncToPrecision):
- (KJS::NumberObjectImp::NumberObjectImp):
- (KJS::NumberObjectImp::getValueProperty):
- (KJS::NumberObjectImp::construct):
- (KJS::NumberObjectImp::callAsFunction):
- * kjs/object.cpp:
- (KJS::JSObject::call):
- (KJS::JSObject::get):
- (KJS::JSObject::put):
- (KJS::JSObject::defineGetter):
- (KJS::JSObject::defineSetter):
- (KJS::JSObject::putDirect):
- (KJS::Error::create):
- * kjs/object.h:
- * kjs/object_object.cpp:
- (KJS::ObjectPrototype::ObjectPrototype):
- (KJS::objectProtoFuncToLocaleString):
- (KJS::objectProtoFuncToString):
- (KJS::ObjectObjectImp::ObjectObjectImp):
- (KJS::ObjectObjectImp::construct):
- * kjs/property_map.h:
- (KJS::SavedProperty::SavedProperty):
- (KJS::SavedProperty::init):
- (KJS::SavedProperty::~SavedProperty):
- (KJS::SavedProperty::name):
- (KJS::SavedProperty::value):
- (KJS::SavedProperty::attributes):
- * kjs/protect.h:
- (KJS::gcProtect):
- (KJS::gcUnprotect):
- * kjs/regexp_object.cpp:
- (KJS::RegExpPrototype::RegExpPrototype):
- (KJS::regExpProtoFuncToString):
- (KJS::RegExpImp::getValueProperty):
- (KJS::RegExpObjectImp::RegExpObjectImp):
- (KJS::RegExpObjectImp::arrayOfMatches):
- (KJS::RegExpObjectImp::getBackref):
- (KJS::RegExpObjectImp::getLastParen):
- (KJS::RegExpObjectImp::getLeftContext):
- (KJS::RegExpObjectImp::getRightContext):
- (KJS::RegExpObjectImp::getValueProperty):
- (KJS::RegExpObjectImp::createRegExpImp):
- * kjs/regexp_object.h:
- * kjs/string_object.cpp:
- (KJS::StringInstance::StringInstance):
- (KJS::StringInstance::lengthGetter):
- (KJS::StringInstance::indexGetter):
- (KJS::stringInstanceNumericPropertyGetter):
- (KJS::StringPrototype::StringPrototype):
- (KJS::replace):
- (KJS::stringProtoFuncCharAt):
- (KJS::stringProtoFuncCharCodeAt):
- (KJS::stringProtoFuncConcat):
- (KJS::stringProtoFuncIndexOf):
- (KJS::stringProtoFuncLastIndexOf):
- (KJS::stringProtoFuncMatch):
- (KJS::stringProtoFuncSearch):
- (KJS::stringProtoFuncReplace):
- (KJS::stringProtoFuncSlice):
- (KJS::stringProtoFuncSplit):
- (KJS::stringProtoFuncSubstr):
- (KJS::stringProtoFuncSubstring):
- (KJS::stringProtoFuncToLowerCase):
- (KJS::stringProtoFuncToUpperCase):
- (KJS::stringProtoFuncToLocaleLowerCase):
- (KJS::stringProtoFuncToLocaleUpperCase):
- (KJS::stringProtoFuncLocaleCompare):
- (KJS::stringProtoFuncBig):
- (KJS::stringProtoFuncSmall):
- (KJS::stringProtoFuncBlink):
- (KJS::stringProtoFuncBold):
- (KJS::stringProtoFuncFixed):
- (KJS::stringProtoFuncItalics):
- (KJS::stringProtoFuncStrike):
- (KJS::stringProtoFuncSub):
- (KJS::stringProtoFuncSup):
- (KJS::stringProtoFuncFontcolor):
- (KJS::stringProtoFuncFontsize):
- (KJS::stringProtoFuncAnchor):
- (KJS::stringProtoFuncLink):
- (KJS::StringObjectImp::StringObjectImp):
- (KJS::StringObjectImp::construct):
- (KJS::StringObjectImp::callAsFunction):
- (KJS::StringObjectFuncImp::StringObjectFuncImp):
- (KJS::StringObjectFuncImp::callAsFunction):
- * kjs/string_object.h:
- (KJS::StringInstanceThatMasqueradesAsUndefined::StringInstanceThatMasqueradesAsUndefined):
- * kjs/testkjs.cpp:
- (GlobalObject::GlobalObject):
- (functionGC):
- (functionRun):
- (functionReadline):
- (kjsmain):
- * kjs/ustring.h:
- * kjs/value.cpp:
- (KJS::JSCell::operator new):
- (KJS::jsString):
- (KJS::jsOwnedString):
- (KJS::jsNumberCell):
- * kjs/value.h:
- (KJS::jsNaN):
- (KJS::jsNumber):
- (KJS::jsNumberFromAnd):
- (KJS::JSCell::marked):
- (KJS::JSCell::mark):
- (KJS::JSValue::toJSNumber):
- * wtf/ThreadSpecific.h:
- (WTF::T):
-
-2008-05-10 Julien Chaffraix <jchaffraix@webkit.org>
-
- Qt & wx build fix.
-
- * JavaScriptCore.pri: Add profiler/Profile.cpp.
- * JavaScriptCoreSources.bkl: Ditto.
-
-2008-05-10 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Maciej.
-
- Gtk+ build fix
-
- * GNUmakefile.am: Add Profile.cpp in _sources
-
-2008-05-09 Brady Eidson <beidson@apple.com>
-
- Build Fix. Kevin is an idiot.
- ("My name is Kevin McCullough and I approve this message.")
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
-
-2008-05-09 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim.
-
- -<rdar://problem/5770054> JavaScript profiler (10928)
- -Add Profile class so that all profiles can be stored and retrieved by
- the WebInspector when that time comes.
-
- * JavaScriptCore.exp: Export the new function signatures.
- * JavaScriptCore.xcodeproj/project.pbxproj: Add the new files to the
- project
- * profiler/Profile.cpp: Added. This class represents a single run of the
- profiler.
- (KJS::Profile::Profile):
- (KJS::Profile::willExecute):
- (KJS::Profile::didExecute):
- (KJS::Profile::printDataInspectorStyle):
- (KJS::functionNameCountPairComparator):
- (KJS::Profile::printDataSampleStyle):
- * profiler/Profile.h: Added. Ditto
- (KJS::Profile::stopProfiling):
- * profiler/Profiler.cpp: Now the profiler keeps track of many profiles
- but only runs one at a time.
- (KJS::Profiler::startProfiling):
- (KJS::Profiler::stopProfiling):
- (KJS::Profiler::willExecute):
- (KJS::Profiler::didExecute):
- (KJS::Profiler::printDataInspectorStyle):
- (KJS::Profiler::printDataSampleStyle):
- * profiler/Profiler.h: Ditto.
- (KJS::Profiler::~Profiler):
- (KJS::Profiler::allProfiles):
- (KJS::Profiler::clearProfiles):
-
-2008-05-08 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Mark.
-
- Enable NPAPI plug-ins on 64-bit.
-
- * wtf/Platform.h:
-
-2008-05-07 Julien Chaffraix <jchaffraix@webkit.org>
-
- Reviewed by Adam Roben.
-
- wx & Gtk build fix.
-
- Add SIZE_MAX definition for the wx port.
-
- * os-win32/stdint.h:
-
-2008-05-07 Ariya Hidayat <ariya.hidayat@trolltech.com>
-
- Reviewed by Simon.
-
- Support for isMainThread in the Qt port.
-
- * wtf/ThreadingQt.cpp:
- (WTF::initializeThreading): Adjusted.
- (WTF::isMainThread): Added.
-
-2008-05-05 Darin Adler <darin@apple.com>
-
- Reviewed by John Sullivan.
-
- - fix debug-only leak seen on buildbot
-
- * wtf/HashTable.h:
- (WTF::HashTable::checkKey): After writing an empty value in, but before constructing a
- deleted value on top of it, call the destructor so the empty value doesn't leak.
-
-2008-05-02 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- Get rid of static data in nodes.cpp (well, at least of non-debug one).
-
- No measurable change on SunSpider.
-
- * kjs/InitializeThreading.cpp:
- (KJS::initializeThreadingOnce):
- * kjs/nodes.cpp:
- (KJS::newTrackedObjects):
- (KJS::trackedObjectExtraRefCounts):
- (KJS::initializeNodesThreading):
- (KJS::ParserRefCounted::ParserRefCounted):
- (KJS::ParserRefCounted::ref):
- (KJS::ParserRefCounted::deref):
- (KJS::ParserRefCounted::refcount):
- (KJS::ParserRefCounted::deleteNewObjects):
- * kjs/nodes.h:
- Made newTrackedObjects and trackedObjectExtraRefCounts per-thread.
-
-2008-05-02 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Move call stack depth counter to global object.
-
- * kjs/ExecState.h: (KJS::ExecState::functionCallDepth): Added a recursion depth counter to
- per-thread data.
- * kjs/JSGlobalObject.cpp: (KJS::JSGlobalObject::init): Initialize PerThreadData.functionCallDepth.
- * kjs/JSGlobalObject.h: (KJS::JSGlobalObject::perThreadData): Made the result non-const.
-
- * kjs/object.cpp:
- (KJS::throwStackSizeExceededError): Moved throwError to a separate function, since it is now
- the only thing in JSObject::call that needs a PIC branch.
- (KJS::JSObject::call): Use a per-thread variable instead of local static for recursion depth
- tracking.
-
-2008-05-02 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Make JavaScriptGlue and JavaScriptCore API functions implicitly call initializeThreading
- for the sake of non-WebKit clients.
-
- * API/JSBase.cpp:
- (JSGarbageCollect):
- * API/JSContextRef.cpp:
- (JSGlobalContextCreate):
- These are the JavaScriptCore API bottlenecks. There are a few other JSStringRef
- and JSClassRef functions that can be called earlier, but they do not do anything that
- requires initializeThreading.
-
- * kjs/InitializeThreading.cpp:
- (KJS::doInitializeThreading):
- (KJS::initializeThreading):
- On Darwin, make the initialization happen under pthread_once, since there is no guarantee
- that non-WebKit clients won't try to call this function re-entrantly.
-
- * kjs/InitializeThreading.h:
- * wtf/Threading.h:
- Spell out initializeThreading contract.
-
- * wtf/ThreadingPthreads.cpp: (WTF::isMainThread): Make sure that results are correct on
- Darwin, even if threading was initialized from a secondary thread.
-
-2008-05-02 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- https://bugs.webkit.org/show_bug.cgi?id=18826
- Make JavaScript heap per-thread
-
- * wtf/ThreadSpecific.h: Make sure to initialize POD thread-specific varaibles, too
- (replaced "new T" with "new T()").
-
- * kjs/collector.h: Renamed Collector to Heap, made the heap per-thread. Removed support for
- multithreaded access to a heap.
- (KJS::CollectorBlock): Removed collectOnMainThreadOnly bitmap, added a reference to owner heap.
- (KJS::SmallCellCollectorBlock): Ditto.
- (KJS::Heap::markListSet): Moved from a static variable in List.cpp to a per-thread one here.
- (KJS::Heap::heap): Added a method to find which heap a JSValue is allocated in.
-
- * kjs/collector.cpp: Changed "const size_t" constants to #defines, to avoid a PIC branch
- (gcc was using one to access a constant used in std::max(), because it takes a reference,
- even though std::max() itself was inlined).
- (KJS::Heap::threadHeap): JS heap is now per-thread.
- (KJS::Heap::Heap): Zero-initialize the heap.
- (KJS::allocateBlock): Added NEVER_INLINE, because this function uses a PIC branch, so
- inlining it in Heap::heapAllocate() is bad for performance, now that the latter doesn't
- use any global data.
- (KJS::Heap::heapAllocate): Initialize Block::heap.
- (KJS::Heap::markCurrentThreadConservatively): Moved into markStackObjectsConservatively(),
- as GC only works with a current thread's heap now.
- (KJS::Heap::sweep): Removed collectOnMainThreadOnly checks.
- (KJS::Heap::collect): Ditto.
-
- * kjs/JSLock.cpp:
- * kjs/JSLock.h:
- (KJS::JSLock::JSLock):
- Removed registerThread(), as the heap no longer cares.
-
- * kjs/InitializeThreading.cpp: (KJS::initializeThreading): Initialize new per-thread
- variables in Heap and JSGlobalObject.
-
- * kjs/ExecState.h: (KJS::ExecState::heap): Added a heap pointer for faster access to
- per-thread heap, and an accessor for it.
-
- * kjs/JSGlobalObject.h: Made JSGlobalObject linked list per-thread.
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::~JSGlobalObject): Fixed a bug in linked list handling. It only worked
- right if the removed object was the head one!
- (KJS::JSGlobalObject::head): Return a per-thread list head.
- (KJS::JSGlobalObject::init): Store a reference to per-thread heap.
- (KJS::JSGlobalObject::reset): Pass ExecState to functions that need it.
- (KJS::JSGlobalObject::tearOffActivation): Ditto.
- (KJS::JSGlobalObject::operator new): JSGlobalObject allocation cannot use an ExecState,
- so it needs a custom operator new that directly accesses per-thread heap.
-
- * kjs/list.h:
- (KJS::List::List): Replaced m_isInMarkSet boolean with an actual pointer to the set, since it
- is no longer a single static object.
- (KJS::List::~List): Ditto.
- * kjs/list.cpp:
- (KJS::List::markSet): Removed, this is now stored in Heap.
- (KJS::List::markProtectedLists): Take a reference to the list.
- (KJS::List::expandAndAppend): Ask the current thread heap for a mark set reference.
-
- * kjs/protect.h:
- (KJS::gcProtect):
- (KJS::gcUnprotect):
- Use the newly added Heap::heap() method to find out which heap the value to be (un)protected
- belongs to.
-
- * kjs/property_map.h: Removed unused SavedProperty class.
-
- * JavaScriptCore.exp:
- * API/JSBase.cpp:
- (JSGarbageCollect):
- * API/JSCallbackObjectFunctions.h:
- (KJS::::staticFunctionGetter):
- * API/JSClassRef.cpp:
- (OpaqueJSClass::prototype):
- * API/JSObjectRef.cpp:
- (JSObjectMake):
- (JSObjectMakeFunctionWithCallback):
- (JSObjectMakeConstructor):
- (JSObjectMakeFunction):
- * API/JSValueRef.cpp:
- (JSValueMakeNumber):
- (JSValueMakeString):
- * kjs/array_instance.cpp:
- (KJS::ArrayInstance::ArrayInstance):
- (KJS::ArrayInstance::lengthGetter):
- * kjs/array_object.cpp:
- (KJS::arrayProtoFuncToString):
- (KJS::arrayProtoFuncToLocaleString):
- (KJS::arrayProtoFuncJoin):
- (KJS::arrayProtoFuncConcat):
- (KJS::arrayProtoFuncPop):
- (KJS::arrayProtoFuncPush):
- (KJS::arrayProtoFuncShift):
- (KJS::arrayProtoFuncSlice):
- (KJS::arrayProtoFuncSplice):
- (KJS::arrayProtoFuncUnShift):
- (KJS::arrayProtoFuncFilter):
- (KJS::arrayProtoFuncMap):
- (KJS::arrayProtoFuncEvery):
- (KJS::arrayProtoFuncForEach):
- (KJS::arrayProtoFuncSome):
- (KJS::arrayProtoFuncIndexOf):
- (KJS::arrayProtoFuncLastIndexOf):
- (KJS::ArrayObjectImp::ArrayObjectImp):
- (KJS::ArrayObjectImp::construct):
- * kjs/bool_object.cpp:
- (KJS::BooleanPrototype::BooleanPrototype):
- (KJS::booleanProtoFuncToString):
- (KJS::BooleanObjectImp::BooleanObjectImp):
- (KJS::BooleanObjectImp::construct):
- * kjs/date_object.cpp:
- (KJS::formatLocaleDate):
- (KJS::DatePrototype::DatePrototype):
- (KJS::DateObjectImp::DateObjectImp):
- (KJS::DateObjectImp::construct):
- (KJS::DateObjectImp::callAsFunction):
- (KJS::DateObjectFuncImp::DateObjectFuncImp):
- (KJS::DateObjectFuncImp::callAsFunction):
- (KJS::dateProtoFuncToString):
- (KJS::dateProtoFuncToUTCString):
- (KJS::dateProtoFuncToDateString):
- (KJS::dateProtoFuncToTimeString):
- (KJS::dateProtoFuncToLocaleString):
- (KJS::dateProtoFuncToLocaleDateString):
- (KJS::dateProtoFuncToLocaleTimeString):
- (KJS::dateProtoFuncValueOf):
- (KJS::dateProtoFuncGetTime):
- (KJS::dateProtoFuncGetFullYear):
- (KJS::dateProtoFuncGetUTCFullYear):
- (KJS::dateProtoFuncToGMTString):
- (KJS::dateProtoFuncGetMonth):
- (KJS::dateProtoFuncGetUTCMonth):
- (KJS::dateProtoFuncGetDate):
- (KJS::dateProtoFuncGetUTCDate):
- (KJS::dateProtoFuncGetDay):
- (KJS::dateProtoFuncGetUTCDay):
- (KJS::dateProtoFuncGetHours):
- (KJS::dateProtoFuncGetUTCHours):
- (KJS::dateProtoFuncGetMinutes):
- (KJS::dateProtoFuncGetUTCMinutes):
- (KJS::dateProtoFuncGetSeconds):
- (KJS::dateProtoFuncGetUTCSeconds):
- (KJS::dateProtoFuncGetMilliSeconds):
- (KJS::dateProtoFuncGetUTCMilliseconds):
- (KJS::dateProtoFuncGetTimezoneOffset):
- (KJS::dateProtoFuncSetTime):
- (KJS::setNewValueFromTimeArgs):
- (KJS::setNewValueFromDateArgs):
- (KJS::dateProtoFuncSetYear):
- (KJS::dateProtoFuncGetYear):
- * kjs/error_object.cpp:
- (KJS::ErrorPrototype::ErrorPrototype):
- (KJS::errorProtoFuncToString):
- (KJS::ErrorObjectImp::ErrorObjectImp):
- (KJS::ErrorObjectImp::construct):
- (KJS::NativeErrorPrototype::NativeErrorPrototype):
- (KJS::NativeErrorImp::NativeErrorImp):
- (KJS::NativeErrorImp::construct):
- * kjs/function.cpp:
- (KJS::FunctionImp::lengthGetter):
- (KJS::FunctionImp::construct):
- (KJS::Arguments::Arguments):
- (KJS::ActivationImp::createArgumentsObject):
- (KJS::encode):
- (KJS::decode):
- (KJS::globalFuncParseInt):
- (KJS::globalFuncParseFloat):
- (KJS::globalFuncEscape):
- (KJS::globalFuncUnescape):
- (KJS::PrototypeFunction::PrototypeFunction):
- (KJS::PrototypeReflexiveFunction::PrototypeReflexiveFunction):
- * kjs/function_object.cpp:
- (KJS::FunctionPrototype::FunctionPrototype):
- (KJS::functionProtoFuncToString):
- (KJS::FunctionObjectImp::FunctionObjectImp):
- (KJS::FunctionObjectImp::construct):
- * kjs/internal.cpp:
- (KJS::StringImp::toObject):
- * kjs/internal.h:
- (KJS::StringImp::StringImp):
- (KJS::NumberImp::operator new):
- * kjs/lookup.h:
- (KJS::staticFunctionGetter):
- (KJS::cacheGlobalObject):
- * kjs/math_object.cpp:
- (KJS::MathObjectImp::getValueProperty):
- (KJS::mathProtoFuncAbs):
- (KJS::mathProtoFuncACos):
- (KJS::mathProtoFuncASin):
- (KJS::mathProtoFuncATan):
- (KJS::mathProtoFuncATan2):
- (KJS::mathProtoFuncCeil):
- (KJS::mathProtoFuncCos):
- (KJS::mathProtoFuncExp):
- (KJS::mathProtoFuncFloor):
- (KJS::mathProtoFuncLog):
- (KJS::mathProtoFuncMax):
- (KJS::mathProtoFuncMin):
- (KJS::mathProtoFuncPow):
- (KJS::mathProtoFuncRandom):
- (KJS::mathProtoFuncRound):
- (KJS::mathProtoFuncSin):
- (KJS::mathProtoFuncSqrt):
- (KJS::mathProtoFuncTan):
- * kjs/nodes.cpp:
- (KJS::Node::handleException):
- (KJS::NumberNode::evaluate):
- (KJS::StringNode::evaluate):
- (KJS::ArrayNode::evaluate):
- (KJS::PostIncResolveNode::evaluate):
- (KJS::PostIncLocalVarNode::evaluate):
- (KJS::PostDecResolveNode::evaluate):
- (KJS::PostDecLocalVarNode::evaluate):
- (KJS::PostDecLocalVarNode::inlineEvaluateToNumber):
- (KJS::PostIncBracketNode::evaluate):
- (KJS::PostDecBracketNode::evaluate):
- (KJS::PostIncDotNode::evaluate):
- (KJS::PostDecDotNode::evaluate):
- (KJS::typeStringForValue):
- (KJS::LocalVarTypeOfNode::evaluate):
- (KJS::TypeOfResolveNode::evaluate):
- (KJS::TypeOfValueNode::evaluate):
- (KJS::PreIncLocalVarNode::evaluate):
- (KJS::PreIncResolveNode::evaluate):
- (KJS::PreDecLocalVarNode::evaluate):
- (KJS::PreDecResolveNode::evaluate):
- (KJS::PreIncConstNode::evaluate):
- (KJS::PreDecConstNode::evaluate):
- (KJS::PostIncConstNode::evaluate):
- (KJS::PostDecConstNode::evaluate):
- (KJS::PreIncBracketNode::evaluate):
- (KJS::PreDecBracketNode::evaluate):
- (KJS::PreIncDotNode::evaluate):
- (KJS::PreDecDotNode::evaluate):
- (KJS::NegateNode::evaluate):
- (KJS::BitwiseNotNode::evaluate):
- (KJS::MultNode::evaluate):
- (KJS::DivNode::evaluate):
- (KJS::ModNode::evaluate):
- (KJS::addSlowCase):
- (KJS::add):
- (KJS::AddNumbersNode::evaluate):
- (KJS::AddStringsNode::evaluate):
- (KJS::AddStringLeftNode::evaluate):
- (KJS::AddStringRightNode::evaluate):
- (KJS::SubNode::evaluate):
- (KJS::LeftShiftNode::evaluate):
- (KJS::RightShiftNode::evaluate):
- (KJS::UnsignedRightShiftNode::evaluate):
- (KJS::BitXOrNode::evaluate):
- (KJS::BitOrNode::evaluate):
- (KJS::valueForReadModifyAssignment):
- (KJS::ForInNode::execute):
- (KJS::TryNode::execute):
- (KJS::FuncDeclNode::makeFunction):
- (KJS::FuncExprNode::evaluate):
- * kjs/number_object.cpp:
- (KJS::NumberPrototype::NumberPrototype):
- (KJS::numberProtoFuncToString):
- (KJS::numberProtoFuncToLocaleString):
- (KJS::numberProtoFuncToFixed):
- (KJS::numberProtoFuncToExponential):
- (KJS::numberProtoFuncToPrecision):
- (KJS::NumberObjectImp::NumberObjectImp):
- (KJS::NumberObjectImp::getValueProperty):
- (KJS::NumberObjectImp::construct):
- (KJS::NumberObjectImp::callAsFunction):
- * kjs/object.cpp:
- (KJS::JSObject::defineGetter):
- (KJS::JSObject::defineSetter):
- (KJS::JSObject::putDirect):
- (KJS::Error::create):
- * kjs/object.h:
- * kjs/object_object.cpp:
- (KJS::ObjectPrototype::ObjectPrototype):
- (KJS::objectProtoFuncToLocaleString):
- (KJS::objectProtoFuncToString):
- (KJS::ObjectObjectImp::ObjectObjectImp):
- (KJS::ObjectObjectImp::construct):
- * kjs/regexp_object.cpp:
- (KJS::RegExpPrototype::RegExpPrototype):
- (KJS::regExpProtoFuncToString):
- (KJS::RegExpImp::getValueProperty):
- (KJS::RegExpObjectImp::RegExpObjectImp):
- (KJS::RegExpObjectImp::arrayOfMatches):
- (KJS::RegExpObjectImp::getBackref):
- (KJS::RegExpObjectImp::getLastParen):
- (KJS::RegExpObjectImp::getLeftContext):
- (KJS::RegExpObjectImp::getRightContext):
- (KJS::RegExpObjectImp::getValueProperty):
- (KJS::RegExpObjectImp::createRegExpImp):
- * kjs/regexp_object.h:
- * kjs/string_object.cpp:
- (KJS::StringInstance::StringInstance):
- (KJS::StringInstance::lengthGetter):
- (KJS::StringInstance::indexGetter):
- (KJS::stringInstanceNumericPropertyGetter):
- (KJS::StringPrototype::StringPrototype):
- (KJS::replace):
- (KJS::stringProtoFuncCharAt):
- (KJS::stringProtoFuncCharCodeAt):
- (KJS::stringProtoFuncConcat):
- (KJS::stringProtoFuncIndexOf):
- (KJS::stringProtoFuncLastIndexOf):
- (KJS::stringProtoFuncMatch):
- (KJS::stringProtoFuncSearch):
- (KJS::stringProtoFuncReplace):
- (KJS::stringProtoFuncSlice):
- (KJS::stringProtoFuncSplit):
- (KJS::stringProtoFuncSubstr):
- (KJS::stringProtoFuncSubstring):
- (KJS::stringProtoFuncToLowerCase):
- (KJS::stringProtoFuncToUpperCase):
- (KJS::stringProtoFuncToLocaleLowerCase):
- (KJS::stringProtoFuncToLocaleUpperCase):
- (KJS::stringProtoFuncLocaleCompare):
- (KJS::stringProtoFuncBig):
- (KJS::stringProtoFuncSmall):
- (KJS::stringProtoFuncBlink):
- (KJS::stringProtoFuncBold):
- (KJS::stringProtoFuncFixed):
- (KJS::stringProtoFuncItalics):
- (KJS::stringProtoFuncStrike):
- (KJS::stringProtoFuncSub):
- (KJS::stringProtoFuncSup):
- (KJS::stringProtoFuncFontcolor):
- (KJS::stringProtoFuncFontsize):
- (KJS::stringProtoFuncAnchor):
- (KJS::stringProtoFuncLink):
- (KJS::StringObjectImp::StringObjectImp):
- (KJS::StringObjectImp::construct):
- (KJS::StringObjectImp::callAsFunction):
- (KJS::StringObjectFuncImp::StringObjectFuncImp):
- (KJS::StringObjectFuncImp::callAsFunction):
- * kjs/string_object.h:
- (KJS::StringInstanceThatMasqueradesAsUndefined::StringInstanceThatMasqueradesAsUndefined):
- * kjs/testkjs.cpp:
- (GlobalObject::GlobalObject):
- (functionGC):
- (functionRun):
- (functionReadline):
- (kjsmain):
- * kjs/ustring.h:
- * kjs/value.cpp:
- (KJS::JSCell::operator new):
- (KJS::jsString):
- (KJS::jsOwnedString):
- (KJS::jsNumberCell):
- * kjs/value.h:
- (KJS::jsNaN):
- (KJS::jsNumber):
- (KJS::jsNumberFromAnd):
- (KJS::JSCell::marked):
- (KJS::JSCell::mark):
- (KJS::JSValue::toJSNumber):
- Removed collectOnMainThreadOnly, as this is the only way to collect now. Replaced calls to
- static Collector methods with calls to per-thread Heap ones.
-
-2008-05-02 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- - Mac build fix
-
- * wtf/StrHash.h: Added header guards and removed #include "config.h".
-
-2008-05-01 Ada Chan <adachan@apple.com>
-
- #include <wtf/StrHash.h> in identifier.cpp.
-
- Reviewed by Maciej.
-
- * kjs/identifier.cpp:
-
-2008-05-01 Steve Falkenburg <sfalken@apple.com>
-
- Build fix.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
-
-2008-05-01 Sam Weinig <sam@webkit.org>
-
- Fix build.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2008-05-01 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin.
-
- <rdar://problem/5770054> JavaScript profiler (10928)
- - Fix "sample" output so that it can be imported into Instruments
- - Also keep track of number of times a function is profiled.
-
- * JavaScriptCore.xcodeproj/project.pbxproj: Add StrHash.h which needed
- to be pulled out of identifier.cpp so that it could be used by the
- profiler and identifiers.
- * kjs/identifier.cpp: Ditto.
- * profiler/FunctionCallProfile.cpp:
- (KJS::FunctionCallProfile::printDataInspectorStyle): Inspector style
- printing should show microseconds.
- (KJS::FunctionCallProfile::printDataSampleStyle): Sample style printing
- now counts the number of times a function is in the stack tree and does
- not print microseconds since that does not make sense for a sampler.
- * profiler/FunctionCallProfile.h: Keep track of number of times a
- function is profiled.
- (KJS::FunctionCallProfile::numberOfCalls):
- * profiler/Profiler.cpp:
- (KJS::functionNameCountPairComparator): Comparator for sort function in
- printDataSampleStyle.
- (KJS::Profiler::printDataSampleStyle): Print the number of times that a
- function is listed in the stack tree in order of most times listed.
- * wtf/HashCountedSet.h: Added copyToVector since it didn't exist and is
- a more standard way to copy a HashSet to a Vector. I added on variant
- that takes a pair as the Vector's type and so the HashCountedSet simply
- fills in that pair with its internal pair, and another variant that
- takes a Vector of the type of the HashCountedSet and only fills in the
- Vector with the first element of the pair.
- (WTF::copyToVector):
- * wtf/StrHash.h: Added.
- (WTF::):
-
-2008-04-29 David Kilzer <ddkilzer@apple.com>
-
- BUILD FIX for ENABLE(DASHBOARD_SUPPORT)
-
- * wtf/Platform.h: Defined ENABLE(DASHBOARD_SUPPORT) to 1 only for
- PLATFORM(MAC) and PLATFORM(WIN). Changed default to 0 for other
- ports.
-
-2008-04-29 Greg Bolsinga <bolsinga@apple.com>
-
- Reviewed by Darin.
-
- Wrapped Dashboard code with ENABLE(DASHBOARD_SUPPORT)
-
- * wtf/Platform.h:
-
-2008-04-29 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Geoff.
-
- -<rdar://problem/5770054> JavaScript profiler (10928)
- -Keep call count.
-
- * profiler/FunctionCallProfile.cpp:
- (KJS::FunctionCallProfile::FunctionCallProfile):
- (KJS::FunctionCallProfile::didExecute): Implements call count and fixed a bug where a stackIndex
- of 0 was causing the assert to be hit.
- (KJS::FunctionCallProfile::stopProfiling):
- (KJS::FunctionCallProfile::endAndRecordCall):
- * profiler/FunctionCallProfile.h:
-
-2008-04-29 Simon Hausmann <hausmann@webkit.org>
-
- Qt/Windows build fix. The externally declared hash tables are actually
- declared const and the const is mangled in the symbol name, so when
- importing they also need to be marked const.
-
- When compiling without MULTIPLE_THREADS use a const HashTable&
- instead of a HashTable& in ThreadClassInfoHashTables to avoid
- initializing the latter with a const reference.
-
- * kjs/JSGlobalObject.cpp:
-
-2008-04-28 Alexey Proskuryakov <ap@webkit.org>
-
- Windows build fix.
-
- * kjs/ExecState.h: For whatever reason, MSVC couldn't generate a default constructor for
- a struct that had a "const List" member. Removing the const qulifier makes the problem go away.
-
-2008-04-28 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Fix run-webkit-tests --threading
- and provisionally fix <https://bugs.webkit.org/show_bug.cgi?id=18661>
- Proxy server issue in Sunday's Nightly
-
- Changed ClassInfo objects for built-in objects to hold a getter function returning
- a per-thread instance. This makes it safe to share these ClassInfo objects between threads -
- and these are the only ones that need to be shared.
-
- * kjs/lexer.cpp:
- (KJS::Lexer::Lexer):
- (KJS::Lexer::~Lexer):
- * kjs/lexer.h:
- Made mainTable a member of Lexer, so that it no longer needs to be shared between threads.
-
- * kjs/object.cpp:
- (KJS::JSObject::deleteProperty):
- (KJS::JSObject::findPropertyHashEntry):
- (KJS::JSObject::propertyIsEnumerable):
- (KJS::JSObject::getPropertyAttributes):
- (KJS::JSObject::getPropertyNames):
- * kjs/object.h:
- (KJS::ClassInfo::propHashTable):
- Added a new classPropHashTableGetterFunction field to ClassInfo. If it is non-zero, the
- static table is not used.
-
- * kjs/JSGlobalObject.cpp:
- (KJS::ThreadClassInfoHashTables::ThreadClassInfoHashTables): This new class holds per-thread
- HashTables for built-in classes. The old static structs are copied to create per-thread
- instances.
- (KJS::JSGlobalObject::threadClassInfoHashTables): An accessor/initializer for the above.
- (KJS::JSGlobalObject::init): Copy per-thread data into a single structure for faster access.
- Also, construct globalExec.
- (KJS::JSGlobalObject::reset): Adapted for globalExec now being an OwnPtr.
- (KJS::JSGlobalObject::mark): Ditto.
- (KJS::JSGlobalObject::globalExec): Ditto.
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): Made JSGlobalObject::JSGlobalObjectData::globalExec an OwnPtr, so that it can
- be initialized from JSGlobalObject::init() after them. Otherwise, ExecState constructor was
- trying to access half-initialized JSGlobalObject to make its own copy of these table
- references, and failed.
- (KJS::JSGlobalObject::JSGlobalObject): Pass "this" value to init() to create globalExec.
- (KJS::JSGlobalObject::perThreadData): An accessor for per-thread data.
-
- * kjs/ExecState.cpp:
- (KJS::ExecState::ExecState):
- * kjs/ExecState.h:
- (KJS::ExecState::propertyNames):
- (KJS::ExecState::emptyList):
- (KJS::ExecState::arrayTable):
- (KJS::ExecState::dateTable):
- (KJS::ExecState::mathTable):
- (KJS::ExecState::numberTable):
- (KJS::ExecState::RegExpImpTable):
- (KJS::ExecState::RegExpObjectImpTable):
- (KJS::ExecState::stringTable):
- * kjs/ExecStateInlines.h:
- (KJS::ExecState::ExecState):
- Each ExecState holds its own reference to per-thread data, for even faster access. Moved
- m_emptyList and m_propertyNames to the same structure, making ExecState faster to construct
- and take less space on the stack.
-
- * kjs/InitializeThreading.cpp: (KJS::initializeThreading): Initialize thread-static data
- added to JSGlobalObject.
-
- * API/JSCallbackConstructor.cpp:
- * API/JSCallbackFunction.cpp:
- * API/JSCallbackObject.cpp:
- * JavaScriptCore.exp:
- * kjs/JSVariableObject.cpp:
- (KJS::JSVariableObject::getPropertyAttributes):
- * kjs/JSVariableObject.h:
- * kjs/array_instance.cpp:
- * kjs/array_object.cpp:
- (KJS::ArrayPrototype::getOwnPropertySlot):
- * kjs/bool_object.cpp:
- * kjs/create_hash_table:
- * kjs/date_object.cpp:
- (KJS::DatePrototype::getOwnPropertySlot):
- (KJS::DateObjectImp::DateObjectImp):
- * kjs/error_object.cpp:
- * kjs/function.cpp:
- * kjs/function_object.cpp:
- (KJS::FunctionPrototype::FunctionPrototype):
- * kjs/internal.cpp:
- * kjs/lookup.h:
- * kjs/math_object.cpp:
- (KJS::MathObjectImp::getOwnPropertySlot):
- * kjs/number_object.cpp:
- (KJS::NumberObjectImp::getOwnPropertySlot):
- * kjs/object_object.cpp:
- (KJS::ObjectPrototype::ObjectPrototype):
- * kjs/regexp_object.cpp:
- (KJS::RegExpPrototype::RegExpPrototype):
- (KJS::RegExpImp::getOwnPropertySlot):
- (KJS::RegExpImp::put):
- (KJS::RegExpObjectImp::getOwnPropertySlot):
- (KJS::RegExpObjectImp::put):
- * kjs/string_object.cpp:
- (KJS::StringPrototype::getOwnPropertySlot):
- Adjust for the above changes.
-
-2008-04-28 Darin Adler <darin@apple.com>
-
- Reviewed by Adam.
-
- - make sure RefPtr's default hash doesn't ref/deref when computing the hash
- - remove remnants of the hash table storage type optimization
-
- * wtf/HashFunctions.h: Used "using" to get the hash and equal functions
- from PtrHash<P*> into PtrHash<RefPtr<P>>.
-
- * wtf/HashMap.h: Replaced uses of PairBaseHashTraits with PairHashTraits.
- Eliminated storage-related typedefs. Removed constructor, destructor,
- copy constructor, and destructor since the compiler-generated ones are
- fine. Removed refAll and derefAll. Took out unnnecessary typecasts.
- Removed use of RefCounter.
-
- * wtf/HashSet.h: Eliminated storage-related typedefs. Removed constructor,
- destructor, copy constructor, and destructor since the compiler-generated
- ones are fine. Removed refAll and derefAll. Removed unneeded template
- arguents from HashSetTranslatorAdapter. Eliminated unneeded HashSetTranslator
- template.
-
- * wtf/HashTable.h: Tweaked formatting. Removed NeedsRef, RefCounterBase,
- RefCounter, HashTableRefCounterBase, HashTableRefCounter, and Assigner
- class templates.
-
- * wtf/HashTraits.h: Removed StorageTraits, needsRef, PairBaseHashTraits,
- and HashKeyStorageTraits.
-
- * wtf/RefPtrHashMap.h: Made all the same fixes as in HashMap. Also made
- the corresponding changes to RefPtrHashMapRawKeyTranslator.
-
-2008-04-28 Darin Adler <darin@apple.com>
-
- Reviewed by Mitz.
-
- - fix assertion hit every time you view www.apple.com
-
- * kjs/PropertyNameArray.cpp:
- (KJS::PropertyNameArray::add): Changed assertion to allow null and empty strings.
- Now to find out why we have a property named "" and if that's a bug!
-
-2008-04-27 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fix crash inside PtrHash::hash when loading a page.
-
- * wtf/HashFunctions.h: Explicitly use the superclass implementation of hash to avoid infinite recursion.
-
-2008-04-27 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - fix <rdar://problem/5657459> REGRESSION: JavaScriptCore no longer builds with
- GCC 4.2 due to pointer aliasing warnings
-
- Fix this by removing the HashTable optimizations that allowed us to share a back end
- implementation between hash tables with integers, pointers, RefPtr, and String objects
- as keys. The way it worked was incompatible with strict aliasing.
-
- This increases code size. On Mac OS X we'll have to regenerate .order files to avoid
- slowing down Safari startup times.
-
- This creates a slight slowdown in SunSpider, mitigated by the following four speedups:
-
- - speed up array put slightly by moving a branch (was already done for get)
-
- - speed up symbol table access by adding a function named inlineGet to HashMap
- and using that in symbolTableGet/Put
-
- - speed up PropertyNameArray creation by reducing the amount of reference count
- churn and uniqueness checking when adding names and not doing any allocation at
- all when building small arrays
-
- - speed up conversion of strings to floating point numbers by eliminating the
- malloc/free of the buffer for the ASCII copy of the string; a way to make
- things even faster would be to change strtod to take a UTF-16 string
-
- Note that there is considerable unused complexity now in HashSet/Map/Table to support
- "storage types", which is no longer used. Will do in a separate patch.
-
- * API/JSCallbackObjectFunctions.h:
- (KJS::JSCallbackObject<Base>::getPropertyNames): Removed explicit cast to Identifier to
- take advantage of the new PropertyNameArray::add overload and avoid reference count churn.
- * API/JSObjectRef.cpp:
- (JSPropertyNameAccumulatorAddName): Ditto.
- * JavaScriptCore.exp: Updated PropertyNameArray::add entry point name.
-
- * kjs/JSVariableObject.cpp: Removed now-unneeded IdentifierRepHashTraits::nullRepPtr
- definition (see below).
- (KJS::JSVariableObject::getPropertyNames): Removed explicit cast to Identifier.
-
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::symbolTableGet): Use inlineGet for speed. Also changed to do
- early exit instead of nesting the body inside an if.
- (KJS::JSVariableObject::symbolTablePut): Ditto.
-
- * kjs/PropertyNameArray.cpp:
- (KJS::PropertyNameArray::add): Changed implementation to take a raw pointer instead of
- a reference to an identifier. Do uniqueness checking by searching the vector when the
- vector is short, only building the set once the vector is large enough.
-
- * kjs/PropertyNameArray.h: Added an overload of add for a raw pointer, and made the old
- add function call that one. Added an addKnownUnique function for use when the new
- name is known to be different from any other in the array. Changed the vector to have
- an inline capacity of 20.
-
- * kjs/SymbolTable.h: Changed IdentifierRepHash to inherit from the default hash for
- a RefPtr so we don't have to define so much. Added an overload of the hash function for
- a raw pointer as required by the new RefPtrHashMap. Got rid of the now-unneeded
- IdentifierRepHashTraits -- the default traits now work fine. Added a definition of
- empthValueIsZero to SymbolTableIndexHashTraits; not having it was incorrect, but harmless.
-
- * kjs/array_instance.cpp:
- (KJS::ArrayInstance::put): Move the maxArrayIndex check inside the branch that checks
- the index against the length, as done in the get function.
-
- * kjs/function.cpp:
- (KJS::globalFuncKJSPrint): Changed to use the new getCString instead of cstring.
-
- * kjs/internal.cpp: Removed printInfo debugging function, a client of cstring.
- If we need a debugging function we can easily make a better one and we haven't
- used this one in a long time.
- * kjs/internal.h: Ditto.
-
- * kjs/object.cpp:
- (KJS::JSObject::getPropertyNames): Removed explicit cast to Identifier.
- * kjs/property_map.cpp:
- (KJS::PropertyMap::getEnumerablePropertyNames): Ditto. Also added a special case for
- the case where the propertyNames array is empty -- in that case we know we're adding
- a set of names that are non-overlapping so we can use addKnownUnique.
- * kjs/ustring.cpp:
- (KJS::UString::getCString): Replaces cstring. Puts the C string into a CStringBuffer,
- which is a char Vector with an inline capacity. Also returns a boolean to indicate if
- the converion was lossy, which eliminates the need for a separate is8Bit call.
- (KJS::UString::toDouble): Changed to call getCString instead of cstring.
- * kjs/ustring.h: Ditto.
-
- * wtf/HashFunctions.h: Overload the hash and equal functions for RefPtr's default
- hash to take raw pointers. This works with the changes to RefPtrHashMap to avoid
- introducing refcount churn.
-
- * wtf/HashMap.h: Removed special code to convert the deleted value to the empty value
- when writing a new value into the map. This is now handled elsewhere.
- (WTF::HashMap::get): Removed code that checks for an empty hash table before calling
- HashTable::lookup; it's slightly more efficient to do this check inside lookup.
-
- * wtf/HashTable.h:
- (WTF::HashTable::isDeletedBucket): Changed to use isDeletedValue instead of using
- deletedValue and the equality operator.
- (WTF::HashTable::deleteBucket): Changed to use constructDeletedValue instead of
- using deletedValue and the assignment operator.
- (WTF::HashTable::checkKey): Added. Factors out the check for values that are empty
- or deleted keys that's used in various functions below.
- (WTF::HashTable::lookup): Changed to use checkKey, check for a 0 table, and also
- made public for use by RefPtrHashMap.
- (WTF::HashTable::lookupForWriting): Changed to use checkKey.
- (WTF::HashTable::fullLookupForWriting): Changed to use checkKey.
- (WTF::HashTable::add): Changed to use checkKey, and call initializeBucket on a
- deleted bucket before putting a new entry into it.
- (WTF::HashTable::addPassingHashCode): Ditto.
- (WTF::HashTable::deallocateTable): Check isDeletedBucket before calling ~ValueType.
-
- * wtf/HashTraits.h: Got ridd of all the HashTraits specialization for the integer
- types, since GeneicHashTraitsBase already deals with integers separately. Put the
- deleted value support into GenericHashTraitsBase. Changed FloatHashTraits to
- inherit from GenericHashTraits, and define construct/isDeletedValue rather than
- deletedValue. Removed the ref and deref functions from RefPtr's HashTraits, and
- defined construct/isDeletedValue. Eliminated DeletedValueAssigner. Changed
- PairHashTraits to define construct/isDeletedValue, and also merged
- PairBaseHashTraits in with PairHashTraits. Got rid of all specialization of
- HashKeyStorageTraits. We'll remove that, and the needsRef data member, later.
-
- * wtf/RefPtr.h: Added HashTableDeletedValueType, an enum type with a single value,
- HashTableDeletedValue. Used that type to make a new constructor to construct
- deleted values and also added an isHashTableDeletedValue function.
-
- * wtf/RefPtrHashMap.h: Added RefPtrHashMapRawKeyTranslator and used it to implement
- the raw pointer functions. This is a way to continue to avoid refcount thrash. We
- can't use the old way because it depended on the underlying map using a non-RefPtr
- type.
- (WTF::HashMap::find): Use find with RefPtrHashMapRawKeyTranslator.
- (WTF::HashMap::contains): Use contains with RefPtrHashMapRawKeyTranslator.
- (WTF::HashMap::inlineAdd): Use add with RefPtrHashMapRawKeyTranslator.
- (WTF::HashMap::get): Removed code that checks for an empty hash table before calling
- HashTable::lookup; it's slightly more efficient to do this check inside lookup.
- (WTF::HashMap::inlineGet): Added. Just like get, but marked inline for use in the
- symbol table code.
-
-2008-04-25 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Mark Rowe.
-
- Remove SavedBuiltins and SavedProperties classes and the methods used to
- save data to them. The CachedPage now stores a the JSGlobalObject in full.
-
- * JavaScriptCore.exp:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/JSGlobalObject.cpp:
- * kjs/JSGlobalObject.h:
- * kjs/JSVariableObject.cpp:
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::localStorage):
- * kjs/SavedBuiltins.h: Removed.
- * kjs/object.h:
- * kjs/property_map.cpp:
- * kjs/property_map.h:
-
-2008-04-25 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Sam Weinig.
-
- Add some content to an empty ICU header file to prevent verification errors.
-
- * icu/unicode/utf_old.h:
-
-2008-04-25 David Kilzer <ddkilzer@apple.com>
-
- <rdar://problem/5819422> REGRESSION: Wrong line number passed to -willLeaveCallFrame
-
- Patch by George Dicker and Michael Kahl. Reviewed by Darin.
-
- When -[NSObject(WebScriptDebugDelegate) webView:willLeaveCallFrame:sourceId:line:forWebFrame:]
- is invoked, the first line number of the function is returned instead of the last
- line number. This regressed in r28458.
-
- * kjs/nodes.cpp:
- (KJS::FunctionBodyNodeWithDebuggerHooks::execute): Pass lastLine() instead of lineNo()
- when calling Debugger::returnEvent().
-
-2008-04-25 Darin Adler <darin@apple.com>
-
- Done with Stephanie Lewis.
-
- * JavaScriptCore.xcodeproj/project.pbxproj: Prepare for compilation with gcc 4.2 by
- adding -fno-strict-aliasing to CollatorICU.cpp.
-
-2008-04-24 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- Add a #define to easily enable collecting on every allocation to aid
- debugging GC bugs.
-
- * kjs/collector.cpp:
- (KJS::Collector::heapAllocate):
-
-2008-04-24 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam and Sam.
-
- -<rdar://problem/5770054> JavaScript profiler (10928)
- -Only profile the page group that starts profiling to avoid profiling
- tools that shouldn't be profiled unless explicitly requested to.
-
- * JavaScriptCore.exp: Export new signature.
- * kjs/JSGlobalObject.cpp: Add unique identifiers to the JSGlobalObject.
- (KJS::JSGlobalObject::init):
- * kjs/JSGlobalObject.h: Ditto.
- (KJS::JSGlobalObject::setPageGroupIdentifier):
- (KJS::JSGlobalObject::pageGroupIdentifier):
- * profiler/Profiler.cpp: Check the identifier of the page group of the
- lexical global exec state and only profile if it matches the given page
- group identifier.
- (KJS::Profiler::startProfiling):
- (KJS::Profiler::willExecute):
- (KJS::Profiler::didExecute):
- * profiler/Profiler.h: Ditto.
- (KJS::Profiler::Profiler):
-
-2008-04-24 Julien Chaffraix <jchaffraix@webkit.org>
-
- Reviewed by Simon.
-
- Bug 15940: Implement threading API for Qt
- https://bugs.webkit.org/show_bug.cgi?id=15940
-
- Original patch by Justin Haygood, tweaked by me.
-
- * JavaScriptCore.pri:
- * wtf/ThreadingQt.cpp: Added.
- (WTF::threadMapMutex):
- (WTF::threadMap):
- (WTF::establishIdentifierForThread):
- (WTF::clearThreadForIdentifier):
- (WTF::threadForIdentifier):
- (WTF::initializeThreading):
- (WTF::ThreadPrivate::getReturnValue):
- (WTF::ThreadPrivate::ThreadPrivate):
- (WTF::ThreadPrivate::run):
- (WTF::createThread):
- (WTF::waitForThreadCompletion): return !res to return
- 0 on success (to match the pthreads implementation).
- (WTF::detachThread):
- (WTF::identifierByQthreadHandle):
- (WTF::currentThread):
- (WTF::Mutex::Mutex):
- (WTF::Mutex::~Mutex):
- (WTF::Mutex::lock):
- (WTF::Mutex::tryLock):
- (WTF::Mutex::unlock):
- (WTF::ThreadCondition::ThreadCondition):
- (WTF::ThreadCondition::~ThreadCondition):
- (WTF::ThreadCondition::wait):
- (WTF::ThreadCondition::timedWait):
- (WTF::ThreadCondition::signal):
-
-2008-04-22 Darin Adler <darin@apple.com>
-
- Reviewed by Anders.
-
- - simplify use of HashTraits to prepare for some upcoming hash table changes
-
- * kjs/SymbolTable.h: Made SymbolTableIndexHashTraits derive from HashTraits<size_t>
- and specialize only the empty value.
-
-2008-04-23 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Simon.
-
- Removed the #define for USE_SYSTEM_MALLOC that we set in WebKit.pri
- already.
-
- * wtf/Platform.h:
-
-2008-04-21 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- <rdar://problem/5770054> JavaScript profiler (10928)
- - When stop profiling is called we need to stop the timers on all the
- functions that are still running.
-
- * profiler/FunctionCallProfile.cpp:
- (KJS::FunctionCallProfile::didExecute):
- (KJS::FunctionCallProfile::stopProfiling):
- * profiler/FunctionCallProfile.h:
- * profiler/Profiler.cpp:
- (KJS::Profiler::stopProfiling):
-
-2008-04-21 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Move collector main thread initialization from WebKit/win to KJS::initializeThreading.
-
- * kjs/InitializeThreading.cpp:
- (KJS::initializeThreading):
-
-2008-04-21 Adam Roben <aroben@apple.com>
-
- MSVC build fix
-
- Reviewed by Alexey Proskuryakov.
-
- * kjs/ustring.h:
- (KJS::UString::cost): Disable a warning about assigning a 32-bit
- size_t into a 31-bit size_t.
-
-2008-04-21 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Lars.
-
- Made convertValueToQVariant accessible from within WebKit/qt/Api
-
- * bindings/qt/qt_runtime.h:
-
-2008-04-21 Holger Hans Peter Freyther <holger.freyther@trolltech.com>
-
- Reviewed by Simon.
-
- Build fix for Qt 4.3
-
- * When building WebCore/internal make sure the QT_[BEGIN,END]_NAMESPACE is
- always defined. Do this by adding defines to the compiler line
- * For users of our API this is not feasible. Every public header file should
- include qwebkitglobal.h. Define the QT_BEGIN_NAMESPACE and QT_END_NAMESPACE
- when we are building everything < 4.4.0 and don't have them defined.
-
- * kjs/testkjs.pro:
-
-2008-04-19 Matt Lilek <webkit@mattlilek.com>
-
- Not reviewed, Windows build fix - copy the profiler headers in all
- configurations, not just Debug_Internal.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
-
-2008-04-19 Mike Hommey <glandium@debian.org>
-
- Reviewed by Alp Toker.
-
- Don't build testkjs with rpath.
-
- * GNUmakefile.am:
-
-2008-04-18 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fixes. Rename LocalStorage.h to LocalStorageEntry.h
- to avoid header detection issues between WebCore/storage/LocalStorage.h
- and it, and add $(PROFILER_SOURCES) to the wx JSCore build.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * jscore.bkl:
- * kjs/ExecState.h:
- * kjs/JSVariableObject.h:
- * kjs/LocalStorage.h: Removed.
- * kjs/LocalStorageEntry.h: Copied from JavaScriptCore/kjs/LocalStorage.h.
- * kjs/function.h:
-
-2008-04-18 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=16620
- [GTK] Autotools make dist and make check support
-
- Cleanups.
-
- * GNUmakefile.am:
-
-2008-04-18 Jon Honeycutt <jhoneycutt@apple.com>
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Windows
- build fix.
-
-2008-04-11 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Antti Koivisto.
-
- Silence GCC 4.3 warnings by removing extraneous consts.
-
- * kjs/ustring.cpp:
- * kjs/ustring.h:
-
-2008-04-18 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam.
-
- -<rdar://problem/5770054> JavaScript profiler (10928)
- - Use Deque instead of Vector since the profiler uses prepend a lot
- and deque is faster at that.
-
- * profiler/FunctionCallProfile.h:
- (KJS::FunctionCallProfile::milliSecs): Corrected the name to match
- its output.
- * wtf/Deque.h:
- (WTF::deleteAllValues):
-
-2008-04-18 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam and Adam.
-
- -<rdar://problem/5770054> JavaScript profiler (10928)
- - Cleaned up the header file and made some functions static, added
- a new, sane, printing function, and fixed a few minor bugs.
-
- * JavaScriptCore.exp:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * profiler/FunctionCallProfile.cpp:
- (KJS::FunctionCallProfile::didExecute): Removed assertion that time is
- > 0 because at ms resolution that may not be true and only cross-
- platform way to get time differences is in ms.
- (KJS::FunctionCallProfile::printDataInspectorStyle): Added a new
- printing function for dumping data in a sane style.
- (KJS::FunctionCallProfile::printDataSampleStyle): Fixed a bug where we
- displayed too much precision when printing our floats. Also added logic
- to make sure we don't display 0 because that doesn't make sense for a
- sampling profile.
- * profiler/FunctionCallProfile.h:
- * profiler/Profiler.cpp: Moved functions that could be static into the
- implementation, and chaned the ASSERTs to early returns. I did this
- because console.profile() is a JS function and so was being profiled
- but asserting because the profiler had not been started! In the future
- I would like to put the ASSERTs back and not profile the calls to
- console.profile() and console.profileEnd().
- (KJS::Profiler::willExecute):
- (KJS::Profiler::didExecute):
- (KJS::getStackNames): Fixed a bug where the wrong ExecState was being
- used.
- (KJS::getFunctionName):
- (KJS::Profiler::printDataInspectorStyle):
- * profiler/Profiler.h:
-
-2008-04-18 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Fix leaks during plugin tests (which actually excercise background JS), and potential
- PAC brokenness that was not reported, but very likely.
-
- The leaks shadowed a bigger problem with Identifier destruction. Identifier::remove involves
- an IdentifierTable lookup, which is now a per-thread instance. Since garbage collection can
- currently happen on a different thread than allocation, a wrong table was used.
-
- No measurable change on SunSpider total, ~1% variation on individual tests.
-
- * kjs/ustring.cpp:
- (KJS::UString::Rep::create):
- (KJS::UString::Rep::destroy):
- * kjs/ustring.h:
- Replaced isIdentifier with a pointer to IdentifierTable, so that destruction can be done
- correctly. Took one bit from reportedCost, to avoid making UString::Rep larger (performance
- effect was measurable on SunSpider).
-
- * kjs/identifier.cpp:
- (KJS::IdentifierTable::IdentifierTable):
- (KJS::IdentifierTable::~IdentifierTable):
- (KJS::IdentifierTable::add):
- (KJS::IdentifierTable::remove):
- Make IdentifierTable a real class. Its destructor needs to zero out outstanding references,
- because some identifiers may briefly outlive it during thread destruction, and we don't want
- them to use their stale pointers.
-
- (KJS::LiteralIdentifierTable):
- (KJS::Identifier::add):
- Now that LiteralIdentifierTable is per-thread and can be destroyed not just during application
- shutdown, it is not appropriate to simply bump refcount for strings that get there; changed
- the table to hold RefPtrs.
-
- (KJS::CStringTranslator::translate):
- (KJS::UCharBufferTranslator::translate):
- (KJS::Identifier::addSlowCase):
- (KJS::Identifier::remove):
- * kjs/identifier.h:
- (KJS::Identifier::add):
- Use and update UString::Rep::identifierTable as appropriate. Updating it is now done in
- IdentifierTable::add, not in translators.
-
-2008-04-18 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Get rid of static compareWithCompareFunctionArguments in array_instance.cpp.
-
- No change on SunSpider, CelticKane or iBench JavaScript. It is probable that in some cases,
- merge sort is still faster, but more investigation is needed to determine a new cutoff.
- Or possibly, it would be better to do what FIXME says (change to tree sort).
-
- Also, made arguments a local variable - not sure why it was a member of
- CompareWithCompareFunctionArguments.
-
- * kjs/array_instance.cpp:
- (KJS::CompareWithCompareFunctionArguments::CompareWithCompareFunctionArguments):
- (KJS::CompareWithCompareFunctionArguments::operator()):
- (KJS::ArrayInstance::sort):
-
-2008-04-18 Simon Hausmann <hausmann@webkit.org>
-
- Build fix for gcc 4.3. Include stdio.h for printf.
-
- * profiler/FunctionCallProfile.cpp:
- * profiler/Profiler.cpp:
-
-2008-04-17 Jon Honeycutt <jhoneycutt@apple.com>
-
- Reviewed by mrowe.
-
- * wtf/Platform.h: Add HAVE_ACCESSIBILITY to Platform.h.
-
-2008-04-17 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Maciej.
-
- Thread static data destructors are not guaranteed to be called in any particular order;
- turn ThreadSpecific into a phoenix-style singleton to avoid accessing freed memory when
- deleted objects are interdependent (e.g. CommonIdentifiers and internal identifier tables).
-
- No change on SunSpider.
-
- * wtf/ThreadSpecific.h:
- (WTF::ThreadSpecific::Data::Data):
- (WTF::::get):
- (WTF::::set):
- (WTF::::destroy):
-
-2008-04-15 Srinivas Rao. M Hamse <msrinirao@gmail.com>
-
- Reviewed by Maciej Stachowiak.
-
- - gcc 3.x build fix
-
- * kjs/nodes.h: CallerType definition made public for gcc 3.x compilation
-
-2008-04-16 Brady Eidson <beidson@apple.com>
-
- Reviewed by Sam Weinig
-
- Change ThreadSafeShared to act like RefCounted by starting out with a single ref by default
-
- * wtf/Threading.h:
- (WTF::ThreadSafeShared::ThreadSafeShared):
-
-2008-04-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- - To keep the behavior of the WebKit and JavaScriptCore API's the same,
- we need to hide the fact that the global object and the window object
- are no longer the same thing, and the the global object now changes on
- navigations. To do this, only the wrapper should ever be exposed. This
- fixes the two remaining spots where the internal global object is exposed,
- the windowScriptObject returned from [WebFrame windowObject] and the object
- return by calling JSContextGetGlobalObject on [WebFrame globalContext].
-
- * API/JSContextRef.cpp:
- (JSContextGetGlobalObject):
- This is a bit of a hack, this returns the "this" representation of the globalObject
- which will be the WrapperWindow for WebCore and the globalObject for non-WebCore.
-
- * API/JSObjectRef.cpp:
- (JSObjectSetProperty):
- Call the new putWithAttributes method instead of relying on lower-level calls.
- This is needed so that the window wrapper can forward the calls.
-
- * JavaScriptCore.exp:
- * kjs/Activation.h:
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::putWithAttributes):
- * kjs/JSGlobalObject.h:
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::symbolTablePutWithAttributes):
- * kjs/function.cpp:
- (KJS::ActivationImp::putWithAttributes):
- * kjs/nodes.cpp:
- (KJS::ConstDeclNode::handleSlowCase):
- (KJS::ConstDeclNode::evaluateSingle):
- (KJS::EvalNode::processDeclarations):
- * kjs/object.cpp:
- (KJS::JSObject::putWithAttributes):
- * kjs/object.h:
- Rename initializeVariable to putWithAttributes and move it down to JSObject so it
- can be used for JSObjectSetProperty.
-
-2008-04-16 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam and Geoff.
-
- -<rdar://problem/5770054> JavaScript profiler (10928)
- Inital profiler prototype
-
- * GNUmakefile.am: Added new files to project
- * JavaScriptCore.pri: Ditto
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto
- * JavaScriptCore.xcodeproj/project.pbxproj: Ditto
- * JavaScriptCoreSources.bkl: Ditto
- * kjs/config.h: Put compiling flag in here.
- * kjs/function.cpp: Instrument calling the function eval().
- (KJS::eval):
- * kjs/interpreter.cpp: Instrument evaluating global scopes.
- (KJS::Interpreter::evaluate):
- * kjs/object.cpp: Instrument JS function calls.
- (KJS::JSObject::call):
- * profiler: Added.
- * profiler/FunctionCallProfile.cpp: Added.
- (KJS::FunctionCallProfile::FunctionCallProfile):
- (KJS::FunctionCallProfile::~FunctionCallProfile):
- (KJS::FunctionCallProfile::willExecute): Call right before the JS function or executing context is executed to start the profiler's timer.
- (KJS::FunctionCallProfile::didExecute): Call right after the JS function or executing context is executed to stop the profiler's timer.
- (KJS::FunctionCallProfile::addChild): Add a child to the current FunctionCallProfile if it isn't already a child of the current FunctionalCallProfile.
- (KJS::FunctionCallProfile::findChild): Return the child that matches the given name if there is one.
- (KJS::FunctionCallProfile::printDataSampleStyle): Print the current profiled information in a format that matches sample's output.
- * profiler/FunctionCallProfile.h: Added.
- (KJS::FunctionCallProfile::FunctionCallProfile):
- (KJS::FunctionCallProfile::~FunctionCallProfile):
- (KJS::FunctionCallProfile::functionName):
- (KJS::FunctionCallProfile::microSecs):
- * profiler/Profiler.cpp: Added.
- (KJS::Profiler::profiler):
- (KJS::Profiler::sharedProfiler): Return global singleton (may change due to multi-threading concerns)
- (KJS::Profiler::startProfiling): Don't start collecting profiling information until the user starts the profiler. Also don't clear old prfiled data until the profiler is restarted.
- (KJS::Profiler::stopProfiling): Stop collecting profile information.
- (KJS::Profiler::willExecute): Same as above.
- (KJS::Profiler::didExecute): Same as above.
- (KJS::Profiler::insertStackNamesInTree): Follow the stack of the given names and if a sub-stack is not in the current tree, add it.
- (KJS::Profiler::getStackNames): Get the names from the different passed in parameters and order them as a stack.
- (KJS::Profiler::getFunctionName): Get the function name from the given parameter.
- (KJS::Profiler::printDataSampleStyle): Print the current profiled information in a format that matches sample's output.
- (KJS::Profiler::debugLog):
- * profiler/Profiler.h: Added.
- (KJS::Profiler::Profiler):
-
-2008-04-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by Darin Adler.
-
- - Remove kjs_ prefix from strtod, dtoa, and freedtoa and put it
- in the KJS namespace.
- - Make strtod, dtoa, and freedtoa c++ functions instead of extern "C".
- - Remove mode switching from dtoa. ~2% improvement on test 26.
- - Removes all unnecessary #defines from dtoa code.
-
- * JavaScriptCore.exp:
- * kjs/dtoa.cpp:
- (KJS::ulp):
- (KJS::b2d):
- (KJS::d2b):
- (KJS::ratio):
- (KJS::strtod):
- (KJS::freedtoa):
- (KJS::dtoa):
- * kjs/dtoa.h:
- * kjs/function.cpp:
- (KJS::parseInt):
- * kjs/lexer.cpp:
- (KJS::Lexer::lex):
- * kjs/number_object.cpp:
- (KJS::integer_part_noexp):
- (KJS::numberProtoFuncToExponential):
- * kjs/ustring.cpp:
- (KJS::UString::from):
- (KJS::UString::toDouble):
-
-2008-04-16 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Get rid of static execForCompareByStringForQSort in array_instance.cpp.
-
- No change on SunSpider, CelticKane or iBench JavaScript.
-
- * kjs/array_instance.cpp:
- (KJS::ArraySortComparator::ArraySortComparator):
- (KJS::ArraySortComparator::operator()):
- (KJS::ArrayInstance::sort):
- Switch slow case to std::sort, so that ExecState can be passed in a comparator.
-
-2008-04-16 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Adam Roben.
-
- MSVC build fix.
-
- * kjs/CommonIdentifiers.cpp:
- * kjs/CommonIdentifiers.h:
- * kjs/Parser.cpp:
- * kjs/Parser.h:
- * kjs/identifier.cpp:
- * kjs/lexer.h:
- * wtf/ThreadSpecific.h:
-
-2008-04-16 Alexey Proskuryakov <ap@webkit.org>
-
- Build fix.
-
- * kjs/date_object.cpp:
- * kjs/date_object.h:
- Don't include DateMath.h from date_object.h, as the latter is used from WebCore, while
- where the former is not available.
-
-2008-04-16 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Unreviewed build fix for MSVC. It does not want to have
- WTF in the KJS namespace.
-
- * kjs/CommonIdentifiers.h:
-
-2008-04-16 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Unreviewed build fix for gcc.
-
- ::msToGregorianDateTime is not known to it.
-
- * kjs/date_object.cpp:
- (KJS::DateInstance::msToGregorianDateTime):
-
-2008-04-16 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Initialize threadMapMutex safely (as already done in ThreadingWin).
-
- * wtf/ThreadingGtk.cpp:
- (WTF::threadMapMutex):
- (WTF::initializeThreading):
- * wtf/ThreadingPthreads.cpp:
- (WTF::threadMapMutex):
- (WTF::initializeThreading):
-
-2008-04-16 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Adam Roben.
-
- Cache Gregorian date/time structure on DateInstance objects for 1.027x SunSpider speedup
- (1.65x on date-format-xparb, 1.13x on date-format-tofte).
-
- * kjs/DateMath.h:
- (KJS::GregorianDateTime::copyFrom): Added. It presumably makes sense to keep GregorianDateTime
- Noncopyable, so it's not just operator=.
-
- * kjs/date_object.h: Added a per-object cache.
-
- * kjs/date_object.cpp:
- (KJS::DateInstance::DateInstance):
- (KJS::DateInstance::msToGregorianDateTime):
- (KJS::dateProtoFuncToString):
- (KJS::dateProtoFuncToUTCString):
- (KJS::dateProtoFuncToDateString):
- (KJS::dateProtoFuncToTimeString):
- (KJS::dateProtoFuncToLocaleString):
- (KJS::dateProtoFuncToLocaleDateString):
- (KJS::dateProtoFuncToLocaleTimeString):
- (KJS::dateProtoFuncGetFullYear):
- (KJS::dateProtoFuncGetUTCFullYear):
- (KJS::dateProtoFuncToGMTString):
- (KJS::dateProtoFuncGetMonth):
- (KJS::dateProtoFuncGetUTCMonth):
- (KJS::dateProtoFuncGetDate):
- (KJS::dateProtoFuncGetUTCDate):
- (KJS::dateProtoFuncGetDay):
- (KJS::dateProtoFuncGetUTCDay):
- (KJS::dateProtoFuncGetHours):
- (KJS::dateProtoFuncGetUTCHours):
- (KJS::dateProtoFuncGetMinutes):
- (KJS::dateProtoFuncGetUTCMinutes):
- (KJS::dateProtoFuncGetSeconds):
- (KJS::dateProtoFuncGetUTCSeconds):
- (KJS::dateProtoFuncGetTimezoneOffset):
- (KJS::setNewValueFromTimeArgs):
- (KJS::setNewValueFromDateArgs):
- (KJS::dateProtoFuncSetYear):
- (KJS::dateProtoFuncGetYear):
- Use the cache when converting.
-
-2008-04-16 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Implement an abstraction for thread-specific storage, use it to get rid of some static objects.
-
- SunSpider results were not conclusive, possibly up to 0.2% slowdown.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- Added ThreadSpecific.h
-
- * wtf/ThreadSpecific.h: Added.
- (WTF::::ThreadSpecific):
- (WTF::::~ThreadSpecific):
- (WTF::::get):
- (WTF::::set):
- (WTF::::destroy):
- (WTF::T):
- (WTF::::operator):
- Only implemented for platforms that use pthreads.
-
- * kjs/CommonIdentifiers.cpp:
- (KJS::CommonIdentifiers::shared):
- * kjs/CommonIdentifiers.h:
- * kjs/InitializeThreading.cpp:
- (KJS::initializeThreading):
- * kjs/Parser.cpp:
- (KJS::parser):
- * kjs/Parser.h:
- * kjs/identifier.cpp:
- (KJS::identifierTable):
- (KJS::literalIdentifierTable):
- (KJS::Identifier::initializeIdentifierThreading):
- * kjs/identifier.h:
- * kjs/lexer.cpp:
- (KJS::lexer):
- * kjs/lexer.h:
- Make static instances per-thread.
-
-2008-04-15 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam.
-
- Add ENABLE_OFFLINE_WEB_APPLICATIONS to FEATURE_DEFINES.
-
- * Configurations/JavaScriptCore.xcconfig:
-
-2008-04-15 Andre Poenitz <andre.poenitz@trolltech.com>
-
- Reviewed by Simon.
-
- Fix compilation with Qt namespaces
-
- Qt can be configured to have all of its classes inside a specified namespaces.
- This is for example used in plugin/component environments like Eclipse.
-
- This change makes it possible to let the Qt port compile against a namespaced
- Qt by the use of macros Qt provides to properly forward declare Qt classes in
- the namespace.
-
- * wtf/unicode/qt4/UnicodeQt4.h:
-
-2008-04-14 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam.
-
- Don't leak the prototype class.
-
- * API/JSClassRef.cpp:
- (OpaqueJSClass::create):
-
-2008-04-14 Steve Falkenburg <sfalken@apple.com>
-
- Fix build.
-
- * wtf/ThreadingWin.cpp:
-
-2008-04-14 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Adam Roben.
-
- https://bugs.webkit.org/show_bug.cgi?id=18488
- FastMalloc doesn't release thread-specific data on Windows
-
- * wtf/ThreadingWin.cpp:
- (WTF::threadMapMutex): (WTF::initializeThreading): Call threadMapMutex once to initialize the static safely.
- (WTF::ThreadFunctionInvocation::ThreadFunctionInvocation): Added a structure to wrap thread entry point and arguments.
- (WTF::wtfThreadEntryPoint): Make sure to end all WTF threads with pthread_exit(), to give pthreads-win32 a chance to call
- destructors of thread-specific data.
- (WTF::createThread): Use _beginthreadex instead of CreateThread, because MSDN says so. Also removed a call to CreateEvent,
- for which I could see no reason at all.
-
-2008-04-14 Alexey Proskuryakov <ap@webkit.org>
-
- Touched a file to make JavaScriptCore.vcproj rebuild.
-
- * wtf/MathExtras.h:
-
-2008-04-14 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- Rubberstamped by Alexey Proskuryakov.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Disable
- the "potentially uninitialized variable" warning for grammar.cpp, as
- it seems to be incorrect. yylval gets initialized by the lexer, but
- MSVC doesn't seem to understand this.
-
-2008-04-11 Antti Koivisto <antti@apple.com>
-
- Reviewed by Maciej.
-
- Add default hash for pairs of hashable types.
-
- * wtf/HashFunctions.h:
- (WTF::PairHash::hash):
- (WTF::PairHash::equal):
- (WTF::):
-
-2008-04-11 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoff.
-
- Make DateMath.cpp thread safe.
-
- No measurable change on SunSpider (should be a very small speedup).
-
- * kjs/DateMath.cpp:
- (KJS::mimimumYearForDST): (KJS::equivalentYearForDST): Got rid of double caching of the
- same precomputed value.
- (KJS::calculateUTCOffset): (KJS::getUTCOffset): Factored actual UTC offset calculation code
- out of getUTCOffset(), and notification setup into initDateMath().
-
- (KJS::initDateMath): Added.
-
- * kjs/DateMath.h:
- * kjs/InitializeThreading.cpp:
- (KJS::initializeThreading):
- Added initDateMath().
-
-2008-04-11 Alexey Proskuryakov <ap@webkit.org>
-
- Windows build fix.
-
- * kjs/grammar.y:
-
-2008-04-11 Alexey Proskuryakov <ap@webkit.org>
-
- Tiger build fix. Forward declaring a union didn't work for whatever reason, make the
- parameters void*.
-
- * kjs/grammar.y:
- * kjs/lexer.cpp:
- (kjsyylex):
- (KJS::Lexer::lex):
- * kjs/lexer.h:
-
-2008-04-11 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoff.
-
- Generate a pure (re-entrant) parser with Bison.
-
- No change on SunSpider.
-
- * kjs/Parser.cpp:
- (KJS::Parser::parse):
- * kjs/grammar.y:
- * kjs/lexer.cpp:
- (kjsyylex):
- (KJS::Lexer::lex):
- * kjs/lexer.h:
- Pass state as function arguments, instead of global data. Don't call lexer() as often as
- before, as this function is about to become slower due to thread-specific storage.
-
- * kjs/function.cpp:
- (KJS::isStrWhiteSpace): Don't call isSeparatorSpace() for 8-bit characters, as these are
- already taken care of. This is a small speedup, compensating for a small slowdown caused
- by switching Bison mode.
-
-2008-04-10 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoff.
-
- https://bugs.webkit.org/show_bug.cgi?id=18402
- REGRESSION: visited element handling is incorrect in nested join/toString calls
-
- No change on SunSpider total, possibly a tiny improvement (about 0.1%).
-
- Test: fast/js/array-tostring-and-join.html
-
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::visitedElements): Store visited elements HashSet here, making it
- common to toString/toLocalizedString/join again.
-
- * kjs/array_object.cpp:
- (KJS::arrayProtoFuncToString):
- (KJS::arrayProtoFuncToLocaleString):
- (KJS::arrayProtoFuncJoin):
- Got rid of static variables. Replaced UString with Vector to avoid O(n^2) behavior and
- regain performance.
-
- * wtf/Vector.h:
- (WTF::::resize):
- (WTF::::grow):
- (WTF::::reserveCapacity):
- (WTF::::append):
- (WTF::::insert):
- Added null checks, so that Vector methods don't crash when out of memory. The caller should
- check that data pointer is not null before proceeding.
-
-2008-04-10 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fix https://bugs.webkit.org/show_bug.cgi?id=18367 and the many dupes.
- Bug 18367: Crash during celtic kane js speed 2007 test
-
- GCC 4.2 on x86_64 Linux decided to reorder the local variables in markCurrentThreadConservatively's
- stack frame. This lead to the range of addresses the collector treated as stack to exclude the
- contents of volatile registers that markCurrentThreadConservatively forces onto the stack. This was
- leading to objects being prematurely collected if the only reference to them was via a register at
- the time a collection occurred.
-
- The fix for this is to move the calculation of the top of the stack into a NEVER_INLINE function
- that is called from markCurrentThreadConservatively. This forces the dummy variable we use for
- determining the top of stack to be in a different stack frame which prevents the compiler from
- reordering it relative to the registers that markCurrentThreadConservatively forces onto the stack.
-
- * kjs/collector.cpp:
- (KJS::Collector::markCurrentThreadConservativelyInternal):
- (KJS::Collector::markCurrentThreadConservatively):
- * kjs/collector.h:
-
-2008-04-10 Adam Roben <aroben@apple.com>
-
- VC++ Express build fix
-
- * JavaScriptCore.vcproj/WTF/WTF.vcproj: Link against user32.lib so
- that anyone who links against WTF.lib will get user32.lib
- automatically.
-
-2008-04-09 Adam Roben <aroben@apple.com>
-
- VC++ Express build fix
-
- * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Link against
- user32.lib.
-
-2008-04-09 Adam Roben <aroben@apple.com>
-
- Build fix
-
- * JavaScriptCore.exp: Export isMainThread.
-
-2008-04-09 Adam Roben <aroben@apple.com>
-
- Build fix
-
- * wtf/AlwaysInline.h: Make sure to #include Platform.h before using
- the macros it defines.
-
-2008-04-08 Mark Rowe <mrowe@apple.com>
-
- Export WTF::initializeThreading() from JavaScriptCore.
-
- * JavaScriptCore.exp:
-
-2008-04-04 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- First step in implementing the "split window"
-
- - Add a GlobalThisValue to ExecState which should be used
- in places that used to implement the "use the global object
- as this if null" rule.
- - Factor out lookupGetter/lookupSetter into virtual methods
- on JSObject so that they can be forwarded.
- - Make defineGetter/defineSetter virtual methods for the same
- reason.
- - Have PrototypeReflexiveFunction store the globalObject used
- to create it so that it can be used to get the correct thisObject
- for eval.
-
- * API/JSObjectRef.cpp:
- (JSObjectCallAsFunction):
- * JavaScriptCore.exp:
- * kjs/Activation.h:
- * kjs/ExecState.cpp:
- (KJS::ExecState::ExecState):
- (KJS::GlobalExecState::GlobalExecState):
- * kjs/ExecState.h:
- (KJS::ExecState::globalThisValue):
- * kjs/ExecStateInlines.h:
- (KJS::ExecState::ExecState):
- (KJS::FunctionExecState::FunctionExecState):
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::reset):
- (KJS::JSGlobalObject::toGlobalObject):
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
- (KJS::JSGlobalObject::JSGlobalObject):
- * kjs/array_instance.cpp:
- (KJS::CompareWithCompareFunctionArguments::CompareWithCompareFunctionArguments):
- (KJS::compareWithCompareFunctionForQSort):
- * kjs/array_object.cpp:
- (KJS::arrayProtoFuncSort):
- (KJS::arrayProtoFuncFilter):
- (KJS::arrayProtoFuncMap):
- (KJS::arrayProtoFuncEvery):
- (KJS::arrayProtoFuncForEach):
- (KJS::arrayProtoFuncSome):
- * kjs/function.cpp:
- (KJS::FunctionImp::callAsFunction):
- (KJS::ActivationImp::toThisObject):
- (KJS::globalFuncEval):
- (KJS::PrototypeReflexiveFunction::PrototypeReflexiveFunction):
- (KJS::PrototypeReflexiveFunction::mark):
- * kjs/function.h:
- (KJS::PrototypeReflexiveFunction::cachedGlobalObject):
- * kjs/function_object.cpp:
- (KJS::functionProtoFuncApply):
- (KJS::functionProtoFuncCall):
- * kjs/nodes.cpp:
- (KJS::ExpressionNode::resolveAndCall):
- (KJS::FunctionCallValueNode::evaluate):
- (KJS::LocalVarFunctionCallNode::inlineEvaluate):
- (KJS::ScopedVarFunctionCallNode::inlineEvaluate):
- (KJS::FunctionCallBracketNode::evaluate):
- (KJS::FunctionCallDotNode::inlineEvaluate):
- * kjs/object.cpp:
- (KJS::JSObject::call):
- (KJS::JSObject::put):
- (KJS::tryGetAndCallProperty):
- (KJS::JSObject::lookupGetter):
- (KJS::JSObject::lookupSetter):
- (KJS::JSObject::toThisObject):
- (KJS::JSObject::toGlobalObject):
- (KJS::JSObject::fillGetterPropertySlot):
- * kjs/object.h:
- * kjs/object_object.cpp:
- (KJS::objectProtoFuncLookupGetter):
- (KJS::objectProtoFuncLookupSetter):
- * kjs/string_object.cpp:
- (KJS::replace):
-
-2008-04-08 Brady Eidson <beidson@apple.com>
-
- Encourage Windows to rebuild - AGAIN...
-
- * kjs/DateMath.cpp:
-
-2008-04-08 Adam Roben <aroben@apple.com>
-
- Mac build fix
-
- * JavaScriptCore.exp: Add callOnMainThread, and sorted the list.
-
-2008-04-08 Brady Eidson <beidson@apple.com>
-
- Rubberstamped by Adam Roben
-
- Touch some files to *strongly* encourage Windows to rebuilt with DOM_STORAGE enabled
-
- * kjs/DateMath.cpp:
-
-2008-04-08 Adam Roben <aroben@apple.com>
-
- Move callOnMainThread to WTF
-
- Reviewed by Alexey Proskuryakov.
-
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- Added new files.
-
- * wtf/MainThread.cpp:
- * wtf/MainThread.h:
- * wtf/gtk/MainThreadGtk.cpp:
- * wtf/mac/MainThreadMac.mm:
- * wtf/qt/MainThreadQt.cpp:
- * wtf/win/MainThreadWin.cpp:
- * wtf/wx/MainThreadWx.cpp:
- Moved here from WebCore/platform. Replaced all instances of "WebCore"
- with "WTF".
-
- * kjs/bool_object.cpp: Touched to force JavaScriptCore.vcproj to
- build.
- to the WTF namespace.
- * wtf/ThreadingWin.cpp:
- (WTF::initializeThreading): Call initializeMainThread.
-
-2008-04-07 Brady Eidson <beidson@apple.com>
-
- Add "ENABLE_DOM_STORAGE" to keep in sync with the rest of the project
-
- * Configurations/JavaScriptCore.xcconfig:
-
-2008-04-07 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * wtf/ThreadingWin.cpp: Back out some changes I didn't mean to land.
-
-2008-04-07 Adam Roben <aroben@apple.com>
-
- Add WTF::isMainThread
-
- Reviewed by Alexey Proskuryakov.
-
- * wtf/Threading.h: Declare the new function.
- * wtf/ThreadingGtk.cpp:
- (WTF::initializeThreading): Initialize the main thread identifier.
- (WTF::isMainThread): Added.
- * wtf/ThreadingNone.cpp: Ditto ThreadingGtk.cpp.
- (WTF::initializeThreading):
- (WTF::isMainThread):
- * wtf/ThreadingPthreads.cpp: Ditto.
- (WTF::initializeThreading):
- (WTF::isMainThread):
- * wtf/ThreadingWin.cpp: Ditto.
- (WTF::initializeThreading):
- (WTF::isMainThread):
-
-2008-04-06 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Make UString thread-safe.
-
- No change on SunSpider total, although individual tests have changed a lot, up to 3%.
-
- * kjs/InitializeThreading.cpp: (KJS::initializeThreading): Call UString::null() to initialize
- a static.
-
- * kjs/identifier.cpp:
- (KJS::CStringTranslator::translate):
- (KJS::UCharBufferTranslator::translate):
- Use "true" for a boolean value instead of 1, because it's C++.
-
- * kjs/ustring.h:
- (KJS::CString::adopt): Added a method to create from a char* buffer without copying.
- (KJS::UString::Rep::ref): Removed an assertion for JSLock::lockCount, as it's no longer
- necessary to hold JSLock when working with strings.
- (KJS::UString::Rep::deref): Ditto.
- (KJS::UString::Rep::isStatic): Added a field to quickly determine that this is an empty
- or null static string.
-
- * kjs/ustring.cpp:
- (KJS::): Removed normalStatBufferSize and statBufferSize, as there is no reason to have such
- an advanced implementation of a debug-only ascii() method. Removed a long-obsolete comment
- about UChar.
- (KJS::UString::Rep::createCopying): Removed an assertion for JSLock::lockCount.
- (KJS::UString::Rep::create): Ditto.
- (KJS::UString::Rep::destroy): Ditto. Do not do anything for static null and empty strings,
- as refcounting is not reliable for those. Reordered branches for a noticeable speed gain -
- apparently this functiton is hot enough for SunSpider to see an effect from this!
- (KJS::UString::null): Moved a star, added a comment.
- (KJS::UString::cstring): Reimplemented to not call ascii(), which is not thread-safe.
- (KJS::UString::ascii): Simplified statBuffer handling logic.
- (KJS::UString::toDouble): Use cstring() instead of ascii().
-
-2008-04-02 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Ensure that debug symbols are generated for x86_64 and ppc64 builds.
-
- * Configurations/Base.xcconfig:
-
-2008-04-01 Christian Dywan <christian@imendio.com>
-
- Build fix for GCC 4.3.
-
- * wtf/unicode/icu/CollatorICU.cpp: include string.h
-
-2008-04-01 Alexey Proskuryakov <ap@webkit.org>
-
- Rubber-stamped by Darin.
-
- Turn off using 64-bit arithmetic on 32-bit hardware, as dtoa own code is faster than
- compiler-provided emulation.
-
- 1% speedup on Acid3 test 26.
-
- * kjs/dtoa.cpp:
-
-2008-04-01 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Make MathExtras.h thread safe.
-
- * kjs/math_object.cpp:
- (KJS::mathProtoFuncRandom): If threading is enabled, rely on initializeThreading to call
- wtf_random_init().
-
- * wtf/Threading.h:
- * wtf/ThreadingGtk.cpp:
- (WTF::initializeThreading):
- * wtf/ThreadingNone.cpp:
- (WTF::initializeThreading):
- * wtf/ThreadingPthreads.cpp:
- (WTF::initializeThreading):
- * wtf/ThreadingWin.cpp:
- (WTF::initializeThreading):
- Call wtf_random_init(); made the function non-inline to avoid having to include too many
- headers in Threading.h.
-
-2008-03-31 Eric Seidel <eric@webkit.org>
-
- Reviewed by darin.
-
- Make matching of regexps using ^ much faster
- http://bugs.webkit.org/show_bug.cgi?id=18086
-
- * pcre/pcre_compile.cpp:
- (compileBranch):
- (branchNeedsLineStart):
- * pcre/pcre_exec.cpp:
- (match):
- (jsRegExpExecute):
- * pcre/pcre_internal.h:
-
-2008-03-29 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- <rdar://problem/5829556> REGRESSION: Leak in KJS::initializeThreading()
-
- * kjs/InitializeThreading.cpp: (KJS::initializeThreading): There is no guarantee that
- initializeThreading() is called only once; check that the mutex hasn't been already allocated.
-
-2008-03-29 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Bug 17924: Crash in KJS::ConstDeclNode::evaluate with |with| and |const|
- <http://bugs.webkit.org/show_bug.cgi?id=17924>
- <rdar://problem/5806933>
-
- It turns out this is trivially avoidable if we just match firefox's
- semantics and ensure that an assignment in a const declaration always
- writes to the variable object.
-
- * kjs/nodes.cpp:
- (KJS::ConstDeclNode::handleSlowCase):
-
-2008-03-28 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Sam Weinig.
-
- Fix a dtoa thread safety issue.
-
- WebCore can call kjs_strtod without holding JS lock, but we didn't have thread safety
- compiled in for dtoa.
-
- This is a 0.5% regression on SunSpider, which Sam Weinig has volunteered to cover with
- his recent improvement.
-
- * kjs/dtoa.cpp:
- (Bigint::Balloc):
- (Bigint::Bfree):
- Changed to use fastMalloc/fastDelete - they are much faster than the dtoa custom version was
- in the presence of locking (but somewhat slower in single-threaded case).
- (Bigint::pow5mult): Got rid of the dreaded double-checked locking anti-pattern (had to
- restructure the code to avoid significant performance implications).
- (Bigint::lshift): Rewrote to avoid an allocation, if possible.
-
- (Bigint::rv_alloc):
- (Bigint::kjs_freedtoa):
- (Bigint::kjs_dtoa):
- Check for USE(MULTIPLE_THREADS), not dtoa legacy MULTIPLE_THREADS.
-
- * kjs/InitializeThreading.cpp: Added.
- (KJS::initializeThreading):
- * kjs/InitializeThreading.h: Added.
- Initialize threading at KJS level, if enabled.
-
- * kjs/dtoa.h: Expose dtoa mutex for KJS::initializeThreading.
-
- * kjs/testkjs.cpp: (kjsmain): Call initializeThreading.
-
- * JavaScriptCore.exp: Export KJS::initializeThreading.
-
- * GNUmakefile.am:
- * JavaScriptCore.exp:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCoreSources.bkl:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- Added InitializeThreading.{h,cpp}.
-
- * wtf/Threading.h: Removed a using directive for WTF::initializeThreading - it is only
- to be called from KJS::initializeThreading, and having it in the global namespace is useless.
-
-2008-03-28 Brady Eidson <beidson@apple.com>
-
- Reviewed by Darin
-
- Export Unicode/UTF8.h and convertUTF16ToUTF8() for more flexible conversion in WebCore
-
- * JavaScriptCore.exp:
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2008-03-27 Darin Adler <darin@apple.com>
-
- Reviewed by Mark Rowe.
-
- <rdar://problem/5826236> Regular expressions with large nested repetition counts can have their
- compiled length calculated incorrectly.
-
- * pcre/pcre_compile.cpp:
- (multiplyWithOverflowCheck):
- (calculateCompiledPatternLength): Check for overflow when dealing with nested repetition counts
- and bail with an error rather than returning incorrect results.
-
-2008-03-26 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Brady Eidson.
-
- Update FEATURE_DEFINES to be consistent with the other locations in which it is defined.
-
- * Configurations/JavaScriptCore.xcconfig:
-
-2008-03-26 Adam Roben <aroben@apple.com>
-
- Fix Bug 18060: Assertion failure (JSLock not held) beneath
- JSCallbackObject<Base>::toString
-
- <http://bugs.webkit.org/show_bug.cgi?id=18060>
-
- Reviewed by Geoff Garen.
-
- Bug fix:
-
- * API/JSCallbackObjectFunctions.h:
- (KJS::JSCallbackObject<Base>::toString): Make the DropAllLocks
- instance only be in scope while calling convertToType.
-
- Test:
-
- * API/testapi.c:
- (MyObject_convertToType): Implement type conversion to string.
- * API/testapi.js: Add a test for type conversion to string.
-
-2008-03-26 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * kjs/array_instance.cpp: Touched this.
- * wtf/HashFunctions.h:
- (WTF::intHash): Added 8- and 16-bit versions of intHash.
-
-2008-03-26 Adam Roben <aroben@apple.com>
-
- Force JSC headers to be copied by touching a file
-
- * kjs/array_instance.cpp:
- (KJS::ArrayInstance::getPropertyNames):
-
-2008-03-26 Adam Roben <aroben@apple.com>
-
- Windows build fix after r31324
-
- Written with Darin.
-
- Added HashTable plumbing to support using wchar_t as a key type.
-
- * wtf/HashFunctions.h:
- * wtf/HashTraits.h:
- (WTF::):
-
-2008-03-26 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin.
-
- - JSC part of fix for "SVG multichar glyph matching matches longest instead of first (affects Acid3 test 79)"
- http://bugs.webkit.org/show_bug.cgi?id=18118
-
- * wtf/HashFunctions.h:
- (WTF::):
- * wtf/HashTraits.h:
- (WTF::):
-
-2008-03-26 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Cache C string identifiers by address, not value, assuming that C strings can only
- be literals.
-
- 1% speedup on Acid3 test 26.
-
- * kjs/identifier.cpp:
- (KJS::literalIdentifierTable):
- (KJS::Identifier::add):
- Added a new table to cache UString::Reps created from C strings by address. Elements are
- never removed from this cache, as only predefined identifiers can get there.
-
- * kjs/identifier.h:
- (KJS::Identifier::Identifier): Added a warning.
-
-2008-03-26 Alexey Proskuryakov <ap@webkit.org>
-
- Rubber-stamped by Maciej.
-
- An assertion was failing in function-toString-object-literals.html when parsing 1e-500.
- The condition existed before, and got uncovered by turning compiled-out dtoa checks into
- ASSERTs.
-
- The assertion was verifying that the caller wasn't constructing a Bigint from 0.
- This might have had some reason behind it originally, but I couldn't find any,
- and this doesn't look like a reasonable requirement.
-
- * kjs/dtoa.cpp: (d2b): Removed the assertion (two copies in different code paths).
-
-2008-03-25 Adam Roben <aroben@apple.com>
-
- Fix Bug 18077: Integrate testapi.c into the Windows build
-
- <http://bugs.webkit.org/show_bug.cgi?id=18077>
-
- Reviewed by Steve Falkenburg.
-
- * JavaScriptCore.vcproj/testapi/testapi.vcproj: Added.
-
-2008-03-25 Adam Roben <aroben@apple.com>
-
- Make testapi.c compile under MSVC
-
- Currently you must compile testapi.c as C++ code since MSVC does not
- support many C features that GCC does.
-
- Reviewed by Steve Falkenburg.
-
- * API/testapi.c:
- (nan): Added an implementation of this for MSVC.
- (assertEqualsAsUTF8String): Use malloc instead of dynamically-sized
- stack arrays.
- (assertEqualsAsCharactersPtr): Ditto.
- (print_callAsFunction): Ditto.
- (main): Ditto, and explicitly cast from UniChar* to JSChar*.
-
-2008-03-25 Adam Roben <aroben@apple.com>
-
- Stop using JavaScriptCore's custom stdbool.h and stdint.h on Windows
-
- We can't remove the os-win32 directory yet because other ports (at
- least wx) are still relying on it.
-
- Reviewed by Steve Falkenburg.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- - Made all the include paths match the one for the Debug
- configuration (these got out of sync in r30797)
- - Removed os-win32 from the include path
- - Removed os-win32 from the directories we copy to $WebKitOutputDir.
- - Removed stdint.h from the project
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
- Delete the files that we may have previously copied from the os-win32
- directory.
-
-2008-03-25 Alexey Proskuryakov <ap@webkit.org>
-
- Windows build fix.
-
- * kjs/dtoa.cpp: Include stdint.h.
-
-2008-03-25 Alexey Proskuryakov <ap@webkit.org>
-
- Rubber-stamped by Darin.
-
- Cleanup dtoa.cpp style.
-
- * kjs/dtoa.cpp:
- (Bigint::Balloc):
- (Bigint::Bfree):
- (Bigint::multadd):
- (Bigint::s2b):
- (Bigint::hi0bits):
- (Bigint::lo0bits):
- (Bigint::i2b):
- (Bigint::mult):
- (Bigint::pow5mult):
- (Bigint::lshift):
- (Bigint::cmp):
- (Bigint::diff):
- (Bigint::ulp):
- (Bigint::b2d):
- (Bigint::d2b):
- (Bigint::ratio):
- (Bigint::):
- (Bigint::match):
- (Bigint::hexnan):
- (Bigint::kjs_strtod):
- (Bigint::quorem):
- (Bigint::rv_alloc):
- (Bigint::nrv_alloc):
- (Bigint::kjs_freedtoa):
- (Bigint::kjs_dtoa):
- * kjs/dtoa.h:
-
-2008-03-24 Darin Adler <darin@apple.com>
-
- Reviewed by Sam.
-
- - convert a JavaScript immediate number to a string more efficiently
-
- 2% speedup of Acid3 test 26
-
- * kjs/JSImmediate.cpp:
- (KJS::JSImmediate::toString): Take advantage of the fact that all immediate
- numbers are integers, and use the faster UString function for formatting integers
- instead of the slower one that works for floating point. I think this is a leftover
- from when immediate numbers were floating point.
-
-2008-03-23 Sam Weinig <sam@webkit.org>
-
- Reviewed by Darin Adler.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=18048
- The "thisObject" parameter to JSEvaluateScript is not used properly
-
- Making passing a thisObject to JSEvaluateScript actually set the thisObject of the created
- ExecState.
-
- * API/testapi.c:
- (main): Add tests for setting the thisObject when calling JSEvaluateScript.
-
- * kjs/ExecState.cpp:
- (KJS::ExecState::ExecState): Assign the thisObject to m_thisValue and remove the comment.
-
-2008-03-22 Jesse Ruderman <jruderman@gmail.com>
-
- Reviewed by Sam Weinig. Landed by eseidel.
-
- Make testkjs flush stdout after printing.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/testkjs.cpp:
- (functionPrint):
-
-2008-03-21 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Optimise lookup of Math, undefined, NaN and Infinity
-
- Added a method to JSVariableObject to allow us to inject DontDelete properties
- into the symbol table and localStorage. This results in a 0.4% progression in
- SunSpider, with a 8% gain in math-partial-sums.
-
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::reset):
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::symbolTableInsert):
-
-2008-03-21 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff Garen.
-
- Global properties that use LocalStorage are not correctly listed as enumerable.
-
- The problem was caused by JSObject::getPropertyAttributes not being aware
- of the JSVariableObject SymbolTable. The fix is to make getPropertyAttributes
- virtual and override in JSVariableObject. This does not produce any performance
- regression.
-
- * JavaScriptCore.exp:
- * kjs/JSVariableObject.cpp:
- (KJS::JSVariableObject::getPropertyNames):
- (KJS::JSVariableObject::getPropertyAttributes):
- * kjs/JSVariableObject.h:
- * kjs/object.h:
-
-2008-03-21 Arkadiusz Miskiewicz <arekm@maven.pl>
-
- Webkit does not build on linux powerpc
-
- <http://bugs.webkit.org/show_bug.cgi?id=17019>
-
- Reviewed by David Kilzer.
-
- * wtf/TCSpinLock.h:
- (TCMalloc_SpinLock::Unlock):
-
-2008-03-21 Rodney Dawes <dobey@wayofthemonkey.com>
-
- Reviewed by Holger.
-
- http://bugs.webkit.org/show_bug.cgi?id=17981
-
- Add javascriptcore_cppflags to Programs_minidom_CPPFLAGS.
-
- * GNUmakefile.am:
-
-2008-03-21 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Consolidate static identifier initializers within CommonIdentifiers.
-
- No reliably measurable change on SunSpider; maybe a tiny improvement (within 0.2%).
-
- * kjs/CommonIdentifiers.h: Added static identifiers that were lazily initialized
- throughout the code.
-
- * kjs/date_object.cpp:
- (KJS::DateObjectImp::DateObjectImp):
- * kjs/function_object.cpp:
- (KJS::FunctionPrototype::FunctionPrototype):
- * kjs/object_object.cpp:
- (KJS::ObjectPrototype::ObjectPrototype):
- * kjs/regexp_object.cpp:
- (KJS::RegExpPrototype::RegExpPrototype):
- Use the values from CommonIdentifiers.
-
- * kjs/lookup.h: Caching the identifier in a static wasn't a win on SunSpider, removed it.
-
- * kjs/value.h:
- (KJS::jsNaN): We already have a shared NaN value, no need for a duplicate here.
-
- * wtf/MathExtras.h:
- (wtf_atan2): Having local variables for numeric_limits constants is good for readability,
- but there is no reason to keep them static.
-
- * JavaScriptCore.exp: Don't needlessly export JSGlobalObject::s_head.
-
-2008-03-20 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Fix for leak introduced by inline ScopeChainNode use
-
- To avoid any extra branches when managing an inline ScopeChainNode
- in the ScopeChain the inline node gets inserted with a refcount of
- 2. This meant than when the ScopeChain was destroyed the ScopeChainNodes
- above the inline node would be leaked.
-
- We resolve this by manually popping the inline node in the
- FunctionExecState destructor.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/ExecStateInlines.h:
- (KJS::FunctionExecState::~FunctionExecState):
- * kjs/scope_chain.h:
- (KJS::ScopeChain::popInlineScopeNode):
-
-2008-03-20 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Ensure that the defines in FEATURE_DEFINES are sorted so that they will match the default settings of build-webkit.
- This will prevent the world from being rebuilt if you happen to switch between building in Xcode and with build-webkit on the
- command-line.
-
- * Configurations/JavaScriptCore.xcconfig:
-
-2008-03-20 David Krause <david.krause@gmail.com>
-
- Reviewed by David Kilzer.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=17923
- Bug 17923: ARM platform endian defines inaccurate
-
- * wtf/Platform.h:
- Replaced !defined(__ARMEL__) check with !defined(__VFP_FP__)
- for PLATFORM(MIDDLE_ENDIAN)
-
-2008-03-20 Maciej Stachowiak <mjs@apple.com>
-
- - fix build
-
- * JavaScriptCore.xcodeproj/project.pbxproj: install Activation.h as private
-
-2008-03-20 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - reduce function call overhead for 1.014x speedup on SunSpider
-
- I moved some functions from ExecState.cpp to ExecStateInline.h and
- from JSGlobalObject.cpp to JSGlobalObject.h, and declared them
- inline; machine function call overhead for these was hurting JS
- funcion call overhead.
-
- * kjs/ExecState.cpp:
- * kjs/ExecStateInlines.h: Added.
- (KJS::ExecState::ExecState):
- (KJS::ExecState::~ExecState):
- (KJS::FunctionExecState::FunctionExecState):
- (KJS::FunctionExecState::~FunctionExecState):
- * kjs/JSGlobalObject.cpp:
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::pushActivation):
- (KJS::JSGlobalObject::checkActivationCount):
- (KJS::JSGlobalObject::popActivation):
- * kjs/function.cpp:
-
-2008-03-19 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Avoid heap allocating the root scope chain node for eval and closure free functions
-
- Maciej suggested using an inline ScopeChainNode for functions that don't use eval
- or closures as they are unable to ever capture the scope chain. This gives us a 2.4%
- win in sunspider, a 15% win in controlflow-recursive, and big (>5%) wins in a number
- of other tests.
-
- * kjs/ExecState.cpp:
- (KJS::ExecState::ExecState):
- * kjs/ExecState.h:
- * kjs/scope_chain.h:
- (KJS::ScopeChain::push):
-
-2008-03-19 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Fix release build.
-
- * kjs/JSGlobalObject.cpp: Add missing #include.
-
-2008-03-19 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Fix for <rdar://problem/5785694>
- Crash occurs at KJS::Collector::collect() when loading web clip widgets with a PAC file
-
- Make the activeExecStates stack per JSGlobalObject instead of static to ensure
- thread safety.
-
- * JavaScriptCore.exp:
- * kjs/ExecState.cpp:
- (KJS::InterpreterExecState::InterpreterExecState):
- (KJS::InterpreterExecState::~InterpreterExecState):
- (KJS::EvalExecState::EvalExecState):
- (KJS::EvalExecState::~EvalExecState):
- (KJS::FunctionExecState::FunctionExecState):
- (KJS::FunctionExecState::~FunctionExecState):
- * kjs/ExecState.h:
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::mark):
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::activeExecStates):
- * kjs/collector.cpp:
- (KJS::Collector::collect):
- (KJS::Collector::reportOutOfMemoryToAllExecStates): Iterate all JSGlobalObjects and report
- the OutOfMemory condition to all the ExecStates in each.
-
-2008-03-19 Jasper Bryant-Greene <jasper@unix.geek.nz>
-
- Reviewed by Maciej Stachowiak.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=17941
- Bug 17941: C++-style comments in JavaScriptCore API
-
- * API/JSBase.h:
- Remove C++-style comments from public JavaScriptCore API, replacing
- with standard C90 block comments.
-
-2008-03-19 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=17939
- Bug 17939: Crash decompiling "const a = 1, b;"
-
- * kjs/nodes2string.cpp:
- (KJS::ConstDeclNode::streamTo): Null-check the correct variable.
-
-2008-03-18 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Mark Rowe.
-
- Bug 17929: Incorrect decompilation with |const|, comma
- http://bugs.webkit.org/show_bug.cgi?id=17929
-
- There were actually two bugs here. First we weren't correctly handling const
- nodes with multiple declarations. The second issue was caused by us not
- giving the correct precedence to the initialisers.
-
- * kjs/nodes2string.cpp:
- (KJS::ConstDeclNode::streamTo):
-
-2008-03-18 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - Speed up JavaScript built-in properties by changing the
- hash table to take advantage of the identifier objects
-
- 5% speedup for Acid3 test 26
-
- * JavaScriptCore.exp: Updated.
- * kjs/create_hash_table: Compute size of hash table large enough so that there
- are no collisions, but don't generate the hash table.
- * kjs/identifier.h: Made the add function that returns a PassRefPtr public.
- * kjs/lexer.cpp:
- (KJS::Lexer::lex): Updated for change to HashTable interface.
- * kjs/lookup.cpp:
- (KJS::HashTable::changeKeysToIdentifiers): Added. Finds the identifier for
- each property so the equality comparision can be done with pointer comparision.
- * kjs/lookup.h: Made the key be a union of char* with UString::Rep* so it can
- hold identifiers. Added a keysAreIdentifiers flag to the HashTable. Changed
- the Lookup functions to be member functions of HashTable instead.
- * kjs/object.cpp:
- (KJS::JSObject::deleteProperty): Update for change to HashTable.
- (KJS::JSObject::findPropertyHashEntry): Ditto.
- (KJS::JSObject::getPropertyAttributes): Ditto.
- (KJS::JSObject::getPropertyNames): Ditto.
-
-2008-03-18 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=17925 and http://bugs.webkit.org/show_bug.cgi?id=17927.
- - Bug 17925: Crash in KJS::JSObject::put after setting this.__proto__
- - Bug 17927: Hang after attempting to create circular __proto__
-
- * kjs/object.cpp:
- (KJS::JSObject::put): Silently ignore attempts to set __proto__ to a non-object, non-null value.
- Return after setting the exception when an attempt to set a cyclic __proto__ is detected so that
- the cyclic value is not set.
-
-2008-03-18 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - inline ActivationImp::init for 0.8% SunSpider speedup
-
- * kjs/Activation.h:
- (KJS::ActivationImp::init): Moved here from function.cpp
- * kjs/function.cpp:
-
-2008-03-18 Simon Hausmann <hausmann@webkit.org>
-
- Fix the Qt build.
-
- Including config.h like in the other .cpp files gets the #ifdeffery
- correct for rand_s.
-
- * kjs/JSWrapperObject.cpp:
-
-2008-03-17 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- JavaScriptCore changes to support a WebCore speedup.
-
- * JavaScriptCore.exp: Export the UString::Rep::computeHash function.
- * wtf/HashSet.h: Added a find and contains function that take a translator,
- like the add function.
-
-2008-03-18 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - a few micro-optimizations for 1.2% SunSpider speedup
-
- * kjs/function.cpp:
- (KJS::FunctionImp::callAsFunction): check for Return completion before Throw,
- it is more likely.
- * kjs/object.cpp:
- (KJS::JSObject::put): When walking prototype chain, instead of
- checking isObject (a virtual call), compare to jsNull (compare to
- a constant) since null is the only non-object that can be in a
- prototype chain.
-
-2008-03-17 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Optimise multi-scope function call resolution
-
- Refactor multiscope variable resolution and use to add
- optimised FunctionCallResolveNode subclasses.
-
- 2.6% gain in sunspider performance, *25%* gain in controlflow-recursive
-
- * kjs/nodes.cpp:
- (KJS::getSymbolTableEntry):
- (KJS::ResolveNode::optimizeVariableAccess):
- (KJS::getNonLocalSymbol):
- (KJS::ExpressionNode::resolveAndCall):
- (KJS::FunctionCallResolveNode::optimizeVariableAccess):
- (KJS::FunctionCallResolveNode::inlineEvaluate):
- (KJS::ScopedVarFunctionCallNode::inlineEvaluate):
- (KJS::ScopedVarFunctionCallNode::evaluate):
- (KJS::ScopedVarFunctionCallNode::evaluateToNumber):
- (KJS::ScopedVarFunctionCallNode::evaluateToBoolean):
- (KJS::ScopedVarFunctionCallNode::evaluateToInt32):
- (KJS::ScopedVarFunctionCallNode::evaluateToUInt32):
- (KJS::NonLocalVarFunctionCallNode::inlineEvaluate):
- (KJS::NonLocalVarFunctionCallNode::evaluate):
- (KJS::NonLocalVarFunctionCallNode::evaluateToNumber):
- (KJS::NonLocalVarFunctionCallNode::evaluateToBoolean):
- (KJS::NonLocalVarFunctionCallNode::evaluateToInt32):
- (KJS::NonLocalVarFunctionCallNode::evaluateToUInt32):
- * kjs/nodes.h:
- (KJS::ScopedVarFunctionCallNode::):
- (KJS::NonLocalVarFunctionCallNode::):
-
-2008-03-17 David Kilzer <ddkilzer@apple.com>
-
- Don't define PLATFORM(MIDDLE_ENDIAN) on little endian ARM.
-
- Reviewed by Darin.
-
- See <http://bugs.webkit.org/show_bug.cgi?id=15416#c13>.
-
- * wtf/Platform.h: Added check for !defined(__ARMEL__) when defining
- PLATFORM(MIDDLE_ENDIAN).
-
-2008-03-17 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff, Darin and Weinig.
-
- Add fast multi-level scope lookup
-
- Add logic and AST nodes to provide rapid variable resolution across
- static scope boundaries. This also adds logic that allows us to skip
- any static scopes that do not contain the variable to be resolved.
-
- This results in a ~2.5% speedup in SunSpider, and gives a 25-30% speedup
- in some simple and ad hoc closure and global variable access tests.
-
- * JavaScriptCore.exp:
- * kjs/Activation.h:
- * kjs/JSGlobalObject.cpp:
- * kjs/JSGlobalObject.h:
- * kjs/JSVariableObject.cpp:
- * kjs/JSVariableObject.h:
- * kjs/function.cpp:
- (KJS::ActivationImp::isDynamicScope):
- * kjs/nodes.cpp:
- (KJS::ResolveNode::optimizeVariableAccess):
- (KJS::ScopedVarAccessNode::inlineEvaluate):
- (KJS::ScopedVarAccessNode::evaluate):
- (KJS::ScopedVarAccessNode::evaluateToNumber):
- (KJS::ScopedVarAccessNode::evaluateToBoolean):
- (KJS::ScopedVarAccessNode::evaluateToInt32):
- (KJS::ScopedVarAccessNode::evaluateToUInt32):
- (KJS::NonLocalVarAccessNode::inlineEvaluate):
- (KJS::NonLocalVarAccessNode::evaluate):
- (KJS::NonLocalVarAccessNode::evaluateToNumber):
- (KJS::NonLocalVarAccessNode::evaluateToBoolean):
- (KJS::NonLocalVarAccessNode::evaluateToInt32):
- (KJS::NonLocalVarAccessNode::evaluateToUInt32):
- (KJS::IfElseNode::optimizeVariableAccess):
- (KJS::ScopeNode::optimizeVariableAccess):
- * kjs/nodes.h:
- (KJS::ScopedVarAccessNode::):
- (KJS::NonLocalVarAccessNode::):
- * kjs/object.h:
-
- 2008-03-16 weihongzeng <weihong.zeng@hotmail.com>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=15416
- Add support for mixed-endian processors
-
- * kjs/dtoa.cpp: Add IEEE_ARM, triggered by PLATFORM(MIDDLE_ENDIAN).
-
-2008-03-16 Kevin Ollivier <kevino@theolliviers.com>
-
- Rubber stamped by Darin.
-
- Add set-webkit-configuration support for wx port, and centralize
- build dir location setting.
-
- http://bugs.webkit.org/show_bug.cgi?id=17790
-
- * jscore.bkl:
-
-2008-03-14 Steve Falkenburg <sfalken@apple.com>
-
- PGO build fixes.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
-
-2008-03-14 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Add logic to track whether a function uses a locally scoped eval or requires a closure
-
- Now that we limit eval we can track those uses of eval that operate
- in the local scope and functions that require a closure. We track
- this information during initial parsing to avoid yet another tree
- walk.
-
- * JavaScriptCore.exp:
- * kjs/NodeInfo.h:
- * kjs/Parser.cpp:
- (KJS::Parser::didFinishParsing):
- * kjs/Parser.h:
- (KJS::Parser::parse):
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::ScopeNode::ScopeNode):
- (KJS::ProgramNode::ProgramNode):
- (KJS::ProgramNode::create):
- (KJS::EvalNode::EvalNode):
- (KJS::EvalNode::create):
- (KJS::FunctionBodyNode::FunctionBodyNode):
- (KJS::FunctionBodyNode::create):
- * kjs/nodes.h:
- (KJS::ScopeNode::):
- (KJS::ScopeNode::usesEval):
- (KJS::ScopeNode::needsClosure):
-
-2008-03-14 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Beth Dakin.
-
- Fixed another problem with Vector::shrinkCapacity.
-
- moveOverlapping isn't good enough for the case where the buffer hasn't
- changed, because it still destroys the contents of the buffer.
-
- * wtf/Vector.h:
- (WTF::::shrinkCapacity): Changed to explicitly check whether the call
- to allocateBuffer produced a new buffer. If it didn't, there's no need
- to move.
-
-2008-03-14 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Beth Dakin.
-
- Fixed a few problems with Vector::shrinkCapacity that I noticed in testing.
-
- * wtf/Vector.h:
- (WTF::VectorBufferBase::deallocateBuffer): Clear our m_buffer pointer
- when we deallocate m_buffer, in case we're not asked to reallocate a new
- buffer. (Otherwise, we would use a stale m_buffer if we were asked to
- perform any operations after shrinkCapacity was called.)
-
- (WTF::VectorBuffer::allocateBuffer): Made VectorBuffer with inline
- capacity aware that calls to allocateBuffer might be shrinks, rather
- than grows, so we shouldn't allocate a new buffer on the heap unless
- our inline buffer is too small.
-
- (WTF::::shrinkCapacity): Call resize() instead of just setting m_size,
- so destructors run. Call resize before reallocating the buffer to make
- sure that we still have access to the objects we need to destroy. Call
- moveOverlapping instead of move, since a call to allocateBuffer on an
- inline buffer may produce identical storage.
-
-2008-03-14 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Get rid of a localime() call on platforms that have better alternatives.
-
- * kjs/DateMath.h: Added getLocalTime();
-
- * kjs/DateMath.cpp:
- (KJS::getLocalTime):
- (KJS::getDSTOffsetSimple):
- Implementation moved from getDSTOffsetSimple().
-
- * kjs/date_object.cpp:
- (KJS::DateObjectImp::callAsFunction): Switched to getLocalTime().
-
-2008-03-14 David D. Kilzer <ddkilzer@apple.com>
-
- Unify concept of enabling the Mac Java bridge.
-
- Reviewed by Darin and Anders.
-
- * wtf/Platform.h: Define ENABLE_MAC_JAVA_BRIDGE here.
-
-2008-03-13 Mark Mentovai <mark@moxienet.com>
-
- Reviewed by eseidel. Landed by eseidel.
-
- * wtf/FastMalloc.cpp: #include <wtf/HashSet.h> outside of any
- namespaces.
-
-2008-03-13 Mark Mentovai <mark@moxienet.com>
-
- Reviewed by eseidel. Landed by eseidel.
-
- * pcre/pcre_exec.cpp: Fix misnamed variable, allowing -DDEBUG build
- to succeed.
- * wtf/ThreadingPthreads.cpp: #include <sys/time.h> for gettimeofday
- in non-pch build.
-
-2008-03-13 Steve Falkenburg <sfalken@apple.com>
-
- PGO build fixes.
-
- Disable PGO for normal release builds.
- Added work-in-progress Release_PGOInstrument/Release_PGOOptimize targets.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
-
-2008-03-13 Beth Dakin <bdakin@apple.com>
-
- Reviewed by Geoff.
-
- Adding new functionality to Vector. Currently all of the shrink and
- resize functions on Vector only shrink the size of the Vector, not
- the capacity. For the Vector to take up as little memory as
- possible, though, it is necessary to be able to shrink the capacity
- as well. So this patch adds that functionality.
-
- I need this for a speed up I am working on, and Geoff wants to use
- it in a speed up he is working on also, so he asked me to commit it
- now.
-
- * wtf/Vector.h:
- (WTF::VectorBufferBase::allocateBuffer):
- (WTF::::shrinkCapacity):
-
-2008-03-13 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Adam Roben.
-
- Attempt at fixing the Qt/Windows build bot. Quote using double-quotes
- instead of single quotes.
-
- * pcre/dftables:
-
-2008-03-12 Steve Falkenburg <sfalken@apple.com>
-
- Build fix.
-
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
-
-2008-03-12 Alp Toker <alp@atoker.com>
-
- Another autotools testkjs build fix attempt.
-
- * GNUmakefile.am:
-
-2008-03-12 Alp Toker <alp@atoker.com>
-
- Attempt to fix the autotools testkjs build on systems with
- non-standard include paths.
-
- * GNUmakefile.am:
-
-2008-03-11 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- <rdar://problem/5787743> REGRESSION: Crash at WTF::Collator::CreateCollator() running fast/js/kde/StringObject.html on Windows
-
- * wtf/unicode/icu/CollatorICU.cpp:
- (WTF::Collator::createCollator): Check for null (== user default) m_locale before calling strcmp.
-
-2008-03-11 Steve Falkenburg <sfalken@apple.com>
-
- Disable LTCG/PGO for grammar.cpp and nodes.cpp.
- PGO on these files causes us to hang.
-
- Copy newer vsprops files from relative WebKitLibraries path to environment variable based path.
-
- Reviewed by Oliver.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
-
-2008-03-10 Darin Adler <darin@apple.com>
-
- - Windows build fix
-
- * kjs/function.cpp: (KJS::decode): Initialize variable.
-
-2008-03-10 Brent Fulgham <bfulgham@gmail.com>
-
- Windows build fix
-
- Reviewed by Adam.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
- Set the PATH to include Cygwin before running touch.
-
-2008-03-10 Eric Seidel <eric@webkit.org>
-
- Build fix for JSC on windows.
-
- * API/JSStringRefCF.cpp:
- (JSStringCreateWithCFString):
- * kjs/function.cpp:
- (KJS::decode):
- * kjs/nodes2string.cpp:
- (KJS::escapeStringForPrettyPrinting):
-
-2008-03-10 Eric Seidel <eric@webkit.org>
-
- No review, build fix only.
-
- Attempt to fix the windows build?
-
- * kjs/ustring.h: change unsigned short to UChar
-
-2008-03-10 Eric Seidel <eric@webkit.org>
-
- Reviewed by Darin.
-
- Remove KJS::UChar, use ::UChar instead
- http://bugs.webkit.org/show_bug.cgi?id=17017
-
- * API/JSStringRef.cpp:
- (JSStringCreateWithCharacters):
- (JSStringCreateWithUTF8CString):
- * API/JSStringRefCF.cpp:
- (JSStringCreateWithCFString):
- * JavaScriptCore.exp:
- * kjs/Parser.h:
- * kjs/function.cpp:
- (KJS::decode):
- (KJS::parseInt):
- (KJS::parseFloat):
- (KJS::globalFuncEscape):
- (KJS::globalFuncUnescape):
- * kjs/function_object.cpp:
- (KJS::FunctionObjectImp::construct):
- * kjs/identifier.cpp:
- (KJS::Identifier::equal):
- (KJS::CStringTranslator::translate):
- * kjs/interpreter.h:
- * kjs/lexer.cpp:
- (KJS::Lexer::setCode):
- (KJS::Lexer::shift):
- (KJS::Lexer::lex):
- (KJS::Lexer::convertUnicode):
- (KJS::Lexer::makeIdentifier):
- * kjs/lookup.cpp:
- (KJS::keysMatch):
- * kjs/nodes2string.cpp:
- (KJS::escapeStringForPrettyPrinting):
- (KJS::SourceStream::operator<<):
- * kjs/regexp.cpp:
- (KJS::RegExp::RegExp):
- (KJS::RegExp::match):
- * kjs/string_object.cpp:
- (KJS::substituteBackreferences):
- (KJS::stringProtoFuncCharCodeAt):
- (KJS::stringProtoFuncToLowerCase):
- (KJS::stringProtoFuncToUpperCase):
- (KJS::stringProtoFuncToLocaleLowerCase):
- (KJS::stringProtoFuncToLocaleUpperCase):
- * kjs/ustring.cpp:
- (KJS::UString::Rep::computeHash):
- (KJS::UString::UString):
- (KJS::UString::append):
- (KJS::UString::ascii):
- (KJS::UString::operator=):
- (KJS::UString::is8Bit):
- (KJS::UString::toStrictUInt32):
- (KJS::UString::find):
- (KJS::operator==):
- (KJS::operator<):
- (KJS::compare):
- (KJS::UString::UTF8String):
- * kjs/ustring.h:
- * pcre/pcre.h:
-
-2008-03-09 Steve Falkenburg <sfalken@apple.com>
-
- Stop Windows build if an error occurs in a prior project.
-
- Rubber stamped by Darin.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
-
-2008-03-09 J¸rg Billeter <j@bitron.ch>
-
- Reviewed by Alp Toker.
-
- Conditionalise ICU for Unicode in the GTK+ port.
-
- * wtf/Platform.h:
-
-2008-03-07 David D. Kilzer <ddkilzer@apple.com>
-
- Unify concept of enabling Netscape Plug-in API (NPAPI).
-
- Reviewed by Darin.
-
- * wtf/Platform.h: Define ENABLE_NETSCAPE_PLUGIN_API here.
-
-2008-03-07 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Fixed <rdar://problem/5689093> Stricter (ES4) eval semantics
-
- The basic rule is:
-
- - "eval(s)" is treated as an operator that gives the ES3 eval behavior.
- ... but only if there is no overriding declaration of "eval" in scope.
- - All other invocations treat eval as a function that evaluates a
- script in the context of its "this" object.
- ... but if its "this" object is not the global object it was
- originally associated with, eval throws an exception.
-
- Because only expressions of the form "eval(s)" have access to local
- scope, the compiler can now statically determine whether a function
- needs local scope to be dynamic.
-
- * kjs/nodes.h: Added FunctionCallEvalNode. It works just like
- FuncationCallResolveNode, except it statically indicates that the node
- may execute eval in the ES3 way.
- * kjs/nodes.cpp:
- * kjs/nodes2string.cpp:
-
- * tests/mozilla/expected.html: This patch happens to fix a Mozilla JS
- test, but it's a bit of a pyrrhic victory. The test intends to test
- Mozilla's generic API for calling eval on any object, but, in reality,
- we only support calling eval on the global object.
-
-2008-03-06 Steve Falkenburg <sfalken@apple.com>
-
- Build fix.
-
- * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
-
-2008-03-06 Steve Falkenburg <sfalken@apple.com>
-
- Build fix.
-
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
-
-2008-03-06 Alp Toker <alp@atoker.com>
-
- Fix the build fix in r30845 to support out-of-tree builds.
-
- * GNUmakefile.am:
-
-2008-03-06 Steve Falkenburg <sfalken@apple.com>
-
- Build fix.
-
- * wtf/ThreadingWin.cpp:
- (WTF::ThreadCondition::timedWait):
-
-2008-03-06 Darin Adler <darin@apple.com>
-
- - another small step towards fixing the Qt build
-
- * JavaScriptCore.pri: Remove more references to the now-obsolete bindings directory.
-
-2008-03-06 Darin Adler <darin@apple.com>
-
- - a small step towards fixing the Qt build
-
- * JavaScriptCore.pri: Remove references to files no longer present in JavaScriptCore/bindings.
-
-2008-03-06 Brady Eidson <beidson@apple.com>
-
- Gtk Build fix
-
- * wtf/ThreadingGtk.cpp:
- (WTF::ThreadCondition::timedWait):
-
-2008-03-06 Alexey Proskuryakov <ap@webkit.org>
-
- Wx build fix.
-
- * wtf/unicode/icu/CollatorICU.cpp:
- (WTF::Collator::userDefault): Put ICU workaround under both PLATFORM(DARWIN) and
- PLATFORM(CF) checks, so that each port can decide if it wants to use CF on Mac for it.
-
-2008-03-06 Brady Eidson <beidson@apple.com>
-
- Reviewed by Darin
-
- Add a timedWait() method to ThreadCondition
-
- * JavaScriptCore.exp:
-
- * wtf/Threading.h:
-
- * wtf/ThreadingGtk.cpp:
- (WTF::ThreadCondition::timedWait):
-
- * wtf/ThreadingNone.cpp:
- (WTF::ThreadCondition::timedWait):
-
- * wtf/ThreadingPthreads.cpp:
- (WTF::ThreadCondition::timedWait):
-
- * wtf/ThreadingWin.cpp:
- (WTF::ThreadCondition::timedWait): Needs implementation
-
-2008-03-06 Alexey Proskuryakov <ap@webkit.org>
-
- More build fixes.
-
- * jscore.bkl: Add the wtf/unicode directory.
- * wtf/unicode/CollatorDefault.cpp:
- (WTF::Collator::userDefault): Use a constructor that does exist.
- * wtf/unicode/icu/CollatorICU.cpp: Mac build fix for case-sensitive file systems.
-
-2008-03-06 Darin Adler <darin@apple.com>
-
- - try to fix the Qt build
-
- * JavaScriptCore.pri: Add the wtf/unicode directory.
-
-2008-03-06 Darin Adler <darin@apple.com>
-
- - try to fix the GTK build
-
- * GNUmakefile.am: Add a -I for the wtf/unicode directory.
-
-2008-03-06 Darin Adler <darin@apple.com>
-
- - try to fix the Mac build
-
- * icu/unicode/parseerr.h: Copied from ../WebCore/icu/unicode/parseerr.h.
- * icu/unicode/ucol.h: Copied from ../WebCore/icu/unicode/ucol.h.
- * icu/unicode/uloc.h: Copied from ../WebCore/icu/unicode/uloc.h.
- * icu/unicode/unorm.h: Copied from ../WebCore/icu/unicode/unorm.h.
- * icu/unicode/uset.h: Copied from ../WebCore/icu/unicode/uset.h.
-
-2008-03-06 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- <rdar://problem/5687269> Need to create a Collator abstraction for WebCore and JavaScriptCore
-
- * wtf/Threading.h:
- (WTF::initializeThreading):
- * wtf/ThreadingGtk.cpp:
- (WTF::initializeThreading):
- * wtf/ThreadingNone.cpp:
- * wtf/ThreadingPthreads.cpp:
- * wtf/ThreadingWin.cpp:
- Added AtomicallyInitializedStatic.
-
- * kjs/string_object.cpp: (KJS::localeCompare): Changed to use Collator.
-
- * GNUmakefile.am:
- * JavaScriptCore.exp:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- Added new fiiles to projects.
-
- * wtf/unicode/Collator.h: Added.
- (WTF::Collator::):
- * wtf/unicode/CollatorDefault.cpp: Added.
- (WTF::Collator::Collator):
- (WTF::Collator::~Collator):
- (WTF::Collator::setOrderLowerFirst):
- (WTF::Collator::collate):
- * wtf/unicode/icu/CollatorICU.cpp: Added.
- (WTF::cachedCollatorMutex):
- (WTF::Collator::Collator):
- (WTF::Collator::~Collator):
- (WTF::Collator::setOrderLowerFirst):
- (WTF::Collator::collate):
- (WTF::Collator::createCollator):
- (WTF::Collator::releaseCollator):
-
-2008-03-05 Kevin Ollivier <kevino@theolliviers.com>
-
- Fix the wx build after the bindings move.
-
- * JavaScriptCoreSources.bkl:
- * jscore.bkl:
-
-2008-03-05 Alp Toker <alp@atoker.com>
-
- GTK+ build fix for breakage introduced in r30800.
-
- Track moved bridge sources from JavaScriptCore to WebCore.
-
- * GNUmakefile.am:
-
-2008-03-05 Brent Fulgham <bfulgham@gmail.com>
-
- Reviewed by Adam Roben.
-
- Remove definition of WTF_USE_SAFARI_THEME from wtf/Platform.h
- because the PLATFORM(CG) flag is not set until config.h has
- already included this file.
-
- * wtf/Platform.h: Remove useless definition of WTF_USE_SAFARI_THEME
-
-2008-03-05 Brady Eidson <beidson@apple.com>
-
- Reviewed by Alexey and Mark Rowe
-
- Fix for <rdar://problem/5778247> - Reproducible crash on storage/execute-sql-args.html
-
- DatabaseThread::unscheduleDatabaseTasks() manually filters through a MessageQueue,
- removing particular items for Databases that were shutting down.
-
- This filtering operation is not atomic, and therefore causes a race condition with the
- MessageQueue waking up and reading from the message queue.
-
- The end result was an attempt to dereference a null DatabaseTask. Timing-wise, this never
- seemed to happen in a debug build, otherwise an assertion would've caught it. Replacing that
- assertion with a crash in a release build is what revealed this bug.
-
- * wtf/MessageQueue.h:
- (WTF::::waitForMessage): Tweak the waiting logic to check the queue's empty state then go back
- to sleep if the queue was empty - checking m_killed each time it wakes up.
-
-2008-03-05 David D. Kilzer <ddkilzer@apple.com>
-
- Remove unused header includes from interpreter.cpp.
-
- Reviewed by Darin.
-
- * kjs/interpreter.cpp: Remove unused header includes.
-
-2008-03-05 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam.
-
- Remove bindings/.
-
- * bindings: Removed.
-
-2008-03-05 Anders Carlsson <andersca@apple.com>
-
- Don't build bindings/ anymore.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
-
-2008-03-05 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Geoff.
-
- Don't build JavaScriptCore/bindings.
-
- * JavaScriptCore.exp:
- Export a couple of new functions.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- Remove bindings/
-
- * kjs/config.h:
- No need to define HAVE_JNI anymore.
-
- * kjs/interpreter.cpp:
- Remove unnecessary include.
-
-2008-03-05 David D. Kilzer <ddkilzer@apple.com>
-
- Allow override of default script file name using command-line argument.
-
- Reviewed by Adele.
-
- * API/minidom.c:
- (main): Allow first command-line argument to override the default script
- file name of "minidom.js".
- * API/testapi.c:
- (main): Allow first command-line argument to override the default script
- file name of "testapi.js".
-
-2008-03-04 Mark Rowe <mrowe@apple.com>
-
- Mac build fix.
-
- * JavaScriptCore.exp: Add new symbol to exports file.
-
-2008-03-03 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Anders.
-
- Make ForInNode check for the timeout interrupt
-
- * kjs/nodes.cpp:
- (KJS::ForInNode::execute):
-
-2008-03-02 Brent Fulgham <bfulgham@gmail.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=17415
- GTK Build (using autotools) on Mac OS (DarwinPorts) Fails
-
- Add -lstdc++ to link flags for minidom program. This corrects
- a build error for the GTK+ on Mac OS.
-
- * GNUmakefile.am:
-
-2008-03-01 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Tim Hatcher.
-
- Update Xcode configuration to support building debug and release from the mysterious future.
-
- * Configurations/Base.xcconfig:
- * Configurations/DebugRelease.xcconfig:
-
-2008-02-29 Brent Fulgham <bfulgham@gmail.com>
-
- http://bugs.webkit.org/show_bug.cgi?id=17483
- Implement scrollbars on Windows (Cairo)
-
- Reviewed by Adam Roben.
-
- * wtf/Platform.h:
-
-2008-02-29 Adam Roben <aroben@apple.com>
-
- Remove unused DebuggerImp::abort and DebuggerImp::aborted
-
- Reviewed by Tim and Sam.
-
- * kjs/function_object.cpp:
- (KJS::FunctionObjectImp::construct):
- * kjs/internal.h:
- (KJS::DebuggerImp::DebuggerImp):
- * kjs/nodes.cpp:
- (KJS::Node::handleException):
- (KJS::FunctionBodyNodeWithDebuggerHooks::execute):
-
-2008-02-28 Eric Christopher <echristo@apple.com>
-
- Reviewed by Geoffrey Garen.
-
- ** TOTAL **: 1.005x as fast 2867.6ms +/- 0.4% 2853.2ms +/- 0.3% significant
-
- * kjs/nodes.cpp: Tell the compiler that exceptions are unexpected (for
- the sake of branch prediction and code organization).
-
-2008-02-27 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Sam Weinig.
-
- http://bugs.webkit.org/show_bug.cgi?id=17030
- Small buffer overflow within initialization
-
- * kjs/date_object.cpp:
- (KJS::DateObjectFuncImp::callAsFunction):
- (KJS::parseDate):
- Remove unnecessary and incorrect memset() calls - GregorianDateTime can initialize itself.
-
-2008-02-25 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- - Add a variant of remove that takes a position and a length.
-
- * wtf/Vector.h:
- (WTF::Vector::remove):
-
-2008-02-25 Mark Mentovai <mark@moxienet.com>
-
- Reviewed by Mark Rowe.
-
- Enable CollectorHeapIntrospector to build by itself, as well as in an AllInOneFile build.
- http://bugs.webkit.org/show_bug.cgi?id=17538
-
- * kjs/CollectorHeapIntrospector.cpp: Provide "using" declaration for
- WTF::RemoteMemoryReader.
- * kjs/collector.h: Move CollectorHeap declaration here...
- * kjs/collector.cpp: ... from here.
-
-2008-02-25 Darin Adler <darin@apple.com>
-
- Reviewed by Adam.
-
- * JavaScriptCore.exp: Sort the contents of this file.
-
-2008-02-25 Adam Roben <aroben@apple.com>
-
- MSVC build fix
-
- * kjs/testkjs.cpp:
- (functionQuit): Don't add a return statement after exit(0) for MSVC.
-
-2008-02-24 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- http://bugs.webkit.org/show_bug.cgi?id=17529
- Add support for reading from stdin from testkjs
-
- * kjs/testkjs.cpp:
- (GlobalObject::GlobalObject): Add readline function to global object.
- (functionReadline): Added. Reads characters from stdin until a '\n' or
- EOF is encountered. The input is returned as a String to the caller.
-
-2008-02-24 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- http://bugs.webkit.org/show_bug.cgi?id=17528
- Give testkjs a bath
-
- * JavaScriptCore.exp:
- * JavaScriptCore.xcodeproj/project.pbxproj: Make the testkjs.cpp use 4 space indentation.
- * kjs/testkjs.cpp:
- (StopWatch::getElapsedMS):
- (GlobalObject::className):
- (GlobalObject::GlobalObject):
- Rename GlobalImp to GlobalObject and setup the global functions
- in the GlobalObject's constructor. Also, use static functions for
- the implementation so we can use the standard PrototypeFunction
- class and remove TestFunctionImp.
- (functionPrint): Move print() functionality here.
- (functionDebug): Move debug() functionality here.
- (functionGC): Move gc() functionality here.
- (functionVersion): Move version() functionality here.
- (functionRun): Move run() functionality here.
- (functionLoad): Move load() functionality here.
- (functionQuit): Move quit() functionality here.
- (prettyPrintScript): Fix indentation.
- (runWithScripts): Since all the functionality of createGlobalObject is
- now in the GlobalObject constructor, just call new here.
- (parseArguments): Fix indentation.
- (kjsmain): Ditto
- (fillBufferWithContentsOfFile): Ditto.
-
-2008-02-24 Sam Weinig <sam@webkit.org>
-
- Reviewed by Oliver Hunt and Mark Rowe.
-
- http://bugs.webkit.org/show_bug.cgi?id=17505
- Add support for getting command line arguments in testkjs
-
- - This slightly changes the behavior of parsing arguments by requiring
- a '-f' before all files.
-
- * kjs/testkjs.cpp:
- (createGlobalObject): Add a global property called 'arguments' which
- contains an array with the parsed arguments as strings.
- (runWithScripts): Pass in the arguments vector so that it can be passed
- to the global object.
- (parseArguments): Change parsing rules to require a '-f' before any script
- file. After all '-f' and '-p' arguments have been parsed, the remaining
- are added to the arguments vector and exposed to the script. If there is a
- chance of ambiguity (the user wants to pass the string '-f' to the script),
- the string '--' can be used separate the options from the pass through
- arguments.
- (kjsmain):
-
-2008-02-24 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Darin Adler.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=17511
- REGRESSION: Reproducible crash in SegmentedSubstring::SegmentedSubstring(SegmentedSubstring const&)
-
- * wtf/Deque.h:
- (WTF::::expandCapacityIfNeeded): Fixed the case where m_start and m_end
- are both zero but the buffer capacity is non-zero.
- (WTF::::prepend): Added validity checks.
-
-2008-02-23 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Rubber stamped by Darin.
-
- Add separator '\' after libJavaScriptCore_la_LIBADD and cleanup
- whitespaces introduced in the previous commit.
-
- * GNUmakefile.am:
-
-2008-02-23 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- * GNUmakefile.am: Add GLOBALDEPS for testkjs and minidom.
-
-2008-02-23 Darin Adler <darin@apple.com>
-
- Reviewed by Anders.
-
- - http://bugs.webkit.org/show_bug.cgi?id=17496
- make Deque use a circular array; add iterators
-
- * wtf/Deque.h: Wrote an all-new version of this class that uses a circular
- buffer. Growth policy is identical to vector. Added iterators.
-
- * wtf/Vector.h: Made two small refinements while using this to implement
- Deque: Made VectorBufferBase derive from Noncopyable, which would have
- saved me some debugging time if it had been there. Renamed Impl and
- m_impl to Buffer and m_buffer.
-
-2008-02-23 Darin Adler <darin@apple.com>
-
- Reviewed by Anders.
-
- - http://bugs.webkit.org/show_bug.cgi?id=17067
- eliminate attributes parameter from JSObject::put for speed/clarity
-
- * API/JSCallbackObject.h: Removed attribute arguments.
- * API/JSCallbackObjectFunctions.h:
- (KJS::JSCallbackObject<Base>::put): Ditto.
- * API/JSObjectRef.cpp:
- (JSObjectSetProperty): Use initializeVariable or putDirect when necessary
- to set attribute values.
- * JavaScriptCore.exp: Updated.
- * bindings/objc/objc_runtime.h: Removed attribute arguments.
- * bindings/objc/objc_runtime.mm:
- (ObjcFallbackObjectImp::put): Ditto.
- * bindings/runtime_array.cpp:
- (RuntimeArray::put): Ditto.
- * bindings/runtime_array.h: Ditto.
- * bindings/runtime_object.cpp:
- (RuntimeObjectImp::put): Ditto.
- * bindings/runtime_object.h: Ditto. Also removed canPut which was only
- called from one place in WebCore that can use hasProperty instead.
-
- * kjs/Activation.h: Removed attribute argument from put and added the new
- initializeVariable function that's used to put variables in variable objects.
- Also made isActivationObject a const member.
-
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::put): Removed attribute argument.
- (KJS::JSGlobalObject::initializeVariable): Added. Used to give variables
- their initial values, which can include the read-only property.
- (KJS::JSGlobalObject::reset): Removed obsolete comments about flags.
- Removed Internal flag, which is no longer needed.
- * kjs/JSGlobalObject.h: More of the same.
-
- * kjs/JSVariableObject.h: Added pure virtual initializeVariable function.
- (KJS::JSVariableObject::symbolTablePut): Removed checkReadOnly flag; we always
- check read-only.
- (KJS::JSVariableObject::symbolTableInitializeVariable): Added.
-
- * kjs/array_instance.cpp:
- (KJS::ArrayInstance::put): Removed attribute argument.
- * kjs/array_instance.h: Ditto.
-
- * kjs/function.cpp:
- (KJS::FunctionImp::put): Ditto.
- (KJS::Arguments::put): Ditto.
- (KJS::ActivationImp::put): Ditto.
- (KJS::ActivationImp::initializeVariable): Added.
- * kjs/function.h: Removed attribute arguments.
-
- * kjs/function_object.cpp:
- (KJS::FunctionObjectImp::construct): Removed Internal flag.
-
- * kjs/lookup.h:
- (KJS::lookupPut): Removed attributes argument. Also changed to use putDirect
- instead of calling JSObject::put.
- (KJS::cacheGlobalObject): Ditto.
-
- * kjs/nodes.cpp:
- (KJS::ConstDeclNode::handleSlowCase): Call initializeVariable to initialize
- the constant.
- (KJS::ConstDeclNode::evaluateSingle): Ditto.
- (KJS::TryNode::execute): Use putDirect to set up the new object.
- (KJS::FunctionBodyNode::processDeclarations): Removed Internal.
- (KJS::ProgramNode::processDeclarations): Ditto.
- (KJS::EvalNode::processDeclarations): Call initializeVariable to initialize
- the variables and functions.
- (KJS::FuncDeclNode::makeFunction): Removed Internal.
- (KJS::FuncExprNode::evaluate): Ditto.
-
- * kjs/object.cpp: Removed canPut, which was only being used in one code path,
- not the normal high speed one.
- (KJS::JSObject::put): Removed attribute argument. Moved the logic from
- canPut here, in the one code ath that was still using it.
- * kjs/object.h: Removed Internal attribute, ad canPut function. Removed the
- attributes argument to the put function. Made isActivationObject const.
-
- * kjs/regexp_object.cpp:
- (KJS::RegExpImp::put): Removed attributes argument.
- (KJS::RegExpImp::putValueProperty): Ditto.
- (KJS::RegExpObjectImp::put): Ditto.
- (KJS::RegExpObjectImp::putValueProperty): Ditto.
- * kjs/regexp_object.h: Ditto.
-
- * kjs/string_object.cpp:
- (KJS::StringInstance::put): Removed attributes argument.
- * kjs/string_object.h: Ditto.
-
-2008-02-23 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Not reviewed, Gtk build fix.
-
- * kjs/testkjs.pro:
-
-2008-02-23 Alexey Proskuryakov <ap@webkit.org>
-
- Windows build fix - move ThreadCondition implementation from WebCore to WTF.
-
- * wtf/ThreadingWin.cpp:
- (WTF::ThreadCondition::ThreadCondition):
- (WTF::ThreadCondition::~ThreadCondition):
- (WTF::ThreadCondition::wait):
- (WTF::ThreadCondition::signal):
- (WTF::ThreadCondition::broadcast):
-
-2008-02-23 Alexey Proskuryakov <ap@webkit.org>
-
- Touch some files, hoping that Windows build bot will create JSC headers.
-
- * kjs/AllInOneFile.cpp:
- * kjs/array_instance.cpp:
- * wtf/HashTable.cpp:
-
-2008-02-23 Alexey Proskuryakov <ap@webkit.org>
-
- Qt/Wx build fix - this file was still in a wrong namespace, too.
-
- * wtf/ThreadingNone.cpp:
-
-2008-02-23 Alexey Proskuryakov <ap@webkit.org>
-
- More build fixing - fix mismatched braces.
-
- * JavaScriptCore.pri:
-
-2008-02-23 Alexey Proskuryakov <ap@webkit.org>
-
- Wx and Gtk build fixes.
-
- * JavaScriptCore.pri: Don't try to compile ThreadingPthreads.
- * wtf/ThreadingGtk.cpp: Use a correct namespace.
-
-2008-02-23 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- Move basic threading support from WebCore to WTF.
-
- Added mutex protection to MessageQueue::killed() for paranoia sake.
-
- * GNUmakefile.am:
- * JavaScriptCore.exp:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * wtf/Locker.h: Copied from WebCore/platform/Locker.h.
- * wtf/MessageQueue.h: Copied from WebCore/platform/MessageQueue.h.
- (WTF::::killed):
- * wtf/Threading.h: Copied from WebCore/platform/Threading.h.
- * wtf/ThreadingGtk.cpp: Copied from WebCore/platform/gtk/ThreadingGtk.cpp.
- (WebCore::createThread):
- * wtf/ThreadingNone.cpp: Copied from WebCore/platform/ThreadingNone.cpp.
- * wtf/ThreadingPthreads.cpp: Copied from WebCore/platform/pthreads/ThreadingPthreads.cpp.
- (WTF::createThread):
- * wtf/ThreadingWin.cpp: Copied from WebCore/platform/win/ThreadingWin.cpp.
- (WTF::createThread):
- (WTF::Mutex::Mutex):
- (WTF::Mutex::~Mutex):
- (WTF::Mutex::lock):
- (WTF::Mutex::tryLock):
- (WTF::Mutex::unlock):
-
-2008-02-22 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Partial fix for <rdar://problem/5744037> Gmail out of memory (17455)
-
- I'm removing KJS_MEM_LIMIT for the following reasons:
-
- - We have a few reports of KJS_MEM_LIMIT breaking important web
- applications, like GMail and Google Reader. (For example, if you
- simply open 12 GMail tabs, tab #12 will hit the limit.)
-
- - Firefox has no discernable JS object count limit, so any limit, even
- a large one, is a potential compatibility problem.
-
- - KJS_MEM_LIMIT does not protect against malicious memory allocation,
- since there are many ways to maliciously allocate memory without
- increasing the JS object count.
-
- - KJS_MEM_LIMIT is already mostly broken, since it only aborts the
- script that breaches the limit, not any subsequent scripts.
-
- - We've never gotten bug reports about websites that would have
- benefited from an unbroken KJS_MEM_LIMIT. The initial check-in of
- KJS_MEM_LIMIT (KJS revision 80061) doesn't mention a website that
- needed it.
-
- - Any website that brings you anywhere close to crashing due to the
- number of live JS objects will almost certainly put up the "slow
- script" dialog at least 20 times beforehand.
-
- * kjs/collector.cpp:
- (KJS::Collector::collect):
- * kjs/collector.h:
- * kjs/nodes.cpp:
- (KJS::TryNode::execute):
-
-2008-02-22 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Alexey P.
-
- <rdar://problem/5759327> REGRESSION: while(NaN) acts like while(true)
-
- Fix yet another case where we incorrectly relied on implicit double
- to bool coercion.
-
- * kjs/nodes.cpp:
- (KJS::PostDecLocalVarNode::evaluateToBoolean):
-
-2008-02-20 Michael Knaup <michael.knaup@mac.com>
-
- Reviewed by Darin.
-
- Fix for Bug 16753: date set methods with no args should result in NaN (Acid3 bug)
- The set values result in NaN now when called with no args, NaN or +/- inf values.
- The setYear, setFullYear and setUTCFullYear methods used on NaN dates work as
- descripted in the standard.
-
- * kjs/date_object.cpp:
- (KJS::fillStructuresUsingTimeArgs):
- (KJS::fillStructuresUsingDateArgs):
- (KJS::setNewValueFromTimeArgs):
- (KJS::setNewValueFromDateArgs):
- (KJS::dateProtoFuncSetYear):
-
-2008-02-19 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Darin.
-
- Change OpaqueJSClass and RootObject to start with a ref count of 1.
-
- * API/JSClassRef.cpp:
- (OpaqueJSClass::OpaqueJSClass):
- (OpaqueJSClass::createNoAutomaticPrototype):
- (OpaqueJSClass::create):
- * API/JSClassRef.h:
- * API/JSObjectRef.cpp:
- (JSClassCreate):
- * bindings/runtime_root.cpp:
- (KJS::Bindings::RootObject::create):
- (KJS::Bindings::RootObject::RootObject):
-
-2008-02-19 Darin Adler <darin@apple.com>
-
- Rubber stamped by Anders.
-
- - removed explicit initialization to 1 for RefCounted; that's now the default
-
- * kjs/regexp.cpp:
- (KJS::RegExp::RegExp): Removed RefCounted initializer.
-
-2008-02-19 Darin Adler <darin@apple.com>
-
- Reviewed by Anders.
-
- - next step for http://bugs.webkit.org/show_bug.cgi?id=17257
- start ref counts at 1 instead of 0 for speed
-
- * wtf/RefCounted.h:
- (WTF::RefCounted::RefCounted): Have refcounts default to 1. This allows us to start
- removing the explicit initialization of RefCounted from classes and eventually we
- can remove the ability to have the initial count of 0 entirely.
-
-2008-02-18 Samuel Weinig <sam@webkit.org>
-
- Reviewed by Geoff Garen.
-
- Fix for http://bugs.webkit.org/show_bug.cgi?id=17419
- Remove CompatMode from JavaScriptCore as it is never set to anything other than NativeMode
-
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::init):
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::setDebugger):
- * kjs/date_object.cpp:
- (KJS::dateProtoFuncGetYear):
-
-2008-02-18 Darin Adler <darin@apple.com>
-
- Reviewed by Sam.
-
- * wtf/ASCIICType.h:
- (WTF::toASCIIHexValue): Added.
-
-2008-02-17 Darin Adler <darin@apple.com>
-
- * wtf/ListHashSet.h: (WTF::swap): Removed stray return statement.
-
-2008-02-15 Adam Roben <aroben@apple.com>
-
- Make JavaScriptCore's FEATURE_DEFINES match WebCore's
-
- Reviewed by Mark.
-
- * Configurations/JavaScriptCore.xcconfig:
-
-2008-02-14 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Geoff.
-
- Update order files.
-
- * JavaScriptCore.order:
-
-2008-02-14 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Fixed <rdar://problem/5737835> nee http://bugs.webkit.org/show_bug.cgi?id=17329
- Crash in JSGlobalObject::popActivation when inserting hyperlink in Wordpress (17329)
-
- Don't reset the "activations" stack in JSGlobalObject::reset, since we
- might be executing a script during the call to reset, and the script
- needs to safely run to completion.
-
- Instead, initialize the "activations" stack when the global object is
- created, and subsequently rely on pushing and popping during normal
- execution to maintain the stack's state.
-
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::init):
- (KJS::JSGlobalObject::reset):
-
-2008-02-13 Bernhard Rosenkraenzer <bero@arklinux.org>
-
- Reviewed by Darin.
-
- - http://bugs.webkit.org/show_bug.cgi?id=17339
- JavaScriptCore does not build with gcc 4.3
-
- * kjs/interpreter.cpp: Add include of <unistd.h>, since that's where
- getpid() comes from.
-
-2008-02-13 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Alexey P.
-
- <rdar://problem/5737003> REGRESSION (r27747): can't browse pictures on fastcupid.com
-
- When converting numeric values to booleans we need to account for NaN
-
- * kjs/nodes.cpp:
- (KJS::MultNode::evaluateToBoolean):
- (KJS::ModNode::evaluateToBoolean):
-
-2008-02-08 Samuel Weinig <sam@webkit.org>
-
- Reviewed by Brady Eidson.
-
- <rdar://problem/5659216> REGRESSION: PLT 0.3% slower due to r28868 (caching ClassNodeList and NamedNodeList)
-
- - Tweak the statements in isASCIISpace to account for the statistical distribution of
- usage in the PLT.
-
- .4% speedup on my machine. Stephanie's machine shows this as .3% speedup.
-
- * wtf/ASCIICType.h:
- (WTF::isASCIISpace):
-
-2008-02-11 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Fixes for:
- <rdar://problem/5735497> Match Firefox's cross-domain model more accurately by return the built-in version of functions even if they have been overridden
- <rdar://problem/5735443> Crash when setting the Window objects prototype to a custom Object and then calling a method on it
-
- - Expose the native Object.prototype.toString implementation so that it can be used for cross-domain
- toString calling.
-
- * JavaScriptCore.exp:
- * kjs/object_object.cpp:
- * kjs/object_object.h:
-
-2008-02-10 Darin Adler <darin@apple.com>
-
- Rubber stamped by Eric.
-
- * kjs/ExecState.h:
- (KJS::ExecState::takeException): Added.
-
-2008-02-10 Darin Adler <darin@apple.com>
-
- Reviewed by Eric.
-
- - http://bugs.webkit.org/show_bug.cgi?id=17256
- eliminate default ref. count of 0 in RefCounted class
-
- * wtf/RefCounted.h:
- (WTF::RefCounted::RefCounted): Remove default of 0.
-
-2008-02-10 Darin Adler <darin@apple.com>
-
- Reviewed by Eric.
-
- - http://bugs.webkit.org/show_bug.cgi?id=17256
- Make clients of RefCounted explicitly set the count to 0.
-
- * API/JSClassRef.cpp:
- (OpaqueJSClass::OpaqueJSClass):
- * bindings/runtime_root.cpp:
- (KJS::Bindings::RootObject::RootObject):
-
-2008-02-09 Darin Adler <darin@apple.com>
-
- Reviewed by Mitz.
-
- - http://bugs.webkit.org/show_bug.cgi?id=17256
- Change RegExp to start its ref count at 1, not 0
-
- We'll want to do this to every RefCounted class, one at a time.
-
- * kjs/nodes.h:
- (KJS::RegExpNode::RegExpNode): Use RegExp::create instead of new RegExp.
- * kjs/regexp.cpp:
- (KJS::RegExp::RegExp): Marked inline, set initial ref count to 1.
- (KJS::RegExp::create): Added. Calls new RegExp then adopts the initial ref.
- * kjs/regexp.h: Reformatted. Made the constructors private. Added static
- create functions that return objects already wrapped in PassRefPtr.
- * kjs/regexp_object.cpp:
- (KJS::regExpProtoFuncCompile): Use RegExp::create instead of new RegExp.
- (KJS::RegExpObjectImp::construct): Ditto.
- * kjs/string_object.cpp:
- (KJS::stringProtoFuncMatch): Ditto.
- (KJS::stringProtoFuncSearch): Ditto.
-
-2008-02-08 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- <rdar://problem/5731773> REGRESSION (r28973): Extraneous parentheses in function.toString()
- https://bugs.webkit.org/show_bug.cgi?id=17214
-
- Make a subclass of CommaNode to provide the correct precedence for each expression in
- a variable declaration list.
-
- * kjs/grammar.y:
- * kjs/nodes.h:
- (KJS::VarDeclCommaNode::):
-
-2008-02-08 Darin Adler <darin@apple.com>
-
- Reviewed by Oliver.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=17247
- Labelled continue/break can fail in some cases
-
- Test: fast/js/continue-break-multiple-labels.html
-
- * kjs/nodes.h:
- (KJS::StatementNode::pushLabel): Made this virtual.
- (KJS::LabelNode::pushLabel): Forward pushLabel calls to the statement inside.
-
-2008-02-08 Darin Adler <darin@apple.com>
-
- Reviewed by Eric.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=15003
- Function.prototype.constructor should not be DontDelete/ReadOnly (Acid3 bug)
-
- Test: fast/js/constructor-attributes.html
-
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::reset): Remove unwanted attributes from "constructor".
- * kjs/function_object.cpp:
- (KJS::FunctionObjectImp::construct): Ditto.
- * kjs/nodes.cpp:
- (KJS::FuncDeclNode::makeFunction): Ditto.
- (KJS::FuncExprNode::evaluate): Ditto.
-
-2008-02-06 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Added an ASSERT to catch refCount underflow, since it caused a leak in
- my last check-in.
-
- * wtf/RefCounted.h:
- (WTF::RefCounted::deref):
-
-2008-02-06 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- PLT speedup related to <rdar://problem/5659272> REGRESSION: PLT .4%
- slower due to r28884 (global variable symbol table optimization)
-
- Tweaked RefCounted::deref() to be a little more efficient.
-
- 1% - 1.5% speedup on my machine. .7% speedup on Stephanie's machine.
-
- * wtf/RefCounted.h:
- (WTF::RefCounted::deref): Don't modify m_refCount if we're just going
- to delete the object anyway. Also, use a simple == test, which might be
- faster than <= on some hardware.
-
-2008-02-06 Darin Adler <darin@apple.com>
-
- Reviewed by Sam.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=17094
- Array.prototype functions create length properties with DontEnum/DontDelete
-
- Test results match Gecko with very few obscure exceptions that seem to be
- bugs in Gecko.
-
- Test: fast/js/array-functions-non-arrays.html
-
- * kjs/array_object.cpp:
- (KJS::arrayProtoFuncConcat): Removed DontEnum and DontDelete from the call
- to set length.
- (KJS::arrayProtoFuncPop): Ditto. Also added missing call to deleteProperty,
- which is not needed for real arrays, but is needed for non-arrays.
- (KJS::arrayProtoFuncPush): Ditto.
- (KJS::arrayProtoFuncShift): Ditto.
- (KJS::arrayProtoFuncSlice): Ditto.
- (KJS::arrayProtoFuncSort): Removed incorrect call to set length when
- the array has no elements.
- (KJS::arrayProtoFuncSplice): Removed DontEnum and DontDelete from the call
- to set length.
- (KJS::arrayProtoFuncUnShift): Ditto. Also added a check for 0 arguments to
- make behavior match the specification in that case.
- * kjs/nodes.cpp:
- (KJS::ArrayNode::evaluate): Removed DontEnum and DontDelete from the call
- to set length.
-
-2008-02-06 Darin Adler <darin@apple.com>
-
- Reviewed by Sam.
-
- - replace calls to put to set up properties with calls to putDirect, to
- prepare for a future change where put won't take attributes any more,
- and for a slight performance boost
-
- * API/JSObjectRef.cpp:
- (JSObjectMakeConstructor): Use putDirect instead of put.
- * kjs/CommonIdentifiers.h: Removed lastIndex.
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::reset): Use putDirect instead of put.
- * kjs/array_object.cpp:
- (KJS::arrayProtoFuncConcat): Took out extra call to get length (unused).
- (KJS::ArrayObjectImp::ArrayObjectImp): Use putDirect instead of put.
- * kjs/error_object.cpp:
- (KJS::ErrorPrototype::ErrorPrototype): Use putDirect instead of put.
- * kjs/function.cpp:
- (KJS::Arguments::Arguments): Use putDirect instead of put.
- (KJS::PrototypeFunction::PrototypeFunction): Use putDirect instead of put.
- * kjs/function_object.cpp:
- (KJS::FunctionObjectImp::construct): Use putDirect instead of put.
- * kjs/nodes.cpp:
- (KJS::FuncDeclNode::makeFunction): Use putDirect instead of put.
- (KJS::FuncExprNode::evaluate): Use putDirect instead of put.
- * kjs/regexp_object.cpp:
- (KJS::regExpProtoFuncCompile): Use setLastIndex instead of put(lastIndex).
- (KJS::RegExpImp::match): Get and set lastIndex by using m_lastIndex instead of
- calling get and put.
- * kjs/regexp_object.h:
- (KJS::RegExpImp::setLastIndex): Added.
- * kjs/string_object.cpp:
- (KJS::stringProtoFuncMatch): Use setLastIndex instead of put(lastIndex).
-
-2008-02-05 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Fix for http://bugs.webkit.org/show_bug.cgi?id=8080
- NodeList (and other DOM lists) items are not enumeratable using for..in
-
- * JavaScriptCore.exp:
-
-2008-02-05 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Update versioning to support the mysterious future.
-
- * Configurations/Version.xcconfig: Add SYSTEM_VERSION_PREFIX_1060.
-
-2008-02-04 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver Hunt.
-
- Fixes Bug 16889: REGRESSION (r29425): Canvas-based graphing calculator fails to run
- Bug 17015: REGRESSION (r29414-29428): www.fox.com "shows" menu fails to render
- Bug 17164: REGRESSION: JavaScript pop-up menu appears at wrong location when hovering image at http://news.chinatimes.com/
-
- <http://bugs.webkit.org/show_bug.cgi?id=16889>
- <rdar://problem/5696255>
-
- <http://bugs.webkit.org/show_bug.cgi?id=17015>
-
- <http://bugs.webkit.org/show_bug.cgi?id=17164>
- <rdar://problem/5720947>
-
- The ActivationImp tear-off (r29425) introduced a problem with ReadModify
- nodes that first resolve a slot, call valueForReadModifyNode(), and then
- store a value in the previously resolved slot. Since valueForReadModifyNode()
- may cause a tear-off, the slot needs to be resolved again, but this was
- not happening with the existing code.
-
- * kjs/nodes.cpp:
- (KJS::ReadModifyLocalVarNode::evaluate):
- (KJS::ReadModifyResolveNode::evaluate):
-
-2008-02-04 Cameron McCormack <cam@mcc.id.au>
-
- Reviewed by Geoff Garen.
-
- Remove some unneccesary UNUSED_PARAMs. Clarify ownership rule of return value of JSObjectCopyPropertyNames.
-
- * API/JSNode.c:
- (JSNode_appendChild):
- (JSNode_removeChild):
- (JSNode_replaceChild):
- (JSNode_getNodeType):
- (JSNode_getFirstChild):
- * API/JSNodeList.c:
- (JSNodeList_length):
- * API/JSObjectRef.h:
-
-2008-02-04 Rodney Dawes <dobey@wayofthemonkey.com>
-
- Reviewed by Alp Toker and Mark Rowe.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=17175.
- Bug 17175: Use of C++ compiler flags in CFLAGS
-
- * GNUmakefile.am: Use global_cxxflags as well as global_cflags in CXXFLAGS.
-
-2008-02-04 Alp Toker <alp@atoker.com>
-
- Rubber-stamped by Mark Rowe.
-
- Remove all trailing whitespace in the GTK+ port and related
- components.
-
- * GNUmakefile.am:
-
-2008-02-02 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff Garen.
-
- PLT speedup related to <rdar://problem/5659272> REGRESSION: PLT .4%
- slower due to r28884 (global variable symbol table optimization)
-
- Geoff's theory is that the slowdown was due to copying hash tables when
- putting things into the back/forward cache. If that's true, then this
- should fix the problem.
-
- (According to Geoff's measurements, in a PLT that exaggerates the
- importance of symbol table saving during cached page creation, this
- patch is a ~3X speedup in cached page creation, and a 9% speedup overall.)
-
- * JavaScriptCore.exp: Updated.
-
- * kjs/JSVariableObject.cpp:
- (KJS::JSVariableObject::saveLocalStorage): Updated for changes to SavedProperty,
- which has been revised to avoid initializing each SavedProperty twice when building
- the array. Store the property names too, so we don't have to store the symbol table
- separately. Do this by iterating the symbol table instead of the local storage vector.
- (KJS::JSVariableObject::restoreLocalStorage): Ditto. Restore the symbol table as
- well as the local storage vector.
-
- * kjs/JSVariableObject.h: Removed save/restoreSymbolTable and do that work inside
- save/restoreLocalStorage instead. Made restoreLocalStorage a non-const member function
- that takes a const reference to a SavedProperties object.
-
- * kjs/LocalStorage.h: Changed attributes to be unsigned instead of int to match
- other declarations of attributes elsewhere.
-
- * kjs/property_map.cpp:
- (KJS::SavedProperties::SavedProperties): Updated for data member name change.
- (KJS::PropertyMap::save): Updated for data member name change and to use the new
- inline init function instead of setting the fields directly. This allows us to
- skip initializing the SavedProperty objects when first allocating the array, and
- just do it when we're actually setting up the individual elements.
- (KJS::PropertyMap::restore): Updated for SavedProperty changes.
-
- * kjs/property_map.h: Changed SavedProperty from a struct to a class. Set it up so
- it does not get initialized at construction time to avoid initializing twice when
- creating an array of SavedProperty. Removed the m_ prefixes from the members of
- the SavedProperties struct. Generally we use m_ for class members and not struct.
-
-2008-02-02 Tony Chang <idealisms@gmail.com>
-
- Reviewed by darin. Landed by eseidel.
-
- Add #define guards for WIN32_LEAN_AND_MEAN and _CRT_RAND_S.
-
- * kjs/config.h:
- * wtf/FastMalloc.cpp:
- * wtf/TCSpinLock.h:
-
-2008-01-28 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Darin Adler.
-
- - Fix whitespace in nodes.h/cpp and nodes2string.cpp.
-
- (NOTE: Specific changed functions elided for space and clarity)
- * kjs/nodes.cpp:
- * kjs/nodes.h:
- * kjs/nodes2string.cpp:
-
-2008-01-27 Sam Weinig <sam@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Patch for http://bugs.webkit.org/show_bug.cgi?id=17025
- nodes.h/cpp has been rolling around in the mud - lets hose it down
-
- - Rename member variables to use the m_ prefix.
-
- (NOTE: Specific changed functions elided for space and clarity)
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- * kjs/nodes.h:
- * kjs/nodes2string.cpp:
-
-2008-01-27 Darin Adler <darin@apple.com>
-
- Reviewed by Oliver.
-
- - fix <rdar://problem/5657450> REGRESSION: const is broken
-
- Test: fast/js/const.html
-
- SunSpider said this was 0.3% slower. And I saw some Shark samples in
- JSGlobalObject::put -- not a lot but a few. We may be able to regain the
- speed, but for now we will take that small hit for correctness sake.
-
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::put): Pass the checkReadOnly flag in to symbolTablePut
- instead of passing attributes.
-
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::symbolTablePut): Removed the code to set attributes
- here, since we only set attributes when creating a property. Added the code
- to check read-only here, since we need that to implement const!
-
- * kjs/function.cpp:
- (KJS::ActivationImp::put): Pass the checkReadOnly flag in to symbolTablePut
- instead of passing attributes.
-
- * kjs/nodes.cpp:
- (KJS::isConstant): Added.
- (KJS::PostIncResolveNode::optimizeVariableAccess): Create a PostIncConstNode
- if optimizing for a local variable and the variable is constant.
- (KJS::PostDecResolveNode::optimizeVariableAccess): Ditto. But PostDecConstNode.
- (KJS::PreIncResolveNode::optimizeVariableAccess): Ditto. But PreIncConstNode.
- (KJS::PreDecResolveNode::optimizeVariableAccess): Ditto. But PreDecConstNode.
- (KJS::PreIncConstNode::evaluate): Return the value + 1.
- (KJS::PreDecConstNode::evaluate): Return the value - 1.
- (KJS::PostIncConstNode::evaluate): Return the value converted to a number.
- (KJS::PostDecConstNode::evaluate): Ditto.
- (KJS::ReadModifyResolveNode::optimizeVariableAccess): Create a ReadModifyConstNode
- if optimizing for a local variable and the variable is constant.
- (KJS::AssignResolveNode::optimizeVariableAccess): Ditto. But AssignConstNode.
- (KJS::ScopeNode::optimizeVariableAccess): Pass the local storage to the
- node optimizeVariableAccess functions, since that's where we need to look to
- figure out if a variable is constant.
- (KJS::FunctionBodyNode::processDeclarations): Moved the call to
- optimizeVariableAccess until after localStorage is set up.
- (KJS::ProgramNode::processDeclarations): Ditto.
-
- * kjs/nodes.h: Fixed the IsConstant and HasInitializer values. They are used
- as flag masks, so a value of 0 will not work for IsConstant. Changed the
- first parameter to optimizeVariableAccess to be a const reference to a symbol
- table and added a const reference to local storage. Added classes for const
- versions of local variable access: PostIncConstNode, PostDecConstNode,
- PreIncConstNode, PreDecConstNode, ReadModifyConstNode, and AssignConstNode.
-
- * kjs/object.cpp:
- (KJS::JSObject::put): Tweaked comments a bit, and changed the checkReadOnly
- expression to match the form used at the two other call sites.
-
-2008-01-27 Darin Adler <darin@apple.com>
-
- Reviewed by Oliver.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=16498
- ''.constructor.toString() gives [function]
-
- Test: fast/js/function-names.html
-
- * kjs/array_object.cpp:
- (KJS::ArrayObjectImp::ArrayObjectImp): Use the class name as the constructor's function name.
- * kjs/bool_object.cpp:
- (KJS::BooleanObjectImp::BooleanObjectImp): Ditto.
- * kjs/date_object.cpp:
- (KJS::DateObjectImp::DateObjectImp): Ditto.
- * kjs/error_object.cpp:
- (KJS::ErrorPrototype::ErrorPrototype): Make the error object be an Error.
- (KJS::ErrorObjectImp::ErrorObjectImp): Use the class name as the constructor's function name.
- (KJS::NativeErrorPrototype::NativeErrorPrototype): Take const UString&.
- (KJS::NativeErrorImp::NativeErrorImp): Use the prototype's name as the constructor's function
- name.
- * kjs/error_object.h: Change ErrorPrototype to inherit from ErrorInstance. Change the
- NativeErrorImp constructor to take a NativeErrorPrototype pointer for its prototype.
- * kjs/function.h: Removed unneeded constructor for internal functions without names.
- We want to avoid those!
- * kjs/function_object.cpp:
- (KJS::functionProtoFuncToString): Removed code that writes out just [function] for functions
- that have no names. There's no reason to do that.
- (KJS::FunctionObjectImp::FunctionObjectImp): Use the class name as the constructor's
- function name.
- * kjs/internal.cpp: Removed the unused constructor.
- * kjs/number_object.cpp:
- (KJS::fractionalPartToString): Marked static for internal linkage.
- (KJS::exponentialPartToString): Ditto.
- (KJS::numberProtoFuncToPrecision): Removed an unneeded else.
- (KJS::NumberObjectImp::NumberObjectImp): Use the class name as the constructor's
- function name.
- (KJS::NumberObjectImp::getValueProperty): Tweaked formatting.
- * kjs/object_object.cpp:
- (KJS::ObjectObjectImp::ObjectObjectImp): Use "Object" for the function name.
- * kjs/regexp_object.cpp:
- (KJS::RegExpObjectImp::RegExpObjectImp): Use "RegExp" for the function name.
- * kjs/string_object.cpp:
- (KJS::StringObjectImp::StringObjectImp): Use the class name as the constructor's
- function name.
-
-2008-01-26 Darin Adler <darin@apple.com>
-
- Reviewed by Oliver.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=17027
- Incorrect Function.toString behaviour with read/modify/write operators performed on negative numbers
-
- Test: fast/js/function-toString-parentheses.html
-
- The problem here was that a NumberNode with a negative number in it had the wrong
- precedence. It's not a primary expression, it's a unary operator with a primary
- expression after it.
-
- Once the precedence of NumberNode was fixed, the cases from bug 17020 were also
- fixed without trying to treat bracket nodes like dot nodes. That wasn't needed.
- The reason we handle numbers before dot nodes specially is that the dot is a
- legal character in a number. The same is not true of a bracket. Eventually we
- could get smarter, and only add the parentheses when there is actual ambiguity.
- There is none if the string form of the number already has a dot in it, or if
- it's a number with a alphabetic name like infinity or NAN.
-
- * kjs/nodes.h: Renamed back from ObjectAccess to DotExpr.
- (KJS::NumberNode::precedence): Return PrecUnary for negative numbers, since
- they serialize as a unary operator, not a primary expression.
- * kjs/nodes2string.cpp:
- (KJS::SourceStream::operator<<): Clear m_numberNeedsParens if this adds
- parens; one set is enough.
- (KJS::bracketNodeStreamTo): Remove unneeded special flag here. Normal
- operator precedence suffices.
- (KJS::NewExprNode::streamTo): Ditto.
-
-2008-01-26 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej and Darin.
-
- Fix for http://bugs.webkit.org/show_bug.cgi?id=17020
- Function.toString does not parenthesise numbers for the bracket accessor
-
- It turns out that logic was there for all of the dot accessor nodes to make numbers be
- parenthesised properly, so it was a trivial extension to extend that to the bracket nodes.
- I renamed the enum type to reflect the fact that it is now used for both dot and bracket
- accessors.
-
- * kjs/nodes2string.cpp:
- (KJS::bracketNodeStreamTo):
- (KJS::BracketAccessorNode::streamTo):
-
-2008-01-26 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Darin.
-
- Fix Bug 17018: Incorrect code generated from Function.toString for get/setters in object literals
-
- Don't quote getter and setter names during output, as that is simply wrong.
-
- * kjs/nodes2string.cpp:
- (KJS::PropertyNode::streamTo):
-
-2008-01-26 Darin Adler <darin@apple.com>
-
- Reviewed by Eric Seidel.
-
- - http://bugs.webkit.org/show_bug.cgi?id=16860
- a bit of cleanup after the Activation optimization
-
- * JavaScriptCore.exp: Export the GlobalExecState constructor instead of
- the global flavor of the ExecState constructor. It'd probably be cleaner
- to not export either one, but JSGlobalObject inlines the code that
- constructs the ExecState. If we changed that, we could remove this export.
-
- * JavaScriptCore.xcodeproj/project.pbxproj: Re-sorted a few things and
- put the new source files into the kjs group rather than at the top level.
-
- * kjs/ExecState.cpp:
- (KJS::ExecState::ExecState): Marked inline and updated for data member
- name changes. This is now only for use for the derived classes. Also removed
- code that sets the unused m_savedExec data member for the global case. That
- data member is only used for the other two types.
- (KJS::ExecState::~ExecState): Marked inline and removed all the code.
- The derived class destructors now inclde the appropriate code.
- (KJS::ExecState::lexicalGlobalObject): Removed unneeded special case for
- an empty scope chain. The bottom function already returns 0 for that case,
- so the general case code handles it fine. Also changed to use data members
- directly rather than calling functions.
- (KJS::GlobalExecState::GlobalExecState): Added. Calls through to the base
- class constructor.
- (KJS::GlobalExecState::~GlobalExecState): Added.
- (KJS::InterpreterExecState::InterpreterExecState): Added. Moved code to
- manipulate activeExecStates here since we don't want to have to check for the
- special case of globalExec.
- (KJS::InterpreterExecState::~InterpreterExecState): Added.
- (KJS::EvalExecState::EvalExecState): Added.
- (KJS::EvalExecState::~EvalExecState): Added.
- (KJS::FunctionExecState::FunctionExecState): Added.
- (KJS::FunctionExecState::~FunctionExecState): Added.
-
- * kjs/ExecState.h: Tweaked the header, includes, and declarations a bit.
- Made ExecState inherit from Noncopyable. Reformatted some comments and
- made them a bit more brief. Rearranged declarations a little bit and removed
- unused savedExec function. Changed seenLabels function to return a reference
- rather than a pointer. Made constructors and destructor protected, and also
- did the same with all data members. Renamed m_thisVal to m_thisValue and
- ls to m_labelStack. Added three new derived classes for each of the
- types of ExecState. The primary goal here was to remove a branch from the
- code in the destructor, but it's also clearer than overloading the arguments
- to the ExecState constructor.
-
- * kjs/JSGlobalObject.cpp:
- (KJS::getCurrentTime): Fixed formatting.
- (KJS::JSGlobalObject::pushActivation): Removed parentheses that don't make
- the expression clearer -- other similar sites didn't have these parentheses,
- even the one a couple lines earlier that sets stackEntry.
- (KJS::JSGlobalObject::tearOffActivation): Got rid of unneeded static_cast
- (I think I mentioned this during patch review) and used an early exit so that
- the entire contents of the function aren't nested inside an if statement.
- Also removed the check of codeType, instead checking Activation for 0.
- For now, I kept the codeType check, but inside an assertion.
-
- * kjs/JSGlobalObject.h: Changed type of globalExec to GlobalExecState.
- * kjs/function.cpp:
- (KJS::FunctionImp::callAsFunction): Changed type to FunctionExecState.
- (KJS::GlobalFuncImp::callAsFunction): Changed type to EvalExecState.
- * kjs/interpreter.cpp:
- (KJS::Interpreter::evaluate): Changed type to GlobalExecState.
-
- * kjs/nodes.cpp:
- (KJS::ContinueNode::execute): Changed code since seenLabels() returns a
- reference now instead of a pointer.
- (KJS::BreakNode::execute): Ditto.
- (KJS::LabelNode::execute): Ditto.
-
-2008-01-26 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Cleanup node2string a little.
- - Remove some unnecessary branching.
- - Factor out bracket and dot streaming into static inline functions.
-
- * kjs/nodes.h:
- * kjs/nodes2string.cpp:
- (KJS::bracketNodeStreamTo):
- (KJS::dotNodeStreamTo):
- (KJS::FunctionCallBracketNode::streamTo):
- (KJS::FunctionCallDotNode::streamTo):
- (KJS::PostIncBracketNode::streamTo):
- (KJS::PostDecBracketNode::streamTo):
- (KJS::PostIncDotNode::streamTo):
- (KJS::PostDecDotNode::streamTo):
- (KJS::DeleteBracketNode::streamTo):
- (KJS::DeleteDotNode::streamTo):
- (KJS::PreIncBracketNode::streamTo):
- (KJS::PreDecBracketNode::streamTo):
- (KJS::PreIncDotNode::streamTo):
- (KJS::PreDecDotNode::streamTo):
- (KJS::ReadModifyBracketNode::streamTo):
- (KJS::AssignBracketNode::streamTo):
- (KJS::ReadModifyDotNode::streamTo):
- (KJS::AssignDotNode::streamTo):
- (KJS::WhileNode::streamTo):
-
-2008-01-26 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Darin Adler.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=17001
- Bug 17001: Build error with Gtk port on Mac OS X
-
- If both XP_MACOSX and XP_UNIX are defined then X11.h and Carbon.h will both be included.
- These provide conflicting definitions for a type named 'Cursor'. As XP_UNIX is set by
- the build system when targeting X11, it doesn't make sense for XP_MACOSX to also be set
- in this instance.
-
- * bindings/npapi.h: Don't define XP_MACOSX if XP_UNIX is defined.
-
-2008-01-26 Darin Adler <darin@apple.com>
-
- Reviewed by Oliver.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=17013
- JSC can't round trip certain for-loops
-
- Test: fast/js/toString-for-var-decl.html
-
- * kjs/nodes.h: Added PlaceholderTrueNode so we can put nodes into
- for loops without injecting the word "true" into them (nice, but not
- the bug fix). Fixed ForNode constructor so expr1WasVarDecl is set
- only when there is an expression, since it's common for the actual
- variable declaration to be moved by the parser.
-
- * kjs/nodes2string.cpp:
- (KJS::PlaceholderTrueNode::streamTo): Added. Empty.
-
-2008-01-25 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Fix for bug 17012: REGRESSION: JSC can't round trip an object literal
-
- Add logic to ensure that object literals and function expressions get
- parentheses when necessary.
-
- * kjs/nodes.h:
- * kjs/nodes2string.cpp:
- (KJS::SourceStream::operator<<):
-
-2008-01-24 Steve Falkenburg <sfalken@apple.com>
-
- Build fix.
-
- * JavaScriptCore.vcproj/JavaScriptCore.sln:
-
-2008-01-24 Steve Falkenburg <sfalken@apple.com>
-
- Build fix.
-
- * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln:
-
-2008-01-24 Michael Goddard <michael.goddard@trolltech.com>
-
- Reviewed by Simon.
-
- Fix QDateTime to JS Date conversion.
- Several conversion errors (some UTC related, some month
- offset related) and the conversion distance for Date
- to DateTime conversion weights were fixed (it should never
- be better to convert a JS Number into a Date rather than
- an int).
-
- * bindings/qt/qt_runtime.cpp:
- (KJS::Bindings::convertValueToQVariant):
- (KJS::Bindings::convertQVariantToValue):
-
-2008-01-24 Michael Goddard <michael.goddard@trolltech.com>
-
- Reviewed by Simon.
-
- Add support for calling QObjects.
- Add support for invokeDefaultMethod (via a call to
- a specific slot), and also allow using it as a
- constructor, like QtScript.
-
-
- * bindings/qt/qt_class.cpp:
- (KJS::Bindings::QtClass::fallbackObject):
- * bindings/qt/qt_instance.cpp:
- (KJS::Bindings::QtRuntimeObjectImp::construct):
- (KJS::Bindings::QtInstance::QtInstance):
- (KJS::Bindings::QtInstance::~QtInstance):
- (KJS::Bindings::QtInstance::implementsCall):
- (KJS::Bindings::QtInstance::invokeDefaultMethod):
- * bindings/qt/qt_instance.h:
- * bindings/qt/qt_runtime.cpp:
- (KJS::Bindings::findMethodIndex):
- (KJS::Bindings::QtRuntimeMetaMethod::QtRuntimeMetaMethod):
- (KJS::Bindings::QtRuntimeMetaMethod::callAsFunction):
- * bindings/qt/qt_runtime.h:
-
-2008-01-24 Michael Goddard <michael.goddard@trolltech.com>
-
- Reviewed by Simon.
-
- Code style cleanups.
- Add spaces before/after braces in inline function.
-
- * bindings/qt/qt_instance.h:
-
-2008-01-24 Michael Goddard <michael.goddard@trolltech.com>
-
- Reviewed by Simon.
-
- Code style cleanups.
- Remove spaces and unneeded declared parameter names.
-
- * bindings/qt/qt_instance.cpp:
- (KJS::Bindings::QtRuntimeObjectImp::removeFromCache):
-
-2008-01-24 Michael Goddard <michael.goddard@trolltech.com>
-
- Reviewed by Simon.
-
- Clear stale RuntimeObjectImps.
- Since other objects can have refs to the QtInstance,
- we can't rely on the QtInstance being deleted when the
- RuntimeObjectImp is invalidate or deleted. This
- could result in a stale JSObject being returned for
- a valid Instance.
-
- * bindings/qt/qt_instance.cpp:
- (KJS::Bindings::QtRuntimeObjectImp::QtRuntimeObjectImp):
- (KJS::Bindings::QtRuntimeObjectImp::~QtRuntimeObjectImp):
- (KJS::Bindings::QtRuntimeObjectImp::invalidate):
- (KJS::Bindings::QtRuntimeObjectImp::removeFromCache):
- (KJS::Bindings::QtInstance::getRuntimeObject):
- * bindings/runtime.cpp:
- (KJS::Bindings::Instance::createRuntimeObject):
- * bindings/runtime.h:
-
-2008-01-23 Alp Toker <alp@atoker.com>
-
- Rubber-stamped by Mark Rowe.
-
- Remove whitespace after -I in automake include lists.
-
- * GNUmakefile.am:
-
-2008-01-23 Michael Goddard <michael.goddard@trolltech.com>
-
- Reviewed by Lars Knoll <lars@trolltech.com>.
-
- Reworked the JavaScriptCore Qt bindings:
-
- * Add initial support for string and variant arrays, as well
- as sub QObjects in the JS bindings.
-
- * Don't expose fields marked as not scriptable by moc.
-
- * Add support for dynamic properties and accessing named
- QObject children of an object (like QtScript and older
- IE DOM style JS).
- * Add support for custom toString methods.
-
- * Fine tune some bindings to be closer to QtScript.
- Make void functions return undefined, and empty/
- null QStrings return a zero length string.
-
- * Create framework for allowing more direct method calls.
- Since RuntimeMethod doesn't allow us to add additional
- methods/properties to a function, add these classes.
- Start prototyping object.signal.connect(...).
-
- * Add signal support to the Qt bindings.
- Allow connecting to signals (object.signal.connect(slot)),
- disconnecting, and emitting signals. Currently chooses
- the first signal that matches the name, so this will need
- improvement.
-
- * Add property names, and resolve signals closer to use.
- Enumerating properties now returns some of the Qt properties
- and signals. Slots and methods aren't quite present. Also,
- resolve signal connections etc. closer to the time of use, so
- we can do more dynamic resolution based on argument type etc.
- Still picks the first one with the same name, at the moment.
-
- * Make signature comparison code consistent.
- Use the same code for checking meta signatures in
- the method and fallback getters, and avoid a
- QByteArray construction when we can.
-
- * Fix minor memory leak, and handle pointers better.
- Delete the private object in the dtors, and use RefPtrs
- for holding Instances etc.
-
- * Handle method lookup better.
- Allow invocation time method lookup based on the arguments,
- which is closer to QtScript behaviour. Also, cache the
- method lists and delete them in the QtClass dtor (stops
- a memory leak).
-
- * Improve JS to Qt data type conversions.
- Add some support for Date & RegExp JS objects,
- and provide some metrics on the quality of the
- conversion.
-
- * A couple of fixes for autotest failures.
- Better support for converting lists, read/write only
- QMetaProperty support, modified slot search order...)
-
- * bindings/qt/qt_class.cpp:
- (KJS::Bindings::QtClass::QtClass):
- (KJS::Bindings::QtClass::~QtClass):
- (KJS::Bindings::QtClass::name):
- (KJS::Bindings::QtClass::fallbackObject):
- (KJS::Bindings::QtClass::methodsNamed):
- (KJS::Bindings::QtClass::fieldNamed):
- * bindings/qt/qt_class.h:
- * bindings/qt/qt_instance.cpp:
- (KJS::Bindings::QtInstance::QtInstance):
- (KJS::Bindings::QtInstance::~QtInstance):
- (KJS::Bindings::QtInstance::getRuntimeObject):
- (KJS::Bindings::QtInstance::getClass):
- (KJS::Bindings::QtInstance::implementsCall):
- (KJS::Bindings::QtInstance::getPropertyNames):
- (KJS::Bindings::QtInstance::invokeMethod):
- (KJS::Bindings::QtInstance::invokeDefaultMethod):
- (KJS::Bindings::QtInstance::stringValue):
- (KJS::Bindings::QtInstance::booleanValue):
- (KJS::Bindings::QtInstance::valueOf):
- (KJS::Bindings::QtField::name):
- (KJS::Bindings::QtField::valueFromInstance):
- (KJS::Bindings::QtField::setValueToInstance):
- * bindings/qt/qt_instance.h:
- (KJS::Bindings::QtInstance::getBindingLanguage):
- (KJS::Bindings::QtInstance::getObject):
- * bindings/qt/qt_runtime.cpp:
- (KJS::Bindings::QWKNoDebug::QWKNoDebug):
- (KJS::Bindings::QWKNoDebug::~QWKNoDebug):
- (KJS::Bindings::QWKNoDebug::operator<<):
- (KJS::Bindings::):
- (KJS::Bindings::valueRealType):
- (KJS::Bindings::convertValueToQVariant):
- (KJS::Bindings::convertQVariantToValue):
- (KJS::Bindings::QtRuntimeMethod::QtRuntimeMethod):
- (KJS::Bindings::QtRuntimeMethod::~QtRuntimeMethod):
- (KJS::Bindings::QtRuntimeMethod::codeType):
- (KJS::Bindings::QtRuntimeMethod::execute):
- (KJS::Bindings::QtRuntimeMethodData::~QtRuntimeMethodData):
- (KJS::Bindings::QtRuntimeMetaMethodData::~QtRuntimeMetaMethodData):
- (KJS::Bindings::QtRuntimeConnectionMethodData::~QtRuntimeConnectionMethodData):
- (KJS::Bindings::QtMethodMatchType::):
- (KJS::Bindings::QtMethodMatchType::QtMethodMatchType):
- (KJS::Bindings::QtMethodMatchType::kind):
- (KJS::Bindings::QtMethodMatchType::isValid):
- (KJS::Bindings::QtMethodMatchType::isVariant):
- (KJS::Bindings::QtMethodMatchType::isMetaType):
- (KJS::Bindings::QtMethodMatchType::isUnresolved):
- (KJS::Bindings::QtMethodMatchType::isMetaEnum):
- (KJS::Bindings::QtMethodMatchType::enumeratorIndex):
- (KJS::Bindings::QtMethodMatchType::variant):
- (KJS::Bindings::QtMethodMatchType::metaType):
- (KJS::Bindings::QtMethodMatchType::metaEnum):
- (KJS::Bindings::QtMethodMatchType::unresolved):
- (KJS::Bindings::QtMethodMatchType::typeId):
- (KJS::Bindings::QtMethodMatchType::name):
- (KJS::Bindings::QtMethodMatchData::QtMethodMatchData):
- (KJS::Bindings::QtMethodMatchData::isValid):
- (KJS::Bindings::QtMethodMatchData::firstUnresolvedIndex):
- (KJS::Bindings::indexOfMetaEnum):
- (KJS::Bindings::findMethodIndex):
- (KJS::Bindings::findSignalIndex):
- (KJS::Bindings::QtRuntimeMetaMethod::QtRuntimeMetaMethod):
- (KJS::Bindings::QtRuntimeMetaMethod::mark):
- (KJS::Bindings::QtRuntimeMetaMethod::callAsFunction):
- (KJS::Bindings::QtRuntimeMetaMethod::getOwnPropertySlot):
- (KJS::Bindings::QtRuntimeMetaMethod::lengthGetter):
- (KJS::Bindings::QtRuntimeMetaMethod::connectGetter):
- (KJS::Bindings::QtRuntimeMetaMethod::disconnectGetter):
- (KJS::Bindings::QtRuntimeConnectionMethod::QtRuntimeConnectionMethod):
- (KJS::Bindings::QtRuntimeConnectionMethod::callAsFunction):
- (KJS::Bindings::QtRuntimeConnectionMethod::getOwnPropertySlot):
- (KJS::Bindings::QtRuntimeConnectionMethod::lengthGetter):
- (KJS::Bindings::QtConnectionObject::QtConnectionObject):
- (KJS::Bindings::QtConnectionObject::~QtConnectionObject):
- (KJS::Bindings::QtConnectionObject::metaObject):
- (KJS::Bindings::QtConnectionObject::qt_metacast):
- (KJS::Bindings::QtConnectionObject::qt_metacall):
- (KJS::Bindings::QtConnectionObject::execute):
- (KJS::Bindings::QtConnectionObject::match):
- (KJS::Bindings::::QtArray):
- (KJS::Bindings::::~QtArray):
- (KJS::Bindings::::rootObject):
- (KJS::Bindings::::setValueAt):
- (KJS::Bindings::::valueAt):
- * bindings/qt/qt_runtime.h:
- (KJS::Bindings::QtField::):
- (KJS::Bindings::QtField::QtField):
- (KJS::Bindings::QtField::fieldType):
- (KJS::Bindings::QtMethod::QtMethod):
- (KJS::Bindings::QtMethod::name):
- (KJS::Bindings::QtMethod::numParameters):
- (KJS::Bindings::QtArray::getLength):
- (KJS::Bindings::QtRuntimeMethod::d_func):
- (KJS::Bindings::QtRuntimeMetaMethod::d_func):
- (KJS::Bindings::QtRuntimeConnectionMethod::d_func):
- (KJS::Bindings::):
- * bindings/runtime.cpp:
- (KJS::Bindings::Instance::createBindingForLanguageInstance):
- (KJS::Bindings::Instance::createRuntimeObject):
- (KJS::Bindings::Instance::reallyCreateRuntimeObject):
- * bindings/runtime.h:
-
-2008-01-22 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Darin and Adam.
-
- <rdar://problem/5688975>
- div element on microsoft site has wrong left offset.
-
- Return true even if NPN_GetProperty returns null or undefined. This matches Firefox
- (and is what the Silverlight plug-in expects).
-
- * bindings/NP_jsobject.cpp:
- (_NPN_GetProperty):
-
-2008-01-21 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fixed http://bugs.webkit.org/show_bug.cgi?id=16909
- REGRESSION: Amazon.com crash (ActivationImp)
-
- (and a bunch of other crashes)
-
- Plus, a .7% SunSpider speedup to boot.
-
- Replaced the buggy currentExec and savedExec mechanisms with an
- explicit ExecState stack.
-
- * kjs/collector.cpp:
- (KJS::Collector::collect): Explicitly mark the ExecState stack.
-
- (KJS::Collector::reportOutOfMemoryToAllExecStates): Slight change in
- behavior: We no longer throw an exception in any global ExecStates,
- since global ExecStates are more like pseudo-ExecStates, and aren't
- used for script execution. (It's unclear what would happen if you left
- an exception waiting around in a global ExecState, but it probably
- wouldn't be good.)
-
-2008-01-21 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=16955
- Get errors when cross-compile webkit-gtk
-
- * GNUmakefile.am: removed ICU_CFLAGS
-
-2008-01-18 Kevin McCullough <kmccullough@apple.com>
-
- - Build fix.
-
- * kjs/ustring.h:
-
-2008-01-18 Kevin McCullough <kmccullough@apple.com>
-
- - Build fix.
-
- * kjs/ustring.cpp:
- * kjs/ustring.h:
- (KJS::UString::cost):
-
-2008-01-18 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Geoff.
-
- - Correctly report cost of appended strings to trigger GC.
-
- * kjs/ustring.cpp:
- (KJS::UString::Rep::create):
- (KJS::UString::UString): Don't create unnecssary objects.
- (KJS::UString::cost): Report cost if necessary but also keep track of
- reported cost.
- * kjs/ustring.h:
-
-2008-01-18 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Holger.
-
- Fix return type conversions from Qt slots to JS values.
-
- This also fixes fast/dom/open-and-close-by-DOM.html, which called
- layoutTestController.windowCount().
-
- When constructing the QVariant that holds the return type we cannot
- use the QVarian(Type) constuctor as that will create a null variant.
- We have to use the QVariant(Type, void *) constructor instead, just
- like in QMetaObject::read() for example.
-
-
- * bindings/qt/qt_instance.cpp:
- (KJS::Bindings::QtInstance::getRuntimeObject):
-
-2008-01-18 Prasanth Ullattil <prasanth.ullattil@trolltech.com>
-
- Reviewed by Simon Hausmann <hausmann@webkit.org>.
-
- Fix compilation on Win64(2): Implemented currentThreadStackBase on X86-64 on Windows
-
-
- * kjs/collector.cpp:
- (KJS::Collector::heapAllocate):
-
-2008-01-18 Prasanth Ullattil <prasanth.ullattil@trolltech.com>
-
- Reviewed by Simon Hausmann <hausmann@webkit.org>.
-
- Fix compilation on Win64(1): Define WTF_PLATFORM_X86_64 correctly on Win64.
-
-
- * wtf/Platform.h:
-
-2008-01-17 Antti Koivisto <antti@apple.com>
-
- Fix Windows build.
-
- * kjs/regexp_object.cpp:
- (KJS::regExpProtoFuncToString):
-
-2008-01-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by Darin.
-
- Fix for http://bugs.webkit.org/show_bug.cgi?id=16901
- Convert remaining JS function objects to use the new PrototypeFunction class
-
- - Moves Boolean, Function, RegExp, Number, Object and Global functions to their
- own static function implementations so that they can be used with the
- PrototypeFunction class. SunSpider says this is 1.003x as fast.
-
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::reset):
- * kjs/array_object.h:
- * kjs/bool_object.cpp:
- (KJS::BooleanInstance::BooleanInstance):
- (KJS::BooleanPrototype::BooleanPrototype):
- (KJS::booleanProtoFuncToString):
- (KJS::booleanProtoFuncValueOf):
- (KJS::BooleanObjectImp::BooleanObjectImp):
- (KJS::BooleanObjectImp::implementsConstruct):
- (KJS::BooleanObjectImp::construct):
- (KJS::BooleanObjectImp::callAsFunction):
- * kjs/bool_object.h:
- (KJS::BooleanInstance::classInfo):
- * kjs/error_object.cpp:
- (KJS::ErrorPrototype::ErrorPrototype):
- (KJS::errorProtoFuncToString):
- * kjs/error_object.h:
- * kjs/function.cpp:
- (KJS::globalFuncEval):
- (KJS::globalFuncParseInt):
- (KJS::globalFuncParseFloat):
- (KJS::globalFuncIsNaN):
- (KJS::globalFuncIsFinite):
- (KJS::globalFuncDecodeURI):
- (KJS::globalFuncDecodeURIComponent):
- (KJS::globalFuncEncodeURI):
- (KJS::globalFuncEncodeURIComponent):
- (KJS::globalFuncEscape):
- (KJS::globalFuncUnEscape):
- (KJS::globalFuncKJSPrint):
- (KJS::PrototypeFunction::PrototypeFunction):
- * kjs/function.h:
- * kjs/function_object.cpp:
- (KJS::FunctionPrototype::FunctionPrototype):
- (KJS::functionProtoFuncToString):
- (KJS::functionProtoFuncApply):
- (KJS::functionProtoFuncCall):
- * kjs/function_object.h:
- * kjs/number_object.cpp:
- (KJS::NumberPrototype::NumberPrototype):
- (KJS::numberProtoFuncToString):
- (KJS::numberProtoFuncToLocaleString):
- (KJS::numberProtoFuncValueOf):
- (KJS::numberProtoFuncToFixed):
- (KJS::numberProtoFuncToExponential):
- (KJS::numberProtoFuncToPrecision):
- * kjs/number_object.h:
- (KJS::NumberInstance::classInfo):
- (KJS::NumberObjectImp::classInfo):
- (KJS::NumberObjectImp::):
- * kjs/object_object.cpp:
- (KJS::ObjectPrototype::ObjectPrototype):
- (KJS::objectProtoFuncValueOf):
- (KJS::objectProtoFuncHasOwnProperty):
- (KJS::objectProtoFuncIsPrototypeOf):
- (KJS::objectProtoFuncDefineGetter):
- (KJS::objectProtoFuncDefineSetter):
- (KJS::objectProtoFuncLookupGetter):
- (KJS::objectProtoFuncLookupSetter):
- (KJS::objectProtoFuncPropertyIsEnumerable):
- (KJS::objectProtoFuncToLocaleString):
- (KJS::objectProtoFuncToString):
- * kjs/object_object.h:
- * kjs/regexp_object.cpp:
- (KJS::RegExpPrototype::RegExpPrototype):
- (KJS::regExpProtoFuncTest):
- (KJS::regExpProtoFuncExec):
- (KJS::regExpProtoFuncCompile):
- (KJS::regExpProtoFuncToString):
- * kjs/regexp_object.h:
-
-2008-01-16 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej & Darin.
-
- Fixes Bug 16868: Gmail crash
- and Bug 16871: Crash when loading apple.com/startpage
-
- <http://bugs.webkit.org/show_bug.cgi?id=16868>
- <rdar://problem/5686108>
-
- <http://bugs.webkit.org/show_bug.cgi?id=16871>
- <rdar://problem/5686670>
-
- Adds ActivationImp tear-off for cross-window eval() and fixes an
- existing garbage collection issue exposed by the ActivationImp tear-off
- patch (r29425) that can occur when an ExecState's m_callingExec is
- different than its m_savedExec.
-
- * kjs/ExecState.cpp:
- (KJS::ExecState::mark):
- * kjs/function.cpp:
- (KJS::GlobalFuncImp::callAsFunction):
-
-2008-01-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by Oliver.
-
- Clean up MathObjectImp, it needed a little scrubbing.
-
- * kjs/math_object.cpp:
- (KJS::MathObjectImp::MathObjectImp):
- (KJS::MathObjectImp::getOwnPropertySlot):
- (KJS::MathObjectImp::getValueProperty):
- (KJS::mathProtoFuncACos):
- (KJS::mathProtoFuncASin):
- (KJS::mathProtoFuncATan):
- (KJS::mathProtoFuncATan2):
- (KJS::mathProtoFuncCos):
- (KJS::mathProtoFuncExp):
- (KJS::mathProtoFuncLog):
- (KJS::mathProtoFuncSin):
- (KJS::mathProtoFuncSqrt):
- (KJS::mathProtoFuncTan):
- * kjs/math_object.h:
- (KJS::MathObjectImp::classInfo):
- (KJS::MathObjectImp::):
-
-2008-01-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- Rename Lexer variable bol to atLineStart.
-
- * kjs/lexer.cpp:
- (KJS::Lexer::Lexer):
- (KJS::Lexer::setCode):
- (KJS::Lexer::nextLine):
- (KJS::Lexer::lex):
- * kjs/lexer.h:
-
-2008-01-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen and Anders Carlsson.
-
- Remove uses of KJS_PURE_ECMA as we don't ever build with it defined,
- and we have many features that are not included in the ECMA spec.
-
- * kjs/lexer.cpp:
- (KJS::Lexer::Lexer):
- (KJS::Lexer::setCode):
- (KJS::Lexer::nextLine):
- (KJS::Lexer::lex):
- * kjs/lexer.h:
- * kjs/string_object.cpp:
- * kjs/string_object.h:
-
-2008-01-15 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- Fix <rdar://problem/5595552> r27608 introduced a 20% increase in JS binary size, 4% increase in WebCore binary size
-
- - This changes the way JS functions that use Lookup tables are handled. Instead of using
- one class per function, which allowed specialization of the virtual callAsFunction
- method, we now use one class, PrototypeFunction, which takes a pointer to a static
- function to use as the implementation. This significantly decreases the binary size
- of JavaScriptCore (about 145k on an Intel only build) while still keeping some of the
- speedup r27608 garnered (SunSpider says this is 1.005x as slow, which should leave some
- wiggle room from the original 1% speedup) and keeps the functions implementations in separate
- functions to help with optimizations.
-
- * JavaScriptCore.exp:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/array_object.cpp:
- (KJS::arrayProtoFuncToString):
- (KJS::arrayProtoFuncToLocaleString):
- (KJS::arrayProtoFuncJoin):
- (KJS::arrayProtoFuncConcat):
- (KJS::arrayProtoFuncPop):
- (KJS::arrayProtoFuncPush):
- (KJS::arrayProtoFuncReverse):
- (KJS::arrayProtoFuncShift):
- (KJS::arrayProtoFuncSlice):
- (KJS::arrayProtoFuncSort):
- (KJS::arrayProtoFuncSplice):
- (KJS::arrayProtoFuncUnShift):
- (KJS::arrayProtoFuncFilter):
- (KJS::arrayProtoFuncMap):
- (KJS::arrayProtoFuncEvery):
- (KJS::arrayProtoFuncForEach):
- (KJS::arrayProtoFuncSome):
- (KJS::arrayProtoFuncIndexOf):
- (KJS::arrayProtoFuncLastIndexOf):
- * kjs/array_object.h:
- * kjs/date_object.cpp:
- (KJS::DatePrototype::getOwnPropertySlot):
- (KJS::dateProtoFuncToString):
- (KJS::dateProtoFuncToUTCString):
- (KJS::dateProtoFuncToDateString):
- (KJS::dateProtoFuncToTimeString):
- (KJS::dateProtoFuncToLocaleString):
- (KJS::dateProtoFuncToLocaleDateString):
- (KJS::dateProtoFuncToLocaleTimeString):
- (KJS::dateProtoFuncValueOf):
- (KJS::dateProtoFuncGetTime):
- (KJS::dateProtoFuncGetFullYear):
- (KJS::dateProtoFuncGetUTCFullYear):
- (KJS::dateProtoFuncToGMTString):
- (KJS::dateProtoFuncGetMonth):
- (KJS::dateProtoFuncGetUTCMonth):
- (KJS::dateProtoFuncGetDate):
- (KJS::dateProtoFuncGetUTCDate):
- (KJS::dateProtoFuncGetDay):
- (KJS::dateProtoFuncGetUTCDay):
- (KJS::dateProtoFuncGetHours):
- (KJS::dateProtoFuncGetUTCHours):
- (KJS::dateProtoFuncGetMinutes):
- (KJS::dateProtoFuncGetUTCMinutes):
- (KJS::dateProtoFuncGetSeconds):
- (KJS::dateProtoFuncGetUTCSeconds):
- (KJS::dateProtoFuncGetMilliSeconds):
- (KJS::dateProtoFuncGetUTCMilliseconds):
- (KJS::dateProtoFuncGetTimezoneOffset):
- (KJS::dateProtoFuncSetTime):
- (KJS::dateProtoFuncSetMilliSeconds):
- (KJS::dateProtoFuncSetUTCMilliseconds):
- (KJS::dateProtoFuncSetSeconds):
- (KJS::dateProtoFuncSetUTCSeconds):
- (KJS::dateProtoFuncSetMinutes):
- (KJS::dateProtoFuncSetUTCMinutes):
- (KJS::dateProtoFuncSetHours):
- (KJS::dateProtoFuncSetUTCHours):
- (KJS::dateProtoFuncSetDate):
- (KJS::dateProtoFuncSetUTCDate):
- (KJS::dateProtoFuncSetMonth):
- (KJS::dateProtoFuncSetUTCMonth):
- (KJS::dateProtoFuncSetFullYear):
- (KJS::dateProtoFuncSetUTCFullYear):
- (KJS::dateProtoFuncSetYear):
- (KJS::dateProtoFuncGetYear):
- * kjs/date_object.h:
- * kjs/function.cpp:
- (KJS::PrototypeFunction::PrototypeFunction):
- (KJS::PrototypeFunction::callAsFunction):
- * kjs/function.h:
- * kjs/lookup.h:
- (KJS::HashEntry::):
- (KJS::staticFunctionGetter):
- * kjs/math_object.cpp:
- (KJS::mathProtoFuncAbs):
- (KJS::mathProtoFuncACos):
- (KJS::mathProtoFuncASin):
- (KJS::mathProtoFuncATan):
- (KJS::mathProtoFuncATan2):
- (KJS::mathProtoFuncCeil):
- (KJS::mathProtoFuncCos):
- (KJS::mathProtoFuncExp):
- (KJS::mathProtoFuncFloor):
- (KJS::mathProtoFuncLog):
- (KJS::mathProtoFuncMax):
- (KJS::mathProtoFuncMin):
- (KJS::mathProtoFuncPow):
- (KJS::mathProtoFuncRandom):
- (KJS::mathProtoFuncRound):
- (KJS::mathProtoFuncSin):
- (KJS::mathProtoFuncSqrt):
- (KJS::mathProtoFuncTan):
- * kjs/math_object.h:
- * kjs/string_object.cpp:
- (KJS::stringProtoFuncToString):
- (KJS::stringProtoFuncValueOf):
- (KJS::stringProtoFuncCharAt):
- (KJS::stringProtoFuncCharCodeAt):
- (KJS::stringProtoFuncConcat):
- (KJS::stringProtoFuncIndexOf):
- (KJS::stringProtoFuncLastIndexOf):
- (KJS::stringProtoFuncMatch):
- (KJS::stringProtoFuncSearch):
- (KJS::stringProtoFuncReplace):
- (KJS::stringProtoFuncSlice):
- (KJS::stringProtoFuncSplit):
- (KJS::stringProtoFuncSubstr):
- (KJS::stringProtoFuncSubstring):
- (KJS::stringProtoFuncToLowerCase):
- (KJS::stringProtoFuncToUpperCase):
- (KJS::stringProtoFuncToLocaleLowerCase):
- (KJS::stringProtoFuncToLocaleUpperCase):
- (KJS::stringProtoFuncLocaleCompare):
- (KJS::stringProtoFuncBig):
- (KJS::stringProtoFuncSmall):
- (KJS::stringProtoFuncBlink):
- (KJS::stringProtoFuncBold):
- (KJS::stringProtoFuncFixed):
- (KJS::stringProtoFuncItalics):
- (KJS::stringProtoFuncStrike):
- (KJS::stringProtoFuncSub):
- (KJS::stringProtoFuncSup):
- (KJS::stringProtoFuncFontcolor):
- (KJS::stringProtoFuncFontsize):
- (KJS::stringProtoFuncAnchor):
- (KJS::stringProtoFuncLink):
- * kjs/string_object.h:
-
-2008-01-15 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Adam Roben.
-
- Some tweaks to our headerdoc, suggested by David Gatwood on the docs
- team.
-
- * API/JSBase.h:
- * API/JSObjectRef.h:
- * API/JSStringRef.h:
- * API/JSValueRef.h:
-
-2008-01-15 Alp Toker <alp@atoker.com>
-
- Rubber-stamped by Anders.
-
- Make the HTTP backend configurable in the GTK+ port. curl is currently
- the only option.
-
- * wtf/Platform.h: Don't hard-code WTF_USE_CURL for GTK
-
-2008-01-15 Sam Weinig <sam@webkit.org>
-
- Reviewed by Beth Dakin.
-
- Remove unneeded variable.
-
- * kjs/string_object.cpp:
- (KJS::StringProtoFuncSubstr::callAsFunction):
-
-2008-01-14 Steve Falkenburg <sfalken@apple.com>
-
- Use shared vsprops for most vcproj properties.
-
- Reviewed by Darin.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add missing Debug_Internal config.
- * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add missing Debug_Internal config.
- * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
-
-2008-01-14 Adam Roben <aroben@apple.com>
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added
- some headers that were missing from the vcproj so their contents will
- be included in Find in Files.
-
-2008-01-14 Adam Roben <aroben@apple.com>
-
- Fix Bug 16871: Crash when loading apple.com/startpage
-
- <http://bugs.webkit.org/show_bug.cgi?id=16871>
- <rdar://problem/5686670>
-
- Patch written by Darin, reviewed by me.
-
- * kjs/ExecState.cpp:
- (KJS::ExecState::mark): Call ActivationImp::markChildren if our
- m_activation is on the stack. This is what ScopeChain::mark also does,
- but apparently in some cases it's possible for an ExecState's
- ActivationImp to not be in any ScopeChain.
-
-2008-01-14 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Oliver.
-
- -<rdar://problem/5622667> REGRESSION (Leopard-ToT): Endless loading loop
- trying to view techreport.com comments
- - We need to set values in the map, because if they are already in the
- map they will not be reset when we use add().
-
- * kjs/array_instance.cpp:
- (KJS::ArrayInstance::put):
-
-2008-01-14 Darin Adler <darin@apple.com>
-
- Reviewed by Adam.
-
- - re-speed-up the page load test (my StringImpl change slowed it down)
-
- * wtf/RefCounted.h:
- (WTF::RefCounted::RefCounted): Allow derived classes to start with a reference
- count other than 0. Eventually everyone will want to start with a 1. This is a
- staged change. For now, there's a default of 0, and you can specify 1. Later,
- there will be no default and everyone will have to specify. And then later, there
- will be a default of 1. Eventually, we can take away even the option of starting
- with 0!
-
- * wtf/Vector.h:
- (WTF::Vector::Vector): Sped up creation of non-empty vectors by removing the
- overhead of first constructing something empty and then calling resize.
- (WTF::Vector::clear): Sped up the common case of calling clear on an empty
- vector by adding a check for that case.
- (WTF::Vector::releaseBuffer): Marked this function inline and removed a branch
- in the case of vectors with no inline capacity (normal vectors) by leaving out
- the code to copy the inline buffer in that case.
-
-2008-01-14 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by David Kilzer.
-
- http://bugs.webkit.org/show_bug.cgi?id=16787
- array.splice() with 1 element not working
-
- Test: fast/js/array-splice.html
-
- * kjs/array_object.cpp:
- (KJS::ArrayProtoFuncSplice::callAsFunction): Implement this Mozilla extension, and fix
- some other edge cases.
-
-2008-01-13 Steve Falkenburg <sfalken@apple.com>
-
- Share common files across projects.
-
- Unify vsprops files
- Debug: common.vsprops, debug.vsprops
- Debug_Internal: common.vsprops, debug.vsprops, debug_internal.vsprops
- Release: common.vsprops, release.vsprops
-
- Shared properties can go into common.vsprops, shared debug settings can go into debug.vsprops.
- debug_internal.vsprops will be mostly empty except for file path prefix modifiers.
-
- Reviewed by Adam Roben.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * JavaScriptCore.vcproj/debug.vsprops: Removed.
- * JavaScriptCore.vcproj/debug_internal.vsprops: Removed.
- * JavaScriptCore.vcproj/release.vsprops: Removed.
- * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
-
-2008-01-13 Marius Bugge Monsen <mbm@trolltech.com>
-
- Contributions and review by Adriaan de Groot,
- Simon Hausmann, Eric Seidel, and Darin Adler.
-
- - http://bugs.webkit.org/show_bug.cgi?id=16590
- Compilation fixes for Solaris.
-
- * kjs/DateMath.h:
- (KJS::GregorianDateTime::GregorianDateTime): Use the WIN_OS code path
- for SOLARIS too, presumably because Solaris also lacks the tm_gtoff and tm_zone
- fields.
- (KJS::GregorianDateTime::operator tm): Ditto.
-
- * kjs/collector.cpp:
- (KJS::currentThreadStackBase): Use thr_stksegment on Solaris.
-
- * wtf/MathExtras.h:
- (isfinite): Implement for Solaris.
- (isinf): Ditto.
- (signbit): Ditto. But this one is wrong, so I added a FIXME.
-
- * wtf/Platform.h: Define PLATFORM(SOLARIS) when "sun" or "__sun" is defined.
-
-2008-01-13 Michael Goddard <michael.goddard@trolltech.com>
-
- Reviewed by Anders Carlsson.
-
- Add binding language type to Instance.
- Allows runtime determination of the type of an
- Instance, to allow safe casting. Doesn't actually
- add any safe casting yet, though.
-
- Add a helper function to get an Instance from a JSObject*.
- Given an object and the expected binding language, see if
- the JSObject actually wraps an Instance of the given type
- and return it. Otherwise return 0.
-
- Move RuntimeObjectImp creations into Instance.
- Make the ctor protected, and Instance a friend class, so
- that all creation of RuntimeObjectImps goes through
- one place.
-
- Remove copy ctor/assignment operator for QtInstance.
- Instance itself is Noncopyable, so QtInstance doesn't
- need to have these.
-
- Add caching for QtInstance and associated RuntimeObjectImps.
- Push any dealings with QtLanguage bindings into QtInstance,
- and cache them there, rather than in the Instance layer. Add
- a QtRuntimeObjectImp to help with caching.
-
- * JavaScriptCore.exp:
- * bindings/c/c_instance.h:
- * bindings/jni/jni_instance.h:
- * bindings/objc/objc_instance.h:
- * bindings/qt/qt_instance.cpp:
- (KJS::Bindings::QtRuntimeObjectImp::QtRuntimeObjectImp):
- (KJS::Bindings::QtRuntimeObjectImp::~QtRuntimeObjectImp):
- (KJS::Bindings::QtRuntimeObjectImp::invalidate):
- (KJS::Bindings::QtRuntimeObjectImp::removeFromCache):
- (KJS::Bindings::QtInstance::QtInstance):
- (KJS::Bindings::QtInstance::~QtInstance):
- (KJS::Bindings::QtInstance::getQtInstance):
- (KJS::Bindings::QtInstance::getRuntimeObject):
- * bindings/qt/qt_instance.h:
- (KJS::Bindings::QtInstance::getBindingLanguage):
- * bindings/runtime.cpp:
- (KJS::Bindings::Instance::createBindingForLanguageInstance):
- (KJS::Bindings::Instance::createRuntimeObject):
- (KJS::Bindings::Instance::getInstance):
- * bindings/runtime.h:
- * bindings/runtime_object.h:
- (KJS::RuntimeObjectImp::getInternalInstance):
-
-2008-01-12 Alp Toker <alp@atoker.com>
-
- Reviewed by Mark Rowe.
-
- Hide non-public symbols in GTK+/autotools release builds.
-
- * GNUmakefile.am:
-
-2008-01-12 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Mark Rowe.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=16852
- Fixes leaking of ActivationStackNode objects.
-
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::deleteActivationStack):
- (KJS::JSGlobalObject::~JSGlobalObject):
- (KJS::JSGlobalObject::init):
- (KJS::JSGlobalObject::reset):
- * kjs/JSGlobalObject.h:
-
-2008-01-12 Darin Adler <darin@apple.com>
-
- - try to fix Qt Windows build
-
- * pcre/dftables: Remove reliance on the list form of Perl pipes.
-
-2008-01-12 Darin Adler <darin@apple.com>
-
- - try to fix Qt build
-
- * kjs/function.cpp: Added include of scope_chain_mark.h.
- * kjs/scope_chain_mark.h: Added multiple-include guards.
-
-2008-01-12 Mark Rowe <mrowe@apple.com>
-
- Another Windows build fix.
-
- * kjs/Activation.h:
-
-2008-01-12 Mark Rowe <mrowe@apple.com>
-
- Attempted Windows build fix. Use struct consistently when forward-declaring
- ActivationStackNode and StackActivation.
-
- * kjs/Activation.h:
- * kjs/JSGlobalObject.h:
-
-2008-01-12 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Fixes a problem with the ActivationImp tear-off patch (r29425) where
- some of the calls to JSGlobalObject::tearOffActivation() were using
- the wrong test to determine whether it should leave a relic behind.
-
- * kjs/function.cpp:
- (KJS::FunctionImp::argumentsGetter):
- (KJS::ActivationImp::getOwnPropertySlot):
-
-2008-01-11 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fixed <rdar://problem/5665251> REGRESSION (r28880-r28886): Global
- variable access (16644)
-
- This bug was caused by var declarations shadowing built-in properties of
- the global object.
-
- To match Firefox, we've decided that var declarations will never shadow
- built-in properties of the global object or its prototypes. We used to
- behave more like IE, which allows shadowing, but walking that line got
- us into trouble with websites that sent us down the Firefox codepath.
-
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::symbolTableGet): New code to support calling
- hasProperty before the variable object is fully initialized (so you
- can call it during initialization).
-
- * kjs/nodes.cpp:.
- (KJS::ProgramNode::initializeSymbolTable): Always do a full hasProperty
- check when looking for duplicates, not getDirect, since it only checks
- the property map, and not hasOwnProperty, since it doesn't check
- prototypes.
- (KJS::EvalNode::processDeclarations): ditto
-
- * kjs/property_slot.h:
- (KJS::PropertySlot::ungettableGetter): Best function name evar.
-
-2008-01-11 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej.
-
- Optimized ActivationImp allocation, so that activation records are now
- first allocated on an explicitly managed stack and only heap allocated
- when necessary. Roughly a 5% improvement on SunSpider, and a larger
- improvement on benchmarks that use more function calls.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/Activation.h: Added.
- (KJS::ActivationImp::ActivationData::ActivationData):
- (KJS::ActivationImp::ActivationImp):
- (KJS::ActivationImp::classInfo):
- (KJS::ActivationImp::isActivationObject):
- (KJS::ActivationImp::isOnStack):
- (KJS::ActivationImp::d):
- (KJS::StackActivation::StackActivation):
- * kjs/ExecState.cpp:
- (KJS::ExecState::ExecState):
- (KJS::ExecState::~ExecState):
- * kjs/ExecState.h:
- (KJS::ExecState::replaceScopeChainTop):
- (KJS::ExecState::setActivationObject):
- (KJS::ExecState::setLocalStorage):
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::reset):
- (KJS::JSGlobalObject::pushActivation):
- (KJS::JSGlobalObject::checkActivationCount):
- (KJS::JSGlobalObject::popActivationHelper):
- (KJS::JSGlobalObject::popActivation):
- (KJS::JSGlobalObject::tearOffActivation):
- * kjs/JSGlobalObject.h:
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::JSVariableObjectData::JSVariableObjectData):
- (KJS::JSVariableObject::JSVariableObject):
- * kjs/function.cpp:
- (KJS::FunctionImp::argumentsGetter):
- (KJS::ActivationImp::ActivationImp):
- (KJS::ActivationImp::~ActivationImp):
- (KJS::ActivationImp::init):
- (KJS::ActivationImp::getOwnPropertySlot):
- (KJS::ActivationImp::markHelper):
- (KJS::ActivationImp::mark):
- (KJS::ActivationImp::ActivationData::ActivationData):
- (KJS::GlobalFuncImp::callAsFunction):
- * kjs/function.h:
- * kjs/nodes.cpp:
- (KJS::PostIncResolveNode::evaluate):
- (KJS::PostDecResolveNode::evaluate):
- (KJS::PreIncResolveNode::evaluate):
- (KJS::PreDecResolveNode::evaluate):
- (KJS::ReadModifyResolveNode::evaluate):
- (KJS::AssignResolveNode::evaluate):
- (KJS::WithNode::execute):
- (KJS::TryNode::execute):
- (KJS::FunctionBodyNode::processDeclarations):
- (KJS::FuncExprNode::evaluate):
- * kjs/object.h:
- * kjs/scope_chain.h:
- (KJS::ScopeChain::replace):
- * kjs/scope_chain_mark.h: Added.
- (KJS::ScopeChain::mark):
-
-2008-01-11 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Fix the (clean) qmake build. For generating chartables.c we don't
- depend on a separate input source file anymore, the dftables perl
- script is enough. So use that instead as value for the .input
- variable, to ensure that qmake also generates a rule to call dftables.
-
- * pcre/pcre.pri:
-
-2008-01-10 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by John Sullivan.
-
- Fixed some world leak reports:
- * <rdar://problem/5669436> PLT complains about world leak of 1 JavaScript
- Interpreter after running cvs-base suite
-
- * <rdar://problem/5669423> PLT complains about world leak if browser
- window is open when PLT starts
-
- * kjs/collector.h: Added the ability to distinguish between global
- objects and GC-protected global objects, since we only consider the
- latter to be world leaks.
- * kjs/collector.cpp:
-
-2008-01-11 Mark Rowe <mrowe@apple.com>
-
- Silence qmake warning about ctgen lacking input.
-
- Rubber-stamped by Alp Toker.
-
- * pcre/pcre.pri:
-
-2008-01-10 David Kilzer <ddkilzer@apple.com>
-
- dftables should be rewritten as a script
-
- <http://bugs.webkit.org/show_bug.cgi?id=16818>
- <rdar://problem/5681463>
-
- Reviewed by Darin.
-
- Rewrote the dftables utility in Perl. Attempted to switch all
- build systems to call the script directly instead of building
- a binary first. Only the Xcode build was able to be tested.
-
- * DerivedSources.make: Added pcre directory to VPATH and changed
- to invoke dftables directly.
- * GNUmakefile.am: Removed build information and changed to invoke
- dftables directly.
- * JavaScriptCore.vcproj/JavaScriptCore.sln: Removed reference to
- dftables project.
- * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Ditto.
- * JavaScriptCore.vcproj/dftables: Removed.
- * JavaScriptCore.vcproj/dftables/dftables.vcproj: Removed.
- * JavaScriptCore.xcodeproj/project.pbxproj: Removed dftables target.
- * jscore.bkl: Removed dftables executable definition.
- * pcre/dftables: Copied from JavaScriptCore/pcre/dftables.cpp.
- * pcre/dftables.cpp: Removed.
- * pcre/dftables.pro: Removed.
- * pcre/pcre.pri: Removed references to dftables.cpp and changed to
- invoke dftables directly.
-
-2008-01-10 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Darin Adler.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=16782
- <rdar://problem/5675331> REGRESSION(r29266): Reproducible crash in fast/replaced/image-map.html
-
- The crash resulted from a native object (DumpRenderTree's
- EventSender) causing its wrapper to be invalidated (by clicking a
- link that replaced the document in the window) and consequently
- deallocated. The fix is to use RefPtrs to protect the native object
- from deletion by self-invalidation.
-
- * bindings/runtime_method.cpp:
- (RuntimeMethod::callAsFunction):
- * bindings/runtime_object.cpp:
- (RuntimeObjectImp::fallbackObjectGetter):
- (RuntimeObjectImp::fieldGetter):
- (RuntimeObjectImp::methodGetter):
- (RuntimeObjectImp::put):
- (RuntimeObjectImp::defaultValue):
- (RuntimeObjectImp::callAsFunction):
-
-2008-01-07 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Turn testIsInteger assertions into compile-time asserts and move them into HashTraits.h
- where possible.
-
- * kjs/testkjs.cpp:
- * wtf/HashTraits.h:
-
-2008-01-07 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Mark.
-
- Enable SVG_FONTS by default.
-
- * Configurations/JavaScriptCore.xcconfig:
-
-2008-01-07 Darin Adler <darin@apple.com>
-
- Rubber stamped by David Kilzer.
-
- - get rid of empty fpconst.cpp
-
- * GNUmakefile.am: Remove fpconst.cpp.
- * JavaScriptCore.pri: Ditto.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto.
- * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
- * JavaScriptCoreSources.bkl: Ditto.
-
- * kjs/fpconst.cpp: Removed.
-
-2008-01-07 Darin Adler <darin@apple.com>
-
- Reviewed by David Kilzer.
-
- - fix alignment problem with NaN and Inf globals
-
- * kjs/fpconst.cpp: Move the contents of this file from here back to
- value.cpp. The reason this was in a separate file is that the DARWIN
- version of this used a declaration of the globals with a different
- type to avoid creating "init routines". That's no longer necessary for
- DARWIN and was never necessary for the non-DARWIN code path.
- To make this patch easy to merge, I didn't actually delete this file
- yet. We'll do that in a separate changeset.
-
- * kjs/value.cpp: If C99's NAN and INFINITY are present, then use them,
- othrewise use the union trick from fpconst.cpp. I think it would be
- better to eliminate KJS::NaN and KJS::Inf and just use NAN and INFINITY
- directly or std::numeric_limits<double>::quiet_nan() and
- std::numeric_limits<double>::infinity(). But when I tried that, it
- slowed down SunSpider. Someone else could do that cleanup if they
- could do it without slowing down the engine.
-
-2008-01-07 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added
- JavaScript.h to the project.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
- Copy JavaScript.h to WEBKITOUTPUTDIR.
-
-2008-01-07 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Darin.
-
- Fix Mac build.
-
- * API/JSNode.c:
- * API/JSNode.h:
- * API/JSNodeList.c:
- * API/JSNodeList.h:
- * API/JavaScript.h:
- * API/JavaScriptCore.h:
- * API/minidom.c:
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2008-01-07 Alp Toker <alp@atoker.com>
-
- Reviewed by Darin.
-
- http://bugs.webkit.org/show_bug.cgi?id=16029
- JavaScriptCore.h is not suitable for platforms other than Mac OS X
-
- Introduce a new JavaScriptCore/JavaScript.h public API header. This
- should be used by all new portable code using the JavaScriptCore API.
-
- JavaScriptCore/JavaScriptCore.h will remain for compatibility with
- existing applications that depend on it including JSStringRefCF.h
- which isn't portable.
-
- Also add minidom to the GTK+/autotools build since we can now support
- it on all platforms.
-
- * API/JSNode.h:
- * API/JSNodeList.h:
- * API/JavaScript.h: Added.
- * API/JavaScriptCore.h:
- * ForwardingHeaders/JavaScriptCore/JavaScript.h: Added.
- * GNUmakefile.am:
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2008-01-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Abstract all DateObject.set* functions in preparation for fixing:
- http://bugs.webkit.org/show_bug.cgi?id=16753
-
- SunSpider had random changes here and there but was overall a wash.
-
- * kjs/date_object.cpp:
- (KJS::fillStructuresUsingTimeArgs):
- (KJS::setNewValueFromTimeArgs):
- (KJS::setNewValueFromDateArgs):
- (KJS::DateProtoFuncSetMilliSeconds::callAsFunction):
- (KJS::DateProtoFuncSetUTCMilliseconds::callAsFunction):
- (KJS::DateProtoFuncSetSeconds::callAsFunction):
- (KJS::DateProtoFuncSetUTCSeconds::callAsFunction):
- (KJS::DateProtoFuncSetMinutes::callAsFunction):
- (KJS::DateProtoFuncSetUTCMinutes::callAsFunction):
- (KJS::DateProtoFuncSetHours::callAsFunction):
- (KJS::DateProtoFuncSetUTCHours::callAsFunction):
- (KJS::DateProtoFuncSetDate::callAsFunction):
- (KJS::DateProtoFuncSetUTCDate::callAsFunction):
- (KJS::DateProtoFuncSetMonth::callAsFunction):
- (KJS::DateProtoFuncSetUTCMonth::callAsFunction):
- (KJS::DateProtoFuncSetFullYear::callAsFunction):
- (KJS::DateProtoFuncSetUTCFullYear::callAsFunction):
-
-2008-01-06 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Dan.
-
- Add new helper function isArabicChar - SVG Fonts support needs it.
-
- * wtf/unicode/icu/UnicodeIcu.h:
- (WTF::Unicode::isArabicChar):
- * wtf/unicode/qt4/UnicodeQt4.h:
- (WTF::Unicode::isArabicChar):
-
-2008-01-06 Alp Toker <alp@atoker.com>
-
- Reviewed by Mark Rowe.
-
- Use $(EXEEXT) to account for the .exe extension in the GTK+ Windows
- build. (This is already done correctly in DerivedSources.make.) Issue
- noticed by Mikkel when building in Cygwin.
-
- Add a missing slash. This was a hack from the qmake build system that
- isn't necessary with autotools.
-
- * GNUmakefile.am:
-
-2008-01-05 Darin Adler <darin@apple.com>
-
- * API/JSRetainPtr.h: One more file that needed the change below.
-
-2008-01-05 Darin Adler <darin@apple.com>
-
- * wtf/OwnPtr.h: OwnPtr needs the same fix as RefPtr below.
-
-2008-01-05 Adam Roben <aroben@apple.com>
-
- Build fix.
-
- Reviewed by Maciej.
-
- * wtf/RetainPtr.h: Use PtrType instead of T* because of the
- RemovePointer magic.
-
-2008-01-05 Darin Adler <darin@apple.com>
-
- Rubber stamped by Maciej Stachowiak.
-
- - cut down own PIC branches by using a pointer-to-member-data instead of a
- pointer-to-member-function in WTF smart pointers
-
- * wtf/OwnArrayPtr.h:
- * wtf/OwnPtr.h:
- * wtf/PassRefPtr.h:
- * wtf/RefPtr.h:
- * wtf/RetainPtr.h:
- Use a pointer to the m_ptr member instead of the get member.
- The GCC compiler generates better code for this idiom.
-
-2008-01-05 Henry Mason <hmason@mac.com>
-
- Reviewed by Maciej Stachowiak.
-
- http://bugs.webkit.org/show_bug.cgi?id=16738
- Bug 16738: Collector block offset could be stored as an cell offset instead of a byte offset
-
- Gives a 0.4% SunSpider boost and prettier code.
-
- * kjs/collector.cpp: Switched to cell offsets from byte offsets
- (KJS::Collector::heapAllocate):
- (KJS::Collector::sweep):
-
-2008-01-04 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Have the two malloc zones print useful diagnostics if their free method are unexpectedly invoked.
- Due to <rdar://problem/5671357> this can happen if an application attempts to free a pointer that
- was not allocated by any registered malloc zone on the system.
-
- * kjs/CollectorHeapIntrospector.h:
- * wtf/FastMalloc.cpp:
-
-2008-01-04 Alp Toker <alp@atoker.com>
-
- GTK+ autotools build fix. Terminate empty rules.
-
- * GNUmakefile.am:
-
-2008-01-03 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Fix compilation with gcc 4.3: limits.h is needed for INT_MAX.
-
- * pcre/pcre_exec.cpp:
-
-2008-01-03 Darin Adler <darin@apple.com>
-
- * tests/mozilla/expected.html: The fix for bug 16696 also fixed a test
- case, ecma_3/RegExp/perlstress-002.js, so updated results to expect
- that test to succeed.
-
-2008-01-02 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=16696
- JSCRE fails fails to match Acid3 regexp
-
- Test: fast/regex/early-acid3-86.html
-
- The problem was with the cutoff point between backreferences and octal
- escape sequences. We need to determine the cutoff point by counting the
- total number of capturing brackets, which requires an extra pass through
- the expression when compiling it.
-
- * pcre/pcre_compile.cpp:
- (CompileData::CompileData): Added numCapturingBrackets. Removed some
- unused fields.
- (compileBranch): Use numCapturingBrackets when calling checkEscape.
- (calculateCompiledPatternLength): Use numCapturingBrackets when calling
- checkEscape, and also store the bracket count at the end of the compile.
- (jsRegExpCompile): Call calculateCompiledPatternLength twice -- once to
- count the number of brackets and then a second time to calculate the length.
-
-2008-01-02 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=16696
- JSCRE fails fails to match Acid3 regexp
-
- Test: fast/regex/early-acid3-86.html
-
- The problem was with the cutoff point between backreferences and octal
- escape sequences. We need to determine the cutoff point by counting the
- total number of capturing brackets, which requires an extra pass through
- the expression when compiling it.
-
- * pcre/pcre_compile.cpp:
- (CompileData::CompileData): Added numCapturingBrackets. Removed some
- unused fields.
- (compileBranch): Use numCapturingBrackets when calling checkEscape.
- (calculateCompiledPatternLength): Use numCapturingBrackets when calling
- checkEscape, and also store the bracket count at the end of the compile.
- (jsRegExpCompile): Call calculateCompiledPatternLength twice -- once to
- count the number of brackets and then a second time to calculate the length.
-
-2008-01-02 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed and landed by Darin.
-
- * kjs/nodes.cpp:
- (KJS::DoWhileNode::execute): Added a missing return.
-
-2008-01-02 Darin Adler <darin@apple.com>
-
- - try to fix Qt build
-
- * wtf/unicode/qt4/UnicodeQt4.h:
- (WTF::Unicode::foldCase): Add some missing const.
-
-2008-01-02 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Sam Weinig.
-
- need to export ASCIICType.h for use in DRT
-
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * wtf/ASCIICType.h:
- (WTF::isASCIIUpper):
-
-2008-01-02 Sam Weinig <sam@webkit.org>
-
- Reviewed by Beth Dakin.
-
- Cleanup error_object.h/cpp.
-
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::reset):
- * kjs/error_object.cpp:
- (KJS::ErrorInstance::ErrorInstance):
- (KJS::ErrorPrototype::ErrorPrototype):
- (KJS::ErrorProtoFuncToString::ErrorProtoFuncToString):
- (KJS::ErrorProtoFuncToString::callAsFunction):
- (KJS::ErrorObjectImp::ErrorObjectImp):
- (KJS::ErrorObjectImp::implementsConstruct):
- (KJS::ErrorObjectImp::construct):
- (KJS::ErrorObjectImp::callAsFunction):
- (KJS::NativeErrorPrototype::NativeErrorPrototype):
- (KJS::NativeErrorImp::NativeErrorImp):
- (KJS::NativeErrorImp::implementsConstruct):
- (KJS::NativeErrorImp::construct):
- (KJS::NativeErrorImp::callAsFunction):
- (KJS::NativeErrorImp::mark):
- * kjs/error_object.h:
- (KJS::ErrorInstance::classInfo):
- (KJS::NativeErrorImp::classInfo):
-
-2008-01-02 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Alp Toker.
-
- * GNUmakefile.am: Add missing dependency on grammar.y.
-
-2008-01-01 Darin Adler <darin@apple.com>
-
- Reviewed by Eric.
-
- - fix for http://bugs.webkit.org/show_bug.cgi?id=16695
- JSC allows non-identifier codepoints in identifiers (affects Acid3)
-
- Test: fast/js/kde/parse.html
-
- * kjs/lexer.cpp:
- (KJS::Lexer::lex): Added additional states to distinguish Unicode escapes at the
- start of identifiers from ones inside identifiers. Rejected characters that don't pass
- the isIdentStart and isIdentPart tests.
- (KJS::Lexer::convertUnicode): Removed incorrect FIXME comment.
-
- * kjs/lexer.h: Added new states to distinguish \u escapes at the start of identifiers
- from \u escapes inside identifiers.
-
-2008-01-01 Darin Adler <darin@apple.com>
-
- - rolled scope chain optimization out; it was breaking the world
-
-2008-01-01 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- - http://bugs.webkit.org/show_bug.cgi?id=16685
- eliminate List::empty() to cut down on PIC branches
-
- Also included one other speed-up -- remove the call to reserveCapacity from
- FunctionBodyNode::processDeclarations in all but the most unusual cases.
-
- Together these make SunSpider 1.016x as fast.
-
- * JavaScriptCore.exp: Updated.
- * kjs/ExecState.cpp:
- (KJS::globalEmptyList): Added. Called only when creating global ExecState
- instances.
- (KJS::ExecState::ExecState): Broke constructor up into three separate functions,
- for the three separate node types. Also went through each of the three and
- streamlined as much as possible, removing dead code. This prevents us from having
- to access the global in the function body version of the constructor.
-
- * kjs/ExecState.h: Added emptyList(). Replaced the constructor with a set of
- three that are specific to the different node types that can create new execution
- state objects.
-
- * kjs/array_object.cpp:
- (KJS::ArrayProtoFuncToLocaleString::callAsFunction): Use exec->emptyList() instead
- of List::empty().
- (KJS::ArrayProtoFuncConcat::callAsFunction): Ditto.
- (KJS::ArrayProtoFuncSlice::callAsFunction): Ditto.
- (KJS::ArrayProtoFuncSplice::callAsFunction): Ditto.
- (KJS::ArrayProtoFuncFilter::callAsFunction): Ditto.
- * kjs/function.cpp:
- (KJS::FunctionImp::callAsFunction): Updated to call new ExecState constructor.
- (KJS::GlobalFuncImp::callAsFunction): Ditto (for eval).
- * kjs/function_object.cpp:
- (FunctionObjectImp::construct): Use exec->emptyList() instead of List::empty().
-
- * kjs/list.cpp: Removed List::empty.
- * kjs/list.h: Ditto.
-
- * kjs/nodes.cpp:
- (KJS::ElementNode::evaluate): Use exec->emptyList() instead of List::empty().
- (KJS::ArrayNode::evaluate): Ditto.
- (KJS::ObjectLiteralNode::evaluate): Ditto.
- (KJS::PropertyListNode::evaluate): Ditto.
- (KJS::FunctionBodyNode::processDeclarations): Another speed-up. Check the capacity
- before calling reserveCapacity, because it doesn't get inlined the local storage
- vector is almost always big enough -- saving the function call overhead is a big
- deal.
- (KJS::FuncDeclNode::makeFunction): Use exec->emptyList() instead of List::empty().
- (KJS::FuncExprNode::evaluate): Ditto.
- * kjs/object.cpp:
- (KJS::tryGetAndCallProperty): Ditto.
- * kjs/property_slot.cpp:
- (KJS::PropertySlot::functionGetter): Ditto.
- * kjs/string_object.cpp:
- (KJS::StringProtoFuncSplit::callAsFunction): Ditto.
-
-2008-01-01 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=16648
- REGRESSION (r28165): Yuku.com navigation prints "jsRegExpExecute failed with result -2"
- <rdar://problem/5646486> REGRESSION (r28165): Layout test fast/regex/test1 fails intermittently
-
- Fixes 34 failing test cases in the fast/regex/test1.html test.
-
- Restored the stack which prevents infinite loops for brackets that match the empty
- string; it had been removed as an optimization.
-
- Unfortunately, restoring this stack causes the regular expression test in SunSpider
- to be 1.095x as slow and the overall test to be 1.004x as slow. Maybe we can find
- a correct optimization to restore the speed!
-
- It's possible the original change was on the right track but just off by one.
-
- * pcre/pcre_exec.cpp: Add back eptrblock, but name it BracketChainNode.
- (MatchStack::pushNewFrame): Add back the logic needed here.
- (startNewGroup): Ditto.
- (match): Ditto.
-
-2008-01-01 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- - http://bugs.webkit.org/show_bug.cgi?id=16683
- speed up function calls by making ScopeChain::push cheaper
-
- This gives a 1.019x speedup on SunSpider.
-
- After doing this, I realized this probably will be obsolete when the optimization
- to avoid creating an activation object is done. When we do that one we should check
- if rolling this out will speed things up, since this does add overhead at the time
- you copy the scope chain.
-
- * kjs/object.h: Removed the ScopeChain::release function. It was
- marked inline, and called in exactly one place, so moved it there.
- No idea why it was in this header file!
-
- * kjs/scope_chain.cpp: Removed the overload of the ScopeChain::push
- function that takes another ScopeChain. It was unused. I think we used
- it over in WebCore at one point, but not any more.
-
- * kjs/scope_chain.h: Changed ScopeChainNode into a struct rather than
- a class, got rid of its constructor so we can have one that's uninitialized,
- and moved the refCount into a derived struct, ScopeChainHeapNode. Made _node
- mutable so it can be changed in the moveToHeap function. Changed the copy
- constructor and assignment operator to call moveToHeap, since the top node
- can't be shared when it's embedded in another ScopeChain object. Updated
- functions as needed to handle the case where the first object isn't on the
- heap or to add casts for cases where it's guaranteed to be. Changed the push
- function to always put the new node into the ScopeChain object; it will get
- put onto the heap when needed later.
-
-2008-01-01 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Fixed slight logic error in reserveCapacity, where we would reallocate
- the storage buffer unnecessarily.
-
- * wtf/Vector.h:
- (WTF::::reserveCapacity): No need to grow the buffer if newCapacity is
- equal to capacity().
-
-2008-01-01 Darin Adler <darin@apple.com>
-
- Reviewed by Oliver.
-
- - http://bugs.webkit.org/show_bug.cgi?id=16684
- eliminate debugger overhead from function body execution
-
- Speeds SunSpider up 1.003x. That's a small amount, but measurable.
-
- * JavaScriptCore.exp: Updated.
- * kjs/Parser.h:
- (KJS::Parser::parse): Create the node with a static member function named create() instead
- of using new explicitly.
-
- * kjs/grammar.y: Changed calls to new FunctionBodyNode to use FunctionBodyNode::create().
-
- * kjs/nodes.cpp:
- (KJS::ProgramNode::create): Added. Calls new.
- (KJS::EvalNode::create): Ditto.
- (KJS::FunctionBodyNode::create): Ditto, but creates FunctionBodyNodeWithDebuggerHooks
- when a debugger is present.
- (KJS::FunctionBodyNode::execute): Removed debugger hooks.
- (KJS::FunctionBodyNodeWithDebuggerHooks::FunctionBodyNodeWithDebuggerHooks): Added.
- (KJS::FunctionBodyNodeWithDebuggerHooks::execute): Calls the debugger, then the code,
- then the debugger again.
-
- * kjs/nodes.h: Added create functions, made the constructors private and protected.
-
-2007-12-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- More small cleanup to array_object.cpp
-
- * kjs/array_object.cpp:
- (KJS::ArrayProtoFuncToString::callAsFunction):
- (KJS::ArrayProtoFuncToLocaleString::callAsFunction):
- (KJS::ArrayProtoFuncJoin::callAsFunction):
- (KJS::ArrayProtoFuncConcat::callAsFunction):
- (KJS::ArrayProtoFuncReverse::callAsFunction):
- (KJS::ArrayProtoFuncShift::callAsFunction):
- (KJS::ArrayProtoFuncSlice::callAsFunction):
- (KJS::ArrayProtoFuncSort::callAsFunction):
- (KJS::ArrayProtoFuncSplice::callAsFunction):
- (KJS::ArrayProtoFuncUnShift::callAsFunction):
- (KJS::ArrayProtoFuncFilter::callAsFunction):
- (KJS::ArrayProtoFuncMap::callAsFunction):
- (KJS::ArrayProtoFuncEvery::callAsFunction):
-
-2007-12-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Apply wkstyle to array_object.cpp
-
- * kjs/array_object.cpp:
- (KJS::ArrayPrototype::ArrayPrototype):
- (KJS::ArrayPrototype::getOwnPropertySlot):
- (KJS::ArrayProtoFuncConcat::callAsFunction):
- (KJS::ArrayProtoFuncPop::callAsFunction):
- (KJS::ArrayProtoFuncReverse::callAsFunction):
- (KJS::ArrayProtoFuncShift::callAsFunction):
- (KJS::ArrayProtoFuncSlice::callAsFunction):
- (KJS::ArrayProtoFuncSort::callAsFunction):
- (KJS::ArrayProtoFuncSplice::callAsFunction):
- (KJS::ArrayProtoFuncUnShift::callAsFunction):
- (KJS::ArrayProtoFuncFilter::callAsFunction):
- (KJS::ArrayProtoFuncMap::callAsFunction):
- (KJS::ArrayProtoFuncEvery::callAsFunction):
- (KJS::ArrayProtoFuncLastIndexOf::callAsFunction):
- (KJS::ArrayObjectImp::ArrayObjectImp):
- (KJS::ArrayObjectImp::implementsConstruct):
- (KJS::ArrayObjectImp::construct):
- (KJS::ArrayObjectImp::callAsFunction):
-
-2007-12-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Remove maxInt/minInt, replacing with std:max/min<int>()
-
- * kjs/array_object.cpp:
- (KJS::ArrayProtoFuncSplice::callAsFunction):
- * kjs/operations.cpp:
- * kjs/operations.h:
-
-2007-12-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Update Number.toString to properly throw exceptions.
- Cleanup code in Number.toString implementation.
-
- * kjs/number_object.cpp:
- (KJS::numberToString):
- * kjs/object.cpp:
- (KJS::Error::create): Remove bogus debug lines.
-
-2007-12-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Oliver.
-
- ASSERT when debugging via Drosera due to missed var lookup optimization.
- http://bugs.webkit.org/show_bug.cgi?id=16634
-
- No test case possible.
-
- * kjs/nodes.cpp:
- (KJS::BreakpointCheckStatement::optimizeVariableAccess):
- * kjs/nodes.h:
-
-2007-12-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Oliver.
-
- Fix (-0).toFixed() and re-factor a little
- Fix (-0).toExponential() and printing of trailing 0s in toExponential
- Fix toPrecision(nan) handling
- http://bugs.webkit.org/show_bug.cgi?id=16640
-
- * kjs/number_object.cpp:
- (KJS::numberToFixed):
- (KJS::fractionalPartToString):
- (KJS::numberToExponential):
- (KJS::numberToPrecision):
-
-2007-12-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- More changes to make number code readable
-
- * kjs/number_object.cpp:
- (KJS::integer_part_noexp):
- (KJS::numberToFixed):
- (KJS::numberToExponential):
-
-2007-12-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- More small cleanups to toPrecision
-
- * kjs/number_object.cpp:
- (KJS::numberToPrecision):
-
-2007-12-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- More small attempts to make number code readable
-
- * kjs/number_object.cpp:
- (KJS::exponentialPartToString):
- (KJS::numberToExponential):
- (KJS::numberToPrecision):
-
-2007-12-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Break out callAsFunction implementations into static functions
-
- * kjs/number_object.cpp:
- (KJS::numberToString):
- (KJS::numberToFixed):
- (KJS::numberToExponential):
- (KJS::numberToPrecision):
- (KJS::NumberProtoFunc::callAsFunction):
-
-2007-12-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Apply wkstyle/astyle and fix placement of *
-
- * kjs/number_object.cpp:
- (KJS::NumberInstance::NumberInstance):
- (KJS::NumberPrototype::NumberPrototype):
- (KJS::NumberProtoFunc::NumberProtoFunc):
- (KJS::integer_part_noexp):
- (KJS::intPow10):
- (KJS::NumberProtoFunc::callAsFunction):
- (KJS::NumberObjectImp::NumberObjectImp):
- (KJS::NumberObjectImp::getOwnPropertySlot):
- (KJS::NumberObjectImp::getValueProperty):
- (KJS::NumberObjectImp::implementsConstruct):
- (KJS::NumberObjectImp::construct):
- (KJS::NumberObjectImp::callAsFunction):
- * kjs/object.cpp:
- (KJS::JSObject::put):
-
-2007-12-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- ASSERT in JavaScriptCore while viewing WICD test case
- http://bugs.webkit.org/show_bug.cgi?id=16626
-
- * kjs/nodes.cpp:
- (KJS::ForInNode::execute): move KJS_CHECK_EXCEPTION to proper place
-
-2007-12-26 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=16390
- Use autotools or GNU make as the build system for the GTK port
-
- * GNUmakefile.am: Added.
-
-2007-12-25 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - Remove unnecessary redundant check from property setting
- http://bugs.webkit.org/show_bug.cgi?id=16602
-
- 1.3% speedup on SunSpider.
-
- * kjs/object.cpp:
- (KJS::JSObject::put): Don't do canPut check when not needed; let
- the PropertyMap handle it.
- (KJS::JSObject::canPut): Don't check the static property
- table. lookupPut does that already.
-
-2007-12-24 Alp Toker <alp@atoker.com>
-
- Fix builds that don't use AllInOneFile.cpp following breakage
- introduced in r28973.
-
- * kjs/grammar.y:
-
-2007-12-24 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Eric.
-
- - Optimize variable declarations
- http://bugs.webkit.org/show_bug.cgi?id=16585
-
- 3.5% speedup on SunSpider.
-
- var statements now result in either assignments or empty statements.
-
- This allows a couple of optimization opportunities:
- - No need to branch at runtime to check if there is an initializer
- - EmptyStatementNodes can be removed entirely (also done in this patch)
- - Assignment expressions get properly optimized for local variables
-
- This patch also includes some code cleanup:
- - Most of the old VarStatement/VarDecl logic is now only used for const declarations,
- thus it is renamed appropriately
- - AssignExprNode is gone
-
- * JavaScriptCore.exp:
- * kjs/NodeInfo.h:
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::SourceElements::append):
- (KJS::ConstDeclNode::ConstDeclNode):
- (KJS::ConstDeclNode::optimizeVariableAccess):
- (KJS::ConstDeclNode::handleSlowCase):
- (KJS::ConstDeclNode::evaluateSingle):
- (KJS::ConstDeclNode::evaluate):
- (KJS::ConstStatementNode::optimizeVariableAccess):
- (KJS::ConstStatementNode::execute):
- (KJS::VarStatementNode::optimizeVariableAccess):
- (KJS::VarStatementNode::execute):
- (KJS::ForInNode::ForInNode):
- (KJS::ForInNode::optimizeVariableAccess):
- (KJS::ForInNode::execute):
- (KJS::FunctionBodyNode::initializeSymbolTable):
- (KJS::ProgramNode::initializeSymbolTable):
- (KJS::FunctionBodyNode::processDeclarations):
- (KJS::ProgramNode::processDeclarations):
- (KJS::EvalNode::processDeclarations):
- * kjs/nodes.h:
- (KJS::DeclarationStacks::):
- (KJS::StatementNode::):
- (KJS::ConstDeclNode::):
- (KJS::ConstStatementNode::):
- (KJS::EmptyStatementNode::):
- (KJS::VarStatementNode::):
- (KJS::ForNode::):
- * kjs/nodes2string.cpp:
- (KJS::ConstDeclNode::streamTo):
- (KJS::ConstStatementNode::streamTo):
- (KJS::ScopeNode::streamTo):
- (KJS::VarStatementNode::streamTo):
- (KJS::ForNode::streamTo):
- (KJS::ForInNode::streamTo):
-
-2007-12-21 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- * JavaScriptCore.exp: Remove unused symbol to prevent a weak external symbol
- being generated in JavaScriptCore.framework.
-
-2007-12-21 Darin Adler <darin@apple.com>
-
- Requested by Maciej.
-
- * kjs/nodes.h: Use the new NEVER_INLINE here and eliminate the old
- KJS_NO_INLINE. We don't want to have two, and we figured it was better
- to keep the one that's in WTF.
-
-2007-12-21 Darin Adler <darin@apple.com>
-
- Reviewed by Eric.
-
- - http://bugs.webkit.org/show_bug.cgi?id=16561
- remove debugger overhead from non-debugged JavaScript execution
-
- 1.022x as fast on SunSpider.
-
- * JavaScriptCore.exp: Updated.
-
- * kjs/NodeInfo.h: Renamed SourceElementsStub to SourceElements,
- since that more accurately describes the role of this object, which
- is a reference-counted wrapper for a Vector.
-
- * kjs/Parser.cpp:
- (KJS::Parser::didFinishParsing): Changed parameter type to SourceElements,
- and use plain assignment instead of set.
- * kjs/Parser.h: Changed parameter type of didFinishParsing to a
- SourceElements. Also changed m_sourceElements; we now use a RefPtr instead
- of an OwnPtr as well.
-
- * kjs/grammar.y: Got rid of all the calls to release() on SourceElements.
- That's now handed inside the constructors for various node types, since we now
- use vector swapping instead.
-
- * kjs/nodes.cpp:
- (KJS::Node::rethrowException): Added NEVER_INLINE, because this was getting inlined
- and we want exception handling out of the normal code flow.
- (KJS::SourceElements::append): Moved here from the header. This now handles
- creating a BreakpointCheckStatement for each statement in the debugger case.
- That way we can get breakpoint handling without having it in every execute function.
- (KJS::BreakpointCheckStatement::BreakpointCheckStatement): Added.
- (KJS::BreakpointCheckStatement::execute): Added. Contains the code that was formerly
- in the StatementNode::hitStatement function and the KJS_BREAKPOINT macro.
- (KJS::BreakpointCheckStatement::streamTo): Added.
- (KJS::ArgumentListNode::evaluateList): Use KJS_CHECKEXCEPTIONVOID since the return
- type is void.
- (KJS::VarStatementNode::execute): Removed KJS_BREAKPOINT.
- (KJS::BlockNode::BlockNode): Changed parameter type to SourceElements.
- Changed code to use release since the class now contains a vector rather than
- a vector point.
- (KJS::BlockNode::optimizeVariableAccess): Updated since member is now a vector
- rather than a vector pointer.
- (KJS::BlockNode::execute): Ditto.
- (KJS::ExprStatementNode::execute): Removed KJS_BREAKPOINT.
- (KJS::IfNode::execute): Ditto.
- (KJS::IfElseNode::execute): Ditto.
- (KJS::DoWhileNode::execute): Ditto.
- (KJS::WhileNode::execute): Ditto.
- (KJS::ContinueNode::execute): Ditto.
- (KJS::BreakNode::execute): Ditto.
- (KJS::ReturnNode::execute): Ditto.
- (KJS::WithNode::execute): Ditto.
- (KJS::CaseClauseNode::optimizeVariableAccess): Updated since member is now a vector
- rather than a vector pointer.
- (KJS::CaseClauseNode::executeStatements): Ditto.
- (KJS::SwitchNode::execute): Removed KJS_BREAKPOINT.
- (KJS::ThrowNode::execute): Ditto.
- (KJS::TryNode::execute): Ditto.
- (KJS::ScopeNode::ScopeNode): Changed parameter type to SourceElements.
- (KJS::ProgramNode::ProgramNode): Ditto.
- (KJS::EvalNode::EvalNode): Ditto.
- (KJS::FunctionBodyNode::FunctionBodyNode): Ditto.
- (KJS::ScopeNode::optimizeVariableAccess): Updated since member is now a vector
- rather than a vector pointer.
-
- * kjs/nodes.h: Removed hitStatement. Renamed SourceElements to StatementVector.
- Renamed SourceElementsStub to SourceElements and made it derive from
- ParserRefCounted rather than from Node, hold a vector rather than a pointer to
- a vector, and changed the release function to swap with another vector rather
- than the pointer idiom. Updated BlockNode and CaseClauseNode to hold actual
- vectors instead of pointers to vectors. Added BreakpointCheckStatement.
-
- * kjs/nodes2string.cpp:
- (KJS::statementListStreamTo): Changed to work on a vector instead of a pointer
- to a vector.
- (KJS::BlockNode::streamTo): Ditto.
- (KJS::CaseClauseNode::streamTo): Ditto.
-
- * wtf/AlwaysInline.h: Added NEVER_INLINE.
- * wtf/PassRefPtr.h: Tweaked formatting. Added clear() function that matches the
- ones in OwnPtr and auto_ptr.
- * wtf/RefPtr.h: Ditto.
-
-2007-12-21 Darin Adler <darin@apple.com>
-
- - fix broken regression tests
-
- The broken tests were fast/js/do-while-expression-value.html and
- fast/js/while-expression-value.html.
-
- * kjs/nodes.cpp: Check in the correct version of this file. I had accidentally landed
- an old version of my patch for bug 16471.
- (KJS::statementListExecute): The logic here was backwards. Have to set the value
- even for non-normal execution results.
-
-2007-12-20 Alexey Proskuryakov <ap@webkit.org>
-
- Windows build fix
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Copy npruntime_internal.h
- to WebKitBuild.
-
-2007-12-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by mjs.
-
- Split IfNode into IfNode and IfElseNode for speedup.
- http://bugs.webkit.org/show_bug.cgi?id=16470
-
- SunSpider claims this is 1.003x as fast as before.
- (This required running with --runs 15 to get consistent enough results to tell!)
-
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::IfNode::optimizeVariableAccess):
- (KJS::IfNode::execute):
- (KJS::IfNode::getDeclarations):
- (KJS::IfElseNode::optimizeVariableAccess):
- (KJS::IfElseNode::execute):
- (KJS::IfElseNode::getDeclarations):
- * kjs/nodes.h:
- (KJS::IfNode::):
- (KJS::IfElseNode::):
- * kjs/nodes2string.cpp:
- (KJS::IfNode::streamTo):
- (KJS::IfElseNode::streamTo):
-
-2007-12-20 Darin Adler <darin@apple.com>
-
- Reviewed by Sam.
-
- * wtf/OwnPtr.h:
- (WTF::operator==): Added.
- (WTF::operator!=): Added.
-
-2007-12-20 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- AST optimization: Avoid NULL-checking ForNode's child nodes.
-
- 0.6% speedup on SunSpider.
-
- This is a proof of concept patch that demonstrates how to optimize
- grammar productions with optional components, like
-
- for (optional; optional; optional) {
- ...
- }
-
- The parser emits NULL for an optional component that is not present.
-
- Instead of checking for a NULL child at execution time, a node that
- expects an optional component to be present more often than not checks
- for a NULL child at construction time, and substitutes a viable
- alternative node in its place.
-
- (We'd like the parser to start emitting NULL a lot more once we teach
- it to emit NULL for certain no-op productions like EmptyStatement and
- VariableStatement, so, as a foundation, it's important for nodes with
- NULL optional components to be fast.)
-
- * kjs/Parser.cpp:
- (KJS::Parser::didFinishParsing): Check for NULL SourceElements. Also,
- moved didFinishParsing into the .cpp file because adding a branch while
- it was in the header file caused a substantial and inexplicable
- performance regression. (Did I mention that GCC is crazy?)
-
- * kjs/grammar.y:
-
- * kjs/nodes.cpp:
- (KJS::BlockNode::BlockNode): Check for NULL SourceElements.
- (KJS::ForNode::optimizeVariableAccess): No need to check for NULL here.
- (KJS::ForNode::execute): No need to check for NULL here.
- * kjs/nodes.h:
- (KJS::ForNode::): Check for NULL SourceElements. Substitute a TrueNode
- because it's semantically harmless, and it evaluates to boolean in an
- efficient manner.
-
-2007-12-20 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Slight logic reordering in JSImmediate::from(double)
-
- This gives a 0.6% improvement in SunSpider.
-
- * kjs/JSImmediate.h:
- (KJS::JSImmediate::from):
-
-2007-12-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by mjs.
-
- Fix major Array regression introduced by 28899.
-
- SunSpider claims this is at least 1.37x as fast as pre-regression. :)
-
- * kjs/array_instance.cpp: make Arrays fast again!
-
-2007-12-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by Geoff, then re-rubber-stamped by Geoff after final search/replace and testing.
-
- Small reworking of Date code for 4% speedup on Date tests (0.2% overall)
- http://bugs.webkit.org/show_bug.cgi?id=16537
-
- Make msToYear human-readable
- Make msToDayInMonth slightly more readable and avoid recalculating msToYear
- Remove use of isInLeapYear to avoid calling msToYear
- Remove dayInYear call by changing msToDayInMonth to dayInMonthFromDayInYear
- Remove more duplicate calls to dayInYear and getUTCOffset for further speedup
-
- * kjs/DateMath.cpp:
- (KJS::daysFrom1970ToYear):
- (KJS::msToYear):
- (KJS::monthFromDayInYear):
- (KJS::checkMonth):
- (KJS::dayInMonthFromDayInYear):
- (KJS::dateToDayInYear):
- (KJS::getDSTOffsetSimple):
- (KJS::getDSTOffset):
- (KJS::gregorianDateTimeToMS):
- (KJS::msToGregorianDateTime):
-
-2007-12-20 Rodney Dawes <dobey@wayofthemonkey.com>
-
- Reviewed by Darin Adler.
-
- Proxy includes of npruntime.h or npapi.h through npruntime_internal.h
- Include stdio.h in npapi.h for the use of FILE with XP_UNIX defined
- This is for building with X11, as some type and enum names conflict
- with #define names in X11 headers.
- http://bugs.webkit.org/show_bug.cgi?id=15669
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * bindings/NP_jsobject.h:
- * bindings/npapi.h:
- * bindings/npruntime.cpp:
- * bindings/npruntime_impl.h:
- * bindings/npruntime_priv.h:
- * bindings/npruntime_internal.h:
- * bindings/testbindings.cpp:
- * bindings/c/c_class.h:
- * bindings/c/c_runtime.h:
- * bindings/c/c_utility.h:
-
-2007-12-20 Darin Adler <darin@apple.com>
-
- - re-fix http://bugs.webkit.org/show_bug.cgi?id=16471
- Completions need to be smaller (or not exist at all)
-
- Same patch as last time with the test failures problem fixed.
-
- * kjs/function.cpp:
- (KJS::GlobalFuncImp::callAsFunction): Make sure to check the completion
- type from newExec to see if the execute raised an exception.
-
-2007-12-20 Darin Adler <darin@apple.com>
-
- - roll out that last change -- it was causing test failures;
- I'll check it back in after fixing them
-
-2007-12-20 Darin Adler <darin@apple.com>
-
- Reviewed by Eric.
-
- - http://bugs.webkit.org/show_bug.cgi?id=16471
- Completions need to be smaller (or not exist at all)
-
- SuSpider shows 2.4% speedup.
-
- Stop using completions in the execution engine.
- Instead, the completion type and label target are both
- stored in the ExecState.
-
- * API/JSContextRef.cpp: Removed unneeded include of "completion.h".
- * bindings/runtime_method.cpp: Removed unused execute function.
- * bindings/runtime_method.h: Ditto.
-
- * kjs/ExecState.h: Added completionType, breakOrContinueTarget,
- setCompletionType, setNormalCompletion, setBreakCompletion,
- setContinueCompletion, setReturnValueCompletion, setThrowCompletion,
- setInterruptedCompletion, m_completionType, and m_breakOrContinueTarget.
-
- * kjs/completion.h: Removed constructor and getter for target
- for break and continue from Completion. This class is now only
- used for the public API to Interpreter and such.
-
- * kjs/date_object.h: Removed unused execute function.
-
- * kjs/function.cpp:
- (KJS::FunctionImp::callAsFunction): Removed some unneeded
- exception processing. Updated to call the new execute function
- and to get the completion type from the ExecState. Merged in
- the execute function, which repeated some of the same logic and
- was called only from here.
- (KJS::GlobalFuncImp::callAsFunction): More of the same for eval.
- * kjs/function.h: Removed execute.
-
- * kjs/interpreter.cpp:
- (KJS::Interpreter::evaluate): Added code to convert the result of
- execut into a Completion.
-
- * kjs/nodes.cpp:
- (KJS::Node::setErrorCompletion): Renamed from createErrorCompletion.
- Now sets the completion type in the ExecState.
- (KJS::Node::rethrowException): Now sets the completion type in the
- ExecState.
- (KJS::StatementNode::hitStatement): Now sets the completion type in
- the ExecState.
- (KJS::VarStatementNode::execute): Updated to put completion type in
- the ExecState instead of a Completion object.
- (KJS::statementListExecute): Ditto. Also changed the for loop to use
- indices instead of iterators.
- (KJS::BlockNode::execute): Updated return type.
- (KJS::EmptyStatementNode::execute): Updated to put completion type in
- the ExecState instead of a Completion object.
- (KJS::ExprStatementNode::execute): Ditto.
- (KJS::IfNode::execute): Ditto.
- (KJS::DoWhileNode::execute): Ditto. Also streamlined the logic a little
- to make the normal case a little faster and moved the end outside the
- loop so that "break" can do a break.
- (KJS::WhileNode::execute): Ditto.
- (KJS::ForNode::execute): Ditto.
- (KJS::ForInNode::execute): Ditto.
- (KJS::ContinueNode::execute): Updated to put completion type in
- the ExecState instead of a Completion object.
- (KJS::BreakNode::execute): Ditto.
- (KJS::ReturnNode::execute): Ditto.
- (KJS::WithNode::execute): Ditto.
- (KJS::CaseClauseNode::executeStatements): Ditto. Also renamed to have
- execute in its name to reflect the fact that it's a member of the same
- family of functions.
- (KJS::CaseBlockNode::executeBlock): Ditto.
- (KJS::SwitchNode::execute): Ditto.
- (KJS::LabelNode::execute): Ditto.
- (KJS::ThrowNode::execute): Ditto.
- (KJS::TryNode::execute): Ditto.
- (KJS::ProgramNode::execute): Ditto.
- (KJS::EvalNode::execute): Ditto.
- (KJS::FunctionBodyNode::execute): Ditto.
- (KJS::FuncDeclNode::execute): Ditto.
-
- * kjs/nodes.h: Renamed setErrorCompletion to createErrorCompletion, made
- hitStatement protected, changed return value of execute to a JSValue,
- renamed evalStatements to executeStatements, and evalBlock to executeBlock.
-
- * kjs/number_object.h: Removed unused execute function.
-
-2007-12-20 Geoffrey Garen <ggaren@apple.com>
-
- Added Radar number.
-
- * kjs/nodes.cpp:
- (KJS::ProgramNode::processDeclarations):
-
-2007-12-20 Geoffrey Garen <ggaren@apple.com>
-
- Linux build fix: config.h has to come first.
-
- * kjs/error_object.cpp:
-
-2007-12-19 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Optimized global access to global variables, using a symbol table.
-
- SunSpider reports a 1.5% overall speedup, a 6.2% speedup on 3d-morph,
- and a whopping 33.1% speedup on bitops-bitwise-and.
-
- * API/JSCallbackObjectFunctions.h: Replaced calls to JSObject:: with
- calls to Base::, since JSObject is not always our base class. This
- was always a bug, but the bug is even more apparent after some of my
- changes.
-
- (KJS::::staticFunctionGetter): Replaced use of getDirect with call to
- getOwnPropertySlot. Global declarations are no longer stored in the
- property map, so a call to getDirect is insufficient for finding
- override properties.
-
- * API/testapi.c:
- * API/testapi.js: Added test for the getDirect change mentioned above.
-
- * kjs/ExecState.cpp:
- * kjs/ExecState.h: Dialed back the optimization to store a direct
- pointer to the localStorage buffer. One ExecState can grow the global
- object's localStorage without another ExecState's knowledge, so
- ExecState can't store a direct pointer to the localStorage buffer
- unless/until we invent a way to update all the relevant ExecStates.
-
- * kjs/JSGlobalObject.cpp: Inserted the symbol table into get and put
- operations.
- (KJS::JSGlobalObject::reset): Reset the symbol table and local storage,
- too. Also, clear the property map here, removing the need for a
- separate call.
-
- * kjs/JSVariableObject.cpp:
- * kjs/JSVariableObject.h: Added support for saving localStorage and the
- symbol table to the back/forward cache, and restoring them.
-
- * kjs/function.cpp:
- (KJS::GlobalFuncImp::callAsFunction): Renamed progNode to evalNode
- because it's an EvalNode, not a ProgramNode.
-
- * kjs/lookup.h:
- (KJS::cacheGlobalObject): Replaced put with faster putDirect, since
- that's how the rest of lookup.h works. putDirect is safe here because
- cacheGlobalObject is only used for objects whose names are not valid
- identifiers.
-
- * kjs/nodes.cpp: The good stuff!
-
- (KJS::EvalNode::processDeclarations): Replaced hasProperty with
- the new hasOwnProperty, which is slightly faster.
-
- * kjs/object.h: Nixed clearProperties because clear() does this job now.
-
- * kjs/property_map.cpp:
- * kjs/property_map.h: More back/forward cache support.
-
- * wtf/Vector.h:
- (WTF::::grow): Added fast non-branching grow function. I used it in
- an earlier version of this patch, even though it's not used anymore.
-
-2007-12-09 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Build fix for non-Mac platforms. Move NodeInfo into its own header so that the YYTYPE
- declaration in grammar.h is able to declare members of that type.
-
- * kjs/NodeInfo.h: Added.
- (KJS::createNodeInfo):
- (KJS::mergeDeclarationLists):
- (KJS::appendToVarDeclarationList):
- * kjs/grammar.y:
- * kjs/lexer.cpp:
-
-2007-12-19 Oliver Hunt <oliver@apple.com>
-
- Make appendToVarDeclarationList static
-
- RS=Weinig.
-
- * kjs/grammar.y:
-
-2007-12-18 Oliver Hunt <oliver@apple.com>
-
- Remove dead code due to removal of post-parse declaration discovery.
-
- RS=Geoff.
-
- Due to the removal of the declaration discovery pass after parsing we
- no longer need any of the logic used for that discovery.
-
- * kjs/nodes.cpp:
- (KJS::Node::Node):
- (KJS::VarDeclNode::VarDeclNode):
- (KJS::BlockNode::BlockNode):
- (KJS::ForInNode::ForInNode):
- (KJS::CaseBlockNode::CaseBlockNode):
- * kjs/nodes.h:
- (KJS::VarStatementNode::):
- (KJS::IfNode::):
- (KJS::DoWhileNode::):
- (KJS::WhileNode::):
- (KJS::WithNode::):
- (KJS::LabelNode::):
- (KJS::TryNode::):
- (KJS::FuncDeclNode::):
- (KJS::CaseClauseNode::):
- (KJS::ClauseListNode::):
- (KJS::SwitchNode::):
-
-2007-12-18 Oliver Hunt <oliver@apple.com>
-
- Replace post-parse pass to find declarations with logic in the parser itself
-
- Reviewed by Geoff.
-
- Instead of finding declarations in a pass following the initial parsing of
- a program, we incorporate the logic directly into the parser. This lays
- the groundwork for further optimisations (such as improving performance in
- declaration expressions -- var x = y; -- to match that of standard assignment)
- in addition to providing a 0.4% performance improvement in SunSpider.
-
- * JavaScriptCore.exp:
- * kjs/Parser.cpp:
- (KJS::Parser::parse):
- * kjs/Parser.h:
- (KJS::Parser::didFinishParsing):
- (KJS::Parser::parse):
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::ParserTracked::ParserTracked):
- (KJS::ParserTracked::~ParserTracked):
- (KJS::ParserTracked::ref):
- (KJS::ParserTracked::deref):
- (KJS::ParserTracked::refcount):
- (KJS::ParserTracked::clearNewTrackedObjects):
- (KJS::Node::Node):
- (KJS::ScopeNode::ScopeNode):
- (KJS::ProgramNode::ProgramNode):
- (KJS::EvalNode::EvalNode):
- (KJS::FunctionBodyNode::FunctionBodyNode):
- (KJS::FunctionBodyNode::initializeSymbolTable):
- (KJS::FunctionBodyNode::processDeclarations):
- * kjs/nodes.h:
- (KJS::ParserTracked::):
- (KJS::Node::):
- (KJS::ScopeNode::):
-
-2007-12-18 Xan Lopez <xan@gnome.org>
-
- Reviewed by Geoff.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=14521
- Bug 14521: JavaScriptCore fails to build on Linux/PPC gcc 4.1.2
-
- * wtf/TCSpinLock.h:
- (TCMalloc_SpinLock::Unlock):
-
- Use less strict memory operand constraint on inline asm generation.
- PLATFORM(DARWIN) left unpatched due to Apple's GCC bug.
-
- Patch by David Kilzer <ddkilzer@webkit.org>
-
-2007-12-18 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Maciej Stachowiak.
-
- Remove outdated and non-functioning project files for the Apollo port.
-
- * JavaScriptCore.apolloproj: Removed.
-
-2007-12-18 Darin Adler <darin@apple.com>
-
- - fix Windows build
-
- * pcre/pcre_exec.cpp:
- (jsRegExpExecute): Change back from false/true to 0/1 -- I probably should not have
- deleted MATCH_MATCH and MATCH_NOMATCH, but I'm going to leave them out.
-
-2007-12-18 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=16458
- REGRESSION (r28164): regular expressions can now hang due to lack of a match limit
- <rdar://problem/5636067>
-
- Test: fast/regex/slow.html
-
- Slows down SunSpider a bit (about 1.01x); filed a bug to follow up on that:
- http://bugs.webkit.org/show_bug.cgi?id=16503
-
- * pcre/pcre.h: Changed name of error code to not specifically mention "recursion".
- * pcre/pcre_exec.cpp:
- (match): Replaced the depth limit, MATCH_RECURSION_LIMIT, with a total match looping
- limit, matchLimit. Also eliminated the constants for MATCH_MATCH and MATCH_NOMATCH,
- since they are just true and false (1 and 0).
- (jsRegExpExecute): More of the MATCH_MATCH change.
-
-2007-12-17 Darin Adler <darin@apple.com>
-
- - speculative build fix for non-gcc platforms
-
- * pcre/pcre_exec.cpp: (match): Remove unused cases from return switch.
-
-2007-12-16 Mark Rowe <mrowe@apple.com>
-
- Speculative build fix for non-Mac platforms.
-
- * pcre/pcre_compile.cpp: Include string.h for memset, memmove, etc.
-
-2007-12-16 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=16438
- - removed some more unused code
- - changed quite a few more names to WebKit-style
- - moved more things out of pcre_internal.h
- - changed some indentation to WebKit-style
- - improved design of the functions for reading and writing
- 2-byte values from the opcode stream (in pcre_internal.h)
-
- * pcre/dftables.cpp:
- (main): Added the kjs prefix a normal way in lieu of using macros.
-
- * pcre/pcre_compile.cpp: Moved some definitions here from pcre_internal.h.
- (errorText): Name changes, fewer typedefs.
- (checkEscape): Ditto. Changed uppercase conversion to use toASCIIUpper.
- (isCountedRepeat): Name change.
- (readRepeatCounts): Name change.
- (firstSignificantOpcode): Got rid of the use of OP_lengths, which is
- very lightly used here. Hard-coded the length of OP_BRANUMBER.
- (firstSignificantOpcodeSkippingAssertions): Ditto. Also changed to
- use the advanceToEndOfBracket function.
- (getOthercaseRange): Name changes.
- (encodeUTF8): Ditto.
- (compileBranch): Name changes. Removed unused after_manual_callout and
- the code to handle it. Removed code to handle OP_ONCE since we never
- emit this opcode. Changed to use advanceToEndOfBracket in more places.
- (compileBracket): Name changes.
- (branchIsAnchored): Removed code to handle OP_ONCE since we never emit
- this opcode.
- (bracketIsAnchored): Name changes.
- (branchNeedsLineStart): More fo the same.
- (bracketNeedsLineStart): Ditto.
- (branchFindFirstAssertedCharacter): Removed OP_ONCE code.
- (bracketFindFirstAssertedCharacter): More of the same.
- (calculateCompiledPatternLengthAndFlags): Ditto.
- (returnError): Name changes.
- (jsRegExpCompile): Ditto.
-
- * pcre/pcre_exec.cpp: Moved some definitions here from pcre_internal.h.
- (matchRef): Updated names.
- Improved macros to use the do { } while(0) idiom so they expand to single
- statements rather than to blocks or multiple statements. And refeactored
- the recursive match macros.
- (MatchStack::pushNewFrame): Name changes.
- (getUTF8CharAndIncrementLength): Name changes.
- (match): Name changes. Removed the ONCE opcode.
- (jsRegExpExecute): Name changes.
-
- * pcre/pcre_internal.h: Removed quite a few unneeded includes. Rewrote
- quite a few comments. Removed the macros that add kjs prefixes to the
- functions with external linkage; instead renamed the functions. Removed
- the unneeded typedefs pcre_uint16, pcre_uint32, and uschar. Removed the
- dead and not-all-working code for LINK_SIZE values other than 2, although
- we aim to keep the abstraction working. Removed the OP_LENGTHS macro.
- (put2ByteValue): Replaces put2ByteOpcodeValueAtOffset.
- (get2ByteValue): Replaces get2ByteOpcodeValueAtOffset.
- (put2ByteValueAndAdvance): Replaces put2ByteOpcodeValueAtOffsetAndAdvance.
- (putLinkValueAllowZero): Replaces putOpcodeValueAtOffset; doesn't do the
- addition, since a comma is really no better than a plus sign. Added an
- assertion to catch out of range values and changed the parameter type to
- int rather than unsigned.
- (getLinkValueAllowZero): Replaces getOpcodeValueAtOffset.
- (putLinkValue): New function that most former callers of the
- putOpcodeValueAtOffset function can use; asserts the value that is
- being stored is non-zero and then calls putLinkValueAllowZero.
- (getLinkValue): Ditto.
- (putLinkValueAndAdvance): Replaces putOpcodeValueAtOffsetAndAdvance. No
- caller was using an offset, which makes sense given the advancing behavior.
- (putLinkValueAllowZeroAndAdvance): Ditto.
- (isBracketOpcode): Added. For use in an assertion.
- (advanceToEndOfBracket): Renamed from moveOpcodePtrPastAnyAlternateBranches,
- and removed comments about how it's not well designed. This function takes
- a pointer to the beginning of a bracket and advances to the end of the
- bracket.
-
- * pcre/pcre_tables.cpp: Updated names.
- * pcre/pcre_ucp_searchfuncs.cpp:
- (kjs_pcre_ucp_othercase): Ditto.
- * pcre/pcre_xclass.cpp:
- (getUTF8CharAndAdvancePointer): Ditto.
- (kjs_pcre_xclass): Ditto.
- * pcre/ucpinternal.h: Ditto.
-
- * wtf/ASCIICType.h:
- (WTF::isASCIIAlpha): Added an int overload, like the one we already have for
- isASCIIDigit.
- (WTF::isASCIIAlphanumeric): Ditto.
- (WTF::isASCIIHexDigit): Ditto.
- (WTF::isASCIILower): Ditto.
- (WTF::isASCIISpace): Ditto.
- (WTF::toASCIILower): Ditto.
- (WTF::toASCIIUpper): Ditto.
-
-2007-12-16 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=16459
- REGRESSION: assertion failure with regexp with \B in a case-ignoring character range
- <rdar://problem/5646361>
-
- The problem was that \B was not handled properly in character classes.
-
- Test: fast/js/regexp-overflow.html
-
- * pcre/pcre_compile.cpp:
- (check_escape): Added handling of ESC_b and ESC_B in character classes here.
- Allows us to get rid of the handling of \b in character classes from all the
- call sites that handle it separately and to handle \B properly as well.
- (compileBranch): Remove the ESC_b handling, since it's not needed any more.
- (calculateCompiledPatternLengthAndFlags): Ditto.
-
-2007-12-16 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=16448
- Bug 16448: [GTK] Celtic Kane JavaScript performance on Array test is slow relative to Mac
-
- * kjs/array_instance.cpp:
- (KJS::compareByStringPairForQSort):
- (KJS::ArrayInstance::sort): Convert JSValue's to strings once up front and then sort the
- results. This avoids calling toString twice per comparison, but requires a temporary buffer
- so we only use this approach in cases where the array being sorted is not too large.
-
-2007-12-16 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler and Maciej Stachowiak.
-
- More refactoring to support global variable optimization.
-
- Changed SymbolTable to use RefPtr<UString::Rep> as its key instead of
- UString::Rep*. With globals, the symbol table can outlast the
- declaration node for any given symbol, so the symbol table needs to ref
- its symbol names.
-
- In support, specialized HashMaps with RefPtr keys to allow lookup
- via raw pointer, avoiding refcount churn.
-
- SunSpider reports a .6% speedup (prolly just noise).
-
- * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added new file: wtf/RefPtrHashMap.h
- * JavaScriptCore.xcodeproj/project.pbxproj: ditto
-
- * kjs/JSVariableObject.cpp:
- (KJS::JSVariableObject::getPropertyNames): Symbol table keys are RefPtrs now.
-
- * kjs/SymbolTable.h: Modified key traits to match RefPtr. Added a
- static Rep* for null, which helps compute the deletedValue() trait.
-
- * wtf/HashMap.h: #include the RefPtr specialization so everyone can use it.
-
- * wtf/RefPtrHashMap.h: Copied from wtf/HashMap.h. Added overloaded versions
- of find(), contains(), get(), set(), add(), remove(), and take() that take
- raw pointers as keys.
-
-2007-12-16 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- http://bugs.webkit.org/show_bug.cgi?id=16162
- Problems with float parsing on Linux (locale-dependent parsing was used).
-
- * kjs/dtoa.cpp: Removed USE_LOCALE to reduce future confusion.
- * kjs/lexer.cpp: (KJS::Lexer::lex): Parse with kjs_strtod, not the system one.
-
-2007-12-14 Alp Toker <alp@atoker.com>
-
- Reviewed by Mark Rowe.
-
- Enable the AllInOneFile.cpp optimization for the GTK+ port.
-
- * JavaScriptCore.pri:
-
-2007-12-14 Mark Rowe <mrowe@apple.com>
-
- Unreviewed. Remove commented out fprintf's that were for debugging purposes only.
-
- * wtf/FastMalloc.cpp:
- (WTF::TCMalloc_PageHeap::IncrementalScavenge):
-
-2007-12-14 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Don't use the MADV_DONTNEED code path for now as it has no effect on Mac OS X and is
- currently untested on other platforms.
-
- * wtf/TCSystemAlloc.cpp:
- (TCMalloc_SystemRelease): Return after releasing memory rather than potentially falling
- through into another mechanism if multiple are supported.
-
-2007-12-14 Alp Toker <alp@atoker.com>
-
- Build fix for GTK+/Qt and ports that don't use AllInOneFile.cpp.
-
- Include UnusedParam.h.
-
- * wtf/TCSystemAlloc.cpp:
-
-2007-12-14 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Stephanie.
-
- Fix build on windows
-
- * wtf/FastMalloc.cpp:
- (WTF::TCMalloc_PageHeap::IncrementalScavenge):
-
-2007-12-14 Dan Bernstein <mitz@apple.com>
-
- - try again to fix the Windows build
-
- * wtf/TCSystemAlloc.cpp:
- (TCMalloc_SystemRelease):
-
-2007-12-14 Dan Bernstein <mitz@apple.com>
-
- - try to fix the Windows build
-
- * wtf/TCSystemAlloc.cpp:
- (TCMalloc_SystemRelease):
-
-2007-12-14 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Maciej and Oliver.
-
- Add final changes to make TCMalloc release memory to the system.
- This results in a 0.4% regression against ToT, but this is offset
- against the gains made by the original TCMalloc r38 merge - in fact
- we retain around 0.3-0.4% progression overall.
-
- * wtf/FastMalloc.cpp:
- (WTF::InitSizeClasses):
- (WTF::TCMalloc_PageHeap::IncrementalScavenge):
- * wtf/TCSystemAlloc.cpp:
- (TCMalloc_SystemRelease):
-
-2007-12-14 Darin Adler <darin@apple.com>
-
- Reviewed by Sam.
-
- - removed unnecessary includes of "Vector.h"
-
- * wtf/HashMap.h:
- (WTF::copyKeysToVector): Make the type of the vector be a template parameter.
- This allows copying keys into a vector of a base class or one with an inline capacity.
- (WTF::copyValuesToVector): Ditto.
- * wtf/HashSet.h:
- (WTF::copyToVector): Ditto.
-
-2007-12-14 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Darin and Geoff.
-
- <rdar://problem/5619295>
- REGRESSION: 303-304: Embedded YouTube video fails to render- JS errors (16150) (Flash 9)
-
- Get rid of unnecessary and incorrect security checks for plug-ins accessing JavaScript objects.
-
- The way this used to work was that each NPObject that wrapped a JSObject would have a root object
- corresponding to the frame object (used for managing the lifecycle) and an origin root object (used for
- doing security checks).
-
- This would prevent a plug-in from accessing a frame's window object if it's security origin was different
- (some parts of the window, such as the location object, can be accessed from frames with different security
- origins, and those checks are being done in WebCore).
-
- Also, if a plug-in were to access a window object of a frame that later went away, it could lead to that
- Window JSObject being garbage collected and the NPObject pointing to freed memory.
-
- How this works now is that there is no origin root object anymore, and all NPObject wrappers that are created
- for a plug-in will have the root object of the containing frame of that plug-in.
-
- * bindings/NP_jsobject.cpp:
- (jsDeallocate):
- Don't free the origin root object.
-
- (_NPN_CreateScriptObject):
- Remove the origin root object parameter.
-
- (_NPN_InvokeDefault):
- (_NPN_Invoke):
- (_NPN_Evaluate):
- (_NPN_GetProperty):
- (_NPN_SetProperty):
- (_NPN_RemoveProperty):
- (_NPN_HasProperty):
- (_NPN_HasMethod):
- (_NPN_Enumerate):
- Get rid of all security checks.
-
- * bindings/NP_jsobject.h:
- Remove originRootObject from the JavaScriptObject struct.
-
- * bindings/c/c_utility.cpp:
- (KJS::Bindings::convertValueToNPVariant):
- Always use the root object from the ExecState.
-
-2007-12-13 Steve Falkenburg <sfalken@apple.com>
-
- Move source file generation into its own vcproj to fix build dependencies.
-
- Reviewed by Adam.
-
- * JavaScriptCore.vcproj/JavaScriptCore.sln:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Added.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Added.
- * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln:
-
-2007-12-13 Alp Toker <alp@atoker.com>
-
- http://bugs.webkit.org/show_bug.cgi?id=16406
- [Gtk] JavaScriptCore needs -lpthread
-
- Build fix for Debian and any other platforms that don't implicitly
- link to pthread.
-
- Link to pthread on non-Windows platforms until this dependency is
- removed from JSC.
-
-2007-12-11 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Build fix: Note some variables that are used only for ASSERTs.
-
- * API/testapi.c:
- (Base_finalize):
- (globalObject_initialize):
- (testInitializeFinalize):
-
-2007-12-11 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Fixed: All JS tests crash on Windows.
-
- NDEBUG wasn't defined when compiling testkjs in release builds, so the
- HashTable definition in HashTable.h included an extra data member.
-
- The solution was to add NDEBUG to the release testkjs configuration on
- Windows and Mac.
-
- For giggles, I also added other missing #defines to testkjs on Windows.
-
- * Configurations/Base.xcconfig:
- * Configurations/JavaScriptCore.xcconfig:
- * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/testkjs.cpp:
- (main):
-
-2007-12-11 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Removed bogus ASSERT.
-
- ASSERT should only be used when we know that a code path will not be
- taken. This code path is taken often during the jsFunFuzz test.
-
- * pcre/pcre_exec.cpp:
- (jsRegExpExecute):
-
-2007-12-11 Darin Adler <darin@apple.com>
-
- * wtf/unicode/qt4/UnicodeQt4.h: Try to fix Qt build by adding U16_IS_SINGLE.
-
-2007-12-10 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=16379
- REGRESSION(r28525): Failures in http/tests/xmlhttprequest/response-encoding.html and
- fast/dom/xmlhttprequest-html-response-encoding.html
- and <rdar://problem/5640230> REGRESSION (306A4-ToT): Access violation in PCRE function
- find_firstassertedchar
-
- Test: fast/js/regexp-find-first-asserted.html
-
- * pcre/pcre_compile.cpp:
- (compileBracket): Take out unnecessary initialization of out parameters.
- (branchFindFirstAssertedCharacter): Added. Broke out the half of the function that handles
- a branch.
- (bracketFindFirstAssertedCharacter): Renamed from find_firstassertedchar. Also removed the
- options parameter -- the caller can handle the options.
- (jsRegExpCompile): Changed call site to call the appropriate bracket or branch version of
- the find_firstassertedchar function. Also put the REQ_IGNORE_CASE code here instead of
- passing in the options.
-
-2007-12-10 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Split this:
-
- FunctionBodyNode
- ^
- |
- ProgramNode
-
- into this:
-
- ScopeNode
- ^ ^ ^
- | | |
- FunctionBodyNode ProgramNode EvalNode
-
- in preparation for specializing each class more while optimizing global
- variable access.
-
- Also removed some cruft from the FunctionBodyNode interface to simplify
- things.
-
- SunSpider says this patch is a .8% speedup, which seems reasonable,
- since it eliminates a few branches and adds KJS_FAST_CALL in a few
- places.
-
- Layout tests and JS tests pass. Also, this baby builds on Windows! (Qt
- mileage may vary...)
-
-2007-12-10 Geoffrey Garen <ggaren@apple.com>
-
- RS by Mark Rowe.
-
- Mac build fix: added some exported symbols, now that Parser::parse is
- defined in the header.
-
- * JavaScriptCore.exp:
-
-2007-12-10 Sam Weinig <sam@webkit.org>
-
- Build fix.
-
- Template methods need to be in the header.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * kjs/Parser.cpp:
- * kjs/Parser.h:
- (KJS::Parser::parse):
-
-2007-12-10 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Merged different implementations of Parser::parse into a single,
- templatized implementation, in preparation for adding yet another
- implementation for "eval" code.
-
- JS and layout tests pass.
-
-2007-12-10 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Mark Rowe
-
- <rdar://problem/5639463> Bundle versions on Tiger should be 4523.x not 523.x
-
- * Configurations/Version.xcconfig: Some Tiger versions of Xcode don't set MAC_OS_X_VERSION_MAJOR,
- so assume Tiger and use a 4 for the SYSTEM_VERSION_PREFIX.
-
-2007-12-10 Mark Rowe <mrowe@apple.com>
-
- Tiger build fix.
-
- * kjs/grammar.y: Use @1 and @0 in place of @$ where Tiger's bison chokes.
-
-2007-12-10 Darin Adler <darin@apple.com>
-
- Reviewed by Mark Rowe.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=16375
- REGRESSION: Safari crashes on quit
-
- Probably a debug-only issue.
-
- * kjs/Parser.cpp:
- (KJS::parser): Create the parser and never destroy it by using a pointer instead
- of a global object.
-
-2007-12-09 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=16369
- REGRESSION (r28525): regular expression tests failing due to bad firstByte optimization
-
- * pcre/pcre_compile.cpp: Changed some names to use interCaps intead of under_scores.
- (branchIsAnchored): Broke is_anchored into two separate functions; this one works on a
- branch and the other on an anchor. The old function would only work on a bracket.
- Also removed unneeded parameters; the anchored check does not require the bracket
- map or the options any more because we have a reduced set of features.
- (bracketIsAnchored): Ditto.
- (branchNeedsLineStart): Broke canApplyFirstCharOptimization into two functions and gave
- both a better name. This is the function that was returning the wrong value. The failure
- was beacuse the old function would only work on a bracket.
- (bracketNeedsLineStart): Ditto.
- (jsRegExpCompile): Changed to call the appropriate branch or bracket flavor of the
- functions based on whether we compiled an outer bracket. Also removed inaccurate comments
- and unneeded parameters.
-
- - other small changes
-
- * pcre/pcre.h: Renumbered error codes, in a logical order. First, normal failure, then
- the recursion limit, then running out of memory, and finally an unexpected internal error.
-
- * pcre/pcre_exec.cpp: Fixed indentation.
- (jsRegExpExecute): Corrected an inaccurate comment.
-
-2007-12-09 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=16370
- REGRESSION (r28540): source URL and line number no longer set for outer function/programs
-
- Test: fast/js/exception-linenums-in-html-1.html
- Test: fast/js/exception-linenums-in-html-2.html
- Test: fast/js/exception-linenums.html
-
- By the time the ProgramNode was constructed, the source URL was empty.
-
- * kjs/Parser.cpp:
- (KJS::Parser::parseProgram): Added code to set and clear m_sourceURL, which is now
- handled here instead of in the lexer; it needs to still be set when we create the
- program node. Call setLoc to set the first and last line number.
- (KJS::Parser::parseFunctionBody): Ditto, but for the body.
- (KJS::Parser::parse): Removed the sourceURL argument.
-
- * kjs/Parser.h: Added sourceURL(), m_sourceURL, and m_lastLine. Added a lastLine
- parameter to didFinishParsing, since the bison grammar knows the last line number
- and we otherwise do not know it. Removed the sourceURL parameter from parse, since
- that's now handled at a higher level.
-
- * kjs/grammar.y: Pass the last line number to didFinishParsing.
-
- * kjs/lexer.cpp:
- (KJS::Lexer::setCode): Removed the sourceURL argument and the code to set m_sourceURL.
- (KJS::Lexer::clear): Ditto.
- * kjs/lexer.h: More of the same.
-
- * kjs/nodes.cpp:
- (KJS::FunctionBodyNode::FunctionBodyNode): Get the source URL from the parser rather
- than from the lexer. Removed unneeded call to setLoc, since the line numbers already
- both default to -1.
-
-2007-12-08 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Sam W.
-
- Split the ENABLE_SVG_EXPERIMENTAL_FEATURES flag into separate flags.
-
- Fixes <rdar://problem/5620249> Must disable SVG animation
- <rdar://problem/5612772> Disable SVG filters on Mac to match Windows behavior
-
- Minor config changes.
-
- * Configurations/JavaScriptCore.xcconfig:
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2007-12-07 Sam Weinig <sam@webkit.org>
-
- Reviewed by Darin.
-
- - Rename isSafeScript to allowsAccessFrom.
-
- * bindings/NP_jsobject.cpp:
- (_isSafeScript):
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::allowsAccessFrom): Reverse caller/argument of allowsAccessFrom to match
- the new call.
-
-2007-12-07 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Refactored variable access optimization: Removed the assumption that
- the FunctionBodyNode holds the symbol table.
-
-2007-12-07 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: added #include.
-
- * kjs/nodes.cpp:
-
-2007-12-07 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: added #include.
-
- * kjs/interpreter.cpp:
-
-2007-12-07 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: added #include.
-
- * kjs/grammar.y:
-
-2007-12-07 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: added #include.
-
- * kjs/function_object.cpp:
-
-2007-12-07 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Fixed crash seen running layout tests.
-
- Reverted a change I made earlier today. Added a comment to try to
- discourage myself from making this mistake a third time.
-
- * kjs/function.cpp:
- (KJS::ActivationImp::mark):
- * kjs/function.h:
- (KJS::ActivationImp::ActivationImpData::ActivationImpData):
-
-2007-12-07 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Refactored parsing of global code: Removed the assumption that
- ProgramNode inherits from FunctionBodyNode from the parser.
-
- * kjs/Parser.cpp:
- (KJS::Parser::parseProgram):
- (KJS::Parser::parseFunctionBody):
- (KJS::Parser::parse):
- * kjs/Parser.h:
- (KJS::Parser::didFinishParsing):
- * kjs/function.cpp:
- * kjs/grammar.y:
- * kjs/nodes.h:
-
-2007-12-07 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: added JSVariableObject.cpp to the .pri file.
-
- * JavaScriptCore.pri:
-
-2007-12-07 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: added #include.
-
- * kjs/function.cpp:
-
-2007-12-07 Steve Falkenburg <sfalken@apple.com>
-
- Re-named our B&I flag from BUILDBOT to PRODUCTION.
-
- Reviewed by Sam Weinig.
-
- * JavaScriptCore.vcproj/JavaScriptCore.make:
- * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
-
-2007-12-07 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: removed stray name qualification.
-
- * kjs/function.h:
- (KJS::ActivationImp::ActivationImp):
-
-2007-12-07 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: moved functions with qualified names outside of class
- declaration.
-
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::symbolTableGet):
- (KJS::JSVariableObject::symbolTablePut):
-
-2007-12-07 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Next step in refactoring JSGlobalObject: Added JSVariableObject class,
- and factored symbol-table-related code into it. (JSGlobalObject doesn't
- use the symbol table code yet, though.)
-
- Layout and JS tests, and testapi, pass. SunSpider reports no regression.
-
-2007-12-07 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=16185
- jsRegExpCompile should not add implicit non-capturing bracket
-
- While this does not make SunSpider faster, it will make many regular
- expressions a bit faster.
-
- * pcre/pcre_compile.cpp: Moved CompileData struct in here from the
- header since it's private to this file.
- (compile_branch): Updated for function name change.
- (compile_bracket): Renamed from compile_regex, since, for one thing,
- this does not compile an entire regular expression.
- (calculateCompiledPatternLengthAndFlags): Removed unused item_count
- local variable. Renamed CompileData to cd instead of compile_block
- to be consistent with other functions. Added code to set the
- needOuterBracket flag if there's at least one "|" at the outer level.
- (jsRegExpCompile): Renamed CompileData to cd instead of compile_block
- to be consistent with other functions. Removed unneeded "size" field
- from the compiled regular expression. If no outer bracket is needed,
- then use compile_branch to compile the regular expression.
-
- * pcre/pcre_internal.h: Removed the CompileData struct, which is now
- private to pcre_compile.cpp. Removed the size member from JSRegExp.
-
-2007-12-06 Kevin Ollivier <kevino@theolliviers.com>
-
- MSVC7 build fix due to a compiler bug with placement new and/or
- templates and casting.
-
- Reviewed by Darin Adler.
-
- * wtf/Vector.h:
- (WTF::::append):
-
-2007-12-06 Darin Adler <darin@apple.com>
-
- Reviewed by Eric Seidel.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=16321
- new RegExp("[\u0097]{4,6}", "gmy") crashes in DEBUG builds
- <rdar://problem/5632992>
-
- Test: fast/js/regexp-oveflow.html
-
- * pcre/pcre_compile.cpp:
- (calculateCompiledPatternLengthAndFlags): In the case where a single character
- character class is optimized to not use a character class at all, the preflight
- code was not setting the lastitemlength variable.
-
-2007-12-05 Mark Rowe <mrowe@apple.com>
-
- Qt Windows build fix. Include the time-related headers in the correct place.
-
- * kjs/JSGlobalObject.cpp:
- * kjs/interpreter.cpp:
-
-2007-12-05 Darin Adler <darin@apple.com>
-
- Not reviewed; just undoing a previous commit.
-
- - remove earlier incorrect fix for http://bugs.webkit.org/show_bug.cgi?id=16220
- <rdar://problem/5625221> Crash opening www.news.com (CNet)
-
- The real bug was the backwards ?: in the compile function, which Geoff just
- fixed. Rolling out the incorrect earlier fix.
-
- * pcre/pcre_compile.cpp: (calculateCompiledPatternLengthAndFlags): Take out
- the unneeded preflight change. The regression test proves this is still working
- fine, so the bug remains fixed.
-
-2007-12-01 Mark Rowe <mrowe@apple.com>
-
- Build fix. Include headers before trying to use the things that they declare.
-
- * kjs/JSImmediate.cpp:
- * kjs/nodes.cpp:
- * kjs/object.cpp:
- * kjs/object_object.cpp:
- * kjs/regexp_object.cpp:
- * kjs/string_object.cpp:
-
-2007-12-05 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: added some #includes.
-
- * kjs/JSImmediate.cpp:
-
-2007-12-05 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: added some #includes.
-
- * kjs/JSGlobalObject.cpp:
- * kjs/JSImmediate.cpp:
-
-2007-12-05 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: Fixed #include spelling.
-
- * kjs/debugger.cpp:
-
-2007-12-05 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: added #include.
-
- * kjs/debugger.cpp:
-
-2007-12-05 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: added a forward declaration.
-
- * kjs/debugger.h:
-
-2007-12-05 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: added an #include.
-
- * kjs/error_object.cpp:
-
-2007-12-05 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: added an #include.
-
- * kjs/bool_object.cpp:
-
-2007-12-05 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Third step in refactoring JSGlobalObject: Moved data members and
- functions accessing data members from Interpreter to JSGlobalObject.
- Changed Interpreter member functions to static functions.
-
- This resolves a bug in global object bootstrapping, where the global
- ExecState could be used when uninitialized.
-
- This is a big change, but it's mostly code motion and renaming.
-
- Layout and JS tests, and testjsglue and testapi, pass. SunSpider reports
- a .7% regression, but Shark sees no difference related to this patch,
- and SunSpider reported a .7% speedup from an earlier step in this
- refactoring, so I think it's fair to call that a wash.
-
-2007-12-05 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler. (Or vice versa.)
-
- Fixed ASSERT during run-javascriptcore-tests. (Darin just added the
- ASSERT, but the bug wasn't new.)
-
- * pcre/pcre_compile.cpp:
- (compile_branch): The ?: operator here was backwards, causing us to
- execute the loop too many times, adding stray KET opcodes to the
- compiled regular expression.
-
-2007-12-05 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Geoff.
-
- - Wait until local variable data is fully constructed before notifying the debugger of entering
- or leaving a call frame.
-
- * kjs/function.cpp:
- (KJS::FunctionImp::callAsFunction):
- * kjs/nodes.cpp:
- (KJS::FunctionBodyNode::execute):
-
-2007-12-05 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver.
-
- Build fix for GCC 4.2. Cast via a union to avoid strict-aliasing issues.
-
- * wtf/FastMalloc.cpp:
- (WTF::):
- (WTF::getPageHeap):
-
-2007-12-05 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Darin.
-
- Fix testkjs in 64-bit.
-
- When built for 64-bit the TCMalloc spin lock uses pthread mutexes rather than a custom spin lock
- implemented in assembly. If we fail to initialize the pthread mutex, attempts to lock or unlock
- it will fail and trigger a call to abort.
-
- * wtf/FastMalloc.cpp: Initialize the spin lock so that we can later lock and unlock it.
- * wtf/TCSpinLock.h: Add an Init method to the optimised spin lock.
-
-2007-12-04 Oliver Hunt <oliver@apple.com>
-
- Fix gtk build.
-
- * wtf/TCSystemAlloc.cpp:
-
-2007-12-03 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Mark Rowe and Geoff Garen.
-
- Merge TCMalloc r38
-
- It also result in a performance progression between 0.5% and
- 0.9% depending on the test, however most if not all of this
- gain will be consumed by the overhead involved in the later
- change to release memory to the system.
-
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * wtf/FastMalloc.cpp:
- (WTF::KernelSupportsTLS):
- (WTF::CheckIfKernelSupportsTLS):
- (WTF::):
- (WTF::ClassIndex):
- (WTF::SLL_Next):
- (WTF::SLL_SetNext):
- (WTF::SLL_Push):
- (WTF::SLL_Pop):
- (WTF::SLL_PopRange):
- (WTF::SLL_PushRange):
- (WTF::SLL_Size):
- (WTF::SizeClass):
- (WTF::ByteSizeForClass):
- (WTF::NumMoveSize):
- (WTF::InitSizeClasses):
- (WTF::AllocationSize):
- (WTF::TCMalloc_PageHeap::GetSizeClassIfCached):
- (WTF::TCMalloc_PageHeap::CacheSizeClass):
- (WTF::TCMalloc_PageHeap::init):
- (WTF::TCMalloc_PageHeap::New):
- (WTF::TCMalloc_PageHeap::AllocLarge):
- (WTF::TCMalloc_PageHeap::Carve):
- (WTF::TCMalloc_PageHeap::Delete):
- (WTF::TCMalloc_PageHeap::IncrementalScavenge):
- (WTF::PagesToMB):
- (WTF::TCMalloc_PageHeap::Dump):
- (WTF::TCMalloc_PageHeap::GrowHeap):
- (WTF::TCMalloc_PageHeap::Check):
- (WTF::ReleaseFreeList):
- (WTF::TCMalloc_PageHeap::ReleaseFreePages):
- (WTF::TCMalloc_ThreadCache_FreeList::Push):
- (WTF::TCMalloc_ThreadCache_FreeList::PushRange):
- (WTF::TCMalloc_ThreadCache_FreeList::PopRange):
- (WTF::TCMalloc_ThreadCache_FreeList::Pop):
- (WTF::TCMalloc_Central_FreeList::length):
- (WTF::TCMalloc_Central_FreeList::tc_length):
- (WTF::TCMalloc_Central_FreeList::Init):
- (WTF::TCMalloc_Central_FreeList::ReleaseListToSpans):
- (WTF::TCMalloc_Central_FreeList::EvictRandomSizeClass):
- (WTF::TCMalloc_Central_FreeList::MakeCacheSpace):
- (WTF::TCMalloc_Central_FreeList::ShrinkCache):
- (WTF::TCMalloc_Central_FreeList::InsertRange):
- (WTF::TCMalloc_Central_FreeList::RemoveRange):
- (WTF::TCMalloc_Central_FreeList::FetchFromSpansSafe):
- (WTF::TCMalloc_Central_FreeList::Populate):
- (WTF::TCMalloc_ThreadCache::Init):
- (WTF::TCMalloc_ThreadCache::Cleanup):
- (WTF::TCMalloc_ThreadCache::Allocate):
- (WTF::TCMalloc_ThreadCache::Deallocate):
- (WTF::TCMalloc_ThreadCache::FetchFromCentralCache):
- (WTF::TCMalloc_ThreadCache::ReleaseToCentralCache):
- (WTF::TCMalloc_ThreadCache::Scavenge):
- (WTF::TCMalloc_ThreadCache::PickNextSample):
- (WTF::TCMalloc_ThreadCache::NewHeap):
- (WTF::TCMalloc_ThreadCache::GetThreadHeap):
- (WTF::TCMalloc_ThreadCache::GetCache):
- (WTF::TCMalloc_ThreadCache::GetCacheIfPresent):
- (WTF::TCMalloc_ThreadCache::InitTSD):
- (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
- (WTF::TCMallocStats::ExtractStats):
- (WTF::TCMallocStats::DumpStats):
- (WTF::TCMallocStats::DumpStackTraces):
- (WTF::TCMallocStats::TCMallocImplementation::MarkThreadIdle):
- (WTF::TCMallocStats::TCMallocImplementation::ReleaseFreeMemory):
- (WTF::TCMallocStats::TCMallocGuard::TCMallocGuard):
- (WTF::TCMallocStats::TCMallocGuard::~TCMallocGuard):
- (WTF::TCMallocStats::DoSampledAllocation):
- (WTF::TCMallocStats::CheckCachedSizeClass):
- (WTF::TCMallocStats::CheckedMallocResult):
- (WTF::TCMallocStats::SpanToMallocResult):
- (WTF::TCMallocStats::do_malloc):
- (WTF::TCMallocStats::do_free):
- (WTF::TCMallocStats::do_memalign):
- (WTF::TCMallocStats::do_malloc_stats):
- (WTF::TCMallocStats::do_mallopt):
- (WTF::TCMallocStats::do_mallinfo):
- (WTF::TCMallocStats::realloc):
- (WTF::TCMallocStats::cpp_alloc):
- (WTF::TCMallocStats::operator new):
- (WTF::TCMallocStats::):
- (WTF::TCMallocStats::operator new[]):
- (WTF::TCMallocStats::malloc_stats):
- (WTF::TCMallocStats::mallopt):
- (WTF::TCMallocStats::mallinfo):
- * wtf/TCPackedCache.h: Added.
- (PackedCache::PackedCache):
- (PackedCache::Put):
- (PackedCache::Has):
- (PackedCache::GetOrDefault):
- (PackedCache::Clear):
- (PackedCache::EntryToValue):
- (PackedCache::EntryToUpper):
- (PackedCache::KeyToUpper):
- (PackedCache::UpperToPartialKey):
- (PackedCache::Hash):
- (PackedCache::KeyMatch):
- * wtf/TCPageMap.h:
- (TCMalloc_PageMap2::PreallocateMoreMemory):
- * wtf/TCSystemAlloc.cpp:
- (TCMalloc_SystemRelease):
- * wtf/TCSystemAlloc.h:
-
-2007-12-04 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam.
-
- Make isSafeScript const.
-
- * kjs/JSGlobalObject.h:
- (KJS::JSGlobalObject::isSafeScript):
-
-2007-12-04 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- - fix first part of http://bugs.webkit.org/show_bug.cgi?id=16220
- <rdar://problem/5625221> Crash opening www.news.com (CNet)
-
- Test: fast/js/regexp-overflow.html
-
- * pcre/pcre_compile.cpp:
- (calculateCompiledPatternLengthAndFlags): Add room for the additional BRA/KET that
- was generated in the compile code but not taken into account here.
-
-2007-12-03 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=15618
- <rdar://problem/5619353> REGRESSION: Stack overflow/crash in KJS::equal (15618)
-
- Test: fast/js/recursion-limit-equal.html
-
- * kjs/operations.cpp: (KJS::equal): Check the exception from toPrimitive.
-
-2007-12-03 Dan Bernstein <mitz@apple.com>
-
- - fix a copy-and-paste-o
-
- * bindings/npruntime.cpp:
- (_NPN_GetIntIdentifier):
-
-2007-12-03 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Darin Adler.
-
- - fix an ASSERT when getIntIdentifier is called with 0 or -1
-
- * bindings/npruntime.cpp:
- (_NPN_GetIntIdentifier): We cannot use the hashmap for 0 and -1 since
- they are the empty value and the deleted value. Instead, keep the
- identifiers for those two integers in a static array.
-
-2007-12-02 Darin Adler <darin@apple.com>
-
- Reviewed by Mitz.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=15848
- <rdar://problem/5619330> REGRESSION: Assertion failure viewing comments page on digg.com
-
- Test: fast/js/sparse-array.html
-
- * kjs/array_instance.cpp:
- (KJS::ArrayInstance::inlineGetOwnPropertySlot): Check sparse array cutoff before looking
- in hash map. Can't avoid the branch because we can't look for 0 in the hash.
- (KJS::ArrayInstance::deleteProperty): Ditto.
-
-2007-12-02 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: added an #include.
-
- * kjs/collector.cpp:
-
-2007-12-02 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Eric Seidel.
-
- Second step in refactoring JSGlobalObject: moved virtual functions from
- Interpreter to JSGlobalObject.
-
- Layout and JS tests pass. SunSpider reports a .7% speedup -- don't
- believe his lies.
-
-2007-12-01 Alp Toker <alp@atoker.com>
-
- Reviewed by Adam Roben.
-
- http://bugs.webkit.org/show_bug.cgi?id=16228
- kJSClassDefinitionEmpty is not exported with JS_EXPORT
-
- Add JS_EXPORT to kJSClassDefinitionEmpty.
-
- Make the gcc compiler check take precedence over the WIN32||_WIN32
- check to ensure that symbols are exported on Windows when using gcc.
-
- Add a TODO referencing the bug about JS_EXPORT in the Win build
- (http://bugs.webkit.org/show_bug.cgi?id=16227)
-
- Don't define JS_EXPORT as 'extern' when the compiler is unknown since
- it would result in the incorrect expansion:
-
- extern extern const JSClassDefinition kJSClassDefinitionEmpty;
-
- (This was something we inherited from CFBase.h that doesn't make sense
- for JSBase.h)
-
- * API/JSBase.h:
- * API/JSObjectRef.h:
-
-2007-11-30 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Beth Dakin.
-
- Reversed the ownership relationship between Interpreter and JSGlobalObject.
- Now, the JSGlobalObject owns the Interpreter, and top-level objects
- that need the two to persist just protect the JSGlobalObject from GC.
-
- Global object bootstrapping looks a little odd right now, but it will
- make much more sense soon, after further rounds of refactoring.
-
- * bindings/runtime_root.h: Made this class inherit from RefCounted,
- to avoid code duplication.
-
- * kjs/collector.cpp:
- (KJS::Collector::collect): No need to give special GC treatment to
- Interpreters, since we mark their global objects, which mark them.
-
- * kjs/interpreter.cpp:
- (KJS::Interpreter::mark): No need to mark our global object, since it
- marks us.
- * kjs/interpreter.h: Don't inherit from RefCounted -- JSGlobalObject
- owns us directly.
-
- * kjs/testkjs.cpp: Modified to follow the new rules.
- (createGlobalObject):
- (runWithScripts):
-
-2007-11-30 Brent Fulgham <bfulgham@gmail.com>
-
- Reviewed by Eric.
-
- * ChangeLog:
- * pcre/pcre_compile.cpp:
- (compile_branch):
-
-2007-11-30 Eric Seidel <eric@webkit.org>
-
- No review, build fix only.
-
- Fix uninitialized var warnings in release build.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * pcre/pcre_compile.cpp:
- (compile_regex):
-
-2007-11-30 Darin Adler <darin@apple.com>
-
- Reviewed by Adam Roben.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=16207
- JavaScript regular expressions should match UTF-16 code units rather than characters
-
- SunSpider says this is 5.5% faster on the regexp test, 0.4% faste overall.
-
- Test: fast/js/regexp-non-bmp.html
-
- Renamed ANY_CHAR to NOT_NEWLINE to more-accurately reflect its meaning.
-
- * pcre/pcre_compile.cpp:
- (compile_branch): Removed calls to the UTF-16 character accessor functions, replacing
- them with simple pointer dereferences in some cases, and no code at all in others.
- (calculateCompiledPatternLengthAndFlags): Ditto.
-
- * pcre/pcre_exec.cpp:
- (match): Fixed indentation of some case labels (including all the BEGIN_OPCODE).
- Removed calls to the UTF-16 character accessor functions, replacing them with simple
- pointer dereferences in some cases, and no code at all in others. Also removed some
- explicit UTF-16 support code in a few cases. Removed the unneeded "UTF-8" code path
- in the ANY_CHAR repeat code, and in another case, eliminated the code to check against
- end_subject in because it is already done outside the loop.
- (jsRegExpExecute):
-
- * pcre/pcre_internal.h: Removed all the UTF-16 helper functions.
-
-2007-11-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by darin.
-
- PCRE crashes under GuardMalloc
- http://bugs.webkit.org/show_bug.cgi?id=16127
- check against patternEnd to make sure we don't walk off the end of the string
-
- * pcre/pcre_compile.cpp:
- (compile_branch):
- (calculateCompiledPatternLengthAndFlags):
-
-2007-11-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- Fix layout test regressions caused by r28186
- http://bugs.webkit.org/show_bug.cgi?id=16195
- change first_byte and req_byte back to shorts instead of chars
- (I think PCRE stuffs information in the high bits)
-
- * pcre/pcre_internal.h:
-
-2007-11-29 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej and Darin.
-
- Make the JS collector work with multiple threads
-
- Under heavy contention it was possible the GC to suspend other
- threads inside the pthread spinlock, which could lead to the GC
- thread blocking on the pthread spinlock itself.
-
- We now determine and store each thread's stack base when it is
- registered, thus removing the need for any calls to pthread_get_stackaddr_np
- that needed the pthread spinlock.
-
- * kjs/collector.cpp:
- (KJS::Collector::Thread::Thread):
- (KJS::Collector::registerThread):
- (KJS::Collector::markOtherThreadConservatively):
-
-2007-11-29 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- Removed some unreachable code (ironically, the code was some
- ASSERT_NOT_REACHED()s).
-
- * pcre/pcre_compile.cpp:
- (compile_branch):
- * pcre/pcre_exec.cpp:
- (match):
-
-2007-11-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Fix for --guard crash of fast/js/regexp-charclass-crash introduced by r28151.
-
- * pcre/pcre_compile.cpp:
- (is_anchored):
-
-2007-11-28 Mark Rowe <mrowe@apple.com>
-
- Gtk build fix. Rubber-stamped by Eric.
-
- * pcre/pcre_exec.cpp:
- (match): Add braces around the body of the case statement to prevent
- wanings about jumps across the initialization of a variable.
-
-2007-11-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Attempt to fix non-mac builds after PCRE cleanup.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCoreSources.bkl:
- * pcre/pcre.pri:
-
-2007-11-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- Centralize code for subjectPtr adjustments using inlines, only ever check for a single
- trailing surrogate (as UTF16 only allows one), possibly fix PCRE bugs involving char
- classes and garbled UTF16 strings.
-
- * pcre/pcre_exec.cpp:
- (match):
- (jsRegExpExecute):
- * pcre/pcre_internal.h:
- (getPreviousChar):
- (movePtrToPreviousChar):
- (movePtrToNextChar):
- (movePtrToStartOfCurrentChar):
-
-2007-11-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- change getChar* functions to return result and push 'c' into local scopes for clarity
-
- * pcre/pcre_compile.cpp:
- (compile_branch):
- (calculateCompiledPatternLengthAndFlags):
- * pcre/pcre_exec.cpp:
- (match):
- * pcre/pcre_internal.h:
- (getChar):
- (getCharAndAdvance):
- (getCharAndLength):
- (getCharAndAdvanceIfSurrogate):
-
-2007-11-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Comment cleanup
-
- * pcre/pcre_exec.cpp:
- (match):
-
-2007-11-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Further cleanups to calculateCompiledPatternLengthAndFlags
-
- * pcre/pcre_compile.cpp:
- (calculateCompiledPatternLengthAndFlags):
- * pcre/pcre_internal.h:
-
-2007-11-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Give consistent naming to the RegExp options/compile flags
-
- * pcre/pcre_compile.cpp:
- (compile_branch):
- (is_anchored):
- (find_firstassertedchar):
- (printCompiledRegExp):
- (jsRegExpCompile):
- * pcre/pcre_exec.cpp:
- (jsRegExpExecute):
- * pcre/pcre_internal.h:
-
-2007-11-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Pull first_byte and req_byte optimizations out into separate static funtions, SunSpider reported this as a win.
-
- * pcre/pcre_exec.cpp:
- (tryFirstByteOptimization):
- (tryRequiredByteOptimization):
- (jsRegExpExecute):
- * pcre/pcre_internal.h:
-
-2007-11-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- give PCRE_MULTILINE a better name: OptionMatchAcrossMultipleLines
-
- * pcre/pcre_compile.cpp:
- (compile_branch):
- (is_anchored):
- (printCompiledRegExp):
- (jsRegExpCompile):
- * pcre/pcre_exec.cpp:
- (jsRegExpExecute):
- * pcre/pcre_internal.h:
-
-2007-11-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Oliver.
-
- Deprecate jsRegExpExecute's offset-vector fallback code
-
- * pcre/pcre_exec.cpp:
- (jsRegExpExecute):
-
-2007-11-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- Make cur_is_word and prev_is_word locals, and change OP_ANY to OP_ANY_CHAR for clarity
-
- * pcre/pcre_compile.cpp:
- (find_fixedlength):
- (compile_branch):
- (canApplyFirstCharOptimization):
- * pcre/pcre_exec.cpp:
- (match):
- * pcre/pcre_internal.h:
-
-2007-11-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mitz & Maciej.
-
- Change _NC operators to use _IGNORING_CASE for clarity
-
- * pcre/pcre_compile.cpp:
- (find_fixedlength):
- (compile_branch):
- (find_firstassertedchar):
- * pcre/pcre_exec.cpp:
- (match):
- * pcre/pcre_internal.h:
-
-2007-11-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mitz.
-
- Remove branch from return
-
- * pcre/pcre_compile.cpp:
- (compile_branch):
- * pcre/pcre_exec.cpp:
- (match):
-
-2007-11-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- Add repeatInformationFromInstructionOffset inline
-
- * pcre/pcre_exec.cpp:
- (repeatInformationFromInstructionOffset):
- (match):
-
-2007-11-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- Remove no longer used error code JSRegExpErrorMatchLimit
-
- * kjs/regexp.cpp:
- (KJS::RegExp::match):
- * pcre/pcre.h:
- * pcre/pcre_internal.h:
-
-2007-11-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Make i locally scoped for better code clarity
-
- * pcre/pcre_exec.cpp:
- (match):
-
-2007-11-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- Give subjectPtr and instructionPtr sane names, reduce size of MatchFrame for a 0.2% speedup.
-
- * pcre/pcre_compile.cpp:
- (compile_branch):
- (calculateCompiledPatternLengthAndFlags):
- * pcre/pcre_exec.cpp:
- (match_ref):
- (MatchStack::pushNewFrame):
- (getUTF8CharAndIncrementLength):
- (match):
- * pcre/pcre_internal.h:
- (getChar):
- (getCharAndAdvance):
- (getCharAndLength):
- (getCharAndAdvanceIfSurrogate):
- * pcre/pcre_xclass.cpp:
- (getUTF8CharAndAdvancePointer):
-
-2007-11-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Small speedup (0.7%) by simplifying canUseStackBufferForNextFrame() check
-
- * pcre/pcre_exec.cpp:
- (MatchStack::MatchStack):
- (MatchStack::popCurrentFrame):
-
-2007-11-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Lower MATCH_LIMIT_RECURSION to more sane levels to prevent hangs on run-javascriptcore-tests
-
- * pcre/pcre_internal.h:
-
-2007-11-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- Remove match_is_group variable for another 5% speedup
-
- * pcre/pcre_compile.cpp:
- * pcre/pcre_exec.cpp:
- (startNewGroup):
- (match):
-
-2007-11-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Abstract frame variables into locals and args
-
- * pcre/pcre_compile.cpp:
- (compile_branch):
- * pcre/pcre_exec.cpp:
- (match):
- * pcre/pcre_internal.h:
-
-2007-11-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Section off MatchData arguments into args struct
-
- * pcre/pcre_exec.cpp:
- (MatchStack::pushNewFrame):
- (match):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Remove redundant eptrblock struct
-
- * pcre/pcre_exec.cpp:
- (MatchStack::pushNewFrame):
- (match):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- Remove redundant match_call_count and move recursion check out of super-hot code path
- SunSpider says this is at least an 8% speedup for regexp.
-
- * pcre/pcre_exec.cpp:
- (MatchStack::MatchStack):
- (MatchStack::pushNewFrame):
- (MatchStack::popCurrentFrame):
- (MatchStack::popAllFrames):
- (match):
- (jsRegExpExecute):
- * pcre/pcre_internal.h:
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Get rid of GETCHAR* macros, replacing them with better named inlines
-
- * pcre/pcre_compile.cpp:
- (compile_branch):
- (calculateCompiledPatternLengthAndFlags):
- * pcre/pcre_exec.cpp:
- (match):
- * pcre/pcre_internal.h:
- (getCharAndAdvance):
- (getCharAndLength):
- (getCharAndAdvanceIfSurrogate):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Further cleanup GET/PUT inlines
-
- * pcre/pcre_internal.h:
- (putOpcodeValueAtOffset):
- (getOpcodeValueAtOffset):
- (putOpcodeValueAtOffsetAndAdvance):
- (put2ByteOpcodeValueAtOffset):
- (get2ByteOpcodeValueAtOffset):
- (put2ByteOpcodeValueAtOffsetAndAdvance):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Give GET, PUT better names, and add (poor) moveOpcodePtrPastAnyAlternateBranches
-
- * pcre/pcre_compile.cpp:
- (firstSignificantOpCodeSkippingAssertions):
- (find_fixedlength):
- (complete_callout):
- (compile_branch):
- (compile_regex):
- (is_anchored):
- (canApplyFirstCharOptimization):
- (find_firstassertedchar):
- * pcre/pcre_exec.cpp:
- (match):
- * pcre/pcre_internal.h:
- (putOpcodeValueAtOffset):
- (getOpcodeValueAtOffset):
- (putOpcodeValueAtOffsetAndAdvance):
- (put2ByteOpcodeValueAtOffset):
- (get2ByteOpcodeValueAtOffset):
- (moveOpcodePtrPastAnyAlternateBranches):
- * pcre/pcre_ucp_searchfuncs.cpp:
- (_pcre_ucp_othercase):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Add inlines for toLowerCase, isWordChar, isSpaceChar for further regexp speedup
-
- * pcre/pcre_compile.cpp:
- (compile_branch):
- (jsRegExpCompile):
- * pcre/pcre_exec.cpp:
- (match):
- (jsRegExpExecute):
- * pcre/pcre_internal.h:
- (toLowerCase):
- (flipCase):
- (classBitmapForChar):
- (charTypeForChar):
- (isWordChar):
- (isSpaceChar):
- (CompileData::CompileData):
- * pcre/pcre_xclass.cpp:
- (_pcre_xclass):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- cleanup _pcre_ucp_othercase
-
- * pcre/pcre_ucp_searchfuncs.cpp:
- (_pcre_ucp_othercase):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- Use better variable names for case ignoring options
-
- * pcre/pcre_compile.cpp:
- (compile_branch):
- (find_firstassertedchar):
- (printCompiledRegExp):
- (jsRegExpCompile):
- * pcre/pcre_exec.cpp:
- (match_ref):
- (match):
- (jsRegExpExecute):
- * pcre/pcre_internal.h:
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- split first_significant_code into two simpler functions
-
- * pcre/pcre_compile.cpp:
- (firstSignificantOpCode):
- (firstSignificantOpCodeSkippingAssertions):
- (is_anchored):
- (canApplyFirstCharOptimization):
- (find_firstassertedchar):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- clean up is_counted_repeat
-
- * pcre/pcre_compile.cpp:
- (is_counted_repeat):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- clean up check_escape
-
- * pcre/pcre_compile.cpp:
- (check_escape):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Reformat find_fixedlength
-
- * pcre/pcre_compile.cpp:
- (find_fixedlength):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- reformat is_anchored
-
- * pcre/pcre_compile.cpp:
- (is_anchored):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- Remove unused function could_be_empty_branch
-
- * pcre/pcre_compile.cpp:
- (first_significant_code):
- (find_fixedlength):
- (compile_branch):
- (canApplyFirstCharOptimization):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Pass around MatchData objects by reference
-
- * pcre/pcre_exec.cpp:
- (pchars):
- (match_ref):
- (match):
- (jsRegExpExecute):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- give PCRE_STARTLINE a better name and rename match_data to MatchData
-
- * pcre/pcre_compile.cpp:
- (compile_branch):
- (canApplyFirstCharOptimization):
- (find_firstassertedchar):
- (printCompiledRegExp):
- (jsRegExpCompile):
- * pcre/pcre_exec.cpp:
- (pchars):
- (jsRegExpExecute):
- * pcre/pcre_internal.h:
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Clean up find_firstassertedchar
-
- * pcre/pcre_compile.cpp:
- (get_othercase_range):
- (find_firstassertedchar):
- (calculateCompiledPatternLengthAndFlags):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Tim Hatcher.
-
- Pass around CompileData& instead of CompileData*
-
- * pcre/pcre_compile.cpp:
- (compile_branch):
- (jsRegExpCompile):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Clean up compile_branch, move _pcre_ord2utf8, and rename CompileData
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * pcre/pcre_compile.cpp:
- (_pcre_ord2utf8):
- (calculateCompiledPatternLengthAndFlags):
- (jsRegExpCompile):
- * pcre/pcre_internal.h:
- * pcre/pcre_ord2utf8.cpp: Removed.
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- removing more macros
-
- * pcre/pcre_compile.cpp:
- (could_be_empty_branch):
- (compile_branch):
- (calculateCompiledPatternLengthAndFlags):
- * pcre/pcre_exec.cpp:
- (match):
- (jsRegExpExecute):
- * pcre/pcre_internal.h:
- * pcre/pcre_xclass.cpp:
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- clean up formating in compile_branch
-
- * pcre/pcre_compile.cpp:
- (compile_branch):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Fix spacing for read_repeat_counts
-
- * pcre/pcre_compile.cpp:
- (read_repeat_counts):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Get rid of PCRE custom char types
-
- * pcre/pcre_compile.cpp:
- (check_escape):
- (complete_callout):
- (compile_branch):
- (compile_regex):
- (calculateCompiledPatternLengthAndFlags):
- (jsRegExpCompile):
- * pcre/pcre_exec.cpp:
- (match_ref):
- (match):
- (jsRegExpExecute):
- * pcre/pcre_internal.h:
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- reformat get_othercase_range
-
- * pcre/pcre_compile.cpp:
- (get_othercase_range):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- Remove register keyword and more cleanup
-
- * pcre/pcre_compile.cpp:
- (find_fixedlength):
- (compile_branch):
- (is_anchored):
- (is_startline):
- (find_firstassertedchar):
- (calculateCompiledPatternLengthAndFlags):
- (jsRegExpCompile):
- * pcre/pcre_exec.cpp:
- (MatchStack::canUseStackBufferForNextFrame):
- (MatchStack::allocateNextFrame):
- (MatchStack::pushNewFrame):
- (MatchStack::frameIsStackAllocated):
- (MatchStack::popCurrentFrame):
- (MatchStack::unrollAnyHeapAllocatedFrames):
- (getUTF8CharAndIncrementLength):
- (match):
- (jsRegExpExecute):
- * pcre/pcre_internal.h:
- (PUT2INC):
- (isLeadingSurrogate):
- (isTrailingSurrogate):
- (decodeSurrogatePair):
- (getChar):
- * pcre/pcre_ord2utf8.cpp:
- (_pcre_ord2utf8):
- * pcre/pcre_xclass.cpp:
- (getUTF8CharAndAdvancePointer):
- (_pcre_xclass):
-
-2007-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- Clean up jsRegExpExecute
-
- * pcre/pcre_compile.cpp:
- (returnError):
- (jsRegExpCompile):
- * pcre/pcre_exec.cpp:
- (jsRegExpExecute):
- * pcre/pcre_internal.h:
-
-2007-11-29 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff.
-
- Merging updated system alloc and spinlock code from r38 of TCMalloc.
-
- This is needed as a precursor to the merge of TCMalloc proper.
-
- * wtf/FastMalloc.cpp:
- (WTF::TCMalloc_PageHeap::GrowHeap):
- * wtf/TCSpinLock.h:
- (TCMalloc_SpinLock::TCMalloc_SpinLock):
- (TCMalloc_SpinLock::):
- (TCMalloc_SpinLock::Lock):
- (TCMalloc_SpinLock::Unlock):
- (TCMalloc_SpinLock::IsHeld):
- * wtf/TCSystemAlloc.cpp:
- (TrySbrk):
- (TryMmap):
- (TryVirtualAlloc):
- (TryDevMem):
- (TCMalloc_SystemAlloc):
- * wtf/TCSystemAlloc.h:
-
-2007-11-28 Brady Eidson <beidson@apple.com>
-
- Reviewed by Geoff
-
- Add copyKeysToVector utility, mirroring copyValuesToVector
- Also change the copyValuesToVector implementation to be a little more attractive
-
- * wtf/HashMap.h:
- (WTF::copyKeysToVector):
- (WTF::copyValuesToVector):
-
-2007-11-27 Alp Toker <alp@atoker.com>
-
- Reviewed by Mark Rowe.
-
- Add a list of public JavaScriptCore headers for installation.
-
- This follows the convention used for the Qt and GTK+ header lists.
-
- * headers.pri: Added.
-
-2007-11-27 Alp Toker <alp@atoker.com>
-
- Prospective MSVC build fix.
-
- Roll back dllexport/dllimport support for now.
-
- * API/JSBase.h:
-
-2007-11-27 Alp Toker <alp@atoker.com>
-
- Reviewed by Maciej.
-
- http://bugs.webkit.org/show_bug.cgi?id=15569
- [gtk] GTK JavaScriptCore needs to export symbols for JSC API and WTF
-
- Introduce JS_EXPORT to mark symbols to be exported as public API.
-
- Export all public symbols in the JavaScriptCore C API.
-
- This matches conventions for exporting symbols set by the CF and CG
- frameworks.
-
- * API/JSBase.h:
- * API/JSContextRef.h:
- * API/JSObjectRef.h:
- * API/JSStringRef.h:
- * API/JSStringRefBSTR.h:
- * API/JSStringRefCF.h:
- * API/JSValueRef.h:
-
-2007-11-27 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam.
-
- Make PropertyNameArray and ScopeChain COMEnumVariant friendly.
-
- * kjs/PropertyNameArray.cpp:
- (KJS::PropertyNameArray::swap):
- Implement PropertyNameArray::swap.
-
- * kjs/PropertyNameArray.h:
- Add ValueType typedef. Replace PropertyNameArrayIterator with
- PropertyNameArray::const_iterator.
-
- * kjs/nodes.cpp:
- (KJS::ForInNode::execute):
- * kjs/scope_chain.cpp:
- (KJS::ScopeChain::print):
- Update for changes to PropertyNameArray.
-
- * kjs/scope_chain.h:
- Add const_iterator and ValueType typedef.
-
-2007-11-27 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Darin.
-
- Add a ValueType typedef.
-
- * wtf/Vector.h:
-
-2007-11-26 Darin Adler <darin@apple.com>
-
- Reviewed by Mitz.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=16096
- REGRESSION (r26653-r26699): Plaxo.com addressbook does not load in webkit nightlies
-
- Test: fast/js/regexp-overflow.html
-
- * pcre/pcre_compile.cpp: (calculateCompiledPatternLengthAndFlags):
- Removed a stray "ptr++" that I added by accident when merging the
- changes between PCRE 6.4 and 6.5.
-
-2007-11-26 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Kevin McCullough.
-
- Fixed <rdar://problem/5597937> REGRESSION (r27126): Drosera does not
- show variables (can't enumerate ActivationImp properties)
-
- Implemented a custom ActivationImp::getPropertyNames, since
- ActivationImp now uses a custom property storage mechanism for local
- variables.
-
- * kjs/function.cpp:
- (KJS::ActivationImp::getPropertyNames):
- * kjs/function.h:
-
-2007-11-26 Alp Toker <alp@atoker.com>
-
- GTK+/Qt/Wx build fix for breakage introduced in r28039.
-
- * ForwardingHeaders/JavaScriptCore/JSRetainPtr.h: Added.
-
-2007-11-24 Laszlo Gombos <laszlo.gombos@gmail.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fix minor compiler warning (GCC 4.1.3)
-
- * pcre/pcre_internal.h:
- * pcre/pcre_ucp_searchfuncs.cpp:
- (_pcre_ucp_othercase):
-
-2007-11-25 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=16129
- Bug 16129: REGRESSION (r27761-r27811): malloc error while visiting http://mysit.es (crashes release build)
-
- * pcre/pcre_compile.cpp: Change errorcode to be passed by reference so that any error code is propagated
- to our caller like they expect.
-
-2007-11-23 Kevin Ollivier <kevino@theolliviers.com>
-
- MSVC7 build fix. (rand_s doesn't exist there)
-
- Reviewed by Adam Roben.
-
- * kjs/config.h:
- * wtf/MathExtras.h:
-
-2007-11-23 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Move WX_PYTHON logic into project build settings,
- add WebKitLibraries dirs on Win, and explicitly include JSCore
- headers in testkjs rather than getting them from a template.
- (Include dir order of JSCore/WTF and ICU headers is important due
- to wtf/unicode/utf8.h.)
-
- * jscore.bkl:
-
-2007-11-23 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by George Staikos <staikos@kde.org>.
-
- Fix make (dist)clean on Windows.
-
- OBJECTS_DIR_WTR does not exist anymore, use GENERATED_SOURCES_DIR.
-
-
- * JavaScriptCore.pri:
- * pcre/pcre.pri:
-
-2007-11-22 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by George.
-
- Make the directory of where to put the generated sources configurable through the GENERATED_SOURCE_DIR variable
-
- * JavaScriptCore.pri:
- * pcre/pcre.pri:
-
-2007-11-22 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by George.
-
- Centralize the setup for all the extra compilers in a addExtraCompiler function.
-
- This allows adding a "generated_files" target that builds all generated files using "make generated_files".
- For the build inside Qt we do not generate actual rules for the extra compilers but instead
- do the variable substitution of compiler.output manually and add the generated sources to SOURCES.
-
- * JavaScriptCore.pri:
- * pcre/pcre.pri:
-
-2007-11-20 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Tim Hatcher.
-
- <rdar://problem/5602936> Need to resolve new GCC 4.2 warnings
-
- Fix all warnings emitted by GCC 4.2 when building JavaScriptCore. This allows builds with
- -Werror to succeed. At present they will crash when executed due to code that is not safe
- under strict aliasing (<rdar://problem/5536806>).
-
- * Configurations/Base.xcconfig: Remove the -Wno-long-double flag.
- * kjs/date_object.cpp:
- (KJS::formatTime): Test whether the stack-allocated string is empty rather than at a non-null address.
- * kjs/dtoa.cpp:
- (Bigint::): Tweak formatting to silence warnings.
- * pcre/pcre_exec.cpp:
- (match): Tweak formatting to silence warnings
- * wtf/Assertions.cpp: Add printf format attribute to functions that warrant it.
- * wtf/Assertions.h: Ditto.
-
-2007-11-19 Kevin Ollivier <kevino@theolliviers.com>
-
- wx port build fix (wx headers include ctype functions).
-
- * kjs/config.h:
-
-2007-11-19 Kevin Ollivier <kevino@theolliviers.com>
-
- Remove outdated and unused Windows port files.
-
- Reviewed by Adam Roben.
-
- * Makefile.vc: Removed.
- * README-Win32.txt: Removed.
-
-2007-11-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Oliver.
-
- * tests/mozilla/jsDriver.pl: exit non-0 when user aborts test run
-
-2007-11-17 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Darin Adler.
-
- Fix: <rdar://problem/5607032> REGRESSION: testapi exits with assertion failure in debug build
- <rdar://problem/5440659> JSGlobalContextCreate throws away globalObjectClass's prototype
- http://bugs.webkit.org/show_bug.cgi?id=16033
-
- Split Interpreter's initialization into two distinct steps: the creation of the global prototypes
- and constructors, and storing them on the global object. This allows JSClassRef's passed to
- JSGlobalContextCreate to be instantiated with the correct prototype.
-
- * API/JSCallbackObject.cpp: Assert at compile-time that the custom global object will fit in a collector cell.
- * API/JSCallbackObject.h:
- * API/JSCallbackObjectFunctions.h:
- (KJS::::JSCallbackObject):
- (KJS::::init):
- * API/JSContextRef.cpp:
- (JSGlobalContextCreate): Construct and set the interpreter's global object separately. When globalObjectClass
- is passed we need to set the interpreter's global object before doing the JSCallbackObject's initialization to
- prevent any JSObjectInitializeCallback's being invoked before a global object is set.
- * API/testapi.c:
- (globalObject_initialize): Test the object passed in is correct and that it has the expected global properties.
- (globalObject_get):
- (globalObject_set):
- (main):
- * API/testapi.js: Test that any static properties exposed by the global object's custom class are found.
- * JavaScriptCore.exp:
- * bindings/testbindings.cpp:
- (main): Update for changes in Interpreter method signatures.
- * bindings/testbindings.mm:
- (main): Ditto.
- * kjs/ExecState.cpp:
- (KJS::ExecState::ExecState):
- (KJS::ExecState::mark):
- (KJS::ExecState::setGlobalObject):
- * kjs/ExecState.h: Rename scope to m_scopeChain.
- * kjs/interpreter.cpp:
- (KJS::Interpreter::Interpreter):
- (KJS::Interpreter::init):
- (KJS::Interpreter::globalObject):
- (KJS::Interpreter::setGlobalObject):
- (KJS::Interpreter::resetGlobalObjectProperties):
- (KJS::Interpreter::createObjectsForGlobalObjectProperties):
- (KJS::Interpreter::setGlobalObjectProperties): Switch to using putDirect to ensure that the global object's put method
- cannot interfere with setting of the global properties. This prevents a user-written JSClassRef from attempting to
- call back into JavaScript from the initialization of the global object's members.
- * kjs/interpreter.h:
- * kjs/testkjs.cpp:
- (setupInterpreter): Update for changes in Interpreter method signatures.
-
-2007-11-17 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Prevent testapi from reporting false leaks. Clear out local variables pointing at
- JSObjectRefs to allow their values to be collected.
-
- * API/testapi.c:
- (main):
-
-2007-11-17 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Prevent testapi from crashing if testapi.js can not be found by nil-checking the result of createStringWithContentsOfFile.
-
- * API/testapi.c:
- (main):
-
-2007-11-17 Alp Toker <alp@atoker.com>
-
- Reviewed by Eric.
-
- http://bugs.webkit.org/show_bug.cgi?id=16032
- JS minidom is not portable
-
- Use a plain UTF-8 string instead of a CFString.
-
- Print to stdout, not stderr like CFShow() would have done, since that
- behaviour seems unintentional.
-
- * API/minidom.c:
- (main):
-
-2007-11-17 Steve Falkenburg <sfalken@apple.com>
-
- Windows build fix.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
-
-2007-11-16 Mark Rowe <mrowe@apple.com>
-
- Windows build fix.
-
- * kjs/lexer.cpp:
- (KJS::Lexer::record8):
-
-2007-11-16 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Eric.
-
- Replace strings, identifier, buffer8 and buffer16 members of Lexer with vectors.
- SunSpider claims this is a 0.7% speedup.
-
- * kjs/lexer.cpp:
- (KJS::Lexer::Lexer):
- (KJS::Lexer::lex):
- (KJS::Lexer::record8):
- (KJS::Lexer::record16):
- (KJS::Lexer::scanRegExp):
- (KJS::Lexer::clear):
- (KJS::Lexer::makeIdentifier):
- (KJS::Lexer::makeUString):
- * kjs/lexer.h:
- * kjs/ustring.cpp:
- (KJS::UString::UString): Add a convenience constructor that takes a const Vector<UChar>&.
- * kjs/ustring.h:
-
-2007-11-16 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Add a new include path
- and ignore the int -> bool conversion warning.
-
-2007-11-16 Alexey Proskuryakov <ap@webkit.org>
-
- Fix Windows debug build.
- Rubber-stamped by Eric
-
- * pcre/pcre_exec.cpp: (match): Removed ASSERT_NOT_REACHED assertions that were making MSVC
- complain about unreachable code.
-
-2007-11-15 Mark Rowe <mrowe@apple.com>
-
- Gtk build fix.
-
- * kjs/Parser.cpp:
-
-2007-11-15 Mark Rowe <mrowe@apple.com>
-
- Mac build and header search path sanity fix.
-
- Reviewed by Sam Weinig and Tim Hatcher.
-
- Move base setting for HEADER_SEARCH_PATHS into Base.xcconfig, and extend
- it in JavaScriptCore.xcconfig. This removes the need to override it on a
- per-target basis inside the .xcodeproj file.
-
- * Configurations/Base.xcconfig:
- * Configurations/JavaScriptCore.xcconfig:
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2007-11-15 Mark Rowe <mrowe@apple.com>
-
- Qt build fix.
-
- * kjs/Parser.h:
-
-2007-11-15 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Eric Seidel.
-
- Another round of grammar / parsing cleanup.
-
- 1. Created distinct parser calls for parsing function bodies vs
- programs. This will help later with optimizing global variable access.
-
- 2. Turned Parser into a singleton. Cleaned up Lexer's singleton
- interface.
-
- 3. Modified Lexer to free a little more memory when done lexing. (Added
- FIXMEs for similar issues that I didn't fix.)
-
- 4. Changed Lexer::makeIdentifier and Lexer::makeUString to start
- respecting the arguments passed to them. (No behavior change, but this
- problem could have caused serious problems for an unsuspecting user of
- these functions.)
-
- 5. Removed KJS_DEBUG_MEM because it was bit-rotted.
-
- 6. Removed Parser::prettyPrint because the same work was simpler to do
- at the call site.
-
- 7. Some renames:
-
- "Parser::accept" => "Parser::didFinishParsing"
- "Parser::sid" => "Parser::m_sourceID"
- "Lexer::doneParsing" => "Lexer::clear"
- "sid" => "sourceId"
- "lineno" => "lineNo"
-
- * JavaScriptCore.exp:
- * kjs/Parser.cpp:
- (KJS::Parser::Parser):
- (KJS::Parser::parseProgram):
- (KJS::Parser::parseFunctionBody):
- (KJS::Parser::parse):
- (KJS::Parser::didFinishParsing):
- (KJS::parser):
- * kjs/Parser.h:
- (KJS::Parser::sourceId):
- * kjs/function.cpp:
- (KJS::GlobalFuncImp::callAsFunction):
- * kjs/function_object.cpp:
- (FunctionObjectImp::construct):
- * kjs/grammar.y:
- * kjs/interpreter.cpp:
- (KJS::Interpreter::checkSyntax):
- (KJS::Interpreter::evaluate):
- * kjs/interpreter.h:
- * kjs/lexer.cpp:
- (kjsyylex):
- (KJS::lexer):
- (KJS::Lexer::Lexer):
- (KJS::Lexer::~Lexer):
- (KJS::Lexer::scanRegExp):
- (KJS::Lexer::doneParsing):
- (KJS::Lexer::makeIdentifier):
- (KJS::Lexer::makeUString):
- * kjs/lexer.h:
- (KJS::Lexer::pattern):
- (KJS::Lexer::flags):
- (KJS::Lexer::sawError):
- * kjs/nodes.cpp:
- (KJS::Node::Node):
- (KJS::FunctionBodyNode::FunctionBodyNode):
- * kjs/nodes.h:
- * kjs/testkjs.cpp:
- (prettyPrintScript):
- (kjsmain):
- * kjs/ustring.cpp:
- * kjs/ustring.h:
-
-2007-11-15 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Darin.
-
- <rdar://problem/5601548> REGRESSION: All SourceElements and their children leak after a syntax error
-
- Add a stub node to maintain the Vector of SourceElements until assignment.
-
- * kjs/grammar.y:
- * kjs/nodes.h:
- (KJS::SourceElementsStub::SourceElementsStub):
- (KJS::SourceElementsStub::append):
- (KJS::SourceElementsStub::release):
- (KJS::SourceElementsStub::):
- (KJS::SourceElementsStub::precedence):
-
-2007-11-15 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Abstract most of RMATCH into MatchStack functions.
-
- SunSpider claims this, combined with the last 2 patches was a 1% speedup, 10% for dna-regexp.
-
- * pcre/pcre_exec.cpp:
- (MatchStack::canUseStackBufferForNextFrame):
- (MatchStack::allocateNextFrame):
- (MatchStack::pushNewFrame):
- (MatchStack::frameIsStackAllocated):
- (MatchStack::popCurrentFrame):
- (MatchStack::unrollAnyHeapAllocatedFrames):
- (match):
-
-2007-11-15 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Remove RETURN_ERROR, add MatchStack
-
- * pcre/pcre_exec.cpp:
- (MatchStack::MatchStack):
- (MatchStack::unrollAnyHeapAllocatedFrames):
- (matchError):
- (match):
-
-2007-11-15 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Clean up match function to match WebKit style
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * pcre/pcre_exec.cpp:
- (match):
-
-2007-11-15 Steve Falkenburg <sfalken@apple.com>
-
- Windows build fix.
-
- * JavaScriptCore.vcproj/JavaScriptCore.make:
-
-2007-11-14 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- http://bugs.webkit.org/show_bug.cgi?id=15982
- Improve JSString UTF-8 decoding
-
- * API/JSStringRef.cpp:
- (JSStringCreateWithUTF8CString): Use strict decoding, return 0 on error.
-
- * wtf/unicode/UTF8.cpp:
- (WTF::Unicode::convertUTF16ToUTF8):
- (WTF::Unicode::convertUTF8ToUTF16):
- * wtf/unicode/UTF8.h:
- Made these function names start with a lower case letter.
-
- * kjs/ustring.cpp: (KJS::UString::UTF8String): Updated for the above renaming.
-
- * bindings/c/c_utility.cpp:
- (KJS::Bindings::convertUTF8ToUTF16WithLatin1Fallback): Renamed to highlight the difference
- from convertUTF8ToUTF16 in wtf/unicode.
- (KJS::Bindings::convertNPStringToUTF16): Updated for the above renaming.
- (KJS::Bindings::identifierFromNPIdentifier): Ditto.
- * bindings/c/c_utility.h: Made convertUTF8ToUTF16WithLatin1Fallback() a file static.
-
-2007-11-14 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Anders.
-
- Fix the Xcode project file after it was messed up in r27402.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2007-11-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Oliver.
-
- More PCRE style cleanup.
-
- * pcre/pcre_compile.cpp:
- (compile_regex):
-
-2007-11-14 Adam Roben <aroben@apple.com>
-
- Clean up the bison conflict checking script
-
- Reviewed by Geoff.
-
- * DerivedSources.make:
-
-2007-11-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Geoff.
-
- Another round of PCRE cleanups: inlines
-
- SunSpider claims that this, combined with my previous PCRE cleanup were a 0.7% speedup, go figure.
-
- * pcre/pcre_compile.cpp:
- (jsRegExpCompile):
- * pcre/pcre_exec.cpp:
- (match):
- (jsRegExpExecute):
- * pcre/pcre_internal.h:
- (PUT):
- (GET):
- (PUT2):
- (GET2):
- (isNewline):
-
-2007-11-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- Give PCRE a (small) bath.
- Fix some formating and break things off into separate functions
- http://bugs.webkit.org/show_bug.cgi?id=15993
-
- * pcre/pcre_compile.cpp:
- (calculateCompiledPatternLengthAndFlags):
- (printCompiledRegExp):
- (returnError):
- (jsRegExpCompile):
- * pcre/pcre_internal.h:
- (compile_data::compile_data):
-
-2007-11-14 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Eric Seidel.
-
- Cleaned up the JavaScript grammar a bit.
-
- 1. Changed BlockNode to always hold a child vector (which may be empty),
- eliminating a few NULL-check branches in the common execution case.
-
- 2. Changed the Block production to correctly report its starting and
- ending line numbers to the debugger. (It used to report its ending line
- as its starting line.) Also, removed duplicate line-reporting code
- inside the BlockNode constructor.
-
- 3. Moved curly braces up from FunctionBody production into parent
- productions. (I had to move the line number reporting code, too, since
- it depends on the location of the curly braces.) This matches the ECMA
- spec more closely, and makes some future changes I plan easier.
-
- 4. Fixed statementList* convenience functions to deal appropriately with
- empty Vectors.
-
- SunSpider reports a small and statistically insignificant speedup.
-
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::statementListPushFIFO):
- (KJS::statementListGetDeclarations):
- (KJS::statementListInitializeDeclarationStack):
- (KJS::statementListInitializeVariableAccessStack):
- (KJS::BlockNode::BlockNode):
- (KJS::BlockNode::optimizeVariableAccess):
- (KJS::BlockNode::getDeclarations):
- (KJS::BlockNode::execute):
- (KJS::FunctionBodyNode::initializeDeclarationStacks):
- (KJS::FunctionBodyNode::optimizeVariableAccess):
-
-2007-11-13 Anders Carlsson <andersca@apple.com>
-
- Add RefCounted.h (And remove Shared.h)
-
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
-
-2007-11-13 Geoffrey Garen <ggaren@apple.com>
-
- Build fix.
-
- * kjs/regexp.h:
-
-2007-11-13 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Anders Carlsson.
-
- Renamed Shared to RefCounted.
-
- * API/JSClassRef.h:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/interpreter.h:
- * kjs/regexp.h:
- * wtf/RefCounted.h: Copied from JavaScriptCore/wtf/Shared.h.
- (WTF::RefCounted::RefCounted):
- * wtf/Shared.h: Removed.
-
-2007-11-13 Adam Roben <aroben@apple.com>
-
- Build fix
-
- Reviewed by Geoff.
-
- * kjs/regexp.h: Added a missing #include.
-
-2007-11-13 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Moved Shared.h into wtf so it could be used in more places. Deployed
- Shared in places where JSCore previously had hand-rolled ref-counting
- classes.
-
- * API/JSClassRef.cpp:
- (OpaqueJSClass::OpaqueJSClass):
- * API/JSClassRef.h:
- * API/JSObjectRef.cpp:
- (JSClassRetain):
- (JSClassRelease):
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/interpreter.cpp:
- (KJS::Interpreter::init):
- * kjs/interpreter.h:
- * kjs/regexp.cpp:
- (KJS::RegExp::RegExp):
- * kjs/regexp.h:
- * wtf/Shared.h: Copied from WebCore/platform/Shared.h.
-
-2007-11-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- Add an ASSERT to getTruncatedInt32 to enforce proper usage.
- Best part about this patch? It doesn't break the web!
-
- * kjs/JSImmediate.h:
- (KJS::JSImmediate::getTruncatedInt32):
- (KJS::JSImmediate::toDouble):
- (KJS::JSImmediate::getUInt32):
-
-2007-11-13 Alexey Proskuryakov <ap@webkit.org>
-
- Windows build fix.
-
- * bindings/c/c_utility.cpp:
- (KJS::Bindings::convertUTF8ToUTF16):
- * kjs/ustring.cpp:
- (KJS::UString::UTF8String):
- * wtf/unicode/UTF8.cpp:
- (WTF::Unicode::ConvertUTF8ToUTF16):
-
-2007-11-13 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=11231
- RegExp bug when handling newline characters
- and a number of other differences between PCRE behvior
- and JavaScript regular expressions:
-
- + single-digit sequences like \4 should be treated as octal
- character constants, unless there is a sufficient number
- of brackets for them to be treated as backreferences
-
- + \8 turns into the character "8", not a binary zero character
- followed by "8" (same for 9)
-
- + only the first 3 digits should be considered part of an
- octal character constant (the old behavior was to decode
- an arbitrarily long sequence and then mask with 0xFF)
-
- + if \x is followed by anything other than two valid hex digits,
- then it should simply be treated a the letter "x"; that includes
- not supporting the \x{41} syntax
-
- + if \u is followed by anything less than four valid hex digits,
- then it should simply be treated a the letter "u"
-
- + an extra "+" should be a syntax error, rather than being treated
- as the "possessive quantifier"
-
- + if a "]" character appears immediately after a "[" character that
- starts a character class, then that's an empty character class,
- rather than being the start of a character class that includes a
- "]" character
-
- + a "$" should not match a terminating newline; we could have gotten
- PCRE to handle this the way we wanted by passing an appropriate option
-
- Test: fast/js/regexp-no-extensions.html
-
- * pcre/pcre_compile.cpp:
- (check_escape): Check backreferences against bracount to catch both
- overflows and things that should be treated as octal. Rewrite octal
- loop to not go on indefinitely. Rewrite both hex loops to match and
- remove \x{} support.
- (compile_branch): Restructure loops so that we don't special-case a "]"
- at the beginning of a character class. Remove code that treated "+" as
- the possessive quantifier.
- (jsRegExpCompile): Change the "]" handling here too.
-
- * pcre/pcre_exec.cpp: (match): Changed CIRC to match the DOLL implementation.
- Changed DOLL to remove handling of "terminating newline", a Perl concept
- which we don't need.
-
- * tests/mozilla/expected.html: Two tests are fixed now:
- ecma_3/RegExp/regress-100199.js and ecma_3/RegExp/regress-188206.js.
- One test fails now: ecma_3/RegExp/perlstress-002.js -- our success before
- was due to a bug (we treated all 1-character numeric escapes as backreferences).
- The date tests also now both expect success -- whatever was making them fail
- before was probably due to the time being close to a DST shift; maybe we need
- to get rid of those tests.
-
-2007-11-13 Darin Adler <darin@apple.com>
-
- * kjs/JSImmediate.h: (KJS::JSImmediate::getTruncatedInt32):
- Remove too-strong assert that was firing constantly and preventing even basic
- web browsing from working in a debug build. This function is used in many
- cases where the immediate value is not a number; the assertion could perhaps
- be added back later with a bit of reorganization.
-
-2007-11-13 Alp Toker <alp@atoker.com>
-
- Build fix for breakage to non-Mac builds introduced in r27746.
-
- * kjs/ustring.cpp:
-
-2007-11-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- Clean up evaluateToBoolean functions to use inlines instead of copy/paste code
-
- * kjs/JSImmediate.h:
- * kjs/nodes.cpp:
- (KJS::GreaterNode::inlineEvaluateToBoolean):
- (KJS::GreaterNode::evaluate):
- (KJS::LessEqNode::inlineEvaluateToBoolean):
- (KJS::LessEqNode::evaluate):
- (KJS::GreaterEqNode::inlineEvaluateToBoolean):
- (KJS::GreaterEqNode::evaluate):
- (KJS::InNode::evaluateToBoolean):
- (KJS::EqualNode::inlineEvaluateToBoolean):
- (KJS::EqualNode::evaluate):
- (KJS::NotEqualNode::inlineEvaluateToBoolean):
- (KJS::NotEqualNode::evaluate):
- (KJS::StrictEqualNode::inlineEvaluateToBoolean):
- (KJS::StrictEqualNode::evaluate):
- (KJS::NotStrictEqualNode::inlineEvaluateToBoolean):
- (KJS::NotStrictEqualNode::evaluate):
- * kjs/nodes.h:
-
-2007-11-12 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Fixed http://bugs.webkit.org/show_bug.cgi?id=15958
- base64 spends 1.1% of total time checking for special Infinity case
-
- Use a fast character test instead of calling strncmp.
-
- 1.1% speedup on string-base64. SunSpider reports a .4% speedup overall;
- Sharks reports only .1%. Who are you going to believe? Huh?
-
- * kjs/ustring.cpp:
- (KJS::UString::toDouble):
-
-2007-11-12 Eric Seidel <eric@webkit.org>
-
- Reviewed by Oliver.
-
- Add evaluateToInt32 and evaluateUInt32 methods and deploy them.
- Fix a few missing evaluateToBoolean methods
- Deploy all evaluateTo* functions to more nodes to avoid slowdowns
- http://bugs.webkit.org/show_bug.cgi?id=15950
-
- SunSpider claims this is at least a 1.4% speedup.
-
- * kjs/JSImmediate.h:
- (KJS::JSImmediate::getTruncatedInt32):
- (KJS::JSImmediate::toDouble):
- (KJS::JSImmediate::getUInt32):
- * kjs/nodes.cpp:
- (KJS::ExpressionNode::evaluateToNumber):
- (KJS::ExpressionNode::evaluateToInt32):
- (KJS::ExpressionNode::evaluateToUInt32):
- (KJS::NumberNode::evaluateToInt32):
- (KJS::NumberNode::evaluateToUInt32):
- (KJS::ImmediateNumberNode::evaluateToInt32):
- (KJS::ImmediateNumberNode::evaluateToUInt32):
- (KJS::ResolveNode::evaluate):
- (KJS::ResolveNode::evaluateToNumber):
- (KJS::ResolveNode::evaluateToBoolean):
- (KJS::ResolveNode::evaluateToInt32):
- (KJS::ResolveNode::evaluateToUInt32):
- (KJS::LocalVarAccessNode::evaluateToInt32):
- (KJS::LocalVarAccessNode::evaluateToUInt32):
- (KJS::BracketAccessorNode::evaluateToNumber):
- (KJS::BracketAccessorNode::evaluateToBoolean):
- (KJS::BracketAccessorNode::evaluateToInt32):
- (KJS::BracketAccessorNode::evaluateToUInt32):
- (KJS::DotAccessorNode::inlineEvaluate):
- (KJS::DotAccessorNode::evaluate):
- (KJS::DotAccessorNode::evaluateToNumber):
- (KJS::DotAccessorNode::evaluateToBoolean):
- (KJS::DotAccessorNode::evaluateToInt32):
- (KJS::DotAccessorNode::evaluateToUInt32):
- (KJS::NewExprNode::inlineEvaluate):
- (KJS::NewExprNode::evaluate):
- (KJS::NewExprNode::evaluateToNumber):
- (KJS::NewExprNode::evaluateToBoolean):
- (KJS::NewExprNode::evaluateToInt32):
- (KJS::NewExprNode::evaluateToUInt32):
- (KJS::FunctionCallResolveNode::inlineEvaluate):
- (KJS::FunctionCallResolveNode::evaluate):
- (KJS::FunctionCallResolveNode::evaluateToNumber):
- (KJS::FunctionCallResolveNode::evaluateToBoolean):
- (KJS::FunctionCallResolveNode::evaluateToInt32):
- (KJS::FunctionCallResolveNode::evaluateToUInt32):
- (KJS::LocalVarFunctionCallNode::evaluate):
- (KJS::LocalVarFunctionCallNode::evaluateToNumber):
- (KJS::LocalVarFunctionCallNode::evaluateToBoolean):
- (KJS::LocalVarFunctionCallNode::evaluateToInt32):
- (KJS::LocalVarFunctionCallNode::evaluateToUInt32):
- (KJS::FunctionCallDotNode::evaluate):
- (KJS::FunctionCallDotNode::evaluateToNumber):
- (KJS::FunctionCallDotNode::evaluateToBoolean):
- (KJS::FunctionCallDotNode::evaluateToInt32):
- (KJS::FunctionCallDotNode::evaluateToUInt32):
- (KJS::PostDecLocalVarNode::inlineEvaluateToNumber):
- (KJS::PostDecLocalVarNode::evaluateToNumber):
- (KJS::PostDecLocalVarNode::evaluateToBoolean):
- (KJS::PostDecLocalVarNode::evaluateToInt32):
- (KJS::PostDecLocalVarNode::evaluateToUInt32):
- (KJS::typeStringForValue):
- (KJS::UnaryPlusNode::evaluate):
- (KJS::UnaryPlusNode::evaluateToBoolean):
- (KJS::UnaryPlusNode::evaluateToNumber):
- (KJS::UnaryPlusNode::evaluateToInt32):
- (KJS::BitwiseNotNode::inlineEvaluateToInt32):
- (KJS::BitwiseNotNode::evaluate):
- (KJS::BitwiseNotNode::evaluateToNumber):
- (KJS::BitwiseNotNode::evaluateToBoolean):
- (KJS::BitwiseNotNode::evaluateToInt32):
- (KJS::MultNode::evaluateToBoolean):
- (KJS::MultNode::evaluateToInt32):
- (KJS::MultNode::evaluateToUInt32):
- (KJS::DivNode::evaluateToInt32):
- (KJS::DivNode::evaluateToUInt32):
- (KJS::ModNode::evaluateToBoolean):
- (KJS::ModNode::evaluateToInt32):
- (KJS::ModNode::evaluateToUInt32):
- (KJS::AddNode::evaluateToNumber):
- (KJS::AddNode::evaluateToInt32):
- (KJS::AddNode::evaluateToUInt32):
- (KJS::AddNumbersNode::evaluateToInt32):
- (KJS::AddNumbersNode::evaluateToUInt32):
- (KJS::SubNode::evaluateToInt32):
- (KJS::SubNode::evaluateToUInt32):
- (KJS::LeftShiftNode::inlineEvaluateToInt32):
- (KJS::LeftShiftNode::evaluate):
- (KJS::LeftShiftNode::evaluateToNumber):
- (KJS::LeftShiftNode::evaluateToInt32):
- (KJS::RightShiftNode::inlineEvaluateToInt32):
- (KJS::RightShiftNode::evaluate):
- (KJS::RightShiftNode::evaluateToNumber):
- (KJS::RightShiftNode::evaluateToInt32):
- (KJS::UnsignedRightShiftNode::inlineEvaluateToUInt32):
- (KJS::UnsignedRightShiftNode::evaluate):
- (KJS::UnsignedRightShiftNode::evaluateToNumber):
- (KJS::UnsignedRightShiftNode::evaluateToInt32):
- (KJS::LessNode::inlineEvaluateToBoolean):
- (KJS::LessNode::evaluate):
- (KJS::LessNode::evaluateToBoolean):
- (KJS::LessNumbersNode::inlineEvaluateToBoolean):
- (KJS::LessNumbersNode::evaluate):
- (KJS::LessNumbersNode::evaluateToBoolean):
- (KJS::LessStringsNode::inlineEvaluateToBoolean):
- (KJS::LessStringsNode::evaluate):
- (KJS::BitAndNode::evaluate):
- (KJS::BitAndNode::inlineEvaluateToInt32):
- (KJS::BitAndNode::evaluateToNumber):
- (KJS::BitAndNode::evaluateToBoolean):
- (KJS::BitAndNode::evaluateToInt32):
- (KJS::BitXOrNode::inlineEvaluateToInt32):
- (KJS::BitXOrNode::evaluate):
- (KJS::BitXOrNode::evaluateToNumber):
- (KJS::BitXOrNode::evaluateToBoolean):
- (KJS::BitXOrNode::evaluateToInt32):
- (KJS::BitOrNode::inlineEvaluateToInt32):
- (KJS::BitOrNode::evaluate):
- (KJS::BitOrNode::evaluateToNumber):
- (KJS::BitOrNode::evaluateToBoolean):
- (KJS::BitOrNode::evaluateToInt32):
- (KJS::ConditionalNode::evaluateToNumber):
- (KJS::ConditionalNode::evaluateToInt32):
- (KJS::ConditionalNode::evaluateToUInt32):
- (KJS::valueForReadModifyAssignment):
- (KJS::AssignExprNode::evaluate):
- (KJS::AssignExprNode::evaluateToBoolean):
- (KJS::AssignExprNode::evaluateToNumber):
- (KJS::AssignExprNode::evaluateToInt32):
- (KJS::VarDeclNode::handleSlowCase):
- * kjs/nodes.h:
- (KJS::FunctionCallResolveNode::precedence):
- (KJS::AddNode::precedence):
- (KJS::AddNode::):
- (KJS::LessNumbersNode::):
- (KJS::LessStringsNode::):
- * kjs/value.cpp:
- (KJS::JSValue::toInt32SlowCase):
- (KJS::JSValue::toUInt32SlowCase):
- * kjs/value.h:
- (KJS::JSValue::asCell):
- (KJS::JSValue::toInt32):
- (KJS::JSValue::toUInt32):
-
-2007-11-12 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- http://bugs.webkit.org/show_bug.cgi?id=15953
- Add UTF-8 encoding/decoding to WTF
-
- * kjs/ustring.h: Moved UTF8SequenceLength() and decodeUTF8Sequence() to wtf/unicode.
- * kjs/ustring.cpp: (KJS::UString::UTF8String): Changed this function to take a strict/lenient
- parameter. Callers are not interested in getting decoding results in strict mode, so
- this allows for bailing out as soon as an error is seen.
-
- * kjs/function.cpp:
- (KJS::encode): Updated for new UString::UTF8String() signature.
-
- * API/JSStringRef.cpp:
- (JSStringCreateWithCharacters): Disambiguate UChar.
- (JSStringCreateWithUTF8CString): Actually use UTF-8 when creating the string!
- * bindings/c/c_utility.cpp: (KJS::Bindings::convertUTF8ToUTF16): Use ConvertUTF8ToUTF16().
-
- * wtf/unicode/UTF8.cpp: Added.
- (WTF::Unicode::inlineUTF8SequenceLengthNonASCII):
- (WTF::Unicode::inlineUTF8SequenceLength):
- (WTF::Unicode::UTF8SequenceLength):
- (WTF::Unicode::decodeUTF8Sequence):
- (WTF::Unicode::):
- (WTF::Unicode::ConvertUTF16ToUTF8):
- (WTF::Unicode::isLegalUTF8):
- (WTF::Unicode::ConvertUTF8ToUTF16):
- * wtf/unicode/UTF8.h: Added.
- (WTF::Unicode::):
- Some code moved from ustring.h, some adapted from unicode.org sources.
-
- * JavaScriptCore.exp:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- Added UTF8.{h,cpp}
-
-2007-11-12 Josh Aas <joshmoz@gmail.com>
-
- Reviewed by Darin.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15946
- add NPPValue NPPVpluginDrawingModel (Mozilla bug 403418 compat)
-
- * bindings/npapi.h:
-
-2007-11-12 Darin Adler <darin@apple.com>
-
- Reviewed by Sam.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15951
- REGRESSION: assertion failure in regexp match() when running JS tests
-
- Test: fast/js/regexp-many-brackets.html
-
- * pcre/pcre_exec.cpp: (match): Added back accidentally-removed case for
- the BRANUMBER opcode.
-
-2007-11-12 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- - fix use of prefix and config.h, got rid of a few unneeded things in
- the PCRE code; no behavior changes
-
- * API/JSBase.cpp: Added include of config.h.
- * API/JSCallbackConstructor.cpp: Ditto.
- * API/JSCallbackFunction.cpp: Ditto.
- * API/JSCallbackObject.cpp: Ditto.
- * API/JSClassRef.cpp: Ditto.
- * API/JSContextRef.cpp: Ditto.
- * API/JSObjectRef.cpp: Ditto.
- * API/JSStringRef.cpp: Ditto.
- * API/JSValueRef.cpp: Ditto.
-
- * JavaScriptCorePrefix.h: Removed obsolete <ctype.h> workaround.
- Moved new/delete macros after includes, as they are in WebCore's prefix.
- Removed "config.h".
-
- * pcre/dftables.cpp: (main): Changed back to not use a separate maketables
- function. This is needed for PCRE, but not helpful for our use. Also changed
- the tables to all be 128 entries long instead of 256, since only the first
- 128 are ever used.
-
- * pcre/pcre_compile.cpp: Added include of config.h. Eliminated digitab,
- which was only being used to check hex digits. Changed all uses of TRUE and
- FALSE to use the C++ true and false instead.
- (check_escape): Just the TRUE/FALSE thing.
- (is_counted_repeat): Ditto.
- (could_be_empty_branch): Ditto.
- (get_othercase_range): Ditto.
- (compile_branch): Ditto.
- (compile_regex): Ditto.
- (is_anchored): Ditto.
- (is_startline): Ditto.
- (find_firstassertedchar): Ditto.
- (jsRegExpCompile): Ditto.
-
- * pcre/pcre_exec.cpp: Added include of config.h. Changed all uses of TRUE and
- FALSE to use the C++ true and false instead.
- (match_ref): Just the TRUE/FALSE thing.
- (match): Ditto. Removed some unneeded braces.
- (jsRegExpExecute): Just the TRUE/FALSE thing.
-
- * pcre/pcre_internal.h: Moved the constants needed by dftables.cpp to the top
- of the file instead of the bottom, so they can be used. Also changed the table
- sizes to 128 instead of 256. Removed macro definitions of FALSE and TRUE.
- Set array sizes for all the const arrays. Changed _pcre_utf8_table1_size to
- be a macro instead of a extern int.
-
- * pcre/pcre_maketables.cpp: Removed. It's all in dftables.cpp now.
-
- * pcre/pcre_tables.cpp: Made table sizes explicit.
-
- * pcre/pcre_xclass.cpp: Just the TRUE/FALSE thing.
-
-2007-11-12 Adam Roben <aroben@apple.com>
-
- Build fix
-
- * wtf/FastMalloc.h: Add missing using statement.
-
-2007-11-11 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Darin.
-
- Add special fastZeroedMalloc function to replace a
- number of fastCalloc calls where one argument was 1.
-
- This results in a 0.4% progression in SunSpider, more
- than making up for the earlier regression caused by
- additional overflow checks.
-
- * JavaScriptCore.exp:
- * kjs/array_instance.cpp:
- * kjs/property_map.cpp:
- * wtf/FastMalloc.cpp:
- * wtf/FastMalloc.h:
- * wtf/HashTable.h:
-
-2007-11-11 Adam Roben <aroben@apple.com>
-
- Fix <rdar://5578982> ASSERT in HashTable::checkTableConsistencyExceptSize beneath WebNotificationCenter
-
- The bug was due to a mismatch between HashMap::remove and
- HashTable::checkTableConsistency. HashMap::remove can delete the value
- stored in the HashTable (by derefing it), which is not normally
- allowed by HashTable. It's OK in this case because the value is about
- to be removed from the table, but HashTable wasn't aware of this.
-
- HashMap::remove now performs the consistency check itself before
- derefing the value.
-
- Darin noticed that the same bug would occur in HashSet, so I've fixed
- it there as well.
-
- Reviewed by Darin.
-
- * wtf/HashMap.h:
- (WTF::HashMap::remove): Perform the HashTable consistency check
- manually before calling deref.
- * wtf/HashSet.h:
- (WTF::HashSet::remove): Ditto.
- * wtf/HashTable.h: Made checkTableConsistency public so that HashMap
- and HashSet can call it.
- (WTF::HashTable::removeAndInvalidateWithoutEntryConsistencyCheck):
- Added.
- (WTF::HashTable::removeAndInvalidate): Added.
- (WTF::HashTable::remove):
- (WTF::HashTable::removeWithoutEntryConsistencyCheck): Added.
-
-2007-11-11 Mark Rowe <mrowe@apple.com>
-
- Build fix. Use the correct filename case.
-
- * kjs/nodes.h:
-
-2007-11-11 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Fixed http://bugs.webkit.org/show_bug.cgi?id=15902
- 15% of string-validate-input.js is spent compiling the same regular expression
-
- Store a compiled representation of the regular expression in the AST.
-
- Only a .2% SunSpider speedup overall, but a 10.6% speedup on
- string-validate-input.js.
-
- * kjs/nodes.cpp:
- (KJS::RegExpNode::evaluate):
- * kjs/nodes.h:
- (KJS::RegExpNode::):
- * kjs/nodes2string.cpp:
- (KJS::RegExpNode::streamTo):
- * kjs/regexp.cpp:
- (KJS::RegExp::flags):
- * kjs/regexp.h:
- (KJS::RegExp::pattern):
- * kjs/regexp_object.cpp:
- (KJS::RegExpObjectImp::construct):
- (KJS::RegExpObjectImp::createRegExpImp):
- * kjs/regexp_object.h:
-
-2007-11-11 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Eric.
-
- Partial fix for <rdar://problem/5585334> numfuzz: integer overflows opening malformed SVG file in WebCore::ImageBuffer::create
-
- Unfortunately this is a very slight regression, but is unavoidable.
-
- * wtf/FastMalloc.cpp:
-
-2007-11-10 Eric Seidel <eric@webkit.org>
-
- Reviewed by darin.
-
- Add simple type inferencing to the parser, and create custom
- AddNode and LessNode subclasses based on inferred types.
- http://bugs.webkit.org/show_bug.cgi?id=15884
-
- SunSpider claims this is at least a 0.5% speedup.
-
- * JavaScriptCore.exp:
- * kjs/grammar.y:
- * kjs/internal.cpp:
- (KJS::NumberImp::getPrimitiveNumber):
- (KJS::GetterSetterImp::getPrimitiveNumber):
- * kjs/internal.h:
- * kjs/lexer.cpp:
- (KJS::Lexer::lex):
- * kjs/nodes.cpp:
- (KJS::Node::Node):
- (KJS::StringNode::evaluate):
- (KJS::StringNode::evaluateToNumber):
- (KJS::StringNode::evaluateToBoolean):
- (KJS::RegExpNode::evaluate):
- (KJS::UnaryPlusNode::optimizeVariableAccess):
- (KJS::AddNode::evaluate):
- (KJS::AddNode::evaluateToNumber):
- (KJS::AddNumbersNode::inlineEvaluateToNumber):
- (KJS::AddNumbersNode::evaluate):
- (KJS::AddNumbersNode::evaluateToNumber):
- (KJS::AddStringsNode::evaluate):
- (KJS::AddStringLeftNode::evaluate):
- (KJS::AddStringRightNode::evaluate):
- (KJS::lessThan):
- (KJS::lessThanEq):
- (KJS::LessNumbersNode::evaluate):
- (KJS::LessStringsNode::evaluate):
- * kjs/nodes.h:
- (KJS::ExpressionNode::):
- (KJS::RegExpNode::):
- (KJS::RegExpNode::precedence):
- (KJS::TypeOfResolveNode::):
- (KJS::LocalVarTypeOfNode::):
- (KJS::UnaryPlusNode::):
- (KJS::UnaryPlusNode::precedence):
- (KJS::AddNode::):
- (KJS::AddNode::precedence):
- (KJS::AddNumbersNode::):
- (KJS::AddStringLeftNode::):
- (KJS::AddStringRightNode::):
- (KJS::AddStringsNode::):
- (KJS::LessNode::):
- (KJS::LessNode::precedence):
- (KJS::LessNumbersNode::):
- (KJS::LessStringsNode::):
- * kjs/nodes2string.cpp:
- (KJS::StringNode::streamTo):
- * kjs/object.cpp:
- * kjs/object.h:
- * kjs/value.h:
- (KJS::JSValue::getPrimitiveNumber):
-
-2007-11-11 Darin Adler <darin@apple.com>
-
- - try another way of fixing dftables builds -- refactor pcre_internal.h a bit
-
- * pcre/pcre_internal.h: Make most of this header do nothing when DFTABLES is set.
- Later we can break it into two files.
-
- * JavaScriptCore.vcproj/dftables/dftables.vcproj: Take out now-unneeded include paths.
- * pcre/dftables.cpp: Set DFTABLES. Use delete instead of free.
- * pcre/dftables.pro: Take out now-unneeded include paths.
- * pcre/pcre_maketables.cpp: Use new instead of malloc.
-
-2007-11-11 Darin Adler <darin@apple.com>
-
- * pcre/dftables.pro: Try fixing Qt builds (I looked at qt-win) by adding
- another include path.
-
-2007-11-11 Darin Adler <darin@apple.com>
-
- * JavaScriptCore.xcodeproj/project.pbxproj: Try fixing Mac Tiger builds
- by adding another include path.
-
-2007-11-11 Darin Adler <darin@apple.com>
-
- Reviewed by Sam.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15924
- next round of changes to JSRegExp (formerly PCRE)
-
- This is a combination of converting to C++, tweaking the API, and adding
- some additional optimizations.
-
- Future steps will involve getting rid of the use of UTF-8 completely
- (we'll use UTF-16 exclusively instead), eliminating more source files,
- and some more speed-ups.
-
- SunSpider says the current round is an 0.9% speed-up overall, and a
- 5.3% speed-up for regexp.
-
- * JavaScriptCore.exp: Updated for new entry points.
-
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.vcproj/dftables/dftables.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * jscore.bkl:
- Updated for new source file names and ForwardingHeaders.
-
- * kjs/regexp.cpp:
- (KJS::RegExp::RegExp): Changed to use the error message without calling
- strdup on it and to pass the new types and options.
- (KJS::RegExp::~RegExp): Removed the now-unneeded free of the error message.
- (KJS::RegExp::match): Pass the new types and options.
- * kjs/regexp.h: Update type of m_constructionError.
-
- * pcre/AUTHORS: Update to reflect the status of the project -- we don't include
- the Google parts, and this isn't the PCRE library, per se.
- * pcre/COPYING: Ditto.
-
- * pcre/dftables.cpp: Copied from JavaScriptCore/pcre/dftables.c.
- (main): Removed unneeded ctype_digit.
-
- * pcre/pcre.h: Convert to C++, tweak API a bit. Use UChar instead of JSRegExpChar.
-
- * pcre/pcre_compile.cpp: Copied from JavaScriptCore/pcre/pcre_compile.c.
- Moved a lot of private stuff used only within this file here from pcre_internal.h.
- Renumbered the error codes.
- (error_text): Use a single string with embedded nulls for the error text (I got
- this idea from newer versions of PCRE).
- (check_escape): Changed return type to be enum instead of int. Replaced ctype_digit
- uses with isASCIIDigit.
- (is_counted_repeat): Ditto.
- (read_repeat_counts): Ditto.
- (first_significant_code): Ditto.
- (find_fixedlength): Ditto.
- (could_be_empty_branch): Ditto.
- (compile_branch): Ditto. Also removed some code that handles changing options.
- JavaScript doesn't have any of the features that allow options to change.
- (compile_regex): Updated for change to options parameter.
- (is_anchored): Ditto.
- (find_firstassertedchar): Ditto.
- (jsRegExpCompile): Changed to take separate flags instead of an options int.
- Also changed to call new/delete instead of pcre_malloc/free.
- (jsRegExpFree): Ditto.
-
- * pcre/pcre_exec.cpp: Copied from JavaScriptCore/pcre/pcre_exec.c.
- Added a case that uses computed goto for the opcode loop, but did not turn it on.
- Changed the RMATCH macro to handle returns more efficiently by putting the where
- pointer in the new frame instead of the old one, allowing us to branch to the
- return with a single statement. Switched to new/delete from pcre_malloc/free.
- Changed many RRETURN callers to not set the return value since it's already
- set correctly. Replaced the rrc variable with an is_match variable. Values other
- than "match" and "no match" are now handled differently. This allows us to remove
- the code to check for those cases in various rules.
- (match): All the case statements use a macro BEGIN_OPCODE instead. And all the
- continue statements, or break statements that break out of the outer case use
- a macro NEXT_OPCODE instead. Replaced a few if statements with assertions.
- (jsRegExpExecute): Use new/delete instead of pcre_malloc/free. Removed unused
- start_match field from the match block.
-
- * pcre/pcre_internal.h: Moved the last few configuration macros from pcre-config.h
- in here. Removed various unused types. Converted from JSRegExpChar to UChar.
- Eliminated pcre_malloc/free. Replaced the opcode enum with a macro that can be
- used in multiple places. Unfortunately we lose the comments for each opcode; we
- should find a place to put those back. Removed ctype_digit.
-
- * pcre/pcre_maketables.cpp: Copied from JavaScriptCore/pcre/pcre_maketables.c.
- (pcre_maketables): Got rid of the conditional code that allows this to be compiled
- in -- it's only used for dftables now (and soon may be obsolete entirely).
- Changed code for cbit_digit to not use isdigit, and took the "_" case out of the
- loop. Removed ctype_digit.
-
- * pcre/pcre_ord2utf8.cpp: Copied from JavaScriptCore/pcre/pcre_ord2utf8.c.
-
- * pcre/pcre_tables.cpp: Copied from JavaScriptCore/pcre/pcre_tables.c.
- Moved _pcre_OP_lengths out of here into pcre_exec.cpp.
-
- * pcre/pcre_ucp_searchfuncs.cpp: Copied from JavaScriptCore/pcre/pcre_ucp_searchfuncs.c.
- Updated for other file name changes.
-
- * pcre/pcre_xclass.cpp: Copied from JavaScriptCore/pcre/pcre_xclass.c.
-
- * pcre/ucpinternal.h: Updated header.
-
- * pcre/ucptable.cpp: Copied from JavaScriptCore/pcre/ucptable.c.
-
- * wtf/ASCIICType.h: (WTF::isASCIIDigit): Removed a branch by changing from && to
- & for this operation. Also added an overload that takes an int because that's
- useful for PCRE. Later we could optimize for int and overload other functions in
- this file; stuck to this simple one for now.
-
- * wtf/unicode/icu/UnicodeIcu.h: Removed unused isUpper.
- * wtf/unicode/qt4/UnicodeQt4.h: Ditto.
-
- * pcre/LICENCE: Removed.
- * pcre/pcre-config.h: Removed.
- * wtf/FastMallocPCRE.cpp: Removed.
-
- * pcre/dftables.c: Renamed to cpp.
- * pcre/pcre_compile.c: Ditto.
- * pcre/pcre_exec.c: Ditto.
- * pcre/pcre_maketables.c: Ditto.
- * pcre/pcre_ord2utf8.c: Ditto.
- * pcre/pcre_tables.c: Ditto.
- * pcre/pcre_ucp_searchfuncs.c: Ditto.
- * pcre/pcre_xclass.c: Ditto.
- * pcre/ucptable.c: Ditto.
-
-2007-11-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Oliver.
-
- Add KJS_CHECKEXCEPTIONBOOLEAN to match rest of nodes.cpp
-
- * kjs/nodes.cpp:
- (KJS::ExpressionNode::evaluateToBoolean):
- (KJS::LessNode::evaluateToBoolean):
- (KJS::GreaterNode::evaluateToBoolean):
- (KJS::LessEqNode::evaluateToBoolean):
- (KJS::GreaterEqNode::evaluateToBoolean):
- (KJS::InstanceOfNode::evaluateToBoolean):
- (KJS::InNode::evaluateToBoolean):
- (KJS::EqualNode::evaluateToBoolean):
- (KJS::NotEqualNode::evaluateToBoolean):
- (KJS::StrictEqualNode::evaluateToBoolean):
- (KJS::NotStrictEqualNode::evaluateToBoolean):
- (KJS::LogicalAndNode::evaluateToBoolean):
- (KJS::LogicalOrNode::evaluateToBoolean):
- (KJS::ConditionalNode::evaluateToBoolean):
-
-2007-11-10 Darin Adler <darin@apple.com>
-
- Reviewed by Sam.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=15927
- REGRESSION(r27487): delete a.c followed by __defineGetter__("c", ...) incorrectly deletes another property
- and <rdar://problem/5586384> REGRESSION (r27487): Can't switch out of Edit HTML Source mode on Leopard Wiki
-
- Test: fast/js/delete-then-put.html
-
- * kjs/property_map.cpp:
- (KJS::PropertyMap::put): Added a missing "- 1"; code to find an empty slot was not working.
- (KJS::PropertyMap::checkConsistency): Added a missing range check that would have caught this
- problem before.
-
- - roll out a last-minute change to my evaluateToBoolean patch that was incorrect.
-
- * kjs/nodes.h: (KJS::ExprStatementNode::ExprStatementNode): Take out call to
- optimizeForUnnecessaryResult, since the result is used in some cases.
-
-2007-11-10 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- Roll out some changes that were (seemingly accidentally) checked in
- with r27664.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
-
-2007-11-10 Darin Adler <darin@apple.com>
-
- Reviewed by Sam.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15915
- add an evaluation path for booleans like the one we have for numbers
-
- Gives 1.1% on SunSpider.
-
- * kjs/grammar.y: Create TrueNode and FalseNode instead of BooleanNode.
-
- * kjs/nodes.h: Changed to use Noncopyable. Moved optimizeForUnnecessaryResult
- down from Node to ExpressionNode. Changed some classes to not inherit from
- ExpressionNode where not necessary, and removed unnneeded evaluate functions
- as well as evaluate functions that need not be virtual. Call the
- optimizeForUnnecessaryResult function on the start of a for loop too.
- * kjs/nodes.cpp:
- (KJS::ExpressionNode::evaluateToBoolean): Added.
- (KJS::FalseNode::evaluate): Added.
- (KJS::TrueNode::evaluate): Added.
- (KJS::NumberNode::evaluateToBoolean): Added.
- (KJS::StringNode::evaluateToBoolean): Added.
- (KJS::LocalVarAccessNode::evaluateToBoolean): Added.
- (KJS::BracketAccessorNode::evaluateToBoolean): Added.
- (KJS::LogicalNotNode::evaluate): Changed to call evaluateToBoolean.
- (KJS::LogicalNotNode::evaluateToBoolean): Added.
- (KJS::lessThan): Changed to return bool.
- (KJS::lessThanEq): Ditto.
- (KJS::LessNode::evaluate): Changed since lessThan returns bool.
- (KJS::LessNode::evaluateToBoolean): Added.
- (KJS::GreaterNode::evaluate): Changed since lessThanEq returns bool.
- (KJS::GreaterNode::evaluateToBoolean): Added.
- (KJS::LessEqNode::evaluate): Changed since lessThanEq returns bool.
- (KJS::LessEqNode::evaluateToBoolean): Added.
- (KJS::GreaterEqNode::evaluate): Changed since lessThan returns bool.
- (KJS::GreaterEqNode::evaluateToBoolean): Added.
- (KJS::InstanceOfNode::evaluateToBoolean): Added.
- (KJS::InNode::evaluateToBoolean): Added.
- (KJS::EqualNode::evaluateToBoolean): Added.
- (KJS::NotEqualNode::evaluateToBoolean): Added.
- (KJS::StrictEqualNode::evaluateToBoolean): Added.
- (KJS::NotStrictEqualNode::evaluateToBoolean): Added.
- (KJS::ConditionalNode::evaluate): Changed to call evaluateToBoolean.
- (KJS::IfNode::execute): Ditto.
- (KJS::DoWhileNode::execute): Ditto.
- (KJS::WhileNode::execute): Ditto.
- (KJS::ForNode::execute): Ditto.
-
- * kjs/nodes2string.cpp:
- (KJS::FalseNode::streamTo): Added.
- (KJS::TrueNode::streamTo): Added.
-
-2007-11-09 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- Reviewed by Darin.
-
- * kjs/value.h:
- (KJS::jsNumber): Add some explicit casts.
-
-2007-11-08 Darin Adler <darin@apple.com>
-
- - fix build
-
- * kjs/grammar.y:
- * kjs/nodes.h:
- * kjs/property_map.cpp:
-
-2007-11-08 Darin Adler <darin@apple.com>
-
- - roll out accidentally-checked in changes
-
- * kjs/nodes.cpp: Back to previous version.
- * kjs/nodes.h: Ditto.
- * kjs/grammar.y: Ditto.
-
-2007-11-08 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15912
- fasta spends a lot of time in qsort
-
- * kjs/property_map.cpp:
- (KJS::PropertyMap::getEnumerablePropertyNames):
- Use insertion sort instead of qsort for small sets of property names.
- We can probably do some even-better speedups of for/in, but this nets
- 0.6% overall and 6.7% on fasta.
-
-2007-11-08 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15906
- getting characters by indexing into a string is very slow
-
- This fixes one source of the slowness -- the conversion to an unused
- Identifier as we call the get function from the slot -- but doesn't
- fix others, such as the fact that we have to allocate a new UString::Rep
- for every single character.
-
- Speeds up string-base64 30%, and at least 0.5% overall.
- But does slow down access-fannkuch quite a bit. Might be worth
- revisiting in the future to see what we can do about that (although
- I did look at a profile for a while).
-
- * kjs/property_slot.h: Add a new marker for "numeric" property slots;
- slots where we don't need to pass the identifier to the get function.
- (KJS::PropertySlot::getValue): Added code to call the numeric get function.
- (KJS::PropertySlot::setCustomNumeric): Added.
- * kjs/string_object.cpp:
- (KJS::StringInstance::indexGetter): Changed to use substr() instead
- of constructing a wholly new UString each time.
- (KJS::stringInstanceNumericPropertyGetter): Added. Like indexGetter, but
- takes advantage of setCustomNumeric to avoid creating an Identifier.
- (KJS::StringInstance::getOwnPropertySlot): Changed to use setCustomNumeric.
-
-2007-11-08 Darin Adler <darin@apple.com>
-
- Reviewed by Oliver.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15904
- more speed-ups possible by tightening up int version of JSImmediate
-
- 1% improvement of SunSpider
-
- * kjs/JSImmediate.h: Eliminate the now-unneeded FPBitValues struct template.
- (KJS::JSImmediate::from): Overload for most numeric types; many types can
- do fewer branches and checks.
- (KJS::JSImmediate::getUInt32): Removed unneeded check for undefined.
- (KJS::JSImmediate::getTruncatedInt32): Ditto.
- (KJS::JSImmediate::getTruncatedUInt32): Ditto. There's no difference any more
- between getUInt32 and getTruncatedUInt32, so that's worth a rename and merge later.
-
- * kjs/grammar.y: Update since fromDouble is now just from.
- * kjs/nodes.h: Ditto.
-
- * kjs/value.h: (KJS::jsNumber): Overload for most numeric types.
-
-2007-11-08 Kevin Ollivier <kevino@theolliviers.com>
-
- Bakefiles for building JavaScriptCore, needed by wx port.
-
- Reviewed by Mark Rowe.
-
- * JavaScriptCoreSources.bkl: Added.
- * jscore.bkl: Added.
-
-2007-11-08 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Fix regression caused by earlier bitwise and optimisation. 1 & undefined != 1.
-
- The implementation of JSImmediate::areBothImmediateNumbers relies on
- (JSImmediate::getTag(immediate1) & JSImmediate::getTag(immediate2)) having
- a unique result when both immediate values are numbers.
-
- The regression was due to UndefinedType & NumberType returning NumberType (3 & 1).
- By swapping the value of NumberType and UndefinedType this ceases to be a problem.
-
- * kjs/JSType.h:
-
-2007-11-08 Darin Adler <darin@apple.com>
-
- - fix build
-
- * kjs/nodes.h: Add missing parameter name.
-
-2007-11-08 Eric Seidel <eric@webkit.org>
-
- Reviewed by darin.
-
- Add ExpressionNode subclass of Node, use it.
-
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::ForInNode::ForInNode):
- * kjs/nodes.h:
- (KJS::ExpressionNode::):
- (KJS::NullNode::):
- (KJS::NullNode::precedence):
- (KJS::BooleanNode::):
- (KJS::BooleanNode::precedence):
- (KJS::RegExpNode::):
- (KJS::RegExpNode::precedence):
- (KJS::ThisNode::):
- (KJS::ThisNode::precedence):
- (KJS::ResolveNode::):
- (KJS::ElementNode::):
- (KJS::ArrayNode::):
- (KJS::PropertyNode::):
- (KJS::PropertyNode::precedence):
- (KJS::PropertyNode::name):
- (KJS::PropertyListNode::):
- (KJS::ObjectLiteralNode::):
- (KJS::ObjectLiteralNode::precedence):
- (KJS::BracketAccessorNode::):
- (KJS::DotAccessorNode::):
- (KJS::DotAccessorNode::precedence):
- (KJS::ArgumentListNode::):
- (KJS::ArgumentsNode::):
- (KJS::NewExprNode::):
- (KJS::NewExprNode::precedence):
- (KJS::FunctionCallValueNode::):
- (KJS::FunctionCallValueNode::precedence):
- (KJS::FunctionCallResolveNode::):
- (KJS::FunctionCallBracketNode::):
- (KJS::FunctionCallBracketNode::precedence):
- (KJS::FunctionCallDotNode::):
- (KJS::FunctionCallDotNode::precedence):
- (KJS::PrePostResolveNode::):
- (KJS::PostfixBracketNode::):
- (KJS::PostfixBracketNode::precedence):
- (KJS::PostIncBracketNode::):
- (KJS::PostIncBracketNode::isIncrement):
- (KJS::PostDecBracketNode::):
- (KJS::PostDecBracketNode::isIncrement):
- (KJS::PostfixDotNode::):
- (KJS::PostfixDotNode::precedence):
- (KJS::PostIncDotNode::):
- (KJS::PostIncDotNode::isIncrement):
- (KJS::PostDecDotNode::):
- (KJS::PostDecDotNode::isIncrement):
- (KJS::PostfixErrorNode::):
- (KJS::PostfixErrorNode::precedence):
- (KJS::DeleteResolveNode::):
- (KJS::DeleteBracketNode::):
- (KJS::DeleteBracketNode::precedence):
- (KJS::DeleteDotNode::):
- (KJS::DeleteDotNode::precedence):
- (KJS::DeleteValueNode::):
- (KJS::DeleteValueNode::precedence):
- (KJS::VoidNode::):
- (KJS::VoidNode::precedence):
- (KJS::TypeOfResolveNode::):
- (KJS::TypeOfValueNode::):
- (KJS::PrefixBracketNode::):
- (KJS::PrefixBracketNode::precedence):
- (KJS::PreIncBracketNode::):
- (KJS::PreIncBracketNode::isIncrement):
- (KJS::PreDecBracketNode::):
- (KJS::PreDecBracketNode::isIncrement):
- (KJS::PrefixDotNode::):
- (KJS::PrefixDotNode::precedence):
- (KJS::PreIncDotNode::):
- (KJS::PreIncDotNode::isIncrement):
- (KJS::PreDecDotNode::):
- (KJS::PreDecDotNode::isIncrement):
- (KJS::PrefixErrorNode::):
- (KJS::PrefixErrorNode::precedence):
- (KJS::UnaryPlusNode::):
- (KJS::UnaryPlusNode::precedence):
- (KJS::NegateNode::):
- (KJS::NegateNode::precedence):
- (KJS::BitwiseNotNode::):
- (KJS::BitwiseNotNode::precedence):
- (KJS::LogicalNotNode::):
- (KJS::LogicalNotNode::precedence):
- (KJS::AddNode::):
- (KJS::AddNode::precedence):
- (KJS::LeftShiftNode::):
- (KJS::LeftShiftNode::precedence):
- (KJS::RightShiftNode::):
- (KJS::RightShiftNode::precedence):
- (KJS::UnsignedRightShiftNode::):
- (KJS::UnsignedRightShiftNode::precedence):
- (KJS::LessNode::):
- (KJS::LessNode::precedence):
- (KJS::GreaterNode::):
- (KJS::GreaterNode::precedence):
- (KJS::LessEqNode::):
- (KJS::LessEqNode::precedence):
- (KJS::GreaterEqNode::):
- (KJS::GreaterEqNode::precedence):
- (KJS::InstanceOfNode::):
- (KJS::InstanceOfNode::precedence):
- (KJS::InNode::):
- (KJS::InNode::precedence):
- (KJS::EqualNode::):
- (KJS::EqualNode::precedence):
- (KJS::NotEqualNode::):
- (KJS::NotEqualNode::precedence):
- (KJS::StrictEqualNode::):
- (KJS::StrictEqualNode::precedence):
- (KJS::NotStrictEqualNode::):
- (KJS::NotStrictEqualNode::precedence):
- (KJS::BitAndNode::):
- (KJS::BitAndNode::precedence):
- (KJS::BitOrNode::):
- (KJS::BitOrNode::precedence):
- (KJS::BitXOrNode::):
- (KJS::BitXOrNode::precedence):
- (KJS::LogicalAndNode::):
- (KJS::LogicalAndNode::precedence):
- (KJS::LogicalOrNode::):
- (KJS::LogicalOrNode::precedence):
- (KJS::ConditionalNode::):
- (KJS::ConditionalNode::precedence):
- (KJS::ReadModifyResolveNode::):
- (KJS::ReadModifyResolveNode::precedence):
- (KJS::AssignResolveNode::):
- (KJS::AssignResolveNode::precedence):
- (KJS::ReadModifyBracketNode::):
- (KJS::ReadModifyBracketNode::precedence):
- (KJS::AssignBracketNode::):
- (KJS::AssignBracketNode::precedence):
- (KJS::AssignDotNode::):
- (KJS::AssignDotNode::precedence):
- (KJS::ReadModifyDotNode::):
- (KJS::ReadModifyDotNode::precedence):
- (KJS::AssignErrorNode::):
- (KJS::AssignErrorNode::precedence):
- (KJS::CommaNode::):
- (KJS::CommaNode::precedence):
- (KJS::AssignExprNode::):
- (KJS::AssignExprNode::precedence):
- (KJS::ExprStatementNode::):
- (KJS::IfNode::):
- (KJS::DoWhileNode::):
- (KJS::WhileNode::):
- (KJS::ReturnNode::):
- (KJS::WithNode::):
- (KJS::ThrowNode::):
- (KJS::ParameterNode::):
- (KJS::CaseClauseNode::):
- (KJS::CaseClauseNode::precedence):
- (KJS::ClauseListNode::):
- (KJS::SwitchNode::):
-
-2007-11-08 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Sam.
-
- Add a fast path for bitwise-and of two immediate numbers for a 0.7% improvement in SunSpider (4% bitop improvement).
-
- This only improves bitwise-and performance, as the additional logic required
- for similar code paths on or, xor, and shifting requires additional operations
- and branches that negate (and in certain cases, regress) any advantage we might
- otherwise receive.
-
- This improves performance on all bitop tests, the cryptography tests, as well as
- the string-base64 and string-unpack-code tests. No significant degradation on
- any other tests.
-
- * kjs/JSImmediate.h:
- (KJS::JSImmediate::areBothImmediateNumbers):
- (KJS::JSImmediate::andImmediateNumbers):
- * kjs/nodes.cpp:
- (KJS::BitAndNode::evaluate):
- * kjs/value.h:
- (KJS::jsNumberFromAnd):
-
-2007-11-08 Adam Roben <aroben@apple.com>
-
- Stop using KJS inside of MathExtras.h
-
- Reviewed by Darin.
-
- * wtf/MathExtras.h: Removed an unused header, and a now-unused
- forward-declaration.
- (wtf_atan2): Use std::numeric_limits intead of KJS.
-
-2007-11-08 Sam Weinig <sam@webkit.org>
-
- Windows build fix.
-
- * kjs/date_object.cpp:
- (KJS::DateProtoFuncToLocaleString::callAsFunction): Fix unused arg warning.
- (KJS::DateProtoFuncToLocaleDateString::callAsFunction): ditto
- (KJS::DateProtoFuncToLocaleTimeString::callAsFunction): ditto
-
-2007-11-08 Mark Rowe <mrowe@apple.com>
-
- Gtk build fix.
-
- * kjs/lookup.h: Add missing include.
-
-2007-11-08 Sam Weinig <sam@webkit.org>
-
- Reviewed by Darin.
-
- Convert JavaScript internal function objects to use one class per
- function. This avoids a switch statement inside what used to be
- the shared function classes and will allow Shark to better analyze
- the code.
-
- To make this switch, the value property of the HashEntry was changed
- to a union of an intptr_t (which is used to continue handle valueGetters)
- and function pointer which points to a static constructor for the
- individual new function objects.
-
- SunSpider claims this is a 1.0% speedup.
-
- * kjs/array_object.cpp:
- (KJS::ArrayPrototype::getOwnPropertySlot):
- (KJS::getProperty):
- (KJS::ArrayProtoFuncToString::callAsFunction):
- (KJS::ArrayProtoFuncToLocaleString::callAsFunction):
- (KJS::ArrayProtoFuncJoin::callAsFunction):
- (KJS::ArrayProtoFuncConcat::callAsFunction):
- (KJS::ArrayProtoFuncPop::callAsFunction):
- (KJS::ArrayProtoFuncPush::callAsFunction):
- (KJS::ArrayProtoFuncReverse::callAsFunction):
- (KJS::ArrayProtoFuncShift::callAsFunction):
- (KJS::ArrayProtoFuncSlice::callAsFunction):
- (KJS::ArrayProtoFuncSort::callAsFunction):
- (KJS::ArrayProtoFuncSplice::callAsFunction):
- (KJS::ArrayProtoFuncUnShift::callAsFunction):
- (KJS::ArrayProtoFuncFilter::callAsFunction):
- (KJS::ArrayProtoFuncMap::callAsFunction):
- (KJS::ArrayProtoFuncEvery::callAsFunction):
- (KJS::ArrayProtoFuncForEach::callAsFunction):
- (KJS::ArrayProtoFuncSome::callAsFunction):
- (KJS::ArrayProtoFuncIndexOf::callAsFunction):
- (KJS::ArrayProtoFuncLastIndexOf::callAsFunction):
- * kjs/array_object.h:
- (KJS::ArrayPrototype::classInfo):
- * kjs/create_hash_table:
- * kjs/date_object.cpp:
- (KJS::DatePrototype::getOwnPropertySlot):
- (KJS::DateProtoFuncToString::callAsFunction):
- (KJS::DateProtoFuncToUTCString::callAsFunction):
- (KJS::DateProtoFuncToDateString::callAsFunction):
- (KJS::DateProtoFuncToTimeString::callAsFunction):
- (KJS::DateProtoFuncToLocaleString::callAsFunction):
- (KJS::DateProtoFuncToLocaleDateString::callAsFunction):
- (KJS::DateProtoFuncToLocaleTimeString::callAsFunction):
- (KJS::DateProtoFuncValueOf::callAsFunction):
- (KJS::DateProtoFuncGetTime::callAsFunction):
- (KJS::DateProtoFuncGetFullYear::callAsFunction):
- (KJS::DateProtoFuncGetUTCFullYear::callAsFunction):
- (KJS::DateProtoFuncToGMTString::callAsFunction):
- (KJS::DateProtoFuncGetMonth::callAsFunction):
- (KJS::DateProtoFuncGetUTCMonth::callAsFunction):
- (KJS::DateProtoFuncGetDate::callAsFunction):
- (KJS::DateProtoFuncGetUTCDate::callAsFunction):
- (KJS::DateProtoFuncGetDay::callAsFunction):
- (KJS::DateProtoFuncGetUTCDay::callAsFunction):
- (KJS::DateProtoFuncGetHours::callAsFunction):
- (KJS::DateProtoFuncGetUTCHours::callAsFunction):
- (KJS::DateProtoFuncGetMinutes::callAsFunction):
- (KJS::DateProtoFuncGetUTCMinutes::callAsFunction):
- (KJS::DateProtoFuncGetSeconds::callAsFunction):
- (KJS::DateProtoFuncGetUTCSeconds::callAsFunction):
- (KJS::DateProtoFuncGetMilliSeconds::callAsFunction):
- (KJS::DateProtoFuncGetUTCMilliseconds::callAsFunction):
- (KJS::DateProtoFuncGetTimezoneOffset::callAsFunction):
- (KJS::DateProtoFuncSetTime::callAsFunction):
- (KJS::DateProtoFuncSetMilliSeconds::callAsFunction):
- (KJS::DateProtoFuncSetUTCMilliseconds::callAsFunction):
- (KJS::DateProtoFuncSetSeconds::callAsFunction):
- (KJS::DateProtoFuncSetUTCSeconds::callAsFunction):
- (KJS::DateProtoFuncSetMinutes::callAsFunction):
- (KJS::DateProtoFuncSetUTCMinutes::callAsFunction):
- (KJS::DateProtoFuncSetHours::callAsFunction):
- (KJS::DateProtoFuncSetUTCHours::callAsFunction):
- (KJS::DateProtoFuncSetDate::callAsFunction):
- (KJS::DateProtoFuncSetUTCDate::callAsFunction):
- (KJS::DateProtoFuncSetMonth::callAsFunction):
- (KJS::DateProtoFuncSetUTCMonth::callAsFunction):
- (KJS::DateProtoFuncSetFullYear::callAsFunction):
- (KJS::DateProtoFuncSetUTCFullYear::callAsFunction):
- (KJS::DateProtoFuncSetYear::callAsFunction):
- (KJS::DateProtoFuncGetYear::callAsFunction):
- * kjs/date_object.h:
- * kjs/lookup.cpp:
- (KJS::Lookup::find):
- * kjs/lookup.h:
- (KJS::HashEntry::):
- (KJS::staticFunctionGetter):
- (KJS::staticValueGetter):
- (KJS::getStaticPropertySlot):
- (KJS::getStaticFunctionSlot):
- (KJS::lookupPut):
- * kjs/math_object.cpp:
- (KJS::MathObjectImp::getOwnPropertySlot):
- (KJS::MathProtoFuncAbs::callAsFunction):
- (KJS::MathProtoFuncACos::callAsFunction):
- (KJS::MathProtoFuncASin::callAsFunction):
- (KJS::MathProtoFuncATan::callAsFunction):
- (KJS::MathProtoFuncATan2::callAsFunction):
- (KJS::MathProtoFuncCeil::callAsFunction):
- (KJS::MathProtoFuncCos::callAsFunction):
- (KJS::MathProtoFuncExp::callAsFunction):
- (KJS::MathProtoFuncFloor::callAsFunction):
- (KJS::MathProtoFuncLog::callAsFunction):
- (KJS::MathProtoFuncMax::callAsFunction):
- (KJS::MathProtoFuncMin::callAsFunction):
- (KJS::MathProtoFuncPow::callAsFunction):
- (KJS::MathProtoFuncRandom::callAsFunction):
- (KJS::MathProtoFuncRound::callAsFunction):
- (KJS::MathProtoFuncSin::callAsFunction):
- (KJS::MathProtoFuncSqrt::callAsFunction):
- (KJS::MathProtoFuncTan::callAsFunction):
- * kjs/math_object.h:
- (KJS::MathObjectImp::classInfo):
- (KJS::MathObjectImp::):
- * kjs/string_object.cpp:
- (KJS::StringPrototype::getOwnPropertySlot):
- (KJS::StringProtoFuncToString::callAsFunction):
- (KJS::StringProtoFuncValueOf::callAsFunction):
- (KJS::StringProtoFuncCharAt::callAsFunction):
- (KJS::StringProtoFuncCharCodeAt::callAsFunction):
- (KJS::StringProtoFuncConcat::callAsFunction):
- (KJS::StringProtoFuncIndexOf::callAsFunction):
- (KJS::StringProtoFuncLastIndexOf::callAsFunction):
- (KJS::StringProtoFuncMatch::callAsFunction):
- (KJS::StringProtoFuncSearch::callAsFunction):
- (KJS::StringProtoFuncReplace::callAsFunction):
- (KJS::StringProtoFuncSlice::callAsFunction):
- (KJS::StringProtoFuncSplit::callAsFunction):
- (KJS::StringProtoFuncSubstr::callAsFunction):
- (KJS::StringProtoFuncSubstring::callAsFunction):
- (KJS::StringProtoFuncToLowerCase::callAsFunction):
- (KJS::StringProtoFuncToUpperCase::callAsFunction):
- (KJS::StringProtoFuncToLocaleLowerCase::callAsFunction):
- (KJS::StringProtoFuncToLocaleUpperCase::callAsFunction):
- (KJS::StringProtoFuncLocaleCompare::callAsFunction):
- (KJS::StringProtoFuncBig::callAsFunction):
- (KJS::StringProtoFuncSmall::callAsFunction):
- (KJS::StringProtoFuncBlink::callAsFunction):
- (KJS::StringProtoFuncBold::callAsFunction):
- (KJS::StringProtoFuncFixed::callAsFunction):
- (KJS::StringProtoFuncItalics::callAsFunction):
- (KJS::StringProtoFuncStrike::callAsFunction):
- (KJS::StringProtoFuncSub::callAsFunction):
- (KJS::StringProtoFuncSup::callAsFunction):
- (KJS::StringProtoFuncFontcolor::callAsFunction):
- (KJS::StringProtoFuncFontsize::callAsFunction):
- (KJS::StringProtoFuncAnchor::callAsFunction):
- (KJS::StringProtoFuncLink::callAsFunction):
- * kjs/string_object.h:
-
-2007-11-08 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- Reviewed by Sam and Ada.
-
- * wtf/MathExtras.h: Get rid of a circular #include dependency to fix
- the build.
-
-2007-11-08 Adam Roben <aroben@apple.com>
-
- Fix a precedence warning on Windows
-
- * kjs/JSImmediate.h:
- (KJS::JSImmediate::toBoolean):
-
-2007-11-08 Mark Rowe <mrowe@apple.com>
-
- Build fix for JavaScriptGlue.
-
- * wtf/MathExtras.h: Include stdlib.h for srand and RAND_MAX.
-
-2007-11-08 Darin Adler <darin@apple.com>
-
- - Windows build fix
-
- * kjs/JSImmediate.h: Include MathExtras.h rather than math.h since this file uses "signbit".
-
-2007-11-08 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Darin.
-
- Replace the use of floats for immediate values with the use of integers for a 4.5% improvement in SunSpider.
-
- Unfortunately this change results in NaN, +Inf, -Inf, and -0 being heap allocated now, but
- we should now have faster array access, faster immediate to double conversion, and the
- potential to further improve bitwise operators in future.
-
- This also removes the need for unions to avoid strict aliasing problems when extracting
- a value from immediates.
-
- * kjs/JSImmediate.h:
- (KJS::JSImmediate::trueImmediate):
- (KJS::JSImmediate::falseImmediate):
- (KJS::JSImmediate::undefinedImmediate):
- (KJS::JSImmediate::nullImmediate):
- (KJS::JSImmediate::toBoolean):
- * kjs/value.h:
- (KJS::jsNaN):
-
-2007-11-07 Eric Seidel <eric@webkit.org>
-
- Reviewed by Darin and Oliver.
-
- Add evaluateToNumber parallel evaluation tree to speed up number operations.
- Make ImmediateNumberNode a subclass of NumberNode.
- Share evaluate logic between evaluate and evaluateToNumber using inline functions
- There is still a lot of improvement to be made here.
-
- SunSpider claims this is a 1.0% speedup overall (nbody 7.9%), base64 slowing 2.0%
- Given the huge win that this prepares us for with simple type inferencing I see the small
- regression in base64 being worth the substantial overall improvement.
-
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::Node::evaluateToNumber):
- (KJS::NumberNode::evaluate):
- (KJS::NumberNode::evaluateToNumber):
- (KJS::StringNode::evaluateToNumber):
- (KJS::LocalVarAccessNode::inlineEvaluate):
- (KJS::LocalVarAccessNode::evaluate):
- (KJS::LocalVarAccessNode::evaluateToNumber):
- (KJS::BracketAccessorNode::inlineEvaluate):
- (KJS::BracketAccessorNode::evaluate):
- (KJS::BracketAccessorNode::evaluateToNumber):
- (KJS::NegateNode::evaluate):
- (KJS::NegateNode::evaluateToNumber):
- (KJS::MultNode::inlineEvaluateToNumber):
- (KJS::MultNode::evaluate):
- (KJS::MultNode::evaluateToNumber):
- (KJS::DivNode::inlineEvaluateToNumber):
- (KJS::DivNode::evaluate):
- (KJS::DivNode::evaluateToNumber):
- (KJS::ModNode::inlineEvaluateToNumber):
- (KJS::ModNode::evaluate):
- (KJS::ModNode::evaluateToNumber):
- (KJS::throwOutOfMemoryErrorToNumber):
- (KJS::addSlowCaseToNumber):
- (KJS::add):
- (KJS::addToNumber):
- (KJS::AddNode::evaluateToNumber):
- (KJS::SubNode::inlineEvaluateToNumber):
- (KJS::SubNode::evaluate):
- (KJS::SubNode::evaluateToNumber):
- (KJS::valueForReadModifyAssignment):
- (KJS::ReadModifyLocalVarNode::evaluate):
- (KJS::ReadModifyResolveNode::evaluate):
- (KJS::ReadModifyDotNode::evaluate):
- (KJS::ReadModifyBracketNode::evaluate):
- * kjs/nodes.h:
- (KJS::Node::):
- (KJS::NumberNode::):
- (KJS::ImmediateNumberNode::):
- (KJS::AddNode::precedence):
- * kjs/nodes2string.cpp:
- (KJS::NumberNode::streamTo):
-
-2007-11-07 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Eric.
-
- Fix up initialization after being mangled in r27572, and remove the
- ternary expression as extraCost will always be zero for the numeric
- heap.
-
- * kjs/collector.cpp:
- (KJS::Collector::heapAllocate):
-
-2007-11-07 Mark Rowe <mrowe@apple.com>
-
- Gtk build fix.
-
- * kjs/regexp_object.cpp:
-
-2007-11-07 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Beth Dakin.
-
- Eliminated a bogus (though compiled-out) branch in the collector.
-
- * kjs/collector.cpp:
- (KJS::Collector::heapAllocate):
-
-2007-11-06 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Fixed part of http://bugs.webkit.org/show_bug.cgi?id=15861
- 5.8% of string-validate-input.js is spent creating RegExpImps
-
- Put RegExpImp properties into a static hashtable to avoid a slew of
- PropertyMap churn when creating a RegExpImp.
-
- Factored important bits of regular expression implementation out of
- RegExpImp (the JS object) and into RegExp (the PCRE wrapper class),
- making RegExp a ref-counted class. (This will help later.)
-
- Removed PCRE_POSIX support because I didn't quite know how to test it
- and keep it working with these changes.
-
- 1.1% SunSpider speedup. 5.8% speedup on string-validate-input.js.
-
- * kjs/regexp.h: A few interface changes:
- 1. Renamed "subpatterns()" => "numSubpatterns()"
- 2. Made flag enumeration private and replaced it with public getters for
- specific flags.
- 3. Made RegExp ref-counted so RegExps can be shared by RegExpImps.
- 4. Made RegExp take a string of flags instead of an int, eliminating
- duplicated flag parsing code elsewhere.
-
- * kjs/regexp_object.cpp:
- (KJS::RegExpProtoFunc::callAsFunction): For RegExp.compile:
- - Fixed a bug where compile(undefined) would throw an exception.
- - Removed some now-redundant code.
- - Used RegExp sharing to eliminate an allocation and a bunch of
- PropertyMap thrash. (Not a big win since compile is a deprecated
- function. I mainly did this to test the plubming.)
-
-2007-11-07 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by nobody, Qt/Windows build fix.
-
- JavaScriptCore.pri expects OBJECTS_DIR to be set, so set it in
- testkjs.pro, too, where it's included from.
-
- * kjs/testkjs.pro:
-
-2007-11-07 Simon Hausmann <shausman@trolltech.com>
-
- Reviewed by Lars.
-
- Fix "nmake clean" for the Qt/Windows build by replacing tmp/ with a variable that ends with the correct type of slash/backslash depending on the choice of compiler/make tool.
-
- * JavaScriptCore.pri:
- * pcre/pcre.pri:
-
-2007-11-07 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- fix umemcasecmp
-
- Pretty embarrassing bug. Has the potential to fix quite a few test failures.
-
- * wtf/unicode/qt4/UnicodeQt4.h:
- (WTF::Unicode::umemcasecmp):
-
-2007-11-06 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Eric.
-
- - only collect when the heap is full, unless we have lots of extra cost garbage
-
- 1.1% SunSpider speedup.
-
- This shouldn't hit memory use much since the extra space in those
- blocks hangs around either way.
-
- * kjs/collector.cpp:
- (KJS::Collector::heapAllocate):
- (KJS::Collector::collect): Fix logic error that reversed the sense of collect's
- return value.
-
-2007-11-06 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Avoid unnecessarily boxing the result from post inc/decrement for 0.3% gain in sunspider
-
- We now convert the common 'for (...; ...; <var>++) ...' to the semantically identical
- 'for (...; ...; ++<var>) ...'.
-
- * kjs/nodes.cpp:
- (KJS::PostIncResolveNode::optimizeForUnnecessaryResult):
- (KJS::PostIncLocalVarNode::evaluate):
- (KJS::PostIncLocalVarNode::optimizeForUnnecessaryResult):
- (KJS::PostDecResolveNode::optimizeForUnnecessaryResult):
- (KJS::PostDecLocalVarNode::evaluate):
- (KJS::PostDecLocalVarNode::optimizeForUnnecessaryResult):
- * kjs/nodes.h:
- (KJS::PrePostResolveNode::):
- (KJS::PostIncResolveNode::):
- (KJS::PostIncLocalVarNode::):
- (KJS::PostDecResolveNode::):
- (KJS::PostDecLocalVarNode::):
- (KJS::PreIncResolveNode::):
- (KJS::PreDecResolveNode::):
- (KJS::ForNode::ForNode):
-
-2007-11-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by darin.
-
- This fixes a regressed layout test for string + object
-
- SunSpider claims this was an overall 0.3% speedup, although some individual tests were slower.
-
- * kjs/nodes.cpp:
- (KJS::add): remove erroneous "fast path" for string + *
-
-2007-11-06 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Eric Seidel.
-
- Added toJSNumber, a fast path for converting a JSValue to a JS number,
- and deployed it in postfix expressions. In the fast case this
- eliminates a call to jsNumber.
-
- 0.4% speedup on SunSpider.
-
- * ChangeLog:
- * kjs/nodes.cpp:
- (KJS::PostIncResolveNode::evaluate):
- (KJS::PostIncLocalVarNode::evaluate):
- (KJS::PostDecResolveNode::evaluate):
- (KJS::PostDecLocalVarNode::evaluate):
- (KJS::PostIncBracketNode::evaluate):
- (KJS::PostDecBracketNode::evaluate):
- (KJS::PostIncDotNode::evaluate):
- (KJS::PostDecDotNode::evaluate):
- (KJS::UnaryPlusNode::evaluate):
- * kjs/value.h:
- (KJS::JSValue::toJSNumber):
-
-2007-11-06 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15846
- REGRESSION (r27387): Memory corruption when running fast/js/kde/delete.html
-
- There was a mistake in the algorithm used to find an empty slot in the property
- map entries vector; when we were putting in a new property value and not overwriting
- an existing deleted sentinel, we would enlarge the entries vector, but would not
- overwrite the stale data that's in the new part. It was easy to pin this down by
- turning on property map consistency checks -- I never would have landed with this
- bug if I had run the regression tests once with consistency checks on!
-
- * kjs/property_map.cpp: (KJS::PropertyMap::put): Changed logic for the case where
- foundDeletedElement is false to always use the item at the end of the entries vector.
- Also allowed me to merge with the logic for the "no deleted sentinels at all" case.
-
-2007-11-06 Oliver Hunt <oliver@apple.com>
-
- RS=Darin.
-
- Fix previous patch to use a 3 bit shift, a 16 bit shift causes a regression in sunspider.
-
- * kjs/nodes.cpp:
- (KJS::add):
-
-2007-11-06 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Darin.
-
- Replace boolean comparisons in AddNode with mask
- comparisons for a 0.2% improvement in sunspider.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/nodes.cpp:
- (KJS::add):
-
-2007-11-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by darin.
-
- SunSpider claims this is a 1.1% speedup.
-
- * kjs/nodes.cpp:
- (KJS::throwOutOfMemoryError): Added, non inline.
- (KJS::addSlowCase): renamed from add(), non inline.
- (KJS::add): add fast path for String + String, Number + Number and String + *
-
-2007-11-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by mjs.
-
- Avoid more UString creation.
-
- SunSpider claims this is a 0.4% speedup.
-
- * kjs/regexp_object.cpp:
- (KJS::RegExpObjectImp::construct): use UString::find(UChar)
-
-2007-11-05 Mark Rowe <mrowe@apple.com>
-
- Mac build fix.
-
- * kjs/array_object.cpp:
- (KJS::ArrayProtoFunc::callAsFunction):
-
-2007-11-05 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * kjs/list.h:
-
-2007-11-05 Mark Rowe <mrowe@apple.com>
-
- Build fix. Add missing #include.
-
- * kjs/operations.cpp:
-
-2007-11-05 Eric Seidel <eric@webkit.org>
-
- Reviewed by mjs.
-
- Remove another call to toString(exec)
-
- SunSpider claims this is a 0.5% speedup.
-
- * kjs/operations.cpp:
- (KJS::equal): remove another toString
-
-2007-11-05 Eric Seidel <eric@webkit.org>
-
- * kjs/operations.cpp:
- (KJS::equal): correct broken change.
-
-2007-11-05 Eric Seidel <eric@webkit.org>
-
- Reviewed by mjs.
-
- Remove one more call to toString(exec).
-
- SunSpider claims this is a 0.7% speedup.
-
- * kjs/operations.cpp:
- (KJS::equal): remove a call to toString()
-
-2007-11-05 Mark Rowe <mrowe@apple.com>
-
- Gtk build fix.
-
- * pcre/pcre.pri:
-
-2007-11-05 Mark Rowe <mrowe@apple.com>
-
- Gtk build fix.
-
- * kjs/list.cpp:
-
-2007-11-05 Geoffrey Garen <ggaren@apple.com>
-
- Touched a file to test my new HTTP access.
-
- * kjs/scope_chain.cpp:
-
-2007-11-05 Alp Toker <alp@atoker.com>
-
- Unreviewed build fix for qmake-based ports.
-
- Someone with a better understanding of qmake still needs to sort out
- the INCLUDEPATH/DEPENDPATH mess.
-
- * JavaScriptCore.pri:
-
-2007-11-05 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=15835
-
- Switched List implementation from a custom heap allocator to an inline
- Vector, for a disappointing .5% SunSpider speedup.
-
- Also renamed List::slice to List::getSlice because "get" is the
- conventional prefix for functions returning a value through an out
- parameter.
-
- * kjs/array_object.cpp:
- (KJS::ArrayProtoFunc::callAsFunction): Removed some redundant function
- calls and memory accesses.
-
- * kjs/bool_object.cpp:
- (BooleanObjectImp::construct): Removed questionable use of iterator.
-
- * kjs/list.cpp:
- * kjs/list.h: New List class, implemented in terms of Vector. Two
- interesting differences:
- 1. The inline capacity is 8, not 5. Many of the Lists constructed
- during a SunSpider run are larger than 5; almost none are larger
- than 8.
-
- 2. The growth factor is 4, not 2. Since we can guarantee that Lists
- aren't long-lived, we can grow them more aggressively, to avoid
- excessive copying.
-
- * kjs/regexp_object.cpp:
- (RegExpObjectImp::construct): Removed redundant function calls.
-
- * kjs/string_object.cpp:
- (KJS::StringObjectImp::construct): Removed questionable use of iterator.
-
- * wtf/Vector.h:
- (WTF::::uncheckedAppend): Added a fast, unchecked version of append.
-
-2007-11-05 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Alp Toker.
-
- Add DEPENDPATH to JavaScriptCore and pcre to help qmake with dependencies.
-
- * JavaScriptCore.pri:
- * pcre/pcre.pri:
-
-2007-11-04 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15826
- optimize opcode loop and case insensitive ASCII compares for a 30% speedup
-
- SunSpider says it's 2.6% faster overall, 32.5% in the regular expression tests.
-
- * pcre/pcre_internal.h: Added OP_ASCII_CHAR and OP_ASCII_LETTER_NC.
-
- * pcre/pcre_compile.c:
- (find_fixedlength): Added cases for OP_ASCII_CHAR and OP_ASCII_LETTER_NC. Also
- added OP_NOT since there was no reason it should not be in here.
- (could_be_empty_branch): Ditto.
- (compile_branch): Streamlined all the single-character cases; there was a bit of
- duplicate code. Added cases for OP_ASCII_CHAR and OP_ASCII_LETTER_NC as needed.
- But in particular, compile to those opcodes when the single character match is
- ASCII.
- (find_firstassertedchar): Added cases for OP_ASCII_CHAR and OP_ASCII_LETTER_NC.
-
- * pcre/pcre_exec.c: (match): Removed the "min", "minimize", and "op" fields from
- the matchframe, after I discovered that none of them needed to be saved and restored
- across recursive match calls. Also eliminated the ignored result field from the
- matchframe, since I discovered that rrc ("recursive result code") was already the
- exact same thing. Moved the handling of opcodes higher than OP_BRA into the default
- statement of the switch instead of doing them before the switch. This removes a
- branch from each iteration of the opcode interpreter, just as removal of "op"
- removed at least one store from each iteration. Last, but not least, add the
- OP_ASCII_CHAR and OP_ASCII_LETTER_NC functions. Neither can ever match a
- surrogate pair and the letter case can be handled efficiently.
-
-2007-11-04 Darin Adler <darin@apple.com>
-
- * pcre/pcre_exec.c: (match): Try to fix the Windows build by removing unreachable code.
-
-2007-11-03 Darin Adler <darin@apple.com>
-
- - fix non-Mac builds; remove some more unused PCRE stuff
-
- * pcre/pcre_compile.c:
- (compile_branch): Removed branch chain and some unused ESC values.
- (compile_regex): Ditto.
- (jsRegExpCompile): Ditto.
- * pcre/pcre_exec.c:
- (match): Removed unused branch targets. Don't use macros any more.
- (jsRegExpExecute): More of the same.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Update for removed files.
- * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
- * pcre/pcre.pri: Ditto.
-
- * pcre/MERGING: Removed.
- * pcre/pcre_fullinfo.c: Removed.
- * pcre/pcre_get.c: Removed.
- * pcre/pcre_internal.h:
- * pcre/ucp.h: Removed.
-
-2007-11-03 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15821
- remove unused PCRE features for speed
-
- A first step toward removing the PCRE features we don't use.
- This gives a 0.8% speedup on SunSpider, and a 6.5% speedup on
- the SunSpider regular expression test.
-
- Replaced the public interface with one that doesn't use the
- name PCRE. Removed code we don't need for JavaScript and various
- configurations we don't use. This is in preparation for still
- more changes in the future. We'll probably switch to C++ and
- make some even more significant changes to the regexp engine
- to get some additional speed.
-
- There's probably additional unused stuff that I haven't
- deleted yet.
-
- This does mean that our PCRE is now a fork, but I think that's
- not really a big deal.
-
- * JavaScriptCore.exp: Remove the 5 old entry points and add
- the 3 new entry points for WebCore's direct use of the regular
- expression engine.
-
- * kjs/config.h: Remove the USE(PCRE16) define. I decided to flip
- its sense and now there's a USE(POSIX_REGEX) instead, which should
- probably not be set by anyone. Maybe later we'll just get rid of it
- altogether.
-
- * kjs/regexp.h:
- * kjs/regexp.cpp:
- (KJS::RegExp::RegExp): Switch to new jsRegExp function names and
- defines. Cut down on the number of functions used.
- (KJS::RegExp::~RegExp): Ditto.
- (KJS::RegExp::match): Ditto.
-
- * pcre/dftables.c: (main): Get rid of ctype_letter and ctype_meta,
- which are unused.
-
- * pcre/pcre-config.h: Get rid of EBCIDIC, PCRE_DATA_SCOPE, const,
- size_t, HAVE_STRERROR, HAVE_MEMMOVE, HAVE_BCOPY, NEWLINE,
- POSIX_MALLOC_THRESHOLD, NO_RECURSE, SUPPORT_UCP, SUPPORT_UTF8,
- and JAVASCRIPT. These are all no longer configurable in our copy
- of the library.
-
- * pcre/pcre.h: Remove the macro-based kjs prefix hack, the PCRE
- version macros, PCRE_UTF16, the code to set up PCRE_DATA_SCOPE,
- the include of <stdlib.h>, and most of the constants and
- functions defined in this header. Changed the naming scheme to
- use a JSRegExp prefix rather than a pcre prefix. In the future,
- we'll probably change this to be a C++ header.
-
- * pcre/pcre_compile.c: Removed all unused code branches,
- including many whole functions and various byte codes.
- Kept changes outside of removal to a minimum.
- (check_escape):
- (first_significant_code):
- (find_fixedlength):
- (find_recurse):
- (could_be_empty_branch):
- (compile_branch):
- (compile_regex):
- (is_anchored):
- (is_startline):
- (find_firstassertedchar):
- (jsRegExpCompile): Renamed from pcre_compile2 and changed the
- parameters around a bit.
- (jsRegExpFree): Added.
-
- * pcre/pcre_exec.c: Removed many unused opcodes and variables.
- Also started tearing down the NO_RECURSE mechanism since it's
- now the default. In some cases there were things in the explicit
- frame that could be turned into plain old local variables and
- other small like optimizations.
- (pchars):
- (match_ref):
- (match): Changed parameters quite a bit since it's now not used
- recursively.
- (jsRegExpExecute): Renamed from pcre_exec.
-
- * pcre/pcre_internal.h: Get rid of PCRE_DEFINITION, PCRE_SPTR,
- PCRE_IMS, PCRE_ICHANGED, PCRE_NOPARTIAL, PCRE_STUDY_MAPPED,
- PUBLIC_OPTIONS, PUBLIC_EXEC_OPTIONS, PUBLIC_DFA_EXEC_OPTIONS,
- PUBLIC_STUDY_OPTIONS, MAGIC_NUMBER, 16 of the opcodes,
- _pcre_utt, _pcre_utt_size, _pcre_try_flipped, _pcre_ucp_findprop,
- and _pcre_valid_utf8. Also moved pcre_malloc and pcre_free here.
-
- * pcre/pcre_maketables.c: Changed to only compile in dftables.
- Also got rid of many of the tables that we don't use.
-
- * pcre/pcre_tables.c: Removed the unused Unicode property tables.
-
- * pcre/pcre_ucp_searchfuncs.c: Removed everything except for
- _pcre_ucp_othercase.
-
- * pcre/pcre_xclass.c: (_pcre_xclass): Removed uneeded support
- for classes based on Unicode properties.
-
- * wtf/FastMallocPCRE.cpp: Removed unused bits. It would be good
- to eliminate this completely, but we need the regular expression
- code to be C++ first.
-
- * pcre/pcre_fullinfo.c:
- * pcre/pcre_get.c:
- * pcre/ucp.h:
- Files that are no longer needed. I didn't remove them with this
- check-in, because I didn't want to modify all the project files.
-
-2007-11-03 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Sam.
-
- - remove NaN check from JSImmediate::fromDouble for 0.5% SunSpider speedup
-
- It turns out that doing this check costs more than it saves.
-
- * kjs/JSImmediate.h:
- (KJS::JSImmediate::fromDouble):
-
-2007-11-03 Sam Weinig <sam@webkit.org>
-
- Reviewed by Oliver.
-
- Remove dummy variable from ClassInfo reducing the size of the struct by 1 word.
- The variable had been kept around for binary compatibility, but since nothing
- else is there is no point in continuing to keep it around.
-
- * API/JSCallbackConstructor.cpp:
- * API/JSCallbackFunction.cpp:
- * API/JSCallbackObject.cpp:
- * bindings/objc/objc_runtime.mm:
- * bindings/runtime_array.cpp:
- * bindings/runtime_object.cpp:
- * kjs/array_instance.cpp:
- * kjs/array_object.cpp:
- * kjs/bool_object.cpp:
- * kjs/date_object.cpp:
- * kjs/error_object.cpp:
- * kjs/function.cpp:
- * kjs/internal.cpp:
- * kjs/lookup.h:
- * kjs/math_object.cpp:
- * kjs/number_object.cpp:
- * kjs/object.h:
- * kjs/regexp_object.cpp:
- * kjs/string_object.cpp:
-
-2007-11-03 Kevin McCullough <kmccullough@apple.com>
-
- - Updated testkjs results to make the build bots green until we
- can fix the tests that are failing. The new failures are in DST.
-
- * tests/mozilla/expected.html:
-
-2007-11-03 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Adam.
-
- - don't print the var twice for ForInNodes with a var declaration
-
- * kjs/nodes2string.cpp:
- (KJS::ForInNode::streamTo):
-
-2007-11-03 Darin Adler <darin@apple.com>
-
- * pcre/pcre_compile.c: (check_escape): Windows build fix. Get rid of
- C-incompatible declaration.
-
-2007-11-03 Mark Rowe <mrowe@apple.com>
-
- Gtk build fix.
-
- * kjs/nodes.cpp: Add missing include.
-
-2007-11-03 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=15814
- <rdar://problem/5536644> fast/js/kde/encode_decode_uri.html fails
-
- These changes cause us to match the JavaScript specification and pass the
- fast/js/kde/encode_decode_uri.html test.
-
- * kjs/function.cpp: (KJS::encode): Call the UTF-8 string conversion in its
- new strict mode, throwing an exception if there are malformed UTF-16 surrogate
- pairs in the text.
-
- * kjs/ustring.h: Added a strict version of the UTF-8 string conversion.
- * kjs/ustring.cpp:
- (KJS::decodeUTF8Sequence): Removed code to disallow U+FFFE and U+FFFF; while
- those might be illegal in some sense, they aren't supposed to get any special
- handling in the place where this function is currently used.
- (KJS::UString::UTF8String): Added the strictness.
-
-2007-11-03 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15812
- some JavaScript tests (from the Mozilla test suite) are failing
-
- Two or three fixes get 7 more of the Mozilla tests passing.
- This gets us down from 61 failing tests to 54.
-
- * kjs/interpreter.h: (KJS::Interpreter::builtinRegExp):
- Made this inline and gave it a more specific type. Some day we should
- probably do that for all of these -- might even get a bit of a speed
- boost from it.
- * kjs/interpreter.cpp: Removed Interpreter::builtinRegExp now that it's
- inline in the header.
-
- * kjs/regexp_object.h:
- * kjs/regexp_object.cpp:
- (KJS::RegExpProtoFunc::callAsFunction): Moved test and exec out of the
- switch statement into the RegExpImp object, so they can be shared with
- RegExpImp::callAsFunction.
- (KJS::RegExpImp::match): Added. Common code used by both test and exec.
- (KJS::RegExpImp::test): Added.
- (KJS::RegExpImp::exec): Added.
- (KJS::RegExpImp::implementsCall): Added.
- (KJS::RegExpImp::callAsFunction): Added.
- (KJS::RegExpObjectImpPrivate::RegExpObjectImpPrivate): Initialize
- lastInput to null rather than empty string -- we take advantage of the
- difference in RegExpImp::match.
- (KJS::RegExpObjectImp::input): Added. No reason to go through hash tables
- just to get at a field like this.
-
- * pcre/pcre_compile.c: (check_escape): Changed the \u handling to match
- the JavaScript specification. If there are not 4 hex digits after the \u,
- then it's processed as if it wasn't an escape sequence at all.
-
- * pcre/pcre_internal.h: Added IS_NEWLINE, with the appropriate definition
- for JavaScript (4 specific Unicode values).
- * pcre/pcre_exec.c:
- (match): Changed all call sites to use IS_NEWLINE.
- (pcre_exec): Ditto.
-
- * tests/mozilla/expected.html: Updated to expect 7 more successful tests.
-
-2007-11-03 David D. Kilzer <ddkilzer@webkit.org>
-
- Sort files(...); sections of Xcode project files.
-
- Rubber-stamped by Darin.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2007-11-03 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - remove VarDeclListNode and simplify VarDeclNode evaluation for 0.4% SunSpider speedup
-
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::VarDeclNode::optimizeVariableAccess):
- (KJS::VarDeclNode::getDeclarations):
- (KJS::VarDeclNode::handleSlowCase):
- (KJS::VarDeclNode::evaluateSingle):
- (KJS::VarDeclNode::evaluate):
- (KJS::VarStatementNode::execute):
- * kjs/nodes.h:
- (KJS::VarDeclNode::):
- (KJS::VarStatementNode::):
- * kjs/nodes2string.cpp:
- (KJS::VarDeclNode::streamTo):
-
-2007-11-03 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- http://bugs.webkit.org/show_bug.cgi?id=15800
- REGRESSION (r27303): RegExp leaks
-
- * kjs/regexp_object.h:
- (KJS::RegExpImp::setRegExp):
- (KJS::RegExpImp::regExp):
- (KJS::RegExpImp::classInfo):
- * kjs/regexp_object.cpp:
- (RegExpImp::RegExpImp):
- (RegExpImp::~RegExpImp):
- Renamed reg member variable to m_regExp, changed it to use OwnPtr.
-
-2007-11-02 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - add SourceElements as a typedef for Vector<RefPtr<StatementNode> >.
-
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::statementListPushFIFO):
- (KJS::statementListGetDeclarations):
- (KJS::statementListInitializeDeclarationStacks):
- (KJS::statementListInitializeVariableAccessStack):
- (KJS::statementListExecute):
- (KJS::BlockNode::BlockNode):
- (KJS::FunctionBodyNode::FunctionBodyNode):
- (KJS::ProgramNode::ProgramNode):
- * kjs/nodes.h:
- (KJS::CaseClauseNode::):
-
-2007-11-02 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15791
- change property map data structure for less memory use, better speed
-
- The property map now has an array of indices and a separate array of
- property map entries. This slightly slows down lookup because of a second
- memory acess, but makes property maps smaller and faster to iterate in
- functions like mark().
-
- SunSpider says this is 1.2% faster, although it makes the bitwise-end test
- more than 10% slower. To fix that we'll need to optimize global variable lookup.
-
- * kjs/property_map.cpp:
- (KJS::PropertyMapEntry::PropertyMapEntry):
- (KJS::PropertyMapHashTable::entries):
- (KJS::PropertyMapHashTable::allocationSize):
- (KJS::SavedProperties::SavedProperties):
- (KJS::SavedProperties::~SavedProperties):
- (KJS::PropertyMap::checkConsistency):
- (KJS::PropertyMap::~PropertyMap):
- (KJS::PropertyMap::clear):
- (KJS::PropertyMap::get):
- (KJS::PropertyMap::getLocation):
- (KJS::PropertyMap::put):
- (KJS::PropertyMap::insert):
- (KJS::PropertyMap::createTable):
- (KJS::PropertyMap::rehash):
- (KJS::PropertyMap::remove):
- (KJS::PropertyMap::mark):
- (KJS::comparePropertyMapEntryIndices):
- (KJS::PropertyMap::containsGettersOrSetters):
- (KJS::PropertyMap::getEnumerablePropertyNames):
- (KJS::PropertyMap::save):
- (KJS::PropertyMap::restore):
- * kjs/property_map.h:
-
-2007-11-02 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15807
- HashMap needs a take() function that combines get and remove
-
- * wtf/HashMap.h: Added take function. Simplistic implementation for now,
- but still does only one hash table lookup.
-
- * kjs/array_instance.cpp: (KJS::ArrayInstance::put): Use take rather than
- a find followed by a remove.
-
-2007-11-02 David Carson <dacarson@gmail.com>
-
- Reviewed by Darin.
-
- Fix compiler warning "warning: suggest parentheses around && within ||"
- http://bugs.webkit.org/show_bug.cgi?id=15764
-
- * kjs/value.h: (KJS::JSValue::isNumber): Add parentheses.
-
-2007-11-01 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- In preparation for making List a simple stack-allocated Vector:
-
- Removed all instances of List copying and/or assignment, and made List
- inherit from Noncopyable.
-
- Functions that used to return a List by copy now take List& out
- parameters.
-
- Layout tests and JS tests pass.
-
- * kjs/list.cpp:
- (KJS::List::slice): Replaced copyTail with a more generic slice
- alternative. (JavaScriptCore only calls slice(1), but WebCore calls
- slice(2)).
-
-2007-11-01 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fixed http://bugs.webkit.org/show_bug.cgi?id=15785
- REGRESSION(r27344): Crash on load at finance.yahoo.com
-
- Reverted a small portion of my last check-in. (The speedup and the List
- removal are still there, though.)
-
- ActivationImp needs to hold a pointer to its function, and mark that
- pointer (rather than accessing its function through its ExecState, and
- counting on the active scope to mark its function) because a closure
- can cause an ActivationImp to outlive its ExecState along with any
- active scope.
-
- * kjs/ExecState.cpp:
- (KJS::ExecState::ExecState):
- * kjs/function.cpp:
- (KJS::FunctionImp::~FunctionImp):
- (KJS::ActivationImp::ActivationImp):
- * kjs/function.h:
- (KJS::ActivationImp::ActivationImpPrivate::ActivationImpPrivate):
-
- Also made HashTable a little more crash-happy in debug builds, so
- problems like this will show up earlier:
-
- * wtf/HashTable.h:
- (WTF::HashTable::~HashTable):
-
-2007-11-01 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Adam Roben.
-
- Addressed some of Darin's review comments.
-
- Used perl -p, which is the shorthand while(<>) {}.
-
- Made sure not to suppress bison's output.
-
- Added line to removed bison_out.txt, since this script removes other
- intermediate files, too.
-
- * DerivedSources.make:
-
-2007-11-01 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Removed List from ActivationImp, in preparation for making all lists
- stack-allocated.
-
- Tests pass.
-
- 1.0% speedup on SunSpider, presumably due to reduced List refcount thrash.
-
- * kjs/ExecState.cpp:
- (KJS::ExecState::ExecState):
- (KJS::ExecState::~ExecState):
- * kjs/function.cpp:
- (KJS::ActivationImp::ActivationImp):
- (KJS::ActivationImp::createArgumentsObject):
- * kjs/function.h:
- (KJS::ActivationImp::ActivationImpPrivate::ActivationImpPrivate):
-
-2007-11-01 Adam Roben <aroben@apple.com>
-
- Use jsNumberCell instead of jsNumber when converting double constants to JSValues
-
- This fixes fast/js/math.html, ecma/Date/15.9.5.10-1.js, and
- ecma/Date/15.9.5.12-1.js, which were suffering from a bug in MSVC.
-
- It also gets rid of an MSVC warning that we previously had to silence.
-
- Reviewed by Geoff.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Turn
- back on the "overflow in constant arithmetic" warning.
- * kjs/number_object.cpp:
- (NumberObjectImp::getValueProperty): Use jsNumberCell instead of
- jsNumber.
-
-2007-10-31 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * kjs/ExecState.h:
-
-2007-10-31 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - shave some cycles off of local storage access for a 1% SunSpider speedup
-
- Keep the LocalStorage pointer in the ExecState, instead of getting
- it from the ActivationImp all the time.
-
- * kjs/ExecState.cpp:
- (KJS::ExecState::updateLocalStorage):
- * kjs/ExecState.h:
- (KJS::ExecState::localStorage):
- * kjs/nodes.cpp:
- (KJS::LocalVarAccessNode::evaluate):
- (KJS::LocalVarFunctionCallNode::evaluate):
- (KJS::PostIncLocalVarNode::evaluate):
- (KJS::PostDecLocalVarNode::evaluate):
- (KJS::LocalVarTypeOfNode::evaluate):
- (KJS::PreIncLocalVarNode::evaluate):
- (KJS::PreDecLocalVarNode::evaluate):
- (KJS::ReadModifyLocalVarNode::evaluate):
- (KJS::AssignLocalVarNode::evaluate):
- (KJS::FunctionBodyNode::processDeclarationsForFunctionCode):
-
-2007-10-31 Adam Roben <aroben@apple.com>
-
- Fix a crash on launch due to a static initializer race
-
- We now use fast inline assembler spinlocks which can be statically
- initialized at compile time.
-
- As a side benefit, this speeds up SunSpider by 0.4%.
-
- Reviewed by Oliver.
-
- * wtf/FastMalloc.cpp:
- * wtf/TCSpinLock.h:
- (TCMalloc_SpinLock::Lock):
- (TCMalloc_SpinLock::Unlock):
- (TCMalloc_SlowLock):
- * wtf/TCSystemAlloc.cpp:
-
-2007-10-31 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam.
-
- - Corrected spelling.
-
- * wtf/HashTraits.h:
-
-2007-10-31 Mark Rowe <mrowe@apple.com>
-
- Further Gtk build fixage.
-
- * kjs/regexp_object.cpp:
-
-2007-10-31 Mark Rowe <mrowe@apple.com>
-
- Gtk build fix.
-
- * kjs/regexp.h:
-
-2007-10-31 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=15749
- RegExp/RegExpObjectImp cause needless UString creation
-
- Speeds things up 0.4% according to SunSpider.
-
- * kjs/config.h: Define USE(PCRE16) instead of HAVE(PCREPOSIX),
- because this library doesn't use the real PCRE -- it uses its
- own PCRE that works on UTF-16.
-
- * kjs/regexp.h: Removed a few unused functions. Changed the ifdef.
- Use Noncopyable. Change the return value of match.
- * kjs/regexp.cpp:
- (KJS::RegExp::RegExp): Call pcre_compile2, for a slight speed boost.
- (KJS::RegExp::~RegExp): PCRE16 rather than PCREPOSIX.
- (KJS::RegExp::match): Change to return the position as an int and the
- ovector as a OwnArrayPtr<int> for efficiency and clearer storage management.
-
- * kjs/regexp_object.h: Change performMatch and arrayOfMatches to no longer
- require a result string.
- * kjs/regexp_object.cpp:
- (RegExpProtoFunc::callAsFunction): Update for new signature of performMatch.
- (RegExpObjectImp::performMatch): Change so it doesn't return a string.
- (RegExpObjectImp::arrayOfMatches): Simplify by unifying the handling of
- the main result with the backreferences; now it doesn't need to take
- a result parameter.
- (RegExpObjectImp::getBackref): Minor tweaks.
- (RegExpObjectImp::getLastParen): Ditto.
- (RegExpObjectImp::getLeftContext): Ditto.
- (RegExpObjectImp::getRightContext): Ditto.
- (RegExpObjectImp::getValueProperty): Change LastMatch case to call
- getBackref(0) so we don't need a separate getLastMatch function.
-
- * kjs/string_object.cpp:
- (KJS::replace): Update to use new performMatch, including merging the
- matched string section with the other substrings.
- (KJS::StringProtoFunc::callAsFunction): Update functions to use the
- new performMatch and match. Also change to use OwnArrayPtr.
-
-2007-10-31 Oliver Hunt <oliver@apple.com>
-
- * kjs/nodes.h: include OwnPtr.h
-
-2007-10-31 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Remove SourceCodeElement class and replaced with a Vector for a 0.8% gain on sunspider
-
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::statementListPushFIFO):
- (KJS::statementListGetDeclarations):
- (KJS::statementListInitializeDeclarationStacks):
- (KJS::statementListInitializeVariableAccessStack):
- (KJS::statementListExecute):
- (KJS::BlockNode::optimizeVariableAccess):
- (KJS::BlockNode::BlockNode):
- (KJS::BlockNode::getDeclarations):
- (KJS::BlockNode::execute):
- (KJS::CaseClauseNode::optimizeVariableAccess):
- (KJS::CaseClauseNode::getDeclarations):
- (KJS::CaseClauseNode::evalStatements):
- (KJS::FunctionBodyNode::initializeDeclarationStacks):
- (KJS::FunctionBodyNode::optimizeVariableAccess):
- * kjs/nodes.h:
- * kjs/nodes2string.cpp:
- (KJS::statementListStreamTo):
- (KJS::BlockNode::streamTo):
- (KJS::CaseClauseNode::streamTo):
-
-2007-10-30 Mark Rowe <mrowe@apple.com>
-
- * kjs/property_map.cpp: Added a missing using directive to fix the build
- for non-Mac ports. Mac worked only because it does the AllInOneFile compile.
-
-2007-10-31 Maciej Stachowiak <mjs@apple.com>
-
- * kjs/property_map.cpp: Include HashTable.h the right way to fix the build
- for non-Mac ports.
-
-2007-10-31 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin.
-
- http://bugs.webkit.org/show_bug.cgi?id=11001
- WebKit doesn't support RegExp.compile method
-
- Test: fast/js/regexp-compile.html
-
- * kjs/regexp_object.cpp:
- (RegExpPrototype::RegExpPrototype):
- (RegExpProtoFunc::callAsFunction):
- * kjs/regexp_object.h:
- (KJS::RegExpProtoFunc::):
- Added RegExp.compile.
-
- * tests/mozilla/expected.html: js1_2/regexp/compile.js now passes.
-
-2007-10-31 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - get rid of integer divide in PropertyMap and HashTable for 1% SunSpider speedup
-
- Integer divide sucks. Fortunately, a bunch of shifts and XORs
- biased towards the high bits is sufficient to provide a good
- double hash. Besides the SunSpider win, I used the dump statistics
- mode for both to verify that collisions did not increase and that
- the longest collision chain is not any longer.
-
- * kjs/property_map.cpp:
- (KJS::doubleHash):
- (KJS::PropertyMap::get):
- (KJS::PropertyMap::getLocation):
- (KJS::PropertyMap::put):
- (KJS::PropertyMap::insert):
- (KJS::PropertyMap::remove):
- (KJS::PropertyMap::checkConsistency):
- * wtf/HashTable.h:
- (WTF::doubleHash):
- (WTF::::lookup):
- (WTF::::lookupForWriting):
- (WTF::::fullLookupForWriting):
- (WTF::::add):
-
-2007-10-30 Adam Roben <aroben@apple.com>
-
- * kjs/collector.h: Make HeapType public so it can be used for non-member
- things like the HeapConstants struct template. Fixes the build on Windows.
-
-2007-10-30 Adam Roben <aroben@apple.com>
-
- Change ALWAYS_INLINE and WTF_PRIVATE_INLINE to use __forceinline on Windows
-
- Speeds up SunSpider by 0.4%.
-
- Reviewed by Steve and Maciej.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Disable
- a warning during LTCG in release builds about double -> float
- conversion.
- * wtf/AlwaysInline.h:
- * wtf/FastMalloc.h:
-
-2007-10-30 Adam Roben <aroben@apple.com>
-
- Use GetCurrentThreadId instead of pthread_self in FastMalloc
-
- Speeds up SunSpider by 0.3%.
-
- Reviewed by Steve.
-
- * wtf/FastMalloc.cpp:
- (WTF::TCMalloc_ThreadCache::InitTSD):
- (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
-
-2007-10-30 Adam Roben <aroben@apple.com>
-
- Switch to a Win32 critical section implementation of spinlocks
-
- Speeds up SunSpider by 0.4%.
-
- Reviewed by Steve.
-
- * wtf/FastMalloc.cpp:
- * wtf/TCSpinLock.h:
- (TCMalloc_SpinLock::TCMalloc_SpinLock):
- (TCMalloc_SpinLock::Init):
- (TCMalloc_SpinLock::Finalize):
- (TCMalloc_SpinLock::Lock):
- (TCMalloc_SpinLock::Unlock):
- * wtf/TCSystemAlloc.cpp:
-
-2007-10-30 Adam Roben <aroben@apple.com>
-
- Fix Bug 15586: REGRESSION (r26759-r26785): Windows nightly builds crash with Safari 3 Public Beta
-
- http://bugs.webkit.org/show_bug.cgi?id=15586
-
- Also fixes: <rdar://5565303> Cannot use regsvr32.exe to register WebKit.dll
-
- Use Win32 TLS functions instead of __declspec(thread), which breaks
- delay-loading.
-
- Reviewed by Steve.
-
- * wtf/FastMalloc.cpp:
- (WTF::getThreadHeap):
- (WTF::TCMalloc_ThreadCache::InitModule):
-
-2007-10-30 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - allocate numbers in half-size cells, for an 0.5% SunSpider speedup
- http://bugs.webkit.org/show_bug.cgi?id=15772
-
- We do this by using a single mark bit per two number cells, and
- tweaking marking.
-
- Besides being an 0.5% win overall, this is a 7.1% win on morph.
-
- * kjs/collector.cpp:
- (KJS::Collector::heapAllocate):
- (KJS::Collector::markStackObjectsConservatively):
- (KJS::Collector::sweep):
- * kjs/collector.h:
- (KJS::SmallCollectorCell::):
-
-2007-10-30 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Adam Roben, Sam Weinig.
-
- Made conflicts in grammar.y a persistent build failure.
-
- * DerivedSources.make:
-
-2007-10-30 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam and Geoff.
-
- - Added a new cast so all the casts are in the same place.
-
- * API/APICast.h:
- (toGlobalRef):
-
-2007-10-30 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Fixed <rdar://problem/5567504> shift/reduce conflict introduced in r24457
-
- JS tests, including
-
- ecma_2/Statements/dowhile-001.js
- ecma_2/Statements/dowhile-002.js
- ecma_2/Statements/dowhile-003.js
- ecma_2/Statements/dowhile-004.js
- ecma_2/Statements/dowhile-005.js
- ecma_2/Statements/dowhile-006.js
- ecma_2/Statements/dowhile-007.js
- js1_2/statements/do_while.js
-
- and layout tests, including
-
- do-while-expression-value.html
- do-while-semicolon.html
- do-while-without-semicolon.html
-
- pass.
-
- * kjs/grammar.y: Use the explicit "error" production, as we do with other
- automatic semicolon insertions, to disambiguate "do { } while();" from
- "do { } while()" followed by ";" (the empty statement).
-
-2007-10-29 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Debranching remaining assignment nodes, and miscellaneous cleanup
-
- Split read-modify code paths out of AssignBracketNode and AssignDotNode
- Removed now unnecessary check for write-only assignment in ReadModifyLocalVarNode
- and ReadModifyResolveNode evaluate methods
-
- Leads to a 1% gain in SunSpider.
-
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::ReadModifyLocalVarNode::evaluate):
- (KJS::ReadModifyResolveNode::evaluate):
- (KJS::AssignDotNode::evaluate):
- (KJS::ReadModifyDotNode::optimizeVariableAccess):
- (KJS::ReadModifyDotNode::evaluate):
- (KJS::AssignBracketNode::evaluate):
- (KJS::ReadModifyBracketNode::optimizeVariableAccess):
- (KJS::ReadModifyBracketNode::evaluate):
- * kjs/nodes.h:
- (KJS::AssignBracketNode::):
- (KJS::AssignBracketNode::precedence):
- (KJS::AssignDotNode::):
- (KJS::AssignDotNode::precedence):
- * kjs/nodes2string.cpp:
- (KJS::ReadModifyBracketNode::streamTo):
- (KJS::AssignBracketNode::streamTo):
- (KJS::ReadModifyDotNode::streamTo):
- (KJS::AssignDotNode::streamTo):
-
-2007-10-29 Oliver Hunt <oliver@apple.com>
-
- Debranching various Node::evaluate implementations
-
- Reviewed by Maciej.
-
- Split the read-modify-write assignment cases out of AssignResolveNode and into ReadModifyResolveNode
- Split the increment and decrement cases for Prefix- and Postfix- ResolveNode, BracketNode, and DotNode
-
- Gains 1.6% on SunSpider
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::PostIncResolveNode::optimizeVariableAccess):
- (KJS::PostIncResolveNode::evaluate):
- (KJS::PostIncLocalVarNode::evaluate):
- (KJS::PostDecResolveNode::optimizeVariableAccess):
- (KJS::PostDecResolveNode::evaluate):
- (KJS::PostDecLocalVarNode::evaluate):
- (KJS::PostIncBracketNode::evaluate):
- (KJS::PostDecBracketNode::evaluate):
- (KJS::PostIncDotNode::evaluate):
- (KJS::PostDecDotNode::evaluate):
- (KJS::PreIncResolveNode::optimizeVariableAccess):
- (KJS::PreIncLocalVarNode::evaluate):
- (KJS::PreIncResolveNode::evaluate):
- (KJS::PreDecResolveNode::optimizeVariableAccess):
- (KJS::PreDecLocalVarNode::evaluate):
- (KJS::PreDecResolveNode::evaluate):
- (KJS::PreIncBracketNode::evaluate):
- (KJS::PreDecBracketNode::evaluate):
- (KJS::PreIncDotNode::evaluate):
- (KJS::PreDecDotNode::evaluate):
- (KJS::ReadModifyResolveNode::optimizeVariableAccess):
- (KJS::AssignResolveNode::optimizeVariableAccess):
- (KJS::AssignLocalVarNode::evaluate):
- (KJS::AssignResolveNode::evaluate):
- * kjs/nodes.h:
- (KJS::PostDecResolveNode::):
- (KJS::PostDecResolveNode::precedence):
- (KJS::PostDecLocalVarNode::):
- (KJS::PostfixBracketNode::):
- (KJS::PostfixBracketNode::precedence):
- (KJS::PostIncBracketNode::):
- (KJS::PostIncBracketNode::isIncrement):
- (KJS::PostDecBracketNode::):
- (KJS::PostDecBracketNode::isIncrement):
- (KJS::PostfixDotNode::):
- (KJS::PostfixDotNode::precedence):
- (KJS::PostIncDotNode::):
- (KJS::PostIncDotNode::isIncrement):
- (KJS::PostDecDotNode::):
- (KJS::PreIncResolveNode::):
- (KJS::PreDecResolveNode::):
- (KJS::PreDecResolveNode::precedence):
- (KJS::PreDecLocalVarNode::):
- (KJS::PrefixBracketNode::):
- (KJS::PrefixBracketNode::precedence):
- (KJS::PreIncBracketNode::):
- (KJS::PreIncBracketNode::isIncrement):
- (KJS::PreDecBracketNode::):
- (KJS::PreDecBracketNode::isIncrement):
- (KJS::PrefixDotNode::):
- (KJS::PrefixDotNode::precedence):
- (KJS::PreIncDotNode::):
- (KJS::PreIncDotNode::isIncrement):
- (KJS::PreDecDotNode::):
- (KJS::ReadModifyResolveNode::):
- (KJS::ReadModifyLocalVarNode::):
- (KJS::AssignResolveNode::):
- (KJS::AssignResolveNode::precedence):
- * kjs/nodes2string.cpp:
- (KJS::PostIncResolveNode::streamTo):
- (KJS::PostDecResolveNode::streamTo):
- (KJS::PostfixBracketNode::streamTo):
- (KJS::PostfixDotNode::streamTo):
- (KJS::PreIncResolveNode::streamTo):
- (KJS::PreDecResolveNode::streamTo):
- (KJS::ReadModifyResolveNode::streamTo):
- (KJS::AssignResolveNode::streamTo):
-
-2007-10-29 Maciej Stachowiak <mjs@apple.com>
-
- Not reviewed, build fix.
-
- - Include Vector.h in a way that actually works.
-
- * kjs/LocalStorage.h:
-
-2007-10-29 Maciej Stachowiak <mjs@apple.com>
-
- Not reviewed, build fix.
-
- - Install LocalStorage.h as a private header.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2007-10-29 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin.
-
- - Define good VectorTraits for LocalStorage entry for 0.5% speed improvement on SunSpider.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/LocalStorage.h: Added.
- (KJS::LocalStorageEntry::LocalStorageEntry):
- (WTF::):
- * kjs/function.h:
- * kjs/nodes.cpp:
- (KJS::FunctionBodyNode::processDeclarationsForFunctionCode):
-
-2007-10-29 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Some small tweaks that I notice while reviewing Oliver's last patch.
-
- Includes removal of an unnecessary KJS_CHECKEXCEPTIONVALUE.
-
- No change in SunSpider because SunSpider doesn't take the code path that
- would execute the unnecessary KJS_CHECKEXCEPTIONVALUE much.
-
- * kjs/nodes.cpp:
- (KJS::LocalVarPostfixNode::evaluate):
- (KJS::TypeOfResolveNode::optimizeVariableAccess):
- (KJS::LocalVarTypeOfNode::evaluate):
- (KJS::PrefixResolveNode::optimizeVariableAccess):
- (KJS::LocalVarPrefixNode::evaluate):
- (KJS::AssignResolveNode::optimizeVariableAccess):
- (KJS::LocalVarAssignNode::evaluate):
- * kjs/nodes.h:
- (KJS::LocalVarTypeOfNode::):
- (KJS::PrefixResolveNode::):
- (KJS::LocalVarPrefixNode::):
- (KJS::AssignResolveNode::):
- (KJS::LocalVarAssignNode::):
-
-2007-10-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- SunSpider claims this was a 0.7% speedup.
-
- * kjs/string_object.cpp:
- (KJS::StringProtoFunc::callAsFunction): avoid mallocing a jsString in the common case
-
-2007-10-29 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Mark.
-
- - re-enable asserts for access to empty or deleted keys
-
- * wtf/HashTable.h:
- (WTF::::lookup):
- (WTF::::lookupForWriting):
- (WTF::::fullLookupForWriting):
- (WTF::::add):
-
-2007-10-29 Eric Seidel <eric@webkit.org>
-
- Build fix only, no review.
-
- * JavaScriptCore.exp: Export symbol for new StringInstance::getOwnPropertySlot
-
-2007-10-29 Mark Rowe <mrowe@apple.com>
-
- Gtk build fix. Move struct declarations into nodes.h.
-
- * kjs/grammar.y:
- * kjs/nodes.h:
-
-2007-10-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by darin.
-
- Give StringInstance a getOwnPropertySlot(ExecState, unsigned, PropertySlot) fastpath, just like Arrays.
- Make it a compile time error to use toString(ExecState) on a StringInstance
-
- SunSpider claims this was a 6.6% speedup overall (22% on string-base64)
-
- * kjs/internal.h:
- (KJS::StringImp::getLength):
- * kjs/string_object.cpp:
- (KJS::StringInstance::lengthGetter):
- (KJS::StringInstance::inlineGetOwnPropertySlot):
- (KJS::StringInstance::getOwnPropertySlot):
- * kjs/string_object.h:
-
-2007-10-28 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Darin.
-
- Add nodes to allow Assignment, TypeOf, and prefix operators to
- make use of the new optimised local variable look up.
-
- 5% gain on sunspider
-
- * kjs/nodes.cpp:
- (KJS::TypeOfResolveNode::optimizeVariableAccess):
- (KJS::LocalTypeOfAccessNode::evaluate):
- (KJS::PrefixResolveNode::optimizeVariableAccess):
- (KJS::PrefixLocalAccessNode::evaluate):
- (KJS::AssignResolveNode::optimizeVariableAccess):
- (KJS::AssignLocalAccessNode::evaluate):
- * kjs/nodes.h:
- (KJS::TypeOfResolveNode::):
- (KJS::TypeOfResolveNode::precedence):
- (KJS::LocalTypeOfAccessNode::):
- (KJS::PrefixResolveNode::):
- (KJS::PrefixResolveNode::precedence):
- (KJS::PrefixLocalAccessNode::):
- (KJS::AssignResolveNode::):
- (KJS::AssignLocalAccessNode::):
-
-2007-10-28 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin.
-
- - avoid creating and then breaking circular lists in the parser, instead track head and tail pointers at parse time
- http://bugs.webkit.org/show_bug.cgi?id=15748
-
- Not a significant speedup or slowdown on SunSpider.
-
- * kjs/Parser.cpp:
- (KJS::clearNewNodes):
- * kjs/Parser.h:
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::BlockNode::BlockNode):
- (KJS::CaseBlockNode::CaseBlockNode):
- (KJS::FunctionBodyNode::FunctionBodyNode):
- (KJS::SourceElementsNode::SourceElementsNode):
- (KJS::ProgramNode::ProgramNode):
- * kjs/nodes.h:
- (KJS::ElementNode::):
- (KJS::ArrayNode::):
- (KJS::PropertyListNode::):
- (KJS::ObjectLiteralNode::):
- (KJS::ArgumentListNode::):
- (KJS::ArgumentsNode::):
- (KJS::VarDeclListNode::):
- (KJS::VarStatementNode::):
- (KJS::ForNode::):
- (KJS::ParameterNode::):
- (KJS::FuncExprNode::):
- (KJS::FuncDeclNode::):
- (KJS::SourceElementsNode::):
- (KJS::CaseClauseNode::):
- (KJS::ClauseListNode::):
-
-2007-10-28 Mark Rowe <mrowe@apple.com>
-
- Disable assertions in a manner that doesn't break the Qt Windows build.
-
- * wtf/HashTable.h:
- (WTF::::lookup):
- (WTF::::lookupForWriting):
- (WTF::::fullLookupForWriting):
-
-2007-10-28 Geoffrey Garen <ggaren@apple.com>
-
- Temporarily disabling some ASSERTs I introduced in my last check-in
- because of http://bugs.webkit.org/show_bug.cgi?id=15747
- Lots of layout tests fail the !HashTranslator::equal(KeyTraits::emptyValue() ASSERT
-
- * wtf/HashTable.h:
- (WTF::::lookup):
- (WTF::::lookupForWriting):
- (WTF::::fullLookupForWriting):
- (WTF::::add):
-
-2007-10-28 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Fixed http://bugs.webkit.org/show_bug.cgi?id=15746
- #ifndef ASSERT_DISABLED is no good!
-
- Replaced with #if !ASSERT_DISABLED.
-
- * wtf/HashTable.h:
- (WTF::::lookup):
- (WTF::::lookupForWriting):
- (WTF::::fullLookupForWriting):
- (WTF::::add):
-
-2007-10-28 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Added FunctionCallResolveNode, PostfixResolveNode, and DeleteResolveNode
- to the AST transfom that replaces slow resolve nodes with fast local
- variable alternatives.
-
- 2.5% speedup on SunSpider.
-
- Also added some missing copyright notices.
-
- * kjs/nodes.cpp:
- (KJS::FunctionCallResolveNode::optimizeVariableAccess):
- (KJS::FunctionCallResolveNode::evaluate):
- (KJS::LocalVarFunctionCallNode::evaluate):
- (KJS::PostfixResolveNode::optimizeVariableAccess):
- (KJS::PostfixResolveNode::evaluate):
- (KJS::LocalVarPostfixNode::evaluate):
- (KJS::DeleteResolveNode::optimizeVariableAccess):
- (KJS::DeleteResolveNode::evaluate):
- (KJS::LocalVarDeleteNode::evaluate):
- * kjs/nodes.h:
- (KJS::FunctionCallResolveNode::):
- (KJS::LocalVarFunctionCallNode::LocalVarFunctionCallNode):
- (KJS::PostfixResolveNode::):
- (KJS::LocalVarPostfixNode::LocalVarPostfixNode):
- (KJS::DeleteResolveNode::):
- (KJS::LocalVarDeleteNode::LocalVarDeleteNode):
-
-2007-10-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by darin.
-
- Inline UString::Rep::deref() for a 0.8% improvement in SunSpider
- Add virtual keyword to a few virtual functions previously unmarked.
-
- * kjs/internal.h:
- (KJS::StringImp::type):
- (KJS::NumberImp::type):
- * kjs/ustring.h:
- (KJS::UString::Rep::deref):
-
-2007-10-28 Darin Adler <darin@apple.com>
-
- - fix "broken everything" from the storage leak fix
-
- * wtf/RefPtr.h: (WTF::RefPtr::RefPtr): Added a PlacementNewAdopt constructor.
- * kjs/ustring.h: (KJS::UString::UString): Pass PlacementNewAdopt along to RefPtr.
-
-2007-10-28 Darin Adler <darin@apple.com>
-
- Reviewed by Adam.
-
- - turn on unused parameter waring on Mac OS X because it's already on elsewhere
-
- * Configurations/Base.xcconfig: Took out -wno-unused-parameter.
-
- * API/JSNode.c:
- * API/JSNodeList.c:
- * API/minidom.c:
- * API/testapi.c:
- Fixed unused variables by using them or marked them with UNUSED_PARAM.
-
- * kjs/CollectorHeapIntrospector.h: (KJS::CollectorHeapIntrospector::zoneCalloc):
- Removed parameter names to indicate they are unused.
-
-2007-10-28 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - fix a storage leak where we ref the UString every time we replace
- a ResolveNode with a LocalVarAccessNode
-
- * kjs/identifier.h: (KJS::Identifier::Identifier): Added a constructor
- that takes PlacementNewAdopt.
-
- * kjs/nodes.h: (KJS::ResolveNode::ResolveNode): Initialize the ident
- with PlacementNewAdopt instead of the old value of ident.
-
- * kjs/ustring.h: (KJS::UString::UString): Added a constructor that
- takes PlacementNewAdopt.
-
-2007-10-28 Darin Adler <darin@apple.com>
-
- - Windows build fix; get rid of unused parameter
-
- * kjs/nodes.cpp: (KJS::ResolveNode::optimizeVariableAccess): Don't pass it.
- * kjs/nodes.h: (KJS::LocalVarAccessNode::LocalVarAccessNode): Remove it.
- The assertions weren't all that helpful.
-
-2007-10-28 Mark Rowe <mrowe@apple.com>
-
- Gtk build fix. Add include of MathExtras.h.
-
- * kjs/string_object.cpp:
-
-2007-10-28 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Maciej and Tim.
-
- Replace uses of isNaN and isInf with isnan and isinf, and
- remove isNaN and isInf.
-
- * kjs/config.h: Remove unused HAVE_'s.
- * kjs/date_object.cpp:
- (KJS::DateInstance::getTime):
- (KJS::DateInstance::getUTCTime):
- (KJS::DateProtoFunc::callAsFunction):
- (KJS::DateObjectImp::construct):
- (KJS::DateObjectFuncImp::callAsFunction):
- * kjs/function.cpp:
- (KJS::GlobalFuncImp::callAsFunction):
- * kjs/math_object.cpp:
- (MathFuncImp::callAsFunction):
- * kjs/nodes2string.cpp:
- (KJS::isParserRoundTripNumber):
- * kjs/number_object.cpp:
- (NumberProtoFunc::callAsFunction):
- * kjs/operations.cpp:
- * kjs/operations.h:
- * kjs/string_object.cpp:
- (KJS::StringProtoFunc::callAsFunction):
- * kjs/ustring.cpp:
- (KJS::UString::from):
- * kjs/value.cpp:
- (KJS::JSValue::toInteger):
- (KJS::JSValue::toInt32SlowCase):
- (KJS::JSValue::toUInt32SlowCase):
-
-2007-10-28 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: use the new-fangled missingSymbolMarker().
-
- * kjs/nodes.cpp:
- (KJS::ResolveNode::optimizeVariableAccess):
- * kjs/nodes.h:
- (KJS::LocalVarAccessNode::LocalVarAccessNode):
-
-2007-10-28 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak, Darin Adler.
-
- Much supporting work done by Maciej Stachowiak, Maks Orlovich, and
- Cameron Zwarich.
-
- AST transfom to replace slow resolve nodes with fast local variable
- alternatives that do direct memory access. Currently, only ResolveNode
- provides a fast local variable alternative. 6 others are soon to come.
-
- 16.7% speedup on SunSpider.
-
- Most of this patch is just scaffolding to support iterating all the
- resolve nodes in the AST through optimizeResolveNodes(). In
- optimizeResolveNodes(), most classes just push their child nodes onto
- the processing stack, while ResolveNodes actually replace themselves in
- the tree with more optimized alternatives, if possible.
-
- Here are the interesting bits:
-
- * kjs/nodes.h: Added PlacementNewAdoptTag, along with implementations
- in Node and ResolveNode. This tag allows you to use placement new to
- swap out a base class Node in favor of a subclass copy that holds the
- same data. (Without this tag, default initialization would NULL out
- RefPtrs, change line numbers, etc.)
-
- * kjs/nodes.cpp:
- (KJS::ResolveNode::evaluate): Since we're taking the slow path, ASSERT
- that the fast path is impossible, to make sure we didn't leave anything
- on the table.
-
- (KJS::FunctionBodyNode::optimizeResolveNodes): Here's where the AST
- transformation happens.
-
- (KJS::ResolveNode::optimizeResolveNodes): Here's where the ResolveNode
- optimization happens.
-
- * kjs/function.h: Added symbolTable() accessor for, for the sake of
- an ASSERT.
-
-2007-10-28 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Maciej.
-
- Fix "AllInOneFile.o has a global initializer in it".
-
- Some versions of gcc generate a global initializer for std::numeric_limits<size_t>::max().
- We can avoid this by moving it inside an inline function.
-
- * kjs/SymbolTable.h:
- (KJS::missingSymbolMarker):
- * kjs/function.cpp:
- (KJS::ActivationImp::getOwnPropertySlot):
- (KJS::ActivationImp::put):
-
-2007-10-28 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Mark.
-
- - Added assertions to protect against adding empty or deleted keys to a HashTable
-
- * wtf/HashTable.h:
- (WTF::HashTable::lookup):
- (WTF::HashTable::lookupForWriting):
- (WTF::HashTable::fullLookupForWriting):
- (WTF::HashTable::add):
-
-2007-10-28 Darin Adler <darin@apple.com>
-
- - fix GTK build
-
- * kjs/nodes2string.cpp: (KJS::isParserRoundTripNumber):
- Use isNaN and isInf instead of isnan and isinf.
-
-2007-10-28 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15735
- remove GroupNode to simplify AST and possibly get a modest speedup
-
- This patch removes 4 node types: GroupNode, PropertyNameNode,
- FunctionCallParenBracketNode, and FunctionCallParenDotNode.
-
- To remove GroupNode, we add knowledge of precedence to the tree nodes,
- and use that when serializing to determine where parentheses are needed.
- This means we no longer have to represent parentheses in the tree.
-
- The precedence values are named after productions in the grammar from the
- JavaScript standard.
-
- SunSpider says this is an 0.4% speedup.
-
- * kjs/function.h:
- * kjs/function.cpp: Removed escapeStringForPrettyPrinting -- it's part of
- serialization, so I moved it to the file that takes care of that.
-
- * kjs/grammar.y: Changed makeGetterOrSetterPropertyNode to use 0 to
- indicate failure instead of a separate boolean. Got rid of PropertyNameNode
- by merging the PropertyName rule into the Property rule (which was easier
- than figuring out how to pass the Identifier from one node to another).
- Got rid of GroupNode, nodeInsideAllParens(), FunctionCallParenBracketNode,
- and FunctionCallParenDotNode.
-
- * kjs/nodes.h: Removed unused forward declarations and Operator values.
- Added Precedence enum, and precedence function to all nodes. Removed
- nodeInsideAllParens. Added streamBinaryOperator function for serialization.
- Removed GroupNode and PropertyNameNode. Made PropertyNode store an Identifier.
- Removed FunctionCallParenBracketNode and FunctionCallParenDotNode.
-
- * kjs/nodes.cpp: Removed Node::nodinsideAllParens, GroupNode, and PropertyNameNode.
- (KJS::PropertyListNode::evaluate): Changed code to get name directly instead
- of converting it from an Identifier to a jsString then back to a UString
- then into an Identifier again!
-
- * kjs/nodes2string.cpp: Changed special-token implementation to use a separate
- function for each of Endl, Indent, Unindent, and DotExpr instead of using a
- single function with a switch. Added a precedence that you can stream in, to
- cause the next node serialized to add parentheses based on that precedence value.
- (KJS::operatorString): Moved to the top of the file.
- (KJS::escapeStringForPrettyPrinting): Moved here from function.cpp. Removed old
- workaround for snprintf, since StringExtras.h takes care of that.
- (KJS::operator<<): Made the char and char* versions faster by using UString's
- character append functions instead of constructing a UString. Added the logic
- to the Node* version to add parentheses if needed.
- (KJS::Node::streamLeftAssociativeBinaryOperator): Added helper function.
- (KJS::ElementNode::streamTo): Use PrecAssignment for the elements.
- (KJS::BracketAccessorNode::streamTo): Use PrecCall for the expression before
- the bracket.
- (KJS::DotAccessorNode::streamTo): Use PrecCall for the expression before the dot.
- (KJS::ArgumentListNode::streamTo): Use PrecAssignment for the arguments.
- (KJS::NewExprNode::streamTo): Use PrecMember for the expression.
- (KJS::FunctionCallValueNode::streamTo): Use PrecCall.
- (KJS::FunctionCallBracketNode::streamTo): Ditto.
- (KJS::FunctionCallDotNode::streamTo): Ditto.
- (KJS::PostfixBracketNode::streamTo): Ditto.
- (KJS::PostfixDotNode::streamTo): Ditto.
- (KJS::PostfixErrorNode::streamTo): Use PrecLeftHandSide.
- (KJS::DeleteBracketNode::streamTo): Use PrecCall.
- (KJS::DeleteDotNode::streamTo): Ditto.
- (KJS::DeleteValueNode::streamTo): Use PrecUnary.
- (KJS::VoidNode::streamTo): Ditto.
- (KJS::TypeOfValueNode::streamTo): Ditto.
- (KJS::PrefixBracketNode::streamTo): Use PrecCall.
- (KJS::PrefixDotNode::streamTo): Ditto.
- (KJS::PrefixErrorNode::streamTo): Use PrecUnary.
- (KJS::UnaryPlusNode::streamTo): Ditto.
- (KJS::NegateNode::streamTo): Ditto.
- (KJS::BitwiseNotNode::streamTo): Ditto.
- (KJS::LogicalNotNode::streamTo): Ditto.
- (KJS::MultNode::streamTo): Use streamLeftAssociativeBinaryOperator.
- (KJS::DivNode::streamTo): Ditto.
- (KJS::ModNode::streamTo): Ditto.
- (KJS::AddNode::streamTo): Ditto.
- (KJS::SubNode::streamTo): Ditto.
- (KJS::LeftShiftNode::streamTo): Ditto.
- (KJS::RightShiftNode::streamTo): Ditto.
- (KJS::UnsignedRightShiftNode::streamTo): Ditto.
- (KJS::LessNode::streamTo): Ditto.
- (KJS::GreaterNode::streamTo): Ditto.
- (KJS::LessEqNode::streamTo): Ditto.
- (KJS::GreaterEqNode::streamTo): Ditto.
- (KJS::InstanceOfNode::streamTo): Ditto.
- (KJS::InNode::streamTo): Ditto.
- (KJS::EqualNode::streamTo): Ditto.
- (KJS::NotEqualNode::streamTo): Ditto.
- (KJS::StrictEqualNode::streamTo): Ditto.
- (KJS::NotStrictEqualNode::streamTo): Ditto.
- (KJS::BitAndNode::streamTo): Ditto.
- (KJS::BitXOrNode::streamTo): Ditto.
- (KJS::BitOrNode::streamTo): Ditto.
- (KJS::LogicalAndNode::streamTo): Ditto.
- (KJS::LogicalOrNode::streamTo): Ditto.
- (KJS::ConditionalNode::streamTo): Ditto.
- (KJS::AssignResolveNode::streamTo): Use PrecAssignment for the right side.
- (KJS::AssignBracketNode::streamTo): Use PrecCall for the expression before
- the bracket and PrecAssignment for the right side.
- (KJS::AssignDotNode::streamTo): Ditto.
- (KJS::AssignErrorNode::streamTo): Use PrecLeftHandSide for the left side
- and PrecAssignment for the right side.
- (KJS::CommaNode::streamTo): Use PrecAssignment for both expressions.
- (KJS::AssignExprNode::streamTo): Use PrecAssignment.
-
-2007-10-28 Kevin Ollivier <kevino@theolliviers.com>
-
- Define wx port and set wx port USE options.
-
- Reviewed by Adam Roben.
-
- * wtf/Platform.h:
-
-2007-10-28 Mark Rowe <mrowe@apple.com>
-
- We don't include "config.h" in headers.
-
- * bindings/jni/jni_instance.h:
- * kjs/regexp.h:
- * wtf/TCPageMap.h:
- * wtf/TCSpinLock.h:
-
-2007-10-28 Maciej Stachowiak <mjs@apple.com>
-
- Rubber stamped by Mark.
-
- - avoid using non-portable SIZE_T_MAX in favor of std::numeric_limits
-
- * kjs/SymbolTable.h:
- (KJS::SymbolTableIndexHashTraits::emptyValue):
- * kjs/function.cpp:
- (KJS::ActivationImp::getOwnPropertySlot):
- (KJS::ActivationImp::put):
-
-2007-10-28 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Eric.
-
- - switch SymbolTable to be a HashMap instead of a PropertyMap for 3% SunSpider speedup
-
- * kjs/SymbolTable.h:
- (KJS::IdentifierRepHash::hash): Special hash function for identifier reps.
- (KJS::IdentifierRepHash::equal): ditto
- (KJS::SymbolTableIndexHashTraits::emptyValue): Special HashTraits for the index value.
- (KJS::SymbolTable): change to a typedef for a HashMap.
- * kjs/function.cpp:
- (KJS::ActivationImp::getOwnPropertySlot): Adjusted for new SymbolTable API.
- (KJS::ActivationImp::deleteProperty): ditto
- (KJS::ActivationImp::put): ditto
-
- * kjs/nodes.cpp:
- (KJS::FunctionBodyNode::initializesymbolTable): Adjusted, since
- you now have to store a UString::rep, not an identifier.
-
-2007-10-27 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - numerous HashTable performance improvements
-
- This does not quite add up to a measurable win on SunSpider, but it allows a
- follow-on > 3% improvement and probably helps WebCore too.
-
- I made the following improvements, among others:
-
- - Made HashFunctions note whether it is ok to compare a real value with the equal() function
- to the empty or deleted value, and used this to optimize the comparisons done in hash lookup.
-
- - Specialized lookup so it doesn't have to do so many extra branches and build so many extra
- std::pairs for cases that don't need them. There are now four versions, one for read-only access,
- two for writing, and one folded directly into add() (these all were improvments).
-
- - Made HashMap::get() use lookup() directly instead of find() to avoid having to build iterators.
-
- - Made a special constructor for iterators that knows it points to
- a valid filled cell and so skips updating itself.
-
- - Reordered memory accesses in the various lookup functions for better code generation
-
- - Made simple translators avoid passing a hash code around
-
- - Other minor tweaks
-
- * wtf/HashTable.h:
- (WTF::):
- (WTF::HashTableConstIterator::HashTableConstIterator):
- (WTF::HashTableIterator::HashTableIterator):
- (WTF::IdentityHashTranslator::translate):
- (WTF::HashTable::end):
- (WTF::HashTable::lookup):
- (WTF::HashTable::lookupForWriting):
- (WTF::HashTable::makeKnownGoodIterator):
- (WTF::HashTable::makeKnownGoodConstIterator):
- (WTF::::lookup):
- (WTF::::lookupForWriting):
- (WTF::::fullLookupForWriting):
- (WTF::::add):
- (WTF::::addPassingHashCode):
- (WTF::::reinsert):
- (WTF::::find):
- (WTF::::contains):
- * kjs/identifier.cpp:
- (WTF::):
- * wtf/HashFunctions.h:
- (WTF::):
- * wtf/HashMap.h:
- (WTF::):
- (WTF::::get):
- * wtf/HashSet.h:
- (WTF::):
- (WTF::::add):
- * wtf/ListHashSet.h:
- (WTF::ListHashSetTranslator::translate):
-
-2007-10-27 Darin Adler <darin@apple.com>
-
- Reviewed by Eric.
-
- - fix ASCIICType.h for some Windows compiles
-
- * wtf/ASCIICType.h: Check the compiler, not the OS, since it's the
- compiler/library that has the wchar_t that is just a typedef.
-
-2007-10-27 Kevin McCullough <kmccullough@apple.com>
-
- - BuildFix
- - Forgot to change the build step when I changed the filename.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
-
-2007-10-27 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Fixed the rest of "ASSERTION FAILED: _hash in KJS::UString::Rep::
- computedHash()"
- http://bugs.webkit.org/show_bug.cgi?id=15718
-
- * kjs/identifier.cpp: Fixed more cases where an Identifier didn't get a
- hash value. Also changed O(n) strlen to O(1) check for empty string.
- (KJS::Identifier::add):
-
- * kjs/ustring.cpp: Changed O(n) strlens to O(1) checks for empty string.
- (KJS::UString::UString):
- (KJS::UString::operator=):
-
-2007-10-27 Darin Adler <darin@apple.com>
-
- Reviewed by Eric.
-
- - fix pow on Windows
-
- * wtf/MathExtras.h: (wtf_pow): Add a special case for MSVC, which has
- a "pow" function that does not properly handle the case where arg1 is
- NaN and arg2 is 0.
-
- * kjs/math_object.cpp: (MathFuncImp::callAsFunction): Don't explicity
- specify "::pow" -- just "pow" is fine.
-
-2007-10-27 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15711
- force JSImmediate to be inlined for roughly 1.2% SunSpider speedup
-
- * kjs/JSImmediate.h: Put ALWAYS_INLINE on everything.
-
- * kjs/object.h: Removed redundant includes.
- * kjs/value.h: Ditto.
-
-2007-10-27 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Mark.
-
- - fixed "ASSERTION FAILED: _hash in KJS::UString::Rep::computedHash()"
- http://bugs.webkit.org/show_bug.cgi?id=15718
-
- * kjs/identifier.cpp:
- (KJS::Identifier::addSlowCase): Ensure that empty Identifiers have a hash computed,
- now that we count on all Identifiers already having one.
-
-2007-10-27 Mark Rowe <mrowe@apple.com>
-
- Silence a warning.
-
- * kjs/SymbolTable.h:
-
-2007-10-27 Mark Rowe <mrowe@apple.com>
-
- Gtk build fix.
-
- * kjs/function.h:
-
-2007-10-26 Kevin McCullough <kmccullough@apple.com>
-
- Rubber stamp by Adam.
-
- - Renamed JSStringRefCOM to JSStringRefBSTR since it he only thing the
- files contain are functions that operate on BSTRs.
-
- * API/JSStringRefBSTR.cpp: Copied from API/JSStringRefCOM.cpp.
- * API/JSStringRefBSTR.h: Copied from API/JSStringRefCOM.h.
- * API/JSStringRefCOM.cpp: Removed.
- * API/JSStringRefCOM.h: Removed.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
-
-2007-10-26 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - Made JSStringCreateWithBSTR capable of handling null BSTRs.
-
- * API/JSStringRefCOM.cpp:
- (JSStringCreateWithBSTR):
-
-2007-10-26 Sam Weinig <sam@webkit.org>
-
- Windows build fix.
-
- * kjs/SymbolTable.h: Add header gaurd.
- * kjs/nodes.h: #include "SymbolTable.h"
-
-2007-10-26 Geoffrey Garen <ggaren@apple.com>
-
- Suggested by Anders Carlsson.
-
- Fixed tyop.
-
- * kjs/function.cpp:
- (KJS::ActivationImp::getOwnPropertySlot):
-
-2007-10-26 Geoffrey Garen <ggaren@apple.com>
-
- Suggested by Darin Adler.
-
- Use computedHash(), which is safer than just directly accessing _hash.
-
- * kjs/lookup.cpp:
- (KJS::Lookup::findEntry):
- (KJS::Lookup::find):
-
-2007-10-26 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: svn add SymbolTable.h
-
- * kjs/SymbolTable.h: Added.
- (KJS::SymbolTable::set):
- (KJS::SymbolTable::get):
-
-2007-10-26 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: export SymbolTable.h to WebCore.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
-
-2007-10-26 Geoffrey Garen <ggaren@apple.com>
-
- Comment tweak suggested by Maciej.
-
- * kjs/function.cpp:
- (KJS::ActivationImp::getOwnPropertySlot):
-
-2007-10-26 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Tweaked property maps to remove 2 branches. 2.5% speedup on SunSpider.
-
- * kjs/property_map.cpp: Use a special no branch accessor to the UString's
- hash value. Also, return immediately instead of branching to the end
- of the loop if the value is not found.
- (KJS::PropertyMap::get):
- (KJS::PropertyMap::getLocation):
- (KJS::PropertyMap::put):
- (KJS::PropertyMap::insert):
- (KJS::PropertyMap::remove):
- (KJS::PropertyMap::checkConsistency):
-
- * kjs/ustring.h:
- (KJS::UString::Rep::computedHash): Special no branch accessor to the
- UString's hash value. Used when the caller knows that the hash value
- has already been computed. (For example, if the caller got the UString
- from an Identifier.)
-
-2007-10-26 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Switched ActivationImp to using a symbol table. For now, though, all
- clients take the slow path.
-
- Net .6% speedup on SunSpider.
-
- Slowdowns:
- - ActivationImp now mallocs in its constructor
- - Local variable hits use an extra level of indirection to retrieve
- data
- - Local variable misses do two lookups
-
- Speedups:
- - Fast initialization of local variables upon function entry
-
- * JavaScriptCore.xcodeproj/project.pbxproj: Added SymbolTable.h
-
- * kjs/function.cpp:
- (KJS::ActivationImp::ActivationImp): Malloc a private structure to hold
- data that won't fit in a JSCell.
- (KJS::ActivationImp::argumentsGetter): Use slow symbol table path for
- lookup.
- (KJS::ActivationImp::getOwnPropertySlot): ditto
- (KJS::ActivationImp::deleteProperty): ditto
- (KJS::ActivationImp::put): ditto
- (KJS::ActivationImp::createArgumentsObject): ditto
-
- (KJS::ActivationImp::mark): Call JSObject::mark first so that one of
- our properties doesn't try to recursively mark us. (This caused a crash
- in earlier testing. Not sure why we haven't run into it before.)
-
- * kjs/nodes.cpp: Functions now build a symbol table the first time
- they're called.
- (KJS::VarDeclNode::evaluate):
- (KJS::FunctionBodyNode::FunctionBodyNode):
- (KJS::FunctionBodyNode::initializeSymbolTable):
- (KJS::FunctionBodyNode::processDeclarations):
- (KJS::FunctionBodyNode::processDeclarationsForFunctionCode):
- (KJS::FunctionBodyNode::processDeclarationsForProgramCode):
-
- * kjs/nodes.h:
- (KJS::FunctionBodyNode::symbolTable):
-
- * wtf/Forward.h: Added Vector.
-
-2007-10-26 Kevin McCullough <kmccullough@apple.com>
-
- - Corrected function name mistake in this changelog.
-
-2007-10-26 Kevin McCullough <kmccullough@apple.com>
- Reviewed by Sam and Steve.
-
- - Added convenience methods for converting between BSTR and JSStringRefs
-
- * API/JSStringRefCOM.cpp: Added.
- (JSStringCreateWithBSTR):
- (JSStringCopyBSTR):
- * API/JSStringRefCOM.h: Added.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
-
-2007-10-26 Mark Rowe <mrowe@apple.com>
-
- Windows build fix.
-
- * kjs/collector.cpp:
- (KJS::Collector::collect):
-
-2007-10-26 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Make the JSC GC use a separate heap for JSNumbers to get a 0.7-1.4% progression in SunSpider.
-
- * kjs/CollectorHeapIntrospector.cpp:
- (KJS::CollectorHeapIntrospector::init):
- (KJS::CollectorHeapIntrospector::enumerate):
- * kjs/CollectorHeapIntrospector.h:
- * kjs/collector.cpp:
- (KJS::Collector::recordExtraCost):
- (KJS::Collector::heapAllocate):
- (KJS::Collector::allocate):
- (KJS::Collector::allocateNumber):
- (KJS::Collector::registerThread):
- (KJS::Collector::markStackObjectsConservatively):
- (KJS::Collector::markMainThreadOnlyObjects):
- (KJS::Collector::sweep):
- (KJS::Collector::collect):
- * kjs/collector.h:
- * kjs/internal.h:
- (KJS::NumberImp::operator new):
- Force numbers to be allocated in the secondary heap.
-
-2007-10-26 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - encourage GCC a little harder to inline a few hot functions for 1.5% improvement on SunSpider.
-
- * kjs/value.h:
- (KJS::JSValue::getUInt32):
- (KJS::JSValue::getTruncatedInt32):
- (KJS::JSValue::toNumber):
- * wtf/PassRefPtr.h:
- (WTF::PassRefPtr::~PassRefPtr):
- * wtf/RefPtr.h:
- (WTF::RefPtr::operator->):
-
-2007-10-26 Mark Rowe <mrowe@apple.com>
-
- Gtk build fix.
-
- * kjs/ExecState.h:
-
-2007-10-26 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Mark.
-
- - Merge Context class fully into ExecState, since they are always created and used together.
-
- No measurable performance impact but this is a useful cleanup.
-
- * JavaScriptCore.pri:
- * kjs/ExecState.cpp:
- (KJS::ExecState::ExecState):
- (KJS::ExecState::~ExecState):
- (KJS::ExecState::mark):
- (KJS::ExecState::lexicalInterpreter):
- * kjs/ExecState.h:
- (KJS::ExecState::dynamicInterpreter):
- (KJS::ExecState::setException):
- (KJS::ExecState::clearException):
- (KJS::ExecState::exception):
- (KJS::ExecState::exceptionSlot):
- (KJS::ExecState::hadException):
- (KJS::ExecState::scopeChain):
- (KJS::ExecState::callingExecState):
- (KJS::ExecState::propertyNames):
- * kjs/collector.cpp:
- (KJS::Collector::reportOutOfMemoryToAllInterpreters):
- * kjs/function.cpp:
- (KJS::FunctionImp::callAsFunction):
- (KJS::FunctionImp::argumentsGetter):
- (KJS::FunctionImp::callerGetter):
- (KJS::GlobalFuncImp::callAsFunction):
- * kjs/interpreter.cpp:
- (KJS::Interpreter::Interpreter):
- (KJS::Interpreter::init):
- (KJS::Interpreter::evaluate):
- (KJS::Interpreter::mark):
- * kjs/interpreter.h:
- (KJS::Interpreter::setCurrentExec):
- (KJS::Interpreter::currentExec):
- * kjs/nodes.cpp:
- (KJS::currentSourceId):
- (KJS::currentSourceURL):
- (KJS::ThisNode::evaluate):
- (KJS::ResolveNode::evaluate):
- (KJS::FunctionCallResolveNode::evaluate):
- (KJS::PostfixResolveNode::evaluate):
- (KJS::DeleteResolveNode::evaluate):
- (KJS::TypeOfResolveNode::evaluate):
- (KJS::PrefixResolveNode::evaluate):
- (KJS::AssignResolveNode::evaluate):
- (KJS::VarDeclNode::evaluate):
- (KJS::DoWhileNode::execute):
- (KJS::WhileNode::execute):
- (KJS::ForNode::execute):
- (KJS::ForInNode::execute):
- (KJS::ContinueNode::execute):
- (KJS::BreakNode::execute):
- (KJS::ReturnNode::execute):
- (KJS::WithNode::execute):
- (KJS::SwitchNode::execute):
- (KJS::LabelNode::execute):
- (KJS::TryNode::execute):
- (KJS::FunctionBodyNode::processDeclarationsFunctionCode):
- (KJS::FunctionBodyNode::processDeclarationsProgramCode):
- (KJS::FunctionBodyNode::processDeclarations):
- (KJS::FuncDeclNode::makeFunction):
- (KJS::FuncExprNode::evaluate):
-
-2007-10-26 Mark Rowe <mrowe@apple.com>
-
- Windows build fix.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
-
-2007-10-26 Mark Rowe <mrowe@apple.com>
-
- Gtk build fix.
-
- * JavaScriptCore.pri:
- * kjs/ExecState.cpp:
-
-2007-10-26 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - moved Context class into ExecState.{h,cpp} in preparation for merging
- ExecState and Context classes.
-
- * kjs/ExecState.h: Moved CodeType enum and Context class here in
- preparation for merging ExecState and Context.
- * kjs/ExecState.cpp: Moved Context class here from Context.cpp.
- (KJS::Context::Context):
- (KJS::Context::~Context):
- (KJS::Context::mark):
- * kjs/context.h: Removed.
- * kjs/Context.cpp: Removed.
- * kjs/function.h: Removed CodeType enum.
- * kjs/LabelStack.h: Added. Pulled LabelStack class out of internal.h.
- * kjs/internal.h: Removed LabelStack.
- * JavaScriptCore.xcodeproj/project.pbxproj: Added new file, removed ones that are gone.
- * kjs/collector.cpp: Fixed includes.
- * kjs/function.cpp: ditto
- * kjs/internal.cpp: ditto
- * kjs/interpreter.cpp: ditto
- * kjs/lookup.h: ditto
- * kjs/nodes.cpp: ditto
-
-2007-10-26 Mark Rowe <mrowe@apple.com>
-
- Windows build fix.
-
- * kjs/string_object.cpp:
- (KJS::StringObjectFuncImp::callAsFunction):
-
-2007-10-25 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15703
- fix numeric functions -- improve correctness and speed
-
- Gives about 1% gain on SunSpider.
-
- * kjs/value.h: Added toIntegerPreserveNan, removed toUInt16.
- (KJS::JSValue::toInt32): Changed to call getTruncatedInt32 in a way that works
- with both immediate and number values.
- (KJS::JSValue::toUInt32): Ditto.
- * kjs/value.cpp:
- (KJS::JSValue::toInteger): Moved the logic from roundValue here, with a couple
- differences. One is that it now correctly returns 0 for NaN, and another is that
- there's no special case for 0 or infinity, since the general case already handles
- those correctly.
- (KJS::JSValue::toIntegerPreserveNaN): Added. Like toInteger, but without the
- check for NaN.
- (KJS::JSValue::toInt32SlowCase): Call toNumber instead of roundValue. The
- truncation done by the typecast already does the necessary truncation that
- roundValue was doing.
- (KJS::JSValue::toUInt32SlowCase): Ditto.
- (KJS::JSValue::toUInt16): Removed.
-
- * kjs/internal.h: Removed roundValue.
- * kjs/internal.cpp: Ditto.
-
- * kjs/array_object.cpp: (KJS::ArrayProtoFunc::callAsFunction): Remove unneeded
- code to handle NaN in Array.slice; toInteger now never returns NaN as specified.
-
- * kjs/date_object.cpp:
- (KJS::fillStructuresUsingTimeArgs): Replaced call to roundValue with a call to
- toNumber as specified.
- (KJS::DateProtoFunc::callAsFunction): In SetTime case, replaced call to roundValue
- with a call to toNumber and timeClip as specified.
- (KJS::DateObjectImp::construct): Removed unnecessary checks of numArgs in cases
- where the default behavior of toInt32 (returning 0) was already correct. Replaced
- call to roundValue with a call to toNumber as specified.
- (KJS::DateObjectFuncImp::callAsFunction): Ditto.
-
- * kjs/math_object.cpp: (MathFuncImp::callAsFunction): Removed unnecessary special
- cases for the pow function that the library already handles correctly.
-
- * kjs/number_object.cpp: (NumberProtoFunc::callAsFunction): Changed ToString to
- call toIntegerPreserveNaN, so we can continue to handle the NaN case differently.
- The real toInteger now returns 0 for NaN. Took out unneeded special case in
- ToFixed for undefined; was only needed because our toInteger was wrong. Same
- thing in ToExponential. Changed ToPrecision to call toIntegerPreserveNaN.
-
- * kjs/string_object.cpp:
- (KJS::StringProtoFunc::callAsFunction): Took out CharAt and CharCodeAt special
- cases for undefined that were only needed because toInteger was wrong. Same in
- IndexOf, and was able to remove some special cases. In LastIndexOf, used
- toIntegerPreserveNaN, but was able to remove some special cases there too.
- Changed Substr implementation to preserve correct behavior with the change
- to toInteger and match the specification. Also made sure we weren't converting
- an out of range double to an int.
- (KJS::StringObjectFuncImp::callAsFunction): Changed constructor to just use
- toUInt32, because truncating toUInt32 to 16 bits is the same thing and there's
- no reason to have toUInt16 as a second, less-optimized function that's only
- called at this one call site.
-
- * wtf/MathExtras.h: Added trunc function for Windows.
-
-2007-10-25 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Tweaked the inner hashtable lookup loop to remove a branch in the "not
- found" case. .5% speedup on SunSpider.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * wtf/HashTable.h:
- (WTF::::lookup):
-
-2007-10-25 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - fold together toPrimitive() and toNumber() conversions for 0.5% gain on SunSpider
-
- * kjs/nodes.cpp:
- (KJS::SubNode::evaluate): Subtract directly, since toPrimitive() is not
- adding any value over toNumber() here.
- (KJS::valueForReadModifyAssignment): Ditto.
- (KJS::lessThan): Use new getPrimitiveNumber() method to avoid some virtual calls
- and branches.
- (KJS::lessThanEq): Ditto.
- * JavaScriptCore.exp: Export new functions as needed.
- * kjs/value.h:
- (KJS::JSValue::toPrimitive): Fixed formatting.
- (KJS::JSValue::getPrimitiveNumber): New method - this simultaneously converts
- to number and tells you whether a toPrimitive() conversion with a Number hint
- would have given a string.
- * kjs/internal.cpp:
- (KJS::StringImp::getPrimitiveNumber): Implemented.
- (KJS::NumberImp::getPrimitiveNumber): ditto
- (KJS::GetterSetterImp::getPrimitiveNumber): ditto
- (KJS::StringImp::toPrimitive): Fixed formatting.
- (KJS::NumberImp::toPrimitive): ditto
- (KJS::GetterSetterImp::toPrimitive): ditto
- * kjs/internal.h:
- * kjs/object.cpp:
- (KJS::JSObject::getPrimitiveNumber): Implemented.
- * kjs/object.h:
-
-2007-10-25 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Remove JSStringRefCFHack from windows as it is no longer needed.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
-
-2007-10-25 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Rolled out my last patch. It turns out that I needed 2 words, not 1,
- so it didn't help.
-
-2007-10-25 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fixed http://bugs.webkit.org/show_bug.cgi?id=15694
- Shrink the size of an activation object by 1 word
-
- This is in preparation for adding a symbol table to the activation
- object.
-
- The basic strategy here is to rely on the mutual exclusion between
- the arguments object pointer and the function pointer (you only need
- the latter in order to create the former), and store them in the same
- place. The LazyArgumentsObject class encapsulates this strategy.
-
- Also inlined the ArgumentsImp constructor, for good measure.
-
- SunSpider reports no regression. Regression tests pass.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/Context.cpp:
- (KJS::Context::~Context):
- * kjs/function.cpp:
- (KJS::ActivationImp::LazyArgumentsObject::createArgumentsObject):
- (KJS::ActivationImp::LazyArgumentsObject::mark):
- (KJS::ActivationImp::argumentsGetter):
- (KJS::ActivationImp::mark):
- * kjs/function.h:
- (KJS::ActivationImp::LazyArgumentsObject::LazyArgumentsObject):
- (KJS::ActivationImp::LazyArgumentsObject::getOrCreate):
- (KJS::ActivationImp::LazyArgumentsObject::resetArguments):
- (KJS::ActivationImp::LazyArgumentsObject::setArgumentsObject):
- (KJS::ActivationImp::LazyArgumentsObject::argumentsObject):
- (KJS::ActivationImp::LazyArgumentsObject::setFunction):
- (KJS::ActivationImp::LazyArgumentsObject::function):
- (KJS::ActivationImp::LazyArgumentsObject::createdArgumentsObject):
- (KJS::ActivationImp::LazyArgumentsObject::):
- (KJS::ActivationImp::ActivationImp::ActivationImp):
- (KJS::ActivationImp::resetArguments):
-
-2007-10-25 Adam Roben <aroben@apple.com>
-
- Change JavaScriptCore.vcproj to use DerivedSources.make
-
- We were trying to emulate the logic of make in
- build-generated-files.sh, but we got it wrong. We now use a
- build-generated-files very much like the one that WebCore uses to
- invoke make.
-
- We also now only have a Debug configuration of dftables which we build
- even when doing a Release build of JavaScriptCore. dftables also no
- longer has the "_debug" name suffix.
-
- Changes mostly made by Darin, reviewed by me.
-
- * DerivedSources.make: Add a variable to set the extension used for
- the dftables executable.
- * JavaScriptCore.vcproj/JavaScriptCore.sln: Updated to use Debug
- dftables in Release configurations.
- * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Ditto.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- - Updated include path to point to the new location of the derived
- sources.
- - Modified pre-build event to pass the right arguments to
- build-generated-files.sh and not call dftables directly.
- - Added the derived source files to the project.
- - Removed grammarWrapper.cpp, which isn't needed now that we're
- compiling grammar.cpp directly.
- * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
- Slightly modified from the WebCore version.
- * JavaScriptCore.vcproj/JavaScriptCore/grammarWrapper.cpp: Removed.
- * JavaScriptCore.vcproj/dftables/dftables.vcproj:
- - Changed the output location to match Mac.
- - Removed the Release configuration.
- - Removed the _debug suffix.
-
-2007-10-25 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Eric Seidel.
-
- Slightly elaborated the differences between declaration procesing in
- Function Code and Program Code.
-
- .3% speedup on SunSpider.
-
- * kjs/nodes.cpp:
- (KJS::FunctionBodyNode::processDeclarationsFunctionCode):
- (KJS::FunctionBodyNode::processDeclarationsProgramCode): Store a
- minimum set of attributes instead of recomputing all the time. Also,
- ignore m_parameters, since programs don't have arguments.
-
-2007-10-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- More preparation work before adding long-running mode to testkjs.
-
- * kjs/testkjs.cpp:
- (TestFunctionImp::callAsFunction):
- (prettyPrintScript):
- (runWithScripts):
- (parseArguments):
- (kjsmain):
- (fillBufferWithContentsOfFile):
-
-2007-10-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- Bring testkjs code out of the dark ages in preparation for more
- radical improvements (like long-running testing support!)
-
- * kjs/testkjs.cpp:
- (TestFunctionImp::callAsFunction):
- (setupInterpreter):
- (doIt):
- (fillBufferWithContentsOfFile):
-
-2007-10-25 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Make a fast path for declaration processing inside Function Code.
-
- Lifted declaration processing code up from individual declaration nodes
- and into processDeclarations.
-
- Broke out processDeclarations into two cases, depending on the type of
- code. This eliminates 2 branches, and facilitates more radical
- divergeance in the future.
-
- 2.5% SunSpider speedup.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/nodes.cpp:
- (KJS::FunctionBodyNode::initializeDeclarationStacks):
- (KJS::FunctionBodyNode::processDeclarationsFunctionCode):
- (KJS::FunctionBodyNode::processDeclarationsProgramCode):
- (KJS::FunctionBodyNode::execute):
- (KJS::FuncDeclNode::makeFunction):
- * kjs/nodes.h:
-
-2007-10-25 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Adam.
-
- - add header includes needed on platforms that don't use AllInOneFile.cpp
-
- * API/JSCallbackObject.cpp:
- * kjs/Context.cpp:
- * kjs/ExecState.cpp:
- * kjs/array_instance.cpp:
- * kjs/function_object.cpp:
- * kjs/interpreter.cpp:
- * kjs/nodes.cpp:
-
-2007-10-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Geoff.
-
- * JavaScriptCore.xcodeproj/project.pbxproj: re-mark JSGlobalObject.h as private
-
-2007-10-25 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fixed http://bugs.webkit.org/show_bug.cgi?id=15683
- Re-order declaration initialization to avoid calling hasProperty inside
- VarDeclNode::processDeclaration
-
- .7% speedup on SunSpider.
-
- * kjs/function.h:
- * kjs/function.cpp: Merged parameter processing into FunctionBodyNode's
- other processing of declared symbols, so the order of execution could
- change.
-
- * kjs/nodes.cpp:
- (KJS::VarDeclNode::getDeclarations): Added special case for the
- "arguments" property name, explained in the comment.
-
- (KJS::VarDeclNode::processDeclaration): Removed call to hasProperty
- in the case of function code, since we know the declared symbol
- management will resolve conflicts between symbols. Yay!
-
- (KJS::VarDeclListNode::getDeclarations): Now that VarDeclNode's
- implementation of getDeclarations is non-trivial, we can't take a
- short-cut here any longer -- we need to put the VarDecl node on the
- stack so it gets processed normally.
-
- (KJS::FunctionBodyNode::processDeclarations): Changed the order of
- processing to enforce mutual exclusion rules.
-
- * kjs/nodes.h:
- (KJS::DeclarationStacks::DeclarationStacks): Structure includes an
- ExecState now, for fast access to the "arguments" property name.
-
-2007-10-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- Add a JSGlobalObject class and remove the InterpreterMap
- http://bugs.webkit.org/show_bug.cgi?id=15681
-
- This required making JSCallbackObject a template class to allow for
- JSGlobalObjects with JSCallbackObject functionality.
-
- SunSpider claims this was a 0.5% speedup.
-
- * API/JSCallbackObject.cpp:
- * API/JSCallbackObject.h:
- * API/JSCallbackObjectFunctions.h: Copied from API/JSCallbackObject.cpp.
- (KJS::::JSCallbackObject):
- (KJS::::init):
- (KJS::::~JSCallbackObject):
- (KJS::::initializeIfNeeded):
- (KJS::::className):
- (KJS::::getOwnPropertySlot):
- (KJS::::put):
- (KJS::::deleteProperty):
- (KJS::::implementsConstruct):
- (KJS::::construct):
- (KJS::::implementsHasInstance):
- (KJS::::hasInstance):
- (KJS::::implementsCall):
- (KJS::::callAsFunction):
- (KJS::::getPropertyNames):
- (KJS::::toNumber):
- (KJS::::toString):
- (KJS::::setPrivate):
- (KJS::::getPrivate):
- (KJS::::inherits):
- (KJS::::cachedValueGetter):
- (KJS::::staticValueGetter):
- (KJS::::staticFunctionGetter):
- (KJS::::callbackGetter):
- * API/JSClassRef.cpp:
- (OpaqueJSClass::prototype):
- * API/JSContextRef.cpp:
- (JSGlobalContextCreate):
- * API/JSObjectRef.cpp:
- (JSObjectMake):
- (JSObjectGetPrivate):
- (JSObjectSetPrivate):
- * API/JSValueRef.cpp:
- (JSValueIsObjectOfClass):
- * JavaScriptCore.exp:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * bindings/c/c_utility.cpp:
- (KJS::Bindings::convertValueToNPVariant):
- * bindings/jni/jni_jsobject.cpp:
- * bindings/objc/objc_utility.mm:
- (KJS::Bindings::convertValueToObjcValue):
- * kjs/Context.cpp:
- (KJS::Context::Context):
- * kjs/ExecState.cpp:
- (KJS::ExecState::lexicalInterpreter):
- * kjs/JSGlobalObject.h: Added.
- (KJS::JSGlobalObject::JSGlobalObject):
- (KJS::JSGlobalObject::isGlobalObject):
- (KJS::JSGlobalObject::interpreter):
- (KJS::JSGlobalObject::setInterpreter):
- * kjs/array_instance.cpp:
- * kjs/context.h:
- * kjs/function.cpp:
- (KJS::FunctionImp::callAsFunction):
- (KJS::GlobalFuncImp::callAsFunction):
- * kjs/interpreter.cpp:
- (KJS::Interpreter::Interpreter):
- (KJS::Interpreter::init):
- (KJS::Interpreter::~Interpreter):
- (KJS::Interpreter::globalObject):
- (KJS::Interpreter::initGlobalObject):
- (KJS::Interpreter::evaluate):
- * kjs/interpreter.h:
- * kjs/lookup.h:
- (KJS::cacheGlobalObject):
- * kjs/object.h:
- (KJS::JSObject::isGlobalObject):
- * kjs/testkjs.cpp:
-
-2007-10-24 Eric Seidel <eric@webkit.org>
-
- Build fix for Gtk, no review.
-
- * kjs/collector.cpp: #include "context.h"
-
-2007-10-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej.
-
- Stop checking isOutOfMemory after every allocation, instead let the collector
- notify all ExecStates if we ever hit this rare condition.
-
- SunSpider claims this was a 2.2% speedup.
-
- * kjs/collector.cpp:
- (KJS::Collector::collect):
- (KJS::Collector::reportOutOfMemoryToAllInterpreters):
- * kjs/collector.h:
- * kjs/nodes.cpp:
- (KJS::TryNode::execute):
-
-2007-10-24 Mark Rowe <mrowe@apple.com>
-
- Gtk build fix.
-
- * kjs/identifier.h: Remove extra qualification.
-
-2007-10-24 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Disable ALWAYS_INLINE in debug builds, since it drives the debugger
- crazy.
-
- * wtf/AlwaysInline.h:
-
-2007-10-24 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Inlined the fast path for creating an Identifier from an Identifier.
-
- This is a .4% speedup on SunSpider overall, but as big as a 2.5%
- speedup on certain individual tests. 65% of the Identifiers creating
- by SunSpider are already Identifiers.
-
- (The main reason I'm making this change is that it resolves a large
- regression in a patch I haven't checked in yet.)
-
- * JavaScriptCore.exp:
- * kjs/identifier.cpp:
- (KJS::Identifier::addSlowCase):
- * kjs/identifier.h:
- (KJS::Identifier::Identifier::add):
-
-2007-10-24 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- some changes to the way JS values are converted to Qt values in the script bindings. Added support for converting JS arrays into QStringList's.
-
- * bindings/qt/qt_instance.cpp:
- (KJS::Bindings::QtInstance::invokeMethod):
- * bindings/qt/qt_runtime.cpp:
- (KJS::Bindings::convertValueToQVariant):
- (KJS::Bindings::QtField::setValueToInstance):
-
-2007-10-24 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Darin.
-
- Remove old relation method, replace with specialised LessThan and lessThenEq functions for a 0.5-0.6% improvement in SunSpider
-
- * kjs/nodes.cpp:
- (KJS::lessThan):
- (KJS::lessThanEq):
- (KJS::LessNode::evaluate):
- (KJS::GreaterNode::evaluate):
- (KJS::LessEqNode::evaluate):
- (KJS::GreaterEqNode::evaluate):
- * kjs/operations.cpp:
- * kjs/operations.h:
-
-2007-10-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by darin.
-
- * kjs/nodes.h:
- (KJS::ImmediateNumberNode::): Fix ASSERT correctness (and debug build!)
-
-2007-10-24 Darin Adler <darin@apple.com>
-
- Reviewed by Eric.
-
- * kjs/object.cpp: (KJS::JSObject::defaultValue): Get rid of a little
- Identifier ref/deref for what SunSpider claims is a 0.4% speedup.
-
-2007-10-24 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - separate out the code to create a hash table the first time from the code
- to rehash
-
- SunSpider claims this was a 0.7% speedup.
-
- * kjs/property_map.cpp:
- (KJS::PropertyMap::expand): Changed to call either createTable or rehash.
- (KJS::PropertyMap::createTable): Added. For the case where we had no table.
- (KJS::PropertyMap::rehash): Removed code needed only in the case where we
- had no table.
- * kjs/property_map.h: Added createTable.
-
-2007-10-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by darin.
-
- Add ImmediateNumberNode to hold a JSValue* instead of a double for numbers
- which can be represented by JSImmediate.
-
- SunSpider claims this was a 0.6% speedup.
-
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::NumberNode::evaluate):
- (KJS::ImmediateNumberNode::evaluate):
- * kjs/nodes.h:
- (KJS::Node::):
- (KJS::ImmediateNumberNode::):
- * kjs/nodes2string.cpp:
- (ImmediateNumberNode::streamTo):
-
-2007-10-24 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15657
- change static hash tables to use powers of two for speed
-
- Seems to give 0.7% SunSpider speedup.
-
- * kjs/create_hash_table: Updated to generate new format.
- * kjs/lookup.cpp:
- (KJS::keysMatch): Took out unneeded typecast.
- (KJS::findEntry): Updated to expect table type 3 -- changed the printf to a plain old assert.
- Replaced the modulus with a bit mask.
- (KJS::Lookup::findEntry): Get the hash directly, since we know identifiers already have computed
- their hash -- saves a branch.
- (KJS::Lookup::find): Ditto.
- * kjs/lookup.h: Changed attr from 2-byte value to one-byte value. Replaced hashSize with hashSizeMask.
-
-2007-10-24 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin.
-
- - remove KJS_CHECKEXCEPTIONs in places where exceptions can't happen for 0.6% SunSpider speedup
-
- * kjs/nodes.cpp:
- (KJS::DoWhileNode::execute):
- (KJS::WhileNode::execute):
- (KJS::ForNode::execute):
- (KJS::ForInNode::execute):
- (KJS::SourceElementsNode::execute):
-
-2007-10-23 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- * kjs/JSImmediate.h: (KJS::JSImmediate::getUInt32):
- Changed an && to an & for a 1% gain in SunSpider.
-
-2007-10-23 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Reduce branching in implementations of some operator implementations, yielding 1.3% boost to SunSpider.
-
- * kjs/nodes.cpp:
- (KJS::MultNode::evaluate):
- (KJS::DivNode::evaluate):
- (KJS::ModNode::evaluate):
- (KJS::add):
- (KJS::sub):
- (KJS::AddNode::evaluate):
- (KJS::SubNode::evaluate):
- (KJS::valueForReadModifyAssignment):
- * kjs/operations.cpp:
- * kjs/operations.h:
-
-2007-10-23 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej.
-
- Separating all of the simple (eg. non-read-modify-write) binary operators
- into separate classes in preparation for further JS optimisations.
-
- Happily this produces a 0.8% to 1.0% performance increase in SunSpider with
- no further work.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::MultNode::evaluate):
- (KJS::DivNode::evaluate):
- (KJS::ModNode::evaluate):
- (KJS::AddNode::evaluate):
- (KJS::SubNode::evaluate):
- (KJS::LeftShiftNode::evaluate):
- (KJS::RightShiftNode::evaluate):
- (KJS::UnsignedRightShiftNode::evaluate):
- (KJS::LessNode::evaluate):
- (KJS::GreaterNode::evaluate):
- (KJS::LessEqNode::evaluate):
- (KJS::GreaterEqNode::evaluate):
- (KJS::InstanceOfNode::evaluate):
- (KJS::InNode::evaluate):
- (KJS::EqualNode::evaluate):
- (KJS::NotEqualNode::evaluate):
- (KJS::StrictEqualNode::evaluate):
- (KJS::NotStrictEqualNode::evaluate):
- (KJS::BitAndNode::evaluate):
- (KJS::BitXOrNode::evaluate):
- (KJS::BitOrNode::evaluate):
- (KJS::LogicalAndNode::evaluate):
- (KJS::LogicalOrNode::evaluate):
- * kjs/nodes.h:
- (KJS::MultNode::):
- (KJS::DivNode::):
- (KJS::ModNode::):
- (KJS::AddNode::):
- (KJS::SubNode::):
- (KJS::LeftShiftNode::):
- (KJS::RightShiftNode::):
- (KJS::UnsignedRightShiftNode::):
- (KJS::LessNode::):
- (KJS::GreaterNode::):
- (KJS::LessEqNode::):
- (KJS::GreaterEqNode::):
- (KJS::InstanceOfNode::):
- (KJS::InNode::):
- (KJS::EqualNode::):
- (KJS::NotEqualNode::):
- (KJS::StrictEqualNode::):
- (KJS::NotStrictEqualNode::):
- (KJS::BitAndNode::):
- (KJS::BitOrNode::):
- (KJS::BitXOrNode::):
- (KJS::LogicalAndNode::):
- (KJS::LogicalOrNode::):
- * kjs/nodes2string.cpp:
- (MultNode::streamTo):
- (DivNode::streamTo):
- (ModNode::streamTo):
- (AddNode::streamTo):
- (SubNode::streamTo):
- (LeftShiftNode::streamTo):
- (RightShiftNode::streamTo):
- (UnsignedRightShiftNode::streamTo):
- (LessNode::streamTo):
- (GreaterNode::streamTo):
- (LessEqNode::streamTo):
- (GreaterEqNode::streamTo):
- (InstanceOfNode::streamTo):
- (InNode::streamTo):
- (EqualNode::streamTo):
- (NotEqualNode::streamTo):
- (StrictEqualNode::streamTo):
- (NotStrictEqualNode::streamTo):
- (BitAndNode::streamTo):
- (BitXOrNode::streamTo):
- (BitOrNode::streamTo):
- (LogicalAndNode::streamTo):
-
-2007-10-23 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=15639
- fix Math.abs(0), Math.ceil(-0), and Math.floor(-0)
-
- Test: fast/js/math.html
-
- * kjs/math_object.cpp: (MathFuncImp::callAsFunction):
- Fix abs to look at the sign bit. Add a special case for values in the range
- between -0 and -1 and a special case for ceil and for -0 for floor.
-
-2007-10-23 Darin Adler <darin@apple.com>
-
- Reviewed by Eric.
-
- - streamline exception handling code for a >1% speed-up of SunSpider
-
- * kjs/nodes.cpp: Changed macros to use functions for everything that's not
- part of normal execution. We'll take function call overhead when propagating
- an exception or out of memory.
- (KJS::createOutOfMemoryCompletion): Added.
- (KJS::substitute): Use append instead of the relatively inefficient + operator.
- (KJS::Node::rethrowException): Added.
- * kjs/nodes.h: Added rethrowException.
-
-2007-10-22 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=15636
- some JavaScriptCore regression tests are failing due to numeric conversion
-
- This should restore correctness and make speed better too, restoring some
- of the optimization we lost in my last check-in.
-
- * kjs/JSImmediate.h:
- (KJS::JSImmediate::getTruncatedInt32): Added. Uses the range checking idiom
- I used in my patch yesterday.
- (KJS::JSImmediate::getTruncatedUInt32): Ditto.
-
- * kjs/internal.h: Removed getInt32 and added getTruncatedInt/UInt32.
- * kjs/internal.cpp:
- (KJS::NumberImp::getUInt32): Changed to always use double, since I can't find
- a way to write this more efficiently for float.
- (KJS::NumberImp::getTruncatedInt32): Added.
- (KJS::NumberImp::getTruncatedUInt32): Added.
-
- * kjs/value.h: Removed getInt32 and added getTruncatedInt/UInt32.
- (KJS::JSValue::getUInt32):
- (KJS::JSValue::getTruncatedInt32): Added.
- (KJS::JSValue::getTruncatedUInt32): Added.
- (KJS::JSValue::toInt32): Changed getInt32 call to getTruncatedInt32.
- (KJS::JSValue::toUInt32): Changed getUInt32 call to getTruncatedUInt32.
- * kjs/value.cpp:
- (KJS::JSCell::getTruncatedInt32): Added.
- (KJS::JSCell::getTruncatedUInt32): Added.
- (KJS::JSValue::toInteger): Changed getUInt32 call to getTruncatedInt32.
- (KJS::JSValue::toInt32SlowCase): Removed extra getInt32 call I accidentally
- had left in here.
- (KJS::JSValue::toUInt32SlowCase): Ditto.
- (KJS::JSValue::toUInt16): Changed getUInt32 call to getTruncatedUInt32.
-
- * JavaScriptCore.exp: Updated.
-
-2007-10-22 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=15632
- js1_5/Array/array-001.js test failing
-
- One of the JavaScriptCore tests was failing; it failed because of
- my change to NumberImp::getUInt32. The incorrect code I copied was
- from JSImmediate::getUInt32, and was a pre-existing bug.
-
- This patch fixes correctness, but will surely slow down SunSpider.
- We may be able to code this tighter and get the speed back.
-
- * kjs/JSImmediate.h:
- (KJS::JSImmediate::getInt32): Renamed from toInt32 to more accurately
- reflect the fact that this function only returns true if the value is
- accurate (no fractional part, etc.). Changed code so that it returns
- false when the value has a fraction.
- (KJS::JSImmediate::getUInt32): Ditto.
-
- * kjs/internal.cpp:
- (KJS::NumberImp::getInt32): Changed code so that it returns false when
- the value has a fraction. Restores the old behavior.
- (KJS::NumberImp::getUInt32): Ditto.
-
- * kjs/value.h:
- (KJS::JSValue::getInt32): Updated for name change.
- (KJS::JSValue::getUInt32): Ditto.
- (KJS::JSValue::toInt32): Ditto.
- (KJS::JSValue::toUInt32): Ditto.
-
-2007-10-22 Darin Adler <darin@apple.com>
-
- Reviewed by Brady.
-
- - fix crash seen when running JavaScriptCore tests
-
- * kjs/array_instance.cpp: (KJS::ArrayInstance::mark):
- Copy and paste error: I accidentally had code here that was
- making a copy of the HashMap -- that's illegal inside a mark
- function and was unnecessary. The other callsite was modifying
- the map as it iterated it, but this function is not.
-
-2007-10-22 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - Avoid moving floats into integer registers in jsNumber() for 3% speedup on SunSpider
- http://bugs.webkit.org/show_bug.cgi?id=15627
-
- * kjs/JSImmediate.h:
- (KJS::JSImmediate::fromDouble): Avoid moving floats to integer
- registers since this is very slow.
-
-2007-10-22 Darin Adler <darin@apple.com>
-
- Reviewed by Eric Seidel.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15617
- improve speed of integer conversions
-
- Makes SunSpider 6% faster.
-
- * kjs/JSImmediate.h: Added toInt32 and toUInt32, with separate versions for
- 32-bit and 64-bit.
- * kjs/value.h:
- (KJS::JSValue::getUInt32): Call JSImmediate::toUInt32.
-
- * kjs/internal.h: Added getInt32.
- * kjs/internal.cpp:
- (KJS::NumberImp::getInt32): Added.
- (KJS::NumberImp::getUInt32): Replaced with more-optimal implementation
- stolen from JSValue.
-
- * kjs/value.h:
- (KJS::jsNumber): Marked ALWAYS_INLINE, because this wasn't getting
- inlined.
- (KJS::JSValue::getInt32): Added.
- (KJS::JSValue::getUInt32): Changed to call the new JSImmediate::toUInt32
- to avoid converting from float to double.
- (KJS::JSValue::toInt32): Made inline, separated out the slow case.
- (KJS::JSValue::toUInt32): Ditto.
- * kjs/value.cpp:
- (KJS::JSCell::getInt32): Added.
- (KJS::JSValue::toInt32SlowCase): Renamed from toInt32. Changed to use the
- new getInt32. Added a faster case for in-range numbers.
- (KJS::JSValue::toUInt32SlowCase): Ditto.
- (KJS::JSValue::toUInt16): Added a faster case for in-range numbers.
-
- * JavaScriptCore.exp: Updated for changes.
-
-2007-10-22 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Turn off
- warning about implicit conversion to bool.
-
-2007-10-22 Mark Rowe <mrowe@apple.com>
-
- Gtk build fix.
-
- * kjs/array_instance.cpp:
-
-2007-10-22 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15606
- make cut-off for sparse vs. dense arrays smarter for speed with large arrays
-
- Makes the morph test in SunSpider 26% faster, and the overall
- benchmark 3% faster.
-
- This also fixes some small problems we had with the distinction
- between nonexistent and undefined values in arrays.
-
- * kjs/array_instance.h: Tweaked formatting and naming.
- * kjs/array_instance.cpp: Copied from kjs/array_object.cpp.
- (KJS::storageSize): Added. Computes the size of the storage given a vector length.
- (KJS::increasedVectorLength): Added. Implements the rule for resizing the vector.
- (KJS::isDenseEnoughForVector): Added.
- (KJS::ArrayInstance::ArrayInstance): Initialize the new fields.
- (KJS::ArrayInstance::~ArrayInstance): Since m_storage is now never 0, delete it.
- (KJS::ArrayInstance::getItem): Updated for name changes.
- (KJS::ArrayInstance::lengthGetter): Ditto.
- (KJS::ArrayInstance::inlineGetOwnPropertySlot): Added. Allows both versions of
- getOwnPropertySlot to share more code.
- (KJS::ArrayInstance::getOwnPropertySlot): Just refactored, no code change.
- (KJS::ArrayInstance::put): Added logic for extending the vector as long as the
- array is dense enough. Also keep m_numValuesInVector up to date.
- (KJS::ArrayInstance::deleteProperty): Added code to keep m_numValuesInVector
- up to date.
- (KJS::ArrayInstance::getPropertyNames): Fixed bug where this would omit names
- for array indices with undefined values.
- (KJS::ArrayInstance::increaseVectorLength): Renamed from resizeStorage. Also
- simplified to only handle getting larger.
- (KJS::ArrayInstance::setLength): Added code to update m_numValuesInVector, to
- zero out the unused part of the vector and to delete the map if it's no longer
- needed.
- (KJS::ArrayInstance::mark): Tweaked formatting.
- (KJS::compareByStringForQSort): Ditto.
- (KJS::ArrayInstance::sort): Ditto.
- (KJS::CompareWithCompareFunctionArguments::CompareWithCompareFunctionArguments):
- Ditto.
- (KJS::compareWithCompareFunctionForQSort): Ditto.
- (KJS::ArrayInstance::compactForSorting): Fixed bug where this would turn
- undefined values into nonexistent values in some cases.
-
- * kjs/array_object.h: Removed MAX_ARRAY_INDEX.
- * kjs/array_object.cpp: Removed ArrayInstance. Moved to a separate file.
-
- * JavaScriptCore.pri: Added array_instance.cpp.
- * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
- * kjs/AllInOneFile.cpp: Ditto.
-
-2007-10-22 Andrew Wellington <proton@wiretapped.net>
-
- Reviewed by Mark Rowe.
-
- Fix for local database support after r26879
- Ensure that ENABLE_DATABASE and ENABLE_ICONDATABASE are correctly set
-
- * Configurations/JavaScriptCore.xcconfig:
-
-2007-10-22 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Alp.
-
- Build fix for the non-qmake builds.
-
- * wtf/Platform.h: Default to enabling the database features unless
- otherwise specified. (similar to ENABLE_ICONDATABASE)
-
-2007-10-22 Holger Freyther <zecke@selfish.org>
-
- Reviewed by Simon Hausmann <hausmann@kde.org>.
-
- * Do not build testkjs as an application bundle. This is
- needed for run-javascriptcore-tests on OSX.
- * Also, based on r26633, allow to test the WebKit/Qt port on OSX.
- * Set DYLD_LIBRARY_PATH if it was set in the environment. It must be set
- as we do not have -rpath on OSX.
-
- * kjs/testkjs.pro:
-
-2007-10-21 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Alp.
-
- http://bugs.webkit.org/show_bug.cgi?id=15575
- Bug 15575: [GTK] Implement threading using GThread
-
- * wtf/Platform.h: Do not enable pthreads for Gtk.
-
-2007-10-21 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Mitz.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=15603
- Bug 15603: Regression(r26847): Crash when sorting an empty array from JavaScript
-
- * kjs/array_object.cpp:
- (KJS::freeStorage): Reinstate null-check that was removed in r26847.
-
-2007-10-21 Darin Adler <darin@apple.com>
-
- - fix Windows build
-
- * kjs/array_instance.h: Removed unused ExecState parameter.
- * kjs/array_object.cpp:
- (KJS::ArrayInstance::put): Ditto.
- (KJS::ArrayInstance::setLength): Ditto.
-
-2007-10-21 Darin Adler <darin@apple.com>
-
- * kjs/array_object.cpp: (KJS::ArrayInstance::put):
- Add missing assignment that was causing regression test crash.
-
-2007-10-21 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15585
- speed up sparse arrays by using a custom map
-
- Speeds up SunSpider by 10%.
-
- * kjs/array_object.cpp:
- (allocateStorage): Leave room for an additional pointer.
- (reallocateStorage): Ditto.
- (freeStorage): Ditto.
- (ArrayInstance::~ArrayInstance): Delete the overflow map if present.
- (ArrayInstance::getItem): Read values from the overflow map if present.
- Removed the check of length, since it slows down the common case.
- (ArrayInstance::getOwnPropertySlot): Ditto. Also removed the fallback
- to the property map.
- (ArrayInstance::put): Write values into the overflow map as needed.
- Also create overflow map when needed.
- (ArrayInstance::deleteProperty): Remove values from the overflow map
- as appropriate.
- (ArrayInstance::getPropertyNames): Add a name for each identifier in
- the property map. This is extremely inefficient.
- (ArrayInstance::setLength): Remove any values in the overflow map
- that are past the new length, as we formerly did with the property map.
- (ArrayInstance::mark): Mark any values in the overflow map.
- (compareByStringForQSort): Removed unneeded undefined case, since
- compactForSorting guarantees we will have no undefined values.
- (compareWithCompareFunctionForQSort): Ditto.
- (ArrayInstance::compactForSorting): Copy all the values out of the
- overflow map and destroy it.
-
- * kjs/property_map.h: Removed now-unused getSparseArrayPropertyNames.
- * kjs/property_map.cpp: Ditto.
-
-2007-10-20 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15579
- stop churning identifier reference counts copying Completion objects
-
- * kjs/completion.h: Replace the Identifier with an Identifier*.
- * kjs/nodes.cpp:
- (ForInNode::execute): Update for change to Completion constructor.
- (ContinueNode::execute): Ditto.
- (BreakNode::execute): Ditto.
-
-2007-10-20 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Alp.
-
- Gtk changes needed to enable HTML 5 client-side database storage.
-
- * wtf/Platform.h: Have Gtk use pthreads for now.
-
-2007-10-20 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fixed http://bugs.webkit.org/show_bug.cgi?id=15570
- Store gathered declaration nodes in the function body node.
-
- This means that you only have to gather the declaration nodes the first
- time the function executes. Performance gain of 2.10% on SunSpider,
- 0.90% on command-line JS iBench.
-
- * kjs/nodes.cpp: Split declaration stack initialization code off into
- initializeDeclarationStacks().
- (FunctionBodyNode::FunctionBodyNode):
- (FunctionBodyNode::initializeDeclarationStacks):
- (FunctionBodyNode::processDeclarations):
-
- * kjs/nodes.h: Changed DeclarationStacks structure to hold references,
- since the actual Vectors are now stored either on the stack or in the
- function body node.
-
-2007-10-19 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=15559
- Moved processDeclarations call into FunctionBodyNode::execute
-
- To improve encapsulation, moved processDeclarations call into
- FunctionBodyNode::execute. Also marked processDeclarations
- ALWAYS_INLINE, since it has only 1 caller now. This is a .71% speedup
- on command-line JS iBench.
-
- * kjs/function.cpp:
- (KJS::FunctionImp::callAsFunction):
- (KJS::GlobalFuncImp::callAsFunction):
- * kjs/function.h:
- * kjs/interpreter.cpp:
- (KJS::Interpreter::evaluate):
- * kjs/nodes.cpp:
- (FunctionBodyNode::execute):
- * kjs/nodes.h:
-
-2007-10-19 Brady Eidson <beidson@apple.com>
-
- Reviewed by Sam
-
- Queue -> Deque! and small style tweaks
-
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
- * wtf/Deque.h: Added.
- (WTF::DequeNode::DequeNode):
- (WTF::Deque::Deque):
- (WTF::Deque::~Deque):
- (WTF::Deque::size):
- (WTF::Deque::isEmpty):
- (WTF::Deque::append):
- (WTF::Deque::prepend):
- (WTF::Deque::first):
- (WTF::Deque::last):
- (WTF::Deque::removeFirst):
- (WTF::Deque::clear):
- * wtf/Queue.h: Removed.
-
-
-2007-10-19 Brady Eidson <beidson@apple.com>
-
- Reviewed by Oliver
-
- Added a simple LinkedList based Queue to wtf
- We can make a better, more sophisticated an efficient one later, but have
- needed one for some time, now!
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * wtf/Queue.h: Added.
- (WTF::QueueNode::QueueNode):
- (WTF::Queue::Queue):
- (WTF::Queue::~Queue):
- (WTF::Queue::size):
- (WTF::Queue::isEmpty):
- (WTF::Queue::append):
- (WTF::Queue::prepend):
- (WTF::Queue::first):
- (WTF::Queue::last):
- (WTF::Queue::removeFirst):
- (WTF::Queue::clear):
-
-2007-10-19 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Anders.
-
- Try to fix Qt/Win build slave, by including windows.h also on Qt/Win.
-
- * kjs/testkjs.cpp: Change PLATFORM(WIN) to PLATFORM(WIN_OS)
-
-2007-10-19 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Lars.
-
- Fix compilation on Windows when wchar_t is a typedef instead of a native type (triggered by -Zc:wchar_t-).
- Don't provide the wchar_t overloads then as they conflict with the unsigned short ones.
-
- * wtf/ASCIICType.h:
- (WTF::isASCIIAlpha):
- (WTF::isASCIIAlphanumeric):
- (WTF::isASCIIDigit):
- (WTF::isASCIIHexDigit):
- (WTF::isASCIILower):
- (WTF::isASCIISpace):
- (WTF::toASCIILower):
- (WTF::toASCIIUpper):
-
-2007-10-19 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Lars.
-
- Another build fix for the windows/qt build: Apply the same fix as in revision 26686 also to kjs/config.h to disable the disallowctype feature.
-
- * kjs/config.h:
-
-2007-10-18 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Adam.
-
- - use __declspec(thread) for fast thread-local storage on Windows
-
- - 2.2% speedup on sunspider (on Windows)
- - 7% speedup on the string section
- - 6% speedup on JS iBench
-
- - fixed <rdar://problem/5473084> PLT on Windows got 2.5% slower between r25406 and r25422
- - fixed at least some of <rdar://5527965? i-Bench JS was 14% slower in 310A11 than 310A10
-
-
- * wtf/FastMalloc.cpp:
- (WTF::getThreadHeap):
- (WTF::setThreadHeap):
- (WTF::TCMalloc_ThreadCache::GetCache):
- (WTF::TCMalloc_ThreadCache::GetCacheIfPresent):
- (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
-
-2007-10-17 Darin Adler <darin@apple.com>
-
- Reviewed by Mark Rowe.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=15543
- <rdar://problem/5545639> REGRESSION (r26697):
- GoogleDocs: Can't create new documents or open existing ones
-
- Test: fast/js/regexp-non-character.html
-
- * pcre/pcre_compile.c: (check_escape): Take out the checks for valid characters
- in the \u sequences -- not needed and actively harmful.
-
-2007-10-17 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Oliver.
-
- * wtf/Platform.h:
- #define USE_PTHREADS on Mac.
-
-2007-10-17 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Merged DeclaredFunctionImp into FunctionImp (the base class) because
- the distinction between the two was unused.
-
- Removed codeType() from FunctionImp because FunctionImp and its
- subclasses all returned FunctionCode, so it was unused, practically
- speaking.
-
- Removed a different codeType() from GlobalFuncImp because it was unused.
- (Perhaps it was vestigial from a time when GlobalFuncImp used to
- inherit from FunctionImp.)
-
- * bindings/runtime_method.cpp:
- * bindings/runtime_method.h:
- * kjs/function.cpp:
- (KJS::FunctionImp::FunctionImp):
- (KJS::FunctionImp::callAsFunction):
- (KJS::FunctionImp::construct):
- (KJS::FunctionImp::execute):
- (KJS::FunctionImp::processVarDecls):
- * kjs/function.h:
- (KJS::FunctionImp::implementsConstruct):
- (KJS::FunctionImp::scope):
- * kjs/function_object.cpp:
- (FunctionProtoFunc::callAsFunction):
- (FunctionObjectImp::construct):
- * kjs/nodes.cpp:
- (FuncDeclNode::processFuncDecl):
- (FuncExprNode::evaluate):
-
-2007-10-17 Adam Roben <aroben@apple.com>
-
- Windows build fix part 2.
-
- Fix was by Darin, reviewed by Anders and Adam.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add
- FastMallocPCRE.cpp to the project, and let Visual Studio have its way
- with the post-build step.
- * pcre/pcre.h: Don't DLL export the entry points just because this
- is Win32 -- this is an internal copy of PCRE and should be private.
- * pcre/pcre_compile.c: Fix an uninitialized variable warning --
- there's no real problem but it's better to quiet the compiler by
- tweaking the code slightly than turn off the warning entirely.
-
-2007-10-17 Adam Roben <aroben@apple.com>
-
- Windows build fix.
-
- Reviewed by Anders.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Disable
- some mismatched signed/unsigned comparison warnings.
- * pcre/pcre_exec.c:
- (match): #if-out some labels that don't seem to exist.
-
-2007-10-17 Mark Rowe <mrowe@apple.com>
-
- Gtk build fix.
-
- * JavaScriptCore.pri: Add FastMallocPCRE.cpp.
- * pcre/pcre_get. #if out two functions that depend on pcre_get_stringnumber, which
- is currently unavailable for UTF-16.
-
-2007-10-16 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- - merged PCRE changes between 6.4 and 6.5
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- Removed pcre_config.c, pcre_globals.c, pcre_info.c, pcre_maketables.c,
- pcre_printint.src, pcre_refcount.c, pcre_study.c, pcre_try_flipped.c,
- pcre_ucp_findchar.c, pcre_version.c, and ucptable.c. Added pcre_ucp_searchfuncs.c.
-
- * pcre/AUTHORS:
- * pcre/LICENCE:
- * pcre/MERGING:
- * pcre/dftables.c:
- * pcre/pcre-config.h:
- * pcre/pcre.h:
- * pcre/pcre.pri:
- * pcre/pcre_compile.c:
- * pcre/pcre_exec.c:
- * pcre/pcre_fullinfo.c:
- * pcre/pcre_get.c:
- * pcre/pcre_internal.h:
- * pcre/pcre_maketables.c:
- * pcre/pcre_ord2utf8.c:
- * pcre/pcre_tables.c:
- * pcre/pcre_ucp_searchfuncs.c: Copied from pcre/pcre_ucp_findchar.c.
- * pcre/pcre_xclass.c:
- * pcre/ucp.h:
- * pcre/ucpinternal.h:
- * pcre/ucptable.c:
- Updated with new versions from the PCRE 6.5 release, merged with changes.
-
- * pcre/pcre_config.c: Removed.
- * pcre/pcre_globals.c: Removed.
- * pcre/pcre_info.c: Removed.
- * pcre/pcre_printint.src: Removed.
- * pcre/pcre_refcount.c: Removed.
- * pcre/pcre_study.c: Removed.
- * pcre/pcre_try_flipped.c: Removed.
- * pcre/pcre_ucp_findchar.c: Removed.
- * pcre/pcre_version.c: Removed.
-
-2007-10-16 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Removed KJS_VERBOSE because it was getting in the way of readability,
- and the messages didn't seem very helpful.
-
- * kjs/function.cpp:
- (KJS::FunctionImp::callAsFunction):
- (KJS::FunctionImp::passInParameters):
- * kjs/lookup.h:
- (KJS::lookupPut):
- * kjs/object.cpp:
- (KJS::JSObject::put):
- * kjs/value.h:
-
-2007-10-16 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Removed the Parameter class because it was a redundant wrapper around
- Identifier.
-
- * kjs/function.cpp:
- (KJS::FunctionImp::passInParameters):
- (KJS::FunctionImp::getParameterName):
- * kjs/nodes.cpp:
- (FunctionBodyNode::addParam):
- * kjs/nodes.h:
- (KJS::FunctionBodyNode::):
-
-2007-10-16 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Global replace of assert with ASSERT.
-
-2007-10-16 Adam Roben <aroben@apple.com>
-
- Make testkjs not delay-load WebKit
-
- Soon, delay-loading WebKit will be impossible (because we will be
- using __declspec(thread) for thread-local storage). This change
- prepares testkjs for the future.
-
- Reviewed by Sam.
-
- * JavaScriptCore.vcproj/JavaScriptCore.sln: Removed WebKitInitializer,
- added FindSafari.
- * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Don't link against
- WebKitInitializer, don't delay-load WebKit.
- * kjs/testkjs.cpp: Don't use WebKitInitializer.
-
-2007-10-16 Adam Roben <aroben@apple.com>
-
- Updated testkjs for the rename of WebKit_debug.dll to WebKit.dll for the Debug configuration
-
- Reviewed by Kevin McCullough.
-
- * JavaScriptCore.vcproj/debug.vsprops: Added WebKitDLLConfigSuffix.
- * JavaScriptCore.vcproj/debug_internal.vsprops: Ditto.
- * JavaScriptCore.vcproj/release.vsprops: Ditto.
- * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Use
- WebKitDLLConfigSuffix when referring to WebKit.dll, and fixed a typo
- in the name of icuuc36[_debug].dll.
-
-2007-10-16 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Re-structured variable and function declaration code.
-
- Command-line JS iBench shows no regression.
-
- Here are the changes:
-
- 1. Function declarations are now processed at the same time as var
- declarations -- namely, immediately upon entry to an execution context.
- This does not match Firefox, which waits to process a function
- declaration until the declaration's containing block executes, but it
- does match IE and the ECMA spec. (10.1.3 states that var and function
- declarations should be processed at the same time -- namely, "On
- entering an execution context." 12.2 states that "A Block does not
- define a new execution scope.")
-
- 2. Declaration processing proceeds iteratively now, rather than
- recursively, storing the nodes is finds in stacks. This will later
- facilitate an optimization to hold on to the gathered declaration nodes,
- rather than re-fetching them in every function call.
- [ http://bugs.webkit.org/show_bug.cgi?id=14868 ]
-
- Modified these tests because they expected the incorrect Mozilla
- behavior described above:
-
- * tests/mozilla/ecma_3/Function/scope-001.js:
- * tests/mozilla/js1_5/Scope/regress-184107.js:
-
-2007-10-16 Darin Adler <darin@apple.com>
-
- - try to fix the GTK build
-
- * kjs/ustring.cpp: Include ASCIICType.h, not ASCIICtype.h.
-
-2007-10-16 Darin Adler <darin@apple.com>
-
- - try to fix the Windows build
-
- * kjs/date_object.cpp: (KJS::parseDate): A couple instances of isspace were
- in here. Not sure why it wasn't failing elsewhere. Changed to isASCIISpace.
-
-2007-10-16 Darin Adler <darin@apple.com>
-
- - try to fix the GTK build
-
- * kjs/ustring.cpp: Include ASCIICType.h.
-
-2007-10-16 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej and Geoff (and looked over by Eric).
-
- - http://bugs.webkit.org/show_bug.cgi?id=15519
- eliminate use of <ctype.h> for processing ASCII
-
- * wtf/ASCIICType.h: Added.
- * wtf/DisallowCType.h: Added.
-
- * kjs/config.h: Include DisallowCType.h.
-
- * kjs/date_object.cpp:
- (KJS::skipSpacesAndComments):
- (KJS::findMonth):
- (KJS::parseDate):
- * kjs/function.cpp:
- (KJS::decode):
- * kjs/ustring.cpp:
- (KJS::UString::toDouble):
- Use ASCIICType.h functions instead of ctype.h ones.
-
-2007-10-14 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin.
-
- - fixes for "New JavaScript benchmark"
- http://bugs.webkit.org/show_bug.cgi?id=15515
-
- * kjs/testkjs.cpp:
- (TestFunctionImp::callAsFunction): Implement "load" for compatibility
- with SpiderMonkey.
- (TestFunctionImp::): ditto
- (doIt): ditto
- (kjsmain): Drop useless --> from output.
-
-2007-10-15 Geoffrey Garen <ggaren@apple.com>
-
- Removed unnecessary #include.
-
- * API/JSObjectRef.cpp:
-
-2007-10-15 Geoffrey Garen <ggaren@apple.com>
-
- Double-reverse build fix. My tree was out of date.
-
- * kjs/nodes.cpp:
- (NumberNode::evaluate):
-
-2007-10-15 Geoffrey Garen <ggaren@apple.com>
-
- Build fix.
-
- * kjs/nodes.cpp:
- (NumberNode::evaluate):
-
-2007-10-15 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Removed surprising self-named "hack" that made nested functions
- available as named properties of their containing functions, and placed
- containing function objects in the scope chains of nested functions.
-
- There were a few reasons to remove this "hack:"
-
- 1. It contradicted FF, IE, and the ECMA spec.
-
- 2. It incurred a performance penalty, since merely parsing a function
- required parsing its body for nested functions (and so on).
-
- 3. SVN history contains no explanation for why it was added. It was just
- legacy code in a large merge a long, long time ago.
-
- [ Patch broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ]
-
- * kjs/nodes.cpp:
- (FuncDeclNode::processFuncDecl):
-
-2007-10-15 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Removed the concept of AnonymousCode. It was unused, and it doesn't
- exist in the ECMA spec.
-
- [ Patch broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ]
-
- * kjs/Context.cpp:
- (KJS::Context::Context):
- * kjs/function.h:
- * kjs/nodes.cpp:
- (ReturnNode::execute):
-
-2007-10-15 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Made function parameters DontDelete. This matches FF and the vague
- description in ECMA 10.1.3. It's also required in order to make
- symbol table based lookup of function parameters valid. (If the
- parameters aren't DontDelete, you can't guarantee that you'll find
- them later in the symbol table.)
-
- [ Patch broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ]
-
- * kjs/function.cpp:
- (KJS::FunctionImp::passInParameters):
-
-2007-10-15 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Some Vector optimizations. These are especially important when using
- Vector as a stack for implementing recursive algorithms iteratively.
-
- [ Broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ]
-
- 1. Added shrink(), which is a version of resize() that you can call
- to save a branch / improve code generation and inlining when you know
- that the vector is not getting bigger.
-
- 2. Changed subclassing relationship in VectorBuffer to remove a call to
- fastFree() in the destructor for the inlineCapacity != 0 template
- specialization. This brings inline Vectors one step closer to true
- stack-allocated arrays.
-
- Also changed abort() to CRASH(), since the latter works better.
-
- * wtf/Vector.h:
- (WTF::VectorBufferBase::allocateBuffer):
- (WTF::VectorBufferBase::deallocateBuffer):
- (WTF::VectorBufferBase::VectorBufferBase):
- (WTF::VectorBufferBase::~VectorBufferBase):
- (WTF::):
- (WTF::VectorBuffer::VectorBuffer):
- (WTF::VectorBuffer::~VectorBuffer):
- (WTF::VectorBuffer::deallocateBuffer):
- (WTF::VectorBuffer::releaseBuffer):
- (WTF::Vector::clear):
- (WTF::Vector::removeLast):
- (WTF::::operator):
- (WTF::::fill):
- (WTF::::shrink):
-
-2007-10-12 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fixed http://bugs.webkit.org/show_bug.cgi?id=15490
- Iteration statements sometimes incorrectly evaluate to the empty value
- (KDE r670547).
-
- [ Broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ]
-
- This patch is a merge of KDE r670547, with substantial modification
- for performance.
-
- It fixes do-while statements to evaluate to a value. (They used
- to evaluate to the empty value in all cases.)
-
- It also fixes SourceElementsNode to maintain the value of abnormal
- completions like "break" and "continue."
-
- It also re-works the main execution loop in SourceElementsNode so that
- it (1) makes a little more sense and (2) avoids unnecessary work. This
- is a .28% speedup on command-line JS iBench.
-
- * kjs/nodes.cpp:
- (DoWhileNode::execute):
- (SourceElementsNode::execute):
-
-2007-10-15 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Lars.
-
- Fix compilation with gcc 4.3 by including 'limits' due to the use of std::numeric_limits.
-
- * wtf/HashTraits.h:
-
-2007-10-5 Kevin Ollivier <kevino@theolliviers.com>
-
- Reviewed by Adam.
-
- Add support for MSVC7, and fix cases where PLATFORM(WIN) should
- be PLATFORM(WIN_OS) for other ports building on Windows.
-
- * kjs/DateMath.cpp:
- (KJS::getDSTOffsetSimple):
- * kjs/JSImmediate.h:
- * wtf/Assertions.cpp:
- * wtf/Assertions.h:
- * wtf/Platform.h:
- * wtf/StringExtras.h:
- (snprintf):
- (vsnprintf):
-
-2007-10-14 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Darin.
-
- Adds NegateNode optimization from KJS. The relevant revision in KDE
- is 666736.
-
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (NumberNode::evaluate):
- * kjs/nodes.h:
- (KJS::Node::):
- (KJS::NumberNode::):
- * kjs/nodes2string.cpp:
- (NumberNode::streamTo):
-
-2007-10-14 Jason Foreman <jason@threeve.org>
-
- Reviewed by Maciej.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=15145
-
- Ensure that if adjusting n to minimize the difference of n*intPow10(e-p+1) to x,
- that the property n < intPow10(p) is maintained.
-
- * kjs/number_object.cpp:
- (NumberProtoFunc::callAsFunction):
-
-== Rolled over to ChangeLog-2007-10-14 ==