| 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: |
|