diff options
Diffstat (limited to 'JavaScriptCore/ChangeLog')
-rw-r--r-- | JavaScriptCore/ChangeLog | 1226 |
1 files changed, 0 insertions, 1226 deletions
diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog index f67d27d..1afea5f 100644 --- a/JavaScriptCore/ChangeLog +++ b/JavaScriptCore/ChangeLog @@ -1,1229 +1,3 @@ -2009-08-17 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Sam Weinig. - - No, silly runtime, AST nodes are not for you. - - We still use AST nodes (ScopeNodes, particularly FunctionBodyNodes) within - the runtime, which means that these nodes must be persisted outside of the - arena, contain both parser & runtime data, etc. This is all a bit of a mess. - - Move functionality into a new FunctionExecutable class. - - * API/JSCallbackFunction.cpp: - * API/JSObjectRef.cpp: - * JavaScriptCore.exp: - * JavaScriptCore.xcodeproj/project.pbxproj: - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::CodeBlock): - (JSC::CodeBlock::markAggregate): - (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): - (JSC::CodeBlock::lineNumberForBytecodeOffset): - (JSC::CodeBlock::shrinkToFit): - * bytecode/CodeBlock.h: - (JSC::CodeBlock::getBytecodeIndex): - (JSC::CodeBlock::discardBytecode): - (JSC::CodeBlock::instructionCount): - (JSC::CodeBlock::getJITCode): - (JSC::CodeBlock::executablePool): - (JSC::CodeBlock::ownerExecutable): - (JSC::CodeBlock::extractExceptionInfo): - (JSC::CodeBlock::addFunctionDecl): - (JSC::CodeBlock::functionDecl): - (JSC::CodeBlock::numberOfFunctionDecls): - (JSC::CodeBlock::addFunctionExpr): - (JSC::CodeBlock::functionExpr): - (JSC::GlobalCodeBlock::GlobalCodeBlock): - (JSC::ProgramCodeBlock::ProgramCodeBlock): - (JSC::EvalCodeBlock::EvalCodeBlock): - (JSC::FunctionCodeBlock::FunctionCodeBlock): - (JSC::NativeCodeBlock::NativeCodeBlock): - * bytecode/EvalCodeCache.h: - * bytecode/SamplingTool.cpp: - (JSC::SamplingTool::doRun): - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): - (JSC::BytecodeGenerator::emitNewFunction): - (JSC::BytecodeGenerator::emitNewFunctionExpression): - * bytecompiler/BytecodeGenerator.h: - * debugger/Debugger.cpp: - (JSC::Debugger::recompileAllJSFunctions): - * interpreter/CachedCall.h: - (JSC::CachedCall::CachedCall): - * interpreter/CallFrameClosure.h: - * interpreter/Interpreter.cpp: - (JSC::Interpreter::unwindCallFrame): - (JSC::Interpreter::throwException): - (JSC::Interpreter::execute): - (JSC::Interpreter::prepareForRepeatCall): - (JSC::Interpreter::debug): - (JSC::Interpreter::privateExecute): - (JSC::Interpreter::retrieveLastCaller): - * interpreter/Interpreter.h: - * jit/JIT.cpp: - (JSC::JIT::privateCompile): - * jit/JIT.h: - (JSC::JIT::compile): - * jit/JITOpcodes.cpp: - (JSC::JIT::privateCompileCTIMachineTrampolines): - (JSC::JIT::emit_op_new_func): - (JSC::JIT::emit_op_new_func_exp): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - * jit/JITStubs.h: - (JSC::): - * parser/Nodes.cpp: - (JSC::FunctionBodyNode::reparseDataIfNecessary): - * parser/Nodes.h: - (JSC::EvalNode::partialDestroyData): - * parser/Parser.h: - * profiler/ProfileGenerator.cpp: - * profiler/Profiler.cpp: - (JSC::Profiler::createCallIdentifier): - (JSC::createCallIdentifierFromFunctionImp): - * runtime/Arguments.h: - (JSC::Arguments::getArgumentsData): - (JSC::Arguments::Arguments): - (JSC::JSActivation::copyRegisters): - * runtime/ArrayPrototype.cpp: - (JSC::isNumericCompareFunction): - * runtime/CallData.h: - (JSC::): - * runtime/Collector.cpp: - (JSC::Heap::collect): - * runtime/ConstructData.h: - (JSC::): - * runtime/ExceptionHelpers.cpp: - (JSC::createUndefinedVariableError): - (JSC::createInvalidParamError): - (JSC::createNotAConstructorError): - (JSC::createNotAFunctionError): - (JSC::createNotAnObjectError): - * runtime/Executable.cpp: Added. - (JSC::EvalExecutable::generateBytecode): - (JSC::ProgramExecutable::generateBytecode): - (JSC::FunctionExecutable::generateBytecode): - (JSC::EvalExecutable::generateJITCode): - (JSC::ProgramExecutable::generateJITCode): - (JSC::FunctionExecutable::generateJITCode): - (JSC::FunctionExecutable::isHostFunction): - (JSC::FunctionExecutable::markAggregate): - (JSC::FunctionExecutable::reparseExceptionInfo): - (JSC::EvalExecutable::reparseExceptionInfo): - (JSC::FunctionExecutable::recompile): - (JSC::FunctionExecutable::FunctionExecutable): - * runtime/Executable.h: - (JSC::ExecutableBase::~ExecutableBase): - (JSC::ExecutableBase::ExecutableBase): - (JSC::ExecutableBase::source): - (JSC::ExecutableBase::sourceID): - (JSC::ExecutableBase::lastLine): - (JSC::ExecutableBase::usesEval): - (JSC::ExecutableBase::usesArguments): - (JSC::ExecutableBase::needsActivation): - (JSC::ExecutableBase::astNode): - (JSC::ExecutableBase::generatedJITCode): - (JSC::ExecutableBase::getExecutablePool): - (JSC::EvalExecutable::EvalExecutable): - (JSC::EvalExecutable::bytecode): - (JSC::EvalExecutable::varStack): - (JSC::EvalExecutable::evalNode): - (JSC::EvalExecutable::jitCode): - (JSC::ProgramExecutable::ProgramExecutable): - (JSC::ProgramExecutable::reparseExceptionInfo): - (JSC::ProgramExecutable::bytecode): - (JSC::ProgramExecutable::programNode): - (JSC::ProgramExecutable::jitCode): - (JSC::FunctionExecutable::FunctionExecutable): - (JSC::FunctionExecutable::name): - (JSC::FunctionExecutable::bytecode): - (JSC::FunctionExecutable::generatedBytecode): - (JSC::FunctionExecutable::usesEval): - (JSC::FunctionExecutable::usesArguments): - (JSC::FunctionExecutable::parameterCount): - (JSC::FunctionExecutable::paramString): - (JSC::FunctionExecutable::isGenerated): - (JSC::FunctionExecutable::body): - (JSC::FunctionExecutable::jitCode): - (JSC::FunctionExecutable::createNativeThunk): - * runtime/FunctionConstructor.cpp: - (JSC::constructFunction): - * runtime/FunctionPrototype.cpp: - (JSC::functionProtoFuncToString): - * runtime/JSActivation.cpp: - (JSC::JSActivation::JSActivation): - (JSC::JSActivation::markChildren): - (JSC::JSActivation::isDynamicScope): - (JSC::JSActivation::argumentsGetter): - * runtime/JSActivation.h: - (JSC::JSActivation::JSActivationData::JSActivationData): - * runtime/JSFunction.cpp: - (JSC::JSFunction::isHostFunction): - (JSC::JSFunction::JSFunction): - (JSC::JSFunction::~JSFunction): - (JSC::JSFunction::markChildren): - (JSC::JSFunction::getCallData): - (JSC::JSFunction::call): - (JSC::JSFunction::lengthGetter): - (JSC::JSFunction::getConstructData): - (JSC::JSFunction::construct): - * runtime/JSFunction.h: - (JSC::JSFunction::executable): - (JSC::FunctionExecutable::make): - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::JSGlobalData): - (JSC::JSGlobalData::numericCompareFunction): - * runtime/JSGlobalData.h: - -2009-08-17 Mark Rowe <mrowe@apple.com> - - Reviewed by Darin Adler. - - Fix 300,000+ leaks seen during the regression tests. - - EvalCodeCache::get was heap-allocating an EvalExecutable instance without adopting the initial reference. - While fixing this we noticed that EvalExecutable was a RefCounted type that was sometimes stack allocated. - To make this cleaner and to prevent clients from attempting to ref a stack-allocated instance, we move the - refcounting down to a new CacheableEvalExecutable class that derives from EvalExecutable. EvalCodeCache::get - now uses CacheableEvalExecutable::create and avoids the leak. - - * bytecode/EvalCodeCache.h: - (JSC::EvalCodeCache::get): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::callEval): - * runtime/Executable.h: - (JSC::CacheableEvalExecutable::create): - (JSC::CacheableEvalExecutable::CacheableEvalExecutable): - -2009-08-17 Oliver Hunt <oliver@apple.com> - - RS=Mark Rowe. - - REGRESSION (r47292): Prototype.js is broken by ES5 Arguments changes - https://bugs.webkit.org/show_bug.cgi?id=28341 - <rdar://problem/7145615> - - Reverting r47292. Alas Prototype.js breaks with Arguments inheriting - from Array as ES5 attempted. Prototype.js defines $A in terms of a - function it places on (among other global objects) the Array prototype, - thus breaking $A for arrays. - - * runtime/Arguments.h: - (JSC::Arguments::Arguments): - * runtime/JSGlobalObject.cpp: - (JSC::JSGlobalObject::reset): - (JSC::JSGlobalObject::markChildren): - * runtime/JSGlobalObject.h: - (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): - * runtime/ObjectPrototype.cpp: - (JSC::ObjectPrototype::ObjectPrototype): - * runtime/ObjectPrototype.h: - * tests/mozilla/ecma_3/Function/arguments-001.js: - -2009-08-17 Peter Kasting <pkasting@google.com> - - Reviewed by Steve Falkenburg. - - https://bugs.webkit.org/show_bug.cgi?id=27323 - Only add Cygwin to the path when it isn't already there. This avoids - causing problems for people who purposefully have non-Cygwin versions of - executables like svn in front of the Cygwin ones in their paths. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: - * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: - * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: - * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: - -2009-08-17 Xan Lopez <xlopez@igalia.com> - - Reviewed by Mark Rowe. - - Fix build with FAST_MALLOC_MATCH_VALIDATION enabled. - - * wtf/FastMalloc.cpp: - (WTF::fastMalloc): - (WTF::fastCalloc): - (WTF::fastRealloc): - -2009-08-16 Holger Hans Peter Freyther <zecke@selfish.org> - - Reviewed by Mark Rowe. - - Fix crash on ./ecma_2/RegExp/exec-002.js. - https://bugs.webkit.org/show_bug.cgi?id=28353 - - Change the order of freeParenthesesDisjunctionContext and - popParenthesesDisjunctionContext on all call sites as the pop - method is accessing backTrack->lastContext which is the context - that is about to be freed. - - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::Interpreter::parenthesesDoBacktrack): - (JSC::Yarr::Interpreter::backtrackParentheses): - -2009-08-16 Holger Hans Peter Freyther <zecke@selfish.org> - - Reviewed by Mark Rowe. - - https://bugs.webkit.org/show_bug.cgi?id=28352 - - Fix coding style violations. Use m_ for C++ class members. Remove - trailing whitespace on empty lines. - - * yarr/RegexInterpreter.cpp: - (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::ParenthesesDisjunctionContext): - (JSC::Yarr::Interpreter::tryConsumeCharacter): - (JSC::Yarr::Interpreter::tryConsumeBackReference): - (JSC::Yarr::Interpreter::parenthesesDoBacktrack): - (JSC::Yarr::Interpreter::backtrackParentheses): - (JSC::Yarr::ByteCompiler::ByteCompiler): - (JSC::Yarr::ByteCompiler::compile): - (JSC::Yarr::ByteCompiler::checkInput): - (JSC::Yarr::ByteCompiler::assertionBOL): - (JSC::Yarr::ByteCompiler::assertionEOL): - (JSC::Yarr::ByteCompiler::assertionWordBoundary): - (JSC::Yarr::ByteCompiler::atomPatternCharacter): - (JSC::Yarr::ByteCompiler::atomCharacterClass): - (JSC::Yarr::ByteCompiler::atomBackReference): - (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin): - (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin): - (JSC::Yarr::ByteCompiler::popParenthesesStack): - (JSC::Yarr::ByteCompiler::closeAlternative): - (JSC::Yarr::ByteCompiler::closeBodyAlternative): - (JSC::Yarr::ByteCompiler::atomParenthesesEnd): - (JSC::Yarr::ByteCompiler::regexBegin): - (JSC::Yarr::ByteCompiler::alterantiveBodyDisjunction): - (JSC::Yarr::ByteCompiler::alterantiveDisjunction): - (JSC::Yarr::ByteCompiler::emitDisjunction): - -2009-08-15 Mark Rowe <mrowe@apple.com> - - Fix the build with JIT disabled. - - * runtime/Arguments.h: Only compile the jitCode method when the JIT is enabled. - * runtime/Executable.h: Include PrototypeFunction.h so the compiler knows what - NativeFunctionWrapper is when the JIT is disabled. - -2009-08-15 Adam Bergkvist <adam.bergkvist@ericsson.com> - - Reviewed by Sam Weinig. - - Added ENABLE_EVENTSOURCE flag. - https://bugs.webkit.org/show_bug.cgi?id=14997 - - * Configurations/FeatureDefines.xcconfig: - -2009-08-14 Gavin Barraclough <barraclough@apple.com> - - Reviewed by NOBODY (build fix). - - * parser/Parser.h: - (JSC::EvalExecutable::parse): - (JSC::ProgramExecutable::parse): - * runtime/Executable.h: - -2009-08-14 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Remove AST nodes from use within the Runtime (outside of parsing), stage 1 - https://bugs.webkit.org/show_bug.cgi?id=28330 - - Remove the EvalNode and ProgramNode from use in the runtime. They still exist - after this patch, but are hidden behind EvalExecutable and FunctionExecutable, - and are also still reachable behind CodeBlock::m_ownerNode. - - The next step will be to beat back FunctionBodyNode in the same fashion. - Then remove the usage via CodeBlock, then only construct these nodes only on - demand during bytecode generation. - - * JavaScriptCore.xcodeproj/project.pbxproj: - * bytecode/CodeBlock.h: - (JSC::GlobalCodeBlock::GlobalCodeBlock): - (JSC::GlobalCodeBlock::~GlobalCodeBlock): - (JSC::ProgramCodeBlock::ProgramCodeBlock): - (JSC::EvalCodeBlock::EvalCodeBlock): - (JSC::FunctionCodeBlock::FunctionCodeBlock): - (JSC::NativeCodeBlock::NativeCodeBlock): - * bytecode/EvalCodeCache.h: - (JSC::EvalCodeCache::get): - * debugger/Debugger.cpp: - (JSC::evaluateInGlobalCallFrame): - * debugger/DebuggerCallFrame.cpp: - (JSC::DebuggerCallFrame::evaluate): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::callEval): - (JSC::Interpreter::execute): - * interpreter/Interpreter.h: - * parser/Nodes.cpp: - (JSC::FunctionBodyNode::createNativeThunk): - (JSC::FunctionBodyNode::generateBytecode): - (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse): - * parser/Parser.h: - (JSC::Parser::parse): - (JSC::Parser::reparse): - (JSC::Parser::parseFunctionFromGlobalCode): - (JSC::::parse): - * runtime/Completion.cpp: - (JSC::checkSyntax): - (JSC::evaluate): - * runtime/Error.cpp: - (JSC::throwError): - * runtime/Error.h: - * runtime/Executable.h: Added. - (JSC::TemplateExecutable::TemplateExecutable): - (JSC::TemplateExecutable::markAggregate): - (JSC::TemplateExecutable::sourceURL): - (JSC::TemplateExecutable::lineNo): - (JSC::TemplateExecutable::bytecode): - (JSC::TemplateExecutable::jitCode): - (JSC::EvalExecutable::EvalExecutable): - (JSC::ProgramExecutable::ProgramExecutable): - * runtime/FunctionConstructor.cpp: - (JSC::constructFunction): - * runtime/FunctionConstructor.h: - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::numericCompareFunction): - * runtime/JSGlobalObject.cpp: - (JSC::JSGlobalObject::~JSGlobalObject): - (JSC::JSGlobalObject::markChildren): - * runtime/JSGlobalObject.h: - (JSC::JSGlobalObject::codeBlocks): - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::globalFuncEval): - -2009-08-14 Darin Adler <darin@apple.com> - - Reviewed by Sam Weinig. - - Rename the confusing isObject(<class>) to inherits(<class>). - It still works on non-objects, returning false. - - * runtime/ArrayConstructor.cpp: - (JSC::arrayConstructorIsArray): Removed unneeded isObject call - and updated remaining isObject call to new name, inherits. - - * runtime/JSCell.h: Renamed isObject(<class>) to inherits(<class>) - but more importantly, made it non-virtual (it was already inline) - so it is now as fast as JSObject::inherits was. - - * runtime/JSObject.h: Removed inherits function since the one - in the base class is fine as-is. Also made various JSCell functions - that should not be called on JSObject uncallable by making them - both private and not implemented. - (JSC::JSCell::inherits): Updated name. - (JSC::JSValue::inherits): Ditto. - - * debugger/Debugger.cpp: - (JSC::Debugger::recompileAllJSFunctions): - * interpreter/Interpreter.cpp: - (JSC::Interpreter::unwindCallFrame): - * runtime/ArrayPrototype.cpp: - (JSC::arrayProtoFuncToString): - (JSC::arrayProtoFuncToLocaleString): - (JSC::arrayProtoFuncConcat): - * runtime/BooleanPrototype.cpp: - (JSC::booleanProtoFuncToString): - (JSC::booleanProtoFuncValueOf): - * runtime/DateConstructor.cpp: - (JSC::constructDate): - * runtime/DatePrototype.cpp: - (JSC::dateProtoFuncToString): - (JSC::dateProtoFuncToUTCString): - (JSC::dateProtoFuncToISOString): - (JSC::dateProtoFuncToDateString): - (JSC::dateProtoFuncToTimeString): - (JSC::dateProtoFuncToLocaleString): - (JSC::dateProtoFuncToLocaleDateString): - (JSC::dateProtoFuncToLocaleTimeString): - (JSC::dateProtoFuncGetTime): - (JSC::dateProtoFuncGetFullYear): - (JSC::dateProtoFuncGetUTCFullYear): - (JSC::dateProtoFuncToGMTString): - (JSC::dateProtoFuncGetMonth): - (JSC::dateProtoFuncGetUTCMonth): - (JSC::dateProtoFuncGetDate): - (JSC::dateProtoFuncGetUTCDate): - (JSC::dateProtoFuncGetDay): - (JSC::dateProtoFuncGetUTCDay): - (JSC::dateProtoFuncGetHours): - (JSC::dateProtoFuncGetUTCHours): - (JSC::dateProtoFuncGetMinutes): - (JSC::dateProtoFuncGetUTCMinutes): - (JSC::dateProtoFuncGetSeconds): - (JSC::dateProtoFuncGetUTCSeconds): - (JSC::dateProtoFuncGetMilliSeconds): - (JSC::dateProtoFuncGetUTCMilliseconds): - (JSC::dateProtoFuncGetTimezoneOffset): - (JSC::dateProtoFuncSetTime): - (JSC::setNewValueFromTimeArgs): - (JSC::setNewValueFromDateArgs): - (JSC::dateProtoFuncSetYear): - (JSC::dateProtoFuncGetYear): - * runtime/FunctionPrototype.cpp: - (JSC::functionProtoFuncToString): - * runtime/JSActivation.cpp: - (JSC::JSActivation::argumentsGetter): - * runtime/JSValue.h: - * runtime/RegExpConstructor.cpp: - (JSC::constructRegExp): - * runtime/RegExpPrototype.cpp: - (JSC::regExpProtoFuncTest): - (JSC::regExpProtoFuncExec): - (JSC::regExpProtoFuncCompile): - (JSC::regExpProtoFuncToString): - * runtime/ScopeChain.cpp: - (JSC::ScopeChain::localDepth): - * runtime/StringPrototype.cpp: - (JSC::stringProtoFuncReplace): - (JSC::stringProtoFuncToString): - (JSC::stringProtoFuncMatch): - (JSC::stringProtoFuncSearch): - (JSC::stringProtoFuncSplit): - Updated to new name, inherits, from old name, isObject. - -2009-07-31 Harald Fernengel <harald.fernengel@nokia.com> - - Reviewed by Simon Hausmann. - - Adding QNX as a platform. Currently only tested with Qt. - - https://bugs.webkit.org/show_bug.cgi?id=27885 - - * JavaScriptCore/runtime/Collector.cpp: Added retrieving of stack base - since QNX doesn't have the pthread _nt functions - * JavaScriptCore/wtf/Platform.h: Added WTF_PLATFORM_QNX and corresponding - defines - * WebCore/bridge/npapi.h: Build fix for missing typedefs on QNX - -2009-08-14 Gabor Loki <loki@inf.u-szeged.hu> - - Reviewed by Simon Hausmann. - - Currently generic ARM and ARMv7 platforms work only with JSVALUE32 - https://bugs.webkit.org/show_bug.cgi?id=28300 - - * wtf/Platform.h: - -2009-08-14 Gabor Loki <loki@inf.u-szeged.hu> - - Reviewed by Simon Hausmann. - - Enable JIT on ARM for QT by default - https://bugs.webkit.org/show_bug.cgi?id=28259 - - * wtf/Platform.h: - -2009-08-14 Gabor Loki <loki@inf.u-szeged.hu> - - Reviewed by Simon Hausmann. - - Enable YARR_JIT on ARM for QT by default - https://bugs.webkit.org/show_bug.cgi?id=28259 - - * wtf/Platform.h: - -2009-08-14 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - [ES5] Arguments object should inherit from Array - https://bugs.webkit.org/show_bug.cgi?id=28298 - - Make the Arguments object conform to the behaviour specified in ES5. - The simple portion of this is to make Arguments use Array.prototype - as its prototype rather than Object.prototype. - - The spec then requires us to set instance.constructor to the pristine - Object constructor, and instance.toString and instance.toLocaleString - to the pristine versions from Object.prototype. To do this we now - make the ObjectPrototype constructor return its toString and - toLocaleString functions (similar to the call and apply functions - from FunctionPrototype). - - Oddly enough this reports itself as a slight win, but given the code - isn't hit in the tests that claim to have improved I put this down to - code motion. - - * runtime/Arguments.h: - (JSC::Arguments::Arguments): - (JSC::Arguments::initializeStandardProperties): - * runtime/JSGlobalObject.cpp: - (JSC::JSGlobalObject::reset): - (JSC::JSGlobalObject::markChildren): - * runtime/JSGlobalObject.h: - (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): - (JSC::JSGlobalObject::objectConstructor): - (JSC::JSGlobalObject::objectToStringFunction): - (JSC::JSGlobalObject::objectToLocaleStringFunction): - * runtime/ObjectPrototype.cpp: - (JSC::ObjectPrototype::ObjectPrototype): - * runtime/ObjectPrototype.h: - * tests/mozilla/ecma_3/Function/arguments-001.js: - Update test to new es5 behaviour - -2009-08-14 Oliver Hunt <oliver@apple.com> - - Reviewed by NOBODY (Build fix). - - Remove MarkStack::drain from the JSC exports file - - MarkStack::drain is now marked inline, the including it in the exports file - produces an ld warning - - * JavaScriptCore.exp: - -2009-08-13 Sam Weinig <sam@webkit.org> - - Reviewed by Oliver Hunt. - - Remove accidentally left in debugging statement. - - * runtime/JSArray.h: - (JSC::MarkStack::drain): - -2009-08-13 Oliver Hunt <oliver@apple.com> - - Reviewed by Maciej Stachowiak. - - [ES5] Implement Array.isArray - https://bugs.webkit.org/show_bug.cgi?id=28296 - - Add support for Array.isArray to the Array constructor - - * runtime/ArrayConstructor.cpp: - (JSC::ArrayConstructor::ArrayConstructor): - (JSC::arrayConstructorIsArray): - * runtime/ArrayConstructor.h: - * runtime/CommonIdentifiers.h: - * runtime/JSArray.h: - (JSC::MarkStack::drain): - * runtime/JSGlobalObject.cpp: - (JSC::JSGlobalObject::reset): - -2009-08-13 Oliver Hunt <oliver@apple.com> - - Reviewed by NOBODY (Buildfix). - - Attempt to fix windows build - - * runtime/Collector.cpp: - -2009-08-13 Oliver Hunt <oliver@apple.com> - - Reviewed by Maciej Stachowiak. - - Devirtualise marking - https://bugs.webkit.org/show_bug.cgi?id=28294 - - Add a bit to TypeInfo to indicate that an object uses the standard - JSObject::markChildren method. This allows us to devirtualise marking - of most objects (though a branch is still needed). We also add a branch - to identify arrays thus devirtualising marking in that case as well. - - In order to make the best use of this devirtualisation I've also reworked - the MarkStack::drain() logic to make the iteration more efficient. - - * API/JSCallbackConstructor.h: - (JSC::JSCallbackConstructor::createStructure): - * API/JSCallbackFunction.h: - (JSC::JSCallbackFunction::createStructure): - * JavaScriptCore.exp: - * runtime/BooleanObject.h: - (JSC::BooleanObject::createStructure): - * runtime/FunctionPrototype.h: - (JSC::FunctionPrototype::createStructure): - * runtime/InternalFunction.h: - (JSC::InternalFunction::createStructure): - * runtime/JSAPIValueWrapper.h: - (JSC::JSAPIValueWrapper::JSAPIValueWrapper): - * runtime/JSArray.cpp: - (JSC::JSArray::markChildren): - * runtime/JSArray.h: - (JSC::JSArray::markChildrenDirect): - (JSC::MarkStack::drain): - * runtime/JSByteArray.cpp: - (JSC::JSByteArray::createStructure): - * runtime/JSCell.h: - (JSC::MarkStack::append): - * runtime/JSGlobalData.cpp: - (JSC::JSGlobalData::JSGlobalData): - * runtime/JSNumberCell.h: - (JSC::JSNumberCell::createStructure): - * runtime/JSONObject.h: - (JSC::JSONObject::createStructure): - * runtime/JSObject.cpp: - (JSC::JSObject::markChildren): - * runtime/JSObject.h: - (JSC::JSObject::markChildrenDirect): - (JSC::JSObject::createStructure): - * runtime/JSString.h: - (JSC::JSString::createStructure): - * runtime/JSType.h: - (JSC::): - * runtime/MarkStack.h: - (JSC::MarkStack::MarkStack): - (JSC::MarkStack::MarkSet::MarkSet): - (JSC::MarkStack::MarkStackArray::last): - * runtime/MathObject.h: - (JSC::MathObject::createStructure): - * runtime/NumberConstructor.h: - (JSC::NumberConstructor::createStructure): - * runtime/NumberObject.h: - (JSC::NumberObject::createStructure): - * runtime/RegExpConstructor.h: - (JSC::RegExpConstructor::createStructure): - * runtime/RegExpObject.h: - (JSC::RegExpObject::createStructure): - * runtime/StringObjectThatMasqueradesAsUndefined.h: - (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): - * runtime/TypeInfo.h: - (JSC::TypeInfo::hasDefaultMark): - -2009-08-13 Darin Adler <darin@apple.com> - - Reviewed by Mark Rowe. - - Some small bits of housekeeping. - - * JavaScriptCore.xcodeproj/project.pbxproj: Make Parser.h - project instead of private. Remove JSONObject.lut.h. - - * assembler/ARMAssembler.h: Remove unneeded WTF prefix. - * assembler/AssemblerBufferWithConstantPool.h: Ditto. - * bytecompiler/BytecodeGenerator.h: Ditto. - - * wtf/SegmentedVector.h: Add a "using" statement as we do - with the other WTF headers. - -2009-08-13 Darin Adler <darin@apple.com> - - Fix Tiger build. - - * parser/Grammar.y: Use a template function so we can compile - setStatementLocation even if it comes before YYLTYPE is defined. - -2009-08-13 Darin Adler <darin@apple.com> - - Reviewed by George Staikos. - - Too much use of void* in Grammar.y - https://bugs.webkit.org/show_bug.cgi?id=28287 - - * parser/Grammar.y: Changed all the helper functions to - take a JSGlobalData* instead of a void*. A couple formatting - tweaks that I missed when breaking this into pieces. - -2009-08-13 Darin Adler <darin@apple.com> - - Reviewed by George Staikos. - - Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 - - * parser/Grammar.y: Reduced and sorted includes. Tweaked comment - format. Marked a few more functions inline. - -2009-08-13 Darin Adler <darin@apple.com> - - Reviewed by George Staikos. - - Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 - - * parser/Grammar.y: Pass the number to the PropertyNode instead of - first turning it into an Identifier. - - * parser/NodeConstructors.h: - (JSC::PropertyNode::PropertyNode): Add an overload that takes a double - so the code to convert to a string can be here instead of Grammar.y. - * parser/Nodes.h: Ditto. - -2009-08-13 Darin Adler <darin@apple.com> - - Reviewed by George Staikos. - - Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 - - * parser/Grammar.y: Eliminate the DBG macro. - -2009-08-13 Darin Adler <darin@apple.com> - - Reviewed by George Staikos. - - Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 - - * parser/Grammar.y: Eliminate the SET_EXCEPTION_LOCATION macro. - -2009-08-13 Darin Adler <darin@apple.com> - - Reviewed by George Staikos. - - George asked me to break the patch from - https://bugs.webkit.org/show_bug.cgi?id=28287 - into smaller pieces and land it in stages. - - * parser/Grammar.y: Eliminate the LEXER macro. - -2009-08-13 Mark Rowe <mrowe@apple.com> - - Try some more to fix the Windows build. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto. - -2009-08-13 Mark Rowe <mrowe@apple.com> - - Try and fix the Windows build. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol. - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto. - -2009-08-13 Darin Adler <darin@apple.com> - - Reviewed by David Levin. - - JavaScriptCore tweaks to get ready for the parser arena - https://bugs.webkit.org/show_bug.cgi?id=28243 - - Eliminate dependencies on Nodes.h outside JavaScriptCore, - and cut down on them inside JavaScriptCore. - - Change regular expression parsing to use identifiers as - with other strings we parse. - - Fix a couple things that are needed to use const Identifier - more, which will be part of the parser arena work. - - * JavaScriptCore.exp: Resorted and updated. - - * JavaScriptCore.xcodeproj/project.pbxproj: Changed - CollectorHeapIterator.h to be project-internal. - - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::emitPushNewScope): Added const. - * bytecompiler/BytecodeGenerator.h: Ditto. - - * debugger/Debugger.cpp: - (JSC::Debugger::recompileAllJSFunctions): Moved this function - here from WebCore. Here is better since it uses so many internals. - Removed unimportant optimization for the no listener case. - * debugger/Debugger.h: Ditto. Also removed unneeded include - and tweaked formatting and comments. - - * debugger/DebuggerCallFrame.cpp: - (JSC::DebuggerCallFrame::functionName): Call asFunction instead - of doing the unchecked static_cast. - (JSC::DebuggerCallFrame::calculatedFunctionName): Ditto. - - * jit/JITStubs.cpp: - (JSC::op_call_JSFunction): Call isHostFunction on the body rather - than on the JSFunction. - (JSC::vm_lazyLinkCall): Ditto. - (JSC::op_construct_JSConstruct): Ditto. - - * parser/Grammar.y: Changed callers to use new scanRegExp with - out arguments instead of relying on state in the Lexer. And - callers that just want to skip a regular expression to use - skipRegExp. - - * parser/Lexer.cpp: - (JSC::Lexer::scanRegExp): Changed to use out arguments, and to - add a prefix argument so we can add in the "=" character as needed. - Also rewrote to streamline the logic a bit inspired by suggestions - by David Levin. - (JSC::Lexer::skipRegExp): Added. Version of the function above that - does not actually put the regular expression into a string. - (JSC::Lexer::clear): Removed code to clear m_pattern and m_flags. - * parser/Lexer.h: Changed scanRegExp to have out arguments. Added - skipRegExp. Eliminated pattern, flags, m_pattern, and m_flags. - - * parser/NodeConstructors.h: - (JSC::RegExpNode::RegExpNode): Changed to take const Identifier&. - * parser/Nodes.cpp: - (JSC::RegExpNode::emitBytecode): Changed since m_pattern and - m_flags are now Identifier instead of UString. - (JSC::FunctionBodyNode::make): Moved this function here instead - of putting it in the JSFunction.h header. - * parser/Nodes.h: Changed RegExpNode to use Identifier. - - * profiler/Profiler.cpp: - (JSC::Profiler::createCallIdentifier): Changed to use isHostFunction - on the body instead of on the JSFunction object. - * runtime/FunctionPrototype.cpp: - (JSC::functionProtoFuncToString): Ditto. - - * runtime/JSFunction.cpp: - (JSC::JSFunction::isHostFunction): Moved here from header. - (JSC::JSFunction::isHostFunctionNonInline): Added. - (JSC::JSFunction::JSFunction): Removed unneeded initialization of - m_body to 0. - (JSC::JSFunction::setBody): Moved here from header. - - * runtime/JSFunction.h: Removed unneeded includes. Moved private - constructor down to the private section. Made virtual functions - private. Removed unneeded overload of setBody and moved the body - of the function into the .cpp file. Changed assertions to use - the non-inline version of isHostFunction. - - * runtime/PropertySlot.cpp: - (JSC::PropertySlot::functionGetter): Use asFunction instead - of doing the unchecked static_cast. - - * wtf/SegmentedVector.h: - (WTF::SegmentedVector::isEmpty): Added. - -2009-08-13 Mark Rowe <mrowe@apple.com> - - Rubber-stamped by Darin Adler. - - Use the version of operator new that takes a JSGlobalData when allocating FuncDeclNode and FuncExprNode - from within the grammar to prevent these nodes from being leaked. - - * parser/Grammar.y: - -2009-08-13 Simon Hausmann <simon.hausmann@nokia.com> - - Reviewed by Ariya Hidayat. - - Remove the special-case for Qt wrt JSVALUE_32 introduced in - r46709. It must've been a dependency issue on the bot, as - after a manual build all the tests pass on amd64 and ia32. - - * wtf/Platform.h: - -2009-08-12 Gabor Loki <loki@inf.u-szeged.hu> - - Reviewed by Gavin Barraclough. - - Add optimize call and property access support for ARM JIT. - https://bugs.webkit.org/show_bug.cgi?id=24986 - - For tightly coupled sequences the BEGIN_UNINTERRUPTED_SEQUENCE and - END_UNINTERRUPTED_SEQUENCE macros have been introduced which ensure - space for instructions and constants of the named sequence. This - method is vital for those architecture which are using constant pool. - - The 'latePatch' method - which was linked to JmpSrc - is replaced with - a port specific solution (each calls are marked to place their address - on the constant pool). - - * assembler/ARMAssembler.cpp: - (JSC::ARMAssembler::linkBranch): - (JSC::ARMAssembler::executableCopy): Add extra align for constant pool. - * assembler/ARMAssembler.h: - (JSC::ARMAssembler::JmpSrc::JmpSrc): - (JSC::ARMAssembler::sizeOfConstantPool): - (JSC::ARMAssembler::jmp): - (JSC::ARMAssembler::linkCall): - * assembler/ARMv7Assembler.h: - * assembler/AbstractMacroAssembler.h: - * assembler/AssemblerBufferWithConstantPool.h: - (JSC::AssemblerBufferWithConstantPool::flushIfNoSpaceFor): Fix the - computation of the remaining space. - * assembler/MacroAssemblerARM.h: - (JSC::MacroAssemblerARM::branch32): - (JSC::MacroAssemblerARM::nearCall): - (JSC::MacroAssemblerARM::call): - (JSC::MacroAssemblerARM::branchPtrWithPatch): - (JSC::MacroAssemblerARM::ensureSpace): - (JSC::MacroAssemblerARM::sizeOfConstantPool): - (JSC::MacroAssemblerARM::prepareCall): - * assembler/X86Assembler.h: - * jit/JIT.h: - * jit/JITCall.cpp: - (JSC::JIT::compileOpCall): - * jit/JITInlineMethods.h: - (JSC::JIT::beginUninterruptedSequence): - (JSC::JIT::endUninterruptedSequence): - * jit/JITPropertyAccess.cpp: - (JSC::JIT::emit_op_method_check): - (JSC::JIT::compileGetByIdHotPath): - (JSC::JIT::compileGetByIdSlowCase): - (JSC::JIT::emit_op_put_by_id): - -2009-08-12 Gavin Barraclough <barraclough@apple.com> - - Rubber Stamped by Dave Kilzer. - - Disable WTF_USE_JSVALUE32_64 on iPhone for now (support not yet added for ARMv7). - - * wtf/Platform.h: - -2009-08-12 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Maciej Stachoviak. - - Ooops - moved code that had been accidentally added to op_new_func instead of - op_new_func_exp, to where it shoulds be. - - * interpreter/Interpreter.cpp: - (JSC::Interpreter::privateExecute): - * wtf/Platform.h: - -2009-08-12 Ada Chan <adachan@apple.com> - - Added workaround for the limitation that VirtualFree with MEM_RELEASE - can only accept the base address returned by VirtualAlloc when the region - was reserved and it can only free the entire region, and not a part of it. - - Reviewed by Oliver Hunt. - - * runtime/MarkStack.h: - (JSC::MarkStack::MarkStackArray::shrinkAllocation): - * runtime/MarkStackWin.cpp: - (JSC::MarkStack::releaseStack): - -2009-08-12 Balazs Kelemen <kelemen.balazs.3@stud.u-szeged.hu> - - Reviewed by Ariya Hidayat. - - Build fix: use std::numeric_limits<long long>::min() instead of LLONG_MIN - since LLONG_MIN is not defined in standard c++. - - * runtime/UString.cpp: - (JSC::UString::from): - -2009-08-12 Benjamin Otte <otte@gnome.org> - - Reviewed by Jan Alonzo. - - Buildfix for Gtk platforms debug builds. - - * GNUmakefile.am: Choose MarkStackPosix.cpp or MarkStackWin.cpp - depending on platform. - -2009-08-12 Simon Hausmann <simon.hausmann@nokia.com> - - Prospective build fix for Mac and 32-bit Windows. - - * runtime/UString.cpp: Include wtf/StringExtras.h for snprintf. - (JSC::UString::from): Use %lld instead of %I64d for snprintf - on non-windows platforms. - -2009-08-12 Prasanth Ullattil <prasanth.ullattil@nokia.com> - - Reviewed by Simon Hausmann. - - Fix compile error on 64Bit Windows, when UString::from - is called with an intptr_t. - - Added new UString::From overload with long long parameter. - - Thanks to Holger for the long long idea. - - * runtime/UString.cpp: - (JSC::UString::from): - * runtime/UString.h: - -2009-08-11 Oliver Hunt <oliver@apple.com> - - Reviewed by Mark Rowe. - - Minor style fixes. - - * runtime/UString.h: - (JSC::UString::Rep::createEmptyBuffer): - * wtf/FastMalloc.h: - (WTF::TryMallocReturnValue::getValue): - -2009-08-11 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - Make it harder to misuse try* allocation routines - https://bugs.webkit.org/show_bug.cgi?id=27469 - - Jump through a few hoops to make it much harder to accidentally - miss null-checking of values returned by the try-* allocation - routines. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: - * JavaScriptCore.xcodeproj/project.pbxproj: - * runtime/JSArray.cpp: - (JSC::JSArray::putSlowCase): - (JSC::JSArray::increaseVectorLength): - * runtime/StringPrototype.cpp: - (JSC::stringProtoFuncFontsize): - (JSC::stringProtoFuncLink): - * runtime/UString.cpp: - (JSC::allocChars): - (JSC::reallocChars): - (JSC::expandCapacity): - (JSC::UString::Rep::reserveCapacity): - (JSC::UString::expandPreCapacity): - (JSC::createRep): - (JSC::concatenate): - (JSC::UString::spliceSubstringsWithSeparators): - (JSC::UString::replaceRange): - (JSC::UString::append): - (JSC::UString::operator=): - * runtime/UString.h: - (JSC::UString::Rep::createEmptyBuffer): - * wtf/FastMalloc.cpp: - (WTF::tryFastZeroedMalloc): - (WTF::tryFastMalloc): - (WTF::tryFastCalloc): - (WTF::tryFastRealloc): - (WTF::TCMallocStats::tryFastMalloc): - (WTF::TCMallocStats::tryFastCalloc): - (WTF::TCMallocStats::tryFastRealloc): - * wtf/FastMalloc.h: - (WTF::TryMallocReturnValue::TryMallocReturnValue): - (WTF::TryMallocReturnValue::~TryMallocReturnValue): - (WTF::TryMallocReturnValue::operator PossiblyNull<T>): - (WTF::TryMallocReturnValue::getValue): - * wtf/Platform.h: - * wtf/PossiblyNull.h: Added. - (WTF::PossiblyNull::PossiblyNull): - (WTF::PossiblyNull::~PossiblyNull): - (WTF::::getValue): - -2009-08-11 Gavin Barraclough <barraclough@apple.com> - - Reviewed by NOBODY (build fix part deux). - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: - -2009-08-11 Gavin Barraclough <barraclough@apple.com> - - Reviewed by NOBODY (build fix). - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: - -2009-08-11 Gavin Barraclough <barraclough@apple.com> - - Reviewed by Oliver Hunt. - - Restrict use of FuncDeclNode & FuncExprNode to the parser. - https://bugs.webkit.org/show_bug.cgi?id=28209 - - These objects were also being referenced from the CodeBlock. By changing this - to just retain pointers to FunctionBodyNodes these classes can be restricted to - use during parsing. - - No performance impact (or sub-percent progression). - - * JavaScriptCore.exp: - Update symbols. - - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::mark): - (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): - (JSC::CodeBlock::shrinkToFit): - * bytecode/CodeBlock.h: - (JSC::CodeBlock::addFunction): - (JSC::CodeBlock::function): - Unify m_functions & m_functionExpressions into a single Vector<RefPtr<FuncExprNode> >. - - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::BytecodeGenerator): - (JSC::BytecodeGenerator::addConstant): - (JSC::BytecodeGenerator::emitNewFunction): - (JSC::BytecodeGenerator::emitNewFunctionExpression): - * bytecompiler/BytecodeGenerator.h: - FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes. - - * interpreter/Interpreter.cpp: - (JSC::Interpreter::execute): - (JSC::Interpreter::privateExecute): - Update to reflect chnages in CodeBlock. - - * jit/JITOpcodes.cpp: - (JSC::JIT::emit_op_new_func_exp): - * jit/JITStubs.cpp: - (JSC::DEFINE_STUB_FUNCTION): - * jit/JITStubs.h: - (JSC::): - Update to reflect chnages in CodeBlock. - - * parser/Grammar.y: - FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes. - - * parser/NodeConstructors.h: - (JSC::FuncExprNode::FuncExprNode): - (JSC::FuncDeclNode::FuncDeclNode): - * parser/Nodes.cpp: - (JSC::ScopeNodeData::mark): - (JSC::FunctionBodyNode::finishParsing): - * parser/Nodes.h: - (JSC::FunctionBodyNode::ident): - Move m_ident & make methods from FuncDeclNode & FuncExprNode to FunctionBodyNode. - - * runtime/JSFunction.h: - (JSC::FunctionBodyNode::make): - Make this method inline (was FuncDeclNode::makeFunction). - -2009-08-11 Oliver Hunt <oliver@apple.com> - - Reviewed by Gavin Barraclough. - - Native JSON.stringify does not omit functions - https://bugs.webkit.org/show_bug.cgi?id=28117 - - Objects that are callable should be treated as undefined when - serialising to JSON. - - * runtime/JSONObject.cpp: - (JSC::Stringifier::appendStringifiedValue): - -2009-08-11 Oliver Hunt <oliver@apple.com> - - Reviewed by Geoff Garen. - - REGRESSION: Hang/crash in BytecodeGenerator::constRegisterFor loading simple page - https://bugs.webkit.org/show_bug.cgi?id=28169 - - Handle the case where someone has attempted to shadow a property - on the global object with a constant. - - * bytecompiler/BytecodeGenerator.cpp: - (JSC::BytecodeGenerator::constRegisterFor): - * parser/Nodes.cpp: - (JSC::ConstDeclNode::emitCodeSingle): - -2009-08-11 John Gregg <johnnyg@google.com> - - Reviewed by Maciej Stachowiak. - - Desktop Notifications API - https://bugs.webkit.org/show_bug.cgi?id=25463 - - Adds ENABLE_NOTIFICATION flag. - - * Configurations/FeatureDefines.xcconfig: - * wtf/Platform.h: - -2009-08-11 Maxime Simon <simon.maxime@gmail.com> - - Reviewed by Eric Seidel. - - Modifications on JavaScriptCore to allow Haiku port. - https://bugs.webkit.org/show_bug.cgi?id=28121 - - * runtime/Collector.cpp: Haiku doesn't have sys/mman.h, using OS.h instead. - (JSC::currentThreadStackBase): Haiku uses its own threading system. - * wtf/Platform.h: Defining all Haiku platform values. - * wtf/haiku/MainThreadHaiku.cpp: Adding a missing header (NotImplemented.h). - -2009-08-11 Jessie Berlin <jberlin@apple.com> - - Reviewed by Adam Roben. - - Fix windows build. - - * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: - -2009-08-11 Csaba Osztrogonac <oszi@inf.u-szeged.hu> - - Reviewed by Tor Arne Vestbø. - - Buildfix for Qt-win platforms. - - * JavaScriptCore.pri: Choose MarkStackPosix.cpp or MarkStackWin.cpp depend on platform. - 2009-08-10 Oliver Hunt <oliver@apple.com> Reviewed by NOBODY (And another build fix). |