| 2010-05-24 Gavin Barraclough <barraclough@apple.com> | |
| Rubber Stamped by Sam Weinig. | |
| Accidentally committed double write of codeblock in Interpreter. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| 2010-05-24 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| https://bugs.webkit.org/show_bug.cgi?id=39583 | |
| Move creation of 'this' object from caller to callee in construction. | |
| Presently the caller of a constructor is responsible for providing a this | |
| object. Instead, move the object creation into a new op_create_this opcode, | |
| planted in the head of the contructor bytecode for a function. Since the | |
| prototype for the object is provided by performing a get_by_id on the callee, | |
| also add a new get_callee opcode (this is used to get the callee JSFunction | |
| into a register so that a normal get_by_id can be used). | |
| Currently the caller is also responsible for detecting when op_construct is | |
| performed on a JSFunction representing a host function, in which case an | |
| exception is thrown – and this check currently takes place when constructing | |
| the this object. Instead, mirroring the recent changes for non-host functions, | |
| add a parallel code-path for native constructors to follow, with a thunk for | |
| invoking native constructors provided by JITStubs, and a constructor-specific | |
| NativeFunction on NativeExecutable. Provide an implementation of a host | |
| constructor which will throw an exception. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::dump): | |
| (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset): | |
| * bytecode/CodeBlock.h: | |
| * bytecode/Opcode.h: | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::BytecodeGenerator): | |
| (JSC::BytecodeGenerator::emitConstruct): | |
| * bytecompiler/BytecodeGenerator.h: | |
| (JSC::BytecodeGenerator::emitGetByIdExceptionInfo): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): | |
| * jit/JIT.h: | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCall): | |
| (JSC::JIT::compileOpCallSlowCase): | |
| * jit/JITCall32_64.cpp: | |
| (JSC::JIT::compileOpCall): | |
| (JSC::JIT::compileOpCallSlowCase): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| (JSC::JIT::privateCompileCTINativeCall): | |
| (JSC::JIT::emit_op_neq_null): | |
| (JSC::JIT::emit_op_convert_this): | |
| (JSC::JIT::emit_op_get_callee): | |
| (JSC::JIT::emit_op_create_this): | |
| * jit/JITOpcodes32_64.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| (JSC::JIT::privateCompileCTINativeCall): | |
| (JSC::JIT::emit_op_get_callee): | |
| (JSC::JIT::emit_op_create_this): | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| (JSC::JITThunks::hostFunctionStub): | |
| * jit/JITStubs.h: | |
| (JSC::JITThunks::ctiNativeConstruct): | |
| (JSC::): | |
| * runtime/ExceptionHelpers.cpp: | |
| (JSC::createNotAnObjectError): | |
| * runtime/Executable.h: | |
| (JSC::NativeExecutable::create): | |
| (JSC::NativeExecutable::NativeExecutable): | |
| * runtime/JSFunction.cpp: | |
| (JSC::callHostFunctionAsConstructor): | |
| * runtime/JSFunction.h: | |
| 2010-05-23 Sam Weinig <sam@webkit.org> | |
| Fix windows build. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-05-23 Sam Weinig <sam@webkit.org> | |
| Reviewed by Oliver Hunt. | |
| Fix for https://bugs.webkit.org/show_bug.cgi?id=39575 | |
| Make JS DOMObject inherit from JSObjectWithGlobalObject instead of JSObject | |
| Expose the global object stored in JSObjectWithGlobalObject. | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/JSObjectWithGlobalObject.cpp: | |
| (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject): | |
| (JSC::JSObjectWithGlobalObject::globalObject): | |
| * runtime/JSObjectWithGlobalObject.h: | |
| 2010-05-21 Oliver Hunt <oliver@apple.com> | |
| "asm volatile" isn't valid outside of functions. | |
| Reviewed by Gavin Barraclough. | |
| * jit/JITStubs.cpp: | |
| 2010-05-21 Gavin Barraclough <barraclough@apple.com> | |
| Unreviewed build fix. | |
| Interpreter fix following r59974. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| * runtime/JSPropertyNameIterator.cpp: | |
| (JSC::JSPropertyNameIterator::get): | |
| * runtime/JSPropertyNameIterator.h: | |
| 2010-05-21 Gavin Barraclough <barraclough@apple.com> | |
| Rubber stamped by Oliver Hunt. | |
| Interpreter fix following r59939. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| 2010-05-21 David Levin <levin@chromium.org> | |
| Unreviewed build fix. | |
| * wtf/SizeLimits.cpp: Removed a check while I figure out how to write it properly. | |
| 2010-05-21 David Levin <levin@chromium.org> | |
| Reviewed by Darin Adler. | |
| Enforce size constraints on various data structures in JavaScriptCore/wtf. | |
| https://bugs.webkit.org/show_bug.cgi?id=39327 | |
| I only modified the default build for OSX and Chromium's build file to include WTFCompileAsserts.cpp | |
| as those should be sufficient to catch regressions on the size of the data structures. | |
| * JavaScriptCore.gypi: Added the WTFCompileAsserts.cpp file. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: Added the WTFCompileAsserts.cpp file. | |
| * runtime/UString.cpp: Added a compile assert for UString size. | |
| * wtf/SizeLimits.cpp: Added compile asserts for data structures that didn't have cpp files. | |
| * wtf/text/StringImpl.cpp: Added a compile assert for StringImpl size. | |
| 2010-05-21 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Bug 39509 - Exceptions raised when JSString::value() is called not always properly thrown. | |
| Missing some CHECK_FOR_EXCEPTION()s, cleanup NativeError construction (adding a property | |
| via the prototype was inefficient, and whilst trivially true that the property is is not | |
| a rope - and thus couldn't except - it would be hard to prove this). | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::callEval): | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * runtime/InternalFunction.cpp: | |
| (JSC::InternalFunction::name): | |
| (JSC::InternalFunction::displayName): | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::name): | |
| (JSC::JSFunction::displayName): | |
| * runtime/JSGlobalObject.cpp: | |
| (JSC::JSGlobalObject::reset): | |
| * runtime/JSPropertyNameIterator.cpp: | |
| * runtime/JSPropertyNameIterator.h: | |
| * runtime/JSString.h: | |
| (JSC::RopeBuilder::tryGetValue): | |
| (JSC::JSString::getIndex): | |
| * runtime/NativeErrorConstructor.cpp: | |
| (JSC::NativeErrorConstructor::NativeErrorConstructor): | |
| * runtime/NativeErrorConstructor.h: | |
| * runtime/NativeErrorPrototype.cpp: | |
| (JSC::NativeErrorPrototype::NativeErrorPrototype): | |
| * runtime/NativeErrorPrototype.h: | |
| * runtime/StringPrototype.cpp: | |
| (JSC::stringProtoFuncReplace): | |
| 2010-05-21 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (build fix). | |
| Fix interpreter build. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| 2010-05-21 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Split out JITCall32_64.cpp, and tightened up some #ifdefs in the hopes | |
| of improving compile times. | |
| https://bugs.webkit.org/show_bug.cgi?id=39507 | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * jit/JIT.cpp: | |
| * jit/JITArithmetic.cpp: | |
| * jit/JITArithmetic32_64.cpp: | |
| * jit/JITCall.cpp: | |
| * jit/JITCall32_64.cpp: Copied from jit/JITCall.cpp. | |
| * jit/JITOpcodes.cpp: | |
| * jit/JITOpcodes32_64.cpp: | |
| * jit/JITPropertyAccess.cpp: | |
| * jit/JITPropertyAccess32_64.cpp: | |
| * jit/JITStubs.cpp: | |
| 2010-05-21 Csaba Osztrogonác <ossy@webkit.org> | |
| Unreviewed buildfix for Qt after r59941. | |
| * JavaScriptCore.pro: missing runtime/JSObjectWithGlobalObject.cpp added to SOURCES. | |
| 2010-05-21 Oliver Hunt <oliver@apple.com> | |
| Windows build fix #3 | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-05-21 Oliver Hunt <oliver@apple.com> | |
| Windows build fix #2 | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-05-21 Oliver Hunt <oliver@apple.com> | |
| Windows build fix #1 | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-05-21 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoffrey Garen. | |
| All callable objects should have a global object reference | |
| https://bugs.webkit.org/show_bug.cgi?id=39495 | |
| All objects that may ever return a value other CallTypeNone | |
| or ConstructTypeNone now get a global object in their constructor | |
| and store that in their first anonymous slot. We add a new type | |
| JSObjectWithGlobalObject to allow us to share this logic as much | |
| as possible, however some objects have specific inheritance | |
| requirements so we can't just use it universally. | |
| To enforce this requirement JSValue::getCallData and getConstructData | |
| make use of a new "isValidCallee" function to assert that any object | |
| that returns a value other than CallType/ConstructTypeNone has a | |
| global object in anonymous slot 0. | |
| In order to ensure that static function slots are converted into | |
| function objects with the correct global object, all prototype objects | |
| and other classes with static function slots also gain a global object | |
| reference. Happily this fixes the long standing issue where host | |
| function objects get a prototype from the lexical global object of the | |
| first function that calls them, instead of the global object that they | |
| are defined on. | |
| * API/JSCallbackConstructor.cpp: | |
| (JSC::JSCallbackConstructor::JSCallbackConstructor): | |
| * API/JSCallbackConstructor.h: | |
| * API/JSCallbackFunction.cpp: | |
| (JSC::JSCallbackFunction::JSCallbackFunction): | |
| * API/JSCallbackFunction.h: | |
| * API/JSCallbackObject.cpp: | |
| (JSC::): | |
| * API/JSCallbackObject.h: | |
| * API/JSCallbackObjectFunctions.h: | |
| (JSC::::JSCallbackObject): | |
| (JSC::::staticFunctionGetter): | |
| * API/JSClassRef.cpp: | |
| (OpaqueJSClass::prototype): | |
| * API/JSContextRef.cpp: | |
| * API/JSObjectRef.cpp: | |
| (JSObjectMake): | |
| (JSObjectMakeFunctionWithCallback): | |
| (JSObjectMakeConstructor): | |
| (JSObjectGetPrivate): | |
| (JSObjectSetPrivate): | |
| (JSObjectGetPrivateProperty): | |
| (JSObjectSetPrivateProperty): | |
| (JSObjectDeletePrivateProperty): | |
| * API/JSValueRef.cpp: | |
| (JSValueIsObjectOfClass): | |
| * API/JSWeakObjectMapRefPrivate.cpp: | |
| * CMakeLists.txt: | |
| * GNUmakefile.am: | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * jsc.cpp: | |
| (GlobalObject::GlobalObject): | |
| * runtime/ArrayConstructor.cpp: | |
| (JSC::ArrayConstructor::ArrayConstructor): | |
| * runtime/ArrayConstructor.h: | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::ArrayPrototype::ArrayPrototype): | |
| * runtime/ArrayPrototype.h: | |
| (JSC::ArrayPrototype::createStructure): | |
| * runtime/BooleanConstructor.cpp: | |
| (JSC::BooleanConstructor::BooleanConstructor): | |
| * runtime/BooleanConstructor.h: | |
| * runtime/BooleanPrototype.cpp: | |
| (JSC::BooleanPrototype::BooleanPrototype): | |
| * runtime/BooleanPrototype.h: | |
| * runtime/DateConstructor.cpp: | |
| (JSC::DateConstructor::DateConstructor): | |
| * runtime/DateConstructor.h: | |
| * runtime/DatePrototype.cpp: | |
| (JSC::DatePrototype::DatePrototype): | |
| * runtime/DatePrototype.h: | |
| * runtime/ErrorConstructor.cpp: | |
| (JSC::ErrorConstructor::ErrorConstructor): | |
| * runtime/ErrorConstructor.h: | |
| * runtime/ErrorPrototype.cpp: | |
| (JSC::ErrorPrototype::ErrorPrototype): | |
| * runtime/ErrorPrototype.h: | |
| * runtime/FunctionConstructor.cpp: | |
| (JSC::FunctionConstructor::FunctionConstructor): | |
| * runtime/FunctionConstructor.h: | |
| * runtime/FunctionPrototype.cpp: | |
| (JSC::FunctionPrototype::FunctionPrototype): | |
| (JSC::FunctionPrototype::addFunctionProperties): | |
| * runtime/FunctionPrototype.h: | |
| * runtime/GlobalEvalFunction.cpp: | |
| (JSC::GlobalEvalFunction::GlobalEvalFunction): | |
| * runtime/GlobalEvalFunction.h: | |
| * runtime/InternalFunction.cpp: | |
| (JSC::InternalFunction::InternalFunction): | |
| * runtime/InternalFunction.h: | |
| * runtime/JSCell.h: | |
| (JSC::JSValue::getCallData): | |
| (JSC::JSValue::getConstructData): | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::JSFunction): | |
| * runtime/JSFunction.h: | |
| * runtime/JSGlobalObject.cpp: | |
| (JSC::JSGlobalObject::reset): | |
| * runtime/JSGlobalObject.h: | |
| (JSC::JSGlobalObject::JSGlobalObject): | |
| * runtime/JSONObject.cpp: | |
| (JSC::JSONObject::JSONObject): | |
| * runtime/JSONObject.h: | |
| * runtime/JSObject.h: | |
| * runtime/JSObjectWithGlobalObject.cpp: Added. | |
| (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject): | |
| * runtime/JSObjectWithGlobalObject.h: Added. | |
| (JSC::JSObjectWithGlobalObject::createStructure): | |
| (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject): | |
| * runtime/JSValue.cpp: | |
| (JSC::JSValue::isValidCallee): | |
| * runtime/JSValue.h: | |
| * runtime/Lookup.cpp: | |
| (JSC::setUpStaticFunctionSlot): | |
| * runtime/MathObject.cpp: | |
| (JSC::MathObject::MathObject): | |
| * runtime/MathObject.h: | |
| * runtime/NativeErrorConstructor.cpp: | |
| (JSC::NativeErrorConstructor::NativeErrorConstructor): | |
| * runtime/NativeErrorConstructor.h: | |
| * runtime/NativeErrorPrototype.cpp: | |
| (JSC::NativeErrorPrototype::NativeErrorPrototype): | |
| * runtime/NativeErrorPrototype.h: | |
| * runtime/NumberConstructor.cpp: | |
| (JSC::NumberConstructor::NumberConstructor): | |
| * runtime/NumberConstructor.h: | |
| * runtime/NumberPrototype.cpp: | |
| (JSC::NumberPrototype::NumberPrototype): | |
| * runtime/NumberPrototype.h: | |
| * runtime/ObjectConstructor.cpp: | |
| (JSC::ObjectConstructor::ObjectConstructor): | |
| * runtime/ObjectConstructor.h: | |
| * runtime/ObjectPrototype.cpp: | |
| (JSC::ObjectPrototype::ObjectPrototype): | |
| * runtime/ObjectPrototype.h: | |
| * runtime/PrototypeFunction.cpp: | |
| (JSC::PrototypeFunction::PrototypeFunction): | |
| * runtime/PrototypeFunction.h: | |
| * runtime/RegExpConstructor.cpp: | |
| (JSC::RegExpConstructor::RegExpConstructor): | |
| (JSC::constructRegExp): | |
| * runtime/RegExpConstructor.h: | |
| * runtime/RegExpObject.cpp: | |
| (JSC::RegExpObject::RegExpObject): | |
| * runtime/RegExpObject.h: | |
| * runtime/RegExpPrototype.cpp: | |
| (JSC::RegExpPrototype::RegExpPrototype): | |
| * runtime/RegExpPrototype.h: | |
| * runtime/StringConstructor.cpp: | |
| (JSC::StringConstructor::StringConstructor): | |
| * runtime/StringConstructor.h: | |
| * runtime/StringPrototype.cpp: | |
| (JSC::StringPrototype::StringPrototype): | |
| * runtime/StringPrototype.h: | |
| 2010-05-21 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Removed the unused entry in the CallFrame | |
| https://bugs.webkit.org/show_bug.cgi?id=39470 | |
| Removed the unused entry in the CallFrame, and reordered CallFrame | |
| writes on the hot path to be in forwards order. | |
| SunSpider says 0.3% faster. | |
| * interpreter/RegisterFile.h: | |
| (JSC::RegisterFile::): | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCall): | |
| 2010-05-21 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| Split the QScriptValue autotest into smaller chunks. | |
| File tst_qscriptvalue_generated.cpp was huge and it was difficult to compile | |
| it with MSVS2008, because of the code optimization. | |
| Tests were splited into a few files for better use of distributed | |
| compilation. | |
| Repeated calls to insert() and operator<<() where replaced by loops, | |
| that should reduce time of code optimizing. | |
| New files were generated by the same application, test logic wasn't changed. | |
| [Qt] The QScriptValue autotest should be refactored. | |
| https://bugs.webkit.org/show_bug.cgi?id=38987 | |
| * qt/tests/qscriptvalue/qscriptvalue.pro: | |
| * qt/tests/qscriptvalue/tst_qscriptvalue.h: | |
| * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: Removed. | |
| * qt/tests/qscriptvalue/tst_qscriptvalue_generated_init.cpp: Added. | |
| (tst_QScriptValue::initScriptValues): | |
| * qt/tests/qscriptvalue/tst_qscriptvalue_generated_istype.cpp: Added. | |
| (tst_QScriptValue::isValid_initData): | |
| (tst_QScriptValue::isValid_makeData): | |
| (tst_QScriptValue::isValid_test): | |
| (tst_QScriptValue::isBool_initData): | |
| (tst_QScriptValue::isBool_makeData): | |
| (tst_QScriptValue::isBool_test): | |
| (tst_QScriptValue::isBoolean_initData): | |
| (tst_QScriptValue::isBoolean_makeData): | |
| (tst_QScriptValue::isBoolean_test): | |
| (tst_QScriptValue::isNumber_initData): | |
| (tst_QScriptValue::isNumber_makeData): | |
| (tst_QScriptValue::isNumber_test): | |
| (tst_QScriptValue::isFunction_initData): | |
| (tst_QScriptValue::isFunction_makeData): | |
| (tst_QScriptValue::isFunction_test): | |
| (tst_QScriptValue::isNull_initData): | |
| (tst_QScriptValue::isNull_makeData): | |
| (tst_QScriptValue::isNull_test): | |
| (tst_QScriptValue::isString_initData): | |
| (tst_QScriptValue::isString_makeData): | |
| (tst_QScriptValue::isString_test): | |
| (tst_QScriptValue::isUndefined_initData): | |
| (tst_QScriptValue::isUndefined_makeData): | |
| (tst_QScriptValue::isUndefined_test): | |
| (tst_QScriptValue::isObject_initData): | |
| (tst_QScriptValue::isObject_makeData): | |
| (tst_QScriptValue::isObject_test): | |
| * qt/tests/qscriptvalue/tst_qscriptvalue_generated_totype.cpp: Added. | |
| (tst_QScriptValue::toString_initData): | |
| (tst_QScriptValue::toString_makeData): | |
| (tst_QScriptValue::toString_test): | |
| (tst_QScriptValue::toNumber_initData): | |
| (tst_QScriptValue::toNumber_makeData): | |
| (tst_QScriptValue::toNumber_test): | |
| (tst_QScriptValue::toBool_initData): | |
| (tst_QScriptValue::toBool_makeData): | |
| (tst_QScriptValue::toBool_test): | |
| (tst_QScriptValue::toBoolean_initData): | |
| (tst_QScriptValue::toBoolean_makeData): | |
| (tst_QScriptValue::toBoolean_test): | |
| (tst_QScriptValue::toInteger_initData): | |
| (tst_QScriptValue::toInteger_makeData): | |
| (tst_QScriptValue::toInteger_test): | |
| (tst_QScriptValue::toInt32_initData): | |
| (tst_QScriptValue::toInt32_makeData): | |
| (tst_QScriptValue::toInt32_test): | |
| (tst_QScriptValue::toUInt32_initData): | |
| (tst_QScriptValue::toUInt32_makeData): | |
| (tst_QScriptValue::toUInt32_test): | |
| (tst_QScriptValue::toUInt16_initData): | |
| (tst_QScriptValue::toUInt16_makeData): | |
| (tst_QScriptValue::toUInt16_test): | |
| 2010-05-21 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| Add COMPILER(MSVC) guard for strnstr | |
| https://bugs.webkit.org/show_bug.cgi?id=39397 | |
| BREWMP uses MSVC for simulator build, but it is not OS(WINDOWS). | |
| Add COMPILER(MSVC) guard for strnstr. | |
| * wtf/StringExtras.h: | |
| 2010-05-21 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| [BREWMP] Add !PLATFORM(BREWMP) guard for isMainThread | |
| https://bugs.webkit.org/show_bug.cgi?id=39396 | |
| BREWMP sets ENABLE(SINGLE_THREADED), so it uses isMainThread from ThreadingNone.cpp. | |
| Exclude isMainThread in MainThread.cpp. | |
| * wtf/MainThread.cpp: | |
| 2010-05-20 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| [BREWMP] Use skia as BREW MP's graphics backend. | |
| https://bugs.webkit.org/show_bug.cgi?id=39407 | |
| Define WTF_PLATFORM_SKIA=1 for BREW MP. | |
| * wtf/Platform.h: | |
| 2010-05-20 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Beth Dakin. | |
| Fixed naming mixup: it's op_call_put_result, not ret_result. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::dump): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| 2010-05-20 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Whittling away at CodeBlock use: Removed a little wonkiness in closure lookup | |
| https://bugs.webkit.org/show_bug.cgi?id=39444 | |
| Calculate all lookup depths at compile time. I'm not sure why we couldn't | |
| do this before, but whatever the reason, it seems to be gone now. | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::findScopedProperty): | |
| * bytecompiler/BytecodeGenerator.h: | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::resolveSkip): | |
| (JSC::Interpreter::resolveGlobalDynamic): | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_get_scoped_var): | |
| (JSC::JIT::emit_op_put_scoped_var): | |
| (JSC::JIT::emit_op_resolve_skip): | |
| (JSC::JIT::emit_op_resolve_global_dynamic): | |
| (JSC::JIT::emitSlow_op_resolve_global_dynamic): | |
| * jit/JITOpcodes32_64.cpp: | |
| (JSC::JIT::emit_op_get_scoped_var): | |
| (JSC::JIT::emit_op_put_scoped_var): | |
| (JSC::JIT::emit_op_resolve_skip): | |
| 2010-05-20 Darin Adler <darin@apple.com> | |
| Reviewed by Eric Seidel. | |
| Fix warnings seen on the buildbots today | |
| https://bugs.webkit.org/show_bug.cgi?id=39368 | |
| * profiler/ProfileNode.cpp: | |
| (JSC::getCount): Removed unneeded initialization of global variable. | |
| These are all initialized to zero anyway, so no need to try to initialize | |
| it and get a warning. | |
| * wtf/CurrentTime.cpp: | |
| (WTF::currentTime): Removed unused global variable. | |
| 2010-05-20 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Darin Adler. | |
| Removed some reliance on callFame[CodeBlock] by storing CodeBlock in a | |
| local variable in the Interpreter. | |
| https://bugs.webkit.org/show_bug.cgi?id=39447 | |
| Small speedup on SunSpider in Interpreter mode. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| * jsc.cpp: | |
| * wtf/Platform.h: | |
| 2010-05-19 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Bug 39408 - Unify JIT/interpreter return behaviour. | |
| Presently the JIT and the interpreter have differing implementations in how | |
| they handle storing the result of a function call back to the register file. | |
| In both cases the op_call ( / _eval / _varargs / op_construct) opcode has an | |
| operand indicating the VM register in which the result should be stored. | |
| The JIT plants code after the call to store the result, so the value will be | |
| stored as soon as the callee has returned. In the interpreter the call | |
| passes the return value register id into the callee via the callee callframe, | |
| and the callee is responsible for writing the result back into its callers | |
| register file after it has restored the parents callframe pointer, but before | |
| returning. | |
| Instead, move the task of writing the call result to the register file into a | |
| new opcode (op_call_put_result), and after returning the callee should leave | |
| the return value in a canonical location. In the case of the interpreter, | |
| this canonical location is a local variable in privateExecute | |
| (functionReturnValue), in the case of the JIT this is the normal return value | |
| registers (regT0, or regT1:regT0 in JSVALUE32_64). op_call_put_result stores | |
| the result from the canonical location to the registerfile. | |
| In addition to unifying JIT & interpreter behaviour this change allows us to | |
| remove a slot from the callframe, omit the write of the result where the | |
| return value from the call is not used, and provides a 2% speedup on sunspider | |
| in the interpreter. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::dump): | |
| * bytecode/Opcode.h: | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitCall): | |
| (JSC::BytecodeGenerator::emitCallVarargs): | |
| (JSC::BytecodeGenerator::emitConstruct): | |
| * bytecompiler/BytecodeGenerator.h: | |
| (JSC::BytecodeGenerator::finalDestinationOrIgnored): | |
| * bytecompiler/NodesCodegen.cpp: | |
| (JSC::NewExprNode::emitBytecode): | |
| (JSC::FunctionCallValueNode::emitBytecode): | |
| (JSC::FunctionCallResolveNode::emitBytecode): | |
| (JSC::FunctionCallBracketNode::emitBytecode): | |
| (JSC::FunctionCallDotNode::emitBytecode): | |
| (JSC::CallFunctionCallDotNode::emitBytecode): | |
| (JSC::ApplyFunctionCallDotNode::emitBytecode): | |
| * interpreter/CallFrame.h: | |
| (JSC::ExecState::init): | |
| (JSC::ExecState::noCaller): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::dumpRegisters): | |
| (JSC::Interpreter::throwException): | |
| (JSC::Interpreter::privateExecute): | |
| * interpreter/RegisterFile.h: | |
| (JSC::RegisterFile::): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): | |
| * jit/JIT.h: | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallSetupArgs): | |
| (JSC::JIT::compileOpConstructSetupArgs): | |
| (JSC::JIT::emit_op_call_put_result): | |
| (JSC::JIT::compileOpCallVarargs): | |
| (JSC::JIT::compileOpCallVarargsSlowCase): | |
| (JSC::JIT::compileOpCall): | |
| (JSC::JIT::compileOpCallSlowCase): | |
| (JSC::JIT::compileOpCallVarargsSetupArgs): | |
| 2010-05-20 Steve Block <steveblock@google.com> | |
| Reviewed by Jeremy Orlow. | |
| Provide bindings for DeviceOrientation | |
| https://bugs.webkit.org/show_bug.cgi?id=39210 | |
| Adds ENABLE_DEVICE_ORIENTATION to XCode project file, always disabled. | |
| * Configurations/FeatureDefines.xcconfig: | |
| 2010-05-19 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Errk! rename op_constructor_ret as requested in review of Bug 39399. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::dump): | |
| * bytecode/Opcode.h: | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitReturn): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): | |
| * jit/JIT.h: | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::emit_op_ret_object_or_this): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_ret_object_or_this): | |
| 2010-05-19 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Bug 39399 - Move responsibility for verifying constructors return objects from the caller to the callee. | |
| This is a necessary step to move object creation from caller to callee. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::dump): | |
| * bytecode/Opcode.h: | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::BytecodeGenerator): | |
| (JSC::BytecodeGenerator::emitReturn): | |
| (JSC::BytecodeGenerator::emitConstruct): | |
| * bytecompiler/BytecodeGenerator.h: | |
| (JSC::BytecodeGenerator::isConstructor): | |
| * bytecompiler/NodesCodegen.cpp: | |
| (JSC::FunctionBodyNode::emitBytecode): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): | |
| (JSC::JIT::privateCompileSlowCases): | |
| * jit/JIT.h: | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::emit_op_constructor_ret): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_constructor_ret): | |
| 2010-05-19 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (build fix). | |
| Fix windows build II. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-05-19 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (build fix). | |
| Fix windows build. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-05-19 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Bug 39393 - JSFunction need not be a subclass of InternalFunction. | |
| re-landing r59800. | |
| * JavaScriptCore.exp: | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::retrieveCaller): | |
| (JSC::Interpreter::findFunctionCallFrame): | |
| * interpreter/Interpreter.h: | |
| * profiler/Profiler.cpp: | |
| (JSC::Profiler::createCallIdentifier): | |
| * runtime/FunctionPrototype.cpp: | |
| (JSC::functionProtoFuncToString): | |
| * runtime/JSFunction.cpp: | |
| (JSC::): | |
| (JSC::JSFunction::JSFunction): | |
| (JSC::JSFunction::name): | |
| (JSC::JSFunction::displayName): | |
| (JSC::JSFunction::calculatedDisplayName): | |
| * runtime/JSFunction.h: | |
| * runtime/JSObject.cpp: | |
| (JSC::JSObject::putDirectFunction): | |
| (JSC::JSObject::putDirectFunctionWithoutTransition): | |
| * runtime/JSObject.h: | |
| * runtime/Lookup.cpp: | |
| (JSC::setUpStaticFunctionSlot): | |
| 2010-05-19 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (build fix). | |
| Reverting r59800, this b0rked stuff. | |
| * JavaScriptCore.exp: | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::retrieveCaller): | |
| (JSC::Interpreter::findFunctionCallFrame): | |
| * interpreter/Interpreter.h: | |
| * profiler/Profiler.cpp: | |
| (JSC::Profiler::createCallIdentifier): | |
| * runtime/FunctionPrototype.cpp: | |
| (JSC::functionProtoFuncToString): | |
| * runtime/JSFunction.cpp: | |
| (JSC::): | |
| (JSC::JSFunction::JSFunction): | |
| * runtime/JSFunction.h: | |
| * runtime/JSObject.cpp: | |
| * runtime/JSObject.h: | |
| * runtime/Lookup.cpp: | |
| (JSC::setUpStaticFunctionSlot): | |
| 2010-05-19 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Bug 39393 - JSFunction need not be a subclass of InternalFunction. | |
| This may prevent us from introducing a more useful parent class to | |
| JSFunction, e.g. a JSObject that holds an executable, which could | |
| also reference an eval or program executable. | |
| * JavaScriptCore.exp: | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::retrieveCaller): | |
| (JSC::Interpreter::findFunctionCallFrame): | |
| * interpreter/Interpreter.h: | |
| * profiler/Profiler.cpp: | |
| (JSC::Profiler::createCallIdentifier): | |
| * runtime/FunctionPrototype.cpp: | |
| (JSC::functionProtoFuncToString): | |
| * runtime/JSFunction.cpp: | |
| (JSC::): | |
| (JSC::JSFunction::JSFunction): | |
| (JSC::JSFunction::name): | |
| (JSC::JSFunction::displayName): | |
| (JSC::JSFunction::calculatedDisplayName): | |
| * runtime/JSFunction.h: | |
| * runtime/JSObject.cpp: | |
| (JSC::JSObject::putDirectFunction): | |
| (JSC::JSObject::putDirectFunctionWithoutTransition): | |
| * runtime/JSObject.h: | |
| * runtime/Lookup.cpp: | |
| (JSC::setUpStaticFunctionSlot): | |
| 2010-05-19 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoffrey Garen. | |
| emitJumpIfNotJSCell should special case constant immediate values | |
| https://bugs.webkit.org/show_bug.cgi?id=39392 | |
| <rdar://problem/8001324> | |
| Make emitJumpSlowCaseIfNotJSCell special case constant immediate | |
| values, in addition to the immediate JSCell optimisation. | |
| Also add assertions to make sure no one else produces code that | |
| attempts to load constants from the register file. | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::emitJumpSlowCaseIfNotJSCell): | |
| * jit/JSInterfaceJIT.h: | |
| (JSC::JSInterfaceJIT::emitJumpIfNotJSCell): | |
| (JSC::JSInterfaceJIT::emitLoadInt32): | |
| (JSC::JSInterfaceJIT::tagFor): | |
| (JSC::JSInterfaceJIT::payloadFor): | |
| (JSC::JSInterfaceJIT::emitLoadDouble): | |
| (JSC::JSInterfaceJIT::addressFor): | |
| * jit/ThunkGenerators.cpp: | |
| 2010-05-19 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Slight refactoring to CodeBlock bytecode access | |
| https://bugs.webkit.org/show_bug.cgi?id=39384 | |
| * bytecode/CodeBlock.h: | |
| (JSC::CodeBlock::bytecodeOffset): | |
| * interpreter/CallFrame.h: | |
| (JSC::ExecState::returnPC): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::unwindCallFrame): | |
| (JSC::Interpreter::retrieveLastCaller): Moved bytecode access into a | |
| CodeBlock helper function. Changed CallFrame to accurately represent | |
| how the returnPC is stored in JIT vs Interpreter. | |
| 2010-05-19 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Don't build the Interpreter into JIT builds. | |
| https://bugs.webkit.org/show_bug.cgi?id=39373 | |
| SunSpider says no change. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| * interpreter/Interpreter.h: | |
| * wtf/Platform.h: | |
| 2010-05-19 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Standardized naming: "bytecode offset" wins; "bytecode index" loses. | |
| Also renamed getBytecodeOffset to bytecodeOffset, to match the WebKit | |
| naming style. | |
| * bytecode/CodeBlock.h: | |
| (JSC::CallReturnOffsetToBytecodeOffset::CallReturnOffsetToBytecodeOffset): | |
| (JSC::getCallReturnOffset): | |
| (JSC::CodeBlock::bytecodeOffset): | |
| (JSC::CodeBlock::callReturnIndexVector): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::bytecodeOffsetForPC): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::JIT): | |
| (JSC::JIT::privateCompileMainPass): | |
| (JSC::JIT::privateCompileLinkPass): | |
| (JSC::JIT::privateCompileSlowCases): | |
| (JSC::JIT::privateCompile): | |
| * jit/JIT.h: | |
| (JSC::CallRecord::CallRecord): | |
| (JSC::JumpTable::JumpTable): | |
| (JSC::SwitchRecord::SwitchRecord): | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallVarargsSlowCase): | |
| (JSC::JIT::compileOpCall): | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::emitNakedCall): | |
| (JSC::JIT::addSlowCase): | |
| (JSC::JIT::addJump): | |
| (JSC::JIT::emitJumpSlowToHot): | |
| (JSC::JIT::isLabeled): | |
| (JSC::JIT::map): | |
| (JSC::JIT::unmap): | |
| (JSC::JIT::isMapped): | |
| (JSC::JIT::getMappedPayload): | |
| (JSC::JIT::getMappedTag): | |
| (JSC::JIT::emitGetVirtualRegister): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_switch_imm): | |
| (JSC::JIT::emit_op_switch_char): | |
| (JSC::JIT::emit_op_switch_string): | |
| (JSC::JIT::emit_op_new_error): | |
| * jit/JITOpcodes32_64.cpp: | |
| (JSC::JIT::emit_op_mov): | |
| (JSC::JIT::emit_op_get_global_var): | |
| (JSC::JIT::emit_op_put_global_var): | |
| (JSC::JIT::emit_op_get_scoped_var): | |
| (JSC::JIT::emit_op_put_scoped_var): | |
| (JSC::JIT::emit_op_to_primitive): | |
| (JSC::JIT::emit_op_resolve_global): | |
| (JSC::JIT::emit_op_to_jsnumber): | |
| (JSC::JIT::emit_op_catch): | |
| (JSC::JIT::emit_op_switch_imm): | |
| (JSC::JIT::emit_op_switch_char): | |
| (JSC::JIT::emit_op_switch_string): | |
| (JSC::JIT::emit_op_new_error): | |
| (JSC::JIT::emit_op_convert_this): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emit_op_method_check): | |
| (JSC::JIT::emitSlow_op_method_check): | |
| * jit/JITPropertyAccess32_64.cpp: | |
| (JSC::JIT::emit_op_method_check): | |
| (JSC::JIT::emitSlow_op_method_check): | |
| (JSC::JIT::emit_op_get_by_val): | |
| (JSC::JIT::emit_op_get_by_id): | |
| (JSC::JIT::emit_op_get_by_pname): | |
| * jit/JITStubCall.h: | |
| (JSC::JITStubCall::call): | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| 2010-05-19 Peter Varga <pvarga@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| The backtrackParenthesesOnceEnd function should store the start position | |
| of the subpattern's non-greedy match at the place of the subpattern's | |
| start index in the output array instead of the place of the | |
| subpattern's end index. | |
| Add layout test for checking of non-greedy matching of subpattern in | |
| regular expressions. | |
| https://bugs.webkit.org/show_bug.cgi?id=39289 | |
| * yarr/RegexInterpreter.cpp: | |
| (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd): | |
| 2010-05-18 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Bug 39343 - Dynamically generate a native call thunk per NativeFunction | |
| https://bugs.webkit.org/show_bug.cgi?id=39252 regressed performance on i386, | |
| by adding an extra indirection to making a native call. By introducing per- | |
| NativeFunction thunks we can hard code the function pointer into the thunk | |
| so that it need not be loaded from the callee. | |
| * jit/JIT.h: | |
| (JSC::JIT::compileCTINativeCall): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::privateCompileCTINativeCall): | |
| * jit/JITOpcodes32_64.cpp: | |
| (JSC::JIT::privateCompileCTINativeCall): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| * jit/JITPropertyAccess32_64.cpp: | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::ctiStub): | |
| (JSC::JITThunks::hostFunctionStub): | |
| * jit/JITStubs.h: | |
| * jit/SpecializedThunkJIT.h: | |
| (JSC::SpecializedThunkJIT::finalize): | |
| * jit/ThunkGenerators.cpp: | |
| (JSC::charCodeAtThunkGenerator): | |
| (JSC::charAtThunkGenerator): | |
| (JSC::fromCharCodeThunkGenerator): | |
| (JSC::sqrtThunkGenerator): | |
| (JSC::powThunkGenerator): | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::JSFunction): | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::getHostFunction): | |
| * runtime/JSGlobalData.h: | |
| (JSC::JSGlobalData::getCTIStub): | |
| * runtime/Lookup.cpp: | |
| (JSC::setUpStaticFunctionSlot): | |
| * runtime/StringConstructor.cpp: | |
| (JSC::StringConstructor::StringConstructor): | |
| * wtf/Platform.h: | |
| 2010-05-18 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Darin Adler. | |
| Simplified handling of 'arguments' -- 1.2% SunSpider speedup | |
| https://bugs.webkit.org/show_bug.cgi?id=39200 | |
| Removed the reserved OptionalCalleeArguments slot from the CallFrame. | |
| Now, slots for 'arguments' are allocated and initialized only by | |
| functions that might need them. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::dump): Updated for new bytecode operands. | |
| (JSC::CodeBlock::CodeBlock): | |
| * bytecode/CodeBlock.h: | |
| (JSC::unmodifiedArgumentsRegister): Added a helper function for mapping | |
| from the arguments register to its unmodified counterpart. | |
| (JSC::CodeBlock::setArgumentsRegister): | |
| (JSC::CodeBlock::argumentsRegister): | |
| (JSC::CodeBlock::usesArguments): Changed from a "usesArguments" bool to | |
| an optional int index representing the arguments register. | |
| * bytecode/Opcode.h: Updated for new bytecode operands. | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::addVar): Factored out a helper function for | |
| allocating an anonymous var. | |
| (JSC::BytecodeGenerator::BytecodeGenerator): Merged / simplified some | |
| arguments vs activation logic, and added code to allocate the arguments | |
| registers when needed. | |
| (JSC::BytecodeGenerator::createArgumentsIfNecessary): Updated for new bytecode operands. | |
| (JSC::BytecodeGenerator::emitCallEval): No need to create the arguments | |
| object before calling eval; the activation object will lazily create the | |
| arguments object if eval resolves it. | |
| (JSC::BytecodeGenerator::emitReturn): Updated for new bytecode operands. | |
| (JSC::BytecodeGenerator::emitPushScope): | |
| (JSC::BytecodeGenerator::emitPushNewScope): Ditto emitCallEval. | |
| * bytecompiler/BytecodeGenerator.h: | |
| (JSC::BytecodeGenerator::addVar): Factored out a helper function for | |
| allocating an anonymous var. | |
| (JSC::BytecodeGenerator::registerFor): No more need for special handling | |
| of the arguments registers; they're allocated just like normal registers | |
| now. | |
| * interpreter/CallFrame.h: | |
| (JSC::ExecState::callerFrame): | |
| (JSC::ExecState::init): | |
| * interpreter/CallFrameClosure.h: | |
| (JSC::CallFrameClosure::resetCallFrame): Nixed optionalCalleeArguments. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::dumpRegisters): | |
| (JSC::Interpreter::unwindCallFrame): | |
| (JSC::Interpreter::privateExecute): | |
| (JSC::Interpreter::retrieveArguments): Opcodes accessing 'arguments' now | |
| take operands specifying registers, just like all other opcodes. | |
| JSActivation::copyRegisters is no longer responsible for tearing off the | |
| arguments object; instead, the VM is responsible for both. | |
| Also, a behavior change: Each access to f.arguments creates a new object, | |
| unless f itself uses 'arguments'. This matches Chrome, and is necessary | |
| for the optimization. f.arguments is a nonstandard, deprecated feature, | |
| so high fidelity to a given implementation is not necessarily a goal. | |
| Also, as illustrated by the new test case, the identity of f.arguments | |
| has been broken since 2008, except in the case where f itself accesses | |
| f.arguments -- but nobody seemed to notice. So, hopefully this change won't | |
| break the web. | |
| * interpreter/Register.h: Nixed the special arguments accessor. It's no | |
| longer needed. | |
| * interpreter/RegisterFile.h: | |
| (JSC::RegisterFile::): | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallInitializeCallFrame): | |
| (JSC::JIT::compileOpCall): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_tear_off_activation): | |
| (JSC::JIT::emit_op_tear_off_arguments): | |
| (JSC::JIT::emit_op_create_arguments): | |
| (JSC::JIT::emit_op_init_arguments): | |
| * jit/JITOpcodes32_64.cpp: | |
| (JSC::JIT::emit_op_tear_off_activation): | |
| (JSC::JIT::emit_op_tear_off_arguments): | |
| (JSC::JIT::emit_op_create_arguments): | |
| (JSC::JIT::emit_op_init_arguments): The actual optimization: Removed | |
| OptionalCalleeArguments from the callframe slot. Now, it doesn't need | |
| to be initialized for most calls. | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * jit/JITStubs.h: | |
| (JSC::): Updated stubs to support arbitrary 'arguments' registers, | |
| instead of hard-coding something in the call frame. | |
| * runtime/Arguments.h: | |
| (JSC::JSActivation::copyRegisters): Removed some obfuscatory abstraction. | |
| * runtime/Executable.h: | |
| (JSC::FunctionExecutable::generatedByteCode): Added a helper for accessing | |
| the 'arguments' register. In a future patch, that kind of data should | |
| probably move out of CodeBlock and into Executable. | |
| * runtime/JSActivation.cpp: | |
| (JSC::JSActivation::getOwnPropertySlot): | |
| (JSC::JSActivation::argumentsGetter): | |
| * runtime/JSActivation.h: Simplified / fixed access to 'arguments' via | |
| the activation object. It now implements the same behavior implemented | |
| by optimized variable access in the VM. This simplifies some other | |
| things, too -- like eval code generation. | |
| 2010-05-18 Sam Weinig <sam@webkit.org> | |
| Try to fix the windows build. | |
| * API/JSStringRefBSTR.cpp: | |
| 2010-05-18 Anders Carlsson <andersca@apple.com> | |
| Reviewed by Sam Weinig. | |
| Add an inlineCapacity template parameter to ListHashSet and use it to shrink the positioned object list hash set. | |
| https://bugs.webkit.org/show_bug.cgi?id=39304 | |
| <rdar://problem/7998366> | |
| Add an inlineCapacity template parameter to ListHashSet. | |
| * wtf/ListHashSet.h: | |
| (WTF::::ListHashSet): | |
| (WTF::::operator): | |
| (WTF::::swap): | |
| (WTF::::~ListHashSet): | |
| (WTF::::size): | |
| (WTF::::capacity): | |
| (WTF::::isEmpty): | |
| (WTF::::begin): | |
| (WTF::::end): | |
| (WTF::::find): | |
| (WTF::::contains): | |
| (WTF::::add): | |
| (WTF::::insertBefore): | |
| (WTF::::remove): | |
| (WTF::::clear): | |
| (WTF::::unlinkAndDelete): | |
| (WTF::::appendNode): | |
| (WTF::::insertNodeBefore): | |
| (WTF::::deleteAllNodes): | |
| (WTF::::makeIterator): | |
| (WTF::::makeConstIterator): | |
| (WTF::deleteAllValues): | |
| 2010-05-18 Gabor Loki <loki@webkit.org> | |
| Reviewed by Darin Adler. | |
| Fix the interpreter after r59637 | |
| https://bugs.webkit.org/show_bug.cgi?id=39287 | |
| * runtime/Executable.h: | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::JSFunction): | |
| (JSC::JSFunction::getCallData): | |
| * runtime/JSGlobalData.cpp: | |
| * runtime/JSGlobalData.h: | |
| 2010-05-17 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Oops, meant ebx not eax there. Fix Qt (and probably Win too). | |
| * jit/JITOpcodes32_64.cpp: | |
| 2010-05-17 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Bug 39252 - Move host/native JSFunction's NativeFunction onto NativeExecutable. | |
| Currently host functions reuse JSFunction's ScopeChain as storage for their | |
| NativeFunction (the C function pointer to the host function implementation). | |
| Instead, move this onto NativeExecutable. This will allow host functions to | |
| have a scopechain (which will be implemented as a separate patch). | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * jit/JIT.h: | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallInitializeCallFrame): | |
| (JSC::JIT::compileOpCall): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| * jit/JITOpcodes32_64.cpp: | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::stringGetByValStubGenerator): | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| * jit/JITPropertyAccess32_64.cpp: | |
| (JSC::JIT::stringGetByValStubGenerator): | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::specializedThunk): | |
| * jit/JITStubs.h: | |
| (JSC::JITThunks::ctiNativeCall): | |
| * jit/SpecializedThunkJIT.h: | |
| (JSC::SpecializedThunkJIT::finalize): | |
| * jit/ThunkGenerators.cpp: | |
| (JSC::charCodeAtThunkGenerator): | |
| (JSC::charAtThunkGenerator): | |
| (JSC::fromCharCodeThunkGenerator): | |
| (JSC::sqrtThunkGenerator): | |
| (JSC::powThunkGenerator): | |
| * jit/ThunkGenerators.h: | |
| * runtime/Executable.h: | |
| (JSC::NativeExecutable::create): | |
| (JSC::NativeExecutable::function): | |
| (JSC::NativeExecutable::NativeExecutable): | |
| (JSC::JSFunction::nativeFunction): | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::JSFunction): | |
| (JSC::JSFunction::~JSFunction): | |
| (JSC::JSFunction::markChildren): | |
| (JSC::JSFunction::getCallData): | |
| (JSC::JSFunction::call): | |
| (JSC::JSFunction::getOwnPropertySlot): | |
| (JSC::JSFunction::getConstructData): | |
| (JSC::JSFunction::construct): | |
| * runtime/JSFunction.h: | |
| (JSC::JSFunction::scope): | |
| * runtime/JSGlobalData.h: | |
| (JSC::JSGlobalData::getThunk): | |
| * runtime/Lookup.cpp: | |
| (JSC::setUpStaticFunctionSlot): | |
| * runtime/StringConstructor.cpp: | |
| (JSC::StringConstructor::StringConstructor): | |
| 2010-05-17 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Laszlo Gombos. | |
| [Qt] Remove WinCE endian dedection. | |
| https://bugs.webkit.org/show_bug.cgi?id=38511 | |
| Windows CE supports little-endian format only. | |
| Correct dedection was added in r57804. | |
| * wtf/Platform.h: | |
| 2010-05-16 Simon Fraser <simon.fraser@apple.com> | |
| Reviewed by Darin Adler. | |
| Reduce the size of FunctionExecutable | |
| https://bugs.webkit.org/show_bug.cgi?id=39180 | |
| Change m_numVariables from a size_t to 31 bits in a bitfield, | |
| packed with another bit for m_forceUsesArguments (which in turn | |
| get packed with the base class). | |
| Reduces the size of FunctionExecutable from 160 to 152 bytes. | |
| * runtime/Executable.h: | |
| (JSC::FunctionExecutable::variableCount): | |
| (JSC::FunctionExecutable::FunctionExecutable): | |
| 2010-05-15 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Incorrect codegen for slowcase of < in 64-bit | |
| https://bugs.webkit.org/show_bug.cgi?id=39151 | |
| Call the correct stud for the slowcases of the < operator. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitSlow_op_jnless): | |
| (JSC::JIT::emitSlow_op_jless): | |
| 2010-05-15 Leo Yang <leo.yang@torchmobile.com.cn> | |
| Reviewed by Darin Adler. | |
| Fix bug https://bugs.webkit.org/show_bug.cgi?id=38890 | |
| * runtime/DatePrototype.cpp: | |
| (JSC::formatLocaleDate): | |
| 2010-05-15 Leandro Pereira <leandro@profusion.mobi> | |
| Reviewed by Adam Treat. | |
| [EFL] Add build system for the EFL port. | |
| http://webkit.org/b/37945 | |
| * CMakeLists.txt: Added. | |
| * CMakeListsEfl.txt: Added. | |
| * config.h: Add conditional to look for cmakeconfig.h. | |
| * jsc/CMakeLists.txt: Added. | |
| * jsc/CMakeListsEfl.txt: Added. | |
| * wtf/CMakeLists.txt: Added. | |
| * wtf/CMakeListsEfl.txt: Added. | |
| 2010-05-15 Chao-ying Fu <fu@mips.com> | |
| Reviewed by Oliver Hunt. | |
| Update MIPS JIT for unsigned right shift, Math.sqrt, load16 | |
| https://bugs.webkit.org/show_bug.cgi?id=38412 | |
| Fixed MIPS build failure. | |
| * assembler/MIPSAssembler.h: | |
| (JSC::MIPSAssembler::srl): | |
| (JSC::MIPSAssembler::srlv): | |
| (JSC::MIPSAssembler::sqrtd): | |
| * assembler/MacroAssemblerMIPS.h: | |
| (JSC::MacroAssemblerMIPS::urshift32): | |
| (JSC::MacroAssemblerMIPS::sqrtDouble): | |
| (JSC::MacroAssemblerMIPS::load16): | |
| (JSC::MacroAssemblerMIPS::supportsFloatingPointSqrt): | |
| * jit/JSInterfaceJIT.h: | |
| 2010-05-15 Ilya Tikhonovsky <loislo@chromium.org> | |
| Reviewed by Geoffrey Garen. | |
| WebInspector: JSC Should provide heap size info for Timeline panel. | |
| https://bugs.webkit.org/show_bug.cgi?id=38420 | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::size): | |
| * runtime/Collector.h: | |
| 2010-05-15 Dave Tapuska <dtapuska@rim.com> | |
| Reviewed by Darin Adler. | |
| Add a new define for we need strict arena alignment. ARMv5 with | |
| double word instructions set this value. | |
| * wtf/Platform.h: | |
| 2010-05-14 Stephanie Lewis <slewis@apple.com> | |
| Rubber-stamped by Mark Rowe. | |
| Update order files. | |
| * JavaScriptCore.order: | |
| 2010-05-14 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| Implementation of QtScript API that provide method to convert a value to an object. | |
| [Qt] QtScript is missing toObject API | |
| https://bugs.webkit.org/show_bug.cgi?id=36594 | |
| * qt/api/qscriptengine.cpp: | |
| (QScriptEngine::toObject): | |
| * qt/api/qscriptengine.h: | |
| * qt/api/qscriptvalue.cpp: | |
| (QScriptValue::toObject): | |
| * qt/api/qscriptvalue.h: | |
| * qt/api/qscriptvalue_p.h: | |
| (QScriptValuePrivate::toObject): | |
| * qt/tests/qscriptengine/tst_qscriptengine.cpp: | |
| (tst_QScriptEngine::toObject): | |
| (tst_QScriptEngine::toObjectTwoEngines): | |
| * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: | |
| (tst_QScriptValue::toObjectSimple): | |
| * qt/tests/qscriptvalue/tst_qscriptvalue.h: | |
| 2010-05-14 Chao-ying Fu <fu@mips.com> | |
| Reviewed by Oliver Hunt. | |
| String Indexing Failure on JSVALUE32 targets | |
| https://bugs.webkit.org/show_bug.cgi?id=39034 | |
| Remove zero-extend/shift-right code on regT1, because we already have | |
| it in emit_op_get_by_val(). | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::stringGetByValStubGenerator): | |
| 2010-05-10 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
| Reviewed by Alexey Proskuryakov. | |
| Fix a VS2010 assert in std::copy | |
| https://bugs.webkit.org/show_bug.cgi?id=38630 | |
| The assert complains that the output iterator is null. | |
| * wtf/Vector.h: | |
| (WTF::::operator): | |
| 2010-05-13 Maciej Stachowiak <mjs@apple.com> | |
| No review, attempted build fix. | |
| Try to fix Tiger build with some gratuitous initialization of | |
| seemingly uninitialized variables. | |
| * wtf/text/StringImpl.h: | |
| (WebCore::StringImpl::tryCreateUninitialized): | |
| 2010-05-13 Maciej Stachowiak <mjs@apple.com> | |
| Reviewed by Mark Rowe. | |
| Various JavaScript string optimizations | |
| https://bugs.webkit.org/show_bug.cgi?id=39051 | |
| Approximately 1% SunSpider speedup. | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::arrayProtoFuncJoin): Remove branches from the hot code path | |
| by moving the first pass outside the loop, and duplicating the hot loop | |
| to extract the loop-invariant branch. | |
| * runtime/RegExp.cpp: | |
| (JSC::RegExp::match): resize ovector to 0 instead of clearing to avoid | |
| thrash in case of large matches. | |
| * runtime/RegExpConstructor.h: | |
| (JSC::RegExpConstructor::performMatch): Mark ALWAYS_INLINE to make the | |
| compiler respect our authority. | |
| * runtime/StringPrototype.cpp: | |
| (JSC::jsSpliceSubstringsWithSeparators): Inline. | |
| (JSC::stringProtoFuncSubstring): Rewrite boundary condition checks to | |
| reduce the number of floating point comparisons and branches. | |
| 2010-05-12 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=39039 | |
| Provide support for separate bytecode/JIT code translations for call/construct usage | |
| This will allow us to produce code generated specifically for use as a constructor, not for general function use. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::CodeBlock): | |
| (JSC::CodeBlock::unlinkCallers): | |
| * bytecode/CodeBlock.h: | |
| (JSC::CodeBlock::getBytecodeIndex): | |
| (JSC::CodeBlock::getJITCode): | |
| (JSC::CodeBlock::executablePool): | |
| (JSC::GlobalCodeBlock::GlobalCodeBlock): | |
| (JSC::FunctionCodeBlock::FunctionCodeBlock): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::executeCall): | |
| (JSC::Interpreter::executeConstruct): | |
| (JSC::Interpreter::prepareForRepeatCall): | |
| (JSC::Interpreter::execute): | |
| (JSC::Interpreter::privateExecute): | |
| * interpreter/Interpreter.h: | |
| * jit/JIT.cpp: | |
| (JSC::JIT::unlinkCallOrConstruct): | |
| (JSC::JIT::linkConstruct): | |
| * jit/JIT.h: | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCall): | |
| (JSC::JIT::compileOpCallSlowCase): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| * jit/JITOpcodes32_64.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| * jit/JITPropertyAccess32_64.cpp: | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * jit/JITStubs.h: | |
| (JSC::JITThunks::ctiVirtualConstructLink): | |
| (JSC::JITThunks::ctiVirtualConstruct): | |
| (JSC::): | |
| * jit/SpecializedThunkJIT.h: | |
| (JSC::SpecializedThunkJIT::finalize): | |
| * runtime/Arguments.h: | |
| (JSC::JSActivation::copyRegisters): | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::isNumericCompareFunction): | |
| * runtime/Executable.cpp: | |
| (JSC::FunctionExecutable::~FunctionExecutable): | |
| (JSC::FunctionExecutable::compileForCall): | |
| (JSC::FunctionExecutable::compileForConstruct): | |
| (JSC::EvalExecutable::generateJITCode): | |
| (JSC::ProgramExecutable::generateJITCode): | |
| (JSC::FunctionExecutable::generateJITCodeForCall): | |
| (JSC::FunctionExecutable::generateJITCodeForConstruct): | |
| (JSC::FunctionExecutable::markAggregate): | |
| (JSC::FunctionExecutable::reparseExceptionInfo): | |
| (JSC::EvalExecutable::reparseExceptionInfo): | |
| (JSC::FunctionExecutable::recompile): | |
| * runtime/Executable.h: | |
| (JSC::ExecutableBase::ExecutableBase): | |
| (JSC::ExecutableBase::isHostFunction): | |
| (JSC::ExecutableBase::generatedJITCodeForCall): | |
| (JSC::ExecutableBase::generatedJITCodeForConstruct): | |
| (JSC::NativeExecutable::NativeExecutable): | |
| (JSC::EvalExecutable::jitCode): | |
| (JSC::ProgramExecutable::jitCode): | |
| (JSC::FunctionExecutable::bytecodeForCall): | |
| (JSC::FunctionExecutable::isGeneratedForCall): | |
| (JSC::FunctionExecutable::generatedBytecodeForCall): | |
| (JSC::FunctionExecutable::bytecodeForConstruct): | |
| (JSC::FunctionExecutable::isGeneratedForConstruct): | |
| (JSC::FunctionExecutable::generatedBytecodeForConstruct): | |
| (JSC::FunctionExecutable::symbolTable): | |
| (JSC::FunctionExecutable::FunctionExecutable): | |
| (JSC::FunctionExecutable::jitCodeForCall): | |
| (JSC::FunctionExecutable::jitCodeForConstruct): | |
| * runtime/JSActivation.h: | |
| (JSC::JSActivation::JSActivationData::JSActivationData): | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::~JSFunction): | |
| (JSC::JSFunction::call): | |
| (JSC::JSFunction::construct): | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::numericCompareFunction): | |
| 2010-05-12 Oliver Hunt <oliver@apple.com> | |
| build fix | |
| <rdar://problem/7977960> REGRESSION (r59282): Tiger PPC build broken | |
| * runtime/UString.h: | |
| (JSC::tryMakeString): | |
| 2010-05-12 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| <rdar://7969718> Incorrect 32-bit codegen for op_jnlesseq | |
| https://bugs.webkit.org/show_bug.cgi?id=39038 | |
| Correct the use of incorrect comparison operators. | |
| * jit/JITArithmetic32_64.cpp: | |
| (JSC::JIT::emit_op_jlesseq): | |
| (JSC::JIT::emitBinaryDoubleOp): | |
| 2010-05-12 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> | |
| Reviewed by Eric Seidel. | |
| JavaScriptCore: fix build when some optimizations are disabled | |
| https://bugs.webkit.org/show_bug.cgi?id=38800 | |
| Remove outdated UNUSED_PARAMs when using JIT but with | |
| ENABLE_JIT_OPTIMIZE_CALL and ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS | |
| disabled. | |
| * jit/JITOpcodes.cpp: | |
| * jit/JITOpcodes32_64.cpp: | |
| 2010-05-12 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Work around GCC stupidity by either explicitly inlining or by | |
| using ALWAYS_INLINE | |
| * runtime/StringPrototype.cpp: | |
| (JSC::stringProtoFuncReplace): | |
| * runtime/UString.h: | |
| (JSC::UString::~UString): | |
| * wtf/RefPtr.h: | |
| (WTF::RefPtr::RefPtr): | |
| (WTF::RefPtr::~RefPtr): | |
| * wtf/text/StringImpl.h: | |
| (WebCore::StringImpl::create): | |
| (WebCore::StringImpl::tryCreateUninitialized): | |
| 2010-05-12 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| [Qt] Detect debug mode consistently | |
| https://bugs.webkit.org/show_bug.cgi?id=38863 | |
| * JavaScriptCore.pri: | |
| * JavaScriptCore.pro: | |
| * jsc.pro: | |
| * qt/api/QtScript.pro: | |
| 2010-05-12 Peter Varga <pvarga@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Remove a direct jump in generatePatternCharacterGreedy() and | |
| generatePatternCharacterClassGreedy() functions if quantityCount of the term | |
| is unlimited. | |
| https://bugs.webkit.org/show_bug.cgi?id=38898 | |
| * yarr/RegexJIT.cpp: | |
| (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy): | |
| (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy): | |
| 2010-05-11 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Slight simplification to the calling convention: read RegisterFile::end() | |
| from an absolute address, instead of from a pointer to the RegisterFile | |
| on the stack. | |
| SunSpider reports no change. | |
| This should free us to remove the RegisterFile argument from the stack. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompile): | |
| 2010-05-11 Brian Weinstein <bweinstein@apple.com> | |
| Possible Gtk build fix - use ALWAYS_INLINE on functions that were inlined. | |
| * wtf/text/AtomicString.h: | |
| (WebCore::AtomicString::add): Use ALWAYS_INLINE. | |
| * wtf/text/WTFString.h: | |
| (WebCore::String::length): Ditto. | |
| (WebCore::String::isEmpty): Ditto. | |
| 2010-05-11 Anders Carlsson <andersca@apple.com> | |
| Reviewed by Sam Weinig. | |
| Add a compile time assert that sizeof(String) == sizeof(AtomicString). | |
| * wtf/text/AtomicString.cpp: | |
| 2010-05-11 Anders Carlsson <andersca@apple.com> | |
| Reviewed by Mark Rowe. | |
| https://bugs.webkit.org/show_bug.cgi?id=38961 | |
| Move some member variables around to reduce class sizes. | |
| Make AtomicString no longer inherit from FastAllocBase. | |
| Since AtomicString's first (and only) member variable, a RefPtr, also inherits from FastAllocBase this | |
| was causing the size of AtomicString to contain sizeof(void*) bytes of padding. | |
| * wtf/text/AtomicString.h: | |
| 2010-05-11 Brian Weinstein <bweinstein@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Patch by Gavin Barraclough. | |
| Rest of REGRESSION (r57900-57919): 3% PLT Regression from moving strings into WTF. | |
| https://bugs.webkit.org/show_bug.cgi?id=38930 | |
| <rdar://problem/7937188> | |
| Inline string functions that are commonly used in WTFString, CString, and AtomicString. | |
| * JavaScriptCore.exp: Remove exports of inline functions. | |
| * wtf/text/AtomicString.cpp: | |
| (WebCore::AtomicString::addSlowCase): Rename add to addSlowCase, and inline the fast path | |
| of add. | |
| * wtf/text/AtomicString.h: | |
| (WebCore::AtomicString::add): Inline the fast path of add. | |
| * wtf/text/CString.cpp: Inline implementation of data and length in the header. | |
| * wtf/text/CString.h: | |
| (WTF::CString::data): Inline implementation of data. | |
| (WTF::CString::length): Inline implementation of length. | |
| * wtf/text/WTFString.cpp: Remove implementations of functions to be inlined. | |
| * wtf/text/WTFString.h: | |
| (WebCore::String::String): Inline implementation. | |
| (WebCore::String::length): Ditto. | |
| (WebCore::String::characters): Ditto. | |
| (WebCore::String::operator[]): Ditto. | |
| (WebCore::String::isEmpty): Ditto. | |
| 2010-05-11 Brian Weinstein <bweinstein@apple.com> | |
| Reviewed by Steve Falkenburg and Jon Honeycutt. | |
| Patch by Gavin Barraclough. | |
| REGRESSION (r57900-57919): 3% PLT Regression from moving strings into WTF. | |
| https://bugs.webkit.org/show_bug.cgi?id=38930 | |
| <rdar://problem/7937188> | |
| When the String classes were moved from WebCore to WTF, it meant that on Windows, all operations | |
| on Strings in WebCore had to cross a DLL boundary (from WebKit.dll to JavaScript.dll). | |
| We fix this by refactoring some of the WTF string code, so the code in AtomicString, StringImpl, and | |
| WTFString can be built by both WebCore and WTF, and we don't need to talk across a DLL to do operations | |
| on Strings. | |
| * GNUmakefile.am: Add new file to build system. | |
| * JavaScriptCore.gypi: Ditto. | |
| * JavaScriptCore.pro: Ditto. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Remove string exports, because these are now | |
| handled in WebCore. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Remove the post-build step that was added | |
| here (the post build step is in JavaScriptCoreCommon.vsprops). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Copy the three cpp files that need to be compiled | |
| by WebCore into the WebKitOutputDir directory. | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add the StringStatics file. | |
| * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add the three WTF string cpp files to this project. | |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Remove the need to link against WTF.lib (since jsc links against JavaScriptCore). | |
| * JavaScriptCore.xcodeproj/project.pbxproj: Add the StringStatics file. | |
| * wtf/text/AtomicString.cpp: Moved code to StringStatics. | |
| * wtf/text/StringImpl.cpp: Ditto. | |
| * wtf/text/StringStatics.cpp: Added. Move functions in WTF Strings that define static variables to here, so | |
| the rest of the files can be compiled in WebCore. | |
| (WebCore::StringImpl::empty): Moved from StringImpl.cpp to here. | |
| (WebCore::AtomicString::init): Moved from AtomicString.cpp to here. | |
| 2010-05-11 Alice Liu <alice.liu@apple.com> | |
| Rubber-stamped by Gavin Barraclough. | |
| Fix build error when enabling debugging block in WebKit win painting code | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-05-11 Mark Rowe <mrowe@apple.com> | |
| Fix the world. | |
| In r59162 a change was made to WebCore's FeatureDefines.xcconfig that enabled FILE_READER and FILE_WRITER. | |
| The author and reviewer of that patch ignored the carefully-worded warning at the top of that file asking | |
| that changes to the file be kept in sync across JavaScriptCore, WebCore and WebKit, as well as being kept | |
| in sync with build-webkit. This led to WebCore and WebKit having different views of Document's vtable | |
| and results in crashes in Safari shortly after launch when virtual function calls resulted in the wrong | |
| function in WebCore being called. | |
| We fix this by bringing the FeatureDefines.xcconfig files in to sync. Based on the ChangeLog message and | |
| other changes in r59162 it appears that enabling FILE_WRITER was unintentional so that particular change | |
| has been reverted. | |
| * Configurations/FeatureDefines.xcconfig: | |
| 2010-05-11 Sheriff Bot <webkit.review.bot@gmail.com> | |
| Unreviewed, rolling out r59171. | |
| http://trac.webkit.org/changeset/59171 | |
| https://bugs.webkit.org/show_bug.cgi?id=38933 | |
| "Broke the world" (Requested by bweinstein on #webkit). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
| * JavaScriptCore.vcproj/jsc/jsc.vcproj: | |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * wtf/text/AtomicString.cpp: | |
| (WebCore::AtomicString::init): | |
| * wtf/text/StringImpl.cpp: | |
| (WebCore::StringImpl::empty): | |
| * wtf/text/StringStatics.cpp: Removed. | |
| 2010-05-11 Brian Weinstein <bweinstein@apple.com> | |
| Reviewed by Steve Falkenburg. | |
| Patch by Gavin Barraclough. | |
| REGRESSION (r57900-57919): 3% PLT Regression from moving strings into WTF. | |
| https://bugs.webkit.org/show_bug.cgi?id=38930 | |
| <rdar://problem/7937188> | |
| When the String classes were moved from WebCore to WTF, it meant that on Windows, all operations | |
| on Strings in WebCore had to cross a DLL boundary (from WebKit.dll to JavaScript.dll). | |
| We fix this by refactoring some of the WTF string code, so the code in AtomicString, StringImpl, and | |
| WTFString can be built by both WebCore and WTF, and we don't need to talk across a DLL to do operations | |
| on Strings. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Remove string exports, because these are now | |
| handled in WebCore. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Remove the post-build step that was added | |
| here (the post build step is in JavaScriptCoreCommon.vsprops). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Copy the three cpp files that need to be compiled | |
| by WebCore into the WebKitOutputDir directory. | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add the StringStatics file. | |
| * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add the three WTF string cpp files to this project. | |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Remove the need to link against WTF.lib (since jsc links against JavaScriptCore). | |
| * JavaScriptCore.xcodeproj/project.pbxproj: Add the StringStatics file. | |
| * wtf/text/AtomicString.cpp: Moved code to StringStatics. | |
| * wtf/text/StringImpl.cpp: Ditto. | |
| * wtf/text/StringStatics.cpp: Added. Move functions in WTF Strings that define static variables to here, so | |
| the rest of the files can be compiled in WebCore. | |
| (WebCore::StringImpl::empty): Moved from StringImpl.cpp to here. | |
| (WebCore::AtomicString::init): Moved from AtomicString.cpp to here. | |
| 2010-05-11 Geoffrey Garen <ggaren@apple.com> | |
| Fixed test failures seen on SnowLeopard buildbot. | |
| * runtime/JSString.cpp: | |
| (JSC::JSString::replaceCharacter): Don't use size_t and wtf::notFound. | |
| Instead, use the individual types and notFound values of the string APIs | |
| we're using, since they're not necessarily the same in 64bit. | |
| 2010-05-11 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt and Darin Adler. | |
| Start using ropes in String.prototype.replace. | |
| 1%-1.5% speedup on SunSpider. | |
| * runtime/JSString.cpp: | |
| (JSC::JSString::resolveRope): Updated for RopeImpl refactoring. | |
| (JSC::JSString::replaceCharacter): Added a replaceCharacter function, which creates | |
| a rope for the resulting replacement. | |
| * runtime/JSString.h: A few changes here: | |
| (JSC::): | |
| (JSC::RopeBuilder::RopeIterator::RopeIterator): | |
| (JSC::RopeBuilder::RopeIterator::operator++): | |
| (JSC::RopeBuilder::RopeIterator::operator*): | |
| (JSC::RopeBuilder::RopeIterator::operator!=): | |
| (JSC::RopeBuilder::RopeIterator::WorkItem::WorkItem): | |
| (JSC::RopeBuilder::RopeIterator::WorkItem::operator!=): | |
| (JSC::RopeBuilder::RopeIterator::skipRopes): Created a RopeIterator abstraction. | |
| We use this to do a substring find without having to resolve the rope. | |
| (We could use this iterator when resolving ropes, too, but resolving | |
| ropes backwards is usually more efficient.) | |
| (JSC::RopeBuilder::JSString): Added constructors for 2 & 3 UStrings. | |
| (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): | |
| (JSC::RopeBuilder::size): Updated for RopeImpl refactoring. | |
| * runtime/Operations.h: Updated for RopeImpl refactoring. | |
| (JSC::jsString): Added jsString functions for 2 & 3 UStrings. | |
| * runtime/RopeImpl.cpp: | |
| (JSC::RopeImpl::derefFibersNonRecursive): | |
| * runtime/RopeImpl.h: | |
| (JSC::RopeImpl::initializeFiber): | |
| (JSC::RopeImpl::size): | |
| (JSC::RopeImpl::fibers): | |
| (JSC::RopeImpl::deref): | |
| (JSC::RopeImpl::RopeImpl): A little refactoring to make this patch easier: | |
| Moved statics to the top of the class; put multi-statement functions on | |
| multiple lines; renamed "fiberCount" to "size" to match other collections; | |
| changed the "fibers" accessor to return the fibers buffer, instead of an | |
| item in the buffer, to make iteration easier. | |
| * runtime/StringPrototype.cpp: | |
| (JSC::stringProtoFuncReplace): Don't resolve a rope unless we need to. Do | |
| use our new replaceCharacter function if possible. Do use a rope to | |
| represent splicing three strings together. | |
| 2010-05-10 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Darin Adler. | |
| [Qt] Disable JIT support for mingw-w64 | |
| https://bugs.webkit.org/show_bug.cgi?id=38747 | |
| Disale JIT for mingw-w64 as it is reportedly | |
| unstable. | |
| Thanks for Vanboxem Rruben for the investigation. | |
| * wtf/Platform.h: | |
| 2010-05-09 Fumitoshi Ukai <ukai@chromium.org> | |
| Reviewed by Eric Seidel. | |
| JavaScriptCore/wtf/MD5.h: checksum should take a reference to output. | |
| https://bugs.webkit.org/show_bug.cgi?id=38723 | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * wtf/MD5.cpp: | |
| (WTF::expectMD5): | |
| Fix for checksum change. | |
| (WTF::MD5::checksum): | |
| Take a reference to output, instead of returning the result by value, to reduce coping for performance. | |
| * wtf/MD5.h: | |
| 2010-05-09 Oliver Hunt <oliver@apple.com> | |
| Build fix. | |
| Fix accidental repeat addition of emit_op_new_regexp | |
| * jit/JITOpcodes.cpp: | |
| 2010-05-09 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| REGRESSION(r57955): RegExp literals should not actually be cached, so r57955 should be rolled out. | |
| https://bugs.webkit.org/show_bug.cgi?id=38828 | |
| <rdar://problem/7961634> | |
| Rollout r57955 | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::regexpToSourceString): | |
| (JSC::regexpName): | |
| (JSC::CodeBlock::dump): | |
| (JSC::CodeBlock::shrinkToFit): | |
| * bytecode/CodeBlock.h: | |
| (JSC::CodeBlock::addRegExp): | |
| (JSC::CodeBlock::regexp): | |
| * bytecode/Opcode.h: | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::addRegExp): | |
| (JSC::BytecodeGenerator::emitNewRegExp): | |
| * bytecompiler/BytecodeGenerator.h: | |
| * bytecompiler/NodesCodegen.cpp: | |
| (JSC::RegExpNode::emitBytecode): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): | |
| * jit/JIT.h: | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_new_regexp): | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * jit/JITStubs.h: | |
| (JSC::): | |
| 2010-05-09 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Reserve a large-ish initial capacity for Lexer::m_buffer16. | |
| SunSpider says 0.3% faster. | |
| m_buffer16 is used when parsing complex strings -- for example, strings | |
| with escape sequences in them. These kinds of strings can be really long, | |
| and we want to avoid repeatedly copying as we grow m_buffer16. | |
| The net memory cost is quite low, since it's proporitional to source | |
| code we already have in memory, and we throw away m_buffer16 right when | |
| we're done parsing. | |
| * parser/Lexer.cpp: | |
| (JSC::Lexer::Lexer): No need to reserve initial capacity in our constructor, | |
| since setCode will be called before we're asked to lex anything. | |
| (JSC::Lexer::setCode): Reserve enough space to lex half the source code | |
| as a complex string without having to copy. | |
| (JSC::Lexer::clear): No need to reserve initial capacity here either, | |
| since setCode will be called before we're asked to lex anything. | |
| 2010-05-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Eric Seidel. | |
| [Qt] Remove YARR configuration rules from Qt make system | |
| https://bugs.webkit.org/show_bug.cgi?id=38819 | |
| Setting YARR based on JIT seeting is now in Platform.h | |
| for all ports. This patch essentially reverses r49238. | |
| * JavaScriptCore.pri: | |
| 2010-05-09 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Improve string indexing performance | |
| https://bugs.webkit.org/show_bug.cgi?id=38814 | |
| Add an assembly stub to do indexed loads from strings much | |
| more cheaply than the current stub dispatch logic. We can | |
| do this because we are able to make guarantees about the | |
| register contents when entering the stub so the call overhead | |
| is negligible. | |
| * jit/JIT.h: | |
| * jit/JITInlineMethods.h: | |
| * jit/JITOpcodes.cpp: | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::stringGetByValStubGenerator): | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| Moved from JITOpcodes.cpp to keep the slowcase next to | |
| the normal case codegen as we do for everything else. | |
| * jit/JITPropertyAccess32_64.cpp: | |
| (JSC::JIT::stringGetByValStubGenerator): | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| * jit/JSInterfaceJIT.h: | |
| (JSC::JSInterfaceJIT::emitFastArithImmToInt): | |
| 2010-05-09 Maciej Stachowiak <mjs@apple.com> | |
| Fixed version of: "Optimized o[s] where o is a cell and s is a string" | |
| https://bugs.webkit.org/show_bug.cgi?id=38815 | |
| Fixed the previous patch for this from Geoff Garen. | |
| The two problems were a missing exception check and a PropertySlot | |
| initialized improperly, leading to crashes and failures in the case | |
| of getters accessed with bracket syntax. | |
| Previous patch: | |
| Optimized o[s] where o is a cell and s is a string, removing some old | |
| code that wasn't really tuned for the JIT. | |
| SunSpider says 0.8% faster. | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * runtime/JSCell.h: | |
| 2010-05-08 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Unreviewed, build fix. | |
| Fix missing terminating ' character warning | |
| The warning has been only seen on the Gtk buildbots. | |
| * wtf/Platform.h: | |
| 2010-05-08 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Gavin Barraclough. | |
| Refactor YARR and YARR_JIT default rules in Platform.h | |
| https://bugs.webkit.org/show_bug.cgi?id=38727 | |
| Turn on YARR and YARR JIT by default of JIT is enabled. | |
| Ports can overrule this default decisions as they wish. | |
| * wtf/Platform.h: | |
| 2010-05-08 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Split JSVALUE32_64 code out of JITOpcodes.cpp and into JITOpcodes32_64.cpp | |
| https://bugs.webkit.org/show_bug.cgi?id=38808 | |
| * GNUmakefile.am: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.pro: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * jit/JITOpcodes.cpp: | |
| * jit/JITOpcodes32_64.cpp: Added. | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| (JSC::JIT::emit_op_mov): | |
| (JSC::JIT::emit_op_end): | |
| (JSC::JIT::emit_op_jmp): | |
| (JSC::JIT::emit_op_loop_if_lesseq): | |
| (JSC::JIT::emitSlow_op_loop_if_lesseq): | |
| (JSC::JIT::emit_op_new_object): | |
| (JSC::JIT::emit_op_instanceof): | |
| (JSC::JIT::emitSlow_op_instanceof): | |
| (JSC::JIT::emit_op_new_func): | |
| (JSC::JIT::emit_op_get_global_var): | |
| (JSC::JIT::emit_op_put_global_var): | |
| (JSC::JIT::emit_op_get_scoped_var): | |
| (JSC::JIT::emit_op_put_scoped_var): | |
| (JSC::JIT::emit_op_tear_off_activation): | |
| (JSC::JIT::emit_op_tear_off_arguments): | |
| (JSC::JIT::emit_op_new_array): | |
| (JSC::JIT::emit_op_resolve): | |
| (JSC::JIT::emit_op_to_primitive): | |
| (JSC::JIT::emitSlow_op_to_primitive): | |
| (JSC::JIT::emit_op_strcat): | |
| (JSC::JIT::emit_op_resolve_base): | |
| (JSC::JIT::emit_op_resolve_skip): | |
| (JSC::JIT::emit_op_resolve_global): | |
| (JSC::JIT::emitSlow_op_resolve_global): | |
| (JSC::JIT::emit_op_not): | |
| (JSC::JIT::emitSlow_op_not): | |
| (JSC::JIT::emit_op_jfalse): | |
| (JSC::JIT::emitSlow_op_jfalse): | |
| (JSC::JIT::emit_op_jtrue): | |
| (JSC::JIT::emitSlow_op_jtrue): | |
| (JSC::JIT::emit_op_jeq_null): | |
| (JSC::JIT::emit_op_jneq_null): | |
| (JSC::JIT::emit_op_jneq_ptr): | |
| (JSC::JIT::emit_op_jsr): | |
| (JSC::JIT::emit_op_sret): | |
| (JSC::JIT::emit_op_eq): | |
| (JSC::JIT::emitSlow_op_eq): | |
| (JSC::JIT::emit_op_neq): | |
| (JSC::JIT::emitSlow_op_neq): | |
| (JSC::JIT::compileOpStrictEq): | |
| (JSC::JIT::emit_op_stricteq): | |
| (JSC::JIT::emitSlow_op_stricteq): | |
| (JSC::JIT::emit_op_nstricteq): | |
| (JSC::JIT::emitSlow_op_nstricteq): | |
| (JSC::JIT::emit_op_eq_null): | |
| (JSC::JIT::emit_op_neq_null): | |
| (JSC::JIT::emit_op_resolve_with_base): | |
| (JSC::JIT::emit_op_new_func_exp): | |
| (JSC::JIT::emit_op_throw): | |
| (JSC::JIT::emit_op_get_pnames): | |
| (JSC::JIT::emit_op_next_pname): | |
| (JSC::JIT::emit_op_push_scope): | |
| (JSC::JIT::emit_op_pop_scope): | |
| (JSC::JIT::emit_op_to_jsnumber): | |
| (JSC::JIT::emitSlow_op_to_jsnumber): | |
| (JSC::JIT::emit_op_push_new_scope): | |
| (JSC::JIT::emit_op_catch): | |
| (JSC::JIT::emit_op_jmp_scopes): | |
| (JSC::JIT::emit_op_switch_imm): | |
| (JSC::JIT::emit_op_switch_char): | |
| (JSC::JIT::emit_op_switch_string): | |
| (JSC::JIT::emit_op_new_error): | |
| (JSC::JIT::emit_op_debug): | |
| (JSC::JIT::emit_op_enter): | |
| (JSC::JIT::emit_op_enter_with_activation): | |
| (JSC::JIT::emit_op_create_arguments): | |
| (JSC::JIT::emit_op_init_arguments): | |
| (JSC::JIT::emit_op_convert_this): | |
| (JSC::JIT::emitSlow_op_convert_this): | |
| (JSC::JIT::emit_op_profile_will_call): | |
| (JSC::JIT::emit_op_profile_did_call): | |
| 2010-05-08 Gabor Loki <loki@webkit.org> | |
| Reviewed by Gavin Barraclough. | |
| Fix halfword loads on ARM | |
| https://bugs.webkit.org/show_bug.cgi?id=38741 | |
| The BaseIndex and ImplicitAddress are contain 32bit wide offset, but | |
| the load16 functions were working with 8 bit data (encoded in the | |
| instruction). If the offset cannot be encoded in an instruction, it | |
| should be stored in a temporary register. | |
| * assembler/ARMAssembler.h: | |
| (JSC::ARMAssembler::getOffsetForHalfwordDataTransfer): | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::load16): | |
| 2010-05-08 Gabor Loki <loki@webkit.org> | |
| Reviewed by Gavin Barraclough. | |
| Fix spanning branch instruction on Cortex-A8 with Thumb-2 JIT | |
| https://bugs.webkit.org/show_bug.cgi?id=38280 | |
| If the 32-bit Thumb-2 branch instruction spans two 4KiB regions and | |
| the target of the branch falls within the first region it is | |
| possible for the processor to incorrectly determine the branch | |
| instruction, and it is also possible in some cases for the processor | |
| to enter a deadlock state. | |
| * assembler/ARMv7Assembler.h: | |
| (JSC::ARMv7Assembler::linkJumpAbsolute): | |
| 2010-05-08 Adam Barth <abarth@webkit.org> | |
| Reviewed by Darin Fisher. | |
| [WTFURL] Add a buffer for managing the output of the canonicalizer | |
| https://bugs.webkit.org/show_bug.cgi?id=38671 | |
| The canonicalizer produces a stream of canonicalized characters, which | |
| we will store in a URLBuffer. URLBuffer is quite similar to Vector, | |
| but serves as an abstraction to isolate us from the underlying | |
| character storage. In the case of WebKit, we'll probably implement a | |
| subclass of URLBuffer with Vector. In Chromium, the backing store is a | |
| std::string, which avoids an unnecessary memcpy that would be caused by | |
| using Vector instead. | |
| * wtf/url/src/URLBuffer.h: Added. | |
| (WTF::URLBuffer::URLBuffer): | |
| (WTF::URLBuffer::~URLBuffer): | |
| (WTF::URLBuffer::at): | |
| (WTF::URLBuffer::set): | |
| (WTF::URLBuffer::capacity): | |
| (WTF::URLBuffer::length): | |
| (WTF::URLBuffer::data): | |
| (WTF::URLBuffer::setLength): | |
| (WTF::URLBuffer::append): | |
| (WTF::URLBuffer::grow): | |
| 2010-05-08 Eric Seidel <eric@webkit.org> | |
| Unreviewed, just reverting commit. | |
| REGRESSION(59000): r59000 contained all sorts of changes it should not have, needs revert. | |
| https://bugs.webkit.org/show_bug.cgi?id=38798 | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitResolve): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_resolve_global): | |
| 2010-05-04 Jer Noble <jer.noble@apple.com> | |
| Reviewed by Maciej Stachowiak | |
| Safari pegs CPU and drops tons of frames using HTML5 Vimeo player | |
| <https://bugs.webkit.org/show_bug.cgi?id=34005> | |
| <rdar://problem/7569713> | |
| Added cancelCallOnMainThread. callOnMainThread should always now be paired | |
| with cancelCallOnMainThread in situations where the refcon passed to callOnMainThread | |
| may be dealloced before the main thread function can be dispatched. | |
| * wtf/MainThread.cpp: | |
| (WTF::FunctionWithContext::operator == ): Supports the FunctionWithContextFinder predicate functor. | |
| (WTF::FunctionWithContextFinder::FunctionWithContextFinder): Predicate functor for use with Dequeue::findIf | |
| (WTF::FunctionWithContextFinder::operator()): | |
| (WTF::cancelCallOnMainThread): | |
| * wtf/MainThread.h: | |
| 2010-05-07 Oliver Hunt <oliver@apple.com> | |
| Windows build fix. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-05-07 Eric Seidel <eric@webkit.org> | |
| Unreviewed, rolling out r58990. | |
| http://trac.webkit.org/changeset/58990 | |
| Broke 4 tests on Snow Leopard and Qt. | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * runtime/JSCell.h: | |
| 2010-05-07 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Optimize access to the global object from a function that uses eval | |
| https://bugs.webkit.org/show_bug.cgi?id=38644 | |
| Fix bug where cross scope access to a global var (vs. property) would | |
| be allowed without checking for intervening dynamic scopes. | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitResolve): | |
| 2010-05-07 Oliver Hunt <oliver@apple.com> | |
| 32-bit buildfix. | |
| Macro expansion I stab at thee! | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_resolve_global): | |
| 2010-05-07 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Darin Adler. | |
| Optimized o[s] where o is a cell and s is a string, removing some old | |
| code that wasn't really tuned for the JIT. | |
| SunSpider says 0.8% faster. | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * runtime/JSCell.h: | |
| 2010-05-07 Oliver Hunt <oliver@apple.com> | |
| Windows build fix. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-05-07 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoffrey Garen. | |
| Optimize access to the global object from a function that uses eval | |
| https://bugs.webkit.org/show_bug.cgi?id=38644 | |
| Add op_resolve_global_dynamic, a variant of op_resolve_global that | |
| checks each node in the scope chain for dynamically inserted properties | |
| and falls back to the normal resolve logic in that case. | |
| * JavaScriptCore.exp: | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::isGlobalResolve): | |
| (JSC::CodeBlock::printStructures): | |
| (JSC::CodeBlock::dump): | |
| (JSC::CodeBlock::derefStructures): | |
| * bytecode/Opcode.h: | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::findScopedProperty): | |
| Now take an additional reference parameter to used to indicate that | |
| there were nodes that may gain dynamic properties | |
| (JSC::BytecodeGenerator::emitResolve): | |
| (JSC::BytecodeGenerator::emitResolveBase): | |
| (JSC::BytecodeGenerator::emitResolveWithBase): | |
| deal with additional argument to findScopedProperty | |
| * bytecompiler/BytecodeGenerator.h: | |
| * bytecompiler/NodesCodegen.cpp: | |
| (JSC::FunctionCallResolveNode::emitBytecode): | |
| (JSC::PostfixResolveNode::emitBytecode): | |
| (JSC::PrefixResolveNode::emitBytecode): | |
| (JSC::ReadModifyResolveNode::emitBytecode): | |
| (JSC::AssignResolveNode::emitBytecode): | |
| These functions use findScopedProperty directly in order to | |
| optimise lookup. They cannot trivially handle any degree of | |
| dynamism in the lookup so we just give up in such case. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::resolveGlobalDynamic): | |
| (JSC::Interpreter::execute): | |
| (JSC::Interpreter::privateExecute): | |
| * interpreter/Interpreter.h: | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): | |
| (JSC::JIT::privateCompileSlowCases): | |
| * jit/JIT.h: | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_resolve_global): | |
| (JSC::JIT::emit_op_resolve_global_dynamic): | |
| (JSC::JIT::emitSlow_op_resolve_global): | |
| (JSC::JIT::emitSlow_op_resolve_global_dynamic): | |
| Happily resolve_global_dynamic can share the slow case! | |
| * jit/JITStubs.h: | |
| (JSC::): | |
| * runtime/JSActivation.cpp: | |
| (JSC::JSActivation::isDynamicScope): | |
| * runtime/JSActivation.h: | |
| * runtime/JSGlobalObject.cpp: | |
| (JSC::JSGlobalObject::isDynamicScope): | |
| * runtime/JSGlobalObject.h: | |
| * runtime/JSStaticScopeObject.cpp: | |
| (JSC::JSStaticScopeObject::isDynamicScope): | |
| * runtime/JSStaticScopeObject.h: | |
| * runtime/JSVariableObject.h: | |
| 2010-05-07 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Fixed Sputnik failure seen on buildbot. | |
| * runtime/NumberPrototype.cpp: | |
| (JSC::numberProtoFuncToString): Cast to unsigned before checking magnitude, | |
| to efficiently exclude negative numbers, which require two characters | |
| instead of one. | |
| 2010-05-07 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Alexey Proskuryakov. | |
| Slightly more effective way to guarantee a compile-time constant, at | |
| least on gcc. | |
| * runtime/NumberPrototype.cpp: | |
| (JSC::numberProtoFuncToString): Use pointer notation instead of array | |
| notation, so the compiler treats the string and its contents as constant. | |
| 2010-05-07 Adam Barth <abarth@webkit.org> | |
| Reviewed by Alexey Proskuryakov. | |
| [WTFURL] Add core URL parser | |
| https://bugs.webkit.org/show_bug.cgi?id=38572 | |
| This patch adds the core of the URL parser. The URL parser uses a | |
| templated notion of a code unit to support different string types. | |
| Later we'll add some non-templated APIs with concrete types that | |
| clients can use more conveniently. | |
| The URLParser has a couple calls to ASSERT(), which I've commented out | |
| for now. I'm not 100% sure how to handle the dependency issues there | |
| yet, so I've punted on the issue for now. | |
| Also, there are a number of methods that are declared public in this | |
| patch that are only used by the canonicalizer. My plan is to make | |
| those private or protected and make the canonicalizer a friend of the | |
| parser. The details will be in a later patch. | |
| * wtf/url/src/URLComponent.h: | |
| (WTF::URLComponent::fromRange): | |
| (WTF::URLComponent::isNonEmpty): | |
| (WTF::URLComponent::isEmptyOrInvalid): | |
| * wtf/url/src/URLParser.h: Added. | |
| (WTF::URLParser::): | |
| (WTF::URLParser::isPossibleAuthorityTerminator): | |
| (WTF::URLParser::parseAuthority): | |
| (WTF::URLParser::extractScheme): | |
| (WTF::URLParser::parseAfterScheme): | |
| (WTF::URLParser::parseStandardURL): | |
| (WTF::URLParser::parsePath): | |
| (WTF::URLParser::parsePathURL): | |
| (WTF::URLParser::parseMailtoURL): | |
| (WTF::URLParser::parsePort): | |
| (WTF::URLParser::extractFileName): | |
| (WTF::URLParser::extractQueryKeyValue): | |
| (WTF::URLParser::isURLSlash): | |
| (WTF::URLParser::shouldTrimFromURL): | |
| (WTF::URLParser::trimURL): | |
| (WTF::URLParser::consecutiveSlashes): | |
| (WTF::URLParser::isPortDigit): | |
| (WTF::URLParser::nextAuthorityTerminator): | |
| (WTF::URLParser::parseUserInfo): | |
| (WTF::URLParser::parseServerInfo): | |
| 2010-05-07 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Added a fast path for number-to-character conversion via | |
| Number.prototype.toString base 36. | |
| 0.7% speedup on SunSpider. | |
| * runtime/NumberPrototype.cpp: | |
| (JSC::numberProtoFuncToString): Made radix interpretation a little more | |
| efficient by keeping it in int space. Turned "const char" into | |
| "static const char" just in case. Added a fast path for base 36 | |
| conversion of something that will turn into a character. | |
| 2010-05-07 Adam Barth <abarth@webkit.org> | |
| Reviewed by Darin Fisher. | |
| [WTFURL] Add a malloc-backed URLBuffer | |
| https://bugs.webkit.org/show_bug.cgi?id=38694 | |
| This patch adds a URLBuffer that uses new/delete to manage the backing | |
| store for the buffer. | |
| * wtf/url/src/RawURLBuffer.h: Added. | |
| (WTF::RawURLBuffer::RawURLBuffer): | |
| (WTF::RawURLBuffer::~RawURLBuffer): | |
| (WTF::RawURLBuffer::resize): | |
| 2010-05-06 Fumitoshi Ukai <ukai@chromium.org> | |
| Reviewed by Alexey Proskuryakov. | |
| JavaScriptCore/wtf/RandomNumber.h should provide using WTF::* | |
| https://bugs.webkit.org/show_bug.cgi?id=38719 | |
| * wtf/RandomNumber.h: | |
| Add using directives. | |
| 2010-05-06 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| [Qt] Enable YARR_JIT for X86 Mac for QtWebKit | |
| https://bugs.webkit.org/show_bug.cgi?id=38668 | |
| * wtf/Platform.h: | |
| 2010-05-06 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Bug 38714 - Add result caching for Math.sin | |
| Math.sin is frequently called with the same operand, caching the result should | |
| improve performance. CachedTranscendentalFunction adds a generic mechanism to | |
| cache results for pure functions with the signature "double func(double)", and | |
| where NaN maps to NaN. | |
| CachedTranscendentalFunction uses a very simple hash function designed to be | |
| fast to execute since we cannot cache the result, and trivial to JIT generate, | |
| should we wish to do so. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/CachedTranscendentalFunction.h: Added. | |
| (JSC::CachedTranscendentalFunction::CachedTranscendentalFunction): | |
| (JSC::CachedTranscendentalFunction::~CachedTranscendentalFunction): | |
| (JSC::CachedTranscendentalFunction::operator()): | |
| (JSC::CachedTranscendentalFunction::initialize): | |
| (JSC::CachedTranscendentalFunction::hash): | |
| * runtime/JSGlobalData.h: | |
| * runtime/MathObject.cpp: | |
| (JSC::mathProtoFuncSin): | |
| * wtf/Platform.h: | |
| 2010-05-06 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix. | |
| * bytecode/SamplingTool.cpp: | |
| (JSC::SamplingFlags::sample): Use a cast, so Windows will be happy when | |
| this code is enabled. | |
| * wtf/Platform.h: Reverted last change to this file, which seems to have | |
| been accidental. | |
| 2010-05-06 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Add compile switch to make debugger keyword plant breakpoint instructions. | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitDebugHook): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_debug): | |
| * wtf/Platform.h: | |
| 2010-05-06 Oliver Hunt <oliver@apple.com> | |
| Build fix | |
| Fix ARM builds | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::load16): | |
| * assembler/MacroAssemblerARMv7.h: | |
| (JSC::MacroAssemblerARMv7::load16): | |
| 2010-05-06 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoffrey Garen. | |
| Improve performance of single character string compares | |
| https://bugs.webkit.org/show_bug.cgi?id=38659 | |
| Add logic to the jit to identify comparisons to single character string literals | |
| and then just perform the comparison inline, rather than ignoring the evidence | |
| and attempting to perform an integer comparison. | |
| Multiple changes required -- add jnlesseq opcode, add helper function to identify | |
| single character string constants, add a helper to load single character strings. | |
| Then add the 32_64 and normal codepaths to the JIT. | |
| * assembler/MacroAssemblerX86Common.h: | |
| (JSC::MacroAssemblerX86Common::load16): | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::dump): | |
| * bytecode/Opcode.h: | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitJumpIfTrue): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): | |
| (JSC::JIT::privateCompileSlowCases): | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_jnless): | |
| (JSC::JIT::emitSlow_op_jnless): | |
| (JSC::JIT::emit_op_jless): | |
| (JSC::JIT::emitSlow_op_jless): | |
| (JSC::JIT::emit_op_jlesseq): | |
| (JSC::JIT::emit_op_jnlesseq): | |
| (JSC::JIT::emitSlow_op_jlesseq): | |
| (JSC::JIT::emitSlow_op_jnlesseq): | |
| * jit/JITArithmetic32_64.cpp: | |
| (JSC::JIT::emit_op_jnless): | |
| (JSC::JIT::emitSlow_op_jnless): | |
| (JSC::JIT::emit_op_jless): | |
| (JSC::JIT::emitSlow_op_jless): | |
| (JSC::JIT::emit_op_jlesseq): | |
| (JSC::JIT::emit_op_jnlesseq): | |
| (JSC::JIT::emitSlow_op_jlesseq): | |
| (JSC::JIT::emitSlow_op_jnlesseq): | |
| (JSC::JIT::emitBinaryDoubleOp): | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::emitLoadCharacterString): | |
| (JSC::JIT::isOperandConstantImmediateChar): | |
| * jit/JSInterfaceJIT.h: | |
| (JSC::ThunkHelpers::stringImplDataOffset): | |
| (JSC::ThunkHelpers::jsStringLengthOffset): | |
| (JSC::ThunkHelpers::jsStringValueOffset): | |
| Moved from ThunkGenerators to make it possible to share. | |
| * jit/ThunkGenerators.cpp: | |
| 2010-05-06 Martin Robinson <mrobinson@webkit.org> | |
| Reviewed by Gustavo Noronha Silva. | |
| [GTK] Enable DOM clipboard and drag-and-drop access | |
| https://bugs.webkit.org/show_bug.cgi?id=30623 | |
| Convert dragging portion of drag-and-drop to use DataObjectGtk. | |
| * wtf/gobject/GRefPtr.h: Add forward declarations for GObject functions. | |
| 2010-05-06 Steve Block <steveblock@google.com> | |
| Reviewed by Eric Seidel. | |
| MAC_JAVA_BRIDGE should be renamed JAVA_BRIDGE | |
| https://bugs.webkit.org/show_bug.cgi?id=38544 | |
| * wtf/Platform.h: | |
| 2010-05-06 Adam Barth <abarth@webkit.org> | |
| Reviewed by Maciej Stachowiak. | |
| [WTFURL] Add a class to represent the segments of a URL | |
| https://bugs.webkit.org/show_bug.cgi?id=38566 | |
| When paired with a string, this class represents a parsed URL. | |
| * wtf/url/src/URLSegments.cpp: Added. | |
| (WTF::URLSegments::length): | |
| (WTF::URLSegments::charactersBefore): | |
| * wtf/url/src/URLSegments.h: Added. | |
| (WTF::URLSegments::): | |
| (WTF::URLSegments::URLSegments): | |
| * wtf/url/wtfurl.gyp: | |
| 2010-05-05 Tony Gentilcore <tonyg@chromium.org> | |
| Reviewed by Adam Barth. | |
| Adding comment with link to RefPtr documentation. | |
| https://bugs.webkit.org/show_bug.cgi?id=38601 | |
| * wtf/RefPtr.h: | |
| 2010-05-05 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Darin Adler. | |
| Bug 38604 - workers-gc2 crashing on Qt | |
| This appears to be due to a couple of issues. | |
| (1) When the atomic string table is deleted it does not clear the 'inTable' bit | |
| on AtomicStrings - it implicitly assumes that all AtomicStrings have already | |
| been deleted at this point (otherwise they will crash in their destructor when | |
| they try to remove themselves from the atomic string table). | |
| (2) We don't fix the ordering in which WTF::WTFThreadData and | |
| WebCore::ThreadGlobalData are destructed. | |
| We should make sure that ThreadGlobalData is cleaned up before worker threads | |
| terminate and WTF::WTFThreadData is destroyed, and we should clear the inTable | |
| bit of members on atomic string table destruction. | |
| WTF changes (fix issue 1, above) - ensure inTable property is cleared when the | |
| atomic string table is destroyed (also, rename InTable to IsAtomic, to make it | |
| clear which table we are refering to!) | |
| * wtf/text/AtomicString.cpp: | |
| (WebCore::AtomicStringTable::destroy): | |
| (WebCore::CStringTranslator::translate): | |
| (WebCore::UCharBufferTranslator::translate): | |
| (WebCore::HashAndCharactersTranslator::translate): | |
| (WebCore::AtomicString::add): | |
| * wtf/text/StringImpl.cpp: | |
| (WebCore::StringImpl::~StringImpl): | |
| * wtf/text/StringImpl.h: | |
| (WebCore::StringImpl::isAtomic): | |
| (WebCore::StringImpl::setIsAtomic): | |
| * wtf/text/StringImplBase.h: | |
| 2010-05-05 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoffrey Garen. | |
| Make Array.join specialised for actual arrays | |
| https://bugs.webkit.org/show_bug.cgi?id=38592 | |
| Bring Array.join in line with the other array methods by specialising for | |
| this === an array. | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::arrayProtoFuncJoin): | |
| 2010-05-04 Yongjun Zhang <yongjun_zhang@apple.com> | |
| Reviewed by Darin Adler. | |
| WebKit crashes at DebuggerCallFrame::functionName() if m_callFrame is the top global callframe. | |
| https://bugs.webkit.org/show_bug.cgi?id=38535 | |
| Don't call asFunction if callee is not a FunctionType to prevent assertion failure | |
| in JSCell::isObject(). | |
| * debugger/DebuggerCallFrame.cpp: | |
| (JSC::DebuggerCallFrame::functionName): | |
| (JSC::DebuggerCallFrame::calculatedFunctionName): | |
| 2010-05-04 Steve Falkenburg <sfalken@apple.com> | |
| Remove redundant exports to fix Windows build warnings. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-05-04 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Holger Freyther. | |
| Fix a memory leak inside the QScriptValue. | |
| QSciptValuePrivate::toString should release all temporary variables. | |
| [Qt] QScriptValue::toString have a memory leak. | |
| https://bugs.webkit.org/show_bug.cgi?id=38112 | |
| * qt/api/qscriptvalue_p.h: | |
| (QScriptValuePrivate::toString): | |
| 2010-05-04 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
| Reviewed by Darin Adler. | |
| Does not work on SPARC because of alignment issues | |
| https://bugs.webkit.org/show_bug.cgi?id=38455 | |
| Use AllocAlignmentInteger instead of void* on pageheap_memory to | |
| avoid crashing at runtime in some architectures. Investigated by | |
| Mike Hommey <mh@glandium.org>, change suggested by Darin Adler. | |
| * wtf/FastMalloc.cpp: | |
| 2010-05-04 Adam Barth <abarth@webkit.org> | |
| Reviewed by Maciej Stachowiak. | |
| Add first WTFURL file | |
| https://bugs.webkit.org/show_bug.cgi?id=38470 | |
| This class represents a component of a URL, such as the scheme or path. | |
| Essentially, the class is an index into a string buffer. | |
| * wtf/url: Added. | |
| - There was some discussion about where to put the URL library. | |
| There are a number of reasonable options, but putting the library | |
| in the WTF directory seems like a reasonable alternative. This | |
| location will make more sense once WTF is moved out of | |
| JavaScriptCore and into a top-level directory. | |
| * wtf/url/src: Added. | |
| - I've added this extra directory to the usual structure because we | |
| eventually want a "public" folder that defines the public | |
| interface to this library that clients outside of svn.webkit.org | |
| can rely upon, much like the various subfolders of the WebKit | |
| directory often define a public API. | |
| * wtf/url/src/URLComponent.h: Added. | |
| - I've added this somewhat trivial class to get the ball rolling. | |
| (WTF::URLComponent::URLComponent): | |
| (WTF::URLComponent::isValid): | |
| (WTF::URLComponent::isNonempty): | |
| (WTF::URLComponent::reset): | |
| (WTF::URLComponent::operator==): | |
| (WTF::URLComponent::begin): | |
| (WTF::URLComponent::setBegin): | |
| (WTF::URLComponent::length): | |
| (WTF::URLComponent::setLength): | |
| (WTF::URLComponent::end): | |
| * wtf/url/wtfurl.gyp: Added. | |
| - WTFURL will be an independently buildable library, hence the | |
| beginnings of a wtfurl.gyp file. | |
| 2010-05-03 Stephanie Lewis <slewis@apple.com> | |
| Reviewed by Geoff Garen. | |
| https://bugs.webkit.org/show_bug.cgi?id=38368 | |
| <rdar://problem/7834433> REGRESSSION: 1.5% PLT regression due to 56028 | |
| (return memory quicker). | |
| Instead of returning everything but the smallest spans spread out | |
| the spans kept over several size lists. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::TCMalloc_PageHeap::scavenge): | |
| 2010-05-03 James Robinson <jamesr@chromium.org> | |
| Reviewed by Eric Seidel. | |
| Clean up a few compiler warnings | |
| https://bugs.webkit.org/show_bug.cgi?id=38073 | |
| * wtf/text/StringImpl.cpp: | |
| (WebCore::StringImpl::ascii): | |
| 2010-05-03 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (reverting previous commit). | |
| Rolling out r58114 - this introduced memory leaks of | |
| AtomicStrings then workers terminated. | |
| * GNUmakefile.am: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * jit/ThunkGenerators.cpp: | |
| (JSC::ThunkHelpers::stringImplDataOffset): | |
| * runtime/Identifier.cpp: | |
| (JSC::IdentifierTable::~IdentifierTable): | |
| (JSC::IdentifierTable::add): | |
| (JSC::IdentifierCStringTranslator::hash): | |
| (JSC::IdentifierCStringTranslator::equal): | |
| (JSC::IdentifierCStringTranslator::translate): | |
| (JSC::Identifier::add): | |
| (JSC::IdentifierUCharBufferTranslator::hash): | |
| (JSC::IdentifierUCharBufferTranslator::equal): | |
| (JSC::IdentifierUCharBufferTranslator::translate): | |
| (JSC::Identifier::addSlowCase): | |
| * runtime/Identifier.h: | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::JSGlobalData): | |
| (JSC::JSGlobalData::~JSGlobalData): | |
| * runtime/JSGlobalData.h: | |
| * wtf/WTFThreadData.cpp: | |
| (WTF::WTFThreadData::WTFThreadData): | |
| (WTF::WTFThreadData::~WTFThreadData): | |
| * wtf/WTFThreadData.h: | |
| (JSC::IdentifierTable::remove): | |
| (JSC::IdentifierTable::literalTable): | |
| (WTF::WTFThreadData::atomicStringTable): | |
| * wtf/text/AtomicString.cpp: | |
| (WebCore::AtomicStringTable::create): | |
| (WebCore::AtomicStringTable::table): | |
| (WebCore::AtomicStringTable::destroy): | |
| (WebCore::stringTable): | |
| (WebCore::CStringTranslator::hash): | |
| (WebCore::CStringTranslator::equal): | |
| (WebCore::CStringTranslator::translate): | |
| (WebCore::operator==): | |
| (WebCore::AtomicString::add): | |
| (WebCore::equal): | |
| (WebCore::UCharBufferTranslator::hash): | |
| (WebCore::UCharBufferTranslator::equal): | |
| (WebCore::UCharBufferTranslator::translate): | |
| (WebCore::HashAndCharactersTranslator::hash): | |
| (WebCore::HashAndCharactersTranslator::equal): | |
| (WebCore::HashAndCharactersTranslator::translate): | |
| (WebCore::AtomicString::find): | |
| (WebCore::AtomicString::remove): | |
| * wtf/text/AtomicStringTable.h: Removed. | |
| * wtf/text/StringImpl.cpp: | |
| (WebCore::StringImpl::~StringImpl): | |
| * wtf/text/StringImpl.h: | |
| (WebCore::StringImpl::inTable): | |
| (WebCore::StringImpl::setInTable): | |
| (WebCore::equal): | |
| * wtf/text/StringImplBase.h: | |
| (WTF::StringImplBase::StringImplBase): | |
| 2010-05-03 Kevin Watters <kevinwatters@gmail.com> | |
| Reviewed by Kevin Ollivier. | |
| [wx] Implement scheduleDispatchFunctionsOnMainThread for wx port. | |
| https://bugs.webkit.org/show_bug.cgi?id=38480 | |
| * wtf/wx/MainThreadWx.cpp: | |
| (wxCallAfter::wxCallAfter): | |
| (wxCallAfter::OnCallback): | |
| (WTF::scheduleDispatchFunctionsOnMainThread): | |
| 2010-05-03 Kevin Watters <kevinwatters@gmail.com> | |
| Reviewed by Kevin Ollivier. | |
| [wx] Build and use Mac's ComplexTextController to support complex text in wx. | |
| https://bugs.webkit.org/show_bug.cgi?id=38482 | |
| * wtf/Platform.h: | |
| 2010-05-03 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Interpreter crashes due to incorrect refcounting of cached structures. | |
| https://bugs.webkit.org/show_bug.cgi?id=38491 | |
| rdar://problem/7926160 | |
| Make sure we ref/deref structures used for cached custom property getters | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::derefStructures): | |
| (JSC::CodeBlock::refStructures): | |
| 2010-05-02 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Eric Seidel. | |
| [Qt] Enable JIT for QtWebKit on Symbian | |
| https://bugs.webkit.org/show_bug.cgi?id=38339 | |
| JIT on Symbian has been stable for quite some time, it | |
| is time to turn it on by default. | |
| * wtf/Platform.h: | |
| 2010-04-29 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Add codegen support for unsigned right shift | |
| https://bugs.webkit.org/show_bug.cgi?id=38375 | |
| Expose unsigned right shift in the macro assembler, and make use of it | |
| from the jit. Currently if the result is outside the range 0..2^31-1 | |
| we simply fall back to the slow case, even in JSVALUE64 and JSVALUE32_64 | |
| where technically we could still return an immediate value. | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::urshift32): | |
| * assembler/MacroAssemblerARMv7.h: | |
| (JSC::MacroAssemblerARMv7::urshift32): | |
| * assembler/MacroAssemblerX86Common.h: | |
| (JSC::MacroAssemblerX86Common::urshift32): | |
| * assembler/X86Assembler.h: | |
| (JSC::X86Assembler::): | |
| (JSC::X86Assembler::shrl_i8r): | |
| (JSC::X86Assembler::shrl_CLr): | |
| Add unsigned right shift to the x86 assembler | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): | |
| (JSC::JIT::privateCompileSlowCases): | |
| op_rshift no longer simply get thrown to a stub function | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_urshift): | |
| (JSC::JIT::emitSlow_op_urshift): | |
| JSVALUE32 and JSVALUE64 implementation. Only supports | |
| double lhs in JSVALUE64. | |
| * jit/JITArithmetic32_64.cpp: | |
| (JSC::JIT::emit_op_rshift): | |
| (JSC::JIT::emitSlow_op_rshift): | |
| (JSC::JIT::emit_op_urshift): | |
| (JSC::JIT::emitSlow_op_urshift): | |
| Refactor right shift code to have shared implementation between signed | |
| and unsigned versions. | |
| 2010-04-29 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Handle double on righthand side of a right shift | |
| https://bugs.webkit.org/show_bug.cgi?id=38363 | |
| In 64-bit we support right shift of a double, and there's no | |
| reason not to in 32-bit either. This is a 1.1% sunspider | |
| improvement in 32bit. | |
| Given high performance javascript code frequently makes | |
| use of bit operators to perform double->int conversion i'll | |
| follow this patch up with similar patches for bitwise 'and' | |
| and 'or'. | |
| * jit/JITArithmetic32_64.cpp: | |
| (JSC::JIT::emit_op_rshift): | |
| (JSC::JIT::emitSlow_op_rshift): | |
| 2010-04-29 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoff Garen. | |
| Hoist JSVALUE32_64 arithmetic implementations into a separate file. | |
| * GNUmakefile.am: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.pro: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitSlow_op_jnless): | |
| (JSC::JIT::emitSlow_op_jless): | |
| (JSC::JIT::emitSlow_op_jnlesseq): | |
| (JSC::JIT::emit_op_mod): | |
| (JSC::JIT::compileBinaryArithOpSlowCase): | |
| (JSC::JIT::emit_op_div): | |
| (JSC::JIT::compileBinaryArithOp): | |
| * jit/JITArithmetic32_64.cpp: Added. | |
| (JSC::JIT::emit_op_negate): | |
| (JSC::JIT::emitSlow_op_negate): | |
| (JSC::JIT::emit_op_jnless): | |
| (JSC::JIT::emitSlow_op_jnless): | |
| (JSC::JIT::emit_op_jless): | |
| (JSC::JIT::emitSlow_op_jless): | |
| (JSC::JIT::emit_op_jnlesseq): | |
| (JSC::JIT::emitSlow_op_jnlesseq): | |
| (JSC::JIT::emit_op_lshift): | |
| (JSC::JIT::emitSlow_op_lshift): | |
| (JSC::JIT::emit_op_rshift): | |
| (JSC::JIT::emitSlow_op_rshift): | |
| (JSC::JIT::emit_op_bitand): | |
| (JSC::JIT::emitSlow_op_bitand): | |
| (JSC::JIT::emit_op_bitor): | |
| (JSC::JIT::emitSlow_op_bitor): | |
| (JSC::JIT::emit_op_bitxor): | |
| (JSC::JIT::emitSlow_op_bitxor): | |
| (JSC::JIT::emit_op_bitnot): | |
| (JSC::JIT::emitSlow_op_bitnot): | |
| (JSC::JIT::emit_op_post_inc): | |
| (JSC::JIT::emitSlow_op_post_inc): | |
| (JSC::JIT::emit_op_post_dec): | |
| (JSC::JIT::emitSlow_op_post_dec): | |
| (JSC::JIT::emit_op_pre_inc): | |
| (JSC::JIT::emitSlow_op_pre_inc): | |
| (JSC::JIT::emit_op_pre_dec): | |
| (JSC::JIT::emitSlow_op_pre_dec): | |
| (JSC::JIT::emit_op_add): | |
| (JSC::JIT::emitAdd32Constant): | |
| (JSC::JIT::emitSlow_op_add): | |
| (JSC::JIT::emit_op_sub): | |
| (JSC::JIT::emitSub32Constant): | |
| (JSC::JIT::emitSlow_op_sub): | |
| (JSC::JIT::emitBinaryDoubleOp): | |
| (JSC::JIT::emit_op_mul): | |
| (JSC::JIT::emitSlow_op_mul): | |
| (JSC::JIT::emit_op_div): | |
| (JSC::JIT::emitSlow_op_div): | |
| (JSC::JIT::emit_op_mod): | |
| (JSC::JIT::emitSlow_op_mod): | |
| 2010-04-29 Zoltan Herczeg <zherczeg@webkit.org> | |
| Reviewed by Oliver Hunt | |
| Add sqrt() instruction support for ARM assembler (using VFP) | |
| https://bugs.webkit.org/show_bug.cgi?id=38312 | |
| * assembler/ARMAssembler.h: | |
| (JSC::ARMAssembler::): | |
| (JSC::ARMAssembler::fsqrtd_r): | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::supportsFloatingPointSqrt): | |
| (JSC::MacroAssemblerARM::sqrtDouble): | |
| 2010-04-29 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Refactor qtscriptglobal.h | |
| https://bugs.webkit.org/show_bug.cgi?id=37953 | |
| Use the same pattern in qtscriptglobal.h as in | |
| qwebkitglobal.h without checking for specific OSs. | |
| * qt/api/qtscriptglobal.h: | |
| 2010-04-29 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Small cleanup. | |
| QScriptValuePrivate constructor shouldn't take QScriptEngine pointer | |
| as a parameter, because it breaks a private / public separation rule. | |
| QScriptEnginePrivate::get(QScriptEngine*) should return | |
| a QScriptEnginePrivate pointer instead of a QScriptEnginePtr, it simplifies | |
| implementation. | |
| [Qt] QScriptValuePrivate class needs some cleanup. | |
| https://bugs.webkit.org/show_bug.cgi?id=37729 | |
| * qt/api/qscriptengine_p.h: | |
| (QScriptEnginePrivate::get): | |
| * qt/api/qscriptvalue.cpp: | |
| (QScriptValue::QScriptValue): | |
| * qt/api/qscriptvalue_p.h: | |
| (QScriptValuePrivate::QScriptValuePrivate): | |
| 2010-04-29 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Simon Hausmann. | |
| [WINCE] Export g_stackBase with JS_EXPORTDATA | |
| https://bugs.webkit.org/show_bug.cgi?id=37437 | |
| Export g_stackBase with JS_EXPORTDATA as it is used by SharedTimerWince.cpp. | |
| * runtime/Collector.cpp: | |
| 2010-04-28 Oliver Hunt <oliver@apple.com> | |
| Do an unordered compare so that we don't treat NaN incorrectly. | |
| RS=Gavin Barraclough | |
| * jit/ThunkGenerators.cpp: | |
| (JSC::powThunkGenerator): | |
| 2010-04-28 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Add fast paths for Math.pow and Math.sqrt | |
| https://bugs.webkit.org/show_bug.cgi?id=38294 | |
| Add specialized thunks for Math.pow and Math.sqrt. | |
| This requires adding a sqrtDouble function to the MacroAssembler | |
| and sqrtsd to the x86 assembler. | |
| Math.pow is slightly more complicated, in that we have | |
| to implement exponentiation ourselves rather than relying | |
| on hardware support. The inline exponentiation is restricted | |
| to positive integer exponents on a numeric base. Exponentiation | |
| is finally performed through the "Exponentiation by Squaring" | |
| algorithm. | |
| * assembler/AbstractMacroAssembler.h: | |
| (JSC::AbstractMacroAssembler::ImmPtr::ImmPtr): | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::supportsFloatingPointSqrt): | |
| (JSC::MacroAssemblerARM::loadDouble): | |
| (JSC::MacroAssemblerARM::sqrtDouble): | |
| * assembler/MacroAssemblerARMv7.h: | |
| (JSC::MacroAssemblerARMv7::supportsFloatingPointSqrt): | |
| (JSC::MacroAssemblerARMv7::sqrtDouble): | |
| * assembler/MacroAssemblerX86.h: | |
| (JSC::MacroAssemblerX86::loadDouble): | |
| (JSC::MacroAssemblerX86::supportsFloatingPointSqrt): | |
| * assembler/MacroAssemblerX86Common.h: | |
| (JSC::MacroAssemblerX86Common::sqrtDouble): | |
| * assembler/MacroAssemblerX86_64.h: | |
| (JSC::MacroAssemblerX86_64::loadDouble): | |
| (JSC::MacroAssemblerX86_64::supportsFloatingPointSqrt): | |
| * assembler/X86Assembler.h: | |
| (JSC::X86Assembler::): | |
| (JSC::X86Assembler::movsd_mr): | |
| (JSC::X86Assembler::sqrtsd_rr): | |
| (JSC::X86Assembler::X86InstructionFormatter::twoByteOp): | |
| (JSC::X86Assembler::X86InstructionFormatter::memoryModRM): | |
| * create_hash_table: | |
| * jit/JIT.h: | |
| * jit/JITInlineMethods.h: | |
| * jit/JITOpcodes.cpp: | |
| * jit/JITStubs.h: | |
| (JSC::JITThunks::ctiNativeCallThunk): | |
| * jit/JSInterfaceJIT.h: | |
| (JSC::JSInterfaceJIT::emitLoadDouble): | |
| (JSC::JSInterfaceJIT::emitJumpIfImmediateNumber): | |
| (JSC::JSInterfaceJIT::emitJumpIfNotImmediateNumber): | |
| (JSC::JSInterfaceJIT::emitLoadInt32): | |
| * jit/SpecializedThunkJIT.h: | |
| (JSC::SpecializedThunkJIT::loadDoubleArgument): | |
| (JSC::SpecializedThunkJIT::loadInt32Argument): | |
| (JSC::SpecializedThunkJIT::returnJSValue): | |
| (JSC::SpecializedThunkJIT::returnDouble): | |
| (JSC::SpecializedThunkJIT::finalize): | |
| * jit/ThunkGenerators.cpp: | |
| (JSC::sqrtThunkGenerator): | |
| (JSC::powThunkGenerator): | |
| * jit/ThunkGenerators.h: | |
| * runtime/Executable.h: | |
| (JSC::NativeExecutable::NativeExecutable): | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::JSFunction): | |
| 2010-04-28 Mike Thole <mthole@apple.com> | |
| Reviewed by Mark Rowe. | |
| Reenable WTF_USE_PROTECTION_SPACE_AUTH_CALLBACK now that an | |
| exports file for it has been added. | |
| * wtf/Platform.h: | |
| 2010-04-28 Mike Thole <mthole@apple.com> | |
| Build fix, not reviewed. | |
| * wtf/Platform.h: | |
| Disable WTF_USE_PROTECTION_SPACE_AUTH_CALLBACK until an exports file is created. | |
| 2010-04-28 Mike Thole <mthole@apple.com> | |
| Reviewed by David Kilzer. | |
| Add canAuthenticateAgainstProtectionSpace() to frame loader so that a protection space | |
| can be inspected before attempting to authenticate against it | |
| https://bugs.webkit.org/show_bug.cgi?id=38271 | |
| * wtf/Platform.h: Add WTF_USE_PROTECTION_SPACE_AUTH_CALLBACK define. | |
| 2010-04-28 Darin Adler <darin@apple.com> | |
| Reviewed by Sam Weinig. | |
| Don't use CFAbsoluteTimeGetCurrent on Mac OS X, since it's just a cover | |
| for gettimeofday anyway. | |
| * wtf/CurrentTime.cpp: | |
| (WTF::currentTime): Remove the CF version of this. Change the "other POSIX" | |
| version to pass 0 for the time zone instead of ignoring a return value. | |
| Also get rid of unneeded type casts, since operations involving both | |
| integers and doubles are always evaluated as doubles in C without explicit | |
| type casting. | |
| 2010-04-28 Darin Fisher <darin@chromium.org> | |
| Reviewed by David Levin. | |
| [Chromium] callOnMainThread should equate to MessageLoop::PostTask | |
| https://bugs.webkit.org/show_bug.cgi?id=38276 | |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: | |
| * wtf/MainThread.cpp: | |
| * wtf/chromium/ChromiumThreading.h: | |
| * wtf/chromium/MainThreadChromium.cpp: | |
| (WTF::initializeMainThread): | |
| (WTF::callOnMainThread): | |
| (WTF::callOnMainThreadAndWait): | |
| (WTF::setMainThreadCallbacksPaused): | |
| (WTF::isMainThread): | |
| 2010-04-28 Simon Hausmann <simon.hausmann@nokia.com>, Kent Hansen <kent.hansen@nokia.com> | |
| Reviewed by Darin Adler. | |
| JSC's currentThreadStackBase is not reentrant on some platforms | |
| https://bugs.webkit.org/show_bug.cgi?id=37195 | |
| This function needs to be reentrant to avoid memory corruption on platforms where | |
| the implementation uses global variables. | |
| This patch adds a mutex lock where necessary and makes the Symbian implementation | |
| reentrant. | |
| * runtime/Collector.cpp: | |
| (JSC::currentThreadStackBaseMutex): | |
| (JSC::currentThreadStackBase): | |
| 2010-04-28 Thiago Macieira <thiago.macieira@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Fix compilation with gcc 3.4. | |
| AtomicStringImpl.h:29: error: base `WebCore::StringImpl' with only | |
| non-default constructor in class without a constructor | |
| * wtf/text/AtomicStringImpl.h: | |
| (WebCore::AtomicStringImpl::AtomicStringImpl): Provide a default constructor. | |
| * wtf/text/StringImpl.h: Allow AtomicStringImpl to call a StringImpl constructor through a friend declaration. | |
| 2010-04-27 Stephanie Lewis <slewis@apple.com> | |
| Fix Tiger build. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::TCMalloc_PageHeap::Carve): | |
| 2010-04-26 Stephanie Lewis <slewis@apple.com> | |
| Reviewed by Geoff Garen. | |
| https://bugs.webkit.org/show_bug.cgi?id=38154 FastMalloc calls madvise too often. | |
| <rdar://problem/7834433> REGRESSSION: 1.5% PLT regression due to 56028 (return memory quicker). | |
| To save on madvise calls when recommitting memory recommit the entire span and then carve it | |
| instead of carving the span up and only committing the part that will be used immediately. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::TCMalloc_PageHeap::New): | |
| (WTF::TCMalloc_PageHeap::AllocLarge): | |
| (WTF::TCMalloc_PageHeap::Carve): | |
| 2010-04-26 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Add specialized thunks for a char code related string functions | |
| https://bugs.webkit.org/show_bug.cgi?id=38177 | |
| This is a simple extension to my prior patch. Basically hoist the | |
| existing character loading logic from the charCodeAt thunk and into | |
| a helper function, then add a helper to load strings from the small | |
| string cache. This allows trivial implementations of fromCharCode | |
| and charAt. | |
| * create_hash_table: | |
| * jit/SpecializedThunkJIT.h: | |
| (JSC::SpecializedThunkJIT::returnJSCell): | |
| (JSC::SpecializedThunkJIT::tagReturnAsJSCell): | |
| * jit/ThunkGenerators.cpp: | |
| (JSC::stringCharLoad): | |
| (JSC::charToString): | |
| (JSC::charCodeAtThunkGenerator): | |
| (JSC::charAtThunkGenerator): | |
| (JSC::fromCharCodeThunkGenerator): | |
| * jit/ThunkGenerators.h: | |
| * runtime/SmallStrings.h: | |
| (JSC::SmallStrings::singleCharacterStrings): | |
| * runtime/StringConstructor.cpp: | |
| (JSC::StringConstructor::StringConstructor): | |
| 2010-04-27 Thomas Zander <t.zander@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Fix the build on Symbian on Linux using the Makefile based mkspec | |
| * JavaScriptCore.pri: It is necessary to specify the library search path | |
| when linking against JavaScriptCore. | |
| 2010-04-21 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Compile fix for Visual Studio 2010 | |
| https://bugs.webkit.org/show_bug.cgi?id=37867 | |
| Patch by Prasanth Ullattil <prasanth.ullattil@nokia.com> | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::transitionTableAdd): | |
| * wtf/MathExtras.h: | |
| * wtf/Platform.h: | |
| 2010-04-27 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Rename COMPILER(MSVC7) to COMPILER(MSVC7_OR_LOWER) | |
| * config.h: | |
| (JSC::Structure::transitionTableAdd): | |
| * wtf/Assertions.h: | |
| * wtf/Atomics.h: | |
| * wtf/CurrentTime.h: | |
| (WTF::getLocalTime): | |
| * wtf/Platform.h: | |
| * wtf/StaticConstructors.h: | |
| * wtf/StringExtras.h: | |
| * wtf/Vector.h: | |
| (WTF::::append): | |
| 2010-04-15 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
| Reviewed by Tor Arne Vestbø. | |
| [Qt] Fix Mac build break. | |
| https://bugs.webkit.org/show_bug.cgi?id=37867 | |
| - Make sure JavaScriptCore's debug_and_release config follows that | |
| of WebCore. | |
| - Use different name for JavaScriptCore target in debug and release | |
| since they might be written in the same path at the same time on | |
| parallel builds | |
| - Consolidate the DESTDIR determination logic in JavaScriptCore.pri | |
| * JavaScriptCore.pri: | |
| * JavaScriptCore.pro: | |
| 2010-04-21 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| [Qt] Make sure WebKit is not compiled using C++0x. | |
| https://bugs.webkit.org/show_bug.cgi?id=37867 | |
| As the rest of Qt compiles in the C++0x mode, people might start | |
| compiling it in this mode. WebKit don't support this yet. | |
| Patch by Thiago Macieira <thiago.macieira@nokia.com> | |
| * JavaScriptCore.pro: | |
| 2010-04-26 Oliver Hunt <oliver@apple.com> | |
| Fix windows | |
| * jit/SpecializedThunkJIT.h: | |
| (JSC::SpecializedThunkJIT::argumentToVirtualRegister): | |
| 2010-04-26 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Need to support more efficient dispatch of lightweight builtins | |
| https://bugs.webkit.org/show_bug.cgi?id=38155 | |
| The problem with calling lightweight builtins is that marshalling | |
| the call from the nitro calling convention to the system calling | |
| convention is very expensive relative to the cost of the actually | |
| evaluating the function. To work around this problem this patch | |
| adds the ability to define a custom thunk for a builtin. | |
| This allows us to use high performance custom implementations of | |
| the common and sensible versions of simple builtins. This patch | |
| includes a simple (use of which is currently hardcoded) thunk for | |
| charCodeAt. | |
| This adds a JSInterfaceJIT subclass called SpecializedThunkJIT | |
| that has helper functions to remove (or at least reduce) the need | |
| to have separate thunk implementations for each JSValue encoding. | |
| * GNUmakefile.am: | |
| * JavaScriptCore.pro: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| Many project file updates | |
| * create_hash_table: | |
| Add thunk generation callbacks to the hash tables, currently | |
| we hardcode the script to only support charCodeAt | |
| * jit/JITStubCall.h: | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::~JITThunks): | |
| (JSC::JITThunks::specializedThunk): | |
| * jit/JITStubs.h: | |
| * jit/SpecializedThunkJIT.h: Added. | |
| (JSC::SpecializedThunkJIT::SpecializedThunkJIT): | |
| (JSC::SpecializedThunkJIT::loadCellArgument): | |
| (JSC::SpecializedThunkJIT::loadJSStringArgument): | |
| (JSC::SpecializedThunkJIT::loadInt32Argument): | |
| (JSC::SpecializedThunkJIT::appendFailure): | |
| (JSC::SpecializedThunkJIT::returnInt32): | |
| (JSC::SpecializedThunkJIT::finalize): | |
| (JSC::SpecializedThunkJIT::argumentToVirtualRegister): | |
| (JSC::SpecializedThunkJIT::tagReturnAsInt32): | |
| * jit/ThunkGenerators.cpp: Added. | |
| (JSC::ThunkHelpers::stringImplDataOffset): | |
| (JSC::ThunkHelpers::jsStringLengthOffset): | |
| (JSC::ThunkHelpers::jsStringValueOffset): | |
| (JSC::charCodeAtThunkGenerator): | |
| * jit/ThunkGenerators.h: Added. | |
| * runtime/Executable.h: | |
| (JSC::NativeExecutable::NativeExecutable): | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::JSFunction): | |
| * runtime/JSFunction.h: | |
| * runtime/JSGlobalData.h: | |
| (JSC::JSGlobalData::getThunk): | |
| * runtime/JSString.h: | |
| (JSC::): | |
| * runtime/JSValue.h: | |
| Protect some of the JSVALUE32 and JSVALUE32_64 only constants | |
| and function behind appropriate USE() guards to make it harder | |
| to use the wrong flags for the target build. | |
| * runtime/Lookup.cpp: | |
| (JSC::HashTable::createTable): | |
| (JSC::setUpStaticFunctionSlot): | |
| * runtime/Lookup.h: | |
| (JSC::HashEntry::initialize): | |
| (JSC::HashEntry::generator): | |
| (JSC::HashEntry::): | |
| Make the lookup tables use a specialized thunkGenerator | |
| if present | |
| * wtf/text/StringImpl.h: | |
| 2010-04-26 Oliver Hunt <oliver@apple.com> | |
| Build fix | |
| * runtime/JSImmediate.h: | |
| * runtime/JSValue.h: | |
| 2010-04-26 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Factor some basic JS interface logic out of JIT and into a superclass | |
| https://bugs.webkit.org/show_bug.cgi?id=38163 | |
| Create JSInterfaceJIT to hold some common low level functions for | |
| interacting with the JS RegisterFile. Doing this separately from | |
| https://bugs.webkit.org/show_bug.cgi?id=38155 to ease reviewing. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * jit/JIT.h: | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::emitJumpSlowCaseIfNotJSCell): | |
| * jit/JSInterfaceJIT.h: Added. | |
| (JSC::JSInterfaceJIT::emitLoadJSCell): | |
| (JSC::JSInterfaceJIT::emitJumpIfNotJSCell): | |
| (JSC::JSInterfaceJIT::emitLoadInt32): | |
| (JSC::JSInterfaceJIT::tagFor): | |
| (JSC::JSInterfaceJIT::payloadFor): | |
| (JSC::JSInterfaceJIT::addressFor): | |
| 2010-04-26 Sam Weinig <sam@webkit.org> | |
| Fix Tiger build. | |
| * wtf/mac/MainThreadMac.mm: | |
| (WTF::isMainThread): | |
| 2010-04-26 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| <rdar://problem/7766413> | |
| Fixed a crash seen when using the JavaScriptCore API with WebKit. | |
| No layout test because DumpRenderTree doesn't use the JavaScriptCore API | |
| in this way. | |
| * interpreter/RegisterFile.cpp: | |
| (JSC::RegisterFile::setGlobalObject): | |
| (JSC::RegisterFile::clearGlobalObject): | |
| (JSC::RegisterFile::globalObject): | |
| * interpreter/RegisterFile.h: | |
| (JSC::RegisterFile::RegisterFile): Use WeakGCPtr for managing m_globalObject, | |
| since it's a weak pointer. (We never noticed this error before because, | |
| in WebKit, global objects always have a self-reference in a global variable, | |
| so marking the register file's global variables would keep m_globalObject | |
| alive. In the JavaScriptCore API, you can allocate a global object with | |
| no self-reference.) | |
| * runtime/JSActivation.h: Removed unneeded #include. | |
| * runtime/JSGlobalObject.cpp: | |
| (JSC::JSGlobalObject::~JSGlobalObject): Don't use ==, since a weak | |
| pointer is 0 when the object it points to runs its destructor. | |
| * runtime/WeakGCPtr.h: | |
| (JSC::WeakGCPtr::clear): Changed to return a bool indicating whether the | |
| clear actually happened. | |
| (JSC::WeakGCPtr::assign): Changed to forbid assignment of 0 as a shorthand | |
| for calling clear(). A client should never clear by assigning 0, since | |
| clear() should be conditional on whether the object doing the clearing | |
| is still pointed to by the weak pointer. (Otherwise, a zombie object might | |
| clear a pointer to a new, valid object.) | |
| 2010-04-25 Sam Weinig <sam@webkit.org> | |
| Reviewed by Maciej Stachowiak. | |
| Fix for https://bugs.webkit.org/show_bug.cgi?id=38097 | |
| Disentangle initializing the main thread from initializing threading | |
| This is the first step in getting rid of the WEB_THREAD #define and | |
| paving the way to allowing mac both WebKit and WebKit2 to use the same | |
| WebCore. | |
| * JavaScriptCore.exp: Export initializeMainThread and initializeMainThreadToProcessMainThread. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: Sort files. | |
| * wtf/MainThread.cpp: | |
| (WTF::mainThreadInitializationMutex): | |
| (WTF::mainThreadFunctionQueueMutex): | |
| (WTF::initializeMainThread): | |
| (WTF::deprecatedInitializeMainThread): | |
| * wtf/MainThread.h: | |
| Added Mac only initializeMainThreadToProcessMainThread which sets up callOnMainThread | |
| and isMainThead calls to assume that WebCore's main thread is also the | |
| process's main thread. Since it is possible that both initializeMainThread | |
| and initializeMainThreadToProcessMainThread could be called, the first one called | |
| wins (either will work). | |
| * wtf/Threading.h: Moved to top of file. | |
| * wtf/ThreadingPthreads.cpp: | |
| (WTF::initializeThreading): Remove call to initializeMainThread. | |
| * wtf/ThreadingWin.cpp: | |
| (WTF::initializeThreading): Ditto. | |
| * wtf/gtk/ThreadingGtk.cpp: | |
| (WTF::initializeThreading): Ditto. | |
| * wtf/mac/MainThreadMac.mm: | |
| (WTF::initializeMainThreadPlatform): | |
| (WTF::initializeMainThreadToProcessMainThread): | |
| (WTF::scheduleDispatchFunctionsOnMainThread): | |
| (WTF::isMainThread): | |
| Add runtime switch between the old behavior of using the system's main | |
| thread and a stored pointer to the main thread. Tiger always uses the | |
| system's main thread. | |
| * wtf/qt/ThreadingQt.cpp: | |
| (WTF::initializeThreading): Remove call to initializeMainThread. | |
| * wtf/win/MainThreadWin.cpp: | |
| (WTF::initializeMainThreadPlatform): Add call to initializeCurrentThreadInternal | |
| removed from initializeThreading. | |
| 2010-04-26 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| Fix a memory leak in the QScriptString. | |
| QScriptStringPrivate's constructor shouldn't call JSStringRetain as | |
| QScriptConverter implicitly pass a JSStringRef ownership. | |
| [Qt] QScriptStringPrivate c'tor problem | |
| https://bugs.webkit.org/show_bug.cgi?id=38110 | |
| * qt/api/qscriptstring_p.h: | |
| (QScriptStringPrivate::QScriptStringPrivate): | |
| 2010-04-24 Darin Adler <darin@apple.com> | |
| Reviewed by Dan Bernstein. | |
| REGRESSION (r56560): Crash in parseFloat if passed invalid UTF-16 data | |
| https://bugs.webkit.org/show_bug.cgi?id=38083 | |
| rdar://problem/7901044 | |
| Tests: fast/js/ToNumber.html | |
| fast/js/parseFloat.html | |
| * runtime/JSGlobalObjectFunctions.cpp: | |
| (JSC::parseInt): Added a FIXME comment about a problem I noticed. | |
| (JSC::parseFloat): Added a FIXME comment about a problem I noticed; | |
| covered by test cases in the test I added. | |
| * runtime/UString.cpp: | |
| (JSC::UString::toDouble): Added FIXME comments about two problems I | |
| noticed; covered by test cases in the tests I added. Added a return | |
| statement so we don't crash when illegal UTF-16 sequences are present. | |
| 2010-04-24 Anton Muhin <antonm@chromium.org> | |
| Reviewed by Darin Adler. | |
| Allow to construct HashTraits<WebCore::QualifiedName>::constructDeletedValue | |
| Former implementation attempted to use AtomicString(HashTableDeletedValue) | |
| however those values cannot be used that way: one cannot construct | |
| QualifiedNameImpl out of such AtomicString as we'll try to lookup this string | |
| in the table, for example. | |
| https://bugs.webkit.org/show_bug.cgi?id=37722 | |
| * wtf/RefPtr.h: expose hash table deleted value | |
| 2010-04-23 Sam Weinig <sam@webkit.org> | |
| Reviewed by David Levin. | |
| Fix for https://bugs.webkit.org/show_bug.cgi?id=38060 | |
| Split up Threading.h | |
| Move bits for of Threading.h into 3 new files. | |
| - Atomics.h for atomic operations. | |
| - ThreadSafeShared.h for the ThreadSafeShared class. | |
| - ThreadingPrimitives.h for the primitives and platform types. | |
| Basic threading operations (creation, etc.) remain in Threading.h. | |
| * GNUmakefile.am: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * wtf/Atomics.h: Copied from wtf/Threading.h. | |
| * wtf/ThreadSafeShared.h: Copied from wtf/Threading.h. | |
| * wtf/Threading.h: | |
| * wtf/ThreadingPrimitives.h: Copied from wtf/Threading.h. | |
| 2010-04-23 Sam Weinig <sam@webkit.org> | |
| Fix Qt build. | |
| * wtf/qt/MainThreadQt.cpp: #include <QThread> | |
| 2010-04-22 Sam Weinig <sam@webkit.org> | |
| Reviewed by Anders Carlsson. | |
| Fix for https://bugs.webkit.org/show_bug.cgi?id=38022 | |
| Move isMainThread predicate function to MainThread.h | |
| * wtf/MainThread.cpp: | |
| (WTF::initializeMainThread): | |
| (WTF::isMainThread): | |
| * wtf/MainThread.h: | |
| * wtf/Threading.h: | |
| * wtf/ThreadingPthreads.cpp: | |
| (WTF::initializeThreading): | |
| * wtf/ThreadingWin.cpp: | |
| (WTF::initializeThreading): | |
| * wtf/gtk/ThreadingGtk.cpp: | |
| (WTF::initializeThreading): | |
| * wtf/mac/MainThreadMac.mm: | |
| (WTF::initializeMainThreadPlatform): | |
| (WTF::isMainThread): | |
| * wtf/qt/MainThreadQt.cpp: | |
| (WTF::isMainThread): | |
| * wtf/qt/ThreadingQt.cpp: | |
| (WTF::initializeThreading): | |
| * wtf/text/AtomicString.cpp: | |
| 2010-04-23 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu> | |
| Reviewed by Laszlo Gombos. | |
| Add RVCT support for Linux | |
| Developed in cooperation with Gabor Loki. | |
| * API/JSStringRef.h: | |
| * jit/ExecutableAllocator.h: | |
| * jit/ExecutableAllocatorPosix.cpp: | |
| (JSC::ExecutableAllocator::cacheFlush): | |
| * jit/JITStubs.cpp: | |
| * wtf/MathExtras.h: | |
| * wtf/unicode/qt4/UnicodeQt4.h: | |
| 2010-04-23 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Laszlo Gombos. | |
| [WIN] Move OwnPtrWin.cpp into platform specific folder. | |
| https://bugs.webkit.org/show_bug.cgi?id=38042 | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
| * wtf/OwnPtrWin.cpp: Removed. | |
| * wtf/win/OwnPtrWin.cpp: Copied from JavaScriptCore/wtf/OwnPtrWin.cpp. | |
| 2010-04-23 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Laszlo Gombos. | |
| [BREWMP] Move OwnPtrBrew.cpp into platform specific folder. | |
| https://bugs.webkit.org/show_bug.cgi?id=38042 | |
| * wtf/OwnPtrBrew.cpp: Removed. | |
| * wtf/brew/OwnPtrBrew.cpp: Copied from JavaScriptCore/wtf/OwnPtrBrew.cpp. | |
| 2010-04-22 Steve Block <steveblock@google.com> | |
| Reviewed by Adam Barth. | |
| Update Android to use isfinite, isinf, isnan and signbit from namespace std. | |
| https://bugs.webkit.org/show_bug.cgi?id=37948 | |
| * wtf/MathExtras.h: | |
| 2010-04-22 Fumitoshi Ukai <ukai@chromium.org> | |
| Unreviewed build fix. | |
| * wtf/MD5.cpp: fix include path of CString.h | |
| 2010-04-22 Fumitoshi Ukai <ukai@chromium.org> | |
| Reviewed by Adam Barth. | |
| MD5 is required for WebSocket new protocol implementation | |
| https://bugs.webkit.org/show_bug.cgi?id=37913 | |
| * GNUmakefile.am: | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.pro: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * wtf/MD5.cpp: Added. | |
| * wtf/MD5.h: Added. | |
| 2010-04-22 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (build fix). | |
| Errk, accidentally committed commenting out two ASSERTs! reverting. | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::protect): | |
| (JSC::Heap::unprotect): | |
| 2010-04-22 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| https://bugs.webkit.org/show_bug.cgi?id=38006 | |
| Change lifetime of JSC::IdentifierTables used by WebCores to match AtomicStringTable | |
| Presently JSC's IdentifierTables are owned by the JSGlobalData. For | |
| JSGlobalData objects created via the API this should continue to be the case, | |
| but for the JSGlobalData objects used by WebCore (the main thread's common | |
| global data, and those for workers) use a IdentifierTable provided (and owned) | |
| by wtfThreadData. This allow the lifetime of these IdentifierTable to match | |
| those of the corresponding AtomicStringTables. | |
| * API/APIShims.h: | |
| (JSC::APIEntryShim::APIEntryShim): | |
| * API/JSContextRef.cpp: | |
| (JSContextGroupCreate): | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::protect): | |
| (JSC::Heap::unprotect): | |
| (JSC::Heap::markRoots): | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::JSGlobalData): | |
| (JSC::JSGlobalData::~JSGlobalData): | |
| (JSC::JSGlobalData::createContextGroup): | |
| (JSC::JSGlobalData::create): | |
| (JSC::JSGlobalData::sharedInstance): | |
| * runtime/JSGlobalData.h: | |
| (JSC::JSGlobalData::): | |
| (JSC::JSGlobalData::isSharedInstance): | |
| * runtime/JSLock.cpp: | |
| (JSC::JSLock::JSLock): | |
| (JSC::JSLock::lock): | |
| (JSC::JSLock::unlock): | |
| (JSC::JSLock::DropAllLocks::DropAllLocks): | |
| * wtf/WTFThreadData.cpp: | |
| (WTF::WTFThreadData::WTFThreadData): | |
| (WTF::WTFThreadData::~WTFThreadData): | |
| 2010-04-22 Sheriff Bot <webkit.review.bot@gmail.com> | |
| Unreviewed, rolling out r58110. | |
| http://trac.webkit.org/changeset/58110 | |
| https://bugs.webkit.org/show_bug.cgi?id=38007 | |
| Caused an internal compiler error on Qt (Requested by abarth | |
| on #webkit). | |
| * wtf/MathExtras.h: | |
| 2010-04-22 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (windows build fix). | |
| * API/JSWeakObjectMapRefPrivate.cpp: | |
| 2010-04-22 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (windows build fix). | |
| * API/JSBase.cpp: | |
| * API/JSCallbackObject.cpp: | |
| 2010-04-22 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| https://bugs.webkit.org/show_bug.cgi?id=37978 | |
| Unify JSC::IdentifierTable and WebCore::AtomicStringTable implementations. | |
| These two classes both implement a HashSet of uniqued StringImpls, with | |
| translator classes to avoid unnecessary object creation. The only difference | |
| between the classes is which flag (isIdentifier or inTable) is set. | |
| Combine the two classes using a template predicated on which flag to use. | |
| New class AtomicStringTable created, containing all the goodness from | |
| IdentifierTable & AtomicStringTable, expect for Identifier's literalTable, | |
| which has been moved onto JSGlobalData. Removed duplicate string translator | |
| classes. Renamed StringImpl's inTable flag to more explicit 'isAtomic', | |
| and set this on the empty string (which matches Identifier behaviour, and | |
| removes a redundant check for zero-length). | |
| * GNUmakefile.am: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/Identifier.cpp: | |
| (JSC::createLiteralTable): | |
| (JSC::deleteLiteralTable): | |
| (JSC::Identifier::add): | |
| (JSC::Identifier::addSlowCase): | |
| * runtime/Identifier.h: | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::JSGlobalData): | |
| (JSC::JSGlobalData::~JSGlobalData): | |
| * runtime/JSGlobalData.h: | |
| * wtf/WTFThreadData.cpp: | |
| (WTF::WTFThreadData::WTFThreadData): | |
| (WTF::WTFThreadData::~WTFThreadData): | |
| * wtf/WTFThreadData.h: | |
| (WTF::WTFThreadData::atomicStringTable): | |
| * wtf/text/AtomicString.cpp: | |
| (WebCore::table): | |
| (WebCore::operator==): | |
| (WebCore::AtomicString::add): | |
| (WebCore::AtomicString::find): | |
| (WebCore::AtomicString::remove): | |
| * wtf/text/AtomicStringTable.h: Added. | |
| (WTF::CStringTranslator::hash): | |
| (WTF::CStringTranslator::equal): | |
| (WTF::CStringTranslator::translate): | |
| (WTF::UCharBufferTranslator::hash): | |
| (WTF::UCharBufferTranslator::equal): | |
| (WTF::UCharBufferTranslator::translate): | |
| (WTF::HashAndCharactersTranslator::hash): | |
| (WTF::HashAndCharactersTranslator::equal): | |
| (WTF::HashAndCharactersTranslator::translate): | |
| (WTF::IdentifierOrAtomicStringTable::remove): | |
| (WTF::::~IdentifierOrAtomicStringTable): | |
| (WTF::::add): | |
| (WTF::::find): | |
| * wtf/text/StringImpl.cpp: | |
| (WebCore::StringImpl::~StringImpl): | |
| * wtf/text/StringImpl.h: | |
| (WebCore::StringImpl::isAtomic): | |
| (WebCore::StringImpl::setIsAtomic): | |
| (WebCore::equal): | |
| * wtf/text/StringImplBase.h: | |
| (WTF::StringImplBase::StringImplBase): | |
| 2010-04-22 Steve Block <steveblock@google.com> | |
| Reviewed by Adam Barth. | |
| Update Android to use isfinite, isinf, isnan and signbit from namespace std. | |
| https://bugs.webkit.org/show_bug.cgi?id=37948 | |
| * wtf/MathExtras.h: | |
| 2010-04-22 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| [Qt] Remove dependency of JSC to QtGui | |
| https://bugs.webkit.org/show_bug.cgi?id=37867 | |
| The patch also make sure that hal.h is in the include path on Symbian. | |
| The dependency to QtGui took care of that before. | |
| Patch by Thiago Macieira <thiago.macieira@nokia.com> | |
| and Rohan McGovern <rohan.mcgovern@nokia.com> | |
| * JavaScriptCore.pri: | |
| * JavaScriptCore.pro: | |
| 2010-04-22 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
| Reviewed by Tor Arne Vestbø. | |
| [Qt] Corrects symbols visibility for JavaScriptCore. | |
| https://bugs.webkit.org/show_bug.cgi?id=37867 | |
| * JavaScriptCore.pro: | |
| 2010-04-22 Gabor Loki <loki@webkit.org> | |
| Reviewed by Gavin Barraclough. | |
| Use BLX and BX to keep happy the return stack predictor above ARMv4 | |
| https://bugs.webkit.org/show_bug.cgi?id=37862 | |
| Inspired by Jacob Bramley's patch from JaegerMonkey | |
| * assembler/ARMAssembler.cpp: | |
| (JSC::ARMAssembler::executableCopy): | |
| * assembler/ARMAssembler.h: | |
| (JSC::ARMAssembler::): | |
| (JSC::ARMAssembler::bx): | |
| (JSC::ARMAssembler::blx): | |
| (JSC::ARMAssembler::loadBranchTarget): | |
| (JSC::ARMAssembler::jmp): | |
| (JSC::ARMAssembler::getLdrImmAddress): | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::jump): | |
| (JSC::MacroAssemblerARM::nearCall): | |
| (JSC::MacroAssemblerARM::call): | |
| (JSC::MacroAssemblerARM::ret): | |
| (JSC::MacroAssemblerARM::prepareCall): | |
| (JSC::MacroAssemblerARM::call32): | |
| 2010-04-21 Andy Estes <aestes@apple.com> | |
| Rubber stamped by Mark Rowe. | |
| Export WTF::deleteOwnedPtr(HFONT). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-04-21 Gavin Barraclough <barraclough@apple.com> | |
| Rubber Stamped by Oliver Hunt. | |
| Make SmallStrings store an array of RefPtr<StringImpl>, | |
| instead of a direct array of StringImpls. This allows | |
| us to remove a friend (and a layering violation) from | |
| WTF::StringImpl, and makes it so that all StringImpls | |
| are individually heap allocated. | |
| * runtime/SmallStrings.cpp: | |
| (JSC::SmallStringsStorage::rep): | |
| (JSC::SmallStringsStorage::SmallStringsStorage): | |
| * wtf/text/StringImpl.h: | |
| 2010-04-21 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Fix for https://bugs.webkit.org/show_bug.cgi?id=37937 | |
| Wean JavaScriptCore off calls to isMainThread() | |
| - Replace use of isMainThread() for interpreter reentry checks | |
| with a stored value on the JSGlobalData. | |
| - Replace use of isMainThread() for useMainThread only check in the | |
| collector with a stored exclusive thread. | |
| * API/JSContextRef.cpp: | |
| (JSContextGroupCreate): | |
| Always default to a small stack type for uses of the JSC API. It is | |
| unlikely that the interpreter reentry required on the web will be as | |
| important for other uses of JavaScriptCore. | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| Update exports. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::execute): | |
| (JSC::Interpreter::prepareForRepeatCall): | |
| Use new stored JSGlobalData::maxReentryDepth instead of isMainThread(). | |
| * interpreter/Interpreter.h: | |
| Rename MaxMainThreadReentryDepth to MaxLargeThreadReentryDepth and | |
| MaxSecondaryThreadReentryDepth to MaxSmallThreadReentryDepth. | |
| * jsc.cpp: | |
| (main): Use the a large stack for jsc since it is always using the | |
| main thread. | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::arrayProtoFuncToString): | |
| (JSC::arrayProtoFuncToLocaleString): | |
| (JSC::arrayProtoFuncJoin): | |
| Use new stored JSGlobalData::maxReentryDepth instead of isMainThread(). | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::registerThread): | |
| Use the concept of making JSC run on an exclusiveThread instead of | |
| forcing a mainThreadOnly assertion. | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::JSGlobalData): | |
| (JSC::JSGlobalData::createNonDefault): | |
| (JSC::JSGlobalData::create): | |
| (JSC::JSGlobalData::createLeaked): | |
| (JSC::JSGlobalData::sharedInstance): | |
| * runtime/JSGlobalData.h: | |
| Add ThreadStackType argument to JSGlobalData constructors and set | |
| maxReentryDepth based on it. | |
| 2010-04-21 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (windows build fix pt. 3). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-04-21 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (windows build fix pt. 2). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-04-21 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (Qt build fix). | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.pro: | |
| * wtf/qt/StringQt.cpp: Copied from WebCore/platform/text/qt/StringQt.cpp. | |
| 2010-04-21 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (windows build fix). | |
| * API/JSValueRef.cpp: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| * runtime/Identifier.cpp: | |
| (JSC::IdentifierTable::~IdentifierTable): | |
| (JSC::IdentifierTable::add): | |
| * runtime/Identifier.h: | |
| * wtf/WTFThreadData.h: | |
| (JSC::IdentifierTable::remove): | |
| (JSC::IdentifierTable::literalTable): | |
| * wtf/text/StringImpl.cpp: | |
| (WebCore::StringImpl::~StringImpl): | |
| 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt, Darin Adler. | |
| Bug 37906 - Remove JSC::UStringImpl; unify with StringImpl. | |
| JSC::UStringImpl and WebCore::StringImpl (soon to be renamed to | |
| WTF::StringImpl) are almost identical. Remove duplication of code by unifying | |
| the two, move missing features from UStringImpl into StringImpl & delete the | |
| class UStringImpl. | |
| * API/JSClassRef.cpp: | |
| * API/JSContextRef.cpp: | |
| * GNUmakefile.am: | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.pro: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * bytecode/EvalCodeCache.h: | |
| * bytecode/JumpTable.cpp: | |
| * profiler/ProfileNode.cpp: | |
| * runtime/Identifier.cpp: | |
| (JSC::Identifier::add): | |
| * runtime/Identifier.h: | |
| (JSC::Identifier::equal): | |
| * runtime/UString.cpp: | |
| * runtime/UString.h: | |
| (WTF::): | |
| * runtime/UStringImpl.cpp: Removed. | |
| * runtime/UStringImpl.h: | |
| * wtf/text/StringHash.h: | |
| (WebCore::StringHash::equal): | |
| (WebCore::CaseFoldingHash::equal): | |
| * wtf/text/StringImpl.cpp: | |
| (WebCore::StringImpl::~StringImpl): | |
| (WebCore::StringImpl::empty): | |
| (WebCore::StringImpl::sharedBuffer): | |
| (WebCore::equal): | |
| * wtf/text/StringImpl.h: | |
| (WebCore::StringImpl::StringImpl): | |
| (WebCore::StringImpl::create): | |
| (WebCore::StringImpl::tryCreateUninitialized): | |
| (WebCore::StringImpl::cost): | |
| (WebCore::StringImpl::isIdentifier): | |
| (WebCore::StringImpl::setIsIdentifier): | |
| (WebCore::StringImpl::computeHash): | |
| (WebCore::StringImpl::copyChars): | |
| (WebCore::StringImpl::): | |
| 2010-04-21 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Darin Adler. | |
| Added missing #include "Lookup.h" in LUT source files. | |
| https://bugs.webkit.org/show_bug.cgi?id=37903 | |
| * runtime/ArrayPrototype.cpp: | |
| * runtime/DatePrototype.cpp: | |
| * runtime/JSONObject.cpp: | |
| * runtime/MathObject.cpp: | |
| * runtime/NumberConstructor.cpp: | |
| * runtime/RegExpConstructor.cpp: | |
| * runtime/RegExpObject.cpp: | |
| * runtime/StringPrototype.cpp: | |
| 2010-04-21 Gustavo Sverzut Barbieri <barbieri@profusion.mobi> | |
| Reviewed by Nikolas Zimmermann. | |
| Add missing EFL JavaScriptCore file. | |
| http://webkit.org/b/37854 | |
| * wtf/efl: Added. | |
| * wtf/efl/MainThreadEfl.cpp: Added. | |
| (WTF::initializeMainThreadPlatform): | |
| (WTF::timeoutFired): | |
| (WTF::scheduleDispatchFunctionsOnMainThread): | |
| 2010-04-20 Xan Lopez <xlopez@igalia.com> | |
| Another attempt to fix the build. | |
| * GNUmakefile.am: | |
| 2010-04-20 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| [ES5] RegExp literals are constants that should be persistent across multiple function calls. | |
| https://bugs.webkit.org/show_bug.cgi?id=37908 | |
| Dump the separate RegExp constant pool, and just use the standard JS constant pool | |
| in codeblock. This allows us to drop op_new_regexp and all associated code as well. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::dump): | |
| (JSC::CodeBlock::shrinkToFit): | |
| * bytecode/CodeBlock.h: | |
| * bytecode/Opcode.h: | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitLoad): | |
| * bytecompiler/BytecodeGenerator.h: | |
| * bytecompiler/NodesCodegen.cpp: | |
| (JSC::RegExpNode::emitBytecode): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): | |
| * jit/JIT.h: | |
| * jit/JITOpcodes.cpp: | |
| * jit/JITStubs.cpp: | |
| * jit/JITStubs.h: | |
| (JSC::): | |
| 2010-04-20 Oliver Hunt <oliver@apple.com> | |
| Fix license on create_regex_tables | |
| * create_regex_tables: | |
| 2010-04-20 Oliver Hunt <oliver@apple.com> | |
| Reviewed by NOBODY (Build fix). | |
| Fix gtk | |
| * GNUmakefile.am: | |
| * make-generated-sources.sh: | |
| 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Bug 37895 - Share common code from UStringImplBase with StringImpl | |
| The implementation of StringImpl & UStringImpl is very similar. Restructure | |
| StringImpl to match UStringImpl, moving the flags and length into a base class, | |
| so that this can be shared between both string types to increase code reuse. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/RopeImpl.h: | |
| (JSC::RopeImpl::RopeImpl): | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringImpl::UStringImpl): | |
| * wtf/text/StringImpl.h: | |
| (WebCore::StringImpl::StringImpl): | |
| (WebCore::StringImpl::characters): | |
| * wtf/text/StringImplBase.h: Copied from JavaScriptCore/runtime/UStringImpl.h. | |
| (WTF::StringImplBase::length): | |
| (WTF::StringImplBase::operator new): | |
| (WTF::StringImplBase::StringImplBase): | |
| 2010-04-20 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Autogenerate yarr character tables | |
| https://bugs.webkit.org/show_bug.cgi?id=37877 | |
| Use a python script to automatically generate character tables | |
| for the builtin YARR character classes. This allows us to generate | |
| actual tables as well, by using these tables we can both increase | |
| performance of the check (for complex builtins) and reduce the actual | |
| code size. | |
| 4-8% win on string-unpack-code, but lots of noise on other tests so | |
| i'm only confident saying its a 1% win overall. | |
| * DerivedSources.make: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * assembler/AbstractMacroAssembler.h: | |
| (JSC::AbstractMacroAssembler::ExtendedAddress::ExtendedAddress): | |
| * assembler/MacroAssembler.h: | |
| (JSC::MacroAssembler::branchTest8): | |
| * assembler/MacroAssemblerX86Common.h: | |
| (JSC::MacroAssemblerX86Common::branchTest8): | |
| * assembler/MacroAssemblerX86_64.h: | |
| (JSC::MacroAssemblerX86_64::branchTest8): | |
| * assembler/X86Assembler.h: | |
| (JSC::X86Assembler::cmpb_im): | |
| (JSC::X86Assembler::testb_im): | |
| * bytecode/SamplingTool.cpp: | |
| (JSC::SamplingTool::dump): | |
| * create_regex_tables: Added. | |
| * yarr/RegexCompiler.cpp: | |
| (JSC::Yarr::CharacterClassConstructor::charClass): | |
| * yarr/RegexJIT.cpp: | |
| (JSC::Yarr::RegexGenerator::matchCharacterClass): | |
| (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy): | |
| (JSC::Yarr::RegexGenerator::generatePatternCharacterNonGreedy): | |
| (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy): | |
| * yarr/RegexPattern.h: | |
| (JSC::Yarr::CharacterClassTable::create): | |
| (JSC::Yarr::CharacterClassTable::CharacterClassTable): | |
| (JSC::Yarr::CharacterClass::CharacterClass): | |
| 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (speculative windows fix - missed a bit!). | |
| * wtf/text/AtomicString.h: | |
| 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (speculative windows fix). | |
| * wtf/text/AtomicString.h: | |
| 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (windows build fix). | |
| Add missing .def file entries. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Bug 37869 - Move URopeImpl to its own .h/.cpp | |
| Currently Ropes are implemented by the class URopeImpl, which is defined in | |
| UStringImpl.h, and then typedefed to the name JSString::Rope. Remove the | |
| typedef, and rename all uses of URopeImpl and JSString::Rope to just RopeImpl. | |
| Move RopeImpl to its own header, and remove all remaining references to ropes | |
| from UStringImpl (rename UStringOrRopeImpl to UStringImplBase, rename or move | |
| the isRope & deref methods from UStringOrRopeImpl). | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/JSString.cpp: | |
| (JSC::JSString::resolveRope): | |
| * runtime/JSString.h: | |
| (JSC::): | |
| (JSC::RopeBuilder::JSString): | |
| (JSC::RopeBuilder::~JSString): | |
| (JSC::RopeBuilder::appendStringInConstruct): | |
| (JSC::RopeBuilder::JSStringFinalizerStruct::): | |
| * runtime/RopeImpl.cpp: Copied from JavaScriptCore/runtime/UStringImpl.cpp. | |
| (JSC::RopeImpl::derefFibersNonRecursive): | |
| (JSC::RopeImpl::destructNonRecursive): | |
| * runtime/RopeImpl.h: Copied from JavaScriptCore/runtime/UStringImpl.h. | |
| (JSC::RopeImpl::tryCreateUninitialized): | |
| (JSC::RopeImpl::isRope): | |
| (JSC::RopeImpl::deref): | |
| (JSC::RopeImpl::RopeImpl): | |
| * runtime/UStringImpl.cpp: | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringImplBase::isInvalid): | |
| (JSC::UStringImplBase::ref): | |
| (JSC::UStringImplBase::UStringImplBase): | |
| (JSC::UStringImplBase::): | |
| (JSC::UStringImpl::UStringImpl): | |
| 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Bug 37828 - Move WebCore's String classes to WTF | |
| Move these classes up to WTF so they are available to all clients of WTF (in | |
| particular JSC). | |
| As a first patch, making the most minimal change possible, since this patch | |
| could easily grow rather large since we'll have to change every class forward | |
| declaration ( e.g. every "namespace WebCore { class String; }" much change to | |
| "namespace WTF { class String; }"). | |
| Moving the files, but leaving the classes logically in the WebCore namespace - | |
| which is technically a layering violation - I'll come back and fix this up in a | |
| subsequent patch. | |
| * Android.mk: | |
| * Android.v8.wtf.mk: | |
| * GNUmakefile.am: | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.pro: | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * config.h: | |
| * wtf/StaticConstructors.h: Copied from WebCore/platform/StaticConstructors.h. | |
| * wtf/text/AtomicString.cpp: Copied from WebCore/platform/text/AtomicString.cpp. | |
| * wtf/text/AtomicString.h: Copied from WebCore/platform/text/AtomicString.h. | |
| * wtf/text/AtomicStringImpl.h: Copied from WebCore/platform/text/AtomicStringImpl.h. | |
| * wtf/text/StringBuffer.h: Copied from WebCore/platform/text/StringBuffer.h. | |
| * wtf/text/StringHash.h: Copied from WebCore/platform/text/StringHash.h. | |
| * wtf/text/StringImpl.cpp: Copied from WebCore/platform/text/StringImpl.cpp. | |
| * wtf/text/StringImpl.h: Copied from WebCore/platform/text/StringImpl.h. | |
| * wtf/text/WTFString.cpp: Copied from WebCore/platform/text/String.cpp. | |
| (WebCore::charactersToFloat): | |
| * wtf/text/WTFString.h: Copied from WebCore/platform/text/PlatformString.h. | |
| 2010-04-20 Csaba Osztrogonác <ossy@webkit.org> | |
| [Qt] Unreviewed speculative buildfix for WinCE after r57882 | |
| https://bugs.webkit.org/show_bug.cgi?id=37701 | |
| * JavaScriptCore.pri: missing wince* case added. | |
| 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (build fix). | |
| Speculative Chromium/Win build fix, attempt #2. | |
| * config.h: | |
| 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (build fix). | |
| Speculative Chromium/Win build fix. | |
| * config.h: JS_EXPORTDATA should do nothing on !JSC builds. | |
| 2010-04-20 Csaba Osztrogonác <ossy@webkit.org> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Target(WebCore,jsc,...) must depends on static library of JavaScriptCore | |
| https://bugs.webkit.org/show_bug.cgi?id=37701 | |
| * JavaScriptCore.pri: dependency added. | |
| 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
| Rubber stamped by Maciej Stachowiak (relanding r57829). | |
| Added missing JS_EXPORTDATA | |
| * API/APIShims.h: | |
| (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): | |
| (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock): | |
| (JSC::APICallbackShim::APICallbackShim): | |
| (JSC::APICallbackShim::~APICallbackShim): | |
| * API/JSContextRef.cpp: | |
| * Android.mk: | |
| * Android.v8.wtf.mk: | |
| * GNUmakefile.am: | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.pro: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/Completion.cpp: | |
| (JSC::checkSyntax): | |
| (JSC::evaluate): | |
| * runtime/Identifier.cpp: | |
| (JSC::Identifier::remove): | |
| (JSC::Identifier::checkCurrentIdentifierTable): | |
| * runtime/Identifier.h: | |
| * runtime/InitializeThreading.cpp: | |
| (JSC::initializeThreadingOnce): | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::create): | |
| * wtf/WTFThreadData.cpp: Copied from JavaScriptCore/wtf/WTFThreadData.cpp. | |
| * wtf/WTFThreadData.h: Copied from JavaScriptCore/wtf/WTFThreadData.h. | |
| 2010-04-19 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (rolling out r57829). | |
| This broke windows. | |
| * API/APIShims.h: | |
| (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): | |
| (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock): | |
| (JSC::APICallbackShim::APICallbackShim): | |
| (JSC::APICallbackShim::~APICallbackShim): | |
| * API/JSContextRef.cpp: | |
| * Android.mk: | |
| * Android.v8.wtf.mk: | |
| * GNUmakefile.am: | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.pro: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/Completion.cpp: | |
| (JSC::checkSyntax): | |
| (JSC::evaluate): | |
| * runtime/Identifier.cpp: | |
| (JSC::Identifier::remove): | |
| (JSC::Identifier::checkCurrentIdentifierTable): | |
| (JSC::createIdentifierTableSpecificCallback): | |
| (JSC::createIdentifierTableSpecific): | |
| * runtime/Identifier.h: | |
| (JSC::ThreadIdentifierTableData::ThreadIdentifierTableData): | |
| (JSC::defaultIdentifierTable): | |
| (JSC::setDefaultIdentifierTable): | |
| (JSC::currentIdentifierTable): | |
| (JSC::setCurrentIdentifierTable): | |
| (JSC::resetCurrentIdentifierTable): | |
| * runtime/InitializeThreading.cpp: | |
| (JSC::initializeThreadingOnce): | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::create): | |
| * wtf/WTFThreadData.cpp: Removed. | |
| * wtf/WTFThreadData.h: Removed. | |
| 2010-04-19 Douglas Gregor <dgregor@apple.com> | |
| Reviewed and landed by Anders Carlsson. | |
| * runtime/UStringImpl.h: | |
| Fix class/struct declaration mismatches. | |
| 2010-04-19 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Beth Dakin. | |
| Checked in these tests I wrote becuase Balazs Kelemen wanted to use them. | |
| * tests/perf: Added. | |
| * tests/perf/bench-allocate-nonretained.js: Added. | |
| * tests/perf/bench-allocate-retained.js: Added. | |
| 2010-04-19 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (windows build fix). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-04-16 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| https://bugs.webkit.org/show_bug.cgi?id=37745 | |
| Move string uniquing tables to (new) WTFThreadData class. | |
| Remove AtomicString's dependency on ThreadGlobalData so that we can move | |
| WebCore's string classes up to WTF. | |
| WTFThreadData.cpp/.h are based on ThreadGlobalData from WebCore. | |
| Moved JSC & WebCore's string uniquing tables to this class. | |
| This patch introduces a temporary layering violation in providing forward | |
| declarations of classes from JSC and WTF; this will be resolved as we move | |
| more string code up to WTF. | |
| * API/APIShims.h: | |
| (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): | |
| (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock): | |
| (JSC::APICallbackShim::APICallbackShim): | |
| (JSC::APICallbackShim::~APICallbackShim): | |
| * API/JSContextRef.cpp: | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/Completion.cpp: | |
| (JSC::checkSyntax): | |
| (JSC::evaluate): | |
| * runtime/Identifier.cpp: | |
| (JSC::Identifier::remove): | |
| (JSC::Identifier::checkCurrentIdentifierTable): | |
| * runtime/Identifier.h: | |
| * runtime/InitializeThreading.cpp: | |
| (JSC::initializeThreadingOnce): | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::create): | |
| * wtf/WTFThreadData.cpp: Copied from WebCore/platform/ThreadGlobalData.cpp. | |
| (WTF::WTFThreadData::WTFThreadData): | |
| (WTF::WTFThreadData::~WTFThreadData): | |
| * wtf/WTFThreadData.h: Copied from WebCore/platform/ThreadGlobalData.h. | |
| (WTF::WTFThreadData::atomicStringTable): | |
| (WTF::WTFThreadData::initializeIdentifierTable): | |
| (WTF::WTFThreadData::currentIdentifierTable): | |
| (WTF::WTFThreadData::setCurrentIdentifierTable): | |
| (WTF::WTFThreadData::resetCurrentIdentifierTable): | |
| (WTF::wtfThreadData): | |
| 2010-04-19 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Build fix for WinCE. | |
| Moved the include of the non-existing errno.h header file inside | |
| platform guard macros. | |
| * jit/ExecutableAllocatorFixedVMPool.cpp: | |
| 2010-04-18 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Laszlo Gombos. | |
| [WINCE] Don't define WTF_CPU_MIDDLE_ENDIAN=1 | |
| https://bugs.webkit.org/show_bug.cgi?id=37434 | |
| Windows CE supports little-endian format only, so don't define | |
| WTF_CPU_MIDDLE_ENDIAN=1. | |
| * wtf/Platform.h: | |
| 2010-04-18 Simon Hausmann <simon.hausmann@nokia.com> | |
| Reviewed by Laszlo Gombos. | |
| [Qt] Fix JavaScriptCore's include path for WinCE builds | |
| https://bugs.webkit.org/show_bug.cgi?id=36751 | |
| * JavaScriptCore.pri: | |
| 2010-04-16 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by nobody, build fix. | |
| 2010-04-16 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by nobody, build fix. | |
| 2010-04-16 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Bug 37730 - Remove JSC::UString dependencies from WebCore::StringImpl | |
| (Following on from bug #37675). | |
| Make the argument ordering for UStringImpl's constructor & create | |
| methods match, when passed a shared buffer. | |
| * JavaScriptCore.exp: | |
| * runtime/UStringImpl.cpp: | |
| (JSC::UStringImpl::create): | |
| * runtime/UStringImpl.h: | |
| 2010-04-15 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| Fix memory leak in QScriptEngine::evaluate(). | |
| QScriptEnginePrivate::evaluate should release temporary variables. | |
| [Qt] QScriptEngine::evaluate has memory leak. | |
| https://bugs.webkit.org/show_bug.cgi?id=37596 | |
| * qt/api/qscriptengine_p.cpp: | |
| (QScriptEnginePrivate::evaluate): | |
| * qt/api/qscriptengine_p.h: | |
| 2010-04-14 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| Fix a memory leak in QScriptValue::inherits. | |
| [Qt] QScriptValue::inherits has a memory leak. | |
| https://bugs.webkit.org/show_bug.cgi?id=37617 | |
| * qt/api/qscriptvalue_p.h: | |
| (QScriptValuePrivate::inherits): | |
| 2010-04-14 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| Fix a few memory leaks in QScriptEngine. | |
| Syntax checking caused memory leak, not all temporary variables were released. | |
| [Qt] Syntax checking in the QtScript cause a memory leak. | |
| https://bugs.webkit.org/show_bug.cgi?id=37610 | |
| * qt/api/qscriptengine_p.cpp: | |
| (QScriptEnginePrivate::checkSyntax): | |
| * qt/api/qscriptsyntaxcheckresult.cpp: | |
| (QScriptSyntaxCheckResultPrivate::errorMessage): | |
| (QScriptSyntaxCheckResultPrivate::errorLineNumber): | |
| 2010-04-14 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| Fix memory leak inside QScriptEnginePrivate::makeJSValue. | |
| QScriptEnginePrivate::makeJSValue should release temporary JSStringRef variable. | |
| [Qt] tst_QScriptValue::toString has a memory leak. | |
| https://bugs.webkit.org/show_bug.cgi?id=37598 | |
| * qt/api/qscriptengine_p.h: | |
| (QScriptEnginePrivate::makeJSValue): | |
| 2010-04-14 Peter Varga <pvarga@inf.u-szeged.hu> | |
| Reviewed by Geoffrey Garen. | |
| Move the YARR JIT fallback detection from RegexJIT.cpp to | |
| RegexCompiler.cpp. | |
| https://bugs.webkit.org/show_bug.cgi?id=37571 | |
| * yarr/RegexCompiler.cpp: | |
| (JSC::Yarr::RegexPatternConstructor::atomBackReference): | |
| (JSC::Yarr::RegexPatternConstructor::quantifyAtom): | |
| * yarr/RegexJIT.cpp: | |
| (JSC::Yarr::RegexGenerator::generateTerm): | |
| (JSC::Yarr::RegexGenerator::RegexGenerator): | |
| (JSC::Yarr::jitCompileRegex): | |
| * yarr/RegexJIT.h: | |
| (JSC::Yarr::RegexCodeBlock::operator!): | |
| * yarr/RegexPattern.h: | |
| (JSC::Yarr::RegexPattern::RegexPattern): | |
| (JSC::Yarr::RegexPattern::reset): | |
| 2010-04-14 Kent Hansen <kent.hansen@nokia.com> | |
| Reviewed by Maciej Stachowiak. | |
| Mac OS X: Use deployment target to determine whether memory tagging should be enabled | |
| https://bugs.webkit.org/show_bug.cgi?id=34888 | |
| When building on (Snow) Leopard but targeting Tiger | |
| (TARGETING_TIGER defined, BUILDING_ON_TIGER not defined), | |
| WebKit would crash on Tiger because the tags passed to mmap | |
| caused those function calls to fail. | |
| Conversely, when building on Tiger but targeting Leopard | |
| (BUILDING_ON_TIGER defined, TARGETING_LEOPARD defined), WebKit | |
| would crash on Leopard because the tags passed to vm_map and | |
| vm_allocate caused those function calls to fail. | |
| Solution: Use TARGETING_TIGER rather than BUILDING_ON_TIGER to | |
| govern the tag definitions. Use the same tags for vm_map and | |
| vm_allocate regardless of target, since they work on | |
| both. Fall back to the mmap tags that work on Tiger (that is, | |
| "no tags") if targeting Tiger, since those tags also work on | |
| Leopard. | |
| * wtf/VMTags.h: | |
| 2010-04-12 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
| Reviewed by nobody, build fix. | |
| [Qt] Build fix for Mac when building with build-webkit --qt | |
| Specifying no configuration on Mac builds WebCore both in debug | |
| and release. JavaScriptCore has to follow this rule as well. | |
| * JavaScriptCore.pro: | |
| 2010-04-11 Mark Rowe <mrowe@apple.com> | |
| Reviewed by Sam Weinig. | |
| <rdar://problem/7851332> Fix the build. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::TCMallocStats::): Initialize extra members of malloc_introspection_t to zero. | |
| 2010-04-09 Mikhail Naganov <mnaganov@chromium.org> | |
| Reviewed by Pavel Feldman. | |
| Make CallIdentifier constructor to handle null urls. | |
| https://bugs.webkit.org/show_bug.cgi?id=37341 | |
| * profiler/CallIdentifier.h: | |
| (JSC::CallIdentifier::CallIdentifier): | |
| 2010-04-09 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Fix crashes with package builds in release | |
| Add NDEBUG to the defines for package build in JavaScriptCore.pri, | |
| so that it's consistently used for JavaScriptCore, WebCore, jsc and all | |
| other tools using wtf, etc. data structures directly. Mixing NDEBUG with | |
| non-NDEBUG builds causes crashes due to differences in data structures when | |
| assertions/checks are enabled. | |
| * JavaScriptCore.pri: | |
| 2010-04-09 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Darin Adler. | |
| Implement NO_RETURN for COMPILER(MSVC). | |
| https://bugs.webkit.org/show_bug.cgi?id=33056 | |
| Added NO_RETURN_WITH_VALUE for functions with non-void return type. | |
| * jsc.cpp: | |
| * wtf/AlwaysInline.h: | |
| * wtf/FastMalloc.cpp: | |
| 2010-04-08 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Simon Hausmann. | |
| [WINCE] Check if ARM or _ARM_ is defined | |
| https://bugs.webkit.org/show_bug.cgi?id=37200 | |
| MSVC defines ARM and _ARM_ for Windows CE ARM. Define WTF_CPU_ARM=1 | |
| when either ARM or _ARM_ is defined. | |
| * wtf/Platform.h: | |
| 2010-04-08 Csaba Osztrogonác <ossy@webkit.org> | |
| Reviewed Oliver Hunt. | |
| [Qt]r57240 broke Qt build (might be a gcc bug) | |
| https://bugs.webkit.org/show_bug.cgi?id=37253 | |
| Workaround until fix. On PLATFORM(QT) use inline instead of ALWAYS_INLINE. | |
| * wtf/PassRefPtr.h: Qt guards added. | |
| 2010-04-07 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Anders Carlsson. | |
| Vector<UString> makes many needless calls to UString::UString and UString::~UString | |
| Add a VectorTrait<UString> specialisation to allow vector to simply memset/memcpy | |
| data around. Only difference from the VectorTrait<RefPtr<T> > traits is the inability | |
| to use memset to initialize data. | |
| * runtime/UString.h: | |
| (WTF::): | |
| 2010-04-07 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoff Garen. | |
| Beat gcc with a clue bat -- force inlining of refIfNotNull and derefIfNotNull | |
| * wtf/PassRefPtr.h: | |
| 2010-04-07 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Darin Adler. | |
| Replace isprint with isASCIIPrintable | |
| https://bugs.webkit.org/show_bug.cgi?id=37223 | |
| WebKit does not use functions in <ctype.h> as they are dependent on the current | |
| locale. Use the equivalent functions in <wtf/ASCIICType.h>. isASCIIPrintable | |
| replaces isprint. | |
| * pcre/pcre_exec.cpp: | |
| (pchars): | |
| 2010-04-07 Enrica Casucci <enrica@apple.com> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=37219 | |
| This change disables text caret for the iPhone platflorm. | |
| * wtf/Platform.h: Disabled text caret for iPhone. | |
| 2010-04-06 Adam Barth <abarth@webkit.org> | |
| Reviewed by Eric Seidel. | |
| REGRESSION: Worker termination via JS timeout may cause worker tests like fast/workers/worker-terminate.html fail. | |
| https://bugs.webkit.org/show_bug.cgi?id=36646 | |
| Add a new exception type for forcibly terminating a JavaScript stack. | |
| The new exception functions similarly to the | |
| InterruptedExecutionException but is conceptually different because | |
| execution is terminated instead of just interrupted. | |
| * GNUmakefile.am: | |
| - Added new Terminator.h file. | |
| * JavaScriptCore.gypi: | |
| - Added new Terminator.h file. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| - Added new Terminator.h file. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| - Added new Terminator.h file. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::throwException): | |
| - Fully unwind the stack for TerminatedExecutionException. | |
| (JSC::Interpreter::privateExecute): | |
| - Check if we've been terminated at the same time we check if we've | |
| timed out. | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| - Check if we've been terminated at the same time we check if we've | |
| timed out. | |
| * runtime/Completion.cpp: | |
| - Some exceptions define special completion types so that calls can | |
| see why we terminated evaluation. | |
| (JSC::evaluate): | |
| * runtime/Completion.h: | |
| - Define a new completion type for termination. | |
| (JSC::): | |
| * runtime/ExceptionHelpers.cpp: | |
| - Define TerminatedExecutionException and refactor pseudo-RTTI | |
| virtual function to be more semantic. | |
| (JSC::InterruptedExecutionError::exceptionType): | |
| (JSC::TerminatedExecutionError::TerminatedExecutionError): | |
| (JSC::TerminatedExecutionError::exceptionType): | |
| (JSC::TerminatedExecutionError::toString): | |
| (JSC::createTerminatedExecutionException): | |
| * runtime/ExceptionHelpers.h: | |
| - Entry point for generating a TerminatedExecutionException. | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::JSGlobalData): | |
| - Add a Terminator object that can be used to asynchronously | |
| terminate a JavaScript execution stack. | |
| * runtime/JSGlobalData.h: | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::exceptionType): | |
| - Define that, by default, thrown objects have a normal exception | |
| type. | |
| * runtime/Terminator.h: Added. | |
| - Added a new controller object that can be used to terminate | |
| execution asynchronously. This object is more or less a | |
| glorified bool. | |
| (JSC::Terminator::Terminator): | |
| (JSC::Terminator::termianteSoon): | |
| (JSC::Terminator::shouldTerminate): | |
| 2010-04-05 Oliver Hunt <oliver@apple.com> | |
| And another one. | |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: | |
| 2010-04-05 Oliver Hunt <oliver@apple.com> | |
| And another build fix. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: | |
| 2010-04-05 Oliver Hunt <oliver@apple.com> | |
| Build fix | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| 2010-04-05 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Support weak maps in JSC | |
| https://bugs.webkit.org/show_bug.cgi?id=37132 | |
| Expose an API to allow creation of a map for storing | |
| weak JS references. | |
| * API/JSWeakObjectMapRefInternal.h: Added. | |
| (OpaqueJSWeakObjectMap::create): | |
| (OpaqueJSWeakObjectMap::map): | |
| (OpaqueJSWeakObjectMap::~OpaqueJSWeakObjectMap): | |
| (OpaqueJSWeakObjectMap::OpaqueJSWeakObjectMap): | |
| * API/JSWeakObjectMapRefPrivate.cpp: Added. | |
| * API/JSWeakObjectMapRefPrivate.h: Added. | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/JSGlobalObject.h: | |
| (JSC::JSGlobalObject::registerWeakMap): | |
| (JSC::JSGlobalObject::deregisterWeakMap): | |
| 2010-04-05 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| [Symbian] Consolidate Symbian WINSCW environment configuration | |
| https://bugs.webkit.org/show_bug.cgi?id=37100 | |
| Move the "undefinition" of WIN32 and _WIN32 from WebCore/config.h | |
| to JavaScriptCore/wtf/Platform.h as it is not specific to WebCore. | |
| PLATFORM(WIN) and OS(WIN) no longer needs to be undefined as | |
| undefining WIN32 takes care of it. | |
| * wtf/Platform.h: | |
| 2010-04-03 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=37068 | |
| Change UString to use a 0 rep for null strings instead of a null object. | |
| No performance impact. | |
| * JavaScriptCore.exp: | |
| * runtime/InternalFunction.cpp: | |
| (JSC::InternalFunction::InternalFunction): | |
| * runtime/JSString.h: | |
| (JSC::RopeBuilder::JSString): | |
| * runtime/UString.cpp: | |
| (JSC::initializeUString): | |
| * runtime/UString.h: | |
| (JSC::UString::UString): | |
| (JSC::UString::data): | |
| (JSC::UString::size): | |
| (JSC::UString::isNull): | |
| (JSC::UString::isEmpty): | |
| (JSC::UString::cost): | |
| 2010-04-03 Balazs Kelemen <kb@inf.u-szeged.hu> | |
| Reviewed by Oliver Hunt. | |
| Fix uninitalised members in CallLinkInfo and BytecodeGenerator. | |
| https://bugs.webkit.org/show_bug.cgi?id=36816 | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::CodeBlock): | |
| * bytecode/CodeBlock.h: | |
| (JSC::CallLinkInfo::CallLinkInfo): | |
| 2010-04-03 yael aharon <yael.aharon@nokia.com> | |
| Reviewed by Darin Adler. | |
| Enable HTMLProgressElement for Safari on OSX | |
| https://bugs.webkit.org/show_bug.cgi?id=36961 | |
| * Configurations/FeatureDefines.xcconfig: | |
| 2010-04-02 Ruben Van Boxem <vanboxem.ruben@gmail.com> | |
| Reviewed by Eric Seidel. | |
| Mingw-w64 fixes for JavaScriptCore | |
| https://bugs.webkit.org/show_bug.cgi?id=35607 | |
| * runtime/Collector.cpp: use the msvc code for mingw-w64 (but not mingw-w32) | |
| (JSC::Heap::allocateBlock): | |
| (JSC::Heap::freeBlockPtr): | |
| (JSC::currentThreadStackBase): | |
| (JSC::currentThreadStackBase): | |
| * wtf/Platform.h: added COMPILER(MINGW64) check to differentiate between mingw.org and mingw-w64 functions | |
| 2010-04-02 Geoffrey Garen <ggaren@apple.com> | |
| Build fix: updated the .def file. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-04-02 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Inlined toThisString and toThisJSString to avoid virtual function call overhead | |
| https://bugs.webkit.org/show_bug.cgi?id=37039 | |
| Maybe a 1% speedup on iBench JS. | |
| * JavaScriptCore.exp: New exports. | |
| * runtime/JSCell.cpp: | |
| * runtime/JSCell.h: | |
| * runtime/JSNumberCell.cpp: | |
| * runtime/JSNumberCell.h: | |
| * runtime/JSString.cpp: | |
| * runtime/JSString.h: | |
| * runtime/JSValue.h: | |
| * runtime/JSZombie.h: | |
| (JSC::JSZombie::toThisObject): Nixed the old virtual-type implementation. | |
| * runtime/JSObject.h: | |
| (JSC::JSValue::toThisString): | |
| (JSC::JSValue::toThisJSString): Added the inlined implementation. | |
| 2010-04-02 Jeremy Moskovich <jeremy@chromium.org> | |
| Reviewed by Geoffrey Garen. | |
| Beef up documentation for ASSERT* and CRASH macros a bit. | |
| https://bugs.webkit.org/show_bug.cgi?id=36527 | |
| * wtf/Assertions.h: | |
| 2010-04-02 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Unreviewed, minor build fix. | |
| Change the order of the member initialisation list | |
| in constructor to match declaration order | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::Heap): | |
| 2010-04-01 Kinuko Yasuda <kinuko@chromium.org> | |
| Reviewed by Dmitry Titov. | |
| Add FileThread for async file operation support in FileReader and FileWriter | |
| https://bugs.webkit.org/show_bug.cgi?id=36896 | |
| Add ENABLE_FILE_READER and ENABLE_FILE_WRITER flags. | |
| * Configurations/FeatureDefines.xcconfig: | |
| 2010-03-31 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (windows build fix pt II). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-03-31 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (windows build fix). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-03-31 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Bug 36871 - Remove JSC::CString | |
| Use WTF::CString instead (which until recently was WebCore::CString). | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * runtime/UString.cpp: | |
| * runtime/UString.h: | |
| 2010-03-31 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Unreviewed, fix after r56842. | |
| Add UNUSED_PARAM a to silence warning. | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| 2010-03-31 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Unreviewed, Symbian build fix. | |
| Refactor JITStubs.cpp so that the list of STUB_FUNCTIONs | |
| are not dependent on the JSVALUE32_64 guard. | |
| * jit/JITStubs.cpp: Place the JSVALUE32_64 guard inside | |
| the body of cti_op_eq_strings. | |
| * jit/JITStubs.h: Remove JSVALUE32_64 guard from | |
| cti_op_eq_strings stub. | |
| 2010-03-30 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (windows build fix). | |
| Fixing b0rked version of JavaScriptCore.vcproj - added lines were truncated. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| 2010-03-30 Gavin Barraclough <barraclough@apple.com> | |
| Rubber stamped by Sam Weinig. | |
| https://bugs.webkit.org/show_bug.cgi?id=36866 | |
| Move CString to WTF | |
| * Android.mk: | |
| * GNUmakefile.am: | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.pro: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * wtf/text: Added. | |
| * wtf/text/CString.cpp: Copied from WebCore/platform/text/CString.cpp. | |
| * wtf/text/CString.h: Copied from WebCore/platform/text/CString.h. | |
| (WTF::CStringBuffer::data): | |
| (WTF::CStringBuffer::length): | |
| (WTF::CStringBuffer::create): | |
| (WTF::CStringBuffer::CStringBuffer): | |
| (WTF::CStringBuffer::mutableData): | |
| (WTF::CString::CString): | |
| (WTF::CString::isNull): | |
| (WTF::CString::buffer): | |
| (WTF::operator!=): | |
| 2010-03-30 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
| Reviewed by nobody, build break. | |
| [Qt] Fix build break on Qt Mac. | |
| DESTDIR path on Mac do not include the configuration path by default | |
| like on Windows. Have to force it. | |
| * JavaScriptCore.pro: | |
| 2010-03-29 Alice Liu <alice.liu@apple.com> | |
| Reviewed by NOBODY (build fix). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: | |
| add JSObjectRefPrivate.h | |
| 2010-03-29 Chao-ying Fu <fu@mips.com> | |
| Reviewed by Oliver Hunt. | |
| MIPS JIT Supports | |
| https://bugs.webkit.org/show_bug.cgi?id=30144 | |
| The following changes enable MIPS JIT. | |
| * assembler/MIPSAssembler.h: | |
| (JSC::MIPSAssembler::lbu): | |
| (JSC::MIPSAssembler::linkWithOffset): | |
| * assembler/MacroAssemblerMIPS.h: | |
| (JSC::MacroAssemblerMIPS::load8): | |
| (JSC::MacroAssemblerMIPS::branch8): | |
| (JSC::MacroAssemblerMIPS::branchTest8): | |
| (JSC::MacroAssemblerMIPS::setTest8): | |
| (JSC::MacroAssemblerMIPS::setTest32): | |
| * jit/JIT.h: | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::preserveReturnAddressAfterCall): | |
| (JSC::JIT::restoreReturnAddressBeforeReturn): | |
| * jit/JITOpcodes.cpp: | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::JITThunks): | |
| * jit/JITStubs.h: | |
| (JSC::JITStackFrame::returnAddressSlot): | |
| * wtf/Platform.h: | |
| 2010-02-26 Kenneth Rohde Christiansen <kenneth@webkit.org> | |
| Reviewed by Simon Fraser. | |
| Add support for Widgets 1.0: View Mode Media Feature | |
| https://bugs.webkit.org/show_bug.cgi?id=35446 | |
| Add an enable flag for the Widgets (http://www.w3.org/TR/widgets-reqs/) | |
| and turn it on for Qt only. | |
| * wtf/Platform.h: | |
| 2010-03-29 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Darin Adler. | |
| Corrected name of (u)int64_t compile time assert. | |
| https://bugs.webkit.org/show_bug.cgi?id=36739 | |
| int64_t_is_four_bytes -> int64_t_is_eight_bytes | |
| * os-win32/stdint.h: | |
| 2010-03-29 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Use the -l syntax for linking against JavaScriptCore on Windows. | |
| This allow qmake to extract dependencies correctly when generating VS | |
| solutions. | |
| * JavaScriptCore.pri: | |
| 2010-03-29 Thomas Zander <t.zander@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| https://bugs.webkit.org/show_bug.cgi?id=36742 | |
| gcc for Symbian doesn't support gcc extensions like atomicity.h - disable | |
| * wtf/Threading.h: also detect os symbian | |
| 2010-03-28 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Remove the definition of WTF_CHANGES guards from the build system | |
| https://bugs.webkit.org/show_bug.cgi?id=31670 | |
| * JavaScriptCore.pro: Remove the definition of WTF_CHANGES | |
| as it is already defined in config.h | |
| 2010-03-28 Kent Hansen <kent.hansen@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Add API for reporting additional memory cost of JavaScript objects | |
| https://bugs.webkit.org/show_bug.cgi?id=36650 | |
| * qt/api/qscriptengine.cpp: | |
| (QScriptEngine::reportAdditionalMemoryCost): | |
| * qt/api/qscriptengine.h: | |
| * qt/api/qscriptengine_p.h: | |
| (QScriptEnginePrivate::reportAdditionalMemoryCost): | |
| * qt/tests/qscriptengine/tst_qscriptengine.cpp: | |
| (tst_QScriptEngine::reportAdditionalMemoryCost): | |
| 2010-03-28 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| QScriptEngine API was enriched by globalObject() method | |
| which give an access to the global object. | |
| [Qt] QScriptEngine doesn't give an access to global object | |
| https://bugs.webkit.org/show_bug.cgi?id=36603 | |
| * qt/api/qscriptengine.cpp: | |
| (QScriptEngine::globalObject): | |
| * qt/api/qscriptengine.h: | |
| * qt/api/qscriptengine_p.cpp: | |
| (QScriptEnginePrivate::globalObject): | |
| * qt/api/qscriptengine_p.h: | |
| * qt/tests/qscriptengine/tst_qscriptengine.cpp: | |
| (tst_QScriptEngine::globalObject): | |
| 2010-03-26 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Build JavaScriptCore as a static library. | |
| https://bugs.webkit.org/show_bug.cgi?id=36590 | |
| This patch takes what was left of the unused JavaScriptCore.pro | |
| and moved the compilation logic from JavaScriptCore.pri to | |
| JavaScriptCore.pro. | |
| * JavaScriptCore.pri: | |
| * JavaScriptCore.pro: | |
| * jsc.pro: | |
| * qt/api/QtScript.pro: | |
| 2010-03-25 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (build fix). | |
| * profiler/ProfileGenerator.cpp: | |
| (JSC::ProfileGenerator::willExecute): | |
| (JSC::ProfileGenerator::didExecute): | |
| 2010-03-25 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Bug 36611 - Cleanup JSC::CString | |
| Rename CString::c_str() -> CString::data(), CString::size() -> CString::length(), | |
| remove UString::getCString() (all uses are wrong, should use UString::UTF8String()). | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::printUnaryOp): | |
| (JSC::CodeBlock::printBinaryOp): | |
| (JSC::CodeBlock::printConditionalJump): | |
| (JSC::CodeBlock::printGetByIdOp): | |
| (JSC::CodeBlock::printPutByIdOp): | |
| (JSC::printGlobalResolveInfo): | |
| (JSC::printStructureStubInfo): | |
| (JSC::CodeBlock::printStructure): | |
| (JSC::CodeBlock::printStructures): | |
| (JSC::CodeBlock::dump): | |
| * jsc.cpp: | |
| (functionPrint): | |
| (functionDebug): | |
| (runInteractive): | |
| (fillBufferWithContentsOfFile): | |
| * profiler/CallIdentifier.h: | |
| (JSC::CallIdentifier::c_str): | |
| * profiler/Profile.cpp: | |
| (JSC::Profile::debugPrintDataSampleStyle): | |
| * profiler/ProfileNode.cpp: | |
| (JSC::ProfileNode::debugPrintData): | |
| (JSC::ProfileNode::debugPrintDataSampleStyle): | |
| * runtime/DateConversion.cpp: | |
| (JSC::parseDate): | |
| * runtime/JSGlobalObjectFunctions.cpp: | |
| (JSC::encode): | |
| (JSC::globalFuncJSCPrint): | |
| * runtime/UString.cpp: | |
| (JSC::operator==): | |
| (JSC::UString::toDouble): | |
| * runtime/UString.h: | |
| (JSC::CString::length): | |
| (JSC::CString::data): | |
| 2010-03-25 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
| Reviewed by nobody, build fix. | |
| [Qt] Build fix on MSVC. Reverts r55633 for stdint.h | |
| This file gets included in generated moc files which don't | |
| include the prefix header. | |
| * os-win32/stdint.h: | |
| 2010-03-24 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (windows build fix). | |
| 2010-03-24 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| Switch String::latin1, String::utf8, String::fromUTF8 to | |
| use WTF's Unicode conversion methods rather than TextEncoder. | |
| These methods only perform simple conversion, and don't need | |
| really require TextEncoder's full capability (to look up arbitrary | |
| encodings by name), switching to only be dependent on WTF will | |
| make it easier if we chose to move WebCore::String to WTF. | |
| * JavaScriptCore.exp: | |
| 2010-03-24 Alexey Proskuryakov <ap@apple.com> | |
| Reviewed by Geoff Garen. | |
| * wtf/FastMalloc.h: Added a using directive for fastMallocSize, like we do for all public | |
| WTF symbols. Also sorted the list alphabetically. | |
| 2010-03-23 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (speculative windows build fix part II). | |
| 2010-03-23 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (speculative windows build fix). | |
| 2010-03-23 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Bug 36519 - JSGlobalContextRelease is unnecessarily slow | |
| Since [ http://trac.webkit.org/changeset/35917 ], calling | |
| JSGlobalContextRelease always triggers a GC heap collection | |
| (if not a full destroy). As per 35917's changelog "This is | |
| only really necessary when the (JSGlobalObject's) last | |
| reference is released, but there is no way to determine that, | |
| and no harm in collecting slightly more often." | |
| Well, we now know of cases of API clients who are harmed by | |
| the performance penalty of collecting too often, so it's time | |
| to add a way to determine whether a call to JSGlobalContextRelease | |
| is removing the last protect from it's global object. If further | |
| protects are retaining the global object (likely from other | |
| JSGlobalContextRefs), then don't trigger a GC collection. | |
| * API/JSContextRef.cpp: | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::unprotect): return a boolean indicating that the value is now unprotected. | |
| * runtime/Collector.h: | |
| * wtf/HashCountedSet.h: | |
| (WTF::::remove): return a boolean indicating whether the value was removed from the set. | |
| 2010-03-23 Mark Rowe <mrowe@apple.com> | |
| Build fix. | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::arrayProtoFuncSplice): Some versions of GCC emit a warning about the implicit 64- to 32-bit truncation | |
| that takes place here. An explicit cast is sufficient to silence it. | |
| 2010-03-23 Alexey Proskuryakov <ap@apple.com> | |
| Build fix. | |
| * runtime/ArrayPrototype.cpp: (JSC::arrayProtoFuncSplice): Fixed a typo - length doesn't | |
| need to be converted with toInteger(). | |
| 2010-03-23 Alexey Proskuryakov <ap@apple.com> | |
| Reviewed by Geoff Garen. | |
| https://bugs.webkit.org/show_bug.cgi?id=36511 | |
| <rdar://problem/7753498> Safari freezes when using SPUTNIK JavaScript conformance check | |
| Test: fast/js/sputnik-S15.4.4.12_A3_T3.html | |
| * runtime/ArrayPrototype.cpp: (JSC::arrayProtoFuncSplice): We were incorrectly computing | |
| the start offset, and iterated over (almost) all integers. Note that this can be fixed | |
| without using doubles, but the code would be much more complicated, and there is no important | |
| reason to stick to integers here. | |
| 2010-03-23 Kent Hansen <kent.hansen@nokia.com> | |
| Reviewed by Darin Adler. | |
| Fix compilation on Itanium in 32-bit mode | |
| https://bugs.webkit.org/show_bug.cgi?id=36494 | |
| * wtf/Platform.h: Introduce CPU(IA64_32). Don't define | |
| WTF_USE_JSVALUE64 if the CPU is in 32-bit mode. | |
| 2010-03-23 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Mark Rowe. | |
| Interpreter fix for <rdar://problem/7728196> REGRESSION (r46701): -(-2147483648) | |
| evaluates to -2147483648 on 32 bit (35842) | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): Only take the fast negate path if | |
| a bit other than bit 31 is set. If none of bits 0-30 are set, then the | |
| value we're negating can only be 0 or -2147483648, and neither can be | |
| negated in int space. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_negate): | |
| (JSC::JIT::emitSlow_op_negate): Updated the JIT implementation to match | |
| the interpreter, since it's slightly simpler. | |
| 2010-03-22 Siddharth Mathur <siddharth.mathur@nokia.com> | |
| Reviewed by Laszlo Gombos. | |
| [Symbian] More efficient aligned memory allocation for JSC Collector | |
| https://bugs.webkit.org/show_bug.cgi?id=34350 | |
| * JavaScriptCore.pri: Added 2 new Symbian source files and HAL linkage | |
| * runtime/Collector.cpp: Reduced port-specific code and added private data member | |
| (JSC::Heap::Heap): | |
| (JSC::Heap::~Heap): | |
| (JSC::Heap::destroy): | |
| (JSC::Heap::allocateBlock): | |
| (JSC::Heap::freeBlockPtr): | |
| * runtime/Collector.h: Added private data member | |
| * wtf/symbian: Added. | |
| * wtf/symbian/BlockAllocatorSymbian.cpp: Added. | |
| (WTF::AlignedBlockAllocator::AlignedBlockAllocator): Helper class to allocate | |
| aligned blocks more efficiently as required by Collector | |
| (WTF::AlignedBlockAllocator::alloc): | |
| (WTF::AlignedBlockAllocator::free): | |
| (WTF::AlignedBlockAllocator::destroy): | |
| (WTF::AlignedBlockAllocator::~AlignedBlockAllocator): | |
| * wtf/symbian/BlockAllocatorSymbian.h: Added. | |
| 2010-03-22 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Fixed <rdar://problem/7728196> REGRESSION (r46701): -(-2147483648) | |
| evaluates to -2147483648 on 32 bit (35842) | |
| Two ways to fix the same bug: | |
| 1. Check for overflow when negating, since negating the largest negative | |
| int causes overflow. | |
| 2. Constant-fold even when negating a negative, since, like they say in | |
| high school, "math works." | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::branchNeg32): | |
| * assembler/MacroAssemblerX86Common.h: | |
| (JSC::MacroAssemblerX86Common::branchNeg32): Added a branching version | |
| of the negate operator. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_negate): Use the branching version of the negate | |
| operator to check for overflow. | |
| (JSC::JIT::emitSlow_op_negate): Link the check for overflow to a slow case. | |
| (We could emit inline code for this, since we know what the result would | |
| be, but that's probably just a waste of generated code.) | |
| * parser/Grammar.y: Constant fold even when negating a negative. | |
| 2010-03-22 David Kilzer <ddkilzer@apple.com> | |
| <http://webkit.org/b/36431> Clean up 'int' use in UString.cpp after r54789 | |
| Reviewed by Darin Adler. | |
| * runtime/UString.cpp: | |
| (JSC::UString::from): Changed argument type from 'unsigned int' | |
| to 'unsigned' to match WebKit coding style. | |
| (JSC::UString::find): Changed static_cast<int>() to | |
| static_cast<unsigned>() now that this method returns unsigned. | |
| (JSC::UString::rfind): Ditto. | |
| * runtime/UString.h: | |
| (JSC::UString::from): Changed argument type from 'unsigned int' | |
| to 'unsigned' to match WebKit coding style. | |
| 2010-03-22 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| Add support for syntax checking in the QtScript API. | |
| New class was created; the QScriptSyntaxCheckResult which main | |
| responsibility is to provide results of the ECMA Script code | |
| syntax check. The class is not fully functional as the JSC C API | |
| doesn't expose an error column number, but it is a good start point | |
| for a future development. | |
| [Qt] QtScript functionality should be extended by syntax checking. | |
| https://bugs.webkit.org/show_bug.cgi?id=36123 | |
| * qt/api/QtScript.pro: | |
| * qt/api/qscriptengine.cpp: | |
| (QScriptEngine::checkSyntax): | |
| * qt/api/qscriptengine.h: | |
| * qt/api/qscriptengine_p.cpp: | |
| (QScriptEnginePrivate::checkSyntax): | |
| * qt/api/qscriptengine_p.h: | |
| * qt/api/qscriptsyntaxcheckresult.cpp: Added. | |
| (QScriptSyntaxCheckResult::QScriptSyntaxCheckResult): | |
| (QScriptSyntaxCheckResult::~QScriptSyntaxCheckResult): | |
| (QScriptSyntaxCheckResult::operator=): | |
| (QScriptSyntaxCheckResult::state): | |
| (QScriptSyntaxCheckResult::errorLineNumber): | |
| (QScriptSyntaxCheckResult::errorColumnNumber): | |
| (QScriptSyntaxCheckResult::errorMessage): | |
| * qt/api/qscriptsyntaxcheckresult.h: Added. | |
| * qt/api/qscriptsyntaxcheckresult_p.cpp: Added. | |
| (QScriptSyntaxCheckResultPrivate::~QScriptSyntaxCheckResultPrivate): | |
| (QScriptSyntaxCheckResultPrivate::errorMessage): | |
| (QScriptSyntaxCheckResultPrivate::errorLineNumber): | |
| * qt/api/qscriptsyntaxcheckresult_p.h: Added. | |
| (QScriptSyntaxCheckResultPrivate::get): | |
| (QScriptSyntaxCheckResultPrivate::QScriptSyntaxCheckResultPrivate): | |
| (QScriptSyntaxCheckResultPrivate::state): | |
| (QScriptSyntaxCheckResultPrivate::errorColumnNumber): | |
| * qt/tests/qscriptengine/tst_qscriptengine.cpp: | |
| (tst_QScriptEngine::checkSyntax_data): | |
| (tst_QScriptEngine::checkSyntax): | |
| 2010-03-21 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| New class; QScriptProgram. | |
| The class should be used to evaluate the same script multiple times | |
| more efficiently. | |
| [Qt] QtScript should have QScriptProgram class | |
| https://bugs.webkit.org/show_bug.cgi?id=36008 | |
| * qt/api/QtScript.pro: | |
| * qt/api/qscriptengine.cpp: | |
| (QScriptEngine::evaluate): | |
| * qt/api/qscriptengine.h: | |
| * qt/api/qscriptengine_p.cpp: | |
| (QScriptEnginePrivate::evaluate): | |
| * qt/api/qscriptengine_p.h: | |
| (QScriptEnginePrivate::evaluate): | |
| * qt/api/qscriptprogram.cpp: Added. | |
| (QScriptProgram::QScriptProgram): | |
| (QScriptProgram::~QScriptProgram): | |
| (QScriptProgram::operator=): | |
| (QScriptProgram::isNull): | |
| (QScriptProgram::sourceCode): | |
| (QScriptProgram::fileName): | |
| (QScriptProgram::firstLineNumber): | |
| (QScriptProgram::operator==): | |
| (QScriptProgram::operator!=): | |
| * qt/api/qscriptprogram.h: Added. | |
| * qt/api/qscriptprogram_p.h: Added. | |
| (QScriptProgramPrivate::get): | |
| (QScriptProgramPrivate::QScriptProgramPrivate): | |
| (QScriptProgramPrivate::~QScriptProgramPrivate): | |
| (QScriptProgramPrivate::isNull): | |
| (QScriptProgramPrivate::sourceCode): | |
| (QScriptProgramPrivate::fileName): | |
| (QScriptProgramPrivate::firstLineNumber): | |
| (QScriptProgramPrivate::operator==): | |
| (QScriptProgramPrivate::operator!=): | |
| (QScriptProgramPrivate::program): | |
| (QScriptProgramPrivate::file): | |
| (QScriptProgramPrivate::line): | |
| * qt/tests/qscriptengine/tst_qscriptengine.cpp: | |
| (tst_QScriptEngine::evaluateProgram): | |
| 2010-03-21 David Kilzer <ddkilzer@apple.com> | |
| Blind attempt #2 to fix the Windows build after r56314 | |
| * API/tests/testapi.c: Include JSObjectRefPrivate.h for the new | |
| methods instead of declaring them locally (and non-extern). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| Backed out previous change. | |
| 2010-03-21 David Kilzer <ddkilzer@apple.com> | |
| Blind attempt to fix the Windows build after r56314 | |
| Try to fix the following errors on the Windows buildbot: | |
| Linking... | |
| testapi.obj : error LNK2001: unresolved external symbol "bool __cdecl JSObjectSetPrivateProperty(struct OpaqueJSContext const *,struct OpaqueJSValue *,struct OpaqueJSString *,struct OpaqueJSValue const *)" (?JSObjectSetPrivateProperty@@YA_NPBUOpaqueJSContext@@PAUOpaqueJSValue@@PAUOpaqueJSString@@PBU2@@Z) | |
| testapi.obj : error LNK2001: unresolved external symbol "struct OpaqueJSValue const * __cdecl JSObjectGetPrivateProperty(struct OpaqueJSContext const *,struct OpaqueJSValue *,struct OpaqueJSString *)" (?JSObjectGetPrivateProperty@@YAPBUOpaqueJSValue@@PBUOpaqueJSContext@@PAU1@PAUOpaqueJSString@@@Z) | |
| C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\bin\testapi.exe : fatal error LNK1120: 2 unresolved externals | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Added | |
| missing symbols to be exported. | |
| 2010-03-21 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Documentation fix for previous patch. | |
| * API/JSObjectRefPrivate.h: | |
| 2010-03-20 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| JSC needs an API to allow custom objects to have aprivate GC-accessible properties | |
| https://bugs.webkit.org/show_bug.cgi?id=36420 | |
| Add new API methods to support "private" properties on custom | |
| objects. | |
| * API/JSCallbackObject.h: | |
| (JSC::JSCallbackObjectData::JSCallbackObjectData): | |
| (JSC::JSCallbackObjectData::~JSCallbackObjectData): | |
| (JSC::JSCallbackObjectData::getPrivateProperty): | |
| (JSC::JSCallbackObjectData::setPrivateProperty): | |
| (JSC::JSCallbackObjectData::deletePrivateProperty): | |
| (JSC::JSCallbackObjectData::markChildren): | |
| (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty): | |
| (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty): | |
| (JSC::JSCallbackObjectData::JSPrivatePropertyMap::deletePrivateProperty): | |
| (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren): | |
| (JSC::JSCallbackObject::getPrivateProperty): | |
| (JSC::JSCallbackObject::setPrivateProperty): | |
| (JSC::JSCallbackObject::deletePrivateProperty): | |
| (JSC::JSCallbackObject::markChildren): | |
| * API/JSObjectRef.cpp: | |
| (JSObjectGetPrivateProperty): | |
| (JSObjectSetPrivateProperty): | |
| (JSObjectDeletePrivateProperty): | |
| * API/JSObjectRefPrivate.h: Added. | |
| * API/tests/testapi.c: | |
| (main): | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| 2010-03-20 Kevin Ollivier <kevino@theolliviers.com> | |
| [wx] Build fixes after introduction of Brew files. | |
| * wscript: | |
| 2010-03-18 Tom Callaway <tcallawa@redhat.com> | |
| Reviewed by Darin Adler. | |
| Bug 35429: Fix compile on SPARC64 | |
| https://bugs.webkit.org/show_bug.cgi?id=35429 | |
| * wtf/Platform.h: Set WTF_USE_JSVALUE64 for SPARC64 | |
| 2010-03-18 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Sam Weinig. | |
| Add API to directly expose JSON parsing | |
| https://bugs.webkit.org/show_bug.cgi?id=34887 | |
| Add API to expose JSON parsing directly, and add tests to testapi | |
| * API/JSValueRef.cpp: | |
| (JSValueMakeFromJSONString): | |
| (JSValueCreateJSONString): | |
| * API/tests/testapi.c: | |
| (main): | |
| * JavaScriptCore.exp: | |
| * runtime/JSONObject.cpp: | |
| (JSC::JSONStringify): | |
| * runtime/JSONObject.h: | |
| 2010-03-16 Sam Weinig <sam@webkit.org> | |
| Reviewed by Darin Adler and Mark Rowe. | |
| Update WebKit availability macros for release after 4.0. | |
| * API/WebKitAvailability.h: | |
| 2010-03-17 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| undefined, NaN, and Infinity should be ReadOnly | |
| https://bugs.webkit.org/show_bug.cgi?id=36263 | |
| Simply add the ReadOnly flag to these properties. | |
| * runtime/JSGlobalObject.cpp: | |
| (JSC::JSGlobalObject::reset): | |
| 2010-03-17 Darin Adler <darin@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Speed up Math.round a little by removing unneeded special case | |
| https://bugs.webkit.org/show_bug.cgi?id=36107 | |
| Test: fast/js/math.html | |
| * runtime/MathObject.cpp: | |
| (JSC::mathProtoFuncRound): This function had a special case for numbers | |
| between -0.5 and -0.0 to return -0.0. But the algorithm in the function | |
| already yields -0.0 for those cases, so the extra checking and branching | |
| is unneeded. | |
| 2010-03-17 Mike Homey <glandium@debian.org> | |
| Reviewed by Gustavo Noronha. | |
| Build fix for SPARC. Fix missing macro value. | |
| * wtf/Platform.h: | |
| 2010-03-16 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt, Darin Adler. | |
| Bug 36083 - REGRESSION (r55772-r55834): Crash in JavaScriptCore RegExp code on PowerPC | |
| The problem is a bug in our port of PCRE - that a read may take place from the first character in an | |
| empty string. For the time being, revert to using a valid pointer in the data segment rather than | |
| an invalid non-null pointer into the zero-page for the empty string's data pointer. A better fix for | |
| this will be to remove PCRE. | |
| * runtime/UStringImpl.cpp: | |
| (JSC::UStringImpl::empty): | |
| 2010-03-16 Darin Adler <darin@apple.com> | |
| Rolled out r56081 since it broke the Windows build. | |
| 2010-03-16 Zoltan Horvath <zoltan@webkit.org> | |
| Reviewed by Darin Adler. | |
| Remove extra <new> include and add guards to operator new/delete definitions | |
| https://bugs.webkit.org/show_bug.cgi?id=35967 | |
| Remove extra <new> header include from FastAlloc.cpp since it is included in | |
| FastAlloc.h. Add ENABLE(GLOBAL_FASTMALLOC_NEW) macro guard to operator | |
| new/delete/new []/delete [] definitions. | |
| * wtf/FastMalloc.cpp: | |
| 2010-03-15 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| [BREWMP] Add a function to create a BREW instance without local variable declarations. | |
| https://bugs.webkit.org/show_bug.cgi?id=34705 | |
| Add a template function to create a BREW instance in one line. | |
| * wtf/brew/ShellBrew.h: Added. | |
| (WTF::createInstance): | |
| 2010-03-15 Geoffrey Garen <ggaren@apple.com> | |
| Not reviewed. | |
| Removed a now-incorrect comment I forgot to remove in my last check-in. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::TCMalloc_PageHeap::scavenge): | |
| 2010-03-15 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Fixed a portion of: | |
| <rdar://problem/7165917> | https://bugs.webkit.org/show_bug.cgi?id=28676 | |
| Safari 4 does not release memory back to the operating system fast enough (28676) | |
| Every few seconds, release a percentage of the minimum unused page count | |
| during that time period. | |
| SunSpider reports no change, command-line or in-browser, Mac or Windows. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::TCMalloc_PageHeap::init): | |
| (WTF::TCMalloc_PageHeap::signalScavenger): | |
| (WTF::TCMalloc_PageHeap::initializeScavenger): Renamed shouldContinueScavenging | |
| to shouldScavenge, since scavenging is no longer something that we interrupt. | |
| (WTF::TCMalloc_PageHeap::scavenge): The new scavenging algorithm. Fixes | |
| a bug where the old code would release only one item from each size class | |
| per scavenge, potentially leaving large numbers of large-sized objects | |
| unreleased for a long time. | |
| (WTF::TCMalloc_PageHeap::shouldScavenge): | |
| (WTF::TCMalloc_PageHeap::New): | |
| (WTF::TCMalloc_PageHeap::AllocLarge): | |
| (WTF::TCMalloc_PageHeap::Delete): | |
| (WTF::TCMalloc_PageHeap::GrowHeap): | |
| (WTF::TCMalloc_PageHeap::scavengerThread): | |
| (WTF::TCMalloc_PageHeap::periodicScavenge): Updated to track the minimum | |
| value of free_committed_pages_ during a given scavenge period. | |
| 2010-03-15 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| https://bugs.webkit.org/show_bug.cgi?id=35843 | |
| Re-land reverted fix to JSString::getIndex() | |
| Calling getIndex() on a JSString in rope form may result in a JSException being thrown | |
| if there is insuficient memory so value(exec) returns UString() with length zero, | |
| which will be passed to jsSingleCharacterSubstring. | |
| Add a slow case function to trap the error & return a safe null value, until the | |
| exception is handled. | |
| * runtime/JSString.cpp: | |
| (JSC::JSString::getIndexSlowCase): | |
| (JSC::JSString::getStringPropertyDescriptor): | |
| * runtime/JSString.h: | |
| (JSC::jsSingleCharacterSubstring): | |
| (JSC::JSString::getIndex): | |
| (JSC::jsSingleCharacterString): | |
| (JSC::JSString::getStringPropertySlot): | |
| 2010-03-04 Kenneth Rohde Christiansen <kenneth@webkit.org> | |
| Reviewed by Adam Roben. | |
| Add a long long version of abs() for MSVC. | |
| * wtf/MathExtras.h: | |
| (abs): | |
| 2010-03-15 Gabor Loki <loki@webkit.org> | |
| Reviewed by Gavin Barraclough. | |
| Combine ctiTrampolines on ARM and Thumb-2 | |
| https://bugs.webkit.org/show_bug.cgi?id=36014 | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::JITThunks): | |
| 2010-03-12 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (build fix). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-03-12 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (build fix). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-03-11 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Bug 36075 - Clean up screwyness re static string impls & Identifiers. | |
| * API/JSClassRef.cpp: | |
| (OpaqueJSClass::~OpaqueJSClass): Classname may be null/empty, and these are an identifer. This is okay, since the null/empty strings are shared across all threads. | |
| * JavaScriptCore.exp: | |
| * runtime/Identifier.cpp: | |
| (JSC::Identifier::add): No need to explicitly hash null reps, this is done in the ststic UStringImpl constructor. | |
| (JSC::Identifier::addSlowCase): UStringImpl::empty() handled & checkCurrentIdentifierTable now called in the header. | |
| (JSC::Identifier::checkCurrentIdentifierTable): Replaces checkSameIdentifierTable (this no longer checked the rep since the identifierTable pointer was removed from UString::Rep long ago). | |
| * runtime/Identifier.h: | |
| (JSC::Identifier::add): Replace call to checkSameIdentifierTable with call to checkCurrentIdentifierTable at head of function. | |
| * runtime/UStringImpl.cpp: | |
| (JSC::UStringImpl::~UStringImpl): Remove call to checkConsistency - this function no longer checks anything interesting. | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringOrRopeImpl::UStringOrRopeImpl): Set s_refCountFlagIsIdentifier in static constructor. | |
| (JSC::UStringImpl::UStringImpl): remove calls to checkConsistency (see above), add new ASSERT to substring constructor. | |
| (JSC::UStringImpl::setHash): ASSERT not static (static strings set the hash in their constructor, should not reach this code path). | |
| (JSC::UStringImpl::create): Add missing ASSERT. | |
| (JSC::UStringImpl::setIsIdentifier): ASSERT !isStatic() (static strings hash set in constructor). | |
| 2010-03-12 Peter Varga <pvarga@inf.u-szeged.hu> | |
| Reviewed by David Levin. | |
| Two functions tryConsumeCharacter() and tryConsumeCharacterClass() are | |
| removed from yarr/RegexInterpreter.cpp because they are never called. | |
| * yarr/RegexInterpreter.cpp: | |
| 2010-03-11 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| The JSNative state was renamed to JSPrimitive. The new name better | |
| coresponds to the ECMAScript standard. | |
| Enum QScriptValuePrivate::States was renamed to State to obey Qt | |
| coding style rules ("States" name suggests that a state could | |
| mixed together with an other state using bitwise logic operators. | |
| [Qt] QScriptValuePrivate::States has naming issues | |
| https://bugs.webkit.org/show_bug.cgi?id=35968 | |
| * qt/api/qscriptvalue_p.h: | |
| (QScriptValuePrivate::): | |
| (QScriptValuePrivate::QScriptValuePrivate): | |
| (QScriptValuePrivate::isBool): | |
| (QScriptValuePrivate::isNumber): | |
| (QScriptValuePrivate::isNull): | |
| (QScriptValuePrivate::isString): | |
| (QScriptValuePrivate::isUndefined): | |
| (QScriptValuePrivate::toString): | |
| (QScriptValuePrivate::toNumber): | |
| (QScriptValuePrivate::toBool): | |
| (QScriptValuePrivate::assignEngine): | |
| (QScriptValuePrivate::refinedJSValue): | |
| 2010-03-11 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (Windows build fix). | |
| Add export. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-03-11 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (Windows build fix). | |
| Add export. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-03-11 Gavin Barraclough <barraclough@apple.com> | |
| Rubber stamped by Oliver Hunt. | |
| Remove nonsense comments used in development & commited in error. | |
| * runtime/UStringImpl.h: | |
| 2010-03-11 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (Windows build fix). | |
| Remove export. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-03-11 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=36041 | |
| Remove unnecessary differences in common code between WebCore::StringImpl & JSC::UStringImpl | |
| Much of the code in WebCore::StringImpl and JSC::UStringImpl is now very similar, | |
| but has trivial and unnecessary formatting differences, such as the exact wording | |
| of comments, missing ASSERTs, functions implemented in the .h vs .cpp etc. | |
| * runtime/Identifier.cpp: | |
| (JSC::Identifier::add): UStringImpl::empty() now automatically hashes, uas per WebCore strings. | |
| (JSC::Identifier::addSlowCase): UStringImpl::empty() now automatically hashes, uas per WebCore strings. | |
| * runtime/UStringImpl.cpp: | |
| (JSC::UStringImpl::~UStringImpl): Only call bufferOwnership() once, add missing ASSERTs. | |
| (JSC::UStringImpl::createUninitialized): Move from .h, not commonly called, no need to inline. | |
| (JSC::UStringImpl::create): Move from .h, not commonly called, no need to inline. | |
| (JSC::UStringImpl::sharedBuffer): Rewritten to more closely match WebCore implementation, remove need for separate baseSharedBuffer() method. | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringImpl::UStringImpl): Automatically hash static strings, ASSERT m_data & m_length are non-null/non-zero in non-static strings. | |
| (JSC::UStringImpl::setHash): Add missing ASSERT. | |
| (JSC::UStringImpl::create): Moved to .cpp / added missing check for empty string creation. | |
| (JSC::UStringImpl::adopt): Vector.size() returns size_t, not unsigned. | |
| (JSC::UStringImpl::cost): Renamed m_bufferSubstring -> m_substringBuffer | |
| (JSC::UStringImpl::hash): Reordered in file. | |
| (JSC::UStringImpl::existingHash): Reordered in file. | |
| (JSC::UStringImpl::computeHash): Reordered in file, renamed parameter. | |
| (JSC::UStringImpl::checkConsistency): rewrote ASSERT. | |
| (JSC::UStringImpl::bufferOwnership): Return type should be BufferOwnership. | |
| (JSC::UStringImpl::): Moved friends to head of class. | |
| 2010-03-11 Mark Rowe <mrowe@apple.com> | |
| Reviewed by David Kilzer. | |
| <rdar://problem/7745082> Make it possible to build WebKit for older Mac OS X versions from the current Mac OS X version | |
| Default to using the appropriate SDK if the target Mac OS X version is not the current Mac OS X version. | |
| * Configurations/Base.xcconfig: | |
| 2010-03-11 Mark Rowe <mrowe@apple.com> | |
| Reviewed by Tim Hatcher. | |
| <rdar://problem/7745082> Make it possible to build WebKit for older Mac OS X versions from the current Mac OS X version | |
| Introduce TARGET_MAC_OS_X_VERSION_MAJOR to represent the Mac OS X version that is being targeted. It defaults to the | |
| current Mac OS X version unless otherwise specified. | |
| Key off TARGET_MAC_OS_X_VERSION_MAJOR where we'd previously been keying off MAC_OS_X_VERSION_MAJOR. | |
| Explicitly map from the target Mac OS X version to the preferred compiler since Xcode's default compiler choice | |
| may not be usable when targetting a different Mac OS X version. | |
| Key off TARGET_GCC_VERSION rather than MAC_OS_X_VERSION_MAJOR in locations where we'd previously been keying off | |
| MAC_OS_X_VERSION_MAJOR but the decision is really related to the compiler version being used. | |
| * Configurations/Base.xcconfig: | |
| * Configurations/DebugRelease.xcconfig: | |
| * Configurations/FeatureDefines.xcconfig: | |
| * Configurations/JavaScriptCore.xcconfig: | |
| * Configurations/Version.xcconfig: | |
| 2010-03-11 Simon Fraser <simon.fraser@apple.com> | |
| Reviewed by Mark Rowe. | |
| Sort the project file. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| 2010-03-11 Simon Fraser <simon.fraser@apple.com> | |
| Reviewed by Mark Rowe. | |
| Sort the project file . | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| 2010-03-11 Gabor Loki <loki@webkit.org> | |
| Reviewed by Gavin Barraclough. | |
| Buildfix for Thumb-2 after r55684. Add branch8 and branchTest8 functions. | |
| https://bugs.webkit.org/show_bug.cgi?id=35892 | |
| * assembler/ARMv7Assembler.h: | |
| (JSC::ARMv7Assembler::): | |
| (JSC::ARMv7Assembler::ldrb): | |
| * assembler/MacroAssemblerARMv7.h: | |
| (JSC::MacroAssemblerARMv7::load8): | |
| (JSC::MacroAssemblerARMv7::branch8): | |
| (JSC::MacroAssemblerARMv7::branchTest8): | |
| (JSC::MacroAssemblerARMv7::setTest8): | |
| 2010-03-10 Gavin Barraclough <barraclough@apple.com> | |
| Rubber stamped by Oliver Hunt. | |
| Rename JSC::UStringImpl::data() to characters(), to match WebCore::StringImpl. | |
| * API/JSClassRef.cpp: | |
| (OpaqueJSClassContextData::OpaqueJSClassContextData): | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::keyForCharacterSwitch): | |
| * bytecompiler/NodesCodegen.cpp: | |
| (JSC::processClauseList): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::arrayProtoFuncToString): | |
| * runtime/Identifier.cpp: | |
| (JSC::Identifier::equal): | |
| (JSC::Identifier::addSlowCase): | |
| * runtime/JSString.cpp: | |
| (JSC::JSString::resolveRope): | |
| * runtime/UString.cpp: | |
| (JSC::UString::toStrictUInt32): | |
| (JSC::equal): | |
| * runtime/UString.h: | |
| (JSC::UString::data): | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringImpl::characters): | |
| (JSC::UStringImpl::hash): | |
| (JSC::UStringImpl::setHash): | |
| 2010-03-10 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Darin Adler, Geoffrey Garen, Maciej Stachowiak. | |
| https://bugs.webkit.org/show_bug.cgi?id=35991 | |
| Would be faster to not use a thread specific to implement StringImpl::empty() | |
| Change JSC::UStringImpl's implementation of empty() match to match StringImpl's new implementation | |
| (use a static defined within the empty() method), and change the interface to match too (return | |
| a pointer not a reference). | |
| ~0% performance impact (possible minor progression from moving empty() from .h to .cpp). | |
| * JavaScriptCore.exp: | |
| * runtime/Identifier.cpp: | |
| (JSC::Identifier::add): | |
| (JSC::Identifier::addSlowCase): | |
| * runtime/PropertyNameArray.cpp: | |
| (JSC::PropertyNameArray::add): | |
| * runtime/UString.cpp: | |
| (JSC::initializeUString): | |
| (JSC::UString::UString): | |
| * runtime/UStringImpl.cpp: | |
| (JSC::UStringImpl::empty): | |
| (JSC::UStringImpl::create): | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringImpl::adopt): | |
| (JSC::UStringImpl::createUninitialized): | |
| (JSC::UStringImpl::tryCreateUninitialized): | |
| 2010-03-10 Dmitry Titov <dimich@chromium.org> | |
| Not reviewed, fixing Snow Leopard build. | |
| * wtf/mac/MainThreadMac.mm: Forgot 'static' for a new local function. | |
| (WTF::postTimer): | |
| 2010-03-10 Dmitry Titov <dimich@chromium.org> | |
| Reviewed by Darin Adler. | |
| Make Document::postTask to use a single queue of tasks, to fire them in order | |
| https://bugs.webkit.org/show_bug.cgi?id=35943 | |
| The patch uses CFRunLoopTimer to schedule execution of tasks instead of performSelectorOnMainThread which apparently can starve other event sources. | |
| The timer is used when the schedule request is coming on the main thread itself. This happens when the task is posted on the main thread or | |
| when too many tasks are posted and the queue does 'stop and re-schedule' to make sure run loop has a chance to execute other events. | |
| * wtf/mac/MainThreadMac.mm: | |
| (WTF::timerFired): | |
| (WTF::postTimer): | |
| (WTF::scheduleDispatchFunctionsOnMainThread): Use timer posted to the current RunLoop if scheduling the task execution while on the main thread. | |
| 2010-03-10 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: added new symbol. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-03-10 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: removed old symbol. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-03-09 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Alexey Proskuryakov, Darin Adler, and Sam Weinig. | |
| Refactored fastCheckConsistency to match some review comments: | |
| - renamed fastCheckConsistency to fastMallocSize, and changed ValueCheck | |
| to ASSERT that a pointer's fastMallocSize is not 0. | |
| - implemented a version of fastMallocSize for tcmalloc. | |
| Also moved some pre-existing code around to avoid a problem related to | |
| mismatched #define/#undef of malloc/free in this source file. | |
| * JavaScriptCore.exp: | |
| * wtf/FastMalloc.cpp: | |
| (WTF::fastMallocSize): Renamed. Fixed indentation. | |
| (WTF::TCMalloc_PageHeap::scavenge): Removed an incorrect ASSERT that | |
| got in the way of testing the tcmalloc implementation. (More information | |
| on why this ASSERT is incorrect is in <rdar://problem/7165917>.) | |
| (WTF::TCMallocStats::fastMallocSize): Implemented for tcmalloc. | |
| * wtf/FastMalloc.h: Updated for rename. | |
| * wtf/ValueCheck.h: | |
| (WTF::): Moved the ASSERT that used to be in fastCheckConsistency here. | |
| 2010-03-10 Kevin Ollivier <kevino@theolliviers.com> | |
| Reviewed by Eric Seidel. | |
| Make global new/delete operators configurable for all ports and disable it | |
| for the wx port for now. | |
| * wtf/FastMalloc.h: | |
| * wtf/Platform.h: | |
| 2010-03-09 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (reverting r54510). | |
| This caused a performance regression, by breaking the code | |
| generator's logic to calculate the skip level for resolving | |
| variables (traced by rdar:7683350) Reverting for now. | |
| * parser/Grammar.y: | |
| * parser/NodeConstructors.h: | |
| (JSC::ContinueNode::ContinueNode): | |
| (JSC::BreakNode::BreakNode): | |
| (JSC::ForInNode::ForInNode): | |
| * runtime/CommonIdentifiers.cpp: | |
| (JSC::CommonIdentifiers::CommonIdentifiers): | |
| * runtime/CommonIdentifiers.h: | |
| * runtime/FunctionPrototype.cpp: | |
| (JSC::FunctionPrototype::FunctionPrototype): | |
| * runtime/Identifier.cpp: | |
| (JSC::Identifier::add): | |
| * runtime/PropertyNameArray.cpp: | |
| (JSC::PropertyNameArray::add): | |
| 2010-03-09 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Darin Adler. | |
| Changed FastMalloc statistics reporting to be a bit clearer. We now | |
| report: | |
| - Reserved VM Bytes: the VM that has been mapped into the process. | |
| - Committed VM Bytes: the subset of Reserved VM Bytes actually in use. | |
| - Free List Bytes: the subset of Committed VM Bytes in a free list. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::fastMallocStatistics): | |
| (WTF::TCMallocStats::fastMallocStatistics): Updated to report the statistics | |
| above. Standardized use of "ifdef WTF_CHANGES". Added a SpinLockHolder | |
| around all statistics gathering, since it reads from the page heap. | |
| * wtf/FastMalloc.h: Updated to report the statistics above. | |
| 2010-03-09 Gabor Loki <loki@webkit.org> | |
| Rubber-stamped by Maciej Stachowiak. | |
| Buildfix for ARM after r55684. Add branch8 and branchTest8 functions. | |
| https://bugs.webkit.org/show_bug.cgi?id=35892 | |
| * assembler/ARMAssembler.cpp: | |
| (JSC::ARMAssembler::dataTransfer32): | |
| * assembler/ARMAssembler.h: | |
| (JSC::ARMAssembler::): | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::load8): | |
| (JSC::MacroAssemblerARM::branch8): | |
| (JSC::MacroAssemblerARM::branchTest8): | |
| 2010-03-08 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: 'P' is not a type. Luckily, 'void' is. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::fastCheckConsistency): | |
| 2010-03-08 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: export a new symbol. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-03-08 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Switching malloc implementations requires a world rebuild | |
| https://bugs.webkit.org/show_bug.cgi?id=35899 | |
| * wtf/FastMalloc.cpp: | |
| (WTF::fastCheckConsistency): | |
| (WTF::TCMallocStats::fastCheckConsistency): | |
| * wtf/FastMalloc.h: | |
| * wtf/ValueCheck.h: | |
| (WTF::): Moved pointer checking into a helper function in FastMalloc.cpp, | |
| so you can switch malloc implementations without rebuilding the world. | |
| 2010-03-07 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Darin Adler. | |
| TypeInfo is unnecessarily large | |
| https://bugs.webkit.org/show_bug.cgi?id=35850 | |
| Reduce the size of the type and flags members to a single | |
| byte each, reducing the size of Structure by 8 bytes. | |
| * assembler/MacroAssemblerX86Common.h: | |
| (JSC::MacroAssemblerX86Common::branch8): | |
| (JSC::MacroAssemblerX86Common::branchTest8): | |
| (JSC::MacroAssemblerX86Common::setTest8): | |
| Add single byte branches, and correct setTest8 to do a | |
| single byte read from memory, and actually store the result | |
| * assembler/X86Assembler.h: | |
| (JSC::X86Assembler::): | |
| (JSC::X86Assembler::cmpb_im): | |
| (JSC::X86Assembler::testb_im): | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::emit_op_construct_verify): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_instanceof): | |
| (JSC::JIT::emit_op_jeq_null): | |
| (JSC::JIT::emit_op_jneq_null): | |
| (JSC::JIT::emit_op_get_pnames): | |
| (JSC::JIT::emit_op_convert_this): | |
| (JSC::JIT::emit_op_construct_verify): | |
| (JSC::JIT::emit_op_to_jsnumber): | |
| (JSC::JIT::emit_op_eq_null): | |
| (JSC::JIT::emit_op_neq_null): | |
| * runtime/JSTypeInfo.h: | |
| (JSC::TypeInfo::TypeInfo): | |
| (JSC::TypeInfo::type): | |
| 2010-03-08 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (reverting regression). | |
| Reverting 55035, this caused a regression. | |
| (https://bugs.webkit.org/show_bug.cgi?id=35843) | |
| * runtime/JSString.cpp: | |
| (JSC::JSString::resolveRope): | |
| (JSC::JSString::getStringPropertyDescriptor): | |
| * runtime/JSString.h: | |
| (JSC::jsSingleCharacterSubstring): | |
| (JSC::JSString::getIndex): | |
| (JSC::JSString::getStringPropertySlot): | |
| * runtime/UStringImpl.cpp: | |
| * runtime/UStringImpl.h: | |
| 2010-03-08 Stuart Morgan <stuartmorgan@chromium.org> | |
| Reviewed by Darin Adler. | |
| Added a new USE definition for secure text mode on the Mac. | |
| https://bugs.webkit.org/show_bug.cgi?id=31265 | |
| * wtf/Platform.h: | |
| 2010-03-08 Jian Li <jianli@chromium.org> | |
| Reviewed by Dmitry Titov. | |
| Blob.slice support. | |
| https://bugs.webkit.org/show_bug.cgi?id=32993 | |
| Add ENABLE_BLOB_SLICE feature define. | |
| Also fix a problem that JSValue.toInteger is not exposed on Windows. | |
| * Configurations/FeatureDefines.xcconfig: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-03-07 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Small performance fix in the QScriptConverter::toString(). | |
| The QByteArray was replaced by the QVarLengthArray which doesn't | |
| have to allocate any memory on heap. | |
| [Qt] QScriptConverter::toString() should use QVarLengthArray instead of QByteArray | |
| https://bugs.webkit.org/show_bug.cgi?id=35577 | |
| * qt/api/qscriptconverter_p.h: | |
| (QScriptConverter::toString): | |
| 2010-03-06 Mark Rowe <mrowe@apple.com> | |
| Rubber-stamped by Sam Weinig. | |
| Remove unnecessary includes of wtf/Platform.h. This is already pulled in by config.h. | |
| * API/APICast.h: | |
| * API/JSCallbackFunction.cpp: | |
| * API/JSContextRef.cpp: | |
| * API/JSObjectRef.cpp: | |
| * API/JSValueRef.cpp: | |
| * assembler/ARMAssembler.h: | |
| * assembler/ARMv7Assembler.h: | |
| * assembler/AbstractMacroAssembler.h: | |
| * assembler/AssemblerBuffer.h: | |
| * assembler/AssemblerBufferWithConstantPool.h: | |
| * assembler/CodeLocation.h: | |
| * assembler/LinkBuffer.h: | |
| * assembler/MIPSAssembler.h: | |
| * assembler/MacroAssembler.h: | |
| * assembler/MacroAssemblerARM.h: | |
| * assembler/MacroAssemblerARMv7.h: | |
| * assembler/MacroAssemblerCodeRef.h: | |
| * assembler/MacroAssemblerMIPS.h: | |
| * assembler/MacroAssemblerX86.h: | |
| * assembler/MacroAssemblerX86Common.h: | |
| * assembler/MacroAssemblerX86_64.h: | |
| * assembler/RepatchBuffer.h: | |
| * assembler/X86Assembler.h: | |
| * jit/JIT.h: | |
| * jit/JITCode.h: | |
| * jit/JITInlineMethods.h: | |
| * jit/JITStubs.h: | |
| * os-win32/stdint.h: | |
| * runtime/JSAPIValueWrapper.h: | |
| * runtime/JSImmediate.h: | |
| * wtf/ASCIICType.h: | |
| * wtf/StdLibExtras.h: | |
| * wtf/VMTags.h: | |
| * yarr/RegexCompiler.h: | |
| * yarr/RegexInterpreter.h: | |
| * yarr/RegexJIT.h: | |
| * yarr/RegexParser.h: | |
| * yarr/RegexPattern.h: | |
| 2010-03-06 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| [BREWMP] Share OwnPtr. | |
| https://bugs.webkit.org/show_bug.cgi?id=35776 | |
| Share OwnPtr implementation with BREW MP and remove OwnPtrBrew. | |
| * wtf/OwnPtrBrew.cpp: Added. | |
| (WTF::deleteOwnedPtr): | |
| * wtf/OwnPtrCommon.h: | |
| * wtf/brew/OwnPtrBrew.cpp: Removed. | |
| * wtf/brew/OwnPtrBrew.h: Removed. | |
| 2010-03-06 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Eric Seidel. | |
| Implemented JIT_OPTIMIZE_NATIVE_CALL for WinCE | |
| https://bugs.webkit.org/show_bug.cgi?id=33426 | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| 2010-03-05 Oliver Hunt <oliver@apple.com> | |
| Reviewed by NOBODY (build fix). | |
| Add enw exports to windows | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-03-05 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| JSC should cache int to Identifier conversion as it does for ordinary strings | |
| https://bugs.webkit.org/show_bug.cgi?id=35814 | |
| Make the NumericStrings cache cache unsigned ints in addition to signed. | |
| We keep them separate from the int cache as it both simplifies code, and | |
| also because the unsigned path is exclusive to property access and therefore | |
| seems to have different usage patterns. | |
| The primary trigger for the unsigned to Identifier propertyName conversion | |
| is the construction of array-like objects out of normal objects. Given these | |
| tend to be relative small numbers, and the array-like behaviour lends itself | |
| to sequential values this patch also adds a non-colliding cache for all small | |
| numbers. | |
| * JavaScriptCore.exp: | |
| * runtime/Identifier.cpp: | |
| (JSC::Identifier::from): | |
| * runtime/Identifier.h: | |
| * runtime/NumericStrings.h: | |
| (JSC::NumericStrings::add): | |
| (JSC::NumericStrings::lookup): | |
| (JSC::NumericStrings::lookupSmallString): | |
| 2010-03-03 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Allow static property getters to interact with JSCs caching | |
| https://bugs.webkit.org/show_bug.cgi?id=35716 | |
| Add new opcodes for handling cached lookup of static value getters. | |
| More or less the same as with JS getters, all that changes is that | |
| instead of calling through a JSFunction we always know that we have | |
| a C function to call. | |
| For the patching routines in the JIT we now need to pass a few | |
| new parameters to allow us to pass enough information to the stub | |
| function to allow us to call the C function correctly. Logically | |
| this shouldn't actually be necessary as all of these functions ignore | |
| the identifier, but removing the ident parameter would require | |
| somewhat involved changes to the way we implement getOwnPropertySlot, | |
| etc. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::dump): | |
| (JSC::CodeBlock::derefStructures): | |
| (JSC::CodeBlock::refStructures): | |
| * bytecode/Instruction.h: | |
| (JSC::Instruction::Instruction): | |
| (JSC::Instruction::): | |
| * bytecode/Opcode.h: | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::tryCacheGetByID): | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): | |
| * jit/JIT.h: | |
| (JSC::JIT::compileGetByIdProto): | |
| (JSC::JIT::compileGetByIdSelfList): | |
| (JSC::JIT::compileGetByIdProtoList): | |
| (JSC::JIT::compileGetByIdChainList): | |
| (JSC::JIT::compileGetByIdChain): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::privateCompileGetByIdProto): | |
| (JSC::JIT::privateCompileGetByIdSelfList): | |
| (JSC::JIT::privateCompileGetByIdProtoList): | |
| (JSC::JIT::privateCompileGetByIdChainList): | |
| (JSC::JIT::privateCompileGetByIdChain): | |
| * jit/JITPropertyAccess32_64.cpp: | |
| (JSC::JIT::privateCompileGetByIdProto): | |
| (JSC::JIT::privateCompileGetByIdSelfList): | |
| (JSC::JIT::privateCompileGetByIdProtoList): | |
| (JSC::JIT::privateCompileGetByIdChainList): | |
| (JSC::JIT::privateCompileGetByIdChain): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::tryCacheGetByID): | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * jit/JITStubs.h: | |
| (JSC::): | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::getOwnPropertySlot): | |
| * runtime/Lookup.h: | |
| (JSC::getStaticPropertySlot): | |
| (JSC::getStaticValueSlot): | |
| * runtime/PropertySlot.h: | |
| (JSC::PropertySlot::): | |
| (JSC::PropertySlot::PropertySlot): | |
| (JSC::PropertySlot::cachedPropertyType): | |
| (JSC::PropertySlot::isCacheable): | |
| (JSC::PropertySlot::isCacheableValue): | |
| (JSC::PropertySlot::setValueSlot): | |
| (JSC::PropertySlot::setCacheableCustom): | |
| (JSC::PropertySlot::setGetterSlot): | |
| (JSC::PropertySlot::setCacheableGetterSlot): | |
| (JSC::PropertySlot::clearOffset): | |
| (JSC::PropertySlot::customGetter): | |
| 2010-03-04 Shinichiro Hamaji <hamaji@chromium.org> | |
| Unreviewed. Remove a non-ASCII character introduced in the following bug. | |
| put_by_id does will incorrectly cache writes where a specific value exists, where at the point of caching the same value is being written. | |
| https://bugs.webkit.org/show_bug.cgi?id=35537 | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::putDirectInternal): | |
| 2010-03-04 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
| Reviewed by Tor Arne Vestbø. | |
| [Qt] Make the OUTPUT_DIR variable in qmake projects independent of build-webkit's logic. | |
| This also allows shadow builds relying only on qmake to work properly. | |
| * jsc.pro: | |
| * qt/api/QtScript.pro: | |
| * qt/tests/qscriptengine/qscriptengine.pro: | |
| * qt/tests/qscriptvalue/qscriptvalue.pro: | |
| * qt/tests/tests.pri: | |
| 2010-03-03 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| QScriptValue::isObject fix. | |
| Fix broken internal state evaluation from JSValue to JSNative / JSObject. | |
| New function was introduced which should take care about promoting | |
| JSValue state inside QScriptValuePrivate. It should be used instead of a | |
| direct JSC C API call. | |
| The bug exposed a weakness in autotest suite, as the QScriptValuePrivate | |
| is based on state machine with lazy state evaluation, there is a possibility | |
| that serial sequencial calls to the same public const function could return | |
| different results. The patch fix the issue. | |
| [Qt] Sometimes QScriptValue::isObject returns an incorrect value | |
| https://bugs.webkit.org/show_bug.cgi?id=35387 | |
| * qt/api/qscriptvalue_p.h: | |
| (QScriptValuePrivate::isBool): | |
| (QScriptValuePrivate::isNumber): | |
| (QScriptValuePrivate::isNull): | |
| (QScriptValuePrivate::isString): | |
| (QScriptValuePrivate::isUndefined): | |
| (QScriptValuePrivate::isError): | |
| (QScriptValuePrivate::isObject): | |
| (QScriptValuePrivate::isFunction): | |
| (QScriptValuePrivate::call): | |
| (QScriptValuePrivate::refineJSValue): | |
| * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: | |
| (tst_QScriptValue::initScriptValues): | |
| (tst_QScriptValue::isValid_makeData): | |
| (tst_QScriptValue::isValid_test): | |
| (tst_QScriptValue::isBool_makeData): | |
| (tst_QScriptValue::isBool_test): | |
| (tst_QScriptValue::isBoolean_makeData): | |
| (tst_QScriptValue::isBoolean_test): | |
| (tst_QScriptValue::isNumber_makeData): | |
| (tst_QScriptValue::isNumber_test): | |
| (tst_QScriptValue::isFunction_test): | |
| (tst_QScriptValue::isNull_makeData): | |
| (tst_QScriptValue::isNull_test): | |
| (tst_QScriptValue::isString_makeData): | |
| (tst_QScriptValue::isString_test): | |
| (tst_QScriptValue::isUndefined_makeData): | |
| (tst_QScriptValue::isUndefined_test): | |
| (tst_QScriptValue::isObject_makeData): | |
| (tst_QScriptValue::isObject_test): | |
| (tst_QScriptValue::toString_makeData): | |
| (tst_QScriptValue::toString_test): | |
| (tst_QScriptValue::toNumber_makeData): | |
| (tst_QScriptValue::toNumber_test): | |
| (tst_QScriptValue::toBool_makeData): | |
| (tst_QScriptValue::toBool_test): | |
| (tst_QScriptValue::toBoolean_makeData): | |
| (tst_QScriptValue::toBoolean_test): | |
| (tst_QScriptValue::toInteger_makeData): | |
| (tst_QScriptValue::toInteger_test): | |
| (tst_QScriptValue::toInt32_makeData): | |
| (tst_QScriptValue::toInt32_test): | |
| (tst_QScriptValue::toUInt32_makeData): | |
| (tst_QScriptValue::toUInt32_test): | |
| (tst_QScriptValue::toUInt16_makeData): | |
| (tst_QScriptValue::toUInt16_test): | |
| 2010-03-03 Chao-ying Fu <fu@mips.com> | |
| Reviewed by Gavin Barraclough. | |
| MIPS JIT Supports | |
| https://bugs.webkit.org/show_bug.cgi?id=30144 | |
| The following changes enable MIPS YARR and YARR_JIT. | |
| * assembler/AbstractMacroAssembler.h: | |
| (JSC::AbstractMacroAssembler::Imm32::Imm32): | |
| * assembler/MIPSAssembler.h: Added. | |
| (JSC::MIPSRegisters::): | |
| (JSC::MIPSAssembler::MIPSAssembler): | |
| (JSC::MIPSAssembler::): | |
| (JSC::MIPSAssembler::JmpSrc::JmpSrc): | |
| (JSC::MIPSAssembler::JmpDst::JmpDst): | |
| (JSC::MIPSAssembler::JmpDst::isUsed): | |
| (JSC::MIPSAssembler::JmpDst::used): | |
| (JSC::MIPSAssembler::emitInst): | |
| (JSC::MIPSAssembler::nop): | |
| (JSC::MIPSAssembler::loadDelayNop): | |
| (JSC::MIPSAssembler::copDelayNop): | |
| (JSC::MIPSAssembler::move): | |
| (JSC::MIPSAssembler::li): | |
| (JSC::MIPSAssembler::lui): | |
| (JSC::MIPSAssembler::addiu): | |
| (JSC::MIPSAssembler::addu): | |
| (JSC::MIPSAssembler::subu): | |
| (JSC::MIPSAssembler::mult): | |
| (JSC::MIPSAssembler::mfhi): | |
| (JSC::MIPSAssembler::mflo): | |
| (JSC::MIPSAssembler::mul): | |
| (JSC::MIPSAssembler::andInsn): | |
| (JSC::MIPSAssembler::andi): | |
| (JSC::MIPSAssembler::nor): | |
| (JSC::MIPSAssembler::orInsn): | |
| (JSC::MIPSAssembler::ori): | |
| (JSC::MIPSAssembler::xorInsn): | |
| (JSC::MIPSAssembler::xori): | |
| (JSC::MIPSAssembler::slt): | |
| (JSC::MIPSAssembler::sltu): | |
| (JSC::MIPSAssembler::sltiu): | |
| (JSC::MIPSAssembler::sll): | |
| (JSC::MIPSAssembler::sllv): | |
| (JSC::MIPSAssembler::sra): | |
| (JSC::MIPSAssembler::srav): | |
| (JSC::MIPSAssembler::lw): | |
| (JSC::MIPSAssembler::lwl): | |
| (JSC::MIPSAssembler::lwr): | |
| (JSC::MIPSAssembler::lhu): | |
| (JSC::MIPSAssembler::sw): | |
| (JSC::MIPSAssembler::jr): | |
| (JSC::MIPSAssembler::jalr): | |
| (JSC::MIPSAssembler::jal): | |
| (JSC::MIPSAssembler::bkpt): | |
| (JSC::MIPSAssembler::bgez): | |
| (JSC::MIPSAssembler::bltz): | |
| (JSC::MIPSAssembler::beq): | |
| (JSC::MIPSAssembler::bne): | |
| (JSC::MIPSAssembler::bc1t): | |
| (JSC::MIPSAssembler::bc1f): | |
| (JSC::MIPSAssembler::newJmpSrc): | |
| (JSC::MIPSAssembler::appendJump): | |
| (JSC::MIPSAssembler::addd): | |
| (JSC::MIPSAssembler::subd): | |
| (JSC::MIPSAssembler::muld): | |
| (JSC::MIPSAssembler::lwc1): | |
| (JSC::MIPSAssembler::ldc1): | |
| (JSC::MIPSAssembler::swc1): | |
| (JSC::MIPSAssembler::sdc1): | |
| (JSC::MIPSAssembler::mtc1): | |
| (JSC::MIPSAssembler::mfc1): | |
| (JSC::MIPSAssembler::truncwd): | |
| (JSC::MIPSAssembler::cvtdw): | |
| (JSC::MIPSAssembler::ceqd): | |
| (JSC::MIPSAssembler::cngtd): | |
| (JSC::MIPSAssembler::cnged): | |
| (JSC::MIPSAssembler::cltd): | |
| (JSC::MIPSAssembler::cled): | |
| (JSC::MIPSAssembler::cueqd): | |
| (JSC::MIPSAssembler::coled): | |
| (JSC::MIPSAssembler::coltd): | |
| (JSC::MIPSAssembler::culed): | |
| (JSC::MIPSAssembler::cultd): | |
| (JSC::MIPSAssembler::label): | |
| (JSC::MIPSAssembler::align): | |
| (JSC::MIPSAssembler::getRelocatedAddress): | |
| (JSC::MIPSAssembler::getDifferenceBetweenLabels): | |
| (JSC::MIPSAssembler::size): | |
| (JSC::MIPSAssembler::executableCopy): | |
| (JSC::MIPSAssembler::getCallReturnOffset): | |
| (JSC::MIPSAssembler::linkJump): | |
| (JSC::MIPSAssembler::linkCall): | |
| (JSC::MIPSAssembler::linkPointer): | |
| (JSC::MIPSAssembler::relinkJump): | |
| (JSC::MIPSAssembler::relinkCall): | |
| (JSC::MIPSAssembler::repatchInt32): | |
| (JSC::MIPSAssembler::repatchPointer): | |
| (JSC::MIPSAssembler::repatchLoadPtrToLEA): | |
| (JSC::MIPSAssembler::relocateJumps): | |
| (JSC::MIPSAssembler::linkWithOffset): | |
| (JSC::MIPSAssembler::linkCallInternal): | |
| * assembler/MacroAssembler.h: | |
| * assembler/MacroAssemblerMIPS.h: Added. | |
| (JSC::MacroAssemblerMIPS::MacroAssemblerMIPS): | |
| (JSC::MacroAssemblerMIPS::): | |
| (JSC::MacroAssemblerMIPS::add32): | |
| (JSC::MacroAssemblerMIPS::and32): | |
| (JSC::MacroAssemblerMIPS::lshift32): | |
| (JSC::MacroAssemblerMIPS::mul32): | |
| (JSC::MacroAssemblerMIPS::not32): | |
| (JSC::MacroAssemblerMIPS::or32): | |
| (JSC::MacroAssemblerMIPS::rshift32): | |
| (JSC::MacroAssemblerMIPS::sub32): | |
| (JSC::MacroAssemblerMIPS::xor32): | |
| (JSC::MacroAssemblerMIPS::load32): | |
| (JSC::MacroAssemblerMIPS::load32WithUnalignedHalfWords): | |
| (JSC::MacroAssemblerMIPS::load32WithAddressOffsetPatch): | |
| (JSC::MacroAssemblerMIPS::loadPtrWithPatchToLEA): | |
| (JSC::MacroAssemblerMIPS::loadPtrWithAddressOffsetPatch): | |
| (JSC::MacroAssemblerMIPS::load16): | |
| (JSC::MacroAssemblerMIPS::store32WithAddressOffsetPatch): | |
| (JSC::MacroAssemblerMIPS::store32): | |
| (JSC::MacroAssemblerMIPS::supportsFloatingPoint): | |
| (JSC::MacroAssemblerMIPS::supportsFloatingPointTruncate): | |
| (JSC::MacroAssemblerMIPS::pop): | |
| (JSC::MacroAssemblerMIPS::push): | |
| (JSC::MacroAssemblerMIPS::move): | |
| (JSC::MacroAssemblerMIPS::swap): | |
| (JSC::MacroAssemblerMIPS::signExtend32ToPtr): | |
| (JSC::MacroAssemblerMIPS::zeroExtend32ToPtr): | |
| (JSC::MacroAssemblerMIPS::branch32): | |
| (JSC::MacroAssemblerMIPS::branch32WithUnalignedHalfWords): | |
| (JSC::MacroAssemblerMIPS::branch16): | |
| (JSC::MacroAssemblerMIPS::branchTest32): | |
| (JSC::MacroAssemblerMIPS::jump): | |
| (JSC::MacroAssemblerMIPS::branchAdd32): | |
| (JSC::MacroAssemblerMIPS::branchMul32): | |
| (JSC::MacroAssemblerMIPS::branchSub32): | |
| (JSC::MacroAssemblerMIPS::breakpoint): | |
| (JSC::MacroAssemblerMIPS::nearCall): | |
| (JSC::MacroAssemblerMIPS::call): | |
| (JSC::MacroAssemblerMIPS::ret): | |
| (JSC::MacroAssemblerMIPS::set32): | |
| (JSC::MacroAssemblerMIPS::setTest32): | |
| (JSC::MacroAssemblerMIPS::moveWithPatch): | |
| (JSC::MacroAssemblerMIPS::branchPtrWithPatch): | |
| (JSC::MacroAssemblerMIPS::storePtrWithPatch): | |
| (JSC::MacroAssemblerMIPS::tailRecursiveCall): | |
| (JSC::MacroAssemblerMIPS::makeTailRecursiveCall): | |
| (JSC::MacroAssemblerMIPS::loadDouble): | |
| (JSC::MacroAssemblerMIPS::storeDouble): | |
| (JSC::MacroAssemblerMIPS::addDouble): | |
| (JSC::MacroAssemblerMIPS::subDouble): | |
| (JSC::MacroAssemblerMIPS::mulDouble): | |
| (JSC::MacroAssemblerMIPS::convertInt32ToDouble): | |
| (JSC::MacroAssemblerMIPS::insertRelaxationWords): | |
| (JSC::MacroAssemblerMIPS::branchTrue): | |
| (JSC::MacroAssemblerMIPS::branchFalse): | |
| (JSC::MacroAssemblerMIPS::branchEqual): | |
| (JSC::MacroAssemblerMIPS::branchNotEqual): | |
| (JSC::MacroAssemblerMIPS::branchDouble): | |
| (JSC::MacroAssemblerMIPS::branchTruncateDoubleToInt32): | |
| (JSC::MacroAssemblerMIPS::linkCall): | |
| (JSC::MacroAssemblerMIPS::repatchCall): | |
| * jit/ExecutableAllocator.h: | |
| (JSC::ExecutableAllocator::cacheFlush): | |
| * wtf/Platform.h: | |
| * yarr/RegexJIT.cpp: | |
| (JSC::Yarr::RegexGenerator::generateEnter): | |
| (JSC::Yarr::RegexGenerator::generateReturn): | |
| 2010-03-03 Steve Falkenburg <sfalken@apple.com> | |
| Windows build fix. | |
| * JavaScriptCore.vcproj/jsc/jsc.vcproj: | |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: | |
| 2010-03-03 Steve Falkenburg <sfalken@apple.com> | |
| Windows build fix. | |
| * JavaScriptCore.vcproj/jsc/jsc.vcproj: | |
| 2010-03-03 Mark Rowe <mrowe@apple.com> | |
| Reviewed by Geoff Garen. | |
| Add virtual memory tags for TCMalloc and WebCore's purgeable buffers. | |
| * wtf/TCSystemAlloc.cpp: | |
| (TryMmap): Use the VM tag. | |
| * wtf/VMTags.h: Make use of VM_MEMORY_TCMALLOC and VM_MEMORY_WEBCORE_PURGEABLE_BUFFERS. | |
| 2010-03-03 Steve Falkenburg <sfalken@apple.com> | |
| Rubber stamped by Adam Roben. | |
| Fix bogus xcopy that was polluting source tree at build time. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
| 2010-03-02 Fridrich Strba <fridrich.strba@bluewin.ch> | |
| Reviewed by Oliver Hunt. | |
| Allow building smoothly on win32 and win64 using GCC | |
| https://bugs.webkit.org/show_bug.cgi?id=35607 | |
| * jit/JITStubs.h: | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::allocateBlock): | |
| (JSC::Heap::freeBlockPtr): | |
| (JSC::currentThreadStackBase): | |
| 2010-03-02 Jeremy Orlow <jorlow@chromium.org> | |
| Reviewed by David Levin. | |
| Revert database thread changes that are no longer required | |
| https://bugs.webkit.org/show_bug.cgi?id=35519 | |
| Jochen Eisinger created 55214 and 55247 to track which database | |
| owns which thread. Dmitry suggested that this could also | |
| be done via TLS, though. After exploring the options, Jochen | |
| chose to go the TLS route, so these patches are no longer needed. | |
| * wtf/Threading.h: | |
| * wtf/ThreadingNone.cpp: | |
| (WTF::isMainThread): | |
| * wtf/ThreadingPthreads.cpp: | |
| (WTF::identifierByPthreadHandle): | |
| (WTF::establishIdentifierForPthreadHandle): | |
| (WTF::pthreadHandleForIdentifier): | |
| (WTF::createThreadInternal): | |
| (WTF::currentThread): | |
| * wtf/ThreadingWin.cpp: | |
| (WTF::threadMap): | |
| (WTF::storeThreadHandleByIdentifier): | |
| (WTF::threadHandleForIdentifier): | |
| (WTF::createThreadInternal): | |
| 2010-03-02 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Fix QScriptValue::toString(). | |
| More ECMA Script compliance, especially for values as NaN, Inifinite | |
| and really big/small numbers. | |
| [Qt] QScriptValue::toString() returns incorrect values | |
| https://bugs.webkit.org/show_bug.cgi?id=34850 | |
| * qt/api/qscriptconverter_p.h: | |
| (QScriptConverter::toString): | |
| * qt/api/qscriptvalue_p.h: | |
| (QScriptValuePrivate::toString): | |
| * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: | |
| * qt/tests/qscriptvalue/tst_qscriptvalue.h: | |
| * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: | |
| (tst_QScriptValue::toString_initData): | |
| (tst_QScriptValue::toString_makeData): | |
| (tst_QScriptValue::toString_test): | |
| 2010-03-02 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Introduce a new class; QScriptString. | |
| The QScriptString class should act as a handle to "interned" | |
| strings in a QScriptEngine. | |
| [Qt] QtScript should provide QScriptString | |
| https://bugs.webkit.org/show_bug.cgi?id=34843 | |
| * qt/api/QtScript.pro: | |
| * qt/api/qscriptengine.cpp: | |
| (QScriptEngine::toStringHandle): | |
| * qt/api/qscriptengine.h: | |
| * qt/api/qscriptengine_p.h: | |
| (QScriptEnginePrivate::toStringHandle): | |
| * qt/api/qscriptstring.cpp: Added. | |
| (QScriptString::QScriptString): | |
| (QScriptString::~QScriptString): | |
| (QScriptString::operator=): | |
| (QScriptString::isValid): | |
| (QScriptString::operator==): | |
| (QScriptString::operator!=): | |
| (QScriptString::toArrayIndex): | |
| (QScriptString::toString): | |
| (QScriptString::operator QString): | |
| (qHash): | |
| * qt/api/qscriptstring.h: Added. | |
| * qt/api/qscriptstring_p.h: Added. | |
| (QScriptStringPrivate::QScriptStringPrivate): | |
| (QScriptStringPrivate::~QScriptStringPrivate): | |
| (QScriptStringPrivate::get): | |
| (QScriptStringPrivate::isValid): | |
| (QScriptStringPrivate::operator==): | |
| (QScriptStringPrivate::operator!=): | |
| (QScriptStringPrivate::toArrayIndex): | |
| (QScriptStringPrivate::toString): | |
| (QScriptStringPrivate::id): | |
| * qt/tests/qscriptstring/qscriptstring.pro: Added. | |
| * qt/tests/qscriptstring/tst_qscriptstring.cpp: Added. | |
| (tst_QScriptString::tst_QScriptString): | |
| (tst_QScriptString::~tst_QScriptString): | |
| (tst_QScriptString::test): | |
| (tst_QScriptString::hash): | |
| (tst_QScriptString::toArrayIndex_data): | |
| (tst_QScriptString::toArrayIndex): | |
| * qt/tests/tests.pro: | |
| 2010-03-02 Oliver Hunt <oliver@apple.com> | |
| Reviewed by NOBODY (Build fix). | |
| Export function on windows. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-03-01 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Refactor named getter function signature to be in line with indexing getter signature | |
| https://bugs.webkit.org/show_bug.cgi?id=35563 | |
| This removes the PropertySlot argument from getter functions, and makes them directly | |
| pass the slot base. This makes the semantics for the functions match that of the | |
| indexing getters. | |
| On the down side, this means that we can no longer simply use a proxy function for | |
| JS getters, so we now add another marker value to indicate that a getter is present | |
| and branch accordingly. | |
| Against all rationality sunspider reports this as a perf win, but i suspect it's just noise. | |
| * API/JSCallbackObject.h: | |
| * API/JSCallbackObjectFunctions.h: | |
| (JSC::::staticValueGetter): | |
| (JSC::::staticFunctionGetter): | |
| (JSC::::callbackGetter): | |
| * JavaScriptCore.exp: | |
| * runtime/JSActivation.cpp: | |
| (JSC::JSActivation::argumentsGetter): | |
| * runtime/JSActivation.h: | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::argumentsGetter): | |
| (JSC::JSFunction::callerGetter): | |
| (JSC::JSFunction::lengthGetter): | |
| * runtime/JSFunction.h: | |
| * runtime/NumberConstructor.cpp: | |
| (JSC::numberConstructorNaNValue): | |
| (JSC::numberConstructorNegInfinity): | |
| (JSC::numberConstructorPosInfinity): | |
| (JSC::numberConstructorMaxValue): | |
| (JSC::numberConstructorMinValue): | |
| * runtime/PropertySlot.cpp: | |
| (JSC::PropertySlot::functionGetter): | |
| * runtime/PropertySlot.h: | |
| (JSC::PropertySlot::getValue): | |
| (JSC::PropertySlot::setGetterSlot): | |
| (JSC::PropertySlot::setCacheableGetterSlot): | |
| * runtime/RegExpConstructor.cpp: | |
| (JSC::regExpConstructorDollar1): | |
| (JSC::regExpConstructorDollar2): | |
| (JSC::regExpConstructorDollar3): | |
| (JSC::regExpConstructorDollar4): | |
| (JSC::regExpConstructorDollar5): | |
| (JSC::regExpConstructorDollar6): | |
| (JSC::regExpConstructorDollar7): | |
| (JSC::regExpConstructorDollar8): | |
| (JSC::regExpConstructorDollar9): | |
| (JSC::regExpConstructorInput): | |
| (JSC::regExpConstructorMultiline): | |
| (JSC::regExpConstructorLastMatch): | |
| (JSC::regExpConstructorLastParen): | |
| (JSC::regExpConstructorLeftContext): | |
| (JSC::regExpConstructorRightContext): | |
| * runtime/RegExpObject.cpp: | |
| (JSC::regExpObjectGlobal): | |
| (JSC::regExpObjectIgnoreCase): | |
| (JSC::regExpObjectMultiline): | |
| (JSC::regExpObjectSource): | |
| (JSC::regExpObjectLastIndex): | |
| 2010-03-01 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| PropertySlot::getValue(ExecState, unsigned) unnecessarily converts index to an Identifier | |
| https://bugs.webkit.org/show_bug.cgi?id=35561 | |
| Fix this by defining a separate property getter function for index getters. This allows | |
| us to pass an unsigned number without the conversion to an Identifier. We then update | |
| setCustomIndex to take this new getter type. | |
| * runtime/PropertySlot.h: | |
| (JSC::PropertySlot::getValue): | |
| (JSC::PropertySlot::setCustom): | |
| (JSC::PropertySlot::setCustomIndex): | |
| 2010-03-01 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Bug 35537 - put_by_id does will incorrectly cache writes where a specific value exists, | |
| where at the point of caching the same value is being written. | |
| When performing a put_by_id that is replacing a property already present on the object, | |
| there are three interesting cases regarding the state of the specific value: | |
| (1) No specific value set - nothing to do, leave the structure in it's current state, | |
| can cache. | |
| (2) A specific value was set, the new put is not of a specified value (i.e. function), | |
| or is of a different specific value - in these cases we need to perform a despecifying | |
| transition to clear the specific value in the structure, but having done so this is a | |
| normal property so as such we can again cache normally. | |
| (3) A specific value was set, and we are overwriting with the same value - in these cases | |
| leave the structure unchanged, but since a specific value is set we cannot cache this | |
| put (we would need the JIT to dynamically check the value being written matched). | |
| Unfortunately, the current behaviour does not match this. the checks for a specific value | |
| being present & the value matching are combined in such a way that in case (2), above we | |
| will unnecessarily prevent the transition being cached, but in case (3) we will incorrectly | |
| fail to prevent caching. | |
| The bug exposes itself if multiple puts of the same specific value are performed to a | |
| property, and erroneously the put is allowed to be cached by the JIT. Method checks may be | |
| generated caching calls of this structure. Subsequent puts performed from JIT code may | |
| write different values without triggering a despecify transition, and as such cached method | |
| checks will continue to pass, despite the value having changed. | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::putDirectInternal): | |
| 2010-03-01 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Fix the Qt build on Mac OS X/Cocoa 64-bit | |
| * JavaScriptCore.pri: Add missing implementation file to resolve JSC symbols | |
| 2010-02-26 Gavin Barraclough <barraclough@apple.com> | |
| Rubber Stamped by Geoff Garen. | |
| Remove wrec. All builds should have switched to yarr by now. | |
| * Android.mk: | |
| * GNUmakefile.am: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.pri: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/RegExp.cpp: | |
| (JSC::RegExp::match): | |
| * runtime/RegExp.h: | |
| * wrec: Removed. | |
| * wrec/CharacterClass.cpp: Removed. | |
| * wrec/CharacterClass.h: Removed. | |
| * wrec/CharacterClassConstructor.cpp: Removed. | |
| * wrec/CharacterClassConstructor.h: Removed. | |
| * wrec/Escapes.h: Removed. | |
| * wrec/Quantifier.h: Removed. | |
| * wrec/WREC.cpp: Removed. | |
| * wrec/WREC.h: Removed. | |
| * wrec/WRECFunctors.cpp: Removed. | |
| * wrec/WRECFunctors.h: Removed. | |
| * wrec/WRECGenerator.cpp: Removed. | |
| * wrec/WRECGenerator.h: Removed. | |
| * wrec/WRECParser.cpp: Removed. | |
| * wrec/WRECParser.h: Removed. | |
| * wscript: | |
| 2010-02-26 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoff Garen. | |
| Make the lookup table generator include an explicit cast to expected | |
| type of the function. We do this because otherwise the blind intptr_t | |
| cast that is subsequently applied allows incorrectly typed functions | |
| to be inserted into the table, where they will only fail at runtime. | |
| This change makes such errors produce a compile time failure. | |
| * create_hash_table: | |
| 2010-02-26 Janne Koskinen <janne.p.koskinen@digia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Symbian specific getCPUTime implemetation | |
| https://bugs.webkit.org/show_bug.cgi?id=34742 | |
| Default implementation doesn't work on Symbian devices. | |
| This change adds a proper implementation by | |
| asking thread execution time from the current thread. | |
| * runtime/TimeoutChecker.cpp: | |
| (JSC::getCPUTime): | |
| 2010-02-25 Alexey Proskuryakov <ap@apple.com> | |
| Reviewed by Anders Carlsson. | |
| https://bugs.webkit.org/show_bug.cgi?id=35406 | |
| <rdar://problem/6945502> Make generic array methods work with JavaArray | |
| Renamed lazyCreationData to subclassData. This is extra data that can be used by JSArray | |
| subclasses (you can't add new data members, because it wouldn't fit in JSCell otherwise). | |
| * JavaScriptCore.exp: | |
| * runtime/JSArray.cpp: | |
| (JSC::JSArray::JSArray): | |
| (JSC::JSArray::subclassData): | |
| (JSC::JSArray::setSubclassData): | |
| * runtime/JSArray.h: | |
| * runtime/RegExpConstructor.cpp: | |
| (JSC::RegExpMatchesArray::RegExpMatchesArray): | |
| (JSC::RegExpMatchesArray::~RegExpMatchesArray): | |
| (JSC::RegExpMatchesArray::fillArrayInstance): | |
| * runtime/RegExpMatchesArray.h: | |
| (JSC::RegExpMatchesArray::getOwnPropertySlot): | |
| (JSC::RegExpMatchesArray::getOwnPropertyDescriptor): | |
| (JSC::RegExpMatchesArray::put): | |
| (JSC::RegExpMatchesArray::deleteProperty): | |
| (JSC::RegExpMatchesArray::getOwnPropertyNames): | |
| 2010-02-25 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoff Garen. | |
| JSC crashes like crazy in the JSPropertyNameIterator destructor | |
| Add back null check of m_cachedStructure. Curse last minute changes. | |
| * runtime/JSPropertyNameIterator.cpp: | |
| (JSC::JSPropertyNameIterator::~JSPropertyNameIterator): | |
| 2010-02-25 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Race condition in JSPropertyNameIterator and Structure destruction | |
| https://bugs.webkit.org/show_bug.cgi?id=35398 | |
| JSPropertyNameIterator and Structure have a cyclic dependency that they | |
| manage by clearing the appropriate reference in each other during their | |
| destruction. However if the Structure is destroyed while the | |
| JSPropertyNameIterator is dead but not yet finalized the Structures | |
| WeakGCPtr will return null, and so prevent Structure from clearing | |
| the m_cachedStructure pointer of the iterator. When the iterator is | |
| then finalised the m_cachedStructure is invalid, and the attempt to | |
| clear the structures back reference fails. | |
| To fix this we simply make JSPropertyNameIterator keep the Structure | |
| alive, using the weak pointer to break the ref cycle. | |
| * runtime/JSPropertyNameIterator.cpp: | |
| (JSC::JSPropertyNameIterator::~JSPropertyNameIterator): | |
| The iterator now keeps m_cachedStructure alive itself, so no longer needs | |
| to check for it being cleared | |
| * runtime/JSPropertyNameIterator.h: | |
| (JSC::JSPropertyNameIterator::setCachedStructure): | |
| Add an assertion to ensure correct usage | |
| (JSC::JSPropertyNameIterator::cachedStructure): | |
| Add .get() | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::~Structure): | |
| Add an assertion that our iterator isn't already dead, and remove | |
| the now unnecessary attempt to clear the ref in the iterator | |
| * runtime/WeakGCPtr.h: | |
| (JSC::WeakGCPtr::hasDeadObject): | |
| An assert-only function to allow us to assert correct behaviour | |
| in the Structure destructor | |
| 2010-02-25 Jochen Eisinger <jochen@chromium.org> | |
| Reviewed by Jeremy Orlow. | |
| Make the context that was passed to the ThreadFunction accessible. | |
| https://bugs.webkit.org/show_bug.cgi?id=35379 | |
| When a database is opened, right now you | |
| don't have any context from where it is opened. The problem is that | |
| the actual calls that open a database go through the sqlite3 vfs | |
| layer, so there's no easy way to pass this function down to to | |
| platform/sql/chromium/SQLFileSystemChromium*.cpp | |
| This patch will allow you to get from anywhere within webkit a pointer | |
| to the Thread object that actually created the thread you're currently | |
| on (in case of the database, this can be either a thread forked of | |
| from the main thread or from a worker thread), and query the object | |
| for context information. | |
| * wtf/Threading.h: | |
| * wtf/ThreadingNone.cpp: | |
| (WTF::threadContext): | |
| * wtf/ThreadingPthreads.cpp: | |
| (WTF::): | |
| (WTF::identifierByPthreadHandle): | |
| (WTF::establishIdentifierForPthreadHandle): | |
| (WTF::pthreadHandleForIdentifier): | |
| (WTF::contextForIdentifier): | |
| (WTF::createThreadInternal): | |
| (WTF::currentThread): | |
| (WTF::threadContext): | |
| * wtf/ThreadingWin.cpp: | |
| (WTF::): | |
| (WTF::threadMap): | |
| (WTF::storeThreadHandleByIdentifier): | |
| (WTF::threadHandleForIdentifier): | |
| (WTF::contextForIdentifier): | |
| (WTF::createThreadInternal): | |
| (WTF::threadContext): | |
| 2010-02-25 Jeremy Orlow <jorlow@chromium.org> | |
| Reverting to re-submit with better change log. | |
| * wtf/Threading.h: | |
| * wtf/ThreadingNone.cpp: | |
| (WTF::isMainThread): | |
| * wtf/ThreadingPthreads.cpp: | |
| (WTF::identifierByPthreadHandle): | |
| (WTF::establishIdentifierForPthreadHandle): | |
| (WTF::pthreadHandleForIdentifier): | |
| (WTF::createThreadInternal): | |
| (WTF::currentThread): | |
| * wtf/ThreadingWin.cpp: | |
| (WTF::threadMap): | |
| (WTF::storeThreadHandleByIdentifier): | |
| (WTF::threadHandleForIdentifier): | |
| (WTF::createThreadInternal): | |
| 2010-02-25 Jochen Eisinger <jochen@chromium.org> | |
| Reviewed by Jeremy Orlow. | |
| Make the context that was passed to the ThreadFunction accessible. | |
| https://bugs.webkit.org/show_bug.cgi?id=35379 | |
| * wtf/Threading.h: | |
| * wtf/ThreadingNone.cpp: | |
| (WTF::threadContext): | |
| * wtf/ThreadingPthreads.cpp: | |
| (WTF::): | |
| (WTF::identifierByPthreadHandle): | |
| (WTF::establishIdentifierForPthreadHandle): | |
| (WTF::pthreadHandleForIdentifier): | |
| (WTF::contextForIdentifier): | |
| (WTF::createThreadInternal): | |
| (WTF::currentThread): | |
| (WTF::threadContext): | |
| * wtf/ThreadingWin.cpp: | |
| (WTF::): | |
| (WTF::threadMap): | |
| (WTF::storeThreadHandleByIdentifier): | |
| (WTF::threadHandleForIdentifier): | |
| (WTF::contextForIdentifier): | |
| (WTF::createThreadInternal): | |
| (WTF::threadContext): | |
| 2010-02-24 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoffrey Garen. | |
| [REGRESSION in r55185] EXC_BAD_ACCESS on opening inspector. | |
| https://bugs.webkit.org/show_bug.cgi?id=35335 | |
| compileGetDirectOffset modifies the contents of the object register | |
| when the object is not using the inline storage array. As the object | |
| register contains our 'this' pointer we can't allow it to be clobbered. | |
| The fix is simply to copy the register into a separate scratch register | |
| when we're loading off an object that doesn't use inline storage. | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::privateCompileGetByIdSelfList): | |
| * jit/JITPropertyAccess32_64.cpp: | |
| (JSC::JIT::privateCompileGetByIdSelfList): | |
| 2010-02-24 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Speed up getter performance in the jit | |
| https://bugs.webkit.org/show_bug.cgi?id=35332 | |
| Implement getter lookup caching in the interpreter. | |
| The getter stubs are generated through basically the | |
| same code paths as the normal get_by_id caching. | |
| Instead of simply loading a property and returning, | |
| we load the getter slot, and pass the getter, base value | |
| and return address to a shared stub used for getter | |
| dispatch. | |
| * jit/JIT.h: | |
| (JSC::JIT::compileGetByIdProto): | |
| (JSC::JIT::compileGetByIdSelfList): | |
| (JSC::JIT::compileGetByIdProtoList): | |
| (JSC::JIT::compileGetByIdChainList): | |
| (JSC::JIT::compileGetByIdChain): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::privateCompileGetByIdProto): | |
| (JSC::JIT::privateCompileGetByIdSelfList): | |
| (JSC::JIT::privateCompileGetByIdProtoList): | |
| (JSC::JIT::privateCompileGetByIdChainList): | |
| (JSC::JIT::privateCompileGetByIdChain): | |
| * jit/JITPropertyAccess32_64.cpp: | |
| (JSC::JIT::privateCompileGetByIdProto): | |
| (JSC::JIT::privateCompileGetByIdSelfList): | |
| (JSC::JIT::privateCompileGetByIdProtoList): | |
| (JSC::JIT::privateCompileGetByIdChainList): | |
| (JSC::JIT::privateCompileGetByIdChain): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::tryCacheGetByID): | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * jit/JITStubs.h: | |
| (JSC::): | |
| * runtime/GetterSetter.h: | |
| 2010-02-23 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Web Inspector: Regression: r55027+: Inspector broken | |
| https://bugs.webkit.org/show_bug.cgi?id=35253 | |
| op_get_by_id_getter_chain was not passing the correct this parameter. | |
| The bug was caused by incorrect use of baseCell instead of baseValue, | |
| baseValue contains the original object for the lookup (and hence the | |
| correct this object), baseCell is clobbered as part of walking the | |
| prototype chain. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| 2010-02-23 Gustavo Noronha Silva <gns@gnome.org> | |
| Rubber-stamped by Dimitri Glazkov. | |
| Chromium build fix. | |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: | |
| 2010-02-23 Leandro Pereira <leandro@profusion.mobi> | |
| Reviewed by Gustavo Noronha Silva. | |
| Changes references of GOwnPtr to reflect their new place. | |
| http://webkit.org/b/35084 | |
| * JavaScriptCore/JavaScriptCore.gypi: | |
| * JavaScriptCore/wtf/Threading.h: | |
| * JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h: | |
| 2010-02-23 Leandro Pereira <leandro@profusion.mobi> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| Adding the EFL implementation of JavaScriptCore. | |
| See https://bugs.webkit.org/show_bug.cgi?id=35084 for details. | |
| * GNUmakefile.am: Updated to reflect the new location of GOwnPtr and | |
| GRefPtr. | |
| * wtf/efl/MainThreadEfl.cpp: Added. | |
| * wtf/gobject/GOwnPtr.cpp: Moved from wtf/gtk. | |
| * wtf/gobject/GOwnPtr.h: Moved from wtf/gtk. | |
| * wtf/gobject/GRefPtr.cpp: Moved from wtf/gtk. | |
| * wtf/gobject/GRefPtr.h: Moved from wtf/gtk. | |
| 2010-02-22 Julien Chaffraix <jchaffraix@webkit.org> | |
| Reviewed by Darin Adler. | |
| Remove auto_ptr usage in JavaScriptCore. | |
| https://bugs.webkit.org/show_bug.cgi?id=35221 | |
| * parser/Nodes.h: Removed now unneeded adopt method. | |
| * parser/Parser.cpp: Removed <memory> include as it is not required anymore. | |
| * wtf/OwnPtr.h: Removed the constructor from auto_ptr. | |
| * wtf/VectorTraits.h: Removed a template specialization for auto_ptr. | |
| * wtf/unicode/Collator.h: Made userDefault return a PassOwnPtr. | |
| * wtf/unicode/CollatorDefault.cpp: | |
| (WTF::Collator::userDefault): Changed the method to match the next signature. | |
| * wtf/unicode/icu/CollatorICU.cpp: | |
| (WTF::Collator::userDefault): Ditto. | |
| 2010-02-22 Huahui Wu <hwu@google.com> | |
| Reviewed by Eric Seidel. | |
| Add code that enables SquirrelFish Extreme (a.k.a JSCX, JSC JIT) | |
| in Android. It's disabled by default, but is enabled when the | |
| enveronment variable ENABLE_JSC_JIT is set to true. | |
| https://bugs.webkit.org/show_bug.cgi?id=34855 | |
| * Android.mk: | |
| * wtf/Platform.h: | |
| 2010-02-22 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| JSStringBuilder should not CRASH if allocation fails, it should throw a JSException. | |
| * runtime/JSGlobalObjectFunctions.cpp: | |
| * runtime/JSStringBuilder.h: | |
| (JSC::JSStringBuilder::JSStringBuilder): | |
| (JSC::JSStringBuilder::append): | |
| (JSC::JSStringBuilder::build): | |
| * runtime/StringBuilder.h: | |
| (JSC::StringBuilder::build): | |
| * wtf/Vector.h: | |
| (WTF::VectorBufferBase::tryAllocateBuffer): | |
| (WTF::): | |
| (WTF::VectorBuffer::tryAllocateBuffer): | |
| (WTF::::tryExpandCapacity): | |
| (WTF::::tryReserveCapacity): | |
| (WTF::::tryAppend): | |
| 2010-02-22 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| [BREWMP] Map FastMalloc to BREW memory allocator | |
| https://bugs.webkit.org/show_bug.cgi?id=33570 | |
| Use MALLOC macro instead of the standard malloc function. | |
| Although RVCT provides malloc, we can't use it in BREW | |
| because the loader does not initialize the base address properly. | |
| * wtf/FastMalloc.cpp: | |
| * wtf/brew/SystemMallocBrew.h: Added. | |
| (mallocBrew): | |
| (callocBrew): | |
| (freeBrew): | |
| (reallocBrew): | |
| 2010-02-22 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
| Build fix for make distcheck. | |
| * GNUmakefile.am: | |
| 2010-02-22 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Unreviewed build fix. | |
| [Qt] Build fix for RVCT. | |
| Fix after r55024. The "-i" option is for perl not for the | |
| script. | |
| * DerivedSources.pro: | |
| 2010-02-21 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Make UString::m_data be const, and make the UChar owned/ref-counted by CrossThreadRefCounted be const too. | |
| * runtime/UStringImpl.cpp: | |
| (JSC::UStringImpl::baseSharedBuffer): | |
| (JSC::UStringImpl::~UStringImpl): | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringImpl::create): | |
| (JSC::UStringImpl::data): | |
| (JSC::UStringImpl::UStringImpl): | |
| * wtf/OwnFastMallocPtr.h: | |
| (WTF::OwnFastMallocPtr::~OwnFastMallocPtr): | |
| 2010-02-21 Yuta Kitamura <yutak@chromium.org> | |
| Reviewed by Darin Adler. | |
| HashMapTranslatorAdapter::translate() needs to set the mapped value. | |
| HTTPHeaderMap::add(const char*, const String&) does not work | |
| https://bugs.webkit.org/show_bug.cgi?id=35227 | |
| * wtf/HashMap.h: | |
| (WTF::HashMapTranslatorAdapter::translate): | |
| 2010-02-19 Maciej Stachowiak <mjs@apple.com> | |
| Reviewed by David Levin. | |
| Add an ENABLE flag for sandboxed iframes to make it possible to disable it in releases | |
| https://bugs.webkit.org/show_bug.cgi?id=35147 | |
| * Configurations/FeatureDefines.xcconfig: | |
| 2010-02-19 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| JSString::getIndex() calls value() to resolve the string value (is a rope) | |
| to a UString, then passes the result to jsSingleCharacterSubstring without | |
| checking for an exception. In case of out-of-memory the returned UString | |
| is null(), which may result in an out-of-buounds substring being created. | |
| This is bad. | |
| Simple fix is to be able to get an index from a rope without resolving to | |
| UString. This may be a useful optimization in some test cases. | |
| The same bug exists in some other methods is JSString, these can be fixed | |
| by changing them to call getIndex(). | |
| * runtime/JSString.cpp: | |
| (JSC::JSString::resolveRope): | |
| (JSC::JSString::getStringPropertyDescriptor): | |
| * runtime/JSString.h: | |
| (JSC::jsSingleCharacterSubstring): | |
| (JSC::JSString::getIndex): | |
| (JSC::jsSingleCharacterString): | |
| (JSC::JSString::getStringPropertySlot): | |
| * runtime/UStringImpl.cpp: | |
| (JSC::singleCharacterSubstring): | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringImpl::singleCharacterSubstring): | |
| 2010-02-19 Oliver Hunt <oliver@apple.com> | |
| RS = Gavin Barraclough. | |
| Split the 32/64 version of JITPropertyAccess into a separate file. | |
| * GNUmakefile.am: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.pri: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * jit/JITPropertyAccess.cpp: | |
| * jit/JITPropertyAccess32_64.cpp: Added. | |
| (JSC::JIT::emit_op_put_by_index): | |
| (JSC::JIT::emit_op_put_getter): | |
| (JSC::JIT::emit_op_put_setter): | |
| (JSC::JIT::emit_op_del_by_id): | |
| (JSC::JIT::emit_op_method_check): | |
| (JSC::JIT::emitSlow_op_method_check): | |
| (JSC::JIT::emit_op_get_by_val): | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| (JSC::JIT::emit_op_put_by_val): | |
| (JSC::JIT::emitSlow_op_put_by_val): | |
| (JSC::JIT::emit_op_get_by_id): | |
| (JSC::JIT::emitSlow_op_get_by_id): | |
| (JSC::JIT::emit_op_put_by_id): | |
| (JSC::JIT::emitSlow_op_put_by_id): | |
| (JSC::JIT::compileGetByIdHotPath): | |
| (JSC::JIT::compileGetByIdSlowCase): | |
| (JSC::JIT::compilePutDirectOffset): | |
| (JSC::JIT::compileGetDirectOffset): | |
| (JSC::JIT::testPrototype): | |
| (JSC::JIT::privateCompilePutByIdTransition): | |
| (JSC::JIT::patchGetByIdSelf): | |
| (JSC::JIT::patchMethodCallProto): | |
| (JSC::JIT::patchPutByIdReplace): | |
| (JSC::JIT::privateCompilePatchGetArrayLength): | |
| (JSC::JIT::privateCompileGetByIdProto): | |
| (JSC::JIT::privateCompileGetByIdSelfList): | |
| (JSC::JIT::privateCompileGetByIdProtoList): | |
| (JSC::JIT::privateCompileGetByIdChainList): | |
| (JSC::JIT::privateCompileGetByIdChain): | |
| (JSC::JIT::emit_op_get_by_pname): | |
| (JSC::JIT::emitSlow_op_get_by_pname): | |
| 2010-02-19 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Laszlo Gombos. | |
| Added additional parameter to create_rvct_stubs | |
| for setting the regularexpression prefix. | |
| Renamed it because it now works for other platforms too. | |
| https://bugs.webkit.org/show_bug.cgi?id=34951 | |
| * DerivedSources.pro: | |
| * create_jit_stubs: Copied from JavaScriptCore/create_rvct_stubs. | |
| * create_rvct_stubs: Removed. | |
| 2010-02-18 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Improve interpreter getter performance | |
| https://bugs.webkit.org/show_bug.cgi?id=35138 | |
| Improve the performance of getter dispatch by making it possible | |
| for the interpreter to cache the GetterSetter object lookup. | |
| To do this we simply need to make PropertySlot aware of getters | |
| as a potentially cacheable property, and record the base and this | |
| objects for a getter access. This allows us to use more-or-less | |
| identical code to that used by the normal get_by_id caching, with | |
| the dispatch being the only actual difference. | |
| I'm holding off of implementing this in the JIT until I do some | |
| cleanup to try and making coding in the JIT not be as horrible | |
| as it is currently. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::dump): | |
| (JSC::CodeBlock::derefStructures): | |
| (JSC::CodeBlock::refStructures): | |
| * bytecode/Opcode.h: | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::resolveGlobal): | |
| (JSC::Interpreter::tryCacheGetByID): | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::tryCacheGetByID): | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * runtime/JSObject.cpp: | |
| (JSC::JSObject::fillGetterPropertySlot): | |
| * runtime/PropertySlot.cpp: | |
| (JSC::PropertySlot::functionGetter): | |
| * runtime/PropertySlot.h: | |
| (JSC::PropertySlot::isGetter): | |
| (JSC::PropertySlot::isCacheable): | |
| (JSC::PropertySlot::isCacheableValue): | |
| (JSC::PropertySlot::setValueSlot): | |
| (JSC::PropertySlot::setGetterSlot): | |
| (JSC::PropertySlot::setCacheableGetterSlot): | |
| (JSC::PropertySlot::clearOffset): | |
| (JSC::PropertySlot::thisValue): | |
| 2010-02-17 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Fixed a portion of: | |
| <rdar://problem/7165917> | https://bugs.webkit.org/show_bug.cgi?id=28676 | |
| Safari 4 does not release memory back to the operating system fast enough (28676) | |
| This patch fixes a surprisingly common edge case in which the page heap | |
| would have only one free span, but that span would be larger than the | |
| minimum free size, so we would decide not to free it, even though it | |
| could be as large as 100MB or more! | |
| SunSpider reports no change on Mac or Windows. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::TCMalloc_PageHeap::scavenge): Call shouldContinueScavenging() instead | |
| of doing the math ourselves. Don't keep a local value for pagesDecommitted | |
| because that lets free_committed_pages_ be wrong temporarily. Instead, | |
| update free_committed_pages_ as we go. ASSERT that we aren't releasing | |
| a span that has already been released, because we think this is impossible. | |
| Finally, don't be afraid to release all free memory in the page heap when | |
| scavenging. We only scavenge after 5 seconds of the application's working | |
| set not growing, and we keep both thread caches and a central cache on | |
| top of the page heap, so the extra free pages in the page heap were just | |
| overkill. | |
| 2010-02-17 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=35070 | |
| Addition of 2 strings of length 2^31 may result in a string of length 0. | |
| Check for overflow when creating a new JSString as a result of an addition | |
| or concatenation, throw an out of memory exception. | |
| * runtime/JSString.h: | |
| (JSC::): | |
| * runtime/Operations.h: | |
| (JSC::jsString): | |
| 2010-02-17 Xan Lopez <xlopez@igalia.com> | |
| Reviewed by Gustavo Noronha. | |
| [Linux] Webkit incompatible with Java plugins | |
| https://bugs.webkit.org/show_bug.cgi?id=24912 | |
| Add support for GFile to GOwnPtr. | |
| Based on original work by Gustavo Noronha. | |
| * wtf/gtk/GOwnPtr.cpp: | |
| (WTF::GFile): | |
| * wtf/gtk/GOwnPtr.h: | |
| 2010-02-16 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Mark Rowe. | |
| Fix a handful of other leaks seen on the buildbot. | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringOrRopeImpl::deref): Delegate through to the subclass version of deref to ensure that | |
| the correct cleanup takes place. This function previously featured some code that attempted to | |
| skip deletion of static UStringImpl's. Closer inspection revealed that it was in fact equivalent | |
| to "if (false)", meaning that UStringImpl's which had their final deref performed via this function | |
| were leaked. | |
| 2010-02-16 Mark Rowe <mrowe@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Fix a handful of leaks seen on the buildbot. | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringOrRopeImpl::deref): Call URopeImpl::destructNonRecursive rather than delete | |
| to ensure that the rope's fibers are also destroyed. | |
| 2010-02-16 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=34964 | |
| Leaks tool reports false memory leaks due to Rope implementation. | |
| A rope is a recursive data structure where each node in the rope holds a set of | |
| pointers, each of which may reference either a string (in UStringImpl form) or | |
| another rope node. A low bit in each pointer is used to distinguish between | |
| rope & string elements, in a fashion similar to the recently-removed | |
| PtrAndFlags class (see https://bugs.webkit.org/show_bug.cgi?id=33731 ). Again, | |
| this causes a problem for Leaks - refactor to remove the magic pointer | |
| mangling. | |
| Move Rope out from JSString.h and rename to URopeImpl, to match UStringImpl. | |
| Give UStringImpl and URopeImpl a common parent class, UStringOrRopeImpl. | |
| Repurpose an otherwise invalid permutation to flags (static & should report | |
| memory cost) to identify ropes. | |
| This allows us to change the rope's fibers to interrogate the object rather | |
| than storing a bool within the low bits of the pointer (or in some cases the | |
| use of a common parent class removes the need to determine the type at all - | |
| there is a common interface to ref or get the length of either ropes or strings). | |
| * API/JSClassRef.cpp: | |
| (OpaqueJSClass::OpaqueJSClass): | |
| (OpaqueJSClassContextData::OpaqueJSClassContextData): | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::keyForCharacterSwitch): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::arrayProtoFuncToString): | |
| * runtime/Identifier.cpp: | |
| (JSC::Identifier::equal): | |
| (JSC::Identifier::addSlowCase): | |
| * runtime/JSString.cpp: | |
| (JSC::JSString::resolveRope): | |
| * runtime/JSString.h: | |
| (JSC::): | |
| (JSC::RopeBuilder::JSString): | |
| (JSC::RopeBuilder::~JSString): | |
| (JSC::RopeBuilder::appendStringInConstruct): | |
| (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): | |
| (JSC::RopeBuilder::JSStringFinalizerStruct::JSStringFinalizerStruct): | |
| (JSC::RopeBuilder::JSStringFinalizerStruct::): | |
| * runtime/UString.cpp: | |
| (JSC::UString::toStrictUInt32): | |
| (JSC::equal): | |
| * runtime/UString.h: | |
| (JSC::UString::isEmpty): | |
| (JSC::UString::size): | |
| * runtime/UStringImpl.cpp: | |
| (JSC::URopeImpl::derefFibersNonRecursive): | |
| (JSC::URopeImpl::destructNonRecursive): | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringOrRopeImpl::isRope): | |
| (JSC::UStringOrRopeImpl::length): | |
| (JSC::UStringOrRopeImpl::ref): | |
| (JSC::UStringOrRopeImpl::): | |
| (JSC::UStringOrRopeImpl::operator new): | |
| (JSC::UStringOrRopeImpl::UStringOrRopeImpl): | |
| (JSC::UStringImpl::adopt): | |
| (JSC::UStringImpl::createUninitialized): | |
| (JSC::UStringImpl::tryCreateUninitialized): | |
| (JSC::UStringImpl::data): | |
| (JSC::UStringImpl::cost): | |
| (JSC::UStringImpl::deref): | |
| (JSC::UStringImpl::UStringImpl): | |
| (JSC::UStringImpl::): | |
| (JSC::URopeImpl::tryCreateUninitialized): | |
| (JSC::URopeImpl::initializeFiber): | |
| (JSC::URopeImpl::fiberCount): | |
| (JSC::URopeImpl::fibers): | |
| (JSC::URopeImpl::deref): | |
| (JSC::URopeImpl::URopeImpl): | |
| (JSC::URopeImpl::hasOneRef): | |
| (JSC::UStringOrRopeImpl::deref): | |
| 2010-02-15 Gabor Loki <loki@webkit.org> | |
| Reviewed by Gavin Barraclough. | |
| Fix the SP at ctiOpThrowNotCaught on Thumb2 (JSVALUE32) | |
| https://bugs.webkit.org/show_bug.cgi?id=34939 | |
| * jit/JITStubs.cpp: | |
| 2010-02-15 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (Build Fix!). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-02-15 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Some general Rope related refactoring. | |
| Rename Rope::m_ropeLength to m_fiberCount, to be more descriptive. | |
| Rename Rope::m_stringLength to simply m_length (since this is the | |
| more conventional name for the length of a string). Move append | |
| behaviour out into a new RopeBuilder class, so that Rope no longer | |
| needs any knowledge of the JSString or UString implementation. | |
| Make Rope no longer be nested within JSString. | |
| (Rope now no-longer need reside within JSString.h, but leaving | |
| the change of moving this out to a different header as a separate | |
| change from these renames). | |
| * JavaScriptCore.exp: | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| * runtime/JSString.cpp: | |
| (JSC::Rope::destructNonRecursive): | |
| (JSC::Rope::~Rope): | |
| (JSC::JSString::resolveRope): | |
| (JSC::JSString::toBoolean): | |
| (JSC::JSString::getStringPropertyDescriptor): | |
| * runtime/JSString.h: | |
| (JSC::Rope::Fiber::Fiber): | |
| (JSC::Rope::Fiber::deref): | |
| (JSC::Rope::Fiber::ref): | |
| (JSC::Rope::Fiber::refAndGetLength): | |
| (JSC::Rope::Fiber::isRope): | |
| (JSC::Rope::Fiber::rope): | |
| (JSC::Rope::Fiber::isString): | |
| (JSC::Rope::Fiber::string): | |
| (JSC::Rope::Fiber::nonFiber): | |
| (JSC::Rope::tryCreateUninitialized): | |
| (JSC::Rope::append): | |
| (JSC::Rope::fiberCount): | |
| (JSC::Rope::length): | |
| (JSC::Rope::fibers): | |
| (JSC::Rope::Rope): | |
| (JSC::Rope::operator new): | |
| (JSC::): | |
| (JSC::RopeBuilder::JSString): | |
| (JSC::RopeBuilder::~JSString): | |
| (JSC::RopeBuilder::length): | |
| (JSC::RopeBuilder::canGetIndex): | |
| (JSC::RopeBuilder::appendStringInConstruct): | |
| (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): | |
| (JSC::RopeBuilder::isRope): | |
| (JSC::RopeBuilder::fiberCount): | |
| (JSC::JSString::getStringPropertySlot): | |
| * runtime/Operations.h: | |
| (JSC::jsString): | |
| 2010-02-15 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (Build fix). | |
| Add missing cast for !YARR (PPC) builds. | |
| * runtime/RegExp.cpp: | |
| (JSC::RegExp::match): | |
| 2010-02-14 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=33731 | |
| Many false leaks in release builds due to PtrAndFlags | |
| StructureTransitionTable was effectively a smart pointer type, | |
| one machine word in size and wholly contained as a member of | |
| of Structure. It either pointed to an actual table, or could | |
| be used to describe a single transtion entry without use of a | |
| table. | |
| This, however, worked by using a PtrAndFlags, which is not | |
| compatible with the leaks tool. Since there is no clear way to | |
| obtain another bit for 'free' here, and since there are bits | |
| available up in Structure, merge this functionality back up into | |
| Structure. Having this in a separate class was quite clean | |
| from an enacapsulation perspective, but this solution doesn't | |
| seem to bad - all table access is now intermediated through the | |
| Structure::structureTransitionTableFoo methods, keeping the | |
| optimization fairly well contained. | |
| This was the last use of PtrAndFlags, so removing the file too. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * bytecode/CodeBlock.h: | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::Structure): | |
| (JSC::Structure::~Structure): | |
| (JSC::Structure::addPropertyTransitionToExistingStructure): | |
| (JSC::Structure::addPropertyTransition): | |
| (JSC::Structure::hasTransition): | |
| * runtime/Structure.h: | |
| (JSC::Structure::): | |
| (JSC::Structure::structureTransitionTableContains): | |
| (JSC::Structure::structureTransitionTableGet): | |
| (JSC::Structure::structureTransitionTableHasTransition): | |
| (JSC::Structure::structureTransitionTableRemove): | |
| (JSC::Structure::structureTransitionTableAdd): | |
| (JSC::Structure::structureTransitionTable): | |
| (JSC::Structure::setStructureTransitionTable): | |
| (JSC::Structure::singleTransition): | |
| (JSC::Structure::setSingleTransition): | |
| * runtime/StructureTransitionTable.h: | |
| * wtf/PtrAndFlags.h: Removed. | |
| 2010-02-15 Gavin Barraclough <barraclough@apple.com> | |
| Rubber Stamped by Geoff Garen. | |
| Bug 34948 - tryMakeString should fail on error in length calculation | |
| Ooops! - "bool overflow" argument should have been "bool& overflow". | |
| * runtime/UString.h: | |
| (JSC::sumWithOverflow): | |
| (JSC::tryMakeString): | |
| 2010-02-15 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (Build Fix (pt 2!)). | |
| Some symbol names have changed, remove, will readd if required. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-02-15 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (Build Fix (pt 1?)). | |
| Some symbol names have changed, remove, will readd if required. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-02-15 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Removed some mistaken code added in http://trac.webkit.org/changeset/53860. | |
| * API/APIShims.h: | |
| (JSC::APICallbackShim::APICallbackShim): | |
| (JSC::APICallbackShim::~APICallbackShim): No need to start/stop the | |
| timeout checker when calling out from the API to the client; we want to | |
| monitor the VM for timeouts, not the client. This mistake was harmless / | |
| undetectable, since it's totally redundant with the APIEntryShim, which | |
| also starts / stops the timeout checker. | |
| 2010-02-15 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Bug 34952 - String lengths in UString should be unsigned. | |
| This matches WebCore::StringImpl, and better unifies behaviour throughout JSC. | |
| * JavaScriptCore.exp: | |
| * bytecode/EvalCodeCache.h: | |
| * runtime/Identifier.cpp: | |
| (JSC::Identifier::equal): | |
| * runtime/Identifier.h: | |
| * runtime/JSGlobalObjectFunctions.cpp: | |
| (JSC::globalFuncEscape): | |
| * runtime/JSONObject.cpp: | |
| (JSC::gap): | |
| (JSC::Stringifier::indent): | |
| * runtime/NumberPrototype.cpp: | |
| (JSC::numberProtoFuncToFixed): | |
| (JSC::numberProtoFuncToPrecision): | |
| * runtime/RegExp.cpp: | |
| (JSC::RegExp::match): | |
| * runtime/StringPrototype.cpp: | |
| (JSC::substituteBackreferencesSlow): | |
| (JSC::stringProtoFuncReplace): | |
| (JSC::stringProtoFuncSplit): | |
| (JSC::trimString): | |
| * runtime/UString.cpp: | |
| (JSC::UString::UString): | |
| (JSC::UString::from): | |
| (JSC::UString::getCString): | |
| (JSC::UString::ascii): | |
| (JSC::UString::operator[]): | |
| (JSC::UString::toStrictUInt32): | |
| (JSC::UString::find): | |
| (JSC::UString::rfind): | |
| (JSC::UString::substr): | |
| (JSC::operator<): | |
| (JSC::operator>): | |
| (JSC::compare): | |
| (JSC::equal): | |
| (JSC::UString::UTF8String): | |
| * runtime/UString.h: | |
| (JSC::UString::size): | |
| (JSC::operator==): | |
| * runtime/UStringImpl.cpp: | |
| (JSC::UStringImpl::create): | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringImpl::create): | |
| (JSC::UStringImpl::size): | |
| (JSC::UStringImpl::computeHash): | |
| (JSC::UStringImpl::UStringImpl): | |
| 2010-02-15 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Bug 34948 - tryMakeString should fail on error in length calculation | |
| The sum of the length of substrings could overflow. | |
| * runtime/UString.h: | |
| (JSC::sumWithOverflow): | |
| (JSC::tryMakeString): | |
| 2010-02-15 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Fixed <rdar://problem/7628524> Crash beneath JSGlobalContextRelease when | |
| typing in Google search field with GuardMalloc/full page heap enabled | |
| * API/JSContextRef.cpp: Don't use APIEntryShim, since that requires | |
| a JSGlobalData, which this function destroys. Do use setCurrentIdentifierTable | |
| and JSLock instead, since those are the two features of APIEntryShim we | |
| require. | |
| 2010-02-15 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Laszlo Gombos. | |
| Added additional parameter to create_rvct_stubs | |
| for setting the offset of thunkReturnAddress. | |
| https://bugs.webkit.org/show_bug.cgi?id=34657 | |
| * create_rvct_stubs: | |
| * jit/JITStubs.cpp: | |
| 2010-02-15 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Fix QScriptValue::toIntXX methods. | |
| More ECMA Script compliance. | |
| [Qt] QScriptValue::toIntXX returns incorrect values | |
| https://bugs.webkit.org/show_bug.cgi?id=34847 | |
| * qt/api/qscriptvalue_p.h: | |
| (QScriptValuePrivate::toInteger): | |
| (QScriptValuePrivate::toInt32): | |
| (QScriptValuePrivate::toUInt32): | |
| (QScriptValuePrivate::toUInt16): | |
| * qt/tests/qscriptvalue/tst_qscriptvalue.h: | |
| * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: | |
| (tst_QScriptValue::toInteger_initData): | |
| (tst_QScriptValue::toInteger_makeData): | |
| (tst_QScriptValue::toInteger_test): | |
| (tst_QScriptValue::toInt32_initData): | |
| (tst_QScriptValue::toInt32_makeData): | |
| (tst_QScriptValue::toInt32_test): | |
| (tst_QScriptValue::toUInt32_initData): | |
| (tst_QScriptValue::toUInt32_makeData): | |
| (tst_QScriptValue::toUInt32_test): | |
| (tst_QScriptValue::toUInt16_initData): | |
| (tst_QScriptValue::toUInt16_makeData): | |
| (tst_QScriptValue::toUInt16_test): | |
| 2010-02-14 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Adam Barth. | |
| Implement NEVER_INLINE and NO_RETURN for RVCT | |
| https://bugs.webkit.org/show_bug.cgi?id=34740 | |
| * wtf/AlwaysInline.h: | |
| 2010-02-12 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=33731 | |
| Remove uses of PtrAndFlags from JIT data stuctures. | |
| These break the OS X Leaks tool. Free up a bit in CallLinkInfo, and invalid | |
| permutation of pointer states in MethodCallLinkInfo to represent the removed bits. | |
| * bytecode/CodeBlock.h: | |
| (JSC::CallLinkInfo::seenOnce): | |
| (JSC::CallLinkInfo::setSeen): | |
| (JSC::MethodCallLinkInfo::MethodCallLinkInfo): | |
| (JSC::MethodCallLinkInfo::seenOnce): | |
| (JSC::MethodCallLinkInfo::setSeen): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::unlinkCall): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::patchMethodCallProto): | |
| * runtime/UString.h: | |
| 2010-02-12 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=33731 | |
| Many false leaks in release builds due to PtrAndFlags | |
| Remove UntypedPtrAndBitfield (similar to PtrAndFlags) in UStringImpl, | |
| and steal bits from the refCount instead. | |
| * runtime/UStringImpl.cpp: | |
| (JSC::UStringImpl::baseSharedBuffer): | |
| (JSC::UStringImpl::~UStringImpl): | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringImpl::cost): | |
| (JSC::UStringImpl::isIdentifier): | |
| (JSC::UStringImpl::setIsIdentifier): | |
| (JSC::UStringImpl::ref): | |
| (JSC::UStringImpl::deref): | |
| (JSC::UStringImpl::UStringImpl): | |
| (JSC::UStringImpl::bufferOwnerString): | |
| (JSC::UStringImpl::bufferOwnership): | |
| (JSC::UStringImpl::isStatic): | |
| (JSC::UStringImpl::): | |
| 2010-02-12 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Darin Adler. | |
| Removed an unnecessary data dependency from my last patch. | |
| * runtime/SmallStrings.cpp: | |
| (JSC::SmallStrings::markChildren): Since isAnyStringMarked being false | |
| is a condition of entering the loop, we can just use '=' instead of '|='. | |
| 2010-02-12 Janne Koskinen <janne.p.koskinen@digia.com> | |
| Reviewed by Tor Arne Vestbø. | |
| Additional refptr/passrefptr workarounds for WINSCW compiler | |
| https://bugs.webkit.org/show_bug.cgi?id=28054 | |
| * wtf/PassRefPtr.h: | |
| (WTF::refIfNotNull): | |
| (WTF::PassRefPtr::PassRefPtr): | |
| (WTF::PassRefPtr::~PassRefPtr): | |
| (WTF::PassRefPtr::clear): | |
| (WTF::::operator): | |
| * wtf/RefPtr.h: | |
| (WTF::RefPtr::RefPtr): | |
| (WTF::::operator): | |
| 2010-02-12 Janne Koskinen <janne.p.koskinen@digia.com> | |
| Reviewed by Tor Arne Vestbø. | |
| Additional refptr/passrefptr workarounds for WINSCW compiler | |
| https://bugs.webkit.org/show_bug.cgi?id=28054 | |
| * wtf/PassRefPtr.h: | |
| (WTF::refIfNotNull): | |
| (WTF::PassRefPtr::PassRefPtr): | |
| (WTF::PassRefPtr::~PassRefPtr): | |
| (WTF::PassRefPtr::clear): | |
| (WTF::::operator): | |
| * wtf/RefPtr.h: | |
| (WTF::RefPtr::RefPtr): | |
| (WTF::::operator): | |
| 2010-02-12 Janne Koskinen <janne.p.koskinen@digia.com> | |
| Reviewed by Tor Arne Vestbø. | |
| Additional refptr/passrefptr workarounds for WINSCW compiler | |
| https://bugs.webkit.org/show_bug.cgi?id=28054 | |
| * wtf/PassRefPtr.h: | |
| (WTF::refIfNotNull): | |
| (WTF::PassRefPtr::PassRefPtr): | |
| (WTF::PassRefPtr::~PassRefPtr): | |
| (WTF::PassRefPtr::clear): | |
| (WTF::::operator): | |
| * wtf/RefPtr.h: | |
| (WTF::RefPtr::RefPtr): | |
| (WTF::::operator): | |
| 2010-02-12 Janne Koskinen <janne.p.koskinen@digia.com> | |
| Reviewed by Simon Hausmann. | |
| Don't import the cmath functions from std:: for WINSCW. | |
| * wtf/MathExtras.h: | |
| 2010-02-12 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Adam Barth. | |
| Typedef both JSChar and UChar to wchar_t in RVCT. | |
| https://bugs.webkit.org/show_bug.cgi?id=34560 | |
| Define both JSChar and UChar to wchar_t as the size | |
| of wchar_t is 2 bytes in RVCT. | |
| * API/JSStringRef.h: | |
| * wtf/unicode/qt4/UnicodeQt4.h: | |
| 2010-02-11 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt and Darin Adler. | |
| The rest of the fix for | |
| https://bugs.webkit.org/show_bug.cgi?id=34864 | <rdar://problem/7594198> | |
| Many objects left uncollected after visiting mail.google.com and closing | |
| window | |
| Don't unconditionally hang onto small strings. Instead, hang onto all | |
| small strings as long as any small string is still referenced. | |
| SunSpider reports no change. | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::markRoots): Mark the small strings cache last, so it can | |
| check if anything else has kept any strings alive. | |
| * runtime/SmallStrings.cpp: | |
| (JSC::isMarked): | |
| (JSC::SmallStrings::markChildren): Only keep our strings alive if some | |
| other reference to at least one of them exists, too. | |
| 2010-02-11 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Some progress toward fixing | |
| https://bugs.webkit.org/show_bug.cgi?id=34864 | <rdar://problem/7594198> | |
| Many objects left uncollected after visiting mail.google.com and closing | |
| window | |
| SunSpider reports no change. | |
| Keep weak references, rather than protected references, to cached for-in | |
| property name enumerators. | |
| One problem with protected references is that a chain like | |
| [ gc object 1 ] => [ non-gc object ] => [ gc object 2 ] | |
| takes two GC passes to break, since the first pass collects [ gc object 1 ], | |
| releasing [ non-gc object ] and unprotecting [ gc object 2 ], and only | |
| then can a second pass collect [ gc object 2 ]. | |
| Another problem with protected references is that they can keep a bunch | |
| of strings alive long after they're useful. In SunSpider and a few popular | |
| websites, the size-speed tradeoff seems to favor weak references. | |
| * runtime/JSPropertyNameIterator.cpp: | |
| (JSC::JSPropertyNameIterator::JSPropertyNameIterator): Moved this constructor | |
| into the .cpp file, since it's not used elsewhere. | |
| (JSC::JSPropertyNameIterator::~JSPropertyNameIterator): Added a destructor | |
| to support our weak reference. | |
| * runtime/JSPropertyNameIterator.h: | |
| (JSC::Structure::setEnumerationCache): | |
| (JSC::Structure::clearEnumerationCache): | |
| (JSC::Structure::enumerationCache): Added a function for clearing a | |
| Structure's enumeration cache, used by our new destructor. Also fixed | |
| indentation to match the rest of the file. | |
| * runtime/Structure.h: Changed from protected pointer to weak pointer. | |
| 2010-02-11 Chris Rogers <crogers@google.com> | |
| Reviewed by David Levin. | |
| audio engine: add Complex number class | |
| https://bugs.webkit.org/show_bug.cgi?id=34538 | |
| * wtf/Complex.h: Added. | |
| (WebCore::complexFromMagnitudePhase): | |
| 2010-02-10 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Added an SPI for asking about all the different live objects on the heap. | |
| Useful for memory debugging. | |
| * JavaScriptCore.exp: Export the new SPI. | |
| * runtime/Collector.cpp: | |
| (JSC::typeName): Use a little capitalization. Don't crash in the case of | |
| a non-object cell, since it might just be an uninitialized cell. | |
| (JSC::Heap::objectTypeCounts): The new SPI. | |
| * runtime/Collector.h: | |
| * runtime/CollectorHeapIterator.h: | |
| (JSC::CollectorHeapIterator::advance): | |
| (JSC::LiveObjectIterator::operator++): | |
| (JSC::DeadObjectIterator::operator++): | |
| (JSC::ObjectIterator::operator++): Made 2 tweaks to these iterators: | |
| (1) Skip the last cell in the block, since it's a dummy sentinel, and | |
| we don't want it to confuse the object count; (2) Fixed a logic error | |
| in LiveObjectIterator that could cause it to iterate dead objects if | |
| m_block were equal to m_heap.nextBlock and m_cell were less than | |
| m_heap.nextCell. No test for this since I can't think of a way that this | |
| could make WebKit behave badly. | |
| 2010-02-11 Steve Block <steveblock@google.com> | |
| Reviewed by Darin Adler. | |
| Guard cmath using declarations in MathExtras.h on Android | |
| https://bugs.webkit.org/show_bug.cgi?id=34840 | |
| Android does not provide these functions. | |
| * wtf/MathExtras.h: | |
| 2010-02-08 Maciej Stachowiak <mjs@apple.com> | |
| Reviewed by Cameron Zwarich. | |
| Restore ENABLE_RUBY flag so vendors can ship with Ruby disabled if they choose. | |
| https://bugs.webkit.org/show_bug.cgi?id=34698 | |
| * Configurations/FeatureDefines.xcconfig: | |
| 2010-02-10 Kevin Watters <kevinwatters@gmail.com> | |
| Reviewed by Kevin Ollivier. | |
| [wx] Add Windows complex text support and Mac support for containsCharacters. | |
| https://bugs.webkit.org/show_bug.cgi?id=34759 | |
| * wscript: | |
| 2010-02-10 Alexey Proskuryakov <ap@apple.com> | |
| Addressing issues found by style bot. | |
| * wtf/ValueCheck.h: Renamed header guard to match final file name. | |
| * wtf/Vector.h: (WTF::::checkConsistency): Remove braces around a one-line clause. | |
| 2010-02-09 Alexey Proskuryakov <ap@apple.com> | |
| Reviewed by Geoffrey Garen. | |
| https://bugs.webkit.org/show_bug.cgi?id=34490 | |
| WebCore::ImageEventSender::dispatchPendingEvents() crashes in certain conditions | |
| * GNUmakefile.am: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| Added ValueCheck.h. | |
| * wtf/ValueCheck.h: Added. Moved code out of HashTraits, since it would be awkward to | |
| include that from Vector.h. | |
| (WTF::ValueCheck::checkConsistency): Allow null pointers, those are pretty consistent. | |
| * wtf/HashTraits.h: Moved value checking code out of here. | |
| * wtf/HashTable.h: (WTF::::checkTableConsistencyExceptSize): Updated for the above changes. | |
| * wtf/Vector.h: | |
| (WTF::::checkConsistency): Check all vector elements. | |
| (WTF::ValueCheck): Support checking a Vector as an element in other containers. Currently | |
| unused. | |
| 2010-02-10 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Fix QScriptValue::toBool. | |
| Fix ECMA compliance in the QScriptValue for values like 0, NaN and | |
| empty strings. | |
| [Qt] QScriptValue::toBool problem | |
| https://bugs.webkit.org/show_bug.cgi?id=34793 | |
| * qt/api/qscriptvalue_p.h: | |
| (QScriptValuePrivate::toBool): | |
| * qt/tests/qscriptvalue/tst_qscriptvalue.h: | |
| * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: | |
| (tst_QScriptValue::toBool_initData): | |
| (tst_QScriptValue::toBool_makeData): | |
| (tst_QScriptValue::toBool_test): | |
| (tst_QScriptValue::toBoolean_initData): | |
| (tst_QScriptValue::toBoolean_makeData): | |
| (tst_QScriptValue::toBoolean_test): | |
| 2009-10-06 Yongjun Zhang <yongjun.zhang@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Use derefIfNotNull() to work around WINSCW compiler forward declaration bug | |
| The compiler bug is reported at | |
| https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812. | |
| The change should be reverted when the above bug is fixed in WINSCW compiler. | |
| https://bugs.webkit.org/show_bug.cgi?id=28054 | |
| 2009-10-06 Yongjun Zhang <yongjun.zhang@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Get rid of WINSCW hack for UnSpecifiedBoolType | |
| Add parenthesis around (RefPtr::*UnspecifiedBoolType) to make the WINSCW | |
| compiler work with the default UnSpecifiedBoolType() operator. | |
| https://bugs.webkit.org/show_bug.cgi?id=28054 | |
| * wtf/RefPtr.h: | |
| 2010-02-09 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| New functions nullValue() and undefinedValue(). | |
| [Qt] QScriptEngine should contain nullValue and undefinedValue methods | |
| https://bugs.webkit.org/show_bug.cgi?id=34749 | |
| * qt/api/qscriptengine.cpp: | |
| (QScriptEngine::nullValue): | |
| (QScriptEngine::undefinedValue): | |
| * qt/api/qscriptengine.h: | |
| * qt/tests/qscriptengine/tst_qscriptengine.cpp: | |
| (tst_QScriptEngine::nullValue): | |
| (tst_QScriptEngine::undefinedValue): | |
| 2010-02-09 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Fixes for QScriptValue::toNumber(). | |
| Fix ECMA compliance in QScriptValue for values unbound | |
| to a QScriptEngine. | |
| [Qt] QScriptValue::toNumber() is broken | |
| https://bugs.webkit.org/show_bug.cgi?id=34592 | |
| * qt/api/qscriptvalue_p.h: | |
| (QScriptValuePrivate::toNumber): | |
| * qt/tests/qscriptvalue/tst_qscriptvalue.h: | |
| * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: | |
| (tst_QScriptValue::toNumber_initData): | |
| (tst_QScriptValue::toNumber_makeData): | |
| (tst_QScriptValue::toNumber_test): | |
| 2010-02-09 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Fix QScriptValue::isNumber(). | |
| The isNumber() should return 'true' if the value is in the CNumber | |
| state. | |
| [Qt] QScriptValue::isNumber() returns an incorrect value | |
| https://bugs.webkit.org/show_bug.cgi?id=34575 | |
| * qt/api/qscriptvalue_p.h: | |
| (QScriptValuePrivate::isNumber): | |
| * qt/tests/qscriptvalue/tst_qscriptvalue.h: | |
| * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: | |
| (tst_QScriptValue::isNumber_initData): | |
| (tst_QScriptValue::isNumber_makeData): | |
| (tst_QScriptValue::isNumber_test): | |
| 2010-02-09 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Small refactoring to the small strings cache to allow it to be cleared | |
| dynamically. | |
| * runtime/SmallStrings.cpp: | |
| (JSC::SmallStrings::SmallStrings): | |
| (JSC::SmallStrings::clear): | |
| * runtime/SmallStrings.h: Moved initialization code into a shared function, | |
| and changed the constructor to call it. | |
| 2010-02-09 Gavin Barraclough <barraclough@apple.com> | |
| Rubber Stamped by Geoff Garen. | |
| Rename StringBuilder::release && JSStringBuilder::releaseJSString | |
| to 'build()'. | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::arrayProtoFuncToLocaleString): | |
| (JSC::arrayProtoFuncJoin): | |
| * runtime/Executable.cpp: | |
| (JSC::FunctionExecutable::paramString): | |
| * runtime/FunctionConstructor.cpp: | |
| (JSC::constructFunction): | |
| * runtime/JSGlobalObjectFunctions.cpp: | |
| (JSC::encode): | |
| (JSC::decode): | |
| (JSC::globalFuncEscape): | |
| (JSC::globalFuncUnescape): | |
| * runtime/JSONObject.cpp: | |
| (JSC::Stringifier::stringify): | |
| * runtime/JSStringBuilder.h: | |
| (JSC::JSStringBuilder::build): | |
| * runtime/LiteralParser.cpp: | |
| (JSC::LiteralParser::Lexer::lexString): | |
| * runtime/NumberPrototype.cpp: | |
| (JSC::integerPartNoExp): | |
| (JSC::numberProtoFuncToFixed): | |
| * runtime/StringBuilder.h: | |
| (JSC::StringBuilder::build): | |
| 2010-02-09 John Sullivan <sullivan@apple.com> | |
| https://bugs.webkit.org/show_bug.cgi?id=34772 | |
| Overzealous new assertion in URStringImpl::adopt() | |
| Reviewed by Adam Barth. | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringImpl::adopt): | |
| Only assert that vector.data() is non-zero if vector.size() is non-zero. | |
| 2010-02-09 Nikolas Zimmermann <nzimmermann@rim.com> | |
| Not reviewed. Try to fix build problem on SnowLeopard slaves to bring them back. | |
| * API/JSClassRef.cpp: | |
| (tryCreateStringFromUTF8): Mark method as 'static inline' to suppress "warning: no previous prototype for ..." | |
| 2010-02-09 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Three small string fixes: | |
| (1) StringBuilder::release should CRASH if the buffer allocation failed. | |
| (2) Remove weird, dead code from JSString::tryGetValue, replace with an ASSERT. | |
| (3) Move UString::createFromUTF8 out to the API, as tryCreateStringFromUTF8. | |
| This is only used from the API, and (now) unlike other UString::create | |
| methods may return UString::null() to indicate failure cases. Better | |
| handle these in the API. | |
| * API/JSClassRef.cpp: | |
| (tryCreateStringFromUTF8): | |
| (OpaqueJSClass::OpaqueJSClass): | |
| (OpaqueJSClassContextData::OpaqueJSClassContextData): | |
| * runtime/JSString.h: | |
| (JSC::Fiber::tryGetValue): | |
| * runtime/StringBuilder.h: | |
| (JSC::StringBuilder::release): | |
| * runtime/UString.cpp: | |
| (JSC::UString::UString): | |
| (JSC::UString::from): | |
| (JSC::UString::find): | |
| * runtime/UString.h: | |
| 2010-02-09 Janne Koskinen <janne.p.koskinen@digia.com> | |
| Reviewed by Laszlo Gombos. | |
| [Qt] use nanval() for Symbian as nonInlineNaN | |
| https://bugs.webkit.org/show_bug.cgi?id=34170 | |
| numeric_limits<double>::quiet_NaN is broken in Symbian | |
| causing NaN to be evaluated as a number. | |
| * runtime/JSValue.cpp: | |
| (JSC::nonInlineNaN): | |
| 2010-02-09 Tamas Szirbucz <szirbucz@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Add a soft modulo operation to ARM JIT using a trampoline function. | |
| The performance progression is about ~1.8% on ARMv7 | |
| https://bugs.webkit.org/show_bug.cgi?id=34424 | |
| Developed in cooperation with Gabor Loki. | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_mod): | |
| (JSC::JIT::emitSlow_op_mod): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::softModulo): | |
| * jit/JITStubs.h: | |
| (JSC::JITThunks::ctiSoftModulo): | |
| * wtf/Platform.h: | |
| 2010-02-08 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (SL/win build fixes). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * runtime/StringPrototype.cpp: | |
| 2010-02-08 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt | |
| Make String.replace throw an exception on out-of-memory, rather than | |
| returning a null (err, empty-ish) string. Move String::replaceRange | |
| and String::spliceSubstringsWithSeparators out to StringPrototype - | |
| these were fairly specific use anyway, and we can better integrate | |
| throwing the JS expcetion this way. | |
| Also removes redundant assignment operator from UString. | |
| * JavaScriptCore.exp: | |
| * runtime/StringPrototype.cpp: | |
| (JSC::StringRange::StringRange): | |
| (JSC::jsSpliceSubstringsWithSeparators): | |
| (JSC::jsReplaceRange): | |
| (JSC::stringProtoFuncReplace): | |
| * runtime/UString.cpp: | |
| * runtime/UString.h: | |
| 2010-02-08 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| [BREWMP] Undefine WTF_OS_WINDOWS and WTF_PLATFORM_WIN | |
| https://bugs.webkit.org/show_bug.cgi?id=34561 | |
| As the binary for simulator is built with MSVC 2005, | |
| WTF_OS_WINDOWS and WTF_PLATFORM_WIN are defined. | |
| Undefine them as we don't target Windows. | |
| * wtf/Platform.h: | |
| 2010-02-08 Chris Rogers <crogers@google.com> | |
| Reviewed by Darin Adler. | |
| audio engine: add Vector3 class | |
| https://bugs.webkit.org/show_bug.cgi?id=34548 | |
| * wtf/Vector3.h: Added. | |
| (WebCore::Vector3::Vector3): | |
| (WebCore::Vector3::abs): | |
| (WebCore::Vector3::isZero): | |
| (WebCore::Vector3::normalize): | |
| (WebCore::Vector3::x): | |
| (WebCore::Vector3::y): | |
| (WebCore::Vector3::z): | |
| (WebCore::operator+): | |
| (WebCore::operator-): | |
| (WebCore::operator*): | |
| (WebCore::dot): | |
| (WebCore::cross): | |
| (WebCore::distance): | |
| 2010-02-08 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Fix warning in clang++ | |
| * runtime/Structure.h: | |
| (JSC::Structure::propertyStorageSize): | |
| 2010-02-08 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Make makeString CRASH if we fail to allocate a string. | |
| (tryMakeString or jsMakeNontrivialString can be used where we | |
| expect allocation may fail and want to handle the error). | |
| * runtime/JSStringBuilder.h: | |
| (JSC::jsMakeNontrivialString): | |
| * runtime/UString.h: | |
| (JSC::tryMakeString): | |
| (JSC::makeString): | |
| 2010-02-08 Gavin Barraclough <barraclough@apple.com> | |
| Rubber Stamped by Oliver Hunt. | |
| Remove a couple of unnecesary C-style casts spotted by Darin. | |
| * runtime/JSGlobalObjectFunctions.cpp: | |
| (JSC::encode): | |
| (JSC::globalFuncEscape): | |
| 2010-02-08 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Switch some more StringBuilder/jsNontrivialString code to use | |
| JSStringBuilder/jsMakeNontrivialString - these methods will | |
| throw an exception if we hit out-of-memory, rather than just | |
| CRASHing. | |
| * runtime/FunctionPrototype.cpp: | |
| (JSC::functionProtoFuncToString): | |
| * runtime/JSGlobalObjectFunctions.cpp: | |
| (JSC::encode): | |
| (JSC::decode): | |
| (JSC::globalFuncEscape): | |
| 2010-02-08 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| Use an empty identifier instead of a null identifier for parse | |
| tokens without an identifier. | |
| This helps encapsulate the null UStringImpl within UString. | |
| * parser/Grammar.y: | |
| * parser/NodeConstructors.h: | |
| (JSC::ContinueNode::ContinueNode): | |
| (JSC::BreakNode::BreakNode): | |
| (JSC::ForInNode::ForInNode): | |
| * runtime/CommonIdentifiers.cpp: | |
| (JSC::CommonIdentifiers::CommonIdentifiers): | |
| * runtime/CommonIdentifiers.h: | |
| * runtime/FunctionPrototype.cpp: | |
| (JSC::FunctionPrototype::FunctionPrototype): | |
| 2010-02-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
| Build fix for make distcheck. | |
| * GNUmakefile.am: | |
| 2010-02-08 Simon Hausmann <simon.hausmann@nokia.com> | |
| Unreviewed RVCT build fix. | |
| Similar to r54391, don't import the cmath functions from std:: for RVCT. | |
| * wtf/MathExtras.h: | |
| 2010-02-05 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Change UStringImpl::create to CRASH if the string cannot be allocated, | |
| rather than returning a null string (which will behave like a zero-length | |
| string if used). | |
| Also move createRep function from UString to become new overloaded | |
| UStringImpl::create methods. In doing so, bring their behaviour closer to | |
| being in line with WebCore::StringImpl, in removing the behaviour that they | |
| can be used to produce null UStrings (ASSERT the char* provided is non-null). | |
| This behaviour of converting null C-strings to null UStrings is inefficient | |
| (cmompared to just using UString::null()), incompatible with WebCore::StringImpl's | |
| behaviour, and may generate unexpected behaviour, since in many cases a null | |
| UString can be used like an empty string. | |
| With these changes UStringImpl need not have a concept of null impls, we can | |
| start transitioning this to become an implementation detail of UString, that | |
| internally it chooses to use a null-object rather than an actually zero impl | |
| pointer. | |
| * JavaScriptCore.exp: | |
| * debugger/Debugger.cpp: | |
| (JSC::Debugger::recompileAllJSFunctions): | |
| * debugger/DebuggerCallFrame.cpp: | |
| (JSC::DebuggerCallFrame::calculatedFunctionName): | |
| * parser/Parser.cpp: | |
| (JSC::Parser::parse): | |
| * profiler/Profile.cpp: | |
| (JSC::Profile::Profile): | |
| * profiler/ProfileGenerator.cpp: | |
| (JSC::ProfileGenerator::stopProfiling): | |
| * runtime/Error.cpp: | |
| (JSC::Error::create): | |
| (JSC::throwError): | |
| * runtime/ExceptionHelpers.cpp: | |
| (JSC::createError): | |
| * runtime/Identifier.cpp: | |
| (JSC::Identifier::add): | |
| * runtime/PropertyNameArray.cpp: | |
| (JSC::PropertyNameArray::add): | |
| * runtime/UString.cpp: | |
| (JSC::initializeUString): | |
| (JSC::UString::UString): | |
| (JSC::UString::operator=): | |
| * runtime/UString.h: | |
| (JSC::UString::isNull): | |
| (JSC::UString::null): | |
| (JSC::UString::rep): | |
| (JSC::UString::UString): | |
| * runtime/UStringImpl.cpp: | |
| (JSC::UStringImpl::create): | |
| * runtime/UStringImpl.h: | |
| 2010-02-05 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| [BREWMP] Define SYSTEM_MALLOC 1 | |
| https://bugs.webkit.org/show_bug.cgi?id=34640 | |
| Make BREWMP use system malloc because FastMalloc is not ported. | |
| * wtf/Platform.h: | |
| 2010-02-05 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Alexey Proskuryakov. | |
| Don't call CRASH() in fastMalloc and fastCalloc when the requested memory size is 0 | |
| https://bugs.webkit.org/show_bug.cgi?id=34569 | |
| With USE_SYSTEM_MALLOC=1, fastMalloc and fastCalloc call CRASH() | |
| if the return value of malloc and calloc is 0. | |
| However, these functions can return 0 when the request size is 0. | |
| Libc manual says, "If size is 0, then malloc() returns either NULL, | |
| or a unique pointer value that can later be successfully passed to free()." | |
| Though malloc returns a unique pointer in most systems, | |
| 0 can be returned in some systems. For instance, BREW's MALLOC returns 0 | |
| when size is 0. | |
| If malloc or calloc returns 0 due to allocation size, increase the size | |
| to 1 and try again. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::fastMalloc): | |
| (WTF::fastCalloc): | |
| 2010-02-04 Mark Rowe <mrowe@apple.com> | |
| Reviewed by Timothy Hatcher. | |
| Build fix. Remove a symbol corresponding to an inline function from the linker export | |
| file to prevent a weak external failure. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: Accommodate rename of script. | |
| 2010-02-04 Daniel Bates <dbates@webkit.org> | |
| [Qt] Unreviewed, build fix for Qt bot. | |
| * runtime/JSStringBuilder.h: Changed #include <X.h> notation #include "X.h". | |
| 2010-02-04 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Clearing a WeakGCPtr is weird | |
| https://bugs.webkit.org/show_bug.cgi?id=34627 | |
| Added a WeakGCPtr::clear interface. | |
| As discussed in https://bugs.webkit.org/show_bug.cgi?id=33383, the old | |
| interface made it pretty weird for a client to conditionally clear a | |
| WeakGCPtr, which is exactly what clients want to do when objects are | |
| finalized. | |
| * API/JSClassRef.cpp: | |
| (clearReferenceToPrototype): Use the new WeakGCPtr::clear() interface. | |
| * runtime/WeakGCPtr.h: | |
| (JSC::WeakGCPtr::clear): Added an interface for clearing a WeakGCPtr, | |
| iff its current value is the value passed in. It's cumbersome for the | |
| client to do this test, since WeakGCPtr sometimes pretends to be null. | |
| 2010-02-04 Geoffrey Garen <ggaren@apple.com> | |
| Build fix: export a header. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| 2010-02-04 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Add a JSStringBuilder class (similar-to, and derived-from StringBuilder) to | |
| construct JSStrings, throwing a JS exception should we run out of memory whilst | |
| allocating storage for the string. | |
| Similarly, add jsMakeNontrivialString methods to use in cases where previously | |
| we were calling makeString & passing the result to jsNontrivialString. Again, | |
| these new methods throw if we hit an out of memory condition. | |
| Move throwOutOfMemoryError into ExceptionHelpers, to make it more widely available. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::arrayProtoFuncToString): | |
| (JSC::arrayProtoFuncToLocaleString): | |
| (JSC::arrayProtoFuncJoin): | |
| * runtime/DateConstructor.cpp: | |
| (JSC::callDate): | |
| * runtime/DatePrototype.cpp: | |
| (JSC::dateProtoFuncToString): | |
| (JSC::dateProtoFuncToUTCString): | |
| (JSC::dateProtoFuncToGMTString): | |
| * runtime/ErrorPrototype.cpp: | |
| (JSC::errorProtoFuncToString): | |
| * runtime/ExceptionHelpers.cpp: | |
| (JSC::throwOutOfMemoryError): | |
| * runtime/ExceptionHelpers.h: | |
| * runtime/JSStringBuilder.h: Added. | |
| (JSC::JSStringBuilder::releaseJSString): | |
| (JSC::jsMakeNontrivialString): | |
| * runtime/NumberPrototype.cpp: | |
| (JSC::numberProtoFuncToPrecision): | |
| * runtime/ObjectPrototype.cpp: | |
| (JSC::objectProtoFuncToString): | |
| * runtime/Operations.cpp: | |
| * runtime/Operations.h: | |
| * runtime/RegExpPrototype.cpp: | |
| (JSC::regExpProtoFuncToString): | |
| * runtime/StringBuilder.h: | |
| (JSC::StringBuilder::append): | |
| * runtime/StringPrototype.cpp: | |
| (JSC::stringProtoFuncBig): | |
| (JSC::stringProtoFuncSmall): | |
| (JSC::stringProtoFuncBlink): | |
| (JSC::stringProtoFuncBold): | |
| (JSC::stringProtoFuncFixed): | |
| (JSC::stringProtoFuncItalics): | |
| (JSC::stringProtoFuncStrike): | |
| (JSC::stringProtoFuncSub): | |
| (JSC::stringProtoFuncSup): | |
| (JSC::stringProtoFuncFontcolor): | |
| (JSC::stringProtoFuncFontsize): | |
| (JSC::stringProtoFuncAnchor): | |
| 2010-02-04 Steve Falkenburg <sfalken@apple.com> | |
| Windows build fix. | |
| * wtf/MathExtras.h: | |
| 2010-02-04 Darin Adler <darin@apple.com> | |
| Reviewed by David Levin. | |
| Make MathExtras.h compatible with <cmath> | |
| https://bugs.webkit.org/show_bug.cgi?id=34618 | |
| * wtf/MathExtras.h: Include <cmath> instead of <math.h>. | |
| Use "using" as we do elsewhere in WTF for the four functions from <cmath> | |
| we want to use without the prefix. Later we could consider making the std | |
| explicit at call sites instead. | |
| 2010-02-04 Tamas Szirbucz <szirbucz@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Use an easily appendable structure for trampolines instead of pointer parameters. | |
| https://bugs.webkit.org/show_bug.cgi?id=34424 | |
| * assembler/ARMAssembler.cpp: | |
| (JSC::ARMAssembler::executableCopy): | |
| * jit/JIT.h: | |
| (JSC::JIT::compileCTIMachineTrampolines): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::JITThunks): | |
| * jit/JITStubs.h: | |
| (JSC::JITThunks::ctiStringLengthTrampoline): | |
| (JSC::JITThunks::ctiVirtualCallLink): | |
| (JSC::JITThunks::ctiVirtualCall): | |
| (JSC::JITThunks::ctiNativeCallThunk): | |
| 2010-02-04 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Increase test coverage for the QScriptValue. | |
| https://bugs.webkit.org/show_bug.cgi?id=34533 | |
| * qt/tests/qscriptvalue/qscriptvalue.pro: | |
| * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: | |
| (tst_QScriptValue::tst_QScriptValue): | |
| (tst_QScriptValue::~tst_QScriptValue): | |
| (tst_QScriptValue::dataHelper): | |
| (tst_QScriptValue::newRow): | |
| (tst_QScriptValue::testHelper): | |
| (tst_QScriptValue::ctor): | |
| * qt/tests/qscriptvalue/tst_qscriptvalue.h: Added. | |
| * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: Added. | |
| (tst_QScriptValue::initScriptValues): | |
| (tst_QScriptValue::isValid_initData): | |
| (tst_QScriptValue::isValid_makeData): | |
| (tst_QScriptValue::isValid_test): | |
| (tst_QScriptValue::isBool_initData): | |
| (tst_QScriptValue::isBool_makeData): | |
| (tst_QScriptValue::isBool_test): | |
| (tst_QScriptValue::isBoolean_initData): | |
| (tst_QScriptValue::isBoolean_makeData): | |
| (tst_QScriptValue::isBoolean_test): | |
| (tst_QScriptValue::isFunction_initData): | |
| (tst_QScriptValue::isFunction_makeData): | |
| (tst_QScriptValue::isFunction_test): | |
| (tst_QScriptValue::isNull_initData): | |
| (tst_QScriptValue::isNull_makeData): | |
| (tst_QScriptValue::isNull_test): | |
| (tst_QScriptValue::isString_initData): | |
| (tst_QScriptValue::isString_makeData): | |
| (tst_QScriptValue::isString_test): | |
| (tst_QScriptValue::isUndefined_initData): | |
| (tst_QScriptValue::isUndefined_makeData): | |
| (tst_QScriptValue::isUndefined_test): | |
| (tst_QScriptValue::isObject_initData): | |
| (tst_QScriptValue::isObject_makeData): | |
| (tst_QScriptValue::isObject_test): | |
| 2010-02-03 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| [BREWMP] Define WTF_PLATFORM_BREWMP_SIMULATOR when AEE_SIMULATOR is defined | |
| https://bugs.webkit.org/show_bug.cgi?id=34514 | |
| PLATFORM(BREWMP_SIMULATOR) guard is needed to make distinction between BREWMP | |
| and BREWMP simulator. | |
| * wtf/Platform.h: | |
| 2010-02-03 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| [BREWMP] Remove COMPILE_ASSERT conflict with the underlying PLATFORM | |
| https://bugs.webkit.org/show_bug.cgi?id=34190 | |
| COMPILE_ASSERT conflicts with the underlying PLATFORM because it is defined | |
| both in WTF's Assertions.h and BREWMP's AEEClassIDs.h. Include AEEClassIDs.h | |
| in Assertions.h and undef COMPILE_ASSERT to avoid redefining COMPILE_ASSERT. | |
| * wtf/Assertions.h: | |
| 2010-02-03 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| [BREWMP] Implement OwnPtrBrew to make sure BREW instances are freed. | |
| https://bugs.webkit.org/show_bug.cgi?id=34518 | |
| Add OwnPtrBrew to release IFile, IFileMgr and IBitmap instances. | |
| * wtf/brew/OwnPtrBrew.cpp: Added. | |
| (WTF::IFileMgr): | |
| (WTF::IFile): | |
| (WTF::IBitmap): | |
| (WTF::freeOwnedPtrBrew): | |
| * wtf/brew/OwnPtrBrew.h: Added. | |
| (WTF::OwnPtrBrew::OwnPtrBrew): | |
| (WTF::OwnPtrBrew::~OwnPtrBrew): | |
| (WTF::OwnPtrBrew::get): | |
| (WTF::OwnPtrBrew::release): | |
| (WTF::OwnPtrBrew::outPtr): | |
| (WTF::OwnPtrBrew::set): | |
| (WTF::OwnPtrBrew::clear): | |
| (WTF::OwnPtrBrew::operator*): | |
| (WTF::OwnPtrBrew::operator->): | |
| (WTF::OwnPtrBrew::operator!): | |
| (WTF::OwnPtrBrew::operator UnspecifiedBoolType): | |
| (WTF::OwnPtrBrew::swap): | |
| (WTF::swap): | |
| (WTF::operator==): | |
| (WTF::operator!=): | |
| (WTF::getPtr): | |
| 2010-02-03 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Darin Adler. | |
| Export WTF::fastStrDup symbol | |
| https://bugs.webkit.org/show_bug.cgi?id=34526 | |
| * JavaScriptCore.exp: | |
| 2010-02-03 Kevin Watters <kevinwatters@gmail.com> | |
| Reviewed by Kevin Ollivier. | |
| [wx] Enable JIT compilation for wx. | |
| https://bugs.webkit.org/show_bug.cgi?id=34536 | |
| * wtf/Platform.h: | |
| 2010-02-02 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoffrey Garen. | |
| Crash in CollectorBitmap::get at nbcolympics.com | |
| https://bugs.webkit.org/show_bug.cgi?id=34504 | |
| This was caused by the use of m_offset to determine the offset of | |
| a new property into the property storage. This patch corrects | |
| the effected cases by incorporating the anonymous slot count. It | |
| also removes the duplicate copy of anonymous slot count from the | |
| property table as keeping this up to date merely increased the | |
| chance of a mismatch. Finally I've added a large number of | |
| assertions in an attempt to prevent such a bug from happening | |
| again. | |
| With the new assertions in place the existing anonymous slot tests | |
| all fail without the m_offset fixes. | |
| * runtime/PropertyMapHashTable.h: | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::materializePropertyMap): | |
| (JSC::Structure::addPropertyTransitionToExistingStructure): | |
| (JSC::Structure::addPropertyTransition): | |
| (JSC::Structure::removePropertyTransition): | |
| (JSC::Structure::flattenDictionaryStructure): | |
| (JSC::Structure::addPropertyWithoutTransition): | |
| (JSC::Structure::removePropertyWithoutTransition): | |
| (JSC::Structure::copyPropertyTable): | |
| (JSC::Structure::get): | |
| (JSC::Structure::put): | |
| (JSC::Structure::remove): | |
| (JSC::Structure::insertIntoPropertyMapHashTable): | |
| (JSC::Structure::createPropertyMapHashTable): | |
| (JSC::Structure::rehashPropertyMapHashTable): | |
| (JSC::Structure::checkConsistency): | |
| 2010-02-02 Steve Falkenburg <sfalken@apple.com> | |
| Reviewed by Darin Adler. | |
| Copyright year updating for Windows version resources should be automatic | |
| https://bugs.webkit.org/show_bug.cgi?id=34503 | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: | |
| 2010-02-02 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| [BREWMP] Add dummy main thread functions | |
| https://bugs.webkit.org/show_bug.cgi?id=33569 | |
| Add dummy initializeMainThreadPlatform and | |
| scheduleDispatchFunctionsOnMainThread. | |
| * wtf/brew/MainThreadBrew.cpp: Added. | |
| (WTF::initializeMainThreadPlatform): | |
| (WTF::scheduleDispatchFunctionsOnMainThread): | |
| 2010-02-02 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Darin Adler. | |
| Add using WTF::getLocalTime to CurrentTime.h | |
| https://bugs.webkit.org/show_bug.cgi?id=34493 | |
| * wtf/CurrentTime.h: | |
| 2010-02-02 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| [BREWMP] Add HAVE_XXX definitions | |
| https://bugs.webkit.org/show_bug.cgi?id=34414 | |
| Add HAVE_ERRNO_H=1 | |
| * wtf/Platform.h: | |
| 2010-02-02 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| [BREWMP] Don't define HAVE_TM_GMTOFF, HAVE_TM_ZONE and HAVE_TIMEGM | |
| https://bugs.webkit.org/show_bug.cgi?id=34388 | |
| BREWMP does not have these features. | |
| * wtf/Platform.h: | |
| 2010-02-02 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| [BREWMP] Define WTF_PLATFORM_BREWMP=1 when BUILDING_BREWMP is defined | |
| https://bugs.webkit.org/show_bug.cgi?id=34386 | |
| Define WTF_PLATFORM_BREWMP=1 so that PLATFORM(BREWMP) guard can be used. | |
| * wtf/Platform.h: | |
| 2010-02-01 Kent Tamura <tkent@chromium.org> | |
| Reviewed by Darin Adler. | |
| Date.UTC() should apply TimeClip operation. | |
| https://bugs.webkit.org/show_bug.cgi?id=34461 | |
| ECMAScript 5 15.9.4.3: | |
| > 9 Return TimeClip(MakeDate(MakeDay(yr, m, dt), MakeTime(h, min, s, milli))). | |
| * runtime/DateConstructor.cpp: | |
| (JSC::dateUTC): Calls WTF::timeClip(). | |
| 2010-02-01 Kent Tamura <tkent@chromium.org> | |
| Reviewed by Darin Adler. | |
| Fix a bug that Math.round() retunrs incorrect results for huge integers | |
| https://bugs.webkit.org/show_bug.cgi?id=34462 | |
| * runtime/MathObject.cpp: | |
| (JSC::mathProtoFuncRound): Avoid "arg + 0.5". | |
| 2010-02-01 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| [BREWMP] Port WTF's currentTime | |
| https://bugs.webkit.org/show_bug.cgi?id=33567 | |
| Combine GETUTCSECONDS and GETTIMEMS to calculate the number | |
| of milliseconds since 1970/01/01 00:00:00 UTC. | |
| * wtf/CurrentTime.cpp: | |
| (WTF::currentTime): | |
| 2010-02-01 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Darin Adler. | |
| [Qt] WinCE buildfix after r52729 and fix for Q_BIG_ENDIAN typo. | |
| https://bugs.webkit.org/show_bug.cgi?id=34378 | |
| * wtf/Platform.h: | |
| 2010-02-01 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Structure not accounting for anonymous slots when computing property storage size | |
| https://bugs.webkit.org/show_bug.cgi?id=34441 | |
| Previously any Structure with anonymous storage would have a property map, so we | |
| were only including anonymous slot size if there was a property map. Given this | |
| is no longer the case we should always include the anonymous slot count in the | |
| property storage size. | |
| * runtime/Structure.h: | |
| (JSC::Structure::propertyStorageSize): | |
| 2010-02-01 Oliver Hunt <oliver@apple.com> | |
| Windows build fix, update exports file (again) | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-02-01 Oliver Hunt <oliver@apple.com> | |
| Windows build fix, update exports file | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-01-31 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| JSC is failing to propagate anonymous slot count on some transitions | |
| https://bugs.webkit.org/show_bug.cgi?id=34321 | |
| Remove secondary Structure constructor, and make Structure store a copy | |
| of the number of anonymous slots directly so saving an immediate allocation | |
| of a property map for all structures with anonymous storage, which also | |
| avoids the leaked property map on new property transition in the original | |
| version of this patch. | |
| We need to propagate the the anonymous slot count otherwise we can end up | |
| with a structure recording incorrect information about the available and | |
| needed space for property storage, or alternatively incorrectly reusing | |
| some slots. | |
| * JavaScriptCore.exp: | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::Structure): | |
| (JSC::Structure::materializePropertyMap): | |
| (JSC::Structure::addPropertyTransition): | |
| (JSC::Structure::changePrototypeTransition): | |
| (JSC::Structure::despecifyFunctionTransition): | |
| (JSC::Structure::getterSetterTransition): | |
| (JSC::Structure::toDictionaryTransition): | |
| (JSC::Structure::flattenDictionaryStructure): | |
| (JSC::Structure::copyPropertyTable): | |
| (JSC::Structure::put): | |
| (JSC::Structure::remove): | |
| (JSC::Structure::insertIntoPropertyMapHashTable): | |
| (JSC::Structure::createPropertyMapHashTable): | |
| * runtime/Structure.h: | |
| (JSC::Structure::create): | |
| (JSC::Structure::hasAnonymousSlots): | |
| (JSC::Structure::anonymousSlotCount): | |
| 2010-01-31 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Darin Adler. | |
| Buildfix for WinCE + style fixes (TLS_OUT_OF_INDEXES is not defined). | |
| https://bugs.webkit.org/show_bug.cgi?id=34380 | |
| * wtf/ThreadSpecific.h: | |
| 2010-01-31 Kent Tamura <tkent@chromium.org> | |
| Reviewed by Darin Adler. | |
| [Windows] Fix a bug of round() with huge integral numbers | |
| https://bugs.webkit.org/show_bug.cgi?id=34297 | |
| Fix a bug that round() for huge integral numbers returns incorrect | |
| results. For example, round(8639999913600001) returns | |
| 8639999913600002 without this change though the double type can | |
| represent 8639999913600001 precisely. | |
| Math.round() of JavaScript has a similar problem. But this change | |
| doesn't fix it because Math.round() doesn't use round() of | |
| MathExtra.h. | |
| * wtf/MathExtras.h: | |
| (round): Avoid to do "num + 0.5" or "num - 0.5". | |
| (roundf): Fixed similarly. | |
| (llround): Calls round(). | |
| (llroundf): Calls roundf(). | |
| (lround): Calls round(). | |
| (lroundf): Calls roundf(). | |
| 2010-01-29 Mark Rowe <mrowe@apple.com> | |
| Sort Xcode projects. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| 2010-01-29 Mark Rowe <mrowe@apple.com> | |
| Fix the Mac build. | |
| Disable ENABLE_INDEXED_DATABASE since it is "completely non-functional". | |
| As the comment in FeatureDefines.xcconfig notes, the list of feature defines | |
| needs to be kept in sync across the various files. The default values also | |
| need to be kept in sync between these files and build-webkit. | |
| * Configurations/FeatureDefines.xcconfig: | |
| 2010-01-29 Simon Hausmann <simon.hausmann@nokia.com> | |
| Rubber-stamped by Maciej Stachowiak. | |
| Fix the ARM build. | |
| * runtime/JSNumberCell.h: | |
| (JSC::JSNumberCell::createStructure): Call the right Structure::create overload. | |
| 2010-01-28 Kevin Ollivier <kevino@theolliviers.com> | |
| [wx] Build fix for MSW, use ThreadingWin.cpp as the Windows pthreads implementation | |
| implements pthread_t in a way that makes it impossible to check its validity, | |
| which is needed by ThreadingPthreads.cpp. | |
| * wscript: | |
| 2010-01-28 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| DOM Objects shouldn't all require custom mark functions | |
| https://bugs.webkit.org/show_bug.cgi?id=34291 | |
| Make getAnonymousValue const-friendly | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::getAnonymousValue): | |
| 2010-01-28 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Simplify anonymous slot implementation | |
| https://bugs.webkit.org/show_bug.cgi?id=34282 | |
| A class must now specify the number of slots it needs at construction time | |
| rather than later on with a transition. This makes many things simpler, | |
| we no longer need to need an additional transition on object creation to | |
| add the anonymous slots, and we remove the need for a number of transition | |
| type checks. | |
| * API/JSCallbackConstructor.h: | |
| (JSC::JSCallbackConstructor::createStructure): | |
| * API/JSCallbackFunction.h: | |
| (JSC::JSCallbackFunction::createStructure): | |
| * API/JSCallbackObject.h: | |
| (JSC::JSCallbackObject::createStructure): | |
| * JavaScriptCore.exp: | |
| * debugger/DebuggerActivation.h: | |
| (JSC::DebuggerActivation::createStructure): | |
| * runtime/Arguments.h: | |
| (JSC::Arguments::createStructure): | |
| * runtime/BooleanObject.h: | |
| (JSC::BooleanObject::createStructure): | |
| * runtime/DateInstance.h: | |
| (JSC::DateInstance::createStructure): | |
| * runtime/DatePrototype.h: | |
| (JSC::DatePrototype::createStructure): | |
| * runtime/FunctionPrototype.h: | |
| (JSC::FunctionPrototype::createStructure): | |
| * runtime/GetterSetter.h: | |
| (JSC::GetterSetter::createStructure): | |
| * runtime/GlobalEvalFunction.h: | |
| (JSC::GlobalEvalFunction::createStructure): | |
| * runtime/InternalFunction.h: | |
| (JSC::InternalFunction::createStructure): | |
| * runtime/JSAPIValueWrapper.h: | |
| (JSC::JSAPIValueWrapper::createStructure): | |
| * runtime/JSActivation.h: | |
| (JSC::JSActivation::createStructure): | |
| * runtime/JSArray.h: | |
| (JSC::JSArray::createStructure): | |
| * runtime/JSByteArray.cpp: | |
| (JSC::JSByteArray::createStructure): | |
| * runtime/JSCell.h: | |
| (JSC::JSCell::createDummyStructure): | |
| * runtime/JSFunction.h: | |
| (JSC::JSFunction::createStructure): | |
| * runtime/JSGlobalObject.h: | |
| (JSC::JSGlobalObject::createStructure): | |
| * runtime/JSNotAnObject.h: | |
| (JSC::JSNotAnObject::createStructure): | |
| * runtime/JSONObject.h: | |
| (JSC::JSONObject::createStructure): | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::createStructure): | |
| (JSC::JSObject::putAnonymousValue): | |
| (JSC::JSObject::getAnonymousValue): | |
| * runtime/JSPropertyNameIterator.h: | |
| (JSC::JSPropertyNameIterator::createStructure): | |
| * runtime/JSStaticScopeObject.h: | |
| (JSC::JSStaticScopeObject::createStructure): | |
| * runtime/JSString.h: | |
| (JSC::Fiber::createStructure): | |
| * runtime/JSVariableObject.h: | |
| (JSC::JSVariableObject::createStructure): | |
| * runtime/JSWrapperObject.h: | |
| (JSC::JSWrapperObject::createStructure): | |
| (JSC::JSWrapperObject::JSWrapperObject): | |
| * runtime/MathObject.h: | |
| (JSC::MathObject::createStructure): | |
| * runtime/NumberConstructor.h: | |
| (JSC::NumberConstructor::createStructure): | |
| * runtime/NumberObject.h: | |
| (JSC::NumberObject::createStructure): | |
| * runtime/RegExpConstructor.h: | |
| (JSC::RegExpConstructor::createStructure): | |
| * runtime/RegExpObject.h: | |
| (JSC::RegExpObject::createStructure): | |
| * runtime/StringObject.h: | |
| (JSC::StringObject::createStructure): | |
| * runtime/StringObjectThatMasqueradesAsUndefined.h: | |
| (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::~Structure): | |
| (JSC::Structure::materializePropertyMap): | |
| * runtime/Structure.h: | |
| (JSC::Structure::create): | |
| (JSC::Structure::anonymousSlotCount): | |
| * runtime/StructureTransitionTable.h: | |
| 2010-01-27 Oliver Hunt <oliver@apple.com> | |
| Windows build fix. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-01-27 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| MessageEvent.data should deserialize in the context of the MessageEvent's global object | |
| https://bugs.webkit.org/show_bug.cgi?id=34227 | |
| Add logic to allow us to create an Object, Array, or Date instance | |
| so we can create them in the context of a specific global object, | |
| rather than just using the current lexical global object. | |
| * JavaScriptCore.exp: | |
| * runtime/DateInstance.cpp: | |
| (JSC::DateInstance::DateInstance): | |
| * runtime/DateInstance.h: | |
| * runtime/JSGlobalObject.h: | |
| (JSC::constructEmptyObject): | |
| (JSC::constructEmptyArray): | |
| 2010-01-27 Alexey Proskuryakov <ap@apple.com> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=34150 | |
| WebKit needs a mechanism to catch stale HashMap entries | |
| It is very difficult to catch stale pointers that are HashMap keys - since a pointer's hash | |
| is just its value, it is very unlikely that any observable problem is reproducible. | |
| This extends hash table consistency checks to check that pointers are referencing allocated | |
| memory blocks, and makes it possible to invoke the checks explicitly (it is not feasible | |
| to enable CHECK_HASHTABLE_CONSISTENCY by default, because that affects performance too much). | |
| * wtf/HashMap.h: (WTF::::checkConsistency): Call through to HashTable implementation. We can | |
| add similar calls to HashSet and HashCountedSet, but I haven't seen hard to debug problems | |
| with those yet. | |
| * wtf/HashSet.h: (WTF::::remove): The version of checkTableConsistency that's guarded by | |
| CHECK_HASHTABLE_CONSISTENCY is now called internalCheckTableConsistency(). | |
| * wtf/HashTable.h: | |
| (WTF::HashTable::internalCheckTableConsistency): | |
| (WTF::HashTable::internalCheckTableConsistencyExceptSize): | |
| (WTF::HashTable::checkTableConsistencyExceptSize): | |
| Expose checkTableConsistency() even if CHECK_HASHTABLE_CONSISTENCY is off. | |
| (WTF::::add): Updated for checkTableConsistency renaming. | |
| (WTF::::addPassingHashCode): Ditto. | |
| (WTF::::removeAndInvalidate): Ditto. | |
| (WTF::::remove): Ditto. | |
| (WTF::::rehash): Ditto. | |
| (WTF::::checkTableConsistency): The assertion for !shouldExpand() was not correct - this | |
| function returns true for tables with m_table == 0. | |
| (WTF::::checkTableConsistencyExceptSize): Call checkValueConsistency for key. Potentially, | |
| we could do the same for values. | |
| * wtf/HashTraits.h: | |
| (WTF::GenericHashTraits::checkValueConsistency): An empty function that can be overridden | |
| to add checks. Currently, the only override is for pointer hashes. | |
| * wtf/RefPtrHashMap.h: (WTF::::remove): Updated for checkTableConsistency renaming. | |
| 2010-01-27 Anton Muhin <antonm@chromium.org> | |
| Reviewed by Darin Adler. | |
| Remove trailing \ from inline function code | |
| https://bugs.webkit.org/show_bug.cgi?id=34223 | |
| * assembler/ARMv7Assembler.h: | |
| (JSC::ARMThumbImmediate::countLeadingZerosPartial): | |
| 2010-01-27 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| [BREWMP] Port WTF's randomNumber | |
| https://bugs.webkit.org/show_bug.cgi?id=33566 | |
| Use GETRAND to generate 4 byte random byte sequence to implement | |
| weakRandomNumber. Create a secure random number generator with | |
| AEECLSID_RANDOM to implement randomNumber. | |
| * wtf/RandomNumber.cpp: | |
| (WTF::weakRandomNumber): | |
| (WTF::randomNumber): | |
| 2010-01-27 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| [BREWMP] Port getCPUTime | |
| https://bugs.webkit.org/show_bug.cgi?id=33572 | |
| Use GETUPTIMEMS which returns a continuously and | |
| linearly increasing millisecond timer from the time the device | |
| was powered on. This function is enough to implement getCPUTime. | |
| * runtime/TimeoutChecker.cpp: | |
| (JSC::getCPUTime): | |
| 2010-01-27 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Oliver Hunt. | |
| [BREWMP] Add MarkStack fastMalloc implementation for platforms without VirtualAlloc or mmap. | |
| https://bugs.webkit.org/show_bug.cgi?id=33582 | |
| Use fastMalloc and fastFree to implement MarkStack::allocateStack and | |
| MarkStack::releaseStack for platforms without page level allocation. | |
| * runtime/MarkStack.h: | |
| (JSC::MarkStack::MarkStackArray::shrinkAllocation): | |
| * runtime/MarkStackNone.cpp: Added. | |
| (JSC::MarkStack::initializePagesize): | |
| (JSC::MarkStack::allocateStack): | |
| (JSC::MarkStack::releaseStack): | |
| 2010-01-27 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| [BREWMP] Don't use time function | |
| https://bugs.webkit.org/show_bug.cgi?id=33577 | |
| Calling time(0) in BREW devices causes a crash because time | |
| is not properly ported in most devices. Cast currentTime() to | |
| time_t to get the same result as time(0). | |
| * wtf/DateMath.cpp: | |
| (WTF::calculateUTCOffset): | |
| 2010-01-27 Alexey Proskuryakov <ap@apple.com> | |
| Revert r53899 (HashMap<AtomicStringImpl*, Value> key checks) and subsequent build fixes, | |
| because they make SVG tests crash in release builds. | |
| * wtf/HashMap.h: | |
| (WTF::::remove): | |
| * wtf/HashSet.h: | |
| (WTF::::remove): | |
| * wtf/HashTable.h: | |
| (WTF::::add): | |
| (WTF::::addPassingHashCode): | |
| (WTF::::removeAndInvalidate): | |
| (WTF::::remove): | |
| (WTF::::rehash): | |
| (WTF::::checkTableConsistency): | |
| (WTF::::checkTableConsistencyExceptSize): | |
| * wtf/HashTraits.h: | |
| (WTF::GenericHashTraits::emptyValue): | |
| (WTF::): | |
| * wtf/RefPtrHashMap.h: | |
| (WTF::::remove): | |
| 2010-01-26 Alexey Proskuryakov <ap@apple.com> | |
| More Windows build fixing. | |
| * wtf/HashTraits.h: _msize takes void*, remove const qualifier from type. | |
| 2010-01-26 Alexey Proskuryakov <ap@apple.com> | |
| Windows build fix. | |
| * wtf/HashTraits.h: Include malloc.h for _msize(). | |
| 2010-01-26 Alexey Proskuryakov <ap@apple.com> | |
| Build fix. | |
| * wtf/HashTable.h: (WTF::HashTable::checkTableConsistencyExceptSize): Remove const from a | |
| static (empty) version of this function. | |
| 2010-01-26 Alexey Proskuryakov <ap@apple.com> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=34150 | |
| WebKit needs a mechanism to catch stale HashMap entries | |
| It is very difficult to catch stale pointers that are HashMap keys - since a pointer's hash | |
| is just its value, it is very unlikely that any observable problem is reproducible. | |
| This extends hash table consistency checks to check that pointers are referencing allocated | |
| memory blocks, and makes it possible to invoke the checks explicitly (it is not feasible | |
| to enable CHECK_HASHTABLE_CONSISTENCY by default, because that affects performance too much). | |
| * wtf/HashMap.h: (WTF::::checkConsistency): Call through to HashTable implementation. We can | |
| add similar calls to HashSet and HashCountedSet, but I haven't seen hard to debug problems | |
| with those yet. | |
| * wtf/HashSet.h: (WTF::::remove): The version of checkTableConsistency that's guarded by | |
| CHECK_HASHTABLE_CONSISTENCY is now called internalCheckTableConsistency(). | |
| * wtf/HashTable.h: | |
| (WTF::HashTable::internalCheckTableConsistency): | |
| (WTF::HashTable::internalCheckTableConsistencyExceptSize): | |
| (WTF::HashTable::checkTableConsistencyExceptSize): | |
| Expose checkTableConsistency() even if CHECK_HASHTABLE_CONSISTENCY is off. | |
| (WTF::::add): Updated for checkTableConsistency renaming. | |
| (WTF::::addPassingHashCode): Ditto. | |
| (WTF::::removeAndInvalidate): Ditto. | |
| (WTF::::remove): Ditto. | |
| (WTF::::rehash): Ditto. | |
| (WTF::::checkTableConsistency): The assertion for !shouldExpand() was not correct - this | |
| function returns true for tables with m_table == 0. | |
| (WTF::::checkTableConsistencyExceptSize): Call checkValueConsistency for key. Potentially, | |
| we could do the same for values. | |
| * wtf/HashTraits.h: | |
| (WTF::GenericHashTraits::checkValueConsistency): An empty function that can be overridden | |
| to add checks. Currently, the only override is for pointer hashes. | |
| * wtf/RefPtrHashMap.h: (WTF::::remove): Updated for checkTableConsistency renaming. | |
| 2010-01-26 Lyon Chen <liachen@rim.com> | |
| Reviewed by Maciej Stachowiak. | |
| Opcode.h use const void* for Opcode cause error #1211 for RVCT compiler | |
| https://bugs.webkit.org/show_bug.cgi?id=33902 | |
| * bytecode/Opcode.h: | |
| 2010-01-26 Steve Falkenburg <sfalken@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Windows build references non-existent include paths | |
| https://bugs.webkit.org/show_bug.cgi?id=34175 | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
| * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: | |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: | |
| * JavaScriptCore.vcproj/testapi/testapi.vcproj: | |
| * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: | |
| 2010-01-26 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoffrey Garen. | |
| Using JavaScriptCore API with a webkit vended context can result in slow script dialog | |
| https://bugs.webkit.org/show_bug.cgi?id=34172 | |
| Make the APIShim correctly increment and decrement the timeout | |
| entry counter. | |
| * API/APIShims.h: | |
| (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): | |
| (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock): | |
| (JSC::APICallbackShim::APICallbackShim): | |
| (JSC::APICallbackShim::~APICallbackShim): | |
| 2010-01-26 Simon Hausmann <simon.hausmann@nokia.com> | |
| [Qt] Fix compilation of QtScript with non-gcc compilers | |
| Variable length stack arrays are a gcc extension. Use QVarLengthArray | |
| as a more portable solution that still tries to allocate on the stack | |
| first. | |
| * qt/api/qscriptvalue_p.h: | |
| (QScriptValuePrivate::call): | |
| 2010-01-26 Simon Hausmann <simon.hausmann@nokia.com> | |
| Reviewed by Tor Arne Vestbø. | |
| [Qt] Fix the build on platforms without JIT support. | |
| The JIT support should be determined at compile-time via wtf/Platform.h | |
| * qt/api/QtScript.pro: | |
| 2010-01-26 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| First steps of the QtScript API. | |
| Two new classes were created; QScriptEngine and QScriptValue. | |
| The first should encapsulate a javascript context and the second a script | |
| value. | |
| This API is still in development, so it isn't compiled by default. | |
| To trigger compilation, pass --qmakearg="CONFIG+=build-qtscript" to | |
| build-webkit. | |
| https://bugs.webkit.org/show_bug.cgi?id=32565 | |
| * qt/api/QtScript.pro: Added. | |
| * qt/api/qscriptconverter_p.h: Added. | |
| (QScriptConverter::toString): | |
| * qt/api/qscriptengine.cpp: Added. | |
| (QScriptEngine::QScriptEngine): | |
| (QScriptEngine::~QScriptEngine): | |
| (QScriptEngine::evaluate): | |
| (QScriptEngine::collectGarbage): | |
| * qt/api/qscriptengine.h: Added. | |
| * qt/api/qscriptengine_p.cpp: Added. | |
| (QScriptEnginePrivate::QScriptEnginePrivate): | |
| (QScriptEnginePrivate::~QScriptEnginePrivate): | |
| (QScriptEnginePrivate::evaluate): | |
| * qt/api/qscriptengine_p.h: Added. | |
| (QScriptEnginePrivate::get): | |
| (QScriptEnginePrivate::collectGarbage): | |
| (QScriptEnginePrivate::makeJSValue): | |
| (QScriptEnginePrivate::context): | |
| * qt/api/qscriptvalue.cpp: Added. | |
| (QScriptValue::QScriptValue): | |
| (QScriptValue::~QScriptValue): | |
| (QScriptValue::isValid): | |
| (QScriptValue::isBool): | |
| (QScriptValue::isBoolean): | |
| (QScriptValue::isNumber): | |
| (QScriptValue::isNull): | |
| (QScriptValue::isString): | |
| (QScriptValue::isUndefined): | |
| (QScriptValue::isError): | |
| (QScriptValue::isObject): | |
| (QScriptValue::isFunction): | |
| (QScriptValue::toString): | |
| (QScriptValue::toNumber): | |
| (QScriptValue::toBool): | |
| (QScriptValue::toBoolean): | |
| (QScriptValue::toInteger): | |
| (QScriptValue::toInt32): | |
| (QScriptValue::toUInt32): | |
| (QScriptValue::toUInt16): | |
| (QScriptValue::call): | |
| (QScriptValue::engine): | |
| (QScriptValue::operator=): | |
| (QScriptValue::equals): | |
| (QScriptValue::strictlyEquals): | |
| * qt/api/qscriptvalue.h: Added. | |
| (QScriptValue::): | |
| * qt/api/qscriptvalue_p.h: Added. | |
| (QScriptValuePrivate::): | |
| (QScriptValuePrivate::get): | |
| (QScriptValuePrivate::QScriptValuePrivate): | |
| (QScriptValuePrivate::isValid): | |
| (QScriptValuePrivate::isBool): | |
| (QScriptValuePrivate::isNumber): | |
| (QScriptValuePrivate::isNull): | |
| (QScriptValuePrivate::isString): | |
| (QScriptValuePrivate::isUndefined): | |
| (QScriptValuePrivate::isError): | |
| (QScriptValuePrivate::isObject): | |
| (QScriptValuePrivate::isFunction): | |
| (QScriptValuePrivate::toString): | |
| (QScriptValuePrivate::toNumber): | |
| (QScriptValuePrivate::toBool): | |
| (QScriptValuePrivate::toInteger): | |
| (QScriptValuePrivate::toInt32): | |
| (QScriptValuePrivate::toUInt32): | |
| (QScriptValuePrivate::toUInt16): | |
| (QScriptValuePrivate::equals): | |
| (QScriptValuePrivate::strictlyEquals): | |
| (QScriptValuePrivate::assignEngine): | |
| (QScriptValuePrivate::call): | |
| (QScriptValuePrivate::engine): | |
| (QScriptValuePrivate::context): | |
| (QScriptValuePrivate::value): | |
| (QScriptValuePrivate::object): | |
| (QScriptValuePrivate::inherits): | |
| (QScriptValuePrivate::isJSBased): | |
| (QScriptValuePrivate::isNumberBased): | |
| (QScriptValuePrivate::isStringBased): | |
| * qt/api/qtscriptglobal.h: Added. | |
| * qt/tests/qscriptengine/qscriptengine.pro: Added. | |
| * qt/tests/qscriptengine/tst_qscriptengine.cpp: Added. | |
| (tst_QScriptEngine::tst_QScriptEngine): | |
| (tst_QScriptEngine::~tst_QScriptEngine): | |
| (tst_QScriptEngine::init): | |
| (tst_QScriptEngine::cleanup): | |
| (tst_QScriptEngine::collectGarbage): | |
| (tst_QScriptEngine::evaluate): | |
| * qt/tests/qscriptvalue/qscriptvalue.pro: Added. | |
| * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: Added. | |
| (tst_QScriptValue::tst_QScriptValue): | |
| (tst_QScriptValue::~tst_QScriptValue): | |
| (tst_QScriptValue::init): | |
| (tst_QScriptValue::cleanup): | |
| (tst_QScriptValue::ctor): | |
| (tst_QScriptValue::toString_data): | |
| (tst_QScriptValue::toString): | |
| (tst_QScriptValue::copyConstructor_data): | |
| (tst_QScriptValue::copyConstructor): | |
| (tst_QScriptValue::assignOperator_data): | |
| (tst_QScriptValue::assignOperator): | |
| (tst_QScriptValue::dataSharing): | |
| (tst_QScriptValue::constructors_data): | |
| (tst_QScriptValue::constructors): | |
| (tst_QScriptValue::call): | |
| * qt/tests/tests.pri: Added. | |
| * qt/tests/tests.pro: Added. | |
| 2010-01-25 Dmitry Titov <dimich@chromium.org> | |
| Reviewed by David Levin. | |
| Fix Chromium Linux tests: the pthread functions on Linux produce segfault if they receive 0 thread handle. | |
| After r53714, we can have 0 thread handles passed to pthread_join and pthread_detach if corresponding threads | |
| were already terminated and their threadMap entries cleared. | |
| Add a 0 check. | |
| * wtf/ThreadingPthreads.cpp: | |
| (WTF::waitForThreadCompletion): | |
| (WTF::detachThread): | |
| 2010-01-24 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Maciej Stachowiak. | |
| Refactor JITStubs.cpp so that DEFINE_STUB_FUNCTION is only used once for each function | |
| https://bugs.webkit.org/show_bug.cgi?id=33866 | |
| Place the guard USE(JSVALUE32_64) inside the body of the DEFINE_STUB_FUNCTION | |
| macro for those functions that are always present. | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| 2010-01-22 Kevin Watters <kevinwatters@gmail.com> | |
| Reviewed by Kevin Ollivier. | |
| [wx] Remove the Bakefile build system, which is no longer being used. | |
| https://bugs.webkit.org/show_bug.cgi?id=34022 | |
| * JavaScriptCoreSources.bkl: Removed. | |
| * jscore.bkl: Removed. | |
| 2010-01-22 Steve Falkenburg <sfalken@apple.com> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=34025 | |
| Enable client-based Geolocation abstraction for Mac, Windows AppleWebKit targets. | |
| * Configurations/FeatureDefines.xcconfig: | |
| 2010-01-22 Dmitry Titov <dimich@chromium.org> | |
| Not reviewed, attempted Snow Leopard build fix. | |
| * wtf/ThreadingPthreads.cpp: Add a forward declaration of a function which is not 'static'. | |
| 2009-01-22 Dmitry Titov <dimich@chromium.org> | |
| Reviewed by Maciej Stachowiak. | |
| Fix the leak of ThreadIdentifiers in threadMap across threads. | |
| https://bugs.webkit.org/show_bug.cgi?id=32689 | |
| Test is added to DumpRenderTree.mm. | |
| * Android.mk: Added file ThreadIdentifierDataPthreads.(h|cpp) to build. | |
| * Android.v8.wtf.mk: Ditto. | |
| * GNUmakefile.am: Ditto. | |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: Ditto. | |
| * JavaScriptCore.gypi: Ditto. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. | |
| * wtf/ThreadIdentifierDataPthreads.cpp: Added. Contains custom implementation of thread-specific data that uses custom destructor. | |
| (WTF::ThreadIdentifierData::~ThreadIdentifierData): Removes the ThreadIdentifier from the threadMap. | |
| (WTF::ThreadIdentifierData::identifier): | |
| (WTF::ThreadIdentifierData::initialize): | |
| (WTF::ThreadIdentifierData::destruct): Custom thread-specific destructor. Resets the value for the key again to cause second invoke. | |
| (WTF::ThreadIdentifierData::initializeKeyOnceHelper): | |
| (WTF::ThreadIdentifierData::initializeKeyOnce): Need to use pthread_once since initialization may come on any thread(s). | |
| * wtf/ThreadIdentifierDataPthreads.h: Added. | |
| (WTF::ThreadIdentifierData::ThreadIdentifierData): | |
| * wtf/Threading.cpp: | |
| (WTF::threadEntryPoint): Move initializeCurrentThreadInternal to after the lock to make | |
| sure it is invoked when ThreadIdentifier is already established. | |
| * wtf/Threading.h: Rename setThreadNameInternal -> initializeCurrentThreadInternal since it does more then only set the name now. | |
| * wtf/ThreadingNone.cpp: | |
| (WTF::initializeCurrentThreadInternal): Ditto. | |
| * wtf/ThreadingWin.cpp: | |
| (WTF::initializeCurrentThreadInternal): Ditto. | |
| (WTF::initializeThreading): Ditto. | |
| * wtf/gtk/ThreadingGtk.cpp: | |
| (WTF::initializeCurrentThreadInternal): Ditto. | |
| * wtf/qt/ThreadingQt.cpp: | |
| (WTF::initializeCurrentThreadInternal): Ditto. | |
| * wtf/ThreadingPthreads.cpp: | |
| (WTF::establishIdentifierForPthreadHandle): | |
| (WTF::clearPthreadHandleForIdentifier): Make it not 'static' so the ~ThreadIdentifierData() in another file can call it. | |
| (WTF::initializeCurrentThreadInternal): Set the thread-specific data. The ThreadIdentifier is already established by creating thread. | |
| (WTF::waitForThreadCompletion): Remove call to clearPthreadHandleForIdentifier(threadID) since it is now done in ~ThreadIdentifierData(). | |
| (WTF::detachThread): Ditto. | |
| (WTF::currentThread): Use the thread-specific data to get the ThreadIdentifier. It's many times faster then Mutex-protected iteration through the map. | |
| Also, set the thread-specific data if called first time on the thread. | |
| 2010-01-21 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Alexey Proskuryakov. | |
| Add ThreadSpecific for ENABLE(SINGLE_THREADED) | |
| https://bugs.webkit.org/show_bug.cgi?id=33878 | |
| Implement ThreadSpecific with a simple getter/setter | |
| when ENABLE(SINGLE_THREADED) is true. | |
| Due to the change in https://bugs.webkit.org/show_bug.cgi?id=33236, | |
| an implementation of ThreadSpecific must be available to build WebKit. | |
| This causes a build failure for platforms without a proper | |
| ThreadSpecific implementation. | |
| * wtf/ThreadSpecific.h: | |
| (WTF::::ThreadSpecific): | |
| (WTF::::~ThreadSpecific): | |
| (WTF::::get): | |
| (WTF::::set): | |
| (WTF::::destroy): | |
| 2010-01-21 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Maciej Stachowiak. | |
| Add fastStrDup to FastMalloc | |
| https://bugs.webkit.org/show_bug.cgi?id=33937 | |
| The new string returned by fastStrDup is obtained with fastMalloc, | |
| and can be freed with fastFree. This makes the memory management | |
| more consistent because we don't need to keep strdup allocated pointers | |
| and free them with free(). Instead we can use fastFree everywhere. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::fastStrDup): | |
| * wtf/FastMalloc.h: | |
| 2010-01-21 Brady Eidson <beidson@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| history.back() for same-document history traversals isn't synchronous as the specification states. | |
| <rdar://problem/7535011> and https://bugs.webkit.org/show_bug.cgi?id=33538 | |
| * wtf/Platform.h: Add a "HISTORY_ALWAYS_ASYNC" enable and turn it on for Chromium. | |
| 2010-01-21 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Always create a prototype for automatically managed classes. | |
| This fixes some errors where prototype chains were not correctly hooked | |
| up, and also ensures that API classes work correctly with features like | |
| instanceof. | |
| * API/JSClassRef.cpp: | |
| (OpaqueJSClass::create): Cleaned up some of this code. Also changed it | |
| to always create a prototype class. | |
| * API/tests/testapi.c: | |
| (Derived2_class): | |
| (main): Fixed a null value crash in the exception checking code. | |
| * API/tests/testapi.js: Added some tests for the case where a prototype | |
| chain would not be hooked up correctly. | |
| 2010-01-21 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoff Garen. | |
| Force JSC to create a prototype chain for API classes with a | |
| parent class but no static functions. | |
| * API/JSClassRef.cpp: | |
| (OpaqueJSClass::create): | |
| 2010-01-21 Kent Hansen <kent.hansen@nokia.com> | |
| Reviewed by Geoffrey Garen. | |
| Object.getOwnPropertyDescriptor always returns undefined for JS API objects | |
| https://bugs.webkit.org/show_bug.cgi?id=33946 | |
| Ideally the getOwnPropertyDescriptor() reimplementation should return an | |
| access descriptor that wraps the property getter and setter callbacks, but | |
| that approach is much more involved than returning a value descriptor. | |
| Keep it simple for now. | |
| * API/JSCallbackObject.h: | |
| * API/JSCallbackObjectFunctions.h: | |
| (JSC::::getOwnPropertyDescriptor): | |
| * API/tests/testapi.js: | |
| 2010-01-20 Mark Rowe <mrowe@apple.com> | |
| Build fix. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::TCMalloc_PageHeap::initializeScavenger): Remove unnecessary function call. | |
| 2010-01-20 Mark Rowe <mrowe@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Use the inline i386 assembly for x86_64 as well rather than falling back to using pthread mutexes. | |
| * wtf/TCSpinLock.h: | |
| (TCMalloc_SpinLock::Lock): | |
| (TCMalloc_SpinLock::Unlock): | |
| (TCMalloc_SlowLock): | |
| 2010-01-20 Mark Rowe <mrowe@apple.com> | |
| Reviewed by Oliver Hunt. | |
| <rdar://problem/7215063> Use GCD instead of an extra thread for FastMalloc scavenging on platforms where it is supported | |
| Abstract the background scavenging slightly so that an alternate implementation that uses GCD can be used on platforms | |
| where it is supported. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::TCMalloc_PageHeap::init): | |
| (WTF::TCMalloc_PageHeap::initializeScavenger): | |
| (WTF::TCMalloc_PageHeap::signalScavenger): | |
| (WTF::TCMalloc_PageHeap::shouldContinueScavenging): | |
| (WTF::TCMalloc_PageHeap::Delete): | |
| (WTF::TCMalloc_PageHeap::periodicScavenge): | |
| * wtf/Platform.h: | |
| 2010-01-20 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| <rdar://problem/7562708> REGRESSION(53460): Heap::destroy may not run | |
| all destructors | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::freeBlocks): Instead of fully marking protected objects, | |
| just set their mark bits. This prevents protected objects from keeping | |
| unprotected objects alive. Destructor order is not guaranteed, so it's | |
| OK to destroy objects pointed to by protected objects before destroying | |
| protected objects. | |
| 2010-01-19 David Levin <levin@chromium.org> | |
| Reviewed by Oliver Hunt. | |
| CrossThreadCopier needs to support ThreadSafeShared better. | |
| https://bugs.webkit.org/show_bug.cgi?id=33698 | |
| * wtf/TypeTraits.cpp: Added tests for the new type traits. | |
| * wtf/TypeTraits.h: | |
| (WTF::IsSubclass): Determines if a class is a derived from another class. | |
| (WTF::IsSubclassOfTemplate): Determines if a class is a derived from a | |
| template class (with one parameter that is unknown). | |
| (WTF::RemoveTemplate): Reveals the type for a template parameter. | |
| 2010-01-20 Steve Falkenburg <sfalken@apple.com> | |
| Reviewed by Darin Adler and Adam Roben. | |
| Feature defines are difficult to maintain on Windows builds | |
| https://bugs.webkit.org/show_bug.cgi?id=33883 | |
| FeatureDefines.vsprops are now maintained in a way similar to | |
| Configurations/FeatureDefines.xcconfig, with the added advantage | |
| of having a single FeatureDefines file across all projects. | |
| * Configurations/FeatureDefines.xcconfig: Add comments about keeping feature definitions in sync. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add FeatureDefines.vsprops inherited property sheet. | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add FeatureDefines.vsprops inherited property sheet. | |
| 2010-01-20 Csaba Osztrogonác <ossy@webkit.org> | |
| [Qt] Unreviewed buildfix for r53547. | |
| * DerivedSources.pro: | |
| 2010-01-20 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Make extraCompilers for generated sources depend on their scripts | |
| * DerivedSources.pro: | |
| 2010-01-19 Brian Weinstein <bweinstein@apple.com> | |
| Reviewed by Tim Hatcher. | |
| When JavaScriptCore calls Debugger::Exception, have it pass a | |
| hasHandler variable that represents if exception is being handled | |
| in the same function (not in a parent on the call stack). | |
| This just adds a new parameter, no behavior is changed. | |
| * debugger/Debugger.h: | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::throwException): | |
| 2010-01-18 Maciej Stachowiak <mjs@apple.com> | |
| Reviewed by Adam Barth. | |
| Inline functions that are hot in DOM manipulation | |
| https://bugs.webkit.org/show_bug.cgi?id=33820 | |
| (3% speedup on Dromaeo DOM Core tests) | |
| * runtime/WeakGCMap.h: | |
| (JSC::::get): inline | |
| 2010-01-19 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Unreviewed build fix for JIT with RVCT. | |
| Remove IMPORT statement; cti_vm_throw is already defined in JITStubs.h. | |
| Remove extra ')'. | |
| * jit/JITStubs.cpp: | |
| (JSC::ctiVMThrowTrampoline): | |
| 2010-01-19 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| REGRESSION (52082): Crash on worker thread when reloading http://radnan.public.iastate.edu/procedural/ | |
| https://bugs.webkit.org/show_bug.cgi?id=33826 | |
| This bug was caused by a GC-protected object being destroyed early by | |
| Heap::destroy. Clients of the GC protect APIs (reasonably) expect pointers | |
| to GC-protected memory to be valid. | |
| The solution is to do two passes of tear-down in Heap::destroy. The first | |
| pass tears down all unprotected objects. The second pass ASSERTs that all | |
| previously protected objects are now unprotected, and then tears down | |
| all perviously protected objects. These two passes simulate the two passes | |
| that would have been required to free a protected object during normal GC. | |
| * API/JSContextRef.cpp: Removed some ASSERTs that have moved into Heap. | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::destroy): Moved ASSERTs to here. | |
| (JSC::Heap::freeBlock): Tidied up the use of didShrink by moving its | |
| setter to the function that does the shrinking. | |
| (JSC::Heap::freeBlocks): Implemented above algorithm. | |
| (JSC::Heap::shrinkBlocks): Tidied up the use of didShrink. | |
| 2010-01-19 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (build fix). | |
| Reverting r53455, breaks 2 javascriptcore tests. | |
| * API/JSContextRef.cpp: | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::destroy): | |
| (JSC::Heap::freeBlock): | |
| (JSC::Heap::freeBlocks): | |
| (JSC::Heap::shrinkBlocks): | |
| 2010-01-18 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (build fix). | |
| Revert r53454, since it causes much sadness in this world. | |
| * runtime/UString.cpp: | |
| (JSC::UString::spliceSubstringsWithSeparators): | |
| (JSC::UString::replaceRange): | |
| * runtime/UStringImpl.cpp: | |
| (JSC::UStringImpl::baseSharedBuffer): | |
| (JSC::UStringImpl::sharedBuffer): | |
| (JSC::UStringImpl::~UStringImpl): | |
| * runtime/UStringImpl.h: | |
| (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield): | |
| (JSC::UntypedPtrAndBitfield::asPtr): | |
| (JSC::UntypedPtrAndBitfield::operator&=): | |
| (JSC::UntypedPtrAndBitfield::operator|=): | |
| (JSC::UntypedPtrAndBitfield::operator&): | |
| (JSC::UStringImpl::create): | |
| (JSC::UStringImpl::cost): | |
| (JSC::UStringImpl::isIdentifier): | |
| (JSC::UStringImpl::setIsIdentifier): | |
| (JSC::UStringImpl::ref): | |
| (JSC::UStringImpl::deref): | |
| (JSC::UStringImpl::checkConsistency): | |
| (JSC::UStringImpl::UStringImpl): | |
| (JSC::UStringImpl::bufferOwnerString): | |
| (JSC::UStringImpl::bufferOwnership): | |
| (JSC::UStringImpl::isStatic): | |
| * wtf/StringHashFunctions.h: | |
| (WTF::stringHash): | |
| 2010-01-18 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| REGRESSION (52082): Crash on worker thread when reloading http://radnan.public.iastate.edu/procedural/ | |
| https://bugs.webkit.org/show_bug.cgi?id=33826 | |
| This bug was caused by a GC-protected object being destroyed early by | |
| Heap::destroy. Clients of the GC protect APIs (reasonably) expect pointers | |
| to GC-protected memory to be valid. | |
| The solution is to do two passes of tear-down in Heap::destroy. The first | |
| pass tears down all unprotected objects. The second pass ASSERTs that all | |
| previously protected objects are now unprotected, and then tears down | |
| all perviously protected objects. These two passes simulate the two passes | |
| that would have been required to free a protected object during normal GC. | |
| * API/JSContextRef.cpp: Removed some ASSERTs that have moved into Heap. | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::destroy): Moved ASSERTs to here. | |
| (JSC::Heap::freeBlock): Tidied up the use of didShrink by moving its | |
| setter to the function that does the shrinking. | |
| (JSC::Heap::freeBlocks): Implemented above algorithm. | |
| (JSC::Heap::shrinkBlocks): Tidied up the use of didShrink. | |
| 2010-01-18 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=33731 | |
| Remove UntypedPtrAndBitfield from UStringImpl (akin to PtrAndFlags). | |
| This break the OS X Leaks tool. Instead, free up some more bits from the refCount. | |
| * runtime/UStringImpl.cpp: | |
| (JSC::UStringImpl::sharedBuffer): | |
| (JSC::UStringImpl::~UStringImpl): | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringImpl::cost): | |
| (JSC::UStringImpl::checkConsistency): | |
| (JSC::UStringImpl::UStringImpl): | |
| (JSC::UStringImpl::bufferOwnerString): | |
| (JSC::UStringImpl::): | |
| * wtf/StringHashFunctions.h: | |
| (WTF::stringHash): | |
| 2010-01-18 Kent Tamura <tkent@chromium.org> | |
| Reviewed by Darin Adler. | |
| HTMLInputElement::valueAsDate setter support for type=month. | |
| https://bugs.webkit.org/show_bug.cgi?id=33021 | |
| Expose the following functions to be used by WebCore: | |
| - WTF::msToyear() | |
| - WTF::dayInYear() | |
| - WTF::monthFromDayInYear() | |
| - WTF::dayInMonthFromDayInYear() | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * wtf/DateMath.cpp: | |
| (WTF::msToYear): Remove "static inline". | |
| (WTF::dayInYear): Remove "static inline". | |
| (WTF::monthFromDayInYear): Remove "static inline". | |
| (WTF::dayInMonthFromDayInYear): Remove "static inline". | |
| * wtf/DateMath.h: Declare the above functions. | |
| 2010-01-18 Darin Adler <darin@apple.com> | |
| Fix build by reverting the previous change. | |
| * runtime/UString.h: Rolled out the FastAllocBase base class. | |
| It was making UString larger, and therefore JSString larger, | |
| and too big for a garbage collection cell. | |
| This raises the unpleasant possibility that many classes became | |
| larger because we added the FastAllocBase base class. I am | |
| worried about this, and it needs to be investigated. | |
| 2010-01-18 Zoltan Horvath <zoltan@webkit.org> | |
| Reviewed by Darin Adler. | |
| Allow custom memory allocation control for UString class | |
| https://bugs.webkit.org/show_bug.cgi?id=27831 | |
| Inherits the following class from FastAllocBase because it is | |
| instantiated by 'new' and no need to be copyable: | |
| class name - instantiated at: | |
| classs UString - JavaScriptCore/runtime/UString.cpp:160 | |
| * runtime/UString.h: | |
| 2010-01-18 Evan Cheng <evan.cheng@apple.com> | |
| Reviewed by Darin Adler. | |
| Add some ALWAYS_INLINE for key functions not inlined by some versions of GCC. | |
| rdar://problem/7553780 | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::getPropertySlot): ALWAYS_INLINE both overloads. | |
| * runtime/JSString.h: | |
| (JSC::JSString::JSString): ALWAYS_INLINE the version that takes a UString. | |
| * runtime/UString.h: | |
| (JSC::operator==): ALWAYS_INLINE the version that compares two UString objects. | |
| 2010-01-18 Csaba Osztrogonác <ossy@webkit.org> | |
| Reviewed by Darin Adler. | |
| Delete dftables-xxxxxxxx.in files automatically. | |
| https://bugs.webkit.org/show_bug.cgi?id=33796 | |
| * pcre/dftables: unlink unnecessary temporary file. | |
| 2010-01-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Force qmake to generate a single makefile for DerivedSources.pro | |
| * DerivedSources.pro: | |
| 2010-01-18 Csaba Osztrogonác <ossy@webkit.org> | |
| Rubber-stamped by Gustavo Noronha Silva. | |
| Rolling out r53391 and r53392 because of random crashes on buildbots. | |
| https://bugs.webkit.org/show_bug.cgi?id=33731 | |
| * bytecode/CodeBlock.h: | |
| (JSC::CallLinkInfo::seenOnce): | |
| (JSC::CallLinkInfo::setSeen): | |
| (JSC::MethodCallLinkInfo::MethodCallLinkInfo): | |
| (JSC::MethodCallLinkInfo::seenOnce): | |
| (JSC::MethodCallLinkInfo::setSeen): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::unlinkCall): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::patchMethodCallProto): | |
| * runtime/UString.cpp: | |
| (JSC::UString::spliceSubstringsWithSeparators): | |
| (JSC::UString::replaceRange): | |
| * runtime/UString.h: | |
| * runtime/UStringImpl.cpp: | |
| (JSC::UStringImpl::baseSharedBuffer): | |
| (JSC::UStringImpl::sharedBuffer): | |
| (JSC::UStringImpl::~UStringImpl): | |
| * runtime/UStringImpl.h: | |
| (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield): | |
| (JSC::UntypedPtrAndBitfield::asPtr): | |
| (JSC::UntypedPtrAndBitfield::operator&=): | |
| (JSC::UntypedPtrAndBitfield::operator|=): | |
| (JSC::UntypedPtrAndBitfield::operator&): | |
| (JSC::UStringImpl::create): | |
| (JSC::UStringImpl::cost): | |
| (JSC::UStringImpl::isIdentifier): | |
| (JSC::UStringImpl::setIsIdentifier): | |
| (JSC::UStringImpl::ref): | |
| (JSC::UStringImpl::deref): | |
| (JSC::UStringImpl::checkConsistency): | |
| (JSC::UStringImpl::UStringImpl): | |
| (JSC::UStringImpl::bufferOwnerString): | |
| (JSC::UStringImpl::bufferOwnership): | |
| (JSC::UStringImpl::isStatic): | |
| * wtf/StringHashFunctions.h: | |
| (WTF::stringHash): | |
| 2010-01-18 Simon Hausmann <simon.hausmann@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| Fix the build with strict gcc and RVCT versions: It's not legal to cast a | |
| pointer to a function to a void* without an intermediate cast to a non-pointer | |
| type. A cast to a ptrdiff_t inbetween fixes it. | |
| * runtime/JSString.h: | |
| (JSC::Fiber::JSString): | |
| 2010-01-15 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=33731 | |
| Remove UntypedPtrAndBitfield from UStringImpl (akin to PtrAndFlags). | |
| This break the OS X Leaks tool. Instead, free up some more bits from the refCount. | |
| * runtime/UStringImpl.cpp: | |
| (JSC::UStringImpl::sharedBuffer): | |
| (JSC::UStringImpl::~UStringImpl): | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringImpl::cost): | |
| (JSC::UStringImpl::checkConsistency): | |
| (JSC::UStringImpl::UStringImpl): | |
| (JSC::UStringImpl::bufferOwnerString): | |
| (JSC::UStringImpl::): | |
| * wtf/StringHashFunctions.h: | |
| (WTF::stringHash): | |
| 2010-01-15 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=33731 | |
| Remove uses of PtrAndFlags from JIT data stuctures. | |
| These break the OS X Leaks tool. Free up a bit in CallLinkInfo, and invalid | |
| permutation of pointer states in MethodCallLinkInfo to represent the removed bits. | |
| * bytecode/CodeBlock.h: | |
| (JSC::CallLinkInfo::seenOnce): | |
| (JSC::CallLinkInfo::setSeen): | |
| (JSC::MethodCallLinkInfo::MethodCallLinkInfo): | |
| (JSC::MethodCallLinkInfo::seenOnce): | |
| (JSC::MethodCallLinkInfo::setSeen): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::unlinkCall): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::patchMethodCallProto): | |
| * runtime/UString.h: | |
| 2010-01-16 Maciej Stachowiak <mjs@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Cache JS string values made from DOM strings (Dromaeo speedup) | |
| https://bugs.webkit.org/show_bug.cgi?id=33768 | |
| <rdar://problem/7353576> | |
| * runtime/JSString.h: | |
| (JSC::jsStringWithFinalizer): Added new mechanism for a string to have an optional | |
| finalizer callback, for the benefit of weak-referencing caches. | |
| (JSC::): | |
| (JSC::Fiber::JSString): | |
| (JSC::Fiber::~JSString): | |
| * runtime/JSString.cpp: | |
| (JSC::JSString::resolveRope): Clear fibers so this doesn't look like a string with a finalizer. | |
| * runtime/WeakGCMap.h: Include "Collector.h" to make this header includable by itself. | |
| 2010-01-15 Sam Weinig <sam@webkit.org> | |
| Reviewed by Maciej Stachowiak. | |
| Fix for <rdar://problem/7548432> | |
| Add ALWAYS_INLINE to jsLess for a 1% speedup on llvm-gcc. | |
| * runtime/Operations.h: | |
| (JSC::jsLess): | |
| 2010-01-14 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| REGRESISON: Google maps buttons not working properly | |
| https://bugs.webkit.org/show_bug.cgi?id=31871 | |
| REGRESSION(r52948): JavaScript exceptions thrown on Google Maps when | |
| getting directions for a second time | |
| https://bugs.webkit.org/show_bug.cgi?id=33446 | |
| SunSpider and v8 report no change. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::tryCacheGetByID): Update our cached offset in case | |
| flattening the dictionary changed any of its offsets. | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::tryCacheGetByID): | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * runtime/Operations.h: | |
| (JSC::normalizePrototypeChain): ditto | |
| 2010-01-14 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=33705 | |
| UStringImpl::create() should use internal storage | |
| When creating a UStringImpl copying of a UChar*, we can use an internal buffer, | |
| by calling UStringImpl::tryCreateUninitialized(). | |
| Also, remove duplicate of copyChars from JSString, call UStringImpl's version. | |
| Small (max 0.5%) progression on Sunspidey. | |
| * runtime/JSString.cpp: | |
| (JSC::JSString::resolveRope): | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringImpl::create): | |
| 2010-01-14 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| Make naming & behaviour of UString[Impl] methods more consistent. | |
| https://bugs.webkit.org/show_bug.cgi?id=33702 | |
| UString::create() creates a copy of the UChar* passed, but UStringImpl::create() assumes | |
| that it should assume ownership of the provided buffer (with UString::createNonCopying() | |
| and UStringImpl::createCopying() providing the alternate behaviours). Unify on create() | |
| taking a copy of the provided buffer. For non-copying cases, use the name 'adopt', and | |
| make this method take a Vector<UChar>&. For cases where non-copying construction was being | |
| used, other than from a Vector<UChar>, change the code to allocate the storage along with | |
| the UStringImpl using UStringImpl::createUninitialized(). (The adopt() method also more | |
| closely matches that of WebCore::StringImpl). | |
| Also, UString::createUninitialized() and UStringImpl::createUninitialized() have incompatible | |
| behaviours, in that the UString form sets the provided UChar* to a null or non-null value to | |
| indicate success or failure, but UStringImpl uses the returned PassRefPtr<UStringImpl> to | |
| indicate when allocation has failed (potentially leaving the output Char* uninitialized). | |
| This is also incompatible with WebCore::StringImpl's behaviour, in that | |
| StringImpl::createUninitialized() will CRASH() if unable to allocate. Some uses of | |
| createUninitialized() in JSC are unsafe, since they do not test the result for null. | |
| UStringImpl's indication is preferable, since we may want a successful call to set the result | |
| buffer to 0 (specifically, StringImpl returns 0 for the buffer where createUninitialized() | |
| returns the empty string, which seems reasonable to catch bugs early). UString's method | |
| cannot support UStringImpl's behaviour directly, since it returns an object rather than a | |
| pointer. | |
| - remove UString::createUninitialized(), replace with calls to UStringImpl::createUninitialized() | |
| - create a UStringImpl::tryCreateUninitialized() form UStringImpl::createUninitialized(), | |
| with current behaviour, make createUninitialized() crash on failure to allocate. | |
| - make cases in JSC that do not check the result call createUninitialized(), and cases that do | |
| check call tryCreateUninitialized(). | |
| Rename computedHash() to existingHash(), to bring this in line wih WebCore::StringImpl. | |
| * API/JSClassRef.cpp: | |
| (OpaqueJSClassContextData::OpaqueJSClassContextData): | |
| * JavaScriptCore.exp: | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::arrayProtoFuncToString): | |
| * runtime/Identifier.cpp: | |
| (JSC::CStringTranslator::translate): | |
| (JSC::UCharBufferTranslator::translate): | |
| * runtime/JSString.cpp: | |
| (JSC::JSString::resolveRope): | |
| * runtime/Lookup.cpp: | |
| (JSC::HashTable::createTable): | |
| * runtime/Lookup.h: | |
| (JSC::HashTable::entry): | |
| * runtime/StringBuilder.h: | |
| (JSC::StringBuilder::release): | |
| * runtime/StringConstructor.cpp: | |
| (JSC::stringFromCharCodeSlowCase): | |
| * runtime/StringPrototype.cpp: | |
| (JSC::substituteBackreferencesSlow): | |
| (JSC::stringProtoFuncToLowerCase): | |
| (JSC::stringProtoFuncToUpperCase): | |
| (JSC::stringProtoFuncFontsize): | |
| (JSC::stringProtoFuncLink): | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::despecifyDictionaryFunction): | |
| (JSC::Structure::get): | |
| (JSC::Structure::despecifyFunction): | |
| (JSC::Structure::put): | |
| (JSC::Structure::remove): | |
| (JSC::Structure::insertIntoPropertyMapHashTable): | |
| (JSC::Structure::checkConsistency): | |
| * runtime/Structure.h: | |
| (JSC::Structure::get): | |
| * runtime/StructureTransitionTable.h: | |
| (JSC::StructureTransitionTableHash::hash): | |
| * runtime/UString.cpp: | |
| (JSC::createRep): | |
| (JSC::UString::UString): | |
| (JSC::UString::spliceSubstringsWithSeparators): | |
| (JSC::UString::replaceRange): | |
| (JSC::UString::operator=): | |
| * runtime/UString.h: | |
| (JSC::UString::adopt): | |
| (JSC::IdentifierRepHash::hash): | |
| (JSC::makeString): | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringImpl::adopt): | |
| (JSC::UStringImpl::create): | |
| (JSC::UStringImpl::createUninitialized): | |
| (JSC::UStringImpl::tryCreateUninitialized): | |
| (JSC::UStringImpl::existingHash): | |
| 2010-01-13 Kent Hansen <kent.hansen@nokia.com> | |
| Reviewed by Oliver Hunt. | |
| JSON.stringify and JSON.parse needlessly process properties in the prototype chain | |
| https://bugs.webkit.org/show_bug.cgi?id=33053 | |
| * runtime/JSONObject.cpp: | |
| (JSC::Stringifier::Holder::appendNextProperty): | |
| (JSC::Walker::walk): | |
| 2010-01-13 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (buildfix). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-01-13 Alexey Proskuryakov <ap@apple.com> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=33641 | |
| Assertion failure in Lexer.cpp if input stream ends while in string escape | |
| Test: fast/js/end-in-string-escape.html | |
| * parser/Lexer.cpp: (JSC::Lexer::lex): Bail out quickly on end of stream, not giving the | |
| assertion a chance to fire. | |
| 2010-01-13 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (buildfix). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-01-13 Gavin Barraclough <barraclough@apple.com> | |
| Rubber stamped by Sam Weinig & Darin Adler. | |
| Three quick fixes to UStringImpl. | |
| - The destroy() method can be switched back to a normal destructor; since we've switched | |
| the way we protect static strings to be using an odd ref-count the destroy() won't abort. | |
| - The cost() calculation logic was wrong. If you have multiple JSStrings wrapping substrings | |
| of a base string, they would each report the full cost of the base string to the heap. | |
| Instead we should only be reporting once for the base string. | |
| - Remove the overloaded new operator calling fastMalloc, replace this with a 'using' to pick | |
| up the implementation from the parent class. | |
| * JavaScriptCore.exp: | |
| * runtime/UStringImpl.cpp: | |
| (JSC::UStringImpl::~UStringImpl): | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringImpl::cost): | |
| (JSC::UStringImpl::deref): | |
| 2010-01-13 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Split the build process in two different .pro files. | |
| This allows qmake to be run once all source files are available. | |
| * DerivedSources.pro: Added. | |
| * JavaScriptCore.pri: Moved source generation to DerivedSources.pro | |
| * pcre/pcre.pri: Moved source generation to DerivedSources.pro | |
| 2010-01-12 Kent Hansen <kent.hansen@nokia.com> | |
| Reviewed by Geoffrey Garen. | |
| [ES5] Implement Object.getOwnPropertyNames | |
| https://bugs.webkit.org/show_bug.cgi?id=32242 | |
| Add an extra argument to getPropertyNames() and getOwnPropertyNames() | |
| (and all reimplementations thereof) that indicates whether non-enumerable | |
| properties should be added. | |
| * API/JSCallbackObject.h: | |
| * API/JSCallbackObjectFunctions.h: | |
| (JSC::::getOwnPropertyNames): | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * debugger/DebuggerActivation.cpp: | |
| (JSC::DebuggerActivation::getOwnPropertyNames): | |
| * debugger/DebuggerActivation.h: | |
| * runtime/Arguments.cpp: | |
| (JSC::Arguments::getOwnPropertyNames): | |
| * runtime/Arguments.h: | |
| * runtime/CommonIdentifiers.h: | |
| * runtime/JSArray.cpp: | |
| (JSC::JSArray::getOwnPropertyNames): | |
| * runtime/JSArray.h: | |
| * runtime/JSByteArray.cpp: | |
| (JSC::JSByteArray::getOwnPropertyNames): | |
| * runtime/JSByteArray.h: | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::getOwnPropertyNames): | |
| * runtime/JSFunction.h: | |
| * runtime/JSNotAnObject.cpp: | |
| (JSC::JSNotAnObject::getOwnPropertyNames): | |
| * runtime/JSNotAnObject.h: | |
| * runtime/JSObject.cpp: | |
| (JSC::getClassPropertyNames): | |
| (JSC::JSObject::getPropertyNames): | |
| (JSC::JSObject::getOwnPropertyNames): | |
| * runtime/JSObject.h: | |
| * runtime/JSVariableObject.cpp: | |
| (JSC::JSVariableObject::getOwnPropertyNames): | |
| * runtime/JSVariableObject.h: | |
| * runtime/ObjectConstructor.cpp: | |
| (JSC::ObjectConstructor::ObjectConstructor): | |
| (JSC::objectConstructorGetOwnPropertyNames): | |
| * runtime/RegExpMatchesArray.h: | |
| (JSC::RegExpMatchesArray::getOwnPropertyNames): | |
| * runtime/StringObject.cpp: | |
| (JSC::StringObject::getOwnPropertyNames): | |
| * runtime/StringObject.h: | |
| * runtime/Structure.cpp: Rename getEnumerablePropertyNames() to getPropertyNames(), which takes an extra argument. | |
| (JSC::Structure::getPropertyNames): | |
| * runtime/Structure.h: | |
| (JSC::): | |
| 2010-01-12 Alexey Proskuryakov <ap@apple.com> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=33540 | |
| Make it possible to build in debug mode with assertions disabled | |
| * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): | |
| * runtime/Identifier.cpp: (JSC::Identifier::checkSameIdentifierTable): | |
| * wtf/FastMalloc.cpp: | |
| * wtf/HashTable.h: (WTF::HashTableConstIterator::checkValidity): | |
| * yarr/RegexCompiler.cpp: (JSC::Yarr::compileRegex): | |
| 2009-11-23 Yong Li <yoli@rim.com> | |
| Reviewed by Adam Treat. | |
| Make GIF decoder support down-sampling | |
| https://bugs.webkit.org/show_bug.cgi?id=31806 | |
| * platform/image-decoders/ImageDecoder.cpp: | |
| (WebCore::ImageDecoder::upperBoundScaledY): | |
| (WebCore::ImageDecoder::lowerBoundScaledY): | |
| * platform/image-decoders/ImageDecoder.h: | |
| (WebCore::RGBA32Buffer::scaledRect): | |
| (WebCore::RGBA32Buffer::setScaledRect): | |
| (WebCore::ImageDecoder::scaledSize): | |
| * platform/image-decoders/gif/GIFImageDecoder.cpp: | |
| (WebCore::GIFImageDecoder::sizeNowAvailable): | |
| (WebCore::GIFImageDecoder::initFrameBuffer): | |
| (WebCore::copyOnePixel): | |
| (WebCore::GIFImageDecoder::haveDecodedRow): | |
| (WebCore::GIFImageDecoder::frameComplete): | |
| 2010-01-12 Adam Barth <abarth@webkit.org> | |
| Reviewed by Eric Seidel. | |
| ecma/Date/15.9.5.12-1.js fails every night at midnight | |
| https://bugs.webkit.org/show_bug.cgi?id=28041 | |
| Change the test to use a concrete time instead of "now". | |
| * tests/mozilla/ecma/Date/15.9.5.10-1.js: | |
| * tests/mozilla/ecma/Date/15.9.5.12-1.js: | |
| 2010-01-11 Csaba Osztrogonác <ossy@webkit.org> | |
| Reviewed by Ariya Hidayat. | |
| [Qt] Enable JIT and YARR_JIT if (CPU(X86_64) && OS(LINUX) && GCC_VERSION >= 40100) | |
| * wtf/Platform.h: | |
| 2010-01-11 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Alexey Proskuryakov. | |
| https://bugs.webkit.org/show_bug.cgi?id=33481 | |
| Uninitialized data members in ArrayStorage | |
| SunSpider reports no change. | |
| * runtime/JSArray.cpp: | |
| (JSC::JSArray::JSArray): Initialize missing data members in the two cases | |
| where we don't use fastZeroedMalloc, so it doesn't happen automatically. | |
| 2010-01-11 Steve Falkenburg <sfalken@apple.com> | |
| Reviewed by Sam Weinig. | |
| https://bugs.webkit.org/show_bug.cgi?id=33480 | |
| Improve debugging reliability for WTF on Windows. | |
| Store WTF static library's PDB file into a better location. | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
| 2010-01-11 Steve Falkenburg <sfalken@apple.com> | |
| Windows build fix. | |
| Remove extraneous entries from def file causing build warning. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-01-10 Kent Hansen <kent.hansen@nokia.com> | |
| Reviewed by Darin Adler. | |
| RegExp.prototype.toString returns "//" for empty regular expressions | |
| https://bugs.webkit.org/show_bug.cgi?id=33319 | |
| "//" starts a single-line comment, hence "/(?:)/" should be used, according to ECMA. | |
| * runtime/RegExpPrototype.cpp: | |
| (JSC::regExpProtoFuncToString): | |
| * tests/mozilla/ecma_2/RegExp/properties-001.js: | |
| (AddRegExpCases): | |
| * tests/mozilla/js1_2/regexp/toString.js: | |
| Update relevant Mozilla tests (Mozilla has had this behavior since November 2003). | |
| 2010-01-10 Darin Adler <darin@apple.com> | |
| * tests/mozilla/ecma/Array/15.4.1.1.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/Array/15.4.1.2.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/Array/15.4.2.1-1.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/Array/15.4.2.2-1.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/Array/15.4.2.2-2.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/Array/15.4.2.3.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/Array/15.4.3.2.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/Array/15.4.3.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/Array/15.4.4.1.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/Array/15.4.4.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/LexicalConventions/7.7.4.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/Math/15.8.2.13.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/Math/15.8.2.16.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/Math/15.8.2.18.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/Math/15.8.2.2.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/Math/15.8.2.4.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/Math/15.8.2.5.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/Math/15.8.2.7.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/String/15.5.1.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/String/15.5.2.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/String/15.5.3.1-3.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/String/15.5.3.1-4.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/String/15.5.3.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/TypeConversion/9.5-2.js: Added property allow-tabs. | |
| * tests/mozilla/ecma/jsref.js: Modified property allow-tabs. | |
| * tests/mozilla/ecma/shell.js: Modified property allow-tabs. | |
| * tests/mozilla/ecma_2/LexicalConventions/keywords-001.js: Added property allow-tabs. | |
| * tests/mozilla/ecma_2/RegExp/exec-001.js: Added property allow-tabs. | |
| * tests/mozilla/ecma_2/String/match-004.js: Added property allow-tabs. | |
| * tests/mozilla/ecma_2/String/replace-001.js: Added property allow-tabs. | |
| * tests/mozilla/ecma_2/String/split-002.js: Added property allow-tabs. | |
| * tests/mozilla/ecma_2/jsref.js: Modified property allow-tabs. | |
| * tests/mozilla/ecma_2/shell.js: Added property allow-tabs. | |
| * tests/mozilla/ecma_3/Date/shell.js: Modified property allow-tabs. | |
| * tests/mozilla/ecma_3/Exceptions/regress-181654.js: Added property allow-tabs. | |
| * tests/mozilla/ecma_3/RegExp/regress-209067.js: Added property allow-tabs. | |
| * tests/mozilla/ecma_3/RegExp/regress-85721.js: Added property allow-tabs. | |
| * tests/mozilla/importList.html: Added property allow-tabs. | |
| * tests/mozilla/js1_1/shell.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/Array/general1.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/Array/general2.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/Array/slice.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/Array/splice1.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/Array/splice2.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/Objects/toString-001.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/String/charCodeAt.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/String/concat.js: Modified property allow-tabs. | |
| * tests/mozilla/js1_2/String/match.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/String/slice.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/function/Function_object.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/function/Number.js: Modified property allow-tabs. | |
| * tests/mozilla/js1_2/function/String.js: Modified property allow-tabs. | |
| * tests/mozilla/js1_2/function/nesting.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/function/regexparg-1.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/function/regexparg-2-n.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/jsref.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/operator/equality.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/operator/strictEquality.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/RegExp_dollar_number.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/RegExp_input.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/RegExp_input_as_array.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/RegExp_lastIndex.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/RegExp_lastMatch.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/RegExp_lastMatch_as_array.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/RegExp_lastParen.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/RegExp_lastParen_as_array.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/RegExp_leftContext.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/RegExp_leftContext_as_array.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/RegExp_multiline.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/RegExp_multiline_as_array.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/RegExp_object.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/RegExp_rightContext.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/RegExp_rightContext_as_array.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/alphanumeric.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/asterisk.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/backslash.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/backspace.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/beginLine.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/character_class.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/compile.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/control_characters.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/digit.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/dot.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/endLine.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/everything.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/exec.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/flags.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/global.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/hexadecimal.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/ignoreCase.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/interval.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/octal.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/parentheses.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/plus.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/question_mark.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/simple_form.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/source.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/special_characters.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/string_replace.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/string_search.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/string_split.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/test.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/toString.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/vertical_bar.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/whitespace.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/regexp/word_boundary.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/shell.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/statements/break.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/statements/continue.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/statements/do_while.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/statements/switch.js: Added property allow-tabs. | |
| * tests/mozilla/js1_2/statements/switch2.js: Added property allow-tabs. | |
| * tests/mozilla/js1_3/shell.js: Added property allow-tabs. | |
| * tests/mozilla/js1_4/shell.js: Added property allow-tabs. | |
| * tests/mozilla/js1_5/Regress/regress-111557.js: Added property allow-tabs. | |
| * tests/mozilla/js1_5/Regress/regress-216320.js: Added property allow-tabs. | |
| * tests/mozilla/menuhead.html: Added property allow-tabs. | |
| * tests/mozilla/mklistpage.pl: Added property allow-tabs. | |
| * tests/mozilla/runtests.pl: Added property allow-tabs. | |
| 2010-01-08 Daniel Bates <dbates@webkit.org> | |
| Reviewed by Adam Barth. | |
| https://bugs.webkit.org/show_bug.cgi?id=33417 | |
| Cleans up style errors exposed by the patch for bug #33198. | |
| Moreover, fixes all "Weird number of spaces at line-start. Are you using a 4-space indent?" | |
| errors reported by check-webkit-style. | |
| No functionality was changed. So, no new tests. | |
| * wtf/Platform.h: | |
| 2010-01-08 Kent Hansen <kent.hansen@nokia.com> | |
| Reviewed by Eric Seidel. | |
| Don't store RegExp flags string representation | |
| https://bugs.webkit.org/show_bug.cgi?id=33321 | |
| It's unused; the string representation is reconstructed from flags. | |
| * runtime/RegExp.cpp: | |
| (JSC::RegExp::RegExp): | |
| * runtime/RegExp.h: | |
| 2010-01-08 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Memory use grows grows possibly unbounded in this JavaScript Array test case | |
| https://bugs.webkit.org/show_bug.cgi?id=31675 | |
| This fixes one observed bug in this test case, which is that | |
| arrays don't report extra cost for the sparse value maps. | |
| SunSpider reports a small speedup. | |
| * runtime/JSArray.cpp: | |
| (JSC::JSArray::putSlowCase): Report extra memory cost for | |
| the sparse value map. | |
| * runtime/JSArray.h: | |
| 2010-01-08 Yong Li <yoli@rim.com> | |
| Reviewed by Darin Adler. | |
| Remove unnecessary #include from FastMalloc.cpp | |
| https://bugs.webkit.org/show_bug.cgi?id=33393 | |
| * wtf/FastMalloc.cpp: | |
| 2010-01-08 Eric Seidel <eric@webkit.org> | |
| No review, rolling out r52983. | |
| http://trac.webkit.org/changeset/52983 | |
| https://bugs.webkit.org/show_bug.cgi?id=33321 | |
| Broke 59 JavaScriptCore tests. I don't think Kent knew about | |
| run-javascriptcore-tests. Sadly neither does the commit-bot, | |
| yet. | |
| * runtime/RegExp.cpp: | |
| (JSC::RegExp::RegExp): | |
| * runtime/RegExp.h: | |
| (JSC::RegExp::flags): | |
| 2010-01-08 Eric Seidel <eric@webkit.org> | |
| No review, rolling out r52981. | |
| http://trac.webkit.org/changeset/52981 | |
| https://bugs.webkit.org/show_bug.cgi?id=33319 | |
| Caused two JS tests to start failing: | |
| ecma_2/RegExp/properties-001.js and js1_2/regexp/toString.js | |
| * runtime/RegExpPrototype.cpp: | |
| (JSC::regExpProtoFuncToString): | |
| 2010-01-08 Kent Hansen <kent.hansen@nokia.com> | |
| Reviewed by Darin Adler. | |
| Don't store RegExp flags string representation | |
| https://bugs.webkit.org/show_bug.cgi?id=33321 | |
| It's unused; the string representation is reconstructed from flags. | |
| * runtime/RegExp.cpp: | |
| (JSC::RegExp::RegExp): | |
| * runtime/RegExp.h: | |
| 2010-01-08 Kent Hansen <kent.hansen@nokia.com> | |
| Reviewed by Darin Adler. | |
| RegExp.prototype.toString returns "//" for empty regular expressions | |
| https://bugs.webkit.org/show_bug.cgi?id=33319 | |
| "//" starts a single-line comment, hence "/(?:)/" should be used, according to ECMA. | |
| * runtime/RegExpPrototype.cpp: | |
| (JSC::regExpProtoFuncToString): | |
| 2010-01-08 Norbert Leser <norbert.leser@nokia.com> | |
| Reviewed by Darin Adler. | |
| RVCT compiler with "-Otime -O3" optimization tries to optimize out | |
| inline new'ed pointers that are passed as arguments. | |
| Proposed patch assigns new'ed pointer explicitly outside function call. | |
| https://bugs.webkit.org/show_bug.cgi?id=33084 | |
| * API/JSClassRef.cpp: | |
| (OpaqueJSClass::OpaqueJSClass): | |
| (OpaqueJSClassContextData::OpaqueJSClassContextData): | |
| 2010-01-08 Gabor Loki <loki@webkit.org> | |
| Reviewed by Gavin Barraclough. | |
| Remove an unnecessary cacheFlush from ARM_TRADITIONAL JIT | |
| https://bugs.webkit.org/show_bug.cgi?id=33203 | |
| * assembler/ARMAssembler.cpp: Remove obsolete linkBranch function. | |
| (JSC::ARMAssembler::executableCopy): Inline a clean linkBranch code. | |
| * assembler/ARMAssembler.h: | |
| (JSC::ARMAssembler::getLdrImmAddress): Use inline function. | |
| (JSC::ARMAssembler::getLdrImmAddressOnPool): Ditto. | |
| (JSC::ARMAssembler::patchPointerInternal): Remove an unnecessary cacheFlush. | |
| (JSC::ARMAssembler::linkJump): Use patchPointerInternal instead of linkBranch. | |
| (JSC::ARMAssembler::linkCall): Ditto. | |
| (JSC::ARMAssembler::relinkCall): Ditto. | |
| 2010-01-07 Gabor Loki <loki@webkit.org> | |
| Reviewed by Gavin Barraclough. | |
| Build fix for JSVALUE32 when ENABLE_JIT_OPTIMIZE* are disabled | |
| https://bugs.webkit.org/show_bug.cgi?id=33311 | |
| Move compileGetDirectOffset function to common part of JSVALUE32 | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::compileGetDirectOffset): | |
| 2010-01-07 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Maciej Stachowiak. | |
| Allow call sites to determine if ASSERT_* and LOG_* macros are operational | |
| https://bugs.webkit.org/show_bug.cgi?id=33020 | |
| * wtf/Assertions.h: Set ASSERT_MSG_DISABLED, FATAL_DISABLED, | |
| ERROR_DISABLED, LOG_DISABLED to 1 if the compiler does not support | |
| variadic macros. Refactor for better readibility. | |
| 2010-01-07 Daniel Bates <dbates@rim.com> | |
| Reviewed by Eric Seidel. | |
| https://bugs.webkit.org/show_bug.cgi?id=32987 | |
| Added ENABLE_XHTMLMP flag. Disabled by default. | |
| * Configurations/FeatureDefines.xcconfig: | |
| 2010-01-07 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Gavin Barraclough. | |
| [Symbian] Port ARM traditional JIT Trampolines to RVCT | |
| https://bugs.webkit.org/show_bug.cgi?id=30552 | |
| Take the GCC implementation and mechanically convert | |
| it to RVCT syntax. | |
| Use 'bx rX' instead of 'mov pc, rX' when it is available. | |
| Developed in cooperation with Iain Campbell and Gabor Loki. | |
| * JavaScriptCore.pri: Extra step to generate RVCT stubs. The | |
| script generation intentionally executed all the time not just | |
| for RVCT targets. | |
| * create_rvct_stubs: Added. Perl script to expand precompiler macros | |
| for RVCT assembler - the template is defined in JITStubs.cpp. | |
| * jit/JITStubs.cpp: | |
| (JSC::ctiTrampoline): | |
| (JSC::ctiVMThrowTrampoline): | |
| (JSC::ctiOpThrowNotCaught): | |
| 2010-01-07 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Fix a crash seen on the buildbots. | |
| * runtime/JSGlobalObject.cpp: | |
| (JSC::JSGlobalObject::init): Disable specific function tracking here, | |
| instead of in WebCore, to ensure that the disabling happens before a | |
| specific function can be registered. | |
| 2010-01-07 Alexey Proskuryakov <ap@apple.com> | |
| Mac build fix. | |
| * JavaScriptCore.exp: Export new JSGlobalData static data members. | |
| 2010-01-07 Alexey Proskuryakov <ap@apple.com> | |
| Reviewed by Geoffrey Garen. | |
| https://bugs.webkit.org/show_bug.cgi?id=33057 | |
| REGRESSION(r49365): typeof(xhr.responseText) != "string" in Windows | |
| <rdar://problem/7296920> REGRESSION: WebKit fails to start PeaceKeeper benchmark | |
| Test: fast/js/webcore-string-comparison.html | |
| In r49365, some code was moved from JSString.cpp to JSString.h, and as a result, WebCore | |
| got a way to directly instantiate JSStrings over DLL borders. Since vftable for JSString was | |
| not exported, objects created from WebCore got a different vptr, and JavaScriptCore | |
| optimizations that relied on vptr of all JSString objects being equal failed. | |
| * config.h: Added a JS_EXPORTCLASS macro for exporting classes. It's currently the same as | |
| JS_EXPORTDATA, but it clearly needed a new name. | |
| * runtime/InitializeThreading.cpp: | |
| (JSC::initializeThreadingOnce): | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::storeVPtrs): | |
| (JSC::JSGlobalData::JSGlobalData): | |
| (JSC::JSGlobalData::createNonDefault): | |
| (JSC::JSGlobalData::create): | |
| (JSC::JSGlobalData::sharedInstance): | |
| * runtime/JSGlobalData.h: | |
| Store vptrs just once, no need to repeatedly pick and copy them. This makes it possible to | |
| assert vptr correctness in object destructors (which don't have access to JSGlobalData, | |
| and even Heap::heap(this) will fail for fake objects created from storeVPtrs()). | |
| * runtime/JSArray.cpp: (JSC::JSArray::~JSArray): Assert that vptr is what we expect it to be. | |
| It's important to assert in destructor, because MSVC changes the vptr after constructor | |
| is invoked. | |
| * runtime/JSByteArray.cpp: (JSC::JSByteArray::~JSByteArray): Ditto. | |
| * runtime/JSByteArray.h: Ditto. | |
| * runtime/JSFunction.h: Ditto. | |
| * runtime/JSFunction.cpp: (JSC::JSFunction::~JSFunction): Ditto. | |
| * runtime/JSCell.h: (JSC::JSCell::setVPtr): Added a method to substitute vptr for another | |
| one. | |
| * runtime/JSString.h: Export JSString class together with its vftable, and tell other | |
| libraries tp import it. This is needed on platforms that have a separate JavaScriptCore | |
| dynamic library - and on Mac, we already did the export via JavaScriptCore.exp. | |
| (JSC::JSString::~JSString): Assert tha vptr is what we expect it to be. | |
| (JSC::fixupVPtr): Store a previously saved primary vftable pointer (do nothing if building | |
| JavaScriptCore itself). | |
| (JSC::jsSingleCharacterString): Call fixupVPtr in case this is call across DLL boundary. | |
| (JSC::jsSingleCharacterSubstring): Ditto. | |
| (JSC::jsNontrivialString): Ditto. | |
| (JSC::jsString): Ditto. | |
| (JSC::jsSubstring): Ditto. | |
| (JSC::jsOwnedString): Ditto. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export the new static | |
| JSGlobalData members that are used in WebCore via inline functions. | |
| 2010-01-07 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Safari memory usage skyrockets using new Google AdWords interface | |
| https://bugs.webkit.org/show_bug.cgi?id=33343 | |
| The memory use was caused by the global object creating too many structures | |
| as it thrashed between different specific functions. | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::Structure): | |
| (JSC::Structure::addPropertyTransition): | |
| (JSC::Structure::changePrototypeTransition): | |
| (JSC::Structure::despecifyFunctionTransition): | |
| (JSC::Structure::addAnonymousSlotsTransition): | |
| (JSC::Structure::getterSetterTransition): | |
| (JSC::Structure::toDictionaryTransition): | |
| (JSC::Structure::addPropertyWithoutTransition): | |
| (JSC::Structure::despecifyAllFunctions): | |
| * runtime/Structure.h: | |
| (JSC::Structure::disableSpecificFunctionTracking): Track a thrash count | |
| for specific functions. Disable specific function tracking once the | |
| thrash count has been hit. | |
| 2010-01-07 Csaba Osztrogonác <ossy@webkit.org> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Enable JIT in debug mode on win32 after r51141 fixed the crashes. | |
| * JavaScriptCore.pri: | |
| 2010-01-07 Zoltan Horvath <zoltan@webkit.org> | |
| Reviewed by Holger Freyther. | |
| [Mac] Build fix when FAST_MALLOC_MATCH_VALIDATION=1 | |
| https://bugs.webkit.org/show_bug.cgi?id=33312 | |
| Using of operator += cause compile error on Mac, so it is changed to | |
| "= static_cast<AllocAlignmentInteger*>(old_ptr) + 1". | |
| * wtf/FastMalloc.cpp: | |
| (WTF::TCMallocStats::realloc): | |
| 2010-01-07 Zoltan Horvath <zoltan@webkit.org> | |
| Reviewed by Holger Freyther. | |
| [Qt] Build fix when FAST_MALLOC_MATCH_VALIDATION=1 | |
| https://bugs.webkit.org/show_bug.cgi?id=33312 | |
| Remove pByte (committed in r42344 from #20422), because pByte doesn't | |
| exist and it is unnecessary. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::TCMallocStats::realloc): | |
| 2010-01-06 Gavin Barraclough <barraclough@apple.com> | |
| QT build fix. | |
| * runtime/Identifier.cpp: | |
| (JSC::createIdentifierTableSpecific): | |
| 2010-01-06 Gavin Barraclough <barraclough@apple.com> | |
| Windows build fix part I. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2010-01-06 Dan Bernstein <mitz@apple.com> | |
| Build fix | |
| * runtime/Identifier.cpp: | |
| (JSC::createIdentifierTableSpecificCallback): | |
| 2010-01-05 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| https://bugs.webkit.org/show_bug.cgi?id=33236 | |
| Remove m_identifierTable pointer from UString | |
| Currently every string holds a pointer so that during destruction, | |
| if a string has been used as an identifier, it can remove itself | |
| from the table. By instead accessing the identifierTable via a | |
| thread specific tracking the table associated with the current | |
| globaldata, we can save the memory cost of this pointer. | |
| * API/APIShims.h: | |
| (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): | |
| (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock): | |
| (JSC::APICallbackShim::APICallbackShim): | |
| (JSC::APICallbackShim::~APICallbackShim): | |
| - change the API shims to track the identifierTable of the current JSGlobalData. | |
| * API/JSContextRef.cpp: | |
| (JSContextGroupCreate): | |
| - update creation of JSGlobalData for API usage to use new create method. | |
| - fix shim instanciation bug in JSGlobalContextCreateInGroup. | |
| * JavaScriptCore.exp: | |
| * runtime/Completion.cpp: | |
| (JSC::checkSyntax): | |
| (JSC::evaluate): | |
| - add asserts to check the identifierTable is being tracked correctly. | |
| * runtime/Identifier.cpp: | |
| (JSC::IdentifierTable::~IdentifierTable): | |
| (JSC::IdentifierTable::add): | |
| (JSC::Identifier::remove): | |
| (JSC::Identifier::checkSameIdentifierTable): | |
| (JSC::createIdentifierTableSpecificCallback): | |
| (JSC::createIdentifierTableSpecific): | |
| (JSC::createDefaultDataSpecific): | |
| - Use currentIdentifierTable() instead of UStringImpl::m_identifierTable. | |
| - Define methods to access the thread specific identifier tables. | |
| * runtime/Identifier.h: | |
| (JSC::ThreadIdentifierTableData::ThreadIdentifierTableData): | |
| (JSC::defaultIdentifierTable): | |
| (JSC::setDefaultIdentifierTable): | |
| (JSC::currentIdentifierTable): | |
| (JSC::setCurrentIdentifierTable): | |
| (JSC::resetCurrentIdentifierTable): | |
| - Declare methods to access the thread specific identifier tables. | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::createNonDefault): | |
| (JSC::JSGlobalData::create): | |
| (JSC::JSGlobalData::sharedInstance): | |
| - creation of JSGlobalData objects, other than for API usage, associate themselves with the current thread. | |
| * runtime/JSGlobalData.h: | |
| * runtime/UStringImpl.cpp: | |
| (JSC::UStringImpl::destroy): | |
| - destroy() method should be using isIdentifier(). | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringImpl::isIdentifier): | |
| (JSC::UStringImpl::setIsIdentifier): | |
| (JSC::UStringImpl::checkConsistency): | |
| (JSC::UStringImpl::UStringImpl): | |
| - replace m_identifierTable with a single m_isIdentifier bit. | |
| * wtf/StringHashFunctions.h: | |
| (WTF::stringHash): | |
| - change string hash result from 32-bit to 31-bit, to free a bit in UStringImpl for m_isIdentifier. | |
| 2009-12-25 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Eric Seidel. | |
| Buildfix for WinCE + style fixes. | |
| https://bugs.webkit.org/show_bug.cgi?id=32939 | |
| * jsc.cpp: | |
| (functionPrint): | |
| (functionQuit): | |
| (parseArguments): | |
| (fillBufferWithContentsOfFile): | |
| 2010-01-05 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Eric Seidel. | |
| WinCE buildfix after r52791 (renamed PLATFORM(WINCE) to OS(WINCE)). | |
| https://bugs.webkit.org/show_bug.cgi?id=33205 | |
| * jit/ExecutableAllocator.h: | |
| 2010-01-05 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Darin Adler. | |
| Added compiler error for unsupported platforms. | |
| https://bugs.webkit.org/show_bug.cgi?id=33112 | |
| * jit/JITStubs.cpp: | |
| 2010-01-05 Gabor Loki <loki@webkit.org> | |
| Reviewed by Maciej Stachowiak. | |
| Follow r52729 in ARMAssembler. | |
| https://bugs.webkit.org/show_bug.cgi?id=33208 | |
| Use WTF_ARM_ARCH_AT_LEAST instead of ARM_ARCH_VERSION | |
| * assembler/ARMAssembler.cpp: | |
| (JSC::ARMAssembler::encodeComplexImm): Move tmp declaration to ARMv7 | |
| * assembler/ARMAssembler.h: | |
| (JSC::ARMAssembler::): | |
| (JSC::ARMAssembler::bkpt): | |
| 2010-01-05 Maciej Stachowiak <mjs@apple.com> | |
| Unreviewed build fix for Gtk+ | |
| Don't use // comments in Platform.h, at least some of them seem to make the version of GCC | |
| used on the Gtk buildbot unhappy. | |
| * wtf/Platform.h: | |
| 2010-01-04 Maciej Stachowiak <mjs@apple.com> | |
| Reviewed by Darin Fisher. | |
| Reorganize, document and rename OS() platform macros. | |
| https://bugs.webkit.org/show_bug.cgi?id=33198 | |
| * wtf/Platform.h: Rename, reorganize and document OS() macros. | |
| Adapt to name changes. Also fixed a few incorrect OS checks. | |
| * API/JSContextRef.cpp: | |
| * assembler/MacroAssemblerARM.cpp: | |
| (JSC::isVFPPresent): | |
| * assembler/MacroAssemblerX86Common.h: | |
| * bytecode/SamplingTool.cpp: | |
| * config.h: | |
| * interpreter/RegisterFile.cpp: | |
| (JSC::RegisterFile::~RegisterFile): | |
| * interpreter/RegisterFile.h: | |
| (JSC::RegisterFile::RegisterFile): | |
| (JSC::RegisterFile::grow): | |
| * jit/ExecutableAllocator.h: | |
| * jit/ExecutableAllocatorFixedVMPool.cpp: | |
| * jit/ExecutableAllocatorPosix.cpp: | |
| * jit/ExecutableAllocatorSymbian.cpp: | |
| * jit/ExecutableAllocatorWin.cpp: | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| * jit/JITStubs.cpp: | |
| * jsc.cpp: | |
| (main): | |
| * parser/Grammar.y: | |
| * profiler/ProfileNode.cpp: | |
| (JSC::getCount): | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::Heap): | |
| (JSC::Heap::allocateBlock): | |
| (JSC::Heap::freeBlockPtr): | |
| (JSC::currentThreadStackBase): | |
| (JSC::getCurrentPlatformThread): | |
| (JSC::suspendThread): | |
| (JSC::resumeThread): | |
| (JSC::getPlatformThreadRegisters): | |
| (JSC::otherThreadStackPointer): | |
| * runtime/Collector.h: | |
| * runtime/DateConstructor.cpp: | |
| * runtime/DatePrototype.cpp: | |
| (JSC::formatLocaleDate): | |
| * runtime/InitializeThreading.cpp: | |
| (JSC::initializeThreading): | |
| * runtime/MarkStack.h: | |
| (JSC::MarkStack::MarkStackArray::shrinkAllocation): | |
| * runtime/MarkStackPosix.cpp: | |
| * runtime/MarkStackSymbian.cpp: | |
| * runtime/MarkStackWin.cpp: | |
| * runtime/StringPrototype.cpp: | |
| (JSC::stringProtoFuncLastIndexOf): | |
| * runtime/TimeoutChecker.cpp: | |
| (JSC::getCPUTime): | |
| * runtime/UString.cpp: | |
| (JSC::UString::from): | |
| * wtf/Assertions.cpp: | |
| * wtf/Assertions.h: | |
| * wtf/CurrentTime.cpp: | |
| (WTF::lowResUTCTime): | |
| * wtf/CurrentTime.h: | |
| (WTF::getLocalTime): | |
| * wtf/DateMath.cpp: | |
| * wtf/FastMalloc.cpp: | |
| (WTF::TCMalloc_ThreadCache::InitModule): | |
| (WTF::TCMallocStats::): | |
| * wtf/FastMalloc.h: | |
| * wtf/MathExtras.h: | |
| * wtf/RandomNumber.cpp: | |
| (WTF::randomNumber): | |
| * wtf/RandomNumberSeed.h: | |
| (WTF::initializeRandomNumberGenerator): | |
| * wtf/StringExtras.h: | |
| * wtf/TCSpinLock.h: | |
| (TCMalloc_SpinLock::Unlock): | |
| (TCMalloc_SlowLock): | |
| * wtf/TCSystemAlloc.cpp: | |
| * wtf/ThreadSpecific.h: | |
| (WTF::::destroy): | |
| * wtf/Threading.h: | |
| * wtf/ThreadingPthreads.cpp: | |
| (WTF::initializeThreading): | |
| (WTF::isMainThread): | |
| * wtf/ThreadingWin.cpp: | |
| (WTF::wtfThreadEntryPoint): | |
| (WTF::createThreadInternal): | |
| * wtf/VMTags.h: | |
| * wtf/unicode/icu/CollatorICU.cpp: | |
| (WTF::Collator::userDefault): | |
| * wtf/win/MainThreadWin.cpp: | |
| (WTF::initializeMainThreadPlatform): | |
| 2010-01-04 Gustavo Noronha Silva <gns@gnome.org> | |
| Add missing files to the build system - make distcheck build fix. | |
| * GNUmakefile.am: | |
| 2010-01-04 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig, additional coding by Mark Rowe. | |
| https://bugs.webkit.org/show_bug.cgi?id=33163 | |
| Add string hashing functions to WTF. | |
| Use WTF's string hashing functions from UStringImpl. | |
| * GNUmakefile.am: | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/UStringImpl.cpp: | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringImpl::computeHash): | |
| * wtf/HashFunctions.h: | |
| * wtf/StringHashFunctions.h: Added. | |
| (WTF::stringHash): | |
| 2010-01-04 Dmitry Titov <dimich@chromium.org> | |
| Not reviewed, attempt to fix ARM bulid. | |
| * wtf/Platform.h: | |
| 2010-01-04 Gavin Barraclough <barraclough@apple.com> | |
| Rubber stamped by Geoff Garen. | |
| Add an 'isIdentifier' to UStringImpl, use this where appropriate | |
| (where previously 'identifierTable' was being tested). | |
| * API/JSClassRef.cpp: | |
| (OpaqueJSClass::~OpaqueJSClass): | |
| (OpaqueJSClassContextData::OpaqueJSClassContextData): | |
| * runtime/Identifier.cpp: | |
| (JSC::Identifier::addSlowCase): | |
| * runtime/Identifier.h: | |
| (JSC::Identifier::add): | |
| * runtime/PropertyNameArray.cpp: | |
| (JSC::PropertyNameArray::add): | |
| * runtime/UStringImpl.h: | |
| (JSC::UStringImpl::isIdentifier): | |
| 2010-01-04 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam "Shimmey Shimmey" Weinig. | |
| https://bugs.webkit.org/show_bug.cgi?id=33158 | |
| Refactor JSC API entry/exit to use RAII instead of copy/pasting code. | |
| Make it easier to change set of actions taken when passing across the API boundary. | |
| * API/APIShims.h: Added. | |
| (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): | |
| (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock): | |
| (JSC::APIEntryShim::APIEntryShim): | |
| (JSC::APICallbackShim::APICallbackShim): | |
| (JSC::APICallbackShim::~APICallbackShim): | |
| * API/JSBase.cpp: | |
| (JSEvaluateScript): | |
| (JSCheckScriptSyntax): | |
| (JSGarbageCollect): | |
| (JSReportExtraMemoryCost): | |
| * API/JSCallbackConstructor.cpp: | |
| (JSC::constructJSCallback): | |
| * API/JSCallbackFunction.cpp: | |
| (JSC::JSCallbackFunction::call): | |
| * API/JSCallbackObjectFunctions.h: | |
| (JSC::::init): | |
| (JSC::::getOwnPropertySlot): | |
| (JSC::::put): | |
| (JSC::::deleteProperty): | |
| (JSC::::construct): | |
| (JSC::::hasInstance): | |
| (JSC::::call): | |
| (JSC::::getOwnPropertyNames): | |
| (JSC::::toNumber): | |
| (JSC::::toString): | |
| (JSC::::staticValueGetter): | |
| (JSC::::callbackGetter): | |
| * API/JSContextRef.cpp: | |
| * API/JSObjectRef.cpp: | |
| (JSObjectMake): | |
| (JSObjectMakeFunctionWithCallback): | |
| (JSObjectMakeConstructor): | |
| (JSObjectMakeFunction): | |
| (JSObjectMakeArray): | |
| (JSObjectMakeDate): | |
| (JSObjectMakeError): | |
| (JSObjectMakeRegExp): | |
| (JSObjectGetPrototype): | |
| (JSObjectSetPrototype): | |
| (JSObjectHasProperty): | |
| (JSObjectGetProperty): | |
| (JSObjectSetProperty): | |
| (JSObjectGetPropertyAtIndex): | |
| (JSObjectSetPropertyAtIndex): | |
| (JSObjectDeleteProperty): | |
| (JSObjectCallAsFunction): | |
| (JSObjectCallAsConstructor): | |
| (JSObjectCopyPropertyNames): | |
| (JSPropertyNameArrayRelease): | |
| (JSPropertyNameAccumulatorAddName): | |
| * API/JSValueRef.cpp: | |
| (JSValueGetType): | |
| (JSValueIsUndefined): | |
| (JSValueIsNull): | |
| (JSValueIsBoolean): | |
| (JSValueIsNumber): | |
| (JSValueIsString): | |
| (JSValueIsObject): | |
| (JSValueIsObjectOfClass): | |
| (JSValueIsEqual): | |
| (JSValueIsStrictEqual): | |
| (JSValueIsInstanceOfConstructor): | |
| (JSValueMakeUndefined): | |
| (JSValueMakeNull): | |
| (JSValueMakeBoolean): | |
| (JSValueMakeNumber): | |
| (JSValueMakeString): | |
| (JSValueToBoolean): | |
| (JSValueToNumber): | |
| (JSValueToStringCopy): | |
| (JSValueToObject): | |
| (JSValueProtect): | |
| (JSValueUnprotect): | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| 2010-01-04 Dan Bernstein <mitz@apple.com> | |
| Reviewed by Ada Chan and Mark Rowe. | |
| Updated copyright string | |
| * Info.plist: | |
| * JavaScriptCore.vcproj/JavaScriptCore.resources/Info.plist: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: | |
| 2010-01-04 Adam Roben <aroben@apple.com> | |
| No review, rolling out r52741. | |
| http://trac.webkit.org/changeset/52741 | |
| https://bugs.webkit.org/show_bug.cgi?id=33056 | |
| * wtf/AlwaysInline.h: | |
| 2010-01-04 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Darin Adler. | |
| Add cacheFlush support for WinCE | |
| https://bugs.webkit.org/show_bug.cgi?id=33110 | |
| * jit/ExecutableAllocator.h: | |
| (JSC::ExecutableAllocator::cacheFlush): | |
| 2010-01-04 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Adam Roben. | |
| Implement NO_RETURN for COMPILER(MSVC). | |
| https://bugs.webkit.org/show_bug.cgi?id=33056 | |
| * wtf/AlwaysInline.h: | |
| 2010-01-04 Maciej Stachowiak <mjs@apple.com> | |
| Reviewed by Simon Hausmann. | |
| Fix some PLATFORM(*_ENDIAN) uses to CPU() | |
| https://bugs.webkit.org/show_bug.cgi?id=33148 | |
| * runtime/JSCell.cpp: | |
| (JSC::): | |
| * runtime/JSValue.h: | |
| (JSC::JSValue::): | |
| 2010-01-04 Maciej Stachowiak <mjs@apple.com> | |
| Reviewed by Adam Barth. | |
| Document CPU() macros in comments. | |
| https://bugs.webkit.org/show_bug.cgi?id=33147 | |
| * wtf/Platform.h: | |
| 2010-01-04 Maciej Stachowiak <mjs@apple.com> | |
| Reviewed by Adam Barth. | |
| Reorganize, document and rename CPU() platform macros. | |
| https://bugs.webkit.org/show_bug.cgi?id=33145 | |
| ExecutableAllocatorSymbian appears to have buggy ARM version check | |
| https://bugs.webkit.org/show_bug.cgi?id=33138 | |
| * wtf/Platform.h: | |
| Rename all macros related to detection of particular CPUs or | |
| classes of CPUs to CPU(), reorganize and document them. | |
| All remaining changes are adapting to the renames, plus fixing the | |
| second bug cited above. | |
| * assembler/ARMAssembler.cpp: | |
| * assembler/ARMAssembler.h: | |
| * assembler/ARMv7Assembler.h: | |
| * assembler/AbstractMacroAssembler.h: | |
| (JSC::AbstractMacroAssembler::Imm32::Imm32): | |
| * assembler/MacroAssembler.h: | |
| * assembler/MacroAssemblerARM.cpp: | |
| * assembler/MacroAssemblerARM.h: | |
| * assembler/MacroAssemblerCodeRef.h: | |
| (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr): | |
| * assembler/MacroAssemblerX86.h: | |
| * assembler/MacroAssemblerX86Common.h: | |
| * assembler/MacroAssemblerX86_64.h: | |
| * assembler/X86Assembler.h: | |
| (JSC::X86Registers::): | |
| (JSC::X86Assembler::): | |
| (JSC::X86Assembler::movl_mEAX): | |
| (JSC::X86Assembler::movl_EAXm): | |
| (JSC::X86Assembler::repatchLoadPtrToLEA): | |
| (JSC::X86Assembler::X86InstructionFormatter::memoryModRM): | |
| * jit/ExecutableAllocator.h: | |
| * jit/ExecutableAllocatorFixedVMPool.cpp: | |
| * jit/ExecutableAllocatorPosix.cpp: | |
| * jit/ExecutableAllocatorSymbian.cpp: | |
| (JSC::ExecutableAllocator::intializePageSize): | |
| * jit/JIT.cpp: | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::beginUninterruptedSequence): | |
| (JSC::JIT::restoreArgumentReferenceForTrampoline): | |
| (JSC::JIT::emitCount): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::privateCompileGetByIdProto): | |
| (JSC::JIT::privateCompileGetByIdProtoList): | |
| (JSC::JIT::privateCompileGetByIdChainList): | |
| (JSC::JIT::privateCompileGetByIdChain): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::JITThunks): | |
| * jit/JITStubs.h: | |
| * runtime/Collector.cpp: | |
| (JSC::currentThreadStackBase): | |
| (JSC::getPlatformThreadRegisters): | |
| (JSC::otherThreadStackPointer): | |
| * wrec/WREC.h: | |
| * wrec/WRECGenerator.cpp: | |
| (JSC::WREC::Generator::generateEnter): | |
| (JSC::WREC::Generator::generateReturnSuccess): | |
| (JSC::WREC::Generator::generateReturnFailure): | |
| * wrec/WRECGenerator.h: | |
| * wtf/FastMalloc.cpp: | |
| * wtf/TCSpinLock.h: | |
| (TCMalloc_SpinLock::Lock): | |
| (TCMalloc_SpinLock::Unlock): | |
| (TCMalloc_SlowLock): | |
| * wtf/Threading.h: | |
| * wtf/dtoa.cpp: | |
| * yarr/RegexJIT.cpp: | |
| (JSC::Yarr::RegexGenerator::generateEnter): | |
| (JSC::Yarr::RegexGenerator::generateReturn): | |
| * yarr/RegexJIT.h: | |
| 2010-01-04 Maciej Stachowiak <mjs@apple.com> | |
| Reviewed by Adam Barth. | |
| Clean up COMPILER macros and remove unused ones. | |
| https://bugs.webkit.org/show_bug.cgi?id=33132 | |
| Removed values are COMPILER(BORLAND) and COMPILER(CYGWIN) - they were | |
| not used anywhere. | |
| * wtf/Platform.h: | |
| 2010-01-03 Maciej Stachowiak <mjs@apple.com> | |
| Reviewed by Eric Seidel. | |
| Update wtf/Platform.h to document the new system for porting macros. | |
| https://bugs.webkit.org/show_bug.cgi?id=33130 | |
| * wtf/Platform.h: | |
| 2009-12-29 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Maciej Stachowiak. | |
| PLATFORM(CAIRO) should be defined by WIN_CAIRO define | |
| https://bugs.webkit.org/show_bug.cgi?id=22250 | |
| * wtf/Platform.h: Define WTF_PLATFORM_CAIRO for GTK port only | |
| For the WinCairo port WTF_PLATFORM_CAIRO is already defined in config.h | |
| 2009-12-28 Shu Chang <Chang.Shu@nokia.com> | |
| Reviewed by Laszlo Gombos. | |
| [Qt] Delete ThreadPrivate instance after it is finished. | |
| https://bugs.webkit.org/show_bug.cgi?id=32614 | |
| * wtf/qt/ThreadingQt.cpp: | |
| (WTF::ThreadMonitor::instance): | |
| (WTF::ThreadMonitor::threadFinished): | |
| (WTF::createThreadInternal): | |
| (WTF::detachThread): | |
| 2009-12-28 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Maciej Stachowiak. | |
| Cleanup of #define JS_EXPORT. | |
| * API/JSBase.h: | |
| 2009-12-27 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Adam Barth. | |
| WinCE buildfix (HWND_MESSAGE isn't supported there) | |
| * wtf/win/MainThreadWin.cpp: | |
| (WTF::initializeMainThreadPlatform): | |
| 2009-12-27 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Adam Barth. | |
| Added a file with WinMain function to link agains in WinCE. | |
| * os-win32/WinMain.cpp: Added. | |
| (convertToUtf8): | |
| (WinMain): | |
| 2009-12-24 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Unreviewed; revert of r52550. | |
| The change regressed the following LayoutTests for QtWebKit. | |
| fast/workers/worker-call.html -> crashed | |
| fast/workers/worker-close.html -> crashed | |
| * wtf/qt/ThreadingQt.cpp: | |
| (WTF::waitForThreadCompletion): | |
| (WTF::detachThread): | |
| 2009-12-24 Shu Chang <Chang.Shu@nokia.com> | |
| Reviewed by Laszlo Gombos. | |
| [Qt] Fix memory leak by deleting instance of ThreadPrivate | |
| in function waitForThreadCompletion(), synchronously, or in | |
| detachThread(), asynchronously. | |
| https://bugs.webkit.org/show_bug.cgi?id=32614 | |
| * wtf/qt/ThreadingQt.cpp: | |
| (WTF::waitForThreadCompletion): | |
| (WTF::detachThread): | |
| 2009-12-23 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Laszlo Gombos. | |
| Include stddef.h for ptrdiff_t | |
| https://bugs.webkit.org/show_bug.cgi?id=32891 | |
| ptrdiff_t is typedef-ed in stddef.h. | |
| Include stddef.h in jit/ExecutableAllocator.h. | |
| * jit/ExecutableAllocator.h: | |
| 2009-12-23 Patrick Gansterer <paroga@paroga.com> | |
| Reviewed by Eric Seidel. | |
| Buildfix after r47092. | |
| * wtf/wince/MemoryManager.cpp: | |
| (WTF::tryFastMalloc): | |
| (WTF::tryFastZeroedMalloc): | |
| (WTF::tryFastCalloc): | |
| (WTF::tryFastRealloc): | |
| 2009-12-23 Kent Tamura <tkent@chromium.org> | |
| Reviewed by Darin Adler. | |
| HTMLInputElement::valueAsDate getter support. | |
| https://bugs.webkit.org/show_bug.cgi?id=32876 | |
| Expose dateToDaysFrom1970(). | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * wtf/DateMath.cpp: | |
| (WTF::dateToDaysFrom1970): | |
| * wtf/DateMath.h: | |
| 2009-12-22 Darin Adler <darin@apple.com> | |
| Reviewed by Mark Rowe. | |
| Turn off datagrid by default, at least for all platforms Apple ships. | |
| The datagrid implementation isn't ready for general web use yet. | |
| * Configurations/FeatureDefines.xcconfig: Turn off datagrid by default. | |
| 2009-12-22 Steve Block <steveblock@google.com> | |
| Reviewed by David Levin. | |
| Updates Android's scheduleDispatchFunctionsOnMainThread() to use new | |
| AndroidThreading class, rather than using JavaSharedClient directly. | |
| This fixes the current layering violation. | |
| https://bugs.webkit.org/show_bug.cgi?id=32651 | |
| The pattern is copied from Chromium, which uses the ChromiumThreading | |
| class. This patch also fixes the style in ChromiumThreading.h. | |
| * wtf/android/AndroidThreading.h: Added. Declares AndroidThreading. | |
| * wtf/android/MainThreadAndroid.cpp: Modified | |
| (WTF::scheduleDispatchFunctionsOnMainThread): Uses AndroidThreading. | |
| * wtf/chromium/ChromiumThreading.h: Modified. Fixes style. | |
| 2009-12-22 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| Fix a couple of problems with UntypedPtrAndBitfield. | |
| Add a m_leaksPtr to reduce false positives from leaks in debug builds | |
| (this isn't perfect because we'd like a solution for release builds, | |
| but this is now at least as good as a PtrAndFlags would be). | |
| Switch SmallStringsto use a regular string for the base, rather than | |
| a static one. UntypedPtrAndBitfield assumes all strings are at least | |
| 8 byte aligned; this migt not be true of static strings. Shared buffers | |
| are heap allocated, as are all UStringImpls other than static strings. | |
| Static strings cannot end up being the owner string of substrings, | |
| since the only static strings are length 0. | |
| * runtime/SmallStrings.cpp: | |
| (JSC::SmallStringsStorage::SmallStringsStorage): | |
| * runtime/UStringImpl.h: | |
| (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield): | |
| (JSC::UStringImpl::UStringImpl): | |
| 2009-12-22 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Darin Adler. | |
| RVCT (__ARMCC_VERSION < 400000) does not provide strcasecmp and strncasecmp | |
| https://bugs.webkit.org/show_bug.cgi?id=32857 | |
| Add implementation of strcasecmp and strncasecmp for RVCT < 4.0 | |
| because earlier versions of RVCT 4.0 does not provide these functions. | |
| * wtf/StringExtras.cpp: Added. | |
| (strcasecmp): | |
| (strncasecmp): | |
| * wtf/StringExtras.h: | |
| 2009-12-22 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Darin Adler. | |
| Define ALWAYS_INLINE and WTF_PRIVATE_INLINE to __forceinline for RVCT | |
| https://bugs.webkit.org/show_bug.cgi?id=32853 | |
| Use __forceinline forces RVCT to compile a C or C++ function | |
| inline. The compiler attempts to inline the function, regardless of | |
| the characteristics of the function. | |
| * wtf/AlwaysInline.h: | |
| * wtf/FastMalloc.h: | |
| 2009-12-21 Simon Hausmann <simon.hausmann@nokia.com> | |
| Prospective GTK build fix: Add UStringImpl.cpp/h to the build. | |
| * GNUmakefile.am: | |
| 2009-12-21 Simon Hausmann <simon.hausmann@nokia.com> | |
| Fix the Qt build, add UStringImpl.cpp to the build. | |
| * JavaScriptCore.pri: | |
| 2009-12-21 Gavin Barraclough <barraclough@apple.com> | |
| Windows Build fix part 5. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| 2009-12-21 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (build fix). | |
| Fix breakage of world introduced in build fix to r52463. | |
| * runtime/UStringImpl.h: | |
| 2009-12-21 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=32831 | |
| Replace UString::Rep implementation, following introduction of ropes to JSC. | |
| * Remove redundant overcapacity mechanisms. | |
| * Reduce memory cost of Rep's. | |
| * Add an inline storage mechanism akin to that in WebCore's StringImpl. | |
| ~1% Sunspider progression. | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/JSString.cpp: | |
| (JSC::JSString::resolveRope): | |
| * runtime/SmallStrings.cpp: | |
| (JSC::SmallStringsStorage::SmallStringsStorage): | |
| * runtime/UString.cpp: | |
| (JSC::initializeUString): | |
| (JSC::createRep): | |
| (JSC::UString::createFromUTF8): | |
| (JSC::UString::createUninitialized): | |
| (JSC::UString::spliceSubstringsWithSeparators): | |
| (JSC::UString::replaceRange): | |
| (JSC::UString::ascii): | |
| (JSC::UString::operator=): | |
| (JSC::UString::toStrictUInt32): | |
| (JSC::equal): | |
| * runtime/UString.h: | |
| (JSC::UString::isEmpty): | |
| (JSC::UString::cost): | |
| (JSC::makeString): | |
| * runtime/UStringImpl.cpp: Added. | |
| (JSC::UStringImpl::baseSharedBuffer): | |
| (JSC::UStringImpl::sharedBuffer): | |
| (JSC::UStringImpl::destroy): | |
| (JSC::UStringImpl::computeHash): | |
| * runtime/UStringImpl.h: Added. | |
| (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield): | |
| (JSC::UntypedPtrAndBitfield::asPtr): | |
| (JSC::UntypedPtrAndBitfield::operator&=): | |
| (JSC::UntypedPtrAndBitfield::operator|=): | |
| (JSC::UntypedPtrAndBitfield::operator&): | |
| (JSC::UStringImpl::create): | |
| (JSC::UStringImpl::createCopying): | |
| (JSC::UStringImpl::createUninitialized): | |
| (JSC::UStringImpl::data): | |
| (JSC::UStringImpl::size): | |
| (JSC::UStringImpl::cost): | |
| (JSC::UStringImpl::hash): | |
| (JSC::UStringImpl::computedHash): | |
| (JSC::UStringImpl::setHash): | |
| (JSC::UStringImpl::identifierTable): | |
| (JSC::UStringImpl::setIdentifierTable): | |
| (JSC::UStringImpl::ref): | |
| (JSC::UStringImpl::deref): | |
| (JSC::UStringImpl::allocChars): | |
| (JSC::UStringImpl::copyChars): | |
| (JSC::UStringImpl::computeHash): | |
| (JSC::UStringImpl::null): | |
| (JSC::UStringImpl::empty): | |
| (JSC::UStringImpl::checkConsistency): | |
| (JSC::UStringImpl::): | |
| (JSC::UStringImpl::UStringImpl): | |
| (JSC::UStringImpl::operator new): | |
| (JSC::UStringImpl::bufferOwnerString): | |
| (JSC::UStringImpl::bufferOwnership): | |
| (JSC::UStringImpl::isStatic): | |
| 2009-12-18 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| Move some build decisions from Qt build system into source files | |
| https://bugs.webkit.org/show_bug.cgi?id=31956 | |
| * JavaScriptCore.pri: Compile files unconditionally | |
| * jit/ExecutableAllocatorPosix.cpp: Guard with PLATFORM(UNIX) && !PLATFORM(SYMBIAN) | |
| * jit/ExecutableAllocatorWin.cpp: Guard with PLATFORM(WIN_OS) | |
| * runtime/MarkStackPosix.cpp: Guard with PLATFORM(UNIX) && !PLATFORM(SYMBIAN) | |
| * runtime/MarkStackSymbian.cpp: Guard with PLATFORM(SYMBIAN) | |
| * runtime/MarkStackWin.cpp: Guard with PLATFORM(WIN_OS) | |
| * wtf/Platform.h: Guard ENABLE_JSC_MULTIPLE_THREADS with ENABLE_SINGLE_THREADED for the Qt port | |
| * wtf/ThreadingNone.cpp: Guard with ENABLE(SINGLE_THREADED) | |
| * wtf/qt/ThreadingQt.cpp: Guard with !ENABLE(SINGLE_THREADED) | |
| 2009-12-18 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| Add createNonCopying method to UString to make replace constructor passed bool, | |
| to make behaviour more explicit. Add createFromUTF8 to UString (wrapping method | |
| on UString::Rep), since other cases of transliteration (e.g. from ascii) are | |
| performed in UString constructors. Add/use setHash & size() accessors on Rep, | |
| rather than accessing _hash/len directly. | |
| * API/JSClassRef.cpp: | |
| (OpaqueJSClass::OpaqueJSClass): | |
| * API/OpaqueJSString.cpp: | |
| (OpaqueJSString::ustring): | |
| * JavaScriptCore.exp: | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::arrayProtoFuncToString): | |
| * runtime/Identifier.cpp: | |
| (JSC::Identifier::equal): | |
| (JSC::CStringTranslator::translate): | |
| (JSC::UCharBufferTranslator::translate): | |
| (JSC::Identifier::addSlowCase): | |
| * runtime/JSString.cpp: | |
| (JSC::JSString::resolveRope): | |
| * runtime/JSString.h: | |
| (JSC::JSString::Rope::Fiber::refAndGetLength): | |
| (JSC::JSString::Rope::append): | |
| * runtime/StringBuilder.h: | |
| (JSC::StringBuilder::release): | |
| * runtime/StringConstructor.cpp: | |
| (JSC::stringFromCharCodeSlowCase): | |
| * runtime/StringPrototype.cpp: | |
| (JSC::substituteBackreferencesSlow): | |
| (JSC::stringProtoFuncToLowerCase): | |
| (JSC::stringProtoFuncToUpperCase): | |
| (JSC::stringProtoFuncFontsize): | |
| (JSC::stringProtoFuncLink): | |
| * runtime/UString.cpp: | |
| (JSC::UString::UString): | |
| (JSC::UString::createNonCopying): | |
| (JSC::UString::createFromUTF8): | |
| * runtime/UString.h: | |
| (JSC::UString::Rep::setHash): | |
| (JSC::UString::~UString): | |
| (JSC::makeString): | |
| 2009-12-18 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Cameron Zwarich and Gavin Barraclough. | |
| Changed Register constructors to assignment operators, to streamline | |
| moving values into registers. (In theory, there's no difference between | |
| the two, since the constructor should just inline away, but there seems | |
| to be a big difference in the addled mind of the GCC optimizer.) | |
| In the interpreter, this is a 3.5% SunSpider speedup and a 1K-2K | |
| reduction in stack usage per privateExecute stack frame. | |
| * interpreter/CallFrame.h: | |
| (JSC::ExecState::setCalleeArguments): | |
| (JSC::ExecState::setCallerFrame): | |
| (JSC::ExecState::setScopeChain): | |
| (JSC::ExecState::init): | |
| (JSC::ExecState::setArgumentCount): | |
| (JSC::ExecState::setCallee): | |
| (JSC::ExecState::setCodeBlock): Added a little bit of casting so these | |
| functions could use the new Register assignment operators. | |
| * interpreter/Register.h: | |
| (JSC::Register::withInt): | |
| (JSC::Register::Register): | |
| (JSC::Register::operator=): Swapped in assignment operators for constructors. | |
| 2009-12-18 Yongjun Zhang <yongjun.zhang@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| https://bugs.webkit.org/show_bug.cgi?id=32713 | |
| [Qt] make wtf/Assertions.h compile in winscw compiler. | |
| Add string arg before ellipsis to help winscw compiler resolve variadic | |
| macro definitions in wtf/Assertions.h. | |
| * wtf/Assertions.h: | |
| 2009-12-18 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Adam Roben. | |
| Fixed intermittent failure seen on Windows buildbot, and in other JSC | |
| API clients. | |
| Added a WeakGCPtr class and changed OpaqueJSClass::cachedPrototype to | |
| use it, to avoid vending a stale object as a prototype. | |
| * API/JSClassRef.cpp: | |
| (OpaqueJSClassContextData::OpaqueJSClassContextData): | |
| (OpaqueJSClass::prototype): | |
| * API/JSClassRef.h: Use WeakGCPtr. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/WeakGCPtr.h: Added. | |
| (JSC::WeakGCPtr::WeakGCPtr): | |
| (JSC::WeakGCPtr::get): | |
| (JSC::WeakGCPtr::clear): | |
| (JSC::WeakGCPtr::operator*): | |
| (JSC::WeakGCPtr::operator->): | |
| (JSC::WeakGCPtr::operator!): | |
| (JSC::WeakGCPtr::operator bool): | |
| (JSC::WeakGCPtr::operator UnspecifiedBoolType): | |
| (JSC::WeakGCPtr::assign): | |
| (JSC::::operator): | |
| (JSC::operator==): | |
| (JSC::operator!=): | |
| (JSC::static_pointer_cast): | |
| (JSC::const_pointer_cast): | |
| (JSC::getPtr): Added WeakGCPtr to the project. | |
| 2009-12-18 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| https://bugs.webkit.org/show_bug.cgi?id=32720 | |
| * JavaScriptCore.exp: | |
| - Remove exports for UString::append | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| - Make StringBuilder a private header (was project). | |
| 2009-12-18 Martin Robinson <martin.james.robinson@gmail.com> | |
| Reviewed by Gustavo Noronha Silva. | |
| [GTK] GRefPtr does not take a reference when assigned a raw pointer | |
| https://bugs.webkit.org/show_bug.cgi?id=32709 | |
| Ensure that when assigning a raw pointer to a GRefPtr, the reference | |
| count is incremented. Also remove the GRefPtr conversion overload as | |
| GRefPtr types have necessarily incompatible reference counting. | |
| * wtf/gtk/GRefPtr.h: | |
| (WTF::GRefPtr::operator=): | |
| 2009-12-18 Simon Hausmann <simon.hausmann@nokia.com> | |
| Reviewed by Tor Arne Vestbø. | |
| [Qt] Clean up the qmake build system to distinguish between trunk builds and package builds | |
| https://bugs.webkit.org/show_bug.cgi?id=32716 | |
| * pcre/pcre.pri: Use standalone_package instead of QTDIR_build | |
| 2009-12-18 Martin Robinson <martin.james.robinson@gmail.com> | |
| Reviewed by Gustavo Noronha Silva. | |
| [GTK] Compile warning from line 29 of GRefPtr.cpp | |
| https://bugs.webkit.org/show_bug.cgi?id=32703 | |
| Fix memory leak and compiler warning in GRefPtr GHashTable template | |
| specialization. | |
| * wtf/gtk/GRefPtr.cpp: | |
| (WTF::refGPtr): | |
| 2009-12-17 Sam Weinig <sam@webkit.org> | |
| Reviewed by Mark Rowe. | |
| Add BUILDING_ON_SNOW_LEOPARD and TARGETING_SNOW_LEOPARD #defines. | |
| * wtf/Platform.h: | |
| 2009-12-17 Adam Roben <aroben@apple.com> | |
| Sync JavaScriptCore.vcproj with JavaScriptCore.xcodeproj and the | |
| source tree | |
| Fixes <http://webkit.org/b/32665>. | |
| Reviewed by Ada Chan. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Moved | |
| around files and filters so that the structure matches | |
| JavaScriptCore.xcodeproj and the source tree. A few headers that were | |
| previously omitted have been added, as well as JSZombie.{cpp,h}. | |
| 2009-12-17 Adam Roben <aroben@apple.com> | |
| Remove HeavyProfile and TreeProfile completely | |
| These were mostly removed in r42808, but the empty files were left in | |
| place. | |
| Fixes <http://webkit.org/b/32664>. | |
| Reviewed by John Sullivan. | |
| * Android.mk: | |
| * GNUmakefile.am: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.pri: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| * JavaScriptCoreSources.bkl: | |
| Removed HeavyProfile/TreeProfile source files. | |
| * profiler/HeavyProfile.cpp: Removed. | |
| * profiler/HeavyProfile.h: Removed. | |
| * profiler/TreeProfile.cpp: Removed. | |
| * profiler/TreeProfile.h: Removed. | |
| 2009-12-17 Martin Robinson <martin.james.robinson@gmail.com> | |
| Reviewed by Gustavo Noronha Silva. | |
| [GTK] WebKit GTK needs a wrapper for ref counted glib/gobject structs | |
| https://bugs.webkit.org/show_bug.cgi?id=21599 | |
| Implement GRefPtr, a smart pointer for reference counted GObject types. | |
| * GNUmakefile.am: | |
| * wtf/gtk/GOwnPtr.cpp: | |
| (WTF::GDir): | |
| * wtf/gtk/GRefPtr.h: Added. | |
| (WTF::): | |
| (WTF::GRefPtr::GRefPtr): | |
| (WTF::GRefPtr::~GRefPtr): | |
| (WTF::GRefPtr::clear): | |
| (WTF::GRefPtr::get): | |
| (WTF::GRefPtr::operator*): | |
| (WTF::GRefPtr::operator->): | |
| (WTF::GRefPtr::operator!): | |
| (WTF::GRefPtr::operator UnspecifiedBoolType): | |
| (WTF::GRefPtr::hashTableDeletedValue): | |
| (WTF::::operator): | |
| (WTF::::swap): | |
| (WTF::swap): | |
| (WTF::operator==): | |
| (WTF::operator!=): | |
| (WTF::static_pointer_cast): | |
| (WTF::const_pointer_cast): | |
| (WTF::getPtr): | |
| (WTF::adoptGRef): | |
| (WTF::refGPtr): | |
| (WTF::derefGPtr): | |
| 2009-12-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
| Unreviewed. Build fixes for make distcheck. | |
| * GNUmakefile.am: | |
| 2009-12-16 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Fixed <rdar://problem/7355025> Interpreter::privateExecute macro generates | |
| bloated code | |
| This patch cuts Interpreter stack use by about a third. | |
| * bytecode/Opcode.h: Changed Opcode to const void* to work with the | |
| const static initiliazation we want to do in Interpreter::privateExecute. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::Interpreter): Moved hashtable initialization here to | |
| avoid polluting Interpreter::privateExecute's stack, and changed it from a | |
| series of add() calls to one add() call in a loop, to cut down on code size. | |
| (JSC::Interpreter::privateExecute): Changed a series of label computations | |
| to a copy of a compile-time constant array to cut down on code size. | |
| 2009-12-16 Mark Rowe <mrowe@apple.com> | |
| Build fix. Disable debug variants of WebKit frameworks. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| 2009-12-15 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam "r=me" Weinig. | |
| https://bugs.webkit.org/show_bug.cgi?id=32498 | |
| <rdar://problem/7471495> | |
| REGRESSION(r51978-r52039): AJAX "Mark This Forum Read" function no longer | |
| works | |
| Fixed a tyop. | |
| * runtime/Operations.h: | |
| (JSC::jsAdd): Use the '&&' operator, not the ',' operator. | |
| 2009-12-15 Geoffrey Garen <ggaren@apple.com> | |
| Try to fix the windows build: don't export this inlined function. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2009-12-15 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Beth Dakin. | |
| Inlined JSCell's operator new. | |
| 3.7% speedup on bench-allocate-nonretained.js. | |
| * JavaScriptCore.exp: | |
| * runtime/JSCell.cpp: | |
| * runtime/JSCell.h: | |
| (JSC::JSCell::operator new): | |
| 2009-12-15 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Removed the number heap, replacing it with a one-item free list for | |
| numbers, taking advantage of the fact that two number cells fit inside | |
| the space for one regular cell, and number cells don't require destruction. | |
| SunSpider says 1.6% faster in JSVALUE32 mode (the only mode that | |
| heap-allocates numbers). | |
| SunSpider says 1.1% faster in JSVALUE32_64 mode. v8 says 0.8% faster | |
| in JSVALUE32_64 mode. 10% speedup on bench-alloc-nonretained.js. 6% | |
| speedup on bench-alloc-retained.js. | |
| There's a lot of formulaic change in this patch, but not much substance. | |
| * JavaScriptCore.exp: | |
| * debugger/Debugger.cpp: | |
| (JSC::Debugger::recompileAllJSFunctions): | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::Heap): | |
| (JSC::Heap::destroy): | |
| (JSC::Heap::allocateBlock): | |
| (JSC::Heap::freeBlock): | |
| (JSC::Heap::freeBlockPtr): | |
| (JSC::Heap::freeBlocks): | |
| (JSC::Heap::recordExtraCost): | |
| (JSC::Heap::allocate): | |
| (JSC::Heap::resizeBlocks): | |
| (JSC::Heap::growBlocks): | |
| (JSC::Heap::shrinkBlocks): | |
| (JSC::Heap::markConservatively): | |
| (JSC::Heap::clearMarkBits): | |
| (JSC::Heap::markedCells): | |
| (JSC::Heap::sweep): | |
| (JSC::Heap::markRoots): | |
| (JSC::Heap::objectCount): | |
| (JSC::Heap::addToStatistics): | |
| (JSC::Heap::statistics): | |
| (JSC::Heap::isBusy): | |
| (JSC::Heap::reset): | |
| (JSC::Heap::collectAllGarbage): | |
| (JSC::Heap::primaryHeapBegin): | |
| (JSC::Heap::primaryHeapEnd): | |
| * runtime/Collector.h: | |
| (JSC::): Removed all code pertaining to the number heap, and changed all | |
| heap template functions and classes to non-template functions and classes. | |
| (JSC::Heap::allocateNumber): A new optimization to replace the number | |
| heap: allocate half-sized number cells in pairs, returning the first | |
| cell and caching the second cell for the next allocation. | |
| * runtime/CollectorHeapIterator.h: | |
| (JSC::LiveObjectIterator::LiveObjectIterator): | |
| (JSC::LiveObjectIterator::operator++): | |
| (JSC::DeadObjectIterator::DeadObjectIterator): | |
| (JSC::DeadObjectIterator::operator++): | |
| (JSC::ObjectIterator::ObjectIterator): | |
| (JSC::ObjectIterator::operator++): | |
| * runtime/JSCell.h: | |
| (JSC::JSCell::isNumber): Removed all code pertaining to the number heap, | |
| and changed all heap template functions and classes to non-template functions | |
| and classes. | |
| 2009-12-15 Zoltan Horvath <zoltan@webkit.org> | |
| Reviewed by Darin Adler. | |
| Allow custom memory allocation control for WeakGCMap class | |
| https://bugs.webkit.org/show_bug.cgi?id=32547 | |
| Inherits WeakGCMap from FastAllocBase because it is instantiated by | |
| 'new' at: WebCore/dom/Document.cpp:512. | |
| * runtime/WeakGCMap.h: | |
| 2009-12-15 Zoltan Horvath <zoltan@webkit.org> | |
| Reviewed by Darin Adler. | |
| Allow custom memory allocation control for dtoa's P5Node struct | |
| https://bugs.webkit.org/show_bug.cgi?id=32544 | |
| Inherits P5Node struct from Noncopyable because it is instantiated by | |
| 'new' at wtf/dtoa.cpp:588 and don't need to be copyable. | |
| * wtf/dtoa.cpp: | |
| 2009-12-14 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Simon Fraser. | |
| https://bugs.webkit.org/show_bug.cgi?id=32524 | |
| REGRESSION(52084): fast/dom/prototypes.html failing two CSS tests | |
| * wtf/StdLibExtras.h: | |
| (WTF::bitCount): The original patch put the parentheses in the wrong | |
| place, completely changing the calculation and making it almost always | |
| wrong. Moved the parentheses around the '+' operation, like the original | |
| compiler warning suggested. | |
| 2009-12-14 Gabor Loki <loki@inf.u-szeged.hu> | |
| Unreviewed trivial buildfix. | |
| Fix crosses initialization of usedPrimaryBlocks for JSValue32 | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::markConservatively): | |
| 2009-12-14 Csaba Osztrogonác <ossy@webkit.org> | |
| Reviewed by Simon Hausmann. | |
| GCC 4.3.x warning fixed. Suggested parantheses added. | |
| warning: ../../../JavaScriptCore/wtf/StdLibExtras.h:77: warning: suggest parentheses around + or - in operand of & | |
| * wtf/StdLibExtras.h: | |
| (WTF::bitCount): | |
| 2009-12-13 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Changed GC from mark-sweep to mark-allocate. | |
| Added WeakGCMap to keep WebCore blissfully ignorant about objects that | |
| have become garbage but haven't run their destructors yet. | |
| 1% SunSpider speedup. | |
| 7.6% v8 speedup (37% splay speedup). | |
| 17% speedup on bench-alloc-nonretained.js. | |
| 18% speedup on bench-alloc-retained.js. | |
| * API/JSBase.cpp: | |
| (JSGarbageCollect): | |
| * API/JSContextRef.cpp: | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: Updated for renames and new | |
| files. | |
| * debugger/Debugger.cpp: | |
| (JSC::Debugger::recompileAllJSFunctions): Updated to use the Collector | |
| iterator abstraction. | |
| * jsc.cpp: | |
| (functionGC): Updated for rename. | |
| * runtime/Collector.cpp: Slightly reduced the number of allocations per | |
| collection, so that small workloads only allocate on collector block, | |
| rather than two. | |
| (JSC::Heap::Heap): Updated to use the new allocateBlock function. | |
| (JSC::Heap::destroy): Updated to use the new freeBlocks function. | |
| (JSC::Heap::allocateBlock): New function to initialize a block when | |
| allocating it. | |
| (JSC::Heap::freeBlock): Consolidated the responsibility for running | |
| destructors into this function. | |
| (JSC::Heap::freeBlocks): Updated to use freeBlock. | |
| (JSC::Heap::recordExtraCost): Sweep the heap in this reporting function, | |
| so that allocation, which is more common, doesn't have to check extraCost. | |
| (JSC::Heap::heapAllocate): Run destructors right before recycling a | |
| garbage cell. This has better cache utilization than a separate sweep phase. | |
| (JSC::Heap::resizeBlocks): | |
| (JSC::Heap::growBlocks): | |
| (JSC::Heap::shrinkBlocks): New set of functions for managing the size of | |
| the heap, now that the heap doesn't maintain any information about its | |
| size. | |
| (JSC::isPointerAligned): | |
| (JSC::isHalfCellAligned): | |
| (JSC::isPossibleCell): | |
| (JSC::isCellAligned): | |
| (JSC::Heap::markConservatively): Cleaned up this code a bit. | |
| (JSC::Heap::clearMarkBits): | |
| (JSC::Heap::markedCells): Some helper functions for examining the the mark | |
| bitmap. | |
| (JSC::Heap::sweep): Simplified this function by using a DeadObjectIterator. | |
| (JSC::Heap::markRoots): Reordered some operations for clarity. | |
| (JSC::Heap::objectCount): | |
| (JSC::Heap::addToStatistics): | |
| (JSC::Heap::statistics): Rewrote these functions to calculate an object | |
| count on demand, since the heap doesn't maintain this information by | |
| itself. | |
| (JSC::Heap::reset): New function for resetting the heap once we've | |
| exhausted heap space. | |
| (JSC::Heap::collectAllGarbage): This function matches the old collect() | |
| behavior, but it's now an uncommon function used only by API. | |
| * runtime/Collector.h: | |
| (JSC::CollectorBitmap::count): | |
| (JSC::CollectorBitmap::isEmpty): Added some helper functions for managing | |
| the collector mark bitmap. | |
| (JSC::Heap::reportExtraMemoryCost): Changed reporting from cell equivalents | |
| to bytes, so it's easier to understand. | |
| * runtime/CollectorHeapIterator.h: | |
| (JSC::CollectorHeapIterator::CollectorHeapIterator): | |
| (JSC::CollectorHeapIterator::operator!=): | |
| (JSC::CollectorHeapIterator::operator*): | |
| (JSC::CollectorHeapIterator::advance): | |
| (JSC::::LiveObjectIterator): | |
| (JSC::::operator): | |
| (JSC::::DeadObjectIterator): | |
| (JSC::::ObjectIterator): New iterators for encapsulating details about | |
| heap layout, and what's live and dead on the heap. | |
| * runtime/JSArray.cpp: | |
| (JSC::JSArray::putSlowCase): | |
| (JSC::JSArray::increaseVectorLength): Delay reporting extra cost until | |
| we're fully constructed, so the heap mark phase won't visit us in an | |
| invalid state. | |
| * runtime/JSCell.h: | |
| (JSC::JSCell::): | |
| (JSC::JSCell::createDummyStructure): | |
| (JSC::JSCell::JSCell): | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::JSGlobalData): | |
| * runtime/JSGlobalData.h: Added a dummy cell to simplify allocation logic. | |
| * runtime/JSString.h: | |
| (JSC::jsSubstring): Don't report extra cost for substrings, since they | |
| share a buffer that's already reported extra cost. | |
| * runtime/Tracing.d: | |
| * runtime/Tracing.h: Changed these dtrace hooks not to report object | |
| counts, since they're no longer cheap to compute. | |
| * runtime/UString.h: Updated for renames. | |
| * runtime/WeakGCMap.h: Added. | |
| (JSC::WeakGCMap::isEmpty): | |
| (JSC::WeakGCMap::uncheckedGet): | |
| (JSC::WeakGCMap::uncheckedBegin): | |
| (JSC::WeakGCMap::uncheckedEnd): | |
| (JSC::::get): | |
| (JSC::::take): | |
| (JSC::::set): | |
| (JSC::::uncheckedRemove): Mentioned above. | |
| * wtf/StdLibExtras.h: | |
| (WTF::bitCount): Added a bit population count function, so the heap can | |
| count live objects to fulfill statistics questions. | |
| The very last cell in the block is not allocated -- should not be marked. | |
| 2009-12-13 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: Export some new symbols. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2009-12-13 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: Removed some old exports. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2009-12-13 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: Use unsigned instead of uint32_t to avoid dependencies. | |
| * wtf/StdLibExtras.h: | |
| (WTF::bitCount): | |
| 2009-12-13 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (speculative Windows build fix). | |
| * runtime/JSGlobalObjectFunctions.cpp: | |
| 2009-12-13 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| https://bugs.webkit.org/show_bug.cgi?id=32496 | |
| Switch remaining cases of string construction to use StringBuilder. | |
| Builds strings using a vector rather than using string append / addition. | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/Executable.cpp: | |
| (JSC::FunctionExecutable::paramString): | |
| * runtime/FunctionConstructor.cpp: | |
| (JSC::constructFunction): | |
| * runtime/JSGlobalObjectFunctions.cpp: | |
| (JSC::encode): | |
| (JSC::decode): | |
| (JSC::globalFuncEscape): | |
| (JSC::globalFuncUnescape): | |
| * runtime/JSONObject.cpp: | |
| (JSC::Stringifier::stringify): | |
| (JSC::Stringifier::indent): | |
| * runtime/JSString.h: | |
| * runtime/LiteralParser.cpp: | |
| (JSC::LiteralParser::Lexer::lexString): | |
| * runtime/NumberPrototype.cpp: | |
| (JSC::integerPartNoExp): | |
| (JSC::numberProtoFuncToFixed): | |
| (JSC::numberProtoFuncToPrecision): | |
| * runtime/Operations.h: | |
| (JSC::jsString): | |
| * runtime/StringPrototype.cpp: | |
| (JSC::substituteBackreferencesSlow): | |
| (JSC::substituteBackreferences): | |
| (JSC::stringProtoFuncConcat): | |
| 2009-12-08 Jeremy Moskovich <jeremy@chromium.org> | |
| Reviewed by Eric Seidel. | |
| Add code to allow toggling ATSUI/Core Text rendering at runtime in ComplexTextController. | |
| https://bugs.webkit.org/show_bug.cgi?id=31802 | |
| The goal here is to allow for a zero runtime hit for ports that decide to select | |
| the API at compile time. | |
| When both USE(ATSUI) and USE(CORE_TEXT) are true, the API is toggled | |
| at runtime. Core Text is used for OS Versions >= 10.6. | |
| * wtf/Platform.h: #define USE_CORE_TEXT and USE_ATSUI on Chrome/Mac. | |
| 2009-12-11 Maciej Stachowiak <mjs@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Unify codegen for forward and backward variants of branches | |
| https://bugs.webkit.org/show_bug.cgi?id=32463 | |
| * jit/JIT.h: | |
| (JSC::JIT::emit_op_loop): Implemented in terms of forward variant. | |
| (JSC::JIT::emit_op_loop_if_true): ditto | |
| (JSC::JIT::emitSlow_op_loop_if_true): ditto | |
| (JSC::JIT::emit_op_loop_if_false): ditto | |
| (JSC::JIT::emitSlow_op_loop_if_false): ditto | |
| (JSC::JIT::emit_op_loop_if_less): ditto | |
| (JSC::JIT::emitSlow_op_loop_if_less): ditto | |
| * jit/JITOpcodes.cpp: | |
| 2009-12-11 Sam Weinig <sam@webkit.org> | |
| Reviewed by Anders Carlsson. | |
| Allow WTFs concept of the main thread to differ from pthreads when necessary. | |
| * wtf/ThreadingPthreads.cpp: | |
| (WTF::initializeThreading): | |
| (WTF::isMainThread): | |
| * wtf/mac/MainThreadMac.mm: | |
| (WTF::initializeMainThreadPlatform): | |
| (WTF::scheduleDispatchFunctionsOnMainThread): | |
| 2009-12-11 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=32454 | |
| Refactor construction of simple strings to avoid string concatenation. | |
| Building strings through concatenation has a memory and performance cost - | |
| a memory cost since we must over-allocate the buffer to leave space to append | |
| into, and performance in that the string may still require reallocation (and | |
| thus copying during construction). Instead move the full construction to | |
| within a single function call (makeString), so that the arguments' lengths | |
| can be calculated and an appropriate sized buffer allocated before copying | |
| any characters. | |
| ~No performance change (~2% progression on date tests). | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::escapeQuotes): | |
| (JSC::valueToSourceString): | |
| (JSC::constantName): | |
| (JSC::idName): | |
| (JSC::CodeBlock::registerName): | |
| (JSC::regexpToSourceString): | |
| (JSC::regexpName): | |
| * bytecompiler/NodesCodegen.cpp: | |
| (JSC::substitute): | |
| * profiler/Profiler.cpp: | |
| (JSC::Profiler::createCallIdentifier): | |
| * runtime/DateConstructor.cpp: | |
| (JSC::callDate): | |
| * runtime/DateConversion.cpp: | |
| (JSC::formatDate): | |
| (JSC::formatDateUTCVariant): | |
| (JSC::formatTime): | |
| (JSC::formatTimeUTC): | |
| * runtime/DateConversion.h: | |
| (JSC::): | |
| * runtime/DatePrototype.cpp: | |
| (JSC::dateProtoFuncToString): | |
| (JSC::dateProtoFuncToUTCString): | |
| (JSC::dateProtoFuncToDateString): | |
| (JSC::dateProtoFuncToTimeString): | |
| (JSC::dateProtoFuncToGMTString): | |
| * runtime/ErrorPrototype.cpp: | |
| (JSC::errorProtoFuncToString): | |
| * runtime/ExceptionHelpers.cpp: | |
| (JSC::createUndefinedVariableError): | |
| (JSC::createErrorMessage): | |
| (JSC::createInvalidParamError): | |
| * runtime/FunctionPrototype.cpp: | |
| (JSC::insertSemicolonIfNeeded): | |
| (JSC::functionProtoFuncToString): | |
| * runtime/ObjectPrototype.cpp: | |
| (JSC::objectProtoFuncToString): | |
| * runtime/RegExpConstructor.cpp: | |
| (JSC::constructRegExp): | |
| * runtime/RegExpObject.cpp: | |
| (JSC::RegExpObject::match): | |
| * runtime/RegExpPrototype.cpp: | |
| (JSC::regExpProtoFuncCompile): | |
| (JSC::regExpProtoFuncToString): | |
| * runtime/StringPrototype.cpp: | |
| (JSC::stringProtoFuncBig): | |
| (JSC::stringProtoFuncSmall): | |
| (JSC::stringProtoFuncBlink): | |
| (JSC::stringProtoFuncBold): | |
| (JSC::stringProtoFuncFixed): | |
| (JSC::stringProtoFuncItalics): | |
| (JSC::stringProtoFuncStrike): | |
| (JSC::stringProtoFuncSub): | |
| (JSC::stringProtoFuncSup): | |
| (JSC::stringProtoFuncFontcolor): | |
| (JSC::stringProtoFuncFontsize): | |
| (JSC::stringProtoFuncAnchor): | |
| * runtime/UString.h: | |
| (JSC::): | |
| (JSC::makeString): | |
| 2009-12-10 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=32400 | |
| Switch remaining cases of string addition to use ropes. | |
| Re-landing r51975 - added toPrimitiveString method, | |
| performs toPrimitive then subsequent toString operations. | |
| ~1% progression on Sunspidey. | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * runtime/JSString.h: | |
| (JSC::JSString::JSString): | |
| (JSC::JSString::appendStringInConstruct): | |
| * runtime/Operations.cpp: | |
| (JSC::jsAddSlowCase): | |
| * runtime/Operations.h: | |
| (JSC::jsString): | |
| (JSC::jsAdd): | |
| 2009-12-11 Adam Roben <aroben@apple.com> | |
| Windows build fix | |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added | |
| $(WebKitOutputDir)/include/private to the include path. | |
| 2009-12-11 Adam Roben <aroben@apple.com> | |
| Move QuartzCorePresent.h to include/private | |
| This fixes other projects that use wtf/Platform.h | |
| Rubber-stamped by Steve Falkenburg. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Let VS do its thang. | |
| * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Write | |
| QuartzCorePresent.h to $(WebKitOutputDir)/include/private. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
| * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: | |
| Added $(WebKitOutputDir)/include/private to the include path. | |
| 2009-12-11 Adam Roben <aroben@apple.com> | |
| Fix clean builds and everything rebuilding on every build | |
| Reviewed by Sam Weinig. | |
| * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Don't | |
| write out QuartzCorePresent.h if it exists but is older than | |
| QuartzCore.h. Also, create the directory we write QuartzCorePresent.h | |
| into first. | |
| 2009-12-11 Adam Roben <aroben@apple.com> | |
| Windows build fix for systems with spaces in their paths | |
| * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Quote some paths. | |
| 2009-12-11 Chris Marrin <cmarrin@apple.com> | |
| Reviewed by Adam Roben. | |
| Add check for presence of QuartzCore headers | |
| https://bugs.webkit.org/show_bug.cgi?id=31856 | |
| The script now checks for the presence of QuartzCore.h. If present | |
| it will turn on ACCELERATED_COMPOSITING and 3D_RENDERING to enable | |
| HW compositing on Windows. The script writes QuartzCorePresent.h to | |
| the build directory which has a define telling whether QuartzCore is | |
| present. | |
| * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: | |
| * wtf/Platform.h: | |
| 2009-12-11 Kent Tamura <tkent@chromium.org> | |
| Reviewed by Darin Adler. | |
| Fix a problem that JSC::gregorianDateTimeToMS() returns a negative | |
| value for a huge year value. | |
| https://bugs.webkit.org/show_bug.cgi?id=32304 | |
| * wtf/DateMath.cpp: | |
| (WTF::dateToDaysFrom1970): Renamed from dateToDayInYear, and changed the return type to double. | |
| (WTF::calculateDSTOffset): Follow the dateToDaysFrom1970() change. | |
| (WTF::timeClip): Use maxECMAScriptTime. | |
| (JSC::gregorianDateTimeToMS): Follow the dateToDaysFrom1970() change. | |
| 2009-12-10 Adam Barth <abarth@webkit.org> | |
| No review, rolling out r51975. | |
| http://trac.webkit.org/changeset/51975 | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * runtime/JSString.h: | |
| (JSC::JSString::JSString): | |
| (JSC::JSString::appendStringInConstruct): | |
| * runtime/Operations.cpp: | |
| (JSC::jsAddSlowCase): | |
| * runtime/Operations.h: | |
| (JSC::jsString): | |
| (JSC::jsAdd): | |
| 2009-12-10 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Incorrect caching of prototype lookup with dictionary base | |
| https://bugs.webkit.org/show_bug.cgi?id=32402 | |
| Make sure we don't add cached prototype lookup to the proto_list | |
| lookup chain if the top level object is a dictionary. | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::tryCacheGetByID): | |
| 2009-12-10 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=32400 | |
| Switch remaining cases of string addition to use ropes. | |
| ~1% progression on Sunspidey. | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * runtime/JSString.h: | |
| (JSC::JSString::JSString): | |
| (JSC::JSString::appendStringInConstruct): | |
| * runtime/Operations.cpp: | |
| (JSC::jsAddSlowCase): | |
| * runtime/Operations.h: | |
| (JSC::jsString): | |
| (JSC::jsAdd): | |
| 2009-12-10 Kent Hansen <kent.hansen@nokia.com> | |
| Reviewed by Geoffrey Garen. | |
| Remove JSObject::getPropertyAttributes() and all usage of it. | |
| https://bugs.webkit.org/show_bug.cgi?id=31933 | |
| getOwnPropertyDescriptor() should be used instead. | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.order: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * debugger/DebuggerActivation.cpp: | |
| (JSC::DebuggerActivation::getOwnPropertyDescriptor): | |
| * debugger/DebuggerActivation.h: | |
| * runtime/JSObject.cpp: | |
| (JSC::JSObject::propertyIsEnumerable): | |
| * runtime/JSObject.h: | |
| * runtime/JSVariableObject.cpp: | |
| * runtime/JSVariableObject.h: | |
| 2009-12-10 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt & Mark Rowe. | |
| https://bugs.webkit.org/show_bug.cgi?id=32367 | |
| Add support for short Ropes (up to 3 entries) inline within JSString. | |
| (rather than externally allocating an object to hold the rope). | |
| Switch jsAdd of (JSString* + JSString*) to now make use of Ropes. | |
| ~1% progression on Sunspidey. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * runtime/JSString.cpp: | |
| (JSC::JSString::resolveRope): | |
| (JSC::JSString::toBoolean): | |
| (JSC::JSString::getStringPropertyDescriptor): | |
| * runtime/JSString.h: | |
| (JSC::JSString::Rope::Fiber::deref): | |
| (JSC::JSString::Rope::Fiber::ref): | |
| (JSC::JSString::Rope::Fiber::refAndGetLength): | |
| (JSC::JSString::Rope::append): | |
| (JSC::JSString::JSString): | |
| (JSC::JSString::~JSString): | |
| (JSC::JSString::value): | |
| (JSC::JSString::tryGetValue): | |
| (JSC::JSString::length): | |
| (JSC::JSString::canGetIndex): | |
| (JSC::JSString::appendStringInConstruct): | |
| (JSC::JSString::appendValueInConstructAndIncrementLength): | |
| (JSC::JSString::isRope): | |
| (JSC::JSString::string): | |
| (JSC::JSString::ropeLength): | |
| (JSC::JSString::getStringPropertySlot): | |
| * runtime/Operations.h: | |
| (JSC::jsString): | |
| (JSC::jsAdd): | |
| (JSC::resolveBase): | |
| 2009-12-09 Anders Carlsson <andersca@apple.com> | |
| Reviewed by Geoffrey Garen. | |
| Fix three more things found by compiling with clang++. | |
| * runtime/Structure.h: | |
| (JSC::StructureTransitionTable::reifySingleTransition): | |
| Add the 'std' qualifier to the call to make_pair. | |
| * wtf/DateMath.cpp: | |
| (WTF::initializeDates): | |
| Incrementing a bool is deprecated according to the C++ specification. | |
| * wtf/PtrAndFlags.h: | |
| (WTF::PtrAndFlags::PtrAndFlags): | |
| Name lookup should not be done in dependent bases, so explicitly qualify the call to set. | |
| 2009-12-09 Maciej Stachowiak <mjs@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Google reader gets stuck in the "Loading..." state and does not complete | |
| https://bugs.webkit.org/show_bug.cgi?id=32256 | |
| <rdar://problem/7456388> | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitSlow_op_jless): Fix some backward branches. | |
| 2009-12-09 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=32228 | |
| Make destruction of ropes non-recursive to prevent stack exhaustion. | |
| Also, pass a UString& into initializeFiber rather than a Ustring::Rep*, | |
| since the Rep is not being ref counted this could result in usage of a | |
| Rep with refcount zero (where the Rep comes from a temporary UString | |
| returned from a function). | |
| * runtime/JSString.cpp: | |
| (JSC::JSString::Rope::destructNonRecursive): | |
| (JSC::JSString::Rope::~Rope): | |
| * runtime/JSString.h: | |
| (JSC::JSString::Rope::initializeFiber): | |
| * runtime/Operations.h: | |
| (JSC::concatenateStrings): | |
| 2009-12-09 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
| Reviewed by Eric Seidel. | |
| https://bugs.webkit.org/show_bug.cgi?id=31930 | |
| Update to r51457. ASSERTs changed to COMPILE_ASSERTs. | |
| The speedup is 25%. | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::VPtrSet::VPtrSet): | |
| 2009-12-09 Steve Block <steveblock@google.com> | |
| Reviewed by Adam Barth. | |
| Updates Android Makefiles with latest additions. | |
| https://bugs.webkit.org/show_bug.cgi?id=32278 | |
| * Android.mk: Modified. | |
| * Android.v8.wtf.mk: Modified. | |
| 2009-12-09 Sam Weinig <sam@webkit.org> | |
| Reviewed by Gavin Barraclough. | |
| Fix a bug found while trying to compile JavaScriptCore with clang++. | |
| * yarr/RegexPattern.h: | |
| (JSC::Yarr::PatternTerm::PatternTerm): Don't self assign here. Use false instead. | |
| 2009-12-09 Anders Carlsson <andersca@apple.com> | |
| Reviewed by Sam Weinig. | |
| Attempt to fix the Windows build. | |
| * wtf/FastMalloc.h: | |
| 2009-12-09 Anders Carlsson <andersca@apple.com> | |
| Reviewed by Sam Weinig. | |
| Fix some things found while trying to compile JavaScriptCore with clang++. | |
| * wtf/FastMalloc.h: | |
| Add correct exception specifications for the allocation/deallocation operators. | |
| * wtf/Vector.h: | |
| * wtf/VectorTraits.h: | |
| Fix a bunch of struct/class mismatches. | |
| 2009-12-08 Maciej Stachowiak <mjs@apple.com> | |
| Reviewed by Darin Adler. | |
| move code generation portions of Nodes.cpp to bytecompiler directory | |
| https://bugs.webkit.org/show_bug.cgi?id=32284 | |
| * bytecompiler/NodesCodegen.cpp: Copied from parser/Nodes.cpp. Removed parts that | |
| are not about codegen. | |
| * parser/Nodes.cpp: Removed everything that is about codegen. | |
| Update build systems: | |
| * Android.mk: | |
| * GNUmakefile.am: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.pri: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * JavaScriptCoreSources.bkl: | |
| 2009-12-08 Kevin Watters <kevinwatters@gmail.com> | |
| Reviewed by Kevin Ollivier. | |
| [wx] Mac plugins support. | |
| https://bugs.webkit.org/show_bug.cgi?id=32236 | |
| * wtf/Platform.h: | |
| 2009-12-08 Dmitry Titov <dimich@chromium.org> | |
| Rubber-stamped by David Levin. | |
| Revert and reopen "Add asserts to RefCounted to make sure ref/deref happens on the right thread." | |
| It may have caused massive increase of reported leaks on the bots. | |
| https://bugs.webkit.org/show_bug.cgi?id=31639 | |
| * GNUmakefile.am: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::Structure): | |
| * wtf/RefCounted.h: | |
| (WTF::RefCountedBase::ref): | |
| (WTF::RefCountedBase::hasOneRef): | |
| (WTF::RefCountedBase::refCount): | |
| (WTF::RefCountedBase::derefBase): | |
| * wtf/ThreadVerifier.h: Removed. | |
| 2009-12-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
| Reviewed by Darin Adler. | |
| Make WebKit build correctly on FreeBSD, IA64, and Alpha. | |
| Based on work by Petr Salinger <Petr.Salinger@seznam.cz>, | |
| and Colin Watson <cjwatson@ubuntu.com>. | |
| * wtf/Platform.h: | |
| 2009-12-08 Dmitry Titov <dimich@chromium.org> | |
| Reviewed by Darin Adler. | |
| Add asserts to RefCounted to make sure ref/deref happens on the right thread. | |
| https://bugs.webkit.org/show_bug.cgi?id=31639 | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::Structure): Disable thread verification on this class since it uses addressOfCount(). | |
| * wtf/RefCounted.h: | |
| (WTF::RefCountedBase::ref): Add ASSERT. | |
| (WTF::RefCountedBase::hasOneRef): Ditto. | |
| (WTF::RefCountedBase::refCount): Ditto. | |
| (WTF::RefCountedBase::derefBase): Ditto. | |
| (WTF::RefCountedBase::disableThreadVerification): delegate to ThreadVerifier method. | |
| * wtf/ThreadVerifier.h: Added. | |
| (WTF::ThreadVerifier::ThreadVerifier): New Debug-only class to verify that ref/deref of RefCounted is done on the same thread. | |
| (WTF::ThreadVerifier::activate): Activates checks. Called when ref count becomes above 2. | |
| (WTF::ThreadVerifier::deactivate): Deactivates checks. Called when ref count drops below 2. | |
| (WTF::ThreadVerifier::disableThreadVerification): used on objects that should not be checked (StringImpl etc) | |
| (WTF::ThreadVerifier::verifyThread): | |
| * GNUmakefile.am: Add ThreadVerifier.h to the build file. | |
| * JavaScriptCore.gypi: Ditto. | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. | |
| 2009-12-08 Steve Block <steveblock@google.com> | |
| Reviewed by Adam Barth. | |
| [Android] Adds Makefiles for Android port. | |
| https://bugs.webkit.org/show_bug.cgi?id=31325 | |
| * Android.mk: Added. | |
| * Android.v8.wtf.mk: Added. | |
| 2009-12-07 Dmitry Titov <dimich@chromium.org> | |
| Rubber-stamped by Darin Adler. | |
| Remove ENABLE_SHARED_SCRIPT flags | |
| https://bugs.webkit.org/show_bug.cgi?id=32245 | |
| This patch was obtained by "git revert" command and then un-reverting of ChangeLog files. | |
| * Configurations/FeatureDefines.xcconfig: | |
| * wtf/Platform.h: | |
| 2009-12-07 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (Windows build fixage part I). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2009-12-05 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=32184 | |
| Handle out-of-memory conditions with JSC Ropes with a JS exception, rather than crashing. | |
| Switch from using fastMalloc to tryFastMalloc, pass an ExecState to record the exception on. | |
| * API/JSCallbackObjectFunctions.h: | |
| (JSC::::toString): | |
| * API/JSValueRef.cpp: | |
| (JSValueIsStrictEqual): | |
| * JavaScriptCore.exp: | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitEqualityOp): | |
| * debugger/DebuggerCallFrame.cpp: | |
| (JSC::DebuggerCallFrame::functionName): | |
| (JSC::DebuggerCallFrame::calculatedFunctionName): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::callEval): | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * profiler/ProfileGenerator.cpp: | |
| (JSC::ProfileGenerator::addParentForConsoleStart): | |
| * profiler/Profiler.cpp: | |
| (JSC::Profiler::willExecute): | |
| (JSC::Profiler::didExecute): | |
| (JSC::Profiler::createCallIdentifier): | |
| (JSC::createCallIdentifierFromFunctionImp): | |
| * profiler/Profiler.h: | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::arrayProtoFuncIndexOf): | |
| (JSC::arrayProtoFuncLastIndexOf): | |
| * runtime/DateConstructor.cpp: | |
| (JSC::constructDate): | |
| * runtime/FunctionPrototype.cpp: | |
| (JSC::functionProtoFuncToString): | |
| * runtime/InternalFunction.cpp: | |
| (JSC::InternalFunction::name): | |
| (JSC::InternalFunction::displayName): | |
| (JSC::InternalFunction::calculatedDisplayName): | |
| * runtime/InternalFunction.h: | |
| * runtime/JSCell.cpp: | |
| (JSC::JSCell::getString): | |
| * runtime/JSCell.h: | |
| (JSC::JSValue::getString): | |
| * runtime/JSONObject.cpp: | |
| (JSC::gap): | |
| (JSC::Stringifier::Stringifier): | |
| (JSC::Stringifier::appendStringifiedValue): | |
| * runtime/JSObject.cpp: | |
| (JSC::JSObject::putDirectFunction): | |
| (JSC::JSObject::putDirectFunctionWithoutTransition): | |
| (JSC::JSObject::defineOwnProperty): | |
| * runtime/JSObject.h: | |
| * runtime/JSPropertyNameIterator.cpp: | |
| (JSC::JSPropertyNameIterator::get): | |
| * runtime/JSString.cpp: | |
| (JSC::JSString::Rope::~Rope): | |
| (JSC::JSString::resolveRope): | |
| (JSC::JSString::getPrimitiveNumber): | |
| (JSC::JSString::toNumber): | |
| (JSC::JSString::toString): | |
| (JSC::JSString::toThisString): | |
| (JSC::JSString::getStringPropertyDescriptor): | |
| * runtime/JSString.h: | |
| (JSC::JSString::Rope::createOrNull): | |
| (JSC::JSString::Rope::operator new): | |
| (JSC::JSString::value): | |
| (JSC::JSString::tryGetValue): | |
| (JSC::JSString::getIndex): | |
| (JSC::JSString::getStringPropertySlot): | |
| (JSC::JSValue::toString): | |
| * runtime/JSValue.h: | |
| * runtime/NativeErrorConstructor.cpp: | |
| (JSC::NativeErrorConstructor::NativeErrorConstructor): | |
| * runtime/Operations.cpp: | |
| (JSC::JSValue::strictEqualSlowCase): | |
| * runtime/Operations.h: | |
| (JSC::JSValue::equalSlowCaseInline): | |
| (JSC::JSValue::strictEqualSlowCaseInline): | |
| (JSC::JSValue::strictEqual): | |
| (JSC::jsLess): | |
| (JSC::jsLessEq): | |
| (JSC::jsAdd): | |
| (JSC::concatenateStrings): | |
| * runtime/PropertyDescriptor.cpp: | |
| (JSC::PropertyDescriptor::equalTo): | |
| * runtime/PropertyDescriptor.h: | |
| * runtime/StringPrototype.cpp: | |
| (JSC::stringProtoFuncReplace): | |
| (JSC::stringProtoFuncToLowerCase): | |
| (JSC::stringProtoFuncToUpperCase): | |
| 2009-12-07 Nikolas Zimmermann <nzimmermann@rim.com> | |
| Reviewed by Holger Freyther. | |
| Turn on (SVG) Filters support, by default. | |
| https://bugs.webkit.org/show_bug.cgi?id=32224 | |
| * Configurations/FeatureDefines.xcconfig: Enable FILTERS build flag. | |
| 2009-12-07 Steve Falkenburg <sfalken@apple.com> | |
| Build fix. Be flexible about which version of ICU is used on Windows. | |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Add optional xcopy commands to copy ICU 4.2. | |
| 2009-12-07 Maciej Stachowiak <mjs@apple.com> | |
| Reviewed by Oliver Hunt. | |
| op_loop_if_less JIT codegen is broken for 64-bit | |
| https://bugs.webkit.org/show_bug.cgi?id=32221 | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_loop_if_false): Fix codegen in this version - test was backwards. | |
| 2009-12-07 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Object.create fails if properties on the descriptor are getters | |
| https://bugs.webkit.org/show_bug.cgi?id=32219 | |
| Correctly initialise the PropertySlots with the descriptor object. | |
| * runtime/ObjectConstructor.cpp: | |
| (JSC::toPropertyDescriptor): | |
| 2009-12-06 Maciej Stachowiak <mjs@apple.com> | |
| Not reviewed, build fix. | |
| Actually tested 64-bit *and* 32-bit build this time. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_loop_if_false): | |
| 2009-12-06 Maciej Stachowiak <mjs@apple.com> | |
| Not reviewed, build fix. | |
| Really really fix 64-bit build for prior patch (actually tested this time). | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_loop_if_false): | |
| (JSC::JIT::emitSlow_op_loop_if_false): | |
| 2009-12-06 Maciej Stachowiak <mjs@apple.com> | |
| Not reviewed, build fix. | |
| Really fix 64-bit build for prior patch. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitSlow_op_jless): | |
| 2009-12-06 Maciej Stachowiak <mjs@apple.com> | |
| Not reviewed, build fix. | |
| Fix 64-bit build for prior patch. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emitSlow_op_loop_if_less): | |
| 2009-12-05 Maciej Stachowiak <mjs@apple.com> | |
| Reviewed by Oliver Hunt. | |
| conway benchmark spends half it's time in op_less (jump fusion fails) | |
| https://bugs.webkit.org/show_bug.cgi?id=32190 | |
| <1% speedup on SunSpider and V8 | |
| 2x speedup on "conway" benchmark | |
| Two optimizations: | |
| 1) Improve codegen for logical operators &&, || and ! in a condition context | |
| When generating code for combinations of &&, || and !, in a | |
| condition context (i.e. in an if statement or loop condition), we | |
| used to produce a value, and then separately jump based on its | |
| truthiness. Now we pass the false and true targets in, and let the | |
| logical operators generate jumps directly. This helps in four | |
| ways: | |
| a) Individual clauses of a short-circuit logical operator can now | |
| jump directly to the then or else clause of an if statement (or to | |
| the top or exit of a loop) instead of jumping to a jump. | |
| b) It used to be that jump fusion with the condition of the first | |
| clause of a logical operator was inhibited, because the register | |
| was ref'd to be used later, in the actual condition jump; this no | |
| longer happens since a jump straight to the final target is | |
| generated directly. | |
| c) It used to be that jump fusion with the condition of the second | |
| clause of a logical operator was inhibited, because there was a | |
| jump target right after the second clause and before the actual | |
| condition jump. But now it's no longer necessary for the first | |
| clause to jump there so jump fusion is not blocked. | |
| d) We avoid generating excess mov statements in some cases. | |
| As a concrete example this source: | |
| if (!((x < q && y < q) || (t < q && z < q))) { | |
| // ... | |
| } | |
| Used to generate this bytecode: | |
| [ 34] less r1, r-15, r-19 | |
| [ 38] jfalse r1, 7(->45) | |
| [ 41] less r1, r-16, r-19 | |
| [ 45] jtrue r1, 14(->59) | |
| [ 48] less r1, r-17, r-19 | |
| [ 52] jfalse r1, 7(->59) | |
| [ 55] less r1, r-18, r-19 | |
| [ 59] jtrue r1, 17(->76) | |
| And now generates this bytecode (also taking advantage of the second optimization below): | |
| [ 34] jnless r-15, r-19, 8(->42) | |
| [ 38] jless r-16, r-19, 26(->64) | |
| [ 42] jnless r-17, r-19, 8(->50) | |
| [ 46] jless r-18, r-19, 18(->64) | |
| Note the jump fusion and the fact that there's less jump | |
| indirection - three of the four jumps go straight to the target | |
| clause instead of indirecting through another jump. | |
| 2) Implement jless opcode to take advantage of the above, since we'll now often generate | |
| a less followed by a jtrue where fusion is not forbidden. | |
| * parser/Nodes.h: | |
| (JSC::ExpressionNode::hasConditionContextCodegen): Helper function to determine | |
| whether a node supports special conditional codegen. Return false as this is the default. | |
| (JSC::ExpressionNode::emitBytecodeInConditionContext): Assert not reached - only really | |
| defined for nodes that do have conditional codegen. | |
| (JSC::UnaryOpNode::expr): Add const version. | |
| (JSC::LogicalNotNode::hasConditionContextCodegen): Returne true only if subexpression | |
| supports it. | |
| (JSC::LogicalOpNode::hasConditionContextCodegen): Return true. | |
| * parser/Nodes.cpp: | |
| (JSC::LogicalNotNode::emitBytecodeInConditionContext): Implemented - just swap | |
| the true and false targets for the child node. | |
| (JSC::LogicalOpNode::emitBytecodeInConditionContext): Implemented - handle jumps | |
| directly, improving codegen quality. Also handles further nested conditional codegen. | |
| (JSC::ConditionalNode::emitBytecode): Use condition context codegen when available. | |
| (JSC::IfNode::emitBytecode): ditto | |
| (JSC::IfElseNode::emitBytecode): ditto | |
| (JSC::DoWhileNode::emitBytecode): ditto | |
| (JSC::WhileNode::emitBytecode): ditto | |
| (JSC::ForNode::emitBytecode): ditto | |
| * bytecode/Opcode.h: | |
| - Added loop_if_false opcode - needed now that falsey jumps can be backwards. | |
| - Added jless opcode to take advantage of new fusion opportunities. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::dump): Handle above. | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitJumpIfTrue): Add peephole for less + jtrue ==> jless. | |
| (JSC::BytecodeGenerator::emitJumpIfFalse): Add handling of backwrds falsey jumps. | |
| * bytecompiler/BytecodeGenerator.h: | |
| (JSC::BytecodeGenerator::emitNodeInConditionContext): Wrapper to handle tracking of | |
| overly deep expressions etc. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): Implement the two new opcodes (loop_if_false, jless). | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): Implement JIT support for the two new opcodes. | |
| (JSC::JIT::privateCompileSlowCases): ditto | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_jless): | |
| (JSC::JIT::emitSlow_op_jless): ditto | |
| (JSC::JIT::emitBinaryDoubleOp): ditto | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emitSlow_op_loop_if_less): ditto | |
| (JSC::JIT::emit_op_loop_if_false): ditto | |
| (JSC::JIT::emitSlow_op_loop_if_false): ditto | |
| * jit/JITStubs.cpp: | |
| * jit/JITStubs.h: | |
| (JSC::): | |
| 2009-12-04 Kent Hansen <kent.hansen@nokia.com> | |
| Reviewed by Darin Adler. | |
| JavaScript delete operator should return false for string properties | |
| https://bugs.webkit.org/show_bug.cgi?id=32012 | |
| * runtime/StringObject.cpp: | |
| (JSC::StringObject::deleteProperty): | |
| 2009-12-03 Drew Wilson <atwilson@chromium.org> | |
| Rolled back r51633 because it causes a perf regression in Chromium. | |
| * wtf/Platform.h: | |
| 2009-12-03 Gavin Barraclough <barraclough@apple.com> | |
| Try and fix the Windows build. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a symbol that should be exported. | |
| 2009-12-03 Mark Rowe <mrowe@apple.com> | |
| Try and fix the Mac build. | |
| * JavaScriptCore.exp: Export a symbol that should be exported. | |
| 2009-12-03 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| REGRESSION(4.0.3-48777): Crash in JSC::ExecState::propertyNames() (Debug-only?) | |
| https://bugs.webkit.org/show_bug.cgi?id=32133 | |
| Work around odd GCC-ism and correct the scopechain for use by | |
| calls made while a cachedcall is active on the callstack. | |
| * interpreter/CachedCall.h: | |
| (JSC::CachedCall::newCallFrame): | |
| * runtime/JSArray.cpp: | |
| (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key): | |
| * runtime/StringPrototype.cpp: | |
| (JSC::stringProtoFuncReplace): | |
| 2009-12-03 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver "Brraaaaiiiinnnnnzzzzzzzz" Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=32136 | |
| Add a rope representation to JSString. Presently JSString always holds its data in UString form. | |
| Instead, allow the result of a string concatenation to be represented in a tree form - with a | |
| variable sized, reference-counted rope node retaining a set of UString::Reps (or other rope nopes). | |
| Strings must still currently be resolved down to a flat UString representation before being used, | |
| but by holding the string in a rope representation during construction we can avoid copying data | |
| until we know the final size of the string. | |
| ~2% progression on SunSpider (~25% on date-format-xparb, ~20% on string-validate-input). | |
| * JavaScriptCore.exp: | |
| - Update exports. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| - Make use of new JSString::length() method to avoid prematurely resolving ropes. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| - Switch the string length trampoline to read the length directly from JSString::m_length, | |
| rather than from the JSString's UString::Rep's 'len' property. | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| - Modify op_add such that addition of two strings, where either or both strings are already | |
| in rope representation, produces a rope as a result. | |
| * runtime/JSString.cpp: | |
| (JSC::JSString::Rope::~Rope): | |
| (JSC::copyChars): | |
| (JSC::JSString::resolveRope): | |
| (JSC::JSString::getPrimitiveNumber): | |
| (JSC::JSString::toBoolean): | |
| (JSC::JSString::toNumber): | |
| (JSC::JSString::toString): | |
| (JSC::JSString::toThisString): | |
| (JSC::JSString::getStringPropertyDescriptor): | |
| * runtime/JSString.h: | |
| (JSC::JSString::Rope::Fiber::Fiber): | |
| (JSC::JSString::Rope::Fiber::destroy): | |
| (JSC::JSString::Rope::Fiber::isRope): | |
| (JSC::JSString::Rope::Fiber::rope): | |
| (JSC::JSString::Rope::Fiber::string): | |
| (JSC::JSString::Rope::create): | |
| (JSC::JSString::Rope::initializeFiber): | |
| (JSC::JSString::Rope::ropeLength): | |
| (JSC::JSString::Rope::stringLength): | |
| (JSC::JSString::Rope::fibers): | |
| (JSC::JSString::Rope::Rope): | |
| (JSC::JSString::Rope::operator new): | |
| (JSC::JSString::JSString): | |
| (JSC::JSString::value): | |
| (JSC::JSString::length): | |
| (JSC::JSString::isRope): | |
| (JSC::JSString::rope): | |
| (JSC::JSString::string): | |
| (JSC::JSString::canGetIndex): | |
| (JSC::jsSingleCharacterSubstring): | |
| (JSC::JSString::getIndex): | |
| (JSC::jsSubstring): | |
| (JSC::JSString::getStringPropertySlot): | |
| - Add rope form. | |
| * runtime/Operations.h: | |
| (JSC::jsAdd): | |
| (JSC::concatenateStrings): | |
| - Update string concatenation, and addition of ropes, to produce ropes. | |
| * runtime/StringObject.cpp: | |
| (JSC::StringObject::getOwnPropertyNames): | |
| - Make use of new JSString::length() method to avoid prematurely resolving ropes. | |
| 2009-11-23 Jeremy Moskovich <jeremy@chromium.org> | |
| Reviewed by Eric Seidel. | |
| Switch Chrome/Mac to use Core Text APIs rather than ATSUI APIs. | |
| https://bugs.webkit.org/show_bug.cgi?id=31802 | |
| No test since this is already covered by existing pixel tests. | |
| * wtf/Platform.h: #define USE_CORE_TEXT for Chrome/Mac. | |
| 2009-12-02 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Add files missed in prior patch. | |
| * runtime/JSZombie.cpp: | |
| (JSC::): | |
| (JSC::JSZombie::leakedZombieStructure): | |
| * runtime/JSZombie.h: Added. | |
| (JSC::JSZombie::JSZombie): | |
| (JSC::JSZombie::isZombie): | |
| (JSC::JSZombie::classInfo): | |
| (JSC::JSZombie::isGetterSetter): | |
| (JSC::JSZombie::isAPIValueWrapper): | |
| (JSC::JSZombie::isPropertyNameIterator): | |
| (JSC::JSZombie::getCallData): | |
| (JSC::JSZombie::getConstructData): | |
| (JSC::JSZombie::getUInt32): | |
| (JSC::JSZombie::toPrimitive): | |
| (JSC::JSZombie::getPrimitiveNumber): | |
| (JSC::JSZombie::toBoolean): | |
| (JSC::JSZombie::toNumber): | |
| (JSC::JSZombie::toString): | |
| (JSC::JSZombie::toObject): | |
| (JSC::JSZombie::markChildren): | |
| (JSC::JSZombie::put): | |
| (JSC::JSZombie::deleteProperty): | |
| (JSC::JSZombie::toThisObject): | |
| (JSC::JSZombie::toThisString): | |
| (JSC::JSZombie::toThisJSString): | |
| (JSC::JSZombie::getJSNumber): | |
| (JSC::JSZombie::getOwnPropertySlot): | |
| 2009-12-02 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Add zombies to JSC | |
| https://bugs.webkit.org/show_bug.cgi?id=32103 | |
| Add a compile time flag to make the JSC collector replace "unreachable" | |
| objects with zombie objects. The zombie object is a JSCell subclass that | |
| ASSERTs on any attempt to use the JSCell methods. In addition there are | |
| a number of additional assertions in bottleneck code to catch zombie usage | |
| as quickly as possible. | |
| Grrr. Argh. Brains. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * interpreter/Register.h: | |
| (JSC::Register::Register): | |
| * runtime/ArgList.h: | |
| (JSC::MarkedArgumentBuffer::append): | |
| (JSC::ArgList::ArgList): | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::destroy): | |
| (JSC::Heap::sweep): | |
| * runtime/Collector.h: | |
| * runtime/JSCell.h: | |
| (JSC::JSCell::isZombie): | |
| (JSC::JSValue::isZombie): | |
| * runtime/JSValue.h: | |
| (JSC::JSValue::decode): | |
| (JSC::JSValue::JSValue): | |
| * wtf/Platform.h: | |
| 2009-12-01 Jens Alfke <snej@chromium.org> | |
| Reviewed by Darin Adler. | |
| Added variants of find/contains/add that allow a foreign key type to be used. | |
| This will allow AtomicString-keyed maps to be queried by C string without | |
| having to create a temporary AtomicString (see HTTPHeaderMap.) | |
| The code for this is adapted from the equivalent in HashSet.h. | |
| * wtf/HashMap.h: | |
| (WTF::HashMap::find): | |
| (WTF::HashMap::contains): | |
| (WTF::HashMap::add): | |
| * wtf/HashSet.h: Changed "method" to "function member" in a comment. | |
| 2009-12-01 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
| Revert 51551 because it broke GTK+. | |
| * wtf/Platform.h: | |
| 2009-11-30 Gavin Barraclough <barraclough@apple.com> | |
| Windows Build fix. Reviewed by NOBODY. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2009-11-24 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Bug 31859 - Make world selection for JSC IsolatedWorlds automagical. | |
| WebCore presently has to explicitly specify the world before entering into JSC, | |
| which is a little fragile (particularly since property access via a | |
| getter/setter might invoke execution). Instead derive the current world from | |
| the lexical global object. | |
| Remove the temporary duct tape of willExecute/didExecute virtual hooks on the JSGlobalData::ClientData - these are no longer necessary. | |
| * API/JSBase.cpp: | |
| (JSEvaluateScript): | |
| * API/JSObjectRef.cpp: | |
| (JSObjectCallAsFunction): | |
| * JavaScriptCore.exp: | |
| * runtime/JSGlobalData.cpp: | |
| * runtime/JSGlobalData.h: | |
| 2009-11-30 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| [Qt] Remove obsolete PLATFORM(KDE) code | |
| https://bugs.webkit.org/show_bug.cgi?id=31958 | |
| KDE is now using unpatched QtWebKit. | |
| * parser/Lexer.cpp: Remove obsolete KDE_USE_FINAL guard | |
| * wtf/Platform.h: Remove PLATFORM(KDE) definition and code | |
| section that is guarded with it. | |
| 2009-11-30 Jan-Arve Sæther <jan-arve.saether@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Fix compilation with win32-icc | |
| The Intel compiler does not support the __has_trivial_constructor type | |
| trait. The Intel Compiler can report itself as _MSC_VER >= 1400. The | |
| reason for that is that the Intel Compiler depends on the Microsoft | |
| Platform SDK, and in order to try to be "fully" MS compatible it will | |
| "pretend" to be the same MS compiler as was shipped with the MS PSDK. | |
| (Thus, compiling with win32-icc with VC8 SDK will make the source code | |
| "think" the compiler at hand supports this type trait). | |
| * wtf/TypeTraits.h: | |
| 2009-11-29 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Eric Seidel. | |
| [Qt] Mac build has JIT disabled | |
| https://bugs.webkit.org/show_bug.cgi?id=31828 | |
| * wtf/Platform.h: Enable JIT for Qt Mac builds | |
| 2009-11-28 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Eric Seidel. | |
| Apply workaround for the limitation of VirtualFree with MEM_RELEASE to all ports running on Windows | |
| https://bugs.webkit.org/show_bug.cgi?id=31943 | |
| * runtime/MarkStack.h: | |
| (JSC::MarkStack::MarkStackArray::shrinkAllocation): | |
| 2009-11-28 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| https://bugs.webkit.org/show_bug.cgi?id=31930 | |
| Seems a typo. We don't need ~270k memory to determine the vptrs. | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::VPtrSet::VPtrSet): | |
| 2009-11-27 Shinichiro Hamaji <hamaji@chromium.org> | |
| Unreviewed. | |
| Move GOwnPtr* from wtf to wtf/gtk | |
| https://bugs.webkit.org/show_bug.cgi?id=31793 | |
| Build fix for chromium after r51423. | |
| Exclude gtk directory from chromium build. | |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: | |
| 2009-11-25 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Incorrect behaviour of jneq_null in the interpreter | |
| https://bugs.webkit.org/show_bug.cgi?id=31901 | |
| Correct the logic of jneq_null. This is already covered by existing tests. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| 2009-11-26 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Oliver Hunt. | |
| Move GOwnPtr* from wtf to wtf/gtk | |
| https://bugs.webkit.org/show_bug.cgi?id=31793 | |
| * GNUmakefile.am: Change the path for GOwnPtr.*. | |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: Remove | |
| GOwnPtr.cpp from the exclude list. | |
| * JavaScriptCore.gypi: Change the path for GOwnPtr.*. | |
| * wscript: Remove GOwnPtr.cpp from the exclude list. | |
| * wtf/GOwnPtr.cpp: Removed. | |
| * wtf/GOwnPtr.h: Removed. | |
| * wtf/Threading.h: Change the path for GOwnPtr.h. | |
| * wtf/gtk/GOwnPtr.cpp: Copied from JavaScriptCore/wtf/GOwnPtr.cpp. | |
| * wtf/gtk/GOwnPtr.h: Copied from JavaScriptCore/wtf/GOwnPtr.h. | |
| * wtf/unicode/glib/UnicodeGLib.h: Change the path for GOwnPtr.h. | |
| 2009-11-24 Dmitry Titov <dimich@chromium.org> | |
| Reviewed by Eric Seidel. | |
| Add ENABLE_SHARED_SCRIPT feature define and flag for build-webkit | |
| https://bugs.webkit.org/show_bug.cgi?id=31444 | |
| * Configurations/FeatureDefines.xcconfig: | |
| * wtf/Platform.h: | |
| 2009-11-24 Chris Marrin <cmarrin@apple.com> | |
| Reviewed by Simon Fraser. | |
| Add ability to enable ACCELERATED_COMPOSITING on Windows (currently disabled) | |
| https://bugs.webkit.org/show_bug.cgi?id=27314 | |
| * wtf/Platform.h: | |
| 2009-11-24 Jason Smith <dark.panda@gmail.com> | |
| Reviewed by Alexey Proskuryakov. | |
| RegExp#exec's returned Array-like object behaves differently from | |
| regular Arrays | |
| https://bugs.webkit.org/show_bug.cgi?id=31689 | |
| * JavaScriptCore/runtime/RegExpConstructor.cpp: ensure that undefined | |
| values are added to the returned RegExpMatchesArray | |
| 2009-11-24 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Alexey Proskuryakov. | |
| JSON.stringify performance on undefined is very poor | |
| https://bugs.webkit.org/show_bug.cgi?id=31839 | |
| Switch from a UString to a Vector<UChar> when building | |
| the JSON string, allowing us to safely remove the substr-copy | |
| we otherwise did when unwinding an undefined property. | |
| Also turns out to be a ~5% speedup on stringification. | |
| * runtime/JSONObject.cpp: | |
| (JSC::Stringifier::StringBuilder::append): | |
| (JSC::Stringifier::stringify): | |
| (JSC::Stringifier::Holder::appendNextProperty): | |
| 2009-11-24 Mark Rowe <mrowe@apple.com> | |
| Fix production builds where the source tree may be read-only. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| 2009-11-23 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| Include "config.h" to meet Coding Style Guidelines | |
| https://bugs.webkit.org/show_bug.cgi?id=31792 | |
| * wtf/unicode/UTF8.cpp: | |
| * wtf/unicode/glib/UnicodeGLib.cpp: | |
| * wtf/unicode/wince/UnicodeWince.cpp: | |
| 2009-11-23 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Streamlined some Math functions where we expect or know the result not | |
| to be representable as an int. | |
| SunSpider says 0.6% faster. | |
| * runtime/JSNumberCell.h: | |
| (JSC::JSValue::JSValue): | |
| * runtime/JSValue.h: | |
| (JSC::JSValue::): | |
| (JSC::jsDoubleNumber): | |
| (JSC::JSValue::JSValue): Added a function for making a numeric JSValue | |
| and skipping the "can I encode this as an int?" check, avoiding the | |
| overhead of int <-> double roundtripping and double <-> double comparison | |
| and branching. | |
| * runtime/MathObject.cpp: | |
| (JSC::mathProtoFuncACos): | |
| (JSC::mathProtoFuncASin): | |
| (JSC::mathProtoFuncATan): | |
| (JSC::mathProtoFuncATan2): | |
| (JSC::mathProtoFuncCos): | |
| (JSC::mathProtoFuncExp): | |
| (JSC::mathProtoFuncLog): | |
| (JSC::mathProtoFuncRandom): | |
| (JSC::mathProtoFuncSin): | |
| (JSC::mathProtoFuncSqrt): | |
| (JSC::mathProtoFuncTan): For these functions, which we expect or know | |
| to produce results not representable as ints, call jsDoubleNumber instead | |
| of jsNumber. | |
| 2009-11-23 Mark Rowe <mrowe@apple.com> | |
| Unreviewed. Unbreak the regression tests after r51329. | |
| * API/JSBase.cpp: | |
| (JSEvaluateScript): Null-check clientData before dereferencing it. | |
| * API/JSObjectRef.cpp: | |
| (JSObjectCallAsFunction): Ditto. | |
| 2009-11-23 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Part 1/3 of <rdar://problem/7377477> REGRESSION: Many web pages fail to render after interesting script runs in isolated world | |
| Some clients of the JavaScriptCore API expect to be able to make callbacks over the JSC API, | |
| and for this to automagically cause execution to take place in the world associated with the | |
| global object associated with the ExecState (JSContextRef) passed. However this is not how | |
| things work - the world must be explicitly set within WebCore. | |
| Making this work just for API calls to evaluate & call will be a far from perfect solution, | |
| since direct (non-API) use of JSC still relies on WebCore setting the current world correctly. | |
| A better solution would be to make this all work automagically all throughout WebCore, but this | |
| will require more refactoring. | |
| Since the API is in JSC but worlds only exist in WebCore, add callbacks on the JSGlobalData::ClientData | |
| to allow it to update the current world on entry/exit via the JSC API. This is temporary duck | |
| tape, and should be removed once the current world no longer needs to be explicitly tracked. | |
| * API/JSBase.cpp: | |
| (JSEvaluateScript): | |
| * API/JSObjectRef.cpp: | |
| (JSObjectCallAsFunction): | |
| * JavaScriptCore.exp: | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::ClientData::beginningExecution): | |
| (JSC::JSGlobalData::ClientData::completedExecution): | |
| * runtime/JSGlobalData.h: | |
| 2009-11-23 Steve Block <steveblock@google.com> | |
| Reviewed by Dmitry Titov. | |
| Adds MainThreadAndroid.cpp with Android-specific WTF threading functions. | |
| https://bugs.webkit.org/show_bug.cgi?id=31807 | |
| * wtf/android: Added. | |
| * wtf/android/MainThreadAndroid.cpp: Added. | |
| (WTF::timeoutFired): | |
| (WTF::initializeMainThreadPlatform): | |
| (WTF::scheduleDispatchFunctionsOnMainThread): | |
| 2009-11-23 Alexey Proskuryakov <ap@apple.com> | |
| Reviewed by Brady Eidson. | |
| https://bugs.webkit.org/show_bug.cgi?id=31748 | |
| Make WebSocketHandleCFNet respect proxy auto-configuration files via CFProxySupport | |
| * JavaScriptCore.exp: Export callOnMainThreadAndWait. | |
| 2009-11-23 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| [Symbian] Fix lastIndexOf() for Symbian | |
| https://bugs.webkit.org/show_bug.cgi?id=31773 | |
| Symbian soft floating point library has problems with operators | |
| comparing NaN to numbers. Without a workaround lastIndexOf() | |
| function does not work. | |
| Patch developed by David Leong. | |
| * runtime/StringPrototype.cpp: | |
| (JSC::stringProtoFuncLastIndexOf):Add an extra test | |
| to check for NaN for Symbian. | |
| 2009-11-23 Steve Block <steveblock@google.com> | |
| Reviewed by Eric Seidel. | |
| Android port lacks implementation of atomicIncrement and atomicDecrement. | |
| https://bugs.webkit.org/show_bug.cgi?id=31715 | |
| * wtf/Threading.h: Modified. | |
| (WTF::atomicIncrement): Added Android implementation. | |
| (WTF::atomicDecrement): Added Android implementation. | |
| 2009-11-22 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Unreviewed. | |
| [Qt] Sort source lists and remove obsolete comments | |
| from the build system. | |
| * JavaScriptCore.pri: | |
| 2009-11-21 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Eric Seidel. | |
| [Qt][Mac] Turn on multiple JavaScript threads for QtWebkit on Mac | |
| https://bugs.webkit.org/show_bug.cgi?id=31753 | |
| * wtf/Platform.h: | |
| 2009-11-19 Steve Block <steveblock@google.com> | |
| Android port lacks configuration in Platform.h and config.h. | |
| https://bugs.webkit.org/show_bug.cgi?id=31671 | |
| * wtf/Platform.h: Modified. Added Android-specific configuration. | |
| 2009-11-19 Alexey Proskuryakov <ap@apple.com> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=31690 | |
| Make SocketStreamHandleCFNet work on Windows | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * wtf/MainThread.cpp: | |
| (WTF::FunctionWithContext::FunctionWithContext): | |
| (WTF::dispatchFunctionsFromMainThread): | |
| (WTF::callOnMainThreadAndWait): | |
| * wtf/MainThread.h: | |
| Re-add callOnMainThreadAndWait(), which was removed in bug 23926. | |
| 2009-11-19 Dmitry Titov <dimich@chromium.org> | |
| Reviewed by David Levin. | |
| isMainThread() on Chromium (Mac and Linux) is so slow it timeouts LayoutTests.. | |
| https://bugs.webkit.org/show_bug.cgi?id=31693 | |
| * wtf/ThreadingPthreads.cpp: | |
| (WTF::initializeThreading): grab and use the pthread_t of the main thread instead of ThreadIdentifier. | |
| (WTF::isMainThread): Ditto. | |
| 2009-11-19 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Darin Adler. | |
| Remove HAVE(STRING_H) guard from JavaScriptCore | |
| https://bugs.webkit.org/show_bug.cgi?id=31668 | |
| * config.h: | |
| * runtime/UString.cpp: | |
| 2009-11-19 Dumitru Daniliuc <dumi@chromium.org> | |
| Reviewed by Dmitry Titov. | |
| Fixing a bug in MessageQueue::removeIf() that leads to an | |
| assertion failure. | |
| https://bugs.webkit.org/show_bug.cgi?id=31657 | |
| * wtf/MessageQueue.h: | |
| (WTF::MessageQueue::removeIf): | |
| 2009-11-19 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Darin Adler. | |
| Remove HAVE(FLOAT_H) guard | |
| https://bugs.webkit.org/show_bug.cgi?id=31661 | |
| JavaScriptCore has a dependency on float.h, there is | |
| no need to guard float.h. | |
| * runtime/DatePrototype.cpp: Remove include directive | |
| for float.h as it is included in MathExtras.h already. | |
| * runtime/Operations.cpp: Ditto. | |
| * runtime/UString.cpp: Ditto. | |
| * wtf/dtoa.cpp: Ditto. | |
| * wtf/MathExtras.h: Remove HAVE(FLOAT_H) guard. | |
| * wtf/Platform.h: Ditto. | |
| 2009-11-19 Thiago Macieira <thiago.macieira@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Build fix for 32-bit Sparc machines: these machines are big-endian. | |
| * wtf/Platform.h: | |
| 2009-11-18 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| [Qt] Remove support for Qt v4.3 or older versions | |
| https://bugs.webkit.org/show_bug.cgi?id=29469 | |
| * JavaScriptCore.pro: | |
| * jsc.pro: | |
| * wtf/unicode/qt4/UnicodeQt4.h: | |
| 2009-11-18 Kent Tamura <tkent@chromium.org> | |
| Reviewed by Darin Adler. | |
| Move UString::from(double) implementation to new | |
| WTF::doubleToStringInJavaScriptFormat(), and expose it because WebCore | |
| code will use it. | |
| https://bugs.webkit.org/show_bug.cgi?id=31330 | |
| - Introduce new function createRep(const char*, unsigned) and | |
| UString::UString(const char*, unsigned) to reduce 2 calls to strlen(). | |
| - Fix a bug that dtoa() doesn't update *rve if the input value is NaN | |
| or Infinity. | |
| No new tests because this doesn't change the behavior. | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * runtime/UString.cpp: | |
| (JSC::createRep): | |
| (JSC::UString::UString): | |
| (JSC::UString::from): Move the code to doubleToStringInJavaScriptFormat(). | |
| * runtime/UString.h: | |
| * wtf/dtoa.cpp: | |
| (WTF::dtoa): Fix a bug about rve. | |
| (WTF::append): A helper for doubleToStringInJavaScriptFormat(). | |
| (WTF::doubleToStringInJavaScriptFormat): Move the code from UString::from(double). | |
| * wtf/dtoa.h: | |
| 2009-11-18 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| [Qt] Remove WTF_USE_JAVASCRIPTCORE_BINDINGS as it is no longer used | |
| https://bugs.webkit.org/show_bug.cgi?id=31643 | |
| * JavaScriptCore.pro: | |
| 2009-11-18 Nate Chapin <japhet@chromium.org> | |
| Reviewed by Darin Fisher. | |
| Remove Chromium's unnecessary dependency on wtf's tcmalloc files. | |
| https://bugs.webkit.org/show_bug.cgi?id=31648 | |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: | |
| 2009-11-18 Thiago Macieira <thiago.macieira@nokia.com> | |
| Reviewed by Gavin Barraclough. | |
| [Qt] Implement symbol hiding for JSC's JIT functions. | |
| These functions are implemented directly in assembly, so they need the | |
| proper directives to enable/disable visibility. On ELF systems, it's | |
| .hidden, whereas on Mach-O systems (Mac) it's .private_extern. On | |
| Windows, it's not necessary since you have to explicitly export. I | |
| also implemented the AIX idiom, though it's unlikely anyone will | |
| implement AIX/POWER JIT. | |
| https://bugs.webkit.org/show_bug.cgi?id=30864 | |
| * jit/JITStubs.cpp: | |
| 2009-11-18 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Alexey Proskuryakov. | |
| Interpreter may do an out of range access when throwing an exception in the profiler. | |
| https://bugs.webkit.org/show_bug.cgi?id=31635 | |
| Add bounds check. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::throwException): | |
| 2009-11-18 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| Fix the clobber list of cacheFlush for ARM and Thumb2 on Linux | |
| https://bugs.webkit.org/show_bug.cgi?id=31631 | |
| * jit/ExecutableAllocator.h: | |
| (JSC::ExecutableAllocator::cacheFlush): | |
| 2009-11-18 Harald Fernengel <harald.fernengel@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Fix detection of linux-g++ | |
| Never use "linux-g++*" to check for linux-g++, since this will break embedded | |
| builds which use linux-arm-g++ and friends. Use 'linux*-g++*' to check for any | |
| g++ on linux mkspec. | |
| * JavaScriptCore.pri: | |
| 2009-11-17 Jon Honeycutt <jhoneycutt@apple.com> | |
| Add JSContextRefPrivate.h to list of copied files. | |
| Reviewed by Mark Rowe. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: | |
| 2009-11-17 Martin Robinson <martin.james.robinson@gmail.com> | |
| Reviewed by Adam Barth. | |
| [GTK] Style cleanup for GOwnPtr | |
| https://bugs.webkit.org/show_bug.cgi?id=31506 | |
| Remove forward declaration in GOwnPtr and do some style cleanup. | |
| * wtf/GOwnPtr.cpp: | |
| * wtf/GOwnPtr.h: | |
| (WTF::GOwnPtr::GOwnPtr): | |
| (WTF::GOwnPtr::~GOwnPtr): | |
| (WTF::GOwnPtr::get): | |
| (WTF::GOwnPtr::release): | |
| (WTF::GOwnPtr::outPtr): | |
| (WTF::GOwnPtr::set): | |
| (WTF::GOwnPtr::clear): | |
| (WTF::GOwnPtr::operator*): | |
| (WTF::GOwnPtr::operator->): | |
| (WTF::GOwnPtr::operator!): | |
| (WTF::GOwnPtr::operator UnspecifiedBoolType): | |
| (WTF::GOwnPtr::swap): | |
| (WTF::swap): | |
| (WTF::operator==): | |
| (WTF::operator!=): | |
| (WTF::getPtr): | |
| (WTF::freeOwnedGPtr): | |
| 2009-11-17 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Incorrect use of JavaScriptCore API in DumpRenderTree | |
| https://bugs.webkit.org/show_bug.cgi?id=31577 | |
| Add assertions to the 'toJS' functions to catch mistakes like | |
| this early. Restructure existing code which blindly passed potentially | |
| null values to toJS when forwarding exceptions so that a null check is | |
| performed first. | |
| * API/APICast.h: | |
| (toJS): | |
| (toJSForGC): | |
| * API/JSCallbackObjectFunctions.h: | |
| (JSC::::getOwnPropertySlot): | |
| (JSC::::put): | |
| (JSC::::deleteProperty): | |
| (JSC::::construct): | |
| (JSC::::hasInstance): | |
| (JSC::::call): | |
| (JSC::::toNumber): | |
| (JSC::::toString): | |
| (JSC::::staticValueGetter): | |
| (JSC::::callbackGetter): | |
| * API/tests/testapi.c: Fix errors in the API tester. | |
| (MyObject_getProperty): | |
| (MyObject_convertToType): | |
| (EvilExceptionObject_convertToType): | |
| 2009-11-16 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| https://bugs.webkit.org/show_bug.cgi?id=31050 | |
| Minor fixes for JSVALUE32_64: branchConvertDoubleToInt32 | |
| failed on a CortexA8 CPU, but not on a simulator; and | |
| JITCall.cpp modifications was somehow not committed to mainline. | |
| * assembler/ARMAssembler.h: | |
| (JSC::ARMAssembler::fmrs_r): | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::branchConvertDoubleToInt32): | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCall): | |
| 2009-11-16 Joerg Bornemann <joerg.bornemann@trolltech.com> | |
| Reviewed by Simon Hausmann. | |
| Fix Qt build on Windows CE 6. | |
| * JavaScriptCore.pri: Add missing include path. | |
| * wtf/Platform.h: Include ce_time.h for Windows CE 6. | |
| 2009-11-13 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| https://bugs.webkit.org/show_bug.cgi?id=31050 | |
| Adding optimization support for mode JSVALUE32_64 | |
| on ARM systems. | |
| * jit/JIT.h: | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCall): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emit_op_method_check): | |
| (JSC::JIT::compileGetByIdHotPath): | |
| (JSC::JIT::compileGetByIdSlowCase): | |
| (JSC::JIT::emit_op_put_by_id): | |
| 2009-11-14 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| https://bugs.webkit.org/show_bug.cgi?id=31050 | |
| Adding JSVALUE32_64 support for ARM (but not turning it | |
| on by default). All optimizations must be disabled, since | |
| this patch is only the first of a series of patches. | |
| During the work, a lot of x86 specific code revealed and | |
| made platform independent. | |
| See revisions: 50531 50541 50593 50594 50595 | |
| * assembler/ARMAssembler.h: | |
| (JSC::ARMAssembler::): | |
| (JSC::ARMAssembler::fdivd_r): | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::lshift32): | |
| (JSC::MacroAssemblerARM::neg32): | |
| (JSC::MacroAssemblerARM::rshift32): | |
| (JSC::MacroAssemblerARM::branchOr32): | |
| (JSC::MacroAssemblerARM::set8): | |
| (JSC::MacroAssemblerARM::setTest8): | |
| (JSC::MacroAssemblerARM::loadDouble): | |
| (JSC::MacroAssemblerARM::divDouble): | |
| (JSC::MacroAssemblerARM::convertInt32ToDouble): | |
| (JSC::MacroAssemblerARM::zeroDouble): | |
| * jit/JIT.cpp: | |
| * jit/JIT.h: | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| * jit/JITStubs.cpp: | |
| * wtf/StdLibExtras.h: | |
| 2009-11-13 Dominik Röttsches <dominik.roettsches@access-company.com> | |
| Reviewed by Eric Seidel. | |
| Unify TextBoundaries implementations by only relying on WTF Unicode abstractions | |
| https://bugs.webkit.org/show_bug.cgi?id=31468 | |
| Adding isAlphanumeric abstraction, required | |
| by TextBoundaries.cpp. | |
| * wtf/unicode/glib/UnicodeGLib.h: | |
| (WTF::Unicode::isAlphanumeric): | |
| * wtf/unicode/icu/UnicodeIcu.h: | |
| (WTF::Unicode::isAlphanumeric): | |
| 2009-11-13 Norbert Leser <norbert.leser&nokia.com> | |
| Reviewed by Eric Seidel. | |
| Added macros for USERINCLUDE paths within symbian blocks | |
| to guarantee inclusion of respective header files from local path | |
| first (to avoid clashes with same names of header files in system include path). | |
| * JavaScriptCore.pri: | |
| 2009-11-13 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoff Garen. | |
| JSValueProtect and JSValueUnprotect don't protect API wrapper values | |
| https://bugs.webkit.org/show_bug.cgi?id=31485 | |
| Make JSValueProtect/Unprotect use a new 'toJS' function, 'toJSForGC' that | |
| does not attempt to to strip out API wrapper objects. | |
| * API/APICast.h: | |
| (toJSForGC): | |
| * API/JSValueRef.cpp: | |
| (JSValueProtect): | |
| (JSValueUnprotect): | |
| * API/tests/testapi.c: | |
| (makeGlobalNumberValue): | |
| (main): | |
| 2009-11-13 İsmail Dönmez <ismail@namtrac.org> | |
| Reviewed by Antti Koivisto. | |
| Fix typo, ce_time.cpp should be ce_time.c | |
| * JavaScriptCore.pri: | |
| 2009-11-12 Steve VanDeBogart <vandebo@chromium.org> | |
| Reviewed by Adam Barth. | |
| Calculate the time offset only if we were able to parse | |
| the date string. This saves an IPC in Chromium for | |
| invalid date strings. | |
| https://bugs.webkit.org/show_bug.cgi?id=31416 | |
| * wtf/DateMath.cpp: | |
| (WTF::parseDateFromNullTerminatedCharacters): | |
| (JSC::parseDateFromNullTerminatedCharacters): | |
| 2009-11-12 Oliver Hunt <oliver@apple.com> | |
| Rollout r50896 until i can work out why it causes failures. | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitReturn): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::execute): | |
| * parser/Nodes.cpp: | |
| (JSC::EvalNode::emitBytecode): | |
| 2009-11-12 Steve Falkenburg <sfalken@apple.com> | |
| Reviewed by Stephanie Lewis. | |
| Remove LIBRARY directive from def file to fix Debug_All target. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2009-11-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
| Rubber-stamped by Holger Freyther. | |
| Revert r50204, since it makes DRT crash on 32 bits release builds | |
| for GTK+. | |
| * wtf/FastMalloc.h: | |
| 2009-11-12 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Start unifying entry logic for function and eval code. | |
| Eval now uses a ret instruction to end execution, and sets up | |
| a callframe more in line with what we do for function entry. | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitReturn): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::execute): | |
| * parser/Nodes.cpp: | |
| (JSC::EvalNode::emitBytecode): | |
| 2009-11-12 Richard Moe Gustavsen <richard.gustavsen@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| [Qt] Disable pthread_setname_np. | |
| This allows Qt builds on Mac from 10.6 to run on earlier version | |
| where this symbol is not present. | |
| https://bugs.webkit.org/show_bug.cgi?id=31403 | |
| * wtf/Platform.h: | |
| 2009-11-12 Thiago Macieira <thiago.macieira@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| [Qt] Fix linking on Linux 32-bit. | |
| It was missing the ".text" directive at the top of the file, | |
| indicating that code would follow. Without it, the assembler created | |
| "NOTYPE" symbols, which would result in linker errors. | |
| https://bugs.webkit.org/show_bug.cgi?id=30863 | |
| * jit/JITStubs.cpp: | |
| 2009-11-11 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Alexey Proskuryakov. | |
| Refactor multiple JavaScriptCore threads | |
| https://bugs.webkit.org/show_bug.cgi?id=31328 | |
| Remove the id field from the PlatformThread structure | |
| as it is not used. | |
| * runtime/Collector.cpp: | |
| (JSC::getCurrentPlatformThread): | |
| (JSC::suspendThread): | |
| (JSC::resumeThread): | |
| (JSC::getPlatformThreadRegisters): | |
| 2009-11-10 Geoffrey Garen <ggaren@apple.com> | |
| Linux build fix: Added an #include for UINT_MAX. | |
| * runtime/WeakRandom.h: | |
| 2009-11-10 Geoffrey Garen <ggaren@apple.com> | |
| JavaScriptGlue build fix: Marked a file 'private' instead of 'project'. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| 2009-11-10 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Gavin "avGni arBalroguch" Barraclough. | |
| Faster Math.random, based on GameRand. | |
| SunSpider says 1.4% faster. | |
| * GNUmakefile.am: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: Added the header to the project. | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::JSGlobalData): | |
| * runtime/JSGlobalData.h: Use an object to track random number generation | |
| state, initialized to the current time. | |
| * runtime/MathObject.cpp: | |
| (JSC::MathObject::MathObject): | |
| (JSC::mathProtoFuncRandom): Use the new hotness. | |
| * runtime/WeakRandom.h: Added. | |
| (JSC::WeakRandom::WeakRandom): | |
| (JSC::WeakRandom::get): | |
| (JSC::WeakRandom::advance): The new hotness. | |
| 2009-11-09 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Imported the v8 DST cache. | |
| SunSpider says 1.5% faster. | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::resetDateCache): Reset the DST cache when resetting | |
| other date data. | |
| * runtime/JSGlobalData.h: | |
| (JSC::DSTOffsetCache::DSTOffsetCache): | |
| (JSC::DSTOffsetCache::reset): Added a struct for the DST cache. | |
| * wtf/DateMath.cpp: | |
| (WTF::calculateDSTOffsetSimple): | |
| (WTF::calculateDSTOffset): | |
| (WTF::parseDateFromNullTerminatedCharacters): | |
| (JSC::getDSTOffset): | |
| (JSC::gregorianDateTimeToMS): | |
| (JSC::msToGregorianDateTime): | |
| (JSC::parseDateFromNullTerminatedCharacters): | |
| * wtf/DateMath.h: The imported code for probing and updating the cache. | |
| 2009-11-09 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Fixed an edge case that could cause the engine not to notice a timezone | |
| change. | |
| No test because this case would require manual intervention to change | |
| the timezone during the test. | |
| SunSpider reports no change. | |
| * runtime/DateInstanceCache.h: | |
| (JSC::DateInstanceCache::DateInstanceCache): | |
| (JSC::DateInstanceCache::reset): Added a helper function for resetting | |
| this cache. Also, shrank the cache, since we'll be resetting it often. | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::resetDateCache): Include resetting the DateInstanceCache | |
| in resetting Date data. (Otherwise, a cache hit could bypass a necessary | |
| timezone update check.) | |
| 2009-11-09 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Some manual inlining and constant propogation in Date code. | |
| SunSpider reports a 0.4% speedup on date-*, no overall speedup. Shark | |
| says some previously evident stalls are now gone. | |
| * runtime/DateConstructor.cpp: | |
| (JSC::callDate): | |
| * runtime/DateConversion.cpp: | |
| (JSC::formatTime): | |
| (JSC::formatTimeUTC): Split formatTime into UTC and non-UTC variants. | |
| * runtime/DateConversion.h: | |
| * runtime/DateInstance.cpp: | |
| (JSC::DateInstance::calculateGregorianDateTime): | |
| (JSC::DateInstance::calculateGregorianDateTimeUTC): | |
| * runtime/DateInstance.h: | |
| (JSC::DateInstance::gregorianDateTime): | |
| (JSC::DateInstance::gregorianDateTimeUTC): Split gregorianDateTime into | |
| a UTC and non-UTC variant, and split each variant into a fast inline | |
| case and a slow out-of-line case. | |
| * runtime/DatePrototype.cpp: | |
| (JSC::formatLocaleDate): | |
| (JSC::dateProtoFuncToString): | |
| (JSC::dateProtoFuncToUTCString): | |
| (JSC::dateProtoFuncToISOString): | |
| (JSC::dateProtoFuncToDateString): | |
| (JSC::dateProtoFuncToTimeString): | |
| (JSC::dateProtoFuncGetFullYear): | |
| (JSC::dateProtoFuncGetUTCFullYear): | |
| (JSC::dateProtoFuncToGMTString): | |
| (JSC::dateProtoFuncGetMonth): | |
| (JSC::dateProtoFuncGetUTCMonth): | |
| (JSC::dateProtoFuncGetDate): | |
| (JSC::dateProtoFuncGetUTCDate): | |
| (JSC::dateProtoFuncGetDay): | |
| (JSC::dateProtoFuncGetUTCDay): | |
| (JSC::dateProtoFuncGetHours): | |
| (JSC::dateProtoFuncGetUTCHours): | |
| (JSC::dateProtoFuncGetMinutes): | |
| (JSC::dateProtoFuncGetUTCMinutes): | |
| (JSC::dateProtoFuncGetSeconds): | |
| (JSC::dateProtoFuncGetUTCSeconds): | |
| (JSC::dateProtoFuncGetTimezoneOffset): | |
| (JSC::setNewValueFromTimeArgs): | |
| (JSC::setNewValueFromDateArgs): | |
| (JSC::dateProtoFuncSetYear): | |
| (JSC::dateProtoFuncGetYear): Updated for the gregorianDateTime change above. | |
| 2009-11-09 Geoffrey Garen <ggaren@apple.com> | |
| Build fix: export a new symbol. | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2009-11-09 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam "Home Wrecker" Weinig. | |
| Added a tiny cache for Date parsing. | |
| SunSpider says 1.2% faster. | |
| * runtime/DateConversion.cpp: | |
| (JSC::parseDate): Try to reuse the last parsed Date, if present. | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::resetDateCache): | |
| * runtime/JSGlobalData.h: Added storage for last parsed Date. Refactored | |
| this code to make resetting the date cache easier. | |
| * runtime/JSGlobalObject.h: | |
| (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Updated for | |
| refactoring. | |
| * wtf/DateMath.cpp: | |
| (JSC::parseDateFromNullTerminatedCharacters): | |
| * wtf/DateMath.h: Changed ExecState to be first parameter, as is the JSC custom. | |
| 2009-11-09 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Can cache prototype lookups on uncacheable dictionaries. | |
| https://bugs.webkit.org/show_bug.cgi?id=31198 | |
| Replace fromDictionaryTransition with flattenDictionaryObject and | |
| flattenDictionaryStructure. This change is necessary as we need to | |
| guarantee that our attempt to convert away from a dictionary structure | |
| will definitely succeed, and in some cases this requires mutating the | |
| object storage itself. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::tryCacheGetByID): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::tryCacheGetByID): | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * runtime/BatchedTransitionOptimizer.h: | |
| (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer): | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::flattenDictionaryObject): | |
| * runtime/Operations.h: | |
| (JSC::normalizePrototypeChain): | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::flattenDictionaryStructure): | |
| (JSC::comparePropertyMapEntryIndices): | |
| * runtime/Structure.h: | |
| 2009-11-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Not reviewed, build fix. | |
| Remove extra character from r50701. | |
| * JavaScriptCore.pri: | |
| 2009-11-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Not reviewed, build fix. | |
| Revert r50695 because it broke QtWebKit (clean builds). | |
| * JavaScriptCore.pri: | |
| 2009-11-09 Norbert Leser <norbert.leser@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| Prepended $$PWD to GENERATED_SOURCES_DIR to avoid potential ambiguities when included from WebCore.pro. | |
| Some preprocessors consider this GENERATED_SOURCES_DIR relative to current invoking dir (e.g., ./WebCore), | |
| and not the working dir of JavaCriptCore.pri (i.e., ../JavaScriptCore/). | |
| * JavaScriptCore.pri: | |
| 2009-11-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Kenneth Rohde Christiansen. | |
| Use explicit parentheses to silence gcc 4.4 -Wparentheses warnings | |
| https://bugs.webkit.org/show_bug.cgi?id=31040 | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| 2009-11-08 David Levin <levin@chromium.org> | |
| Reviewed by NOBODY (speculative snow leopard and windows build fixes). | |
| * wtf/DateMath.cpp: | |
| (WTF::parseDateFromNullTerminatedCharacters): | |
| (JSC::gregorianDateTimeToMS): | |
| (JSC::msToGregorianDateTime): | |
| (JSC::parseDateFromNullTerminatedCharacters): | |
| * wtf/DateMath.h: | |
| (JSC::GregorianDateTime::GregorianDateTime): | |
| 2009-11-08 David Levin <levin@chromium.org> | |
| Reviewed by NOBODY (chromium build fix). | |
| Hopefully, the last build fix. | |
| Create better separation in DateMath about the JSC | |
| and non-JSC portions. Also, only expose the non-JSC | |
| version in the exports. | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * wtf/DateMath.cpp: | |
| (WTF::parseDateFromNullTerminatedCharacters): | |
| (JSC::getUTCOffset): | |
| (JSC::gregorianDateTimeToMS): | |
| (JSC::msToGregorianDateTime): | |
| (JSC::parseDateFromNullTerminatedCharacters): | |
| * wtf/DateMath.h: | |
| (JSC::gmtoffset): | |
| 2009-11-08 David Levin <levin@chromium.org> | |
| Reviewed by NOBODY (chromium build fix). | |
| For the change in DateMath. | |
| * config.h: | |
| * wtf/DateMath.cpp: | |
| 2009-11-06 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: export some symbols. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2009-11-06 Geoffrey Garen <ggaren@apple.com> | |
| Build fix: updated export file. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| 2009-11-06 Geoffrey Garen <ggaren@apple.com> | |
| Build fix: added some #includes. | |
| * wtf/CurrentTime.h: | |
| * wtf/DateMath.h: | |
| 2009-11-06 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=31197 | |
| Implemented a timezone cache not based on Mac OS X's notify_check API. | |
| If the VM calculates the local timezone offset from UTC, it caches the | |
| result until the end of the current VM invocation. (We don't want to cache | |
| forever, because the user's timezone may change over time.) | |
| This removes notify_* overhead on Mac, and, more significantly, removes | |
| OS time and date call overhead on non-Mac platforms. | |
| ~8% speedup on Date microbenchmark on Mac. SunSpider reports maybe a tiny | |
| speedup on Mac. (Speedup on non-Mac platforms should be even more noticeable.) | |
| * JavaScriptCore.exp: | |
| * interpreter/CachedCall.h: | |
| (JSC::CachedCall::CachedCall): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::execute): | |
| * runtime/JSGlobalObject.h: | |
| (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Made the | |
| DynamicGlobalObjectScope constructor responsible for checking whether a | |
| dynamicGlobalObject has already been set. This eliminated some duplicate | |
| client code, and allowed me to avoid adding even more duplicate client | |
| code. Made DynamicGlobalObjectScope responsible for resetting the | |
| local timezone cache upon first entry to the VM. | |
| * runtime/DateConstructor.cpp: | |
| (JSC::constructDate): | |
| (JSC::callDate): | |
| (JSC::dateParse): | |
| (JSC::dateUTC): | |
| * runtime/DateConversion.cpp: | |
| (JSC::parseDate): | |
| * runtime/DateConversion.h: | |
| * runtime/DateInstance.cpp: | |
| (JSC::DateInstance::gregorianDateTime): | |
| * runtime/DateInstance.h: | |
| * runtime/DateInstanceCache.h: | |
| * runtime/DatePrototype.cpp: | |
| (JSC::setNewValueFromTimeArgs): | |
| (JSC::setNewValueFromDateArgs): | |
| (JSC::dateProtoFuncSetYear): | |
| * runtime/InitializeThreading.cpp: | |
| (JSC::initializeThreadingOnce): | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::JSGlobalData): | |
| * runtime/JSGlobalData.h: | |
| * wtf/DateMath.cpp: | |
| (WTF::getCurrentUTCTime): | |
| (WTF::getCurrentUTCTimeWithMicroseconds): | |
| (WTF::getLocalTime): | |
| (JSC::getUTCOffset): Use the new cache. Also, see below. | |
| (JSC::gregorianDateTimeToMS): | |
| (JSC::msToGregorianDateTime): | |
| (JSC::initializeDates): | |
| (JSC::parseDateFromNullTerminatedCharacters): Simplified the way this function | |
| accounts for the local timezone offset, to accomodate our new caching API, | |
| and a (possibly misguided) caller in WebCore. Also, see below. | |
| * wtf/DateMath.h: | |
| (JSC::GregorianDateTime::GregorianDateTime): Moved most of the code in | |
| DateMath.* into the JSC namespace. The code needed to move so it could | |
| naturally interact with ExecState and JSGlobalData to support caching. | |
| Logically, it seemed right to move it, too, since this code is not really | |
| as low-level as the WTF namespace might imply -- it implements a set of | |
| date parsing and conversion quirks that are finely tuned to the JavaScript | |
| language. Also removed the Mac OS X notify_* infrastructure. | |
| * wtf/CurrentTime.h: | |
| (WTF::currentTimeMS): | |
| (WTF::getLocalTime): Moved the rest of the DateMath code here, and renamed | |
| it to make it consistent with WTF's currentTime function. | |
| 2009-11-06 Gabor Loki <loki@inf.u-szeged.hu> | |
| Unreviewed trivial buildfix after r50595. | |
| Rename the remaining rshiftPtr calls to rshift32 | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_rshift): | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::emitFastArithImmToInt): | |
| 2009-11-06 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Tidy up the shift methods on the macro-assembler interface. | |
| Currently behaviour of shifts of a magnitude > 0x1f is undefined. | |
| Instead defined that all shifts are masked to this range. This makes a lot of | |
| practical sense, both since having undefined behaviour is not particularly | |
| desirable, and because this behaviour is commonly required (particularly since | |
| it is required bt ECMA-262 for shifts). | |
| Update the ARM assemblers to provide this behaviour. Remove (now) redundant | |
| masks from JITArithmetic, and remove rshiftPtr (this was used in case that | |
| could be rewritten in a simpler form using rshift32, only optimized JSVALUE32 | |
| on x86-64, which uses JSVALUE64!) | |
| * assembler/MacroAssembler.h: | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::lshift32): | |
| (JSC::MacroAssemblerARM::rshift32): | |
| * assembler/MacroAssemblerARMv7.h: | |
| (JSC::MacroAssemblerARMv7::lshift32): | |
| (JSC::MacroAssemblerARMv7::rshift32): | |
| * assembler/MacroAssemblerX86_64.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_lshift): | |
| (JSC::JIT::emit_op_rshift): | |
| 2009-11-05 Gavin Barraclough <barraclough@apple.com> | |
| Rubber Stamped by Oliver Hunt. | |
| Remove a magic number (1) from the JIT, instead compute the value with OBJECT_OFFSET. | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::emitPutJITStubArg): | |
| (JSC::JIT::emitPutJITStubArgConstant): | |
| (JSC::JIT::emitGetJITStubArg): | |
| (JSC::JIT::emitPutJITStubArgFromVirtualRegister): | |
| * jit/JITStubCall.h: | |
| (JSC::JITStubCall::JITStubCall): | |
| (JSC::JITStubCall::getArgument): | |
| * jit/JITStubs.h: | |
| 2009-11-05 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| https://bugs.webkit.org/show_bug.cgi?id=31159 | |
| Fix branchDouble behaviour on ARM THUMB2 JIT. | |
| The x86 branchDouble behaviour is reworked, and all JIT | |
| ports should follow the x86 port. See bug 31104 and 31151 | |
| This patch contains a fix for the traditional ARM port | |
| * assembler/ARMAssembler.h: | |
| (JSC::ARMAssembler::): | |
| (JSC::ARMAssembler::fmrs_r): | |
| (JSC::ARMAssembler::ftosid_r): | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::): | |
| (JSC::MacroAssemblerARM::branchDouble): | |
| (JSC::MacroAssemblerARM::branchConvertDoubleToInt32): | |
| 2009-11-05 Chris Jerdonek <chris.jerdonek@gmail.com> | |
| Reviewed by Eric Seidel. | |
| Removed the "this is part of the KDE project" comments from | |
| all *.h, *.cpp, *.idl, and *.pm files. | |
| https://bugs.webkit.org/show_bug.cgi?id=31167 | |
| The maintenance and architecture page in the project wiki lists | |
| this as a task. | |
| This change includes no changes or additions to test cases | |
| since the change affects only comments. | |
| * wtf/wince/FastMallocWince.h: | |
| 2009-11-05 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Use ARMv7 specific encoding for immediate constants on ARMv7 target | |
| https://bugs.webkit.org/show_bug.cgi?id=31060 | |
| * assembler/ARMAssembler.cpp: | |
| (JSC::ARMAssembler::getOp2): Use INVALID_IMM | |
| (JSC::ARMAssembler::getImm): Use encodeComplexImm for complex immediate | |
| (JSC::ARMAssembler::moveImm): Ditto. | |
| (JSC::ARMAssembler::encodeComplexImm): Encode a constant by one or two | |
| instructions or a PC relative load. | |
| * assembler/ARMAssembler.h: Use INVALID_IMM if a constant cannot be | |
| encoded as an immediate constant. | |
| (JSC::ARMAssembler::): | |
| (JSC::ARMAssembler::movw_r): 16-bit immediate load | |
| (JSC::ARMAssembler::movt_r): High halfword 16-bit immediate load | |
| (JSC::ARMAssembler::getImm16Op2): Encode immediate constant for | |
| movw_r and mowt_r | |
| 2009-11-04 Mark Mentovai <mark@chromium.org> | |
| Reviewed by Mark Rowe. | |
| Provide TARGETING_TIGER and TARGETING_LEOPARD as analogues to | |
| BUILDING_ON_TIGER and BUILDING_ON_LEOPARD. The TARGETING_ macros | |
| consider the deployment target; the BUILDING_ON_ macros consider the | |
| headers being built against. | |
| * wtf/Platform.h: | |
| 2009-11-04 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=31151 | |
| Fix branchDouble behaviour on ARM THUMB2 JIT. | |
| The ARMv7 JIT is currently using ARMv7Assembler::ConditionEQ to branch | |
| for DoubleEqualOrUnordered, however this is incorrect - ConditionEQ won't | |
| branch on unordered operands. Similarly, DoubleLessThanOrUnordered & | |
| DoubleLessThanOrEqualOrUnordered use ARMv7Assembler::ConditionLO & | |
| ARMv7Assembler::ConditionLS, whereas they should be using | |
| ARMv7Assembler::ConditionLT & ARMv7Assembler::ConditionLE. | |
| Fix these, and fill out the missing DoubleConditions. | |
| * assembler/MacroAssemblerARMv7.h: | |
| (JSC::MacroAssemblerARMv7::): | |
| (JSC::MacroAssemblerARMv7::branchDouble): | |
| 2009-11-04 Gavin Barraclough <barraclough@apple.com> | |
| Rubber Stamped by Oliver Hunt. | |
| Enable native call optimizations on ARMv7. (Existing ARM_TRADITIONAL | |
| implementation was generic, worked perfectly, just needed turning on). | |
| * jit/JITOpcodes.cpp: | |
| * wtf/Platform.h: | |
| 2009-11-04 Gavin Barraclough <barraclough@apple.com> | |
| Rubber Stamped by Mark Rowe, Oliver Hunt, and Sam Weinig. | |
| Add a missing assert to the ARMv7 JIT. | |
| * assembler/ARMv7Assembler.h: | |
| (JSC::ARMThumbImmediate::ARMThumbImmediate): | |
| 2009-11-04 Mark Rowe <mrowe@apple.com> | |
| Rubber-stamped by Oliver Hunt. | |
| Remove bogus op_ prefix on dumped version of three opcodes. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::dump): | |
| 2009-11-04 Mark Rowe <mrowe@apple.com> | |
| Reviewed by Sam Weinig. | |
| Fix dumping of constants in bytecode so that they aren't printed as large positive register numbers. | |
| We do this by having the registerName function return information about the constant if the register | |
| number corresponds to a constant. This requires that registerName, and several functions that call it, | |
| be converted to member functions of CodeBlock so that the constant value can be retrieved. The | |
| ExecState also needs to be threaded down through these functions so that it can be passed on to | |
| constantName when needed. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::constantName): | |
| (JSC::CodeBlock::registerName): | |
| (JSC::CodeBlock::printUnaryOp): | |
| (JSC::CodeBlock::printBinaryOp): | |
| (JSC::CodeBlock::printConditionalJump): | |
| (JSC::CodeBlock::printGetByIdOp): | |
| (JSC::CodeBlock::printPutByIdOp): | |
| (JSC::CodeBlock::dump): | |
| * bytecode/CodeBlock.h: | |
| (JSC::CodeBlock::isConstantRegisterIndex): | |
| 2009-11-04 Pavel Heimlich <tropikhajma@gmail.com> | |
| Reviewed by Alexey Proskuryakov. | |
| https://bugs.webkit.org/show_bug.cgi?id=30647 | |
| Solaris build failure due to strnstr. | |
| * wtf/StringExtras.h: Enable strnstr on Solaris, too. | |
| 2009-11-04 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=31104 | |
| Refactor x86-specific behaviour out of the JIT. | |
| - Add explicit double branch conditions for ordered and unordered comparisons (presently the brehaviour is a mix). | |
| - Refactor double to int conversion out into the MacroAssembler. | |
| - Remove broken double to int conversion for !JSVALUE32_64 builds - this code was broken and slowing us down, fixing it showed it not to be an improvement. | |
| - Remove exclusion of double to int conversion from (1 % X) cases in JSVALUE32_64 builds - if this was of benefit this is no longer the case; simplify. | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::): | |
| * assembler/MacroAssemblerARMv7.h: | |
| (JSC::MacroAssemblerARMv7::): | |
| * assembler/MacroAssemblerX86Common.h: | |
| (JSC::MacroAssemblerX86Common::): | |
| (JSC::MacroAssemblerX86Common::convertInt32ToDouble): | |
| (JSC::MacroAssemblerX86Common::branchDouble): | |
| (JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32): | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitBinaryDoubleOp): | |
| (JSC::JIT::emit_op_div): | |
| (JSC::JIT::emitSlow_op_jnless): | |
| (JSC::JIT::emitSlow_op_jnlesseq): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_jfalse): | |
| 2009-11-04 Mark Mentovai <mark@chromium.org> | |
| Reviewed by Eric Seidel. | |
| Remove BUILDING_ON_LEOPARD from JavaScriptCore.gyp. This is supposed | |
| to be set as needed only in wtf/Platform.h. | |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: | |
| 2009-11-02 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| REGRESSION (r48573): JSC may incorrectly cache chain lookups with a dictionary at the head of the chain | |
| https://bugs.webkit.org/show_bug.cgi?id=31045 | |
| Add guards to prevent caching of prototype chain lookups with dictionaries at the | |
| head of the chain. Also add a few tighter assertions to cached prototype lookups | |
| to catch this in future. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::tryCacheGetByID): | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::tryCacheGetByID): | |
| 2009-11-02 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Darin Adler. | |
| PLATFORM(CF) should be set when building for Qt on Darwin | |
| https://bugs.webkit.org/show_bug.cgi?id=23671 | |
| * wtf/Platform.h: Turn on CF support if both QT and DARWIN | |
| platforms are defined. | |
| 2009-11-02 Dmitry Titov <dimich@chromium.org> | |
| Reviewed by David Levin. | |
| Remove threadsafe refcounting from tasks used with WTF::MessageQueue. | |
| https://bugs.webkit.org/show_bug.cgi?id=30612 | |
| * wtf/MessageQueue.h: | |
| (WTF::MessageQueue::alwaysTruePredicate): | |
| (WTF::MessageQueue::~MessageQueue): | |
| (WTF::MessageQueue::append): | |
| (WTF::MessageQueue::appendAndCheckEmpty): | |
| (WTF::MessageQueue::prepend): | |
| (WTF::MessageQueue::waitForMessage): | |
| (WTF::MessageQueue::waitForMessageFilteredWithTimeout): | |
| (WTF::MessageQueue::tryGetMessage): | |
| (WTF::MessageQueue::removeIf): | |
| The MessageQueue is changed to act as a queue of OwnPtr<DataType>. It takes ownership | |
| of posted tasks and passes it to the new owner (in another thread) when the task is fetched. | |
| All methods have arguments of type PassOwnPtr<DataType> and return the same type. | |
| * wtf/Threading.cpp: | |
| (WTF::createThread): | |
| Superficial change to trigger rebuild of JSC project on Windows, | |
| workaround for https://bugs.webkit.org/show_bug.cgi?id=30890 | |
| 2009-10-30 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Fixed failing layout test: restore a special case I accidentally deleted. | |
| * runtime/DatePrototype.cpp: | |
| (JSC::setNewValueFromDateArgs): In the case of applying a change to a date | |
| that is NaN, reset the date to 0 *and* then apply the change; don't just | |
| reset the date to 0. | |
| 2009-10-30 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: update for object-to-pointer change. | |
| * runtime/DatePrototype.cpp: | |
| (JSC::formatLocaleDate): | |
| 2009-10-29 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=30942 | |
| Use pointers instead of copies to pass GregorianDateTime objects around. | |
| SunSpider reports a shocking 4.5% speedup on date-format-xparb, and 1.3% | |
| speedup on date-format-tofte. | |
| * runtime/DateInstance.cpp: | |
| (JSC::DateInstance::gregorianDateTime): | |
| * runtime/DateInstance.h: | |
| * runtime/DatePrototype.cpp: | |
| (JSC::formatLocaleDate): | |
| (JSC::dateProtoFuncToString): | |
| (JSC::dateProtoFuncToUTCString): | |
| (JSC::dateProtoFuncToISOString): | |
| (JSC::dateProtoFuncToDateString): | |
| (JSC::dateProtoFuncToTimeString): | |
| (JSC::dateProtoFuncGetFullYear): | |
| (JSC::dateProtoFuncGetUTCFullYear): | |
| (JSC::dateProtoFuncToGMTString): | |
| (JSC::dateProtoFuncGetMonth): | |
| (JSC::dateProtoFuncGetUTCMonth): | |
| (JSC::dateProtoFuncGetDate): | |
| (JSC::dateProtoFuncGetUTCDate): | |
| (JSC::dateProtoFuncGetDay): | |
| (JSC::dateProtoFuncGetUTCDay): | |
| (JSC::dateProtoFuncGetHours): | |
| (JSC::dateProtoFuncGetUTCHours): | |
| (JSC::dateProtoFuncGetMinutes): | |
| (JSC::dateProtoFuncGetUTCMinutes): | |
| (JSC::dateProtoFuncGetSeconds): | |
| (JSC::dateProtoFuncGetUTCSeconds): | |
| (JSC::dateProtoFuncGetTimezoneOffset): | |
| (JSC::setNewValueFromTimeArgs): | |
| (JSC::setNewValueFromDateArgs): | |
| (JSC::dateProtoFuncSetYear): | |
| (JSC::dateProtoFuncGetYear): Renamed getGregorianDateTime to gregorianDateTime, | |
| since it no longer has an out parameter. Uses 0 to indicate invalid dates. | |
| 2009-10-30 Zoltan Horvath <zoltan@webkit.org> | |
| Reviewed by Darin Adler. | |
| Allow custom memory allocation control for JavaScriptCore's ListHashSet | |
| https://bugs.webkit.org/show_bug.cgi?id=30853 | |
| Inherits ListHashSet class from FastAllocBase because it is | |
| instantiated by 'new' in WebCore/rendering/RenderBlock.cpp:1813. | |
| * wtf/ListHashSet.h: | |
| 2009-10-30 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Regression: crash enumerating properties of an object with getters or setters | |
| https://bugs.webkit.org/show_bug.cgi?id=30948 | |
| Add a guard to prevent us trying to cache property enumeration on | |
| objects with getters or setters. | |
| * runtime/JSPropertyNameIterator.cpp: | |
| (JSC::JSPropertyNameIterator::create): | |
| 2009-10-30 Roland Steiner <rolandsteiner@chromium.org> | |
| Reviewed by Eric Seidel. | |
| Remove ENABLE_RUBY guards as discussed with Dave Hyatt and Maciej Stachowiak. | |
| Bug 28420 - Implement HTML5 <ruby> rendering | |
| (https://bugs.webkit.org/show_bug.cgi?id=28420) | |
| No new tests (no functional change). | |
| * Configurations/FeatureDefines.xcconfig: | |
| 2009-10-29 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| REGRESSION (r50218-r50262): E*TRADE accounts page is missing content | |
| https://bugs.webkit.org/show_bug.cgi?id=30947 | |
| <rdar://problem/7348833> | |
| The logic for flagging that a structure has non-enumerable properties | |
| was in addPropertyWithoutTransition, rather than in the core Structure::put | |
| method. Despite this I was unable to produce a testcase that caused | |
| the failure that etrade was experiencing, but the new assertion in | |
| getEnumerablePropertyNames triggers on numerous layout tests without | |
| the fix, so in effecti all for..in enumeration in any test ends up | |
| doing the required consistency check. | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::addPropertyWithoutTransition): | |
| (JSC::Structure::put): | |
| (JSC::Structure::getEnumerablePropertyNames): | |
| (JSC::Structure::checkConsistency): | |
| 2009-10-29 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Add cacheFlush support for Thumb-2 on Linux | |
| https://bugs.webkit.org/show_bug.cgi?id=30865 | |
| * jit/ExecutableAllocator.h: | |
| (JSC::ExecutableAllocator::cacheFlush): | |
| 2009-10-28 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| JSC JIT on ARMv7 cannot link jumps >16Mb range | |
| https://bugs.webkit.org/show_bug.cgi?id=30891 | |
| Start planing all relative jumps as move-32-bit-immediate-to-register-BX. | |
| In the cases where the jump would fall within a relative jump range, use a relative jump. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * assembler/ARMv7Assembler.h: | |
| (JSC::ARMv7Assembler::~ARMv7Assembler): | |
| (JSC::ARMv7Assembler::LinkRecord::LinkRecord): | |
| (JSC::ARMv7Assembler::): | |
| (JSC::ARMv7Assembler::executableCopy): | |
| (JSC::ARMv7Assembler::linkJump): | |
| (JSC::ARMv7Assembler::relinkJump): | |
| (JSC::ARMv7Assembler::setInt32): | |
| (JSC::ARMv7Assembler::isB): | |
| (JSC::ARMv7Assembler::isBX): | |
| (JSC::ARMv7Assembler::isMOV_imm_T3): | |
| (JSC::ARMv7Assembler::isMOVT): | |
| (JSC::ARMv7Assembler::isNOP_T1): | |
| (JSC::ARMv7Assembler::isNOP_T2): | |
| (JSC::ARMv7Assembler::linkJumpAbsolute): | |
| (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmFirst): | |
| (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmSecond): | |
| (JSC::ARMv7Assembler::ARMInstructionFormatter::twoWordOp5i6Imm4Reg4EncodedImm): | |
| * assembler/MacroAssemblerARMv7.h: | |
| (JSC::MacroAssemblerARMv7::makeJump): | |
| (JSC::MacroAssemblerARMv7::makeBranch): | |
| * jit/JIT.h: | |
| * wtf/Platform.h: | |
| 2009-10-28 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoff Garen. | |
| Improve for..in enumeration performance | |
| https://bugs.webkit.org/show_bug.cgi?id=30887 | |
| Improve indexing of an object with a for..in iterator by | |
| identifying cases where get_by_val is being used with a iterator | |
| as the subscript and replace it with a new get_by_pname | |
| bytecode. get_by_pname then optimizes lookups that directly access | |
| the base object. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::dump): | |
| * bytecode/Opcode.h: | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitGetByVal): | |
| * bytecompiler/BytecodeGenerator.h: | |
| (JSC::BytecodeGenerator::pushOptimisedForIn): | |
| (JSC::BytecodeGenerator::popOptimisedForIn): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): | |
| (JSC::JIT::privateCompileSlowCases): | |
| * jit/JIT.h: | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::compileGetDirectOffset): | |
| (JSC::JIT::emit_op_get_by_pname): | |
| (JSC::JIT::emitSlow_op_get_by_pname): | |
| * parser/Nodes.cpp: | |
| (JSC::ForInNode::emitBytecode): | |
| * runtime/JSObject.h: | |
| * runtime/JSPropertyNameIterator.cpp: | |
| (JSC::JSPropertyNameIterator::create): | |
| * runtime/JSPropertyNameIterator.h: | |
| (JSC::JSPropertyNameIterator::getOffset): | |
| (JSC::JSPropertyNameIterator::JSPropertyNameIterator): | |
| * runtime/JSValue.h: | |
| (JSC::JSValue::): | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::addPropertyTransition): | |
| (JSC::Structure::changePrototypeTransition): | |
| (JSC::Structure::despecifyFunctionTransition): | |
| (JSC::Structure::addAnonymousSlotsTransition): | |
| (JSC::Structure::getterSetterTransition): | |
| (JSC::Structure::toDictionaryTransition): | |
| (JSC::Structure::addPropertyWithoutTransition): | |
| Track the existence (or not) of non-enumerable properties. | |
| * runtime/Structure.h: | |
| (JSC::Structure::propertyStorageCapacity): | |
| (JSC::Structure::propertyStorageSize): | |
| (JSC::Structure::hasNonEnumerableProperties): | |
| (JSC::Structure::hasAnonymousSlots): | |
| 2009-10-28 Dmitry Titov <dimich@chromium.org> | |
| Not reviewed, attemp to fix Windows build. | |
| Touch the cpp file to cause recompile. | |
| * wtf/Threading.cpp: | |
| (WTF::threadEntryPoint): | |
| 2009-10-28 Dmitry Titov <dimich@chromium.org> | |
| Reviewed by David Levin. | |
| https://bugs.webkit.org/show_bug.cgi?id=30805 | |
| Add MessageQueue::removeIf(Predicate&) to remove certain tasks without pulling them from the queue. | |
| Existing Database tests cover this since Database removes tasks when it is stopped. | |
| * wtf/MessageQueue.h: | |
| (WTF::::removeIf): | |
| 2009-10-28 Afonso R. Costa Jr. <afonso.costa@openbossa.org> | |
| Reviewed by Oliver Hunt. | |
| [Qt] Enable YARR when YARR_JIT is enabled | |
| https://bugs.webkit.org/show_bug.cgi?id=30730 | |
| When enabling or disabling JIT using JAVASCRIPTCORE_JIT, the ENABLE_YARR should | |
| be toggled also. | |
| * JavaScriptCore.pri: | |
| 2009-10-24 Martin Robinson <martin.james.robinson@gmail.com> | |
| Reviewed by Oliver Hunt. | |
| Fix strict aliasing warning by switching reinterpret_cast to bitwise_cast. | |
| strict-aliasing warnings in JSFunction.h | |
| https://bugs.webkit.org/show_bug.cgi?id=27869 | |
| * runtime/JSFunction.h: | |
| (JSC::JSFunction::nativeFunction): | |
| (JSC::JSFunction::scopeChain): | |
| (JSC::JSFunction::setScopeChain): | |
| (JSC::JSFunction::setNativeFunction): | |
| 2009-10-28 Jan-Arve Sæther <jan-arve.saether@nokia.com> | |
| Reviewed by Tor Arne Vestbø. | |
| Build-fix for 64-bit Windows | |
| * wtf/Platform.h: Make sure to use WTF_USE_JSVALUE64 | |
| 2009-10-28 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (build fix!). | |
| * jit/JIT.h: | |
| 2009-10-26 Holger Hans Peter Freyther <zecke@selfish.org> | |
| Rubber-stamped by Darin Adler. | |
| Export fastMalloc, fastCalloc, fastRealloc and fastFree on GCC/Unix | |
| https://bugs.webkit.org/show_bug.cgi?id=30769 | |
| When using -fvisibility=hidden to hide all internal symbols by default | |
| the malloc symbols will be hidden as well. For memory instrumentation | |
| it is needed to provide an instrumented version of these symbols and | |
| override the normal routines and by changing the visibility back to | |
| default this becomes possible. | |
| The only other solution would be to use system malloc instead of the | |
| TCmalloc implementation but this will not allow to analyze memory | |
| behavior with the default allocator. | |
| * wtf/FastMalloc.h: Define WTF_FAST_MALLOC_EXPORT for GCC and !darwin | |
| 2009-10-27 Gavin Barraclough <barraclough@apple.com> | |
| Rubber Stamped by Samuel Q. Weinig. | |
| Make the asserts protecting the offsets in the JIT more descriptive. | |
| * jit/JIT.h: | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCall): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emit_op_method_check): | |
| (JSC::JIT::compileGetByIdHotPath): | |
| (JSC::JIT::compileGetByIdSlowCase): | |
| (JSC::JIT::emit_op_put_by_id): | |
| 2009-10-27 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| A little bit of refactoring in the date code. | |
| * JavaScriptCore.exp: Don't export this unused symbol. | |
| * runtime/DateConstructor.cpp: | |
| (JSC::constructDate): | |
| * runtime/DateInstance.cpp: | |
| (JSC::DateInstance::DateInstance): | |
| * runtime/DateInstance.h: Removed some unused functions. Changed the default | |
| constructor to ensure that a DateInstance is always initialized. | |
| * runtime/DatePrototype.cpp: | |
| (JSC::DatePrototype::DatePrototype): Pass an initializer to our constructor, | |
| since it now requires one. | |
| * wtf/DateMath.cpp: | |
| (WTF::msToGregorianDateTime): Only compute our offset from UTC if our | |
| output will require it. Otherwise, our offset is 0. | |
| 2009-10-27 Geoffrey Garen <ggaren@apple.com> | |
| Build fix: Mark DateInstaceCache.h private, so other frameworks can see it. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| 2009-10-27 Geoffrey Garen <ggaren@apple.com> | |
| Build fix: re-readded this file. | |
| * runtime/DateInstanceCache.h: Added. | |
| (JSC::DateInstanceData::create): | |
| (JSC::DateInstanceData::DateInstanceData): | |
| (JSC::DateInstanceCache::DateInstanceCache): | |
| (JSC::DateInstanceCache::add): | |
| (JSC::DateInstanceCache::lookup): | |
| 2009-10-27 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Darin Adler and Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=30800 | |
| Cache recently computed date data. | |
| SunSpider reports a ~0.5% speedup, mostly from date-format-tofte.js. | |
| * GNUmakefile.am: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: Added new file. | |
| * runtime/DateInstance.cpp: | |
| (JSC::DateInstance::DateInstance): | |
| (JSC::DateInstance::getGregorianDateTime): Use the shared cache. | |
| * runtime/DateInstance.h: Renamed m_cache to m_data, to avoid the confusion | |
| of a "cache cache". | |
| * runtime/DatePrototype.cpp: | |
| (JSC::formatLocaleDate): | |
| (JSC::dateProtoFuncToString): | |
| (JSC::dateProtoFuncToUTCString): | |
| (JSC::dateProtoFuncToISOString): | |
| (JSC::dateProtoFuncToDateString): | |
| (JSC::dateProtoFuncToTimeString): | |
| (JSC::dateProtoFuncGetFullYear): | |
| (JSC::dateProtoFuncGetUTCFullYear): | |
| (JSC::dateProtoFuncToGMTString): | |
| (JSC::dateProtoFuncGetMonth): | |
| (JSC::dateProtoFuncGetUTCMonth): | |
| (JSC::dateProtoFuncGetDate): | |
| (JSC::dateProtoFuncGetUTCDate): | |
| (JSC::dateProtoFuncGetDay): | |
| (JSC::dateProtoFuncGetUTCDay): | |
| (JSC::dateProtoFuncGetHours): | |
| (JSC::dateProtoFuncGetUTCHours): | |
| (JSC::dateProtoFuncGetMinutes): | |
| (JSC::dateProtoFuncGetUTCMinutes): | |
| (JSC::dateProtoFuncGetSeconds): | |
| (JSC::dateProtoFuncGetUTCSeconds): | |
| (JSC::dateProtoFuncGetTimezoneOffset): | |
| (JSC::setNewValueFromTimeArgs): | |
| (JSC::setNewValueFromDateArgs): | |
| (JSC::dateProtoFuncSetYear): | |
| (JSC::dateProtoFuncGetYear): Pass an ExecState to these functions, so they | |
| can access the DateInstanceCache. | |
| * runtime/JSGlobalData.h: Keep a DateInstanceCache. | |
| 2009-10-27 James Robinson <jamesr@chromium.org> | |
| Reviewed by Darin Fisher. | |
| Ensures that JavaScriptCore/wtf/CurrentTime.cpp is not built in PLATFORM(CHROMIUM) builds. | |
| Chromium uses a different method to calculate the current time than is used in | |
| JavaScriptCore/wtf/CurrentTime.cpp. This can lead to time skew when calls to currentTime() and Chromium's time | |
| function are mixed. In particular, timers can get scheduled in the past which leads to 100% CPU use. | |
| See http://code.google.com/p/chromium/issues/detail?id=25892 for an example. | |
| https://bugs.webkit.org/show_bug.cgi?id=30833 | |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: | |
| * wtf/CurrentTime.cpp: | |
| 2009-10-27 Peter Varga <pvarga@inf.u-szeged.hu> | |
| Rubber-stamped by Tor Arne Vestbø. | |
| Fix typo in RegexInterpreter.cpp and RegexJIT.cpp alterantive to | |
| alternative. | |
| * yarr/RegexInterpreter.cpp: | |
| (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction): | |
| (JSC::Yarr::ByteCompiler::alternativeDisjunction): | |
| (JSC::Yarr::ByteCompiler::emitDisjunction): | |
| * yarr/RegexJIT.cpp: | |
| (JSC::Yarr::RegexGenerator::generateDisjunction): | |
| 2009-10-26 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Darin Adler. | |
| Make .rc files compile on Windows without depending on MFC headers | |
| https://bugs.webkit.org/show_bug.cgi?id=30750 | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: Use | |
| winresrc.h because it exists even when MFC is not installed, and is | |
| all that's needed here. | |
| 2009-10-26 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| The thunkReturnAddress is on JITStackFrame on ARM JIT as well | |
| https://bugs.webkit.org/show_bug.cgi?id=30782 | |
| Move the thunkReturnAddress from top of the stack into the JITStackFrame | |
| structure. This is a requirement for JSValue32_64 support on ARM. | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::ret): Return with link register | |
| (JSC::MacroAssemblerARM::prepareCall): Store the return address in link register | |
| * jit/JIT.h: Remove unused ctiReturnRegister | |
| * jit/JITInlineMethods.h: Same as ARMv7 | |
| (JSC::JIT::restoreArgumentReference): Ditto. | |
| (JSC::JIT::restoreArgumentReferenceForTrampoline): Ditto. | |
| * jit/JITOpcodes.cpp: Remove ctiReturnRegister related instruction | |
| * jit/JITStubs.cpp: Store thunkReturnAddress on JITStackFrame. Use | |
| small trampoline functions which handle return addresses for each | |
| CTI_STUB_FUNCTION. | |
| * jit/JITStubs.h: Store thunkReturnAddress on JITStackFrame | |
| (JSC::JITStackFrame::returnAddressSlot): Return with the address of thunkReturnAddress | |
| * yarr/RegexJIT.cpp: | |
| (JSC::Yarr::RegexGenerator::generateEnter): Remove the unnecessary instruction | |
| 2009-10-26 Steve Block <steveblock@google.com> | |
| Reviewed by Darin Adler. | |
| Adds ability to disable ReadWriteLock on platforms (eg Android) that use pthreads but do not support pthread_rwlock. | |
| https://bugs.webkit.org/show_bug.cgi?id=30713 | |
| * wtf/Platform.h: Modified. Defines HAVE_PTHREAD_RWLOCK for all platforms currently using pthreads. | |
| * wtf/Threading.h: Modified. Use pthread_rwlock_t only when HAVE_PTHREAD_RWLOCK is defined. | |
| * wtf/ThreadingPthreads.cpp: Modified. Build ReadWriteLock methods only when HAVE_PTHREAD_RWLOCK is defined. | |
| 2009-10-24 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Holger Freyther. | |
| [Qt] [Symbian] Set the capability and memory required to run QtWebKit for Symbian | |
| https://bugs.webkit.org/show_bug.cgi?id=30476 | |
| Assign ReadUserData WriteUserData NetworkServices Symbian capabilities | |
| to jsc.exe. | |
| * jsc.pro: | |
| 2009-10-23 Steve Block <steveblock@google.com> | |
| Reviewed by Dmitry Titov. | |
| Fixes a leak in createThreadInternal on Android. | |
| https://bugs.webkit.org/show_bug.cgi?id=30698 | |
| * wtf/ThreadingPthreads.cpp: Modified. | |
| (WTF::createThreadInternal): Avoid leaking a ThreadData object on failure. | |
| 2009-10-22 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Alexey Proskuryakov. | |
| Fixed ASSERT when opening Safari's Caches window while the Web Inspector | |
| is open. | |
| * runtime/Collector.cpp: | |
| (JSC::typeName): Added two new types to the type name list in the Collector. | |
| These types have been around for a while, but nobody remembered to consider them here. | |
| * runtime/JSCell.h: | |
| (JSC::JSCell::isPropertyNameIterator): | |
| * runtime/JSPropertyNameIterator.h: | |
| (JSC::JSPropertyNameIterator::isPropertyNameIterator): Give the Collector | |
| a way to tell if a cell is a JSPropertyNameIterator. | |
| 2009-10-22 Steve Falkenburg <sfalken@apple.com> | |
| Reviewed by Jon Honeycutt. | |
| https://bugs.webkit.org/show_bug.cgi?id=30686 | |
| Remove debug-specific def file. | |
| Only Debug_All target uses JavaScriptCore_debug.dll naming, and since | |
| that target is only used internally, maintaining two files just to | |
| suppress a single link warning isn't worthwhile. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Removed. | |
| 2009-10-21 Jon Honeycutt <jhoneycutt@apple.com> | |
| <rdar://problem/7270320> Screenshots of off-screen plug-ins are blank | |
| <rdar://problem/7270314> After halting a transparent PluginView on | |
| Windows, the transparency is applied twice | |
| Reviewed by Dan Bernstein. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| Export WTF::deleteOwnedPtr(HDC). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| Ditto. | |
| 2009-10-20 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: updated variable name. | |
| * runtime/DatePrototype.cpp: | |
| (JSC::formatLocaleDate): | |
| 2009-10-20 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Mark Rowe. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_next_pname): Slightly tweaked this #ifdef to match the | |
| size of a JSValue because m_jsStrings is an array of JSValues. | |
| 2009-10-20 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Mark Rowe. | |
| Fixed a 64-bit regression caused by the fix for | |
| https://bugs.webkit.org/show_bug.cgi?id=30570. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_next_pname): Use TimesEight stepping on 64-bit, since | |
| 64-bit pointers are eight bytes long. | |
| 2009-10-20 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Refactored DateInstance::msToGregorianDateTime so that a DateInstance's | |
| caller doesn't need to supply the DateInstance's own internal value to | |
| the DateInstance. | |
| * runtime/DateInstance.cpp: | |
| (JSC::DateInstance::getGregorianDateTime): Renamed from "msToGregorianDateTime". | |
| * runtime/DateInstance.h: | |
| * runtime/DatePrototype.cpp: | |
| (JSC::formatLocaleDate): | |
| (JSC::dateProtoFuncToString): | |
| (JSC::dateProtoFuncToUTCString): | |
| (JSC::dateProtoFuncToISOString): | |
| (JSC::dateProtoFuncToDateString): | |
| (JSC::dateProtoFuncToTimeString): | |
| (JSC::dateProtoFuncToLocaleString): | |
| (JSC::dateProtoFuncToLocaleDateString): | |
| (JSC::dateProtoFuncToLocaleTimeString): | |
| (JSC::dateProtoFuncGetTime): | |
| (JSC::dateProtoFuncGetFullYear): | |
| (JSC::dateProtoFuncGetUTCFullYear): | |
| (JSC::dateProtoFuncToGMTString): | |
| (JSC::dateProtoFuncGetMonth): | |
| (JSC::dateProtoFuncGetUTCMonth): | |
| (JSC::dateProtoFuncGetDate): | |
| (JSC::dateProtoFuncGetUTCDate): | |
| (JSC::dateProtoFuncGetDay): | |
| (JSC::dateProtoFuncGetUTCDay): | |
| (JSC::dateProtoFuncGetHours): | |
| (JSC::dateProtoFuncGetUTCHours): | |
| (JSC::dateProtoFuncGetMinutes): | |
| (JSC::dateProtoFuncGetUTCMinutes): | |
| (JSC::dateProtoFuncGetSeconds): | |
| (JSC::dateProtoFuncGetUTCSeconds): | |
| (JSC::dateProtoFuncGetTimezoneOffset): | |
| (JSC::setNewValueFromTimeArgs): | |
| (JSC::setNewValueFromDateArgs): | |
| (JSC::dateProtoFuncSetYear): | |
| (JSC::dateProtoFuncGetYear): Also renamed "utc" to "outputIsUTC", for clarity. | |
| 2009-10-20 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Geoffrey Garen. | |
| The op_next_pname should use 4 bytes addressing mode in case of JSValue32 | |
| https://bugs.webkit.org/show_bug.cgi?id=30570 | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_next_pname): | |
| 2009-10-20 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Oliver Hunt. | |
| Move OverridesMarkChildren flag from DatePrototype to its parent class | |
| https://bugs.webkit.org/show_bug.cgi?id=30372 | |
| * runtime/DateInstance.h: | |
| (JSC::DateInstance::createStructure): | |
| * runtime/DatePrototype.h: | |
| 2009-10-19 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Tightened up some put_by_id_transition code generation. | |
| https://bugs.webkit.org/show_bug.cgi?id=30539 | |
| * jit/JIT.h: | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::testPrototype): | |
| (JSC::JIT::privateCompilePutByIdTransition): No need to do object type | |
| checks or read Structures and prototypes from objects: they're all known | |
| constants at compile time. | |
| 2009-10-19 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Added a private API for getting a global context from a context, for | |
| clients who want to preserve a context for a later callback. | |
| * API/APICast.h: | |
| (toGlobalRef): Added an ASSERT, since this function is used more often | |
| than before. | |
| * API/JSContextRef.cpp: | |
| * API/JSContextRefPrivate.h: Added. The new API. | |
| * API/tests/testapi.c: | |
| (print_callAsFunction): | |
| (main): Test the new API. | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: Build and export the new API. | |
| 2009-10-17 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Tightened up some instanceof code generation. | |
| https://bugs.webkit.org/show_bug.cgi?id=30488 | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_instanceof): | |
| (JSC::JIT::emitSlow_op_instanceof): No need to do object type checks - | |
| cell type checks and ImplementsDefaultHasIntance checks implicitly | |
| supersede object type checks. | |
| 2009-10-18 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Darin Adler. | |
| Use _stricmp and _strnicmp instead of deprecated stricmp and strnicmp. | |
| https://bugs.webkit.org/show_bug.cgi?id=30474 | |
| stricmp and strnicmp are deprecated beginning in Visual | |
| C++ 2005. Use _stricmp and _strnicmp instead in StringExtras.h. | |
| * wtf/StringExtras.h: | |
| (strncasecmp): | |
| (strcasecmp): | |
| 2009-10-16 Geoffrey Garen <ggaren@apple.com> | |
| Build fix: apparently we shouldn't export those symbols? | |
| * JavaScriptCore.exp: | |
| 2009-10-16 Geoffrey Garen <ggaren@apple.com> | |
| Build fix: export some symbols. | |
| * JavaScriptCore.exp: | |
| 2009-10-16 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| structure typeinfo flags should be inherited. | |
| https://bugs.webkit.org/show_bug.cgi?id=30468 | |
| Add StructureFlag constant to the various JSC classes and use | |
| it for the TypeInfo construction. This allows us to simply | |
| accumulate flags by basing each classes StructureInfo on its parents. | |
| * API/JSCallbackConstructor.h: | |
| (JSC::JSCallbackConstructor::createStructure): | |
| * API/JSCallbackFunction.h: | |
| (JSC::JSCallbackFunction::createStructure): | |
| * API/JSCallbackObject.h: | |
| (JSC::JSCallbackObject::createStructure): | |
| * debugger/DebuggerActivation.h: | |
| (JSC::DebuggerActivation::createStructure): | |
| * runtime/Arguments.h: | |
| (JSC::Arguments::createStructure): | |
| * runtime/BooleanObject.h: | |
| (JSC::BooleanObject::createStructure): | |
| * runtime/DatePrototype.h: | |
| (JSC::DatePrototype::createStructure): | |
| * runtime/FunctionPrototype.h: | |
| (JSC::FunctionPrototype::createStructure): | |
| * runtime/GlobalEvalFunction.h: | |
| (JSC::GlobalEvalFunction::createStructure): | |
| * runtime/InternalFunction.h: | |
| (JSC::InternalFunction::createStructure): | |
| * runtime/JSActivation.h: | |
| (JSC::JSActivation::createStructure): | |
| * runtime/JSArray.h: | |
| (JSC::JSArray::createStructure): | |
| * runtime/JSByteArray.cpp: | |
| (JSC::JSByteArray::createStructure): | |
| * runtime/JSByteArray.h: | |
| * runtime/JSFunction.h: | |
| (JSC::JSFunction::createStructure): | |
| * runtime/JSGlobalObject.h: | |
| (JSC::JSGlobalObject::createStructure): | |
| * runtime/JSNotAnObject.h: | |
| (JSC::JSNotAnObject::createStructure): | |
| * runtime/JSONObject.h: | |
| (JSC::JSONObject::createStructure): | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::createStructure): | |
| * runtime/JSStaticScopeObject.h: | |
| (JSC::JSStaticScopeObject::createStructure): | |
| * runtime/JSVariableObject.h: | |
| (JSC::JSVariableObject::createStructure): | |
| * runtime/JSWrapperObject.h: | |
| (JSC::JSWrapperObject::createStructure): | |
| * runtime/MathObject.h: | |
| (JSC::MathObject::createStructure): | |
| * runtime/NumberConstructor.h: | |
| (JSC::NumberConstructor::createStructure): | |
| * runtime/NumberObject.h: | |
| (JSC::NumberObject::createStructure): | |
| * runtime/RegExpConstructor.h: | |
| (JSC::RegExpConstructor::createStructure): | |
| * runtime/RegExpObject.h: | |
| (JSC::RegExpObject::createStructure): | |
| * runtime/StringObject.h: | |
| (JSC::StringObject::createStructure): | |
| * runtime/StringObjectThatMasqueradesAsUndefined.h: | |
| (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): | |
| 2009-10-16 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Fast for-in enumeration: Cache JSPropertyNameIterator; cache JSStrings | |
| in JSPropertyNameIterator; inline more code. | |
| 1.024x as fast on SunSpider (fasta: 1.43x as fast). | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::dump): | |
| * bytecode/Opcode.h: | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitGetPropertyNames): | |
| (JSC::BytecodeGenerator::emitNextPropertyName): | |
| * bytecompiler/BytecodeGenerator.h: Added a few extra operands to | |
| op_get_pnames and op_next_pname so that we can track iteration state | |
| in the register file instead of in the JSPropertyNameIterator. (To be | |
| cacheable, the JSPropertyNameIterator must be stateless.) | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::tryCachePutByID): | |
| (JSC::Interpreter::tryCacheGetByID): Updated for rename to | |
| "normalizePrototypeChain" and removal of "isCacheable". | |
| (JSC::Interpreter::privateExecute): Updated for in-RegisterFile | |
| iteration state tracking. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): | |
| * jit/JIT.h: | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_get_pnames): Updated for in-RegisterFile | |
| iteration state tracking. | |
| (JSC::JIT::emit_op_next_pname): Inlined code generation for op_next_pname. | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::tryCachePutByID): | |
| (JSC::JITThunks::tryCacheGetByID): Updated for rename to | |
| "normalizePrototypeChain" and removal of "isCacheable". | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * jit/JITStubs.h: | |
| (JSC::): Added has_property and to_object stubs. Removed op_next_pname | |
| stub, since has_property is all we need anymore. | |
| * parser/Nodes.cpp: | |
| (JSC::ForInNode::emitBytecode): Updated for in-RegisterFile | |
| iteration state tracking. | |
| * runtime/JSCell.h: | |
| * runtime/JSObject.cpp: | |
| (JSC::JSObject::getPropertyNames): Don't do caching at this layer | |
| anymore, since we don't create a JSPropertyNameIterator at this layer. | |
| * runtime/JSPropertyNameIterator.cpp: | |
| (JSC::JSPropertyNameIterator::create): Do do caching at this layer. | |
| (JSC::JSPropertyNameIterator::get): Updated for in-RegisterFile | |
| iteration state tracking. | |
| (JSC::JSPropertyNameIterator::markChildren): Mark our JSStrings. | |
| * runtime/JSPropertyNameIterator.h: | |
| (JSC::JSPropertyNameIterator::size): | |
| (JSC::JSPropertyNameIterator::setCachedStructure): | |
| (JSC::JSPropertyNameIterator::cachedStructure): | |
| (JSC::JSPropertyNameIterator::setCachedPrototypeChain): | |
| (JSC::JSPropertyNameIterator::cachedPrototypeChain): | |
| (JSC::JSPropertyNameIterator::JSPropertyNameIterator): | |
| (JSC::Structure::setEnumerationCache): Don't store iteration state in | |
| a JSPropertyNameIterator. Do cache a JSPropertyNameIterator in a | |
| Structure. | |
| * runtime/JSValue.h: | |
| (JSC::asCell): | |
| * runtime/MarkStack.h: Make those mischievous #include gods happy. | |
| * runtime/ObjectConstructor.cpp: | |
| * runtime/Operations.h: | |
| (JSC::normalizePrototypeChain): Renamed countPrototypeChainEntriesAndCheckForProxies | |
| to normalizePrototypeChain, since it changes dictionary prototypes to | |
| non-dictionary objects. | |
| * runtime/PropertyNameArray.cpp: | |
| (JSC::PropertyNameArray::add): | |
| * runtime/PropertyNameArray.h: | |
| (JSC::PropertyNameArrayData::PropertyNameArrayData): | |
| (JSC::PropertyNameArray::data): | |
| (JSC::PropertyNameArray::size): | |
| (JSC::PropertyNameArray::begin): | |
| (JSC::PropertyNameArray::end): Simplified some code here to help with | |
| current and future refactoring. | |
| * runtime/Protect.h: | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::~Structure): | |
| (JSC::Structure::addPropertyWithoutTransition): | |
| (JSC::Structure::removePropertyWithoutTransition): No need to clear | |
| the enumeration cache with adding / removing properties without | |
| transition. It is an error to add / remove properties without transition | |
| once an object has been observed, and we can ASSERT to catch that. | |
| * runtime/Structure.h: | |
| (JSC::Structure::enumerationCache): Changed the enumeration cache to | |
| hold a JSPropertyNameIterator. | |
| * runtime/StructureChain.cpp: | |
| * runtime/StructureChain.h: | |
| (JSC::StructureChain::head): Removed StructureChain::isCacheable because | |
| it was wrong-headed in two ways: (1) It gave up when a prototype was a | |
| dictionary, but instead we want un-dictionary heavily accessed | |
| prototypes; (2) It folded a test for hasDefaultGetPropertyNames() into | |
| a generic test for "cacheable-ness", but hasDefaultGetPropertyNames() | |
| is only releavant to for-in caching. | |
| 2009-10-16 Steve Falkenburg <sfalken@apple.com> | |
| Reviewed by Adam Roben. | |
| Add a Debug_All configuration to build entire stack as debug. | |
| Change Debug_Internal to: | |
| - stop using _debug suffix for all WebKit/Safari binaries | |
| - not use _debug as a DLL naming suffix | |
| - use non-debug C runtime lib. | |
| * JavaScriptCore.vcproj/JavaScriptCore.make: Debug build in makefile should build Debug_All. | |
| * JavaScriptCore.vcproj/JavaScriptCore.sln: Add Debug_All configuration. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add Debug_All configuration. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Renamed single configuration from "Release" to "all". | |
| * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Add Debug_All configuration. | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add Debug_All configuration. | |
| * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_All configuration. | |
| * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_All configuration. | |
| 2009-10-16 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Make typeinfo flags default to false | |
| https://bugs.webkit.org/show_bug.cgi?id=30372 | |
| Last part -- replace HasDefaultGetPropertyNames with OverridesGetPropertyNames | |
| flag. | |
| * API/JSCallbackConstructor.h: | |
| (JSC::JSCallbackConstructor::createStructure): | |
| * API/JSCallbackObject.h: | |
| (JSC::JSCallbackObject::createStructure): | |
| * debugger/DebuggerActivation.h: | |
| (JSC::DebuggerActivation::createStructure): | |
| * runtime/Arguments.h: | |
| (JSC::Arguments::createStructure): | |
| * runtime/BooleanObject.h: | |
| (JSC::BooleanObject::createStructure): | |
| * runtime/DatePrototype.h: | |
| (JSC::DatePrototype::createStructure): | |
| * runtime/FunctionPrototype.h: | |
| (JSC::FunctionPrototype::createStructure): | |
| * runtime/GlobalEvalFunction.h: | |
| (JSC::GlobalEvalFunction::createStructure): | |
| * runtime/JSAPIValueWrapper.h: | |
| (JSC::JSAPIValueWrapper::createStructure): | |
| * runtime/JSActivation.h: | |
| (JSC::JSActivation::createStructure): | |
| * runtime/JSArray.h: | |
| (JSC::JSArray::createStructure): | |
| * runtime/JSByteArray.cpp: | |
| (JSC::JSByteArray::createStructure): | |
| * runtime/JSFunction.h: | |
| (JSC::JSFunction::createStructure): | |
| * runtime/JSGlobalObject.h: | |
| (JSC::JSGlobalObject::createStructure): | |
| * runtime/JSNotAnObject.h: | |
| (JSC::JSNotAnObject::createStructure): | |
| * runtime/JSONObject.h: | |
| (JSC::JSONObject::createStructure): | |
| * runtime/JSObject.cpp: | |
| (JSC::JSObject::getPropertyNames): | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::createStructure): | |
| * runtime/JSStaticScopeObject.h: | |
| (JSC::JSStaticScopeObject::createStructure): | |
| * runtime/JSTypeInfo.h: | |
| (JSC::TypeInfo::overridesGetPropertyNames): | |
| * runtime/JSVariableObject.h: | |
| (JSC::JSVariableObject::createStructure): | |
| * runtime/JSWrapperObject.h: | |
| (JSC::JSWrapperObject::createStructure): | |
| * runtime/MathObject.h: | |
| (JSC::MathObject::createStructure): | |
| * runtime/NumberConstructor.h: | |
| (JSC::NumberConstructor::createStructure): | |
| * runtime/NumberObject.h: | |
| (JSC::NumberObject::createStructure): | |
| * runtime/RegExpConstructor.h: | |
| (JSC::RegExpConstructor::createStructure): | |
| * runtime/RegExpObject.h: | |
| (JSC::RegExpObject::createStructure): | |
| * runtime/StringObject.h: | |
| (JSC::StringObject::createStructure): | |
| * runtime/StringObjectThatMasqueradesAsUndefined.h: | |
| (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): | |
| * runtime/StructureChain.cpp: | |
| (JSC::StructureChain::isCacheable): | |
| 2009-10-16 Kevin Ollivier <kevino@theolliviers.com> | |
| wxMSW build fix, we can't use the simple hash there because the PlatformModuleVersion | |
| structure differs. | |
| * wtf/Platform.h: | |
| 2009-10-16 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Implement ExecutableAllocator for Symbian | |
| https://bugs.webkit.org/show_bug.cgi?id=29946 | |
| Tested with YARR JIT enabled for Symbian; | |
| This patch does not (yet) enable YARR JIT by default. | |
| * JavaScriptCore.pri: | |
| * jit/ExecutableAllocator.h: | |
| * jit/ExecutableAllocatorSymbian.cpp: Added. | |
| (JSC::ExecutableAllocator::intializePageSize): | |
| (JSC::ExecutablePool::systemAlloc): | |
| (JSC::ExecutablePool::systemRelease): | |
| 2009-10-15 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Darin Adler. | |
| Make typeinfo flags default to false | |
| https://bugs.webkit.org/show_bug.cgi?id=30372 | |
| Part 2 -- Reverse the TypeInfo HasDefaultMark flag to OverridesMarkChildren, etc | |
| * API/JSCallbackConstructor.h: | |
| (JSC::JSCallbackConstructor::createStructure): | |
| * API/JSCallbackFunction.h: | |
| (JSC::JSCallbackFunction::createStructure): | |
| * API/JSCallbackObject.h: | |
| (JSC::JSCallbackObject::createStructure): | |
| * debugger/DebuggerActivation.h: | |
| (JSC::DebuggerActivation::createStructure): | |
| * runtime/Arguments.h: | |
| (JSC::Arguments::createStructure): | |
| * runtime/BooleanObject.h: | |
| (JSC::BooleanObject::createStructure): | |
| * runtime/DatePrototype.h: | |
| (JSC::DatePrototype::createStructure): | |
| * runtime/FunctionPrototype.h: | |
| (JSC::FunctionPrototype::createStructure): | |
| * runtime/GetterSetter.h: | |
| (JSC::GetterSetter::createStructure): | |
| * runtime/GlobalEvalFunction.h: | |
| (JSC::GlobalEvalFunction::createStructure): | |
| * runtime/InternalFunction.h: | |
| (JSC::InternalFunction::createStructure): | |
| * runtime/JSAPIValueWrapper.h: | |
| (JSC::JSAPIValueWrapper::createStructure): | |
| * runtime/JSActivation.h: | |
| (JSC::JSActivation::createStructure): | |
| * runtime/JSArray.h: | |
| (JSC::JSArray::createStructure): | |
| (JSC::MarkStack::markChildren): | |
| * runtime/JSByteArray.cpp: | |
| (JSC::JSByteArray::createStructure): | |
| * runtime/JSFunction.h: | |
| (JSC::JSFunction::createStructure): | |
| * runtime/JSGlobalObject.h: | |
| (JSC::JSGlobalObject::createStructure): | |
| * runtime/JSNotAnObject.h: | |
| (JSC::JSNotAnObject::createStructure): | |
| * runtime/JSNumberCell.h: | |
| (JSC::JSNumberCell::createStructure): | |
| * runtime/JSONObject.h: | |
| (JSC::JSONObject::createStructure): | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::createStructure): | |
| * runtime/JSPropertyNameIterator.h: | |
| (JSC::JSPropertyNameIterator::createStructure): | |
| * runtime/JSStaticScopeObject.h: | |
| (JSC::JSStaticScopeObject::createStructure): | |
| * runtime/JSString.h: | |
| (JSC::JSString::createStructure): | |
| * runtime/JSTypeInfo.h: | |
| (JSC::TypeInfo::overridesMarkChildren): | |
| * runtime/JSVariableObject.h: | |
| (JSC::JSVariableObject::createStructure): | |
| * runtime/JSWrapperObject.h: | |
| (JSC::JSWrapperObject::createStructure): | |
| * runtime/MathObject.h: | |
| (JSC::MathObject::createStructure): | |
| * runtime/NumberConstructor.h: | |
| (JSC::NumberConstructor::createStructure): | |
| * runtime/NumberObject.h: | |
| (JSC::NumberObject::createStructure): | |
| * runtime/RegExpConstructor.h: | |
| (JSC::RegExpConstructor::createStructure): | |
| * runtime/RegExpObject.h: | |
| (JSC::RegExpObject::createStructure): | |
| * runtime/StringObject.h: | |
| (JSC::StringObject::createStructure): | |
| * runtime/StringObjectThatMasqueradesAsUndefined.h: | |
| (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): | |
| 2009-10-14 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoff Garen. | |
| Make typeinfo flags default to false | |
| https://bugs.webkit.org/show_bug.cgi?id=30372 | |
| Part 1. Reverse the HasStandardGetOwnPropertySlot flag. | |
| * API/JSCallbackConstructor.h: | |
| (JSC::JSCallbackConstructor::createStructure): | |
| * API/JSCallbackFunction.h: | |
| (JSC::JSCallbackFunction::createStructure): | |
| * API/JSCallbackObject.h: | |
| (JSC::JSCallbackObject::createStructure): | |
| * debugger/DebuggerActivation.h: | |
| (JSC::DebuggerActivation::createStructure): | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * runtime/Arguments.h: | |
| (JSC::Arguments::createStructure): | |
| * runtime/BooleanObject.h: | |
| (JSC::BooleanObject::createStructure): | |
| * runtime/DatePrototype.h: | |
| (JSC::DatePrototype::createStructure): | |
| * runtime/FunctionPrototype.h: | |
| (JSC::FunctionPrototype::createStructure): | |
| * runtime/GlobalEvalFunction.h: | |
| (JSC::GlobalEvalFunction::createStructure): | |
| * runtime/InternalFunction.h: | |
| (JSC::InternalFunction::createStructure): | |
| * runtime/JSActivation.h: | |
| (JSC::JSActivation::createStructure): | |
| * runtime/JSArray.h: | |
| (JSC::JSArray::createStructure): | |
| * runtime/JSByteArray.cpp: | |
| (JSC::JSByteArray::createStructure): | |
| * runtime/JSFunction.h: | |
| (JSC::JSFunction::createStructure): | |
| * runtime/JSGlobalObject.h: | |
| (JSC::JSGlobalObject::createStructure): | |
| * runtime/JSNumberCell.h: | |
| (JSC::JSNumberCell::createStructure): | |
| * runtime/JSONObject.h: | |
| (JSC::JSONObject::createStructure): | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::createStructure): | |
| (JSC::JSCell::fastGetOwnPropertySlot): | |
| * runtime/JSStaticScopeObject.h: | |
| (JSC::JSStaticScopeObject::createStructure): | |
| * runtime/JSString.h: | |
| (JSC::JSString::createStructure): | |
| * runtime/JSTypeInfo.h: | |
| (JSC::TypeInfo::overridesGetOwnPropertySlot): | |
| * runtime/JSVariableObject.h: | |
| (JSC::JSVariableObject::createStructure): | |
| * runtime/JSWrapperObject.h: | |
| (JSC::JSWrapperObject::createStructure): | |
| * runtime/MathObject.h: | |
| (JSC::MathObject::createStructure): | |
| * runtime/NumberConstructor.h: | |
| (JSC::NumberConstructor::createStructure): | |
| * runtime/NumberObject.h: | |
| (JSC::NumberObject::createStructure): | |
| * runtime/RegExpConstructor.h: | |
| (JSC::RegExpConstructor::createStructure): | |
| * runtime/RegExpObject.h: | |
| (JSC::RegExpObject::createStructure): | |
| * runtime/StringObject.h: | |
| (JSC::StringObject::createStructure): | |
| * runtime/StringObjectThatMasqueradesAsUndefined.h: | |
| (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): | |
| 2009-10-14 Kevin Ollivier <kevino@theolliviers.com> | |
| 2009-10-14 Darin Adler <darin@apple.com> | |
| Additions so fix for https://bugs.webkit.org/show_bug.cgi?id=18994 | |
| can build on Windows. | |
| * wtf/MathExtras.h: Added llround and llroundf for Windows. | |
| 2009-10-14 Kevin Ollivier <kevino@theolliviers.com> | |
| wx build fix. Set ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH for plugins while we're still building stubs. | |
| * wtf/Platform.h: | |
| 2009-10-13 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Refactor ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH | |
| https://bugs.webkit.org/show_bug.cgi?id=30278 | |
| Move the definition of ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH | |
| from the make system into common code. | |
| * wtf/Platform.h: | |
| 2009-10-13 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Darin Adler. | |
| ARM compiler does not understand reinterpret_cast<void*> | |
| https://bugs.webkit.org/show_bug.cgi?id=29034 | |
| Change reinterpret_cast<void*> to regular C style (void*) cast | |
| for the ARM RVCT compiler. | |
| * assembler/MacroAssemblerCodeRef.h: | |
| (JSC::FunctionPtr::FunctionPtr): | |
| * jit/JITOpcodes.cpp: Cast to FunctionPtr first | |
| instead of directly casting to reinterpret_cast | |
| * jit/JITStubCall.h: Ditto + change the type of m_stub | |
| from void* to FunctionPtr. | |
| (JSC::JITStubCall::JITStubCall): | |
| (JSC::JITStubCall::call): | |
| * jit/JITStubs.cpp: Ditto. | |
| (JSC::DEFINE_STUB_FUNCTION(EncodedJSValue, op_throw)): | |
| 2009-10-11 Oliver Hunt <oliver@apple.com> | |
| Re-enable the JIT. | |
| * wtf/Platform.h: | |
| 2009-10-10 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Support for String.trim(), String.trimLeft() and String.trimRight() methods | |
| https://bugs.webkit.org/show_bug.cgi?id=26590 | |
| Implement trim, trimLeft, and trimRight | |
| * runtime/StringPrototype.cpp: | |
| (JSC::isTrimWhitespace): | |
| Our normal string whitespace function does not include U+200B which | |
| is needed for compatibility with mozilla's implementation of trim. | |
| U+200B does not appear to be expected according to spec, however I am | |
| choosing to be lax, and match mozilla behavior so have added this | |
| exception. | |
| (JSC::trimString): | |
| 2009-10-09 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Eliminated some legacy bytecode weirdness. | |
| Use vPC[x] subscripting instead of ++vPC to access instruction operands. | |
| This is simpler, and often more efficient. | |
| To support this, and to remove use of hard-coded offsets in bytecode and | |
| JIT code generation and dumping, calculate jump offsets from the beginning | |
| of an instruction, rather than the middle or end. | |
| Also, use OPCODE_LENGTH instead of hard-coded constants for the sizes of | |
| opcodes. | |
| SunSpider reports no change in JIT mode, and a 1.01x speedup in Interpreter | |
| mode. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::printConditionalJump): | |
| (JSC::CodeBlock::dump): | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitJump): | |
| (JSC::BytecodeGenerator::emitJumpIfTrue): | |
| (JSC::BytecodeGenerator::emitJumpIfFalse): | |
| (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): | |
| (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): | |
| (JSC::BytecodeGenerator::emitComplexJumpScopes): | |
| (JSC::BytecodeGenerator::emitJumpScopes): | |
| (JSC::BytecodeGenerator::emitNextPropertyName): | |
| (JSC::BytecodeGenerator::emitCatch): | |
| (JSC::BytecodeGenerator::emitJumpSubroutine): | |
| (JSC::prepareJumpTableForImmediateSwitch): | |
| (JSC::prepareJumpTableForCharacterSwitch): | |
| (JSC::prepareJumpTableForStringSwitch): | |
| (JSC::BytecodeGenerator::endSwitch): | |
| * bytecompiler/Label.h: | |
| (JSC::Label::setLocation): | |
| (JSC::Label::bind): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::resolve): | |
| (JSC::Interpreter::resolveSkip): | |
| (JSC::Interpreter::resolveGlobal): | |
| (JSC::Interpreter::resolveBase): | |
| (JSC::Interpreter::resolveBaseAndProperty): | |
| (JSC::Interpreter::createExceptionScope): | |
| (JSC::Interpreter::privateExecute): | |
| * interpreter/Interpreter.h: | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompile): | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_jnless): | |
| (JSC::JIT::emitSlow_op_jnless): | |
| (JSC::JIT::emit_op_jnlesseq): | |
| (JSC::JIT::emitSlow_op_jnlesseq): | |
| (JSC::JIT::emitBinaryDoubleOp): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_jmp): | |
| (JSC::JIT::emit_op_loop): | |
| (JSC::JIT::emit_op_loop_if_less): | |
| (JSC::JIT::emitSlow_op_loop_if_less): | |
| (JSC::JIT::emit_op_loop_if_lesseq): | |
| (JSC::JIT::emitSlow_op_loop_if_lesseq): | |
| (JSC::JIT::emit_op_loop_if_true): | |
| (JSC::JIT::emitSlow_op_loop_if_true): | |
| (JSC::JIT::emit_op_jfalse): | |
| (JSC::JIT::emitSlow_op_jfalse): | |
| (JSC::JIT::emit_op_jtrue): | |
| (JSC::JIT::emitSlow_op_jtrue): | |
| (JSC::JIT::emit_op_jeq_null): | |
| (JSC::JIT::emit_op_jneq_null): | |
| (JSC::JIT::emit_op_jneq_ptr): | |
| (JSC::JIT::emit_op_jsr): | |
| (JSC::JIT::emit_op_next_pname): | |
| (JSC::JIT::emit_op_jmp_scopes): | |
| 2009-10-09 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Migrated some code that didn't belong out of Structure. | |
| SunSpider says maybe 1.03x faster. | |
| * runtime/JSCell.h: Nixed Structure::markAggregate, and made marking of | |
| a Structure's prototype the direct responsility of the object using it. | |
| (Giving Structure a mark function was misleading because it implied that | |
| all live structures get marked during GC, when they don't.) | |
| * runtime/JSGlobalObject.cpp: | |
| (JSC::markIfNeeded): | |
| (JSC::JSGlobalObject::markChildren): Added code to mark prototypes stored | |
| on the global object. Maybe this wasn't necessary, but now we don't have | |
| to wonder. | |
| * runtime/JSObject.cpp: | |
| (JSC::JSObject::getPropertyNames): | |
| (JSC::JSObject::getOwnPropertyNames): | |
| (JSC::JSObject::getEnumerableNamesFromClassInfoTable): | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::markChildrenDirect): | |
| * runtime/PropertyNameArray.h: | |
| * runtime/Structure.cpp: | |
| * runtime/Structure.h: | |
| (JSC::Structure::setEnumerationCache): | |
| (JSC::Structure::enumerationCache): Moved property name gathering code | |
| from Structure to JSObject because having a Structure iterate its JSObject | |
| was a layering violation. A JSObject is implemented using a Structure; not | |
| the other way around. | |
| 2009-10-09 Mark Rowe <mrowe@apple.com> | |
| Attempt to fix the GTK release build. | |
| * GNUmakefile.am: Include Grammar.cpp in release builds now that | |
| AllInOneFile.cpp is gone. | |
| 2009-10-09 Gabor Loki <loki@inf.u-szeged.hu> | |
| Rubber-stamped by Eric Seidel. | |
| Add ARM JIT support for Gtk port (disabled by default) | |
| https://bugs.webkit.org/show_bug.cgi?id=30228 | |
| * GNUmakefile.am: | |
| 2009-10-08 Geoffrey Garen <ggaren@apple.com> | |
| Tiger build fix: added a few more variable initializations. | |
| * runtime/StringPrototype.cpp: | |
| (JSC::stringProtoFuncReplace): | |
| (JSC::stringProtoFuncSearch): | |
| 2009-10-08 Geoffrey Garen <ggaren@apple.com> | |
| Qt build fix: added missing #include. | |
| * jsc.cpp: | |
| 2009-10-08 Geoffrey Garen <ggaren@apple.com> | |
| Tiger build fix: initialize variable whose initialization the compiler | |
| can't otherwise figure out. | |
| * runtime/RegExpObject.cpp: | |
| (JSC::RegExpObject::match): | |
| 2009-10-08 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: updated exports. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-10-08 Geoffrey Garen <ggaren@apple.com> | |
| Tiger build fix: fixed file name case. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| 2009-10-08 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| At long last, I pronounce the death of AllInOneFile.cpp. | |
| SunSpider reports a 1.01x speedup. | |
| * AllInOneFile.cpp: Removed. | |
| * GNUmakefile.am: | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: Added missing project files | |
| to compilation stages. | |
| * parser/Grammar.y: | |
| * parser/Lexer.cpp: | |
| * parser/Lexer.h: | |
| (JSC::jscyylex): | |
| * runtime/ArrayConstructor.cpp: | |
| (JSC::constructArrayWithSizeQuirk): | |
| * runtime/Collector.h: | |
| * runtime/JSCell.cpp: | |
| (JSC::JSCell::operator new): | |
| * runtime/JSCell.h: | |
| (JSC::JSCell::operator new): | |
| * runtime/JSGlobalObject.cpp: | |
| (JSC::JSGlobalObject::operator new): | |
| * runtime/JSNumberCell.h: | |
| (JSC::JSNumberCell::operator new): | |
| * runtime/JSString.cpp: | |
| * runtime/JSString.h: | |
| (JSC::jsString): | |
| (JSC::jsSubstring): | |
| (JSC::jsOwnedString): | |
| * runtime/RegExpConstructor.cpp: | |
| * runtime/RegExpConstructor.h: | |
| (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate): | |
| (JSC::RegExpConstructorPrivate::lastOvector): | |
| (JSC::RegExpConstructorPrivate::tempOvector): | |
| (JSC::RegExpConstructorPrivate::changeLastOvector): | |
| (JSC::RegExpConstructor::performMatch): | |
| * runtime/StringPrototype.cpp: | |
| (JSC::stringProtoFuncMatch): | |
| * yarr/RegexJIT.cpp: | |
| * yarr/RegexJIT.h: | |
| (JSC::Yarr::executeRegex): Inlined a few things that Shark said | |
| were hot, on the presumption that AllInOneFile.cpp used to inline them | |
| automatically. | |
| 2009-10-08 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Fix for JIT'ed op_call instructions (evals, constructs, etc.) | |
| when !ENABLE(JIT_OPTIMIZE_CALL) && USE(JSVALUE32_64) | |
| https://bugs.webkit.org/show_bug.cgi?id=30201 | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCall): | |
| 2009-10-07 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: removed no longer exported symbol. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-10-07 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Fixed <rdar://problem/5751979> Database code takes JSLock on secondary | |
| thread, permanently slowing down JavaScript | |
| Removed the optional lock from Heap::protect, Heap::unprotect, and friends, | |
| since WebCore no longer uses it. | |
| * JavaScriptCore.exp: | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::protect): | |
| (JSC::Heap::unprotect): | |
| (JSC::Heap::markProtectedObjects): | |
| (JSC::Heap::protectedGlobalObjectCount): | |
| (JSC::Heap::protectedObjectCount): | |
| (JSC::Heap::protectedObjectTypeCounts): | |
| * runtime/Collector.h: | |
| 2009-10-07 Zoltan Horvath <zoltan@webkit.org> | |
| Reviewed by Darin Adler. | |
| Allow custom memory allocation control for JavaScriptCore's IdentifierArena | |
| https://bugs.webkit.org/show_bug.cgi?id=30158 | |
| Inherits IdentifierArena class from FastAllocBase because it has been | |
| instantiated by 'new' in JavaScriptCore/parser/ParserArena.cpp:36. | |
| * parser/ParserArena.h: | |
| 2009-10-07 Adam Roben <aroben@apple.com> | |
| Export DateInstance::info in a way that works on Windows | |
| Fixes <http://webkit.org/b/30171> | |
| fast/dom/Window/window-postmessage-clone.html fails on Windows | |
| Reviewed by Anders Carlsson. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| Removed the export of DateInstance::info from here. | |
| * runtime/DateInstance.h: Use JS_EXPORTDATA to export | |
| DateInstance::info, which is the required way of exporting data on | |
| Windows. | |
| 2009-10-07 Jørgen Lind <jorgen.lind@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| When enabling or disabling the JIT through .qmake.cache, make sure | |
| to also toggle ENABLE_YARR_JIT. | |
| * JavaScriptCore.pri: | |
| 2009-10-06 Priit Laes <plaes@plaes.org> | |
| Reviewed by Gavin Barraclough. | |
| Linking fails with "relocation R_X86_64_PC32 against symbol | |
| `cti_vm_throw'" | |
| https://bugs.webkit.org/show_bug.cgi?id=28422 | |
| * jit/JITStubs.cpp: | |
| Mark cti_vm_throw symbol as PLT-indirect symbol, so it doesn't end up | |
| in text segment causing relocation errors on amd64 architecture. | |
| Introduced new define SYMBOL_STRING_RELOCATION for such symbols. | |
| 2009-10-06 Oliver Hunt <oliver@apple.com> | |
| Windows linking fix | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-10-06 Oliver Hunt <oliver@apple.com> | |
| Reviewed by NOBODY (build fix). | |
| Windows build fix. | |
| * runtime/DateInstance.cpp: | |
| 2009-10-05 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| It should be possible to post (clone) built-in JS objects to Workers | |
| https://bugs.webkit.org/show_bug.cgi?id=22878 | |
| Expose helpers to throw correct exceptions during object graph walk | |
| used for cloning and add a helper function to create Date instances | |
| without going through the JS Date constructor function. | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/DateInstance.cpp: | |
| (JSC::DateInstance::DateInstance): | |
| * runtime/DateInstance.h: | |
| * runtime/ExceptionHelpers.cpp: | |
| (JSC::createTypeError): | |
| * runtime/ExceptionHelpers.h: | |
| 2009-10-06 David Levin <levin@chromium.org> | |
| Reviewed by Oliver Hunt. | |
| StringImpl needs a method to get an instance for another thread which doesn't copy the underlying buffer. | |
| https://bugs.webkit.org/show_bug.cgi?id=30095 | |
| * wtf/CrossThreadRefCounted.h: | |
| Removed an unused function and assert improvement. | |
| (WTF::CrossThreadRefCounted::isOwnedByCurrentThread): Moved out common code from asserts. | |
| (WTF::CrossThreadRefCounted::ref): Changed assert to use the common method. | |
| (WTF::CrossThreadRefCounted::deref): Changed assert to use the common method. | |
| (WTF::CrossThreadRefCounted::crossThreadCopy): Since this includes a potentially | |
| non-threadsafe operation, add an assert that the class is owned by the current thread. | |
| 2009-10-05 Kevin Ollivier <kevino@theolliviers.com> | |
| wx build fix. Add Symbian files to the list of excludes. | |
| * wscript: | |
| 2009-10-05 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Remove precompiled header from JavaScriptCore compilation to | |
| prevent qmake warning during autonomous compilation. | |
| https://bugs.webkit.org/show_bug.cgi?id=30069 | |
| * JavaScriptCore.pro: | |
| 2009-10-02 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Removed the concept of a "fast access cutoff" in arrays, because it | |
| punished some patterns of array access too much, and made things too | |
| complex for inlining in some cases. | |
| 1.3% speedup on SunSpider. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| (JSC::JIT::emitSlow_op_put_by_val): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emit_op_get_by_val): | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| (JSC::JIT::emit_op_put_by_val): | |
| (JSC::JIT::emitSlow_op_put_by_val): | |
| * jit/JITStubs.cpp: | |
| * jit/JITStubs.h: | |
| (JSC::): Check m_vectorLength instead of m_fastAccessCutoff when | |
| getting / putting from / to an array. Inline putting past the end of | |
| the array. | |
| * runtime/JSArray.cpp: | |
| (JSC::JSArray::JSArray): | |
| (JSC::JSArray::getOwnPropertySlot): | |
| (JSC::JSArray::getOwnPropertyDescriptor): | |
| (JSC::JSArray::put): | |
| (JSC::JSArray::putSlowCase): | |
| (JSC::JSArray::deleteProperty): | |
| (JSC::JSArray::getOwnPropertyNames): | |
| (JSC::JSArray::increaseVectorLength): | |
| (JSC::JSArray::setLength): | |
| (JSC::JSArray::pop): | |
| (JSC::JSArray::push): | |
| (JSC::JSArray::sort): | |
| (JSC::JSArray::fillArgList): | |
| (JSC::JSArray::copyToRegisters): | |
| (JSC::JSArray::compactForSorting): | |
| (JSC::JSArray::checkConsistency): | |
| * runtime/JSArray.h: | |
| (JSC::JSArray::canGetIndex): | |
| (JSC::JSArray::canSetIndex): | |
| (JSC::JSArray::setIndex): | |
| (JSC::JSArray::markChildrenDirect): Removed m_fastAccessCutoff, and | |
| replaced with checks for JSValue() to detect reads and writes from / to | |
| uninitialized parts of the array. | |
| 2009-10-02 Jonni Rainisto <jonni.rainisto@nokia.com> | |
| Reviewed by Darin Adler. | |
| Math.random() gives too low values on Win32 when _CRT_RAND_S is not defined | |
| https://bugs.webkit.org/show_bug.cgi?id=29956 | |
| * wtf/RandomNumber.cpp: | |
| (WTF::randomNumber): Added PLATFORM(WIN_OS) to handle 15bit rand() | |
| 2009-10-02 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Take one branch instead of two to test for JSValue(). | |
| 1.1% SunSpider speedup. | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCall): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_to_jsnumber): | |
| (JSC::JIT::emit_op_create_arguments): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| (JSC::JIT::emit_op_put_by_val): Test for the empty value tag, instead | |
| of testing for the cell tag with a 0 payload. | |
| * runtime/JSValue.cpp: | |
| (JSC::JSValue::description): Added support for dumping the new empty value, | |
| and deleted values, in debug builds. | |
| * runtime/JSValue.h: | |
| (JSC::JSValue::JSValue()): Construct JSValue() with the empty value tag. | |
| (JSC::JSValue::JSValue(JSCell*)): Convert null pointer to the empty value | |
| tag, to avoid having two different c++ versions of null / empty. | |
| (JSC::JSValue::operator bool): Test for the empty value tag, instead | |
| of testing for the cell tag with a 0 payload. | |
| 2009-10-02 Steve Falkenburg <sfalken@apple.com> | |
| Reviewed by Mark Rowe. | |
| <https://bugs.webkit.org/show_bug.cgi?id=29989> | |
| Safari version number shouldn't be exposed in WebKit code | |
| For a WebKit version of 532.3.4: | |
| Product version is: 5.32.3.4 (was 4.0.3.0) | |
| File version is: 5.32.3.4 (was 4.532.3.4) | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: | |
| 2009-10-02 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> | |
| Rubber-stamped by Simon Hausmann. | |
| Fix the Qt on Mac OS X build. | |
| * wtf/FastMalloc.cpp: | |
| 2009-10-02 Jørgen Lind <jorgen.lind@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Allow enabling and disabling of the JIT through a qmake variable. | |
| Qt's configure may set this variable through .qmake.cache if a | |
| commandline option is given and/or the compile test for hwcap.h | |
| failed/succeeded. | |
| * JavaScriptCore.pri: | |
| 2009-10-01 Mark Rowe <mrowe@apple.com> | |
| Fix the Tiger build. Don't unconditionally enable 3D canvas as it is not supported on Tiger. | |
| * Configurations/FeatureDefines.xcconfig: | |
| 2009-10-01 Yongjun Zhang <yongjun.zhang@nokia.com> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=29187 | |
| Don't inline ~ListRefPtr() to work around winscw compiler forward declaration | |
| bug regarding templated classes. | |
| The compiler bug is reported at: | |
| https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812 | |
| The change will be reverted when the above bug is fixed in winscw compiler. | |
| * wtf/ListRefPtr.h: | |
| (WTF::::~ListRefPtr): | |
| 2009-10-01 Zoltan Horvath <zoltan@webkit.org> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Allow custom memory allocation control for the whole JavaScriptCore | |
| https://bugs.webkit.org/show_bug.cgi?id=27029 | |
| Since in JavaScriptCore almost every class which has been instantiated by operator new is | |
| inherited from FastAllocBase (bug #20422), we disable customizing global operator new for the Qt-port | |
| when USE_SYSTEM_MALLOC=0. | |
| Add #include <unistd.h> to FastMalloc.cpp because it's used by TCMalloc_PageHeap::scavengerThread(). | |
| (It's needed for the functionality of TCmalloc.) | |
| Add TCSystemAlloc.cpp to JavaScriptCore.pri if USE_SYSTEM_MALLOC is disabled. | |
| * JavaScriptCore.pri: | |
| * wtf/FastMalloc.cpp: | |
| (WTF::sleep): | |
| * wtf/FastMalloc.h: | |
| 2009-09-30 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by George Staikos. | |
| Defines two pseudo-platforms for ARM and Thumb-2 instruction set. | |
| https://bugs.webkit.org/show_bug.cgi?id=29122 | |
| Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2 | |
| macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used | |
| when Thumb-2 instruction set is the required target. The | |
| PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In | |
| case where the code is common the PLATFORM(ARM) have to be used. | |
| Modified by George Wright <gwright@rim.com> to correctly work | |
| with the RVCT-defined __TARGET_ARCH_ARM and __TARGET_ARCH_THUMB | |
| compiler macros, as well as adding readability changes. | |
| * wtf/Platform.h: | |
| 2009-09-30 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoff Garen. | |
| Devirtualise array toString conversion | |
| Tweak the implementation of Array.prototype.toString to have a fast path | |
| when acting on a true JSArray. | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::arrayProtoFuncToString): | |
| 2009-09-30 Csaba Osztrogonac <oszi@inf.u-szeged.hu> | |
| Reviewed by Geoffrey Garen. | |
| Buildfix for platforms using JSVALUE32. | |
| https://bugs.webkit.org/show_bug.cgi?id=29915 | |
| After http://trac.webkit.org/changeset/48905 the build broke in JSVALUE32 case. | |
| Also removed unreachable code. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_add): | |
| - Declaration of "OperandTypes types" moved before first use. | |
| - Typos fixed: dst modified to result, regT2 added. | |
| - Unreachable code removed. | |
| (JSC::JIT::emitSlow_op_add): | |
| - Missing declaration of "OperandTypes types" added. | |
| 2009-09-30 Janne Koskinen <janne.p.koskinen@digia.com> | |
| Reviewed by Simon Hausmann. | |
| Reduce heap size on Symbian from 64MB to 8MB. | |
| This is not a perfect fix, it requires more fine tuning. | |
| But this makes it possible again to debug in the emulator, | |
| which is more important in order to be able to fix other | |
| run-time issues. | |
| * runtime/Collector.h: | |
| 2009-09-30 Janne Koskinen <janne.p.koskinen@digia.com> | |
| Reviewed by Simon Hausmann. | |
| Fix CRASH() macro for Symbian build. | |
| * wtf/Assertions.h: Added missing } | |
| 2009-09-29 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Inlined a few math operations. | |
| ~1% SunSpider speedup. | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::compileBinaryArithOpSlowCase): | |
| (JSC::JIT::emitSlow_op_add): | |
| (JSC::JIT::emitSlow_op_mul): | |
| (JSC::JIT::emit_op_sub): | |
| (JSC::JIT::emitSlow_op_sub): Don't take a stub call when operating on | |
| a constant int and a double. | |
| 2009-09-28 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Tidy up codeblock sampler | |
| https://bugs.webkit.org/show_bug.cgi?id=29836 | |
| Some rather simple refactoring of codeblock sampler so that | |
| it's easier for us to use it to find problems in non-jsc | |
| environments | |
| * JavaScriptCore.exp: | |
| * bytecode/SamplingTool.h: | |
| * debugger/Debugger.cpp: | |
| (JSC::evaluateInGlobalCallFrame): | |
| * debugger/DebuggerCallFrame.cpp: | |
| (JSC::DebuggerCallFrame::evaluate): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::Interpreter): | |
| (JSC::Interpreter::execute): | |
| (JSC::Interpreter::privateExecute): | |
| (JSC::Interpreter::enableSampler): | |
| (JSC::Interpreter::dumpSampleData): | |
| (JSC::Interpreter::startSampling): | |
| (JSC::Interpreter::stopSampling): | |
| * interpreter/Interpreter.h: | |
| (JSC::Interpreter::sampler): | |
| * jit/JIT.h: | |
| * jsc.cpp: | |
| (runWithScripts): | |
| * runtime/Completion.cpp: | |
| (JSC::checkSyntax): | |
| (JSC::evaluate): | |
| * runtime/Executable.h: | |
| (JSC::EvalExecutable::EvalExecutable): | |
| (JSC::ProgramExecutable::create): | |
| (JSC::ProgramExecutable::ProgramExecutable): | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::startSampling): | |
| (JSC::JSGlobalData::stopSampling): | |
| (JSC::JSGlobalData::dumpSampleData): | |
| * runtime/JSGlobalData.h: | |
| * runtime/JSGlobalObjectFunctions.cpp: | |
| (JSC::globalFuncEval): | |
| 2009-09-29 Jeremy Orlow <jorlow@chromium.org> | |
| Reviewed by Dimitri Glazkov. | |
| Add GYP generated files to svn:ignore | |
| https://bugs.webkit.org/show_bug.cgi?id=29895 | |
| The following files are generated by JavaScriptCore's GYP file and should be ignored: | |
| pcre.mk | |
| wtf.scons | |
| wtf.mk | |
| SConstruct | |
| wtf_config.scons | |
| wtf_config.mk | |
| pcre.scons | |
| * JavaScriptCore.gyp: Changed property svn:ignore. | |
| 2009-09-29 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Standardized an optimization for adding non-numbers. | |
| SunSpider says maybe a tiny speedup. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_add): | |
| (JSC::JIT::emitSlow_op_add): | |
| 2009-09-29 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: export a new symbol. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-09-28 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Removed virtual destructor from JSGlobalObjectData to eliminate pointer | |
| fix-ups when accessing JSGlobalObject::d. | |
| Replaced with an explicit destructor function pointer. | |
| 6% speedup on bench-alloc-nonretained.js. | |
| * JavaScriptCore.exp: | |
| * runtime/JSGlobalObject.cpp: | |
| (JSC::JSGlobalObject::~JSGlobalObject): | |
| (JSC::JSGlobalObject::destroyJSGlobalObjectData): | |
| * runtime/JSGlobalObject.h: | |
| (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): | |
| (JSC::JSGlobalObject::JSGlobalObject): | |
| 2009-09-29 Janne Koskinen <janne.p.koskinen@digia.com> | |
| Reviewed by David Kilzer. | |
| [Qt] Assert messages prints visible in Symbian | |
| https://bugs.webkit.org/show_bug.cgi?id=29808 | |
| Asserts use vprintf to print the messages to stderr. | |
| In Symbian Open C it is not possible to see stderr so | |
| I routed the messages to stdout instead. | |
| * wtf/Assertions.cpp: | |
| 2009-09-29 Janne Koskinen <janne.p.koskinen@digia.com> | |
| Reviewed by Darin Adler. | |
| [Qt] Symbian CRASH macro implementation | |
| Added Symbian specific crash macro that | |
| stops to crash line if JIT debugging is used. | |
| Additional differentiation of access violation | |
| (KERN-EXEC 3) and CRASH panic. | |
| * wtf/Assertions.h: | |
| 2009-09-28 Mark Rowe <mrowe@apple.com> | |
| Fix the PowerPC build. | |
| * JavaScriptCore.exp: | |
| 2009-09-28 Mark Rowe <mrowe@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| <rdar://problem/7195704> JavaScriptCore fails to mark registers when built for x86_64 using LLVM GCC. | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::markCurrentThreadConservatively): Force jmp_buf to use the appropriate alignment for a pointer | |
| to ensure that we correctly interpret the contents of registers during marking. | |
| 2009-09-28 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: added new exports. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-09-28 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: removed exports that no longer exist. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-09-28 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Darin Adler. | |
| NotNullPassRefPtr: smart pointer optimized for passing references that are not null | |
| https://bugs.webkit.org/show_bug.cgi?id=29822 | |
| Added NotNullPassRefPtr, and deployed it in all places that initialize | |
| JavaScript objects. | |
| 2.2% speedup on bench-allocate-nonretained.js. | |
| * API/JSCallbackConstructor.cpp: | |
| (JSC::JSCallbackConstructor::JSCallbackConstructor): | |
| * API/JSCallbackConstructor.h: | |
| * API/JSCallbackObject.h: | |
| * API/JSCallbackObjectFunctions.h: | |
| (JSC::JSCallbackObject::JSCallbackObject): | |
| * JavaScriptCore.exp: | |
| * bytecode/CodeBlock.h: | |
| (JSC::CodeBlock::addFunctionDecl): | |
| (JSC::CodeBlock::addFunctionExpr): | |
| * runtime/ArrayConstructor.cpp: | |
| (JSC::ArrayConstructor::ArrayConstructor): | |
| * runtime/ArrayConstructor.h: | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::ArrayPrototype::ArrayPrototype): | |
| * runtime/ArrayPrototype.h: | |
| * runtime/BooleanConstructor.cpp: | |
| (JSC::BooleanConstructor::BooleanConstructor): | |
| * runtime/BooleanConstructor.h: | |
| * runtime/BooleanObject.cpp: | |
| (JSC::BooleanObject::BooleanObject): | |
| * runtime/BooleanObject.h: | |
| * runtime/BooleanPrototype.cpp: | |
| (JSC::BooleanPrototype::BooleanPrototype): | |
| * runtime/BooleanPrototype.h: | |
| * runtime/DateConstructor.cpp: | |
| (JSC::DateConstructor::DateConstructor): | |
| * runtime/DateConstructor.h: | |
| * runtime/DateInstance.cpp: | |
| (JSC::DateInstance::DateInstance): | |
| * runtime/DateInstance.h: | |
| * runtime/DatePrototype.cpp: | |
| (JSC::DatePrototype::DatePrototype): | |
| * runtime/DatePrototype.h: | |
| * runtime/ErrorConstructor.cpp: | |
| (JSC::ErrorConstructor::ErrorConstructor): | |
| * runtime/ErrorConstructor.h: | |
| * runtime/ErrorInstance.cpp: | |
| (JSC::ErrorInstance::ErrorInstance): | |
| * runtime/ErrorInstance.h: | |
| * runtime/ErrorPrototype.cpp: | |
| (JSC::ErrorPrototype::ErrorPrototype): | |
| * runtime/ErrorPrototype.h: | |
| * runtime/FunctionConstructor.cpp: | |
| (JSC::FunctionConstructor::FunctionConstructor): | |
| * runtime/FunctionConstructor.h: | |
| * runtime/FunctionPrototype.cpp: | |
| (JSC::FunctionPrototype::FunctionPrototype): | |
| * runtime/FunctionPrototype.h: | |
| * runtime/GlobalEvalFunction.cpp: | |
| (JSC::GlobalEvalFunction::GlobalEvalFunction): | |
| * runtime/GlobalEvalFunction.h: | |
| * runtime/InternalFunction.cpp: | |
| (JSC::InternalFunction::InternalFunction): | |
| * runtime/InternalFunction.h: | |
| (JSC::InternalFunction::InternalFunction): | |
| * runtime/JSActivation.cpp: | |
| (JSC::JSActivation::JSActivation): | |
| * runtime/JSActivation.h: | |
| (JSC::JSActivation::JSActivationData::JSActivationData): | |
| * runtime/JSArray.cpp: | |
| (JSC::JSArray::JSArray): | |
| * runtime/JSArray.h: | |
| * runtime/JSByteArray.cpp: | |
| (JSC::JSByteArray::JSByteArray): | |
| * runtime/JSByteArray.h: | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::JSFunction): | |
| * runtime/JSFunction.h: | |
| * runtime/JSGlobalObject.h: | |
| (JSC::JSGlobalObject::JSGlobalObject): | |
| * runtime/JSONObject.h: | |
| (JSC::JSONObject::JSONObject): | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::JSObject): | |
| (JSC::JSObject::setStructure): | |
| * runtime/JSVariableObject.h: | |
| (JSC::JSVariableObject::JSVariableObject): | |
| * runtime/JSWrapperObject.h: | |
| (JSC::JSWrapperObject::JSWrapperObject): | |
| * runtime/MathObject.cpp: | |
| (JSC::MathObject::MathObject): | |
| * runtime/MathObject.h: | |
| * runtime/NativeErrorConstructor.cpp: | |
| (JSC::NativeErrorConstructor::NativeErrorConstructor): | |
| * runtime/NativeErrorConstructor.h: | |
| * runtime/NativeErrorPrototype.cpp: | |
| (JSC::NativeErrorPrototype::NativeErrorPrototype): | |
| * runtime/NativeErrorPrototype.h: | |
| * runtime/NumberConstructor.cpp: | |
| (JSC::NumberConstructor::NumberConstructor): | |
| * runtime/NumberConstructor.h: | |
| * runtime/NumberObject.cpp: | |
| (JSC::NumberObject::NumberObject): | |
| * runtime/NumberObject.h: | |
| * runtime/NumberPrototype.cpp: | |
| (JSC::NumberPrototype::NumberPrototype): | |
| * runtime/NumberPrototype.h: | |
| * runtime/ObjectConstructor.cpp: | |
| (JSC::ObjectConstructor::ObjectConstructor): | |
| * runtime/ObjectConstructor.h: | |
| * runtime/ObjectPrototype.cpp: | |
| (JSC::ObjectPrototype::ObjectPrototype): | |
| * runtime/ObjectPrototype.h: | |
| * runtime/PropertyNameArray.h: | |
| (JSC::PropertyNameArrayData::setCachedPrototypeChain): | |
| * runtime/PrototypeFunction.cpp: | |
| (JSC::PrototypeFunction::PrototypeFunction): | |
| * runtime/PrototypeFunction.h: | |
| * runtime/RegExpConstructor.cpp: | |
| (JSC::RegExpConstructor::RegExpConstructor): | |
| * runtime/RegExpConstructor.h: | |
| * runtime/RegExpObject.cpp: | |
| (JSC::RegExpObject::RegExpObject): | |
| * runtime/RegExpObject.h: | |
| (JSC::RegExpObject::RegExpObjectData::RegExpObjectData): | |
| * runtime/RegExpPrototype.cpp: | |
| (JSC::RegExpPrototype::RegExpPrototype): | |
| * runtime/RegExpPrototype.h: | |
| * runtime/StringConstructor.cpp: | |
| (JSC::StringConstructor::StringConstructor): | |
| * runtime/StringConstructor.h: | |
| * runtime/StringObject.cpp: | |
| (JSC::StringObject::StringObject): | |
| * runtime/StringObject.h: | |
| * runtime/StringObjectThatMasqueradesAsUndefined.h: | |
| (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined): | |
| * runtime/StringPrototype.cpp: | |
| (JSC::StringPrototype::StringPrototype): | |
| * runtime/StringPrototype.h: | |
| * wtf/PassRefPtr.h: | |
| (WTF::NotNullPassRefPtr::NotNullPassRefPtr): | |
| (WTF::NotNullPassRefPtr::~NotNullPassRefPtr): | |
| (WTF::NotNullPassRefPtr::get): | |
| (WTF::NotNullPassRefPtr::clear): | |
| (WTF::NotNullPassRefPtr::releaseRef): | |
| (WTF::NotNullPassRefPtr::operator*): | |
| (WTF::NotNullPassRefPtr::operator->): | |
| (WTF::NotNullPassRefPtr::operator!): | |
| (WTF::NotNullPassRefPtr::operator UnspecifiedBoolType): | |
| * wtf/RefPtr.h: | |
| (WTF::RefPtr::RefPtr): | |
| (WTF::operator==): | |
| 2009-09-28 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoff Garen. | |
| Hard dependency on SSE2 instruction set with JIT | |
| https://bugs.webkit.org/show_bug.cgi?id=29779 | |
| Add floating point support checks to op_jfalse and op_jtrue, and | |
| fix the logic for the slow case of op_add | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitSlow_op_add): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_jfalse): | |
| (JSC::JIT::emit_op_jtrue): | |
| 2009-09-28 Yaar Schnitman <yaar@chromium.org> | |
| Reviewed by Dimitri Glazkov. | |
| Chromium port - recognize we are being built independently | |
| of chromium and look for dependencies under webkit/chromium rather | |
| than chromium/src. | |
| https://bugs.webkit.org/show_bug.cgi?id=29722 | |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: | |
| 2009-09-28 Jakub Wieczorek <faw217@gmail.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Implement XSLT support with QtXmlPatterns. | |
| https://bugs.webkit.org/show_bug.cgi?id=28303 | |
| * wtf/Platform.h: Add a WTF_USE_QXMLQUERY #define. | |
| 2009-09-28 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Simon Hausmann. | |
| Remove __clear_cache which is an internal function of GCC | |
| https://bugs.webkit.org/show_bug.cgi?id=28886 | |
| Although __clear_cache is exported from GCC, this is an internal | |
| function. GCC makes no promises about it. | |
| * jit/ExecutableAllocator.h: | |
| (JSC::ExecutableAllocator::cacheFlush): | |
| 2009-09-28 Sam Weinig <sam@webkit.org> | |
| Reviewed by Oliver Hunt. | |
| Fix an absolute path to somewhere in Oliver's machine to a relative path | |
| for derived JSONObject.lut.h. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| 2009-09-28 Joerg Bornemann <joerg.bornemann@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Add ARM version detection for Windows CE. | |
| * wtf/Platform.h: | |
| 2009-09-26 Yongjun Zhang <yongjun.zhang@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Add MarkStackSymbian.cpp to build JavascriptCore for Symbian. | |
| Re-use Windows shrinkAllocation implementation because Symbian doesn't | |
| support releasing part of memory region. | |
| Use fastMalloc and fastFree to implement allocateStack and releaseStack | |
| for Symbian port. | |
| * JavaScriptCore.pri: | |
| * runtime/MarkStack.h: | |
| (JSC::MarkStack::MarkStackArray::shrinkAllocation): | |
| * runtime/MarkStackSymbian.cpp: Added. | |
| (JSC::MarkStack::initializePagesize): | |
| (JSC::MarkStack::allocateStack): | |
| (JSC::MarkStack::releaseStack): | |
| 2009-09-25 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Fix unaligned data access in YARR_JIT on ARMv5 and below. | |
| https://bugs.webkit.org/show_bug.cgi?id=29695 | |
| On ARMv5 and below all data access should be naturally aligned. | |
| In the YARR_JIT there is a case when character pairs are | |
| loaded from the input string, but this data access is not | |
| naturally aligned. This fix introduces load32WithUnalignedHalfWords | |
| and branch32WithUnalignedHalfWords functions which contain | |
| naturally aligned memory loads - half word loads - on ARMv5 and below. | |
| * assembler/MacroAssemblerARM.cpp: | |
| (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords): | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords): | |
| (JSC::MacroAssemblerARM::branch32WithUnalignedHalfWords): | |
| * assembler/MacroAssemblerARMv7.h: | |
| (JSC::MacroAssemblerARMv7::load32WithUnalignedHalfWords): | |
| (JSC::MacroAssemblerARMv7::branch32): | |
| (JSC::MacroAssemblerARMv7::branch32WithUnalignedHalfWords): | |
| * assembler/MacroAssemblerX86Common.h: | |
| (JSC::MacroAssemblerX86Common::load32WithUnalignedHalfWords): | |
| (JSC::MacroAssemblerX86Common::branch32WithUnalignedHalfWords): | |
| * wtf/Platform.h: | |
| * yarr/RegexJIT.cpp: | |
| (JSC::Yarr::RegexGenerator::generatePatternCharacterPair): | |
| 2009-09-25 Jeremy Orlow <jorlow@chromium.org> | |
| This is breaking Chromium try bots, so I'm counting this as a build fix. | |
| Add more svn:ignore exceptions. On different platforms, these files are | |
| generated with different case for JavaScriptCore. Also there are some | |
| wtf project files that get built apparently. | |
| * JavaScriptCore.gyp: Changed property svn:ignore. | |
| 2009-09-25 Ada Chan <adachan@apple.com> | |
| Build fix. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-09-25 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Darin Adler. | |
| Inlined some object creation code, including lexicalGlobalObject access | |
| https://bugs.webkit.org/show_bug.cgi?id=29750 | |
| SunSpider says 0.5% faster. | |
| 0.8% speedup on bench-alloc-nonretained.js. | |
| 2.5% speedup on v8-splay.js. | |
| * interpreter/CachedCall.h: | |
| (JSC::CachedCall::CachedCall): | |
| * interpreter/CallFrame.h: | |
| (JSC::ExecState::lexicalGlobalObject): | |
| (JSC::ExecState::globalThisValue): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::dumpRegisters): | |
| (JSC::Interpreter::execute): | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * runtime/FunctionConstructor.cpp: | |
| (JSC::constructFunction): | |
| * runtime/ScopeChain.cpp: | |
| (JSC::ScopeChainNode::print): | |
| * runtime/ScopeChain.h: | |
| (JSC::ScopeChainNode::ScopeChainNode): | |
| (JSC::ScopeChainNode::~ScopeChainNode): | |
| (JSC::ScopeChainNode::push): | |
| (JSC::ScopeChain::ScopeChain): | |
| (JSC::ScopeChain::globalObject): Added a globalObject data member to ScopeChainNode. | |
| Replaced accessor function for globalObject() with data member. Replaced | |
| globalThisObject() accessor with direct access to globalThis, to match. | |
| * runtime/JSGlobalObject.cpp: | |
| (JSC::JSGlobalObject::init): | |
| * runtime/JSGlobalObject.h: Inlined array and object construction. | |
| 2009-09-25 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Gavin Barraclough. | |
| Add ARM version detection rules for Symbian | |
| https://bugs.webkit.org/show_bug.cgi?id=29715 | |
| * wtf/Platform.h: | |
| 2009-09-24 Xan Lopez <xlopez@igalia.com> | |
| Reviewed by Mark "Do It!" Rowe. | |
| Some GCC versions don't like C++-style comments in preprocessor | |
| directives, change to C-style to shut them up. | |
| * wtf/Platform.h: | |
| 2009-09-24 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Division is needlessly slow in 64-bit | |
| https://bugs.webkit.org/show_bug.cgi?id=29723 | |
| Add codegen for op_div on x86-64 | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): | |
| (JSC::JIT::privateCompileSlowCases): | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::compileBinaryArithOpSlowCase): | |
| (JSC::JIT::emit_op_div): | |
| (JSC::JIT::emitSlow_op_div): | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::isOperandConstantImmediateDouble): | |
| (JSC::JIT::addressFor): | |
| (JSC::JIT::emitLoadDouble): | |
| (JSC::JIT::emitLoadInt32ToDouble): | |
| (JSC::JIT::emitJumpSlowCaseIfNotImmediateNumber): | |
| 2009-09-24 Jeremy Orlow <jorlow@chromium.org> | |
| Reviewed by Dimitri Glazkov. | |
| Add GYP generated files to svn:ignore | |
| https://bugs.webkit.org/show_bug.cgi?id=29724 | |
| Adding the following files to the svn:ignore list (all in the | |
| JavaScriptCore/JavaScriptCore.gyp directory) | |
| JavaScriptCore.xcodeproj | |
| JavaScriptCore.sln | |
| JavaScriptCore.vcproj | |
| JavaScriptCore_Debug.rules | |
| JavaScriptCore_Release.rules | |
| JavaScriptCore_Release - no tcmalloc.rules | |
| JavaScriptCore_Purify.rules | |
| JavaScriptCore.mk | |
| JavaScriptCore_Debug_rules.mk | |
| JavaScriptCore_Release_rules.mk | |
| JavaScriptCore_Release - no tcmalloc_rules.mk | |
| JavaScriptCore_Purify_rules.mk | |
| JavaScriptCore.scons | |
| JavaScriptCore_main.scons | |
| * JavaScriptCore.gyp: Changed property svn:ignore. | |
| 2009-09-24 Yong Li <yong.li@torchmobile.com> | |
| Reviewed by Adam Barth. | |
| Replace platform-dependent code with WTF::currentTime() | |
| https://bugs.webkit.org/show_bug.cgi?id=29148 | |
| * jsc.cpp: | |
| (StopWatch::start): | |
| (StopWatch::stop): | |
| (StopWatch::getElapsedMS): | |
| * runtime/TimeoutChecker.cpp: | |
| (JSC::getCPUTime): | |
| 2009-09-24 Mark Rowe <mrowe@apple.com> | |
| Reviewed by Sam Weinig. | |
| <rdar://problem/7215058> FastMalloc scavenging thread should be named | |
| * wtf/FastMalloc.cpp: | |
| (WTF::TCMalloc_PageHeap::scavengerThread): Set the thread name. | |
| * wtf/Platform.h: Move the knowledge of whether pthread_setname_np exists to here as HAVE(PTHREAD_SETNAME_NP). | |
| * wtf/ThreadingPthreads.cpp: | |
| (WTF::setThreadNameInternal): Use HAVE(PTHREAD_SETNAME_NP). | |
| 2009-09-24 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Renamed clear to removeAll, as suggested by Darin Adler. | |
| * wtf/HashCountedSet.h: | |
| (WTF::::removeAll): | |
| 2009-09-24 Mark Rowe <mrowe@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Fix FastMalloc to build with assertions enabled. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::TCMalloc_Central_FreeList::ReleaseToSpans): | |
| * wtf/TCSpinLock.h: | |
| (TCMalloc_SpinLock::IsHeld): | |
| 2009-09-24 Geoffrey Garen <ggaren@apple.com> | |
| Suggested by Darin Adler. | |
| Removed some unnecessary parameter names. | |
| * wtf/HashCountedSet.h: | |
| 2009-09-24 Janne Koskinen <janne.p.koskinen@digia.com> | |
| Reviewed by Simon Hausmann. | |
| On Windows JSChar is typedef'ed to wchar_t. | |
| When building with WINSCW for Symbian we need to do the | |
| same typedef. | |
| * API/JSStringRef.h: | |
| 2009-09-23 Geoffrey Garen <ggaren@apple.com> | |
| A piece of my last patch that I forgot. | |
| * wtf/HashCountedSet.h: | |
| (WTF::::clear): Added HashCountedSet::clear. | |
| 2009-09-24 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Avoid __clear_cache built-in function if DISABLE_BUILTIN_CLEAR_CACHE define is set | |
| https://bugs.webkit.org/show_bug.cgi?id=28886 | |
| There are some GCC packages (for example GCC-2006q3 from CodeSourcery) | |
| which contain __clear_cache built-in function only for C while the C++ | |
| version of __clear_cache is missing on ARM architectures. | |
| Fixed a small bug in the inline assembly of cacheFlush function on | |
| ARM_TRADITIONAL. | |
| * jit/ExecutableAllocator.h: | |
| (JSC::ExecutableAllocator::cacheFlush): | |
| 2009-09-23 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Added the ability to swap vectors with inline capacities, so you can | |
| store a vector with inline capacity in a hash table. | |
| * wtf/Vector.h: | |
| (WTF::swap): | |
| (WTF::VectorBuffer::swap): | |
| 2009-09-23 David Kilzer <ddkilzer@apple.com> | |
| Move definition of USE(PLUGIN_HOST_PROCESS) from WebKitPrefix.h to Platform.h | |
| Reviewed by Mark Rowe. | |
| * wtf/Platform.h: Define WTF_USE_PLUGIN_HOST_PROCESS to 1 when | |
| building on 64-bit SnowLeopard. Define to 0 elsewhere. | |
| 2009-09-22 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoff Garen. | |
| Code sampling builds are broken. | |
| https://bugs.webkit.org/show_bug.cgi?id=29662 | |
| Fix build. | |
| * bytecode/EvalCodeCache.h: | |
| (JSC::EvalCodeCache::get): | |
| * bytecode/SamplingTool.cpp: | |
| (JSC::ScriptSampleRecord::sample): | |
| (JSC::SamplingTool::doRun): | |
| (JSC::SamplingTool::notifyOfScope): | |
| (JSC::compareScriptSampleRecords): | |
| (JSC::SamplingTool::dump): | |
| * bytecode/SamplingTool.h: | |
| (JSC::ScriptSampleRecord::ScriptSampleRecord): | |
| (JSC::ScriptSampleRecord::~ScriptSampleRecord): | |
| (JSC::SamplingTool::SamplingTool): | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::BytecodeGenerator): | |
| (JSC::BytecodeGenerator::emitNewFunction): | |
| (JSC::BytecodeGenerator::emitNewFunctionExpression): | |
| * bytecompiler/BytecodeGenerator.h: | |
| (JSC::BytecodeGenerator::makeFunction): | |
| * debugger/Debugger.cpp: | |
| (JSC::evaluateInGlobalCallFrame): | |
| * debugger/DebuggerCallFrame.cpp: | |
| (JSC::DebuggerCallFrame::evaluate): | |
| * parser/Nodes.cpp: | |
| (JSC::ScopeNode::ScopeNode): | |
| * runtime/Completion.cpp: | |
| (JSC::checkSyntax): | |
| (JSC::evaluate): | |
| * runtime/Executable.cpp: | |
| (JSC::FunctionExecutable::fromGlobalCode): | |
| * runtime/Executable.h: | |
| (JSC::ScriptExecutable::ScriptExecutable): | |
| (JSC::EvalExecutable::EvalExecutable): | |
| (JSC::EvalExecutable::create): | |
| (JSC::ProgramExecutable::ProgramExecutable): | |
| (JSC::FunctionExecutable::create): | |
| (JSC::FunctionExecutable::FunctionExecutable): | |
| * runtime/JSGlobalObjectFunctions.cpp: | |
| (JSC::globalFuncEval): | |
| 2009-09-22 Darin Adler <darin@apple.com> | |
| Reviewed by Sam Weinig. | |
| * wtf/Forward.h: Added PassOwnPtr. | |
| 2009-09-22 Yaar Schnitman <yaar@chromium.org> | |
| Reviewed by David Levin. | |
| Ported chromium.org's javascriptcore.gyp for the webkit chromium port. | |
| https://bugs.webkit.org/show_bug.cgi?id=29617 | |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: Added. | |
| 2009-09-22 Thiago Macieira <thiago.macieira@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Fix compilation with WINSCW: no varargs macros | |
| Disable variadic arguments for WINSCW just like we do | |
| for MSVC7. | |
| * wtf/Assertions.h: | |
| 2009-09-22 Kent Hansen <khansen@trolltech.com> | |
| Reviewed by Simon Hausmann. | |
| Disable variadic macros on MSVC7. | |
| This was originally added in r26589 but not extended | |
| when LOG_DISABLED/ASSERT_DISABLED was introduced. | |
| * wtf/Assertions.h: | |
| 2009-09-22 Simon Hausmann <simon.hausmann@nokia.com> | |
| Unreviewed build fix for Windows CE < 5 | |
| Define WINCEBASIC to disable the IsDebuggerPresent() code in | |
| wtf/Assertions.cpp. | |
| * JavaScriptCore.pri: | |
| 2009-09-22 Joerg Bornemann <joerg.bornemann@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Fix major memory leak in JavaScriptCore RegisterFile on Windows CE | |
| https://bugs.webkit.org/show_bug.cgi?id=29367 | |
| On Widows CE we must decommit all committed pages before we release | |
| them. See VirtualFree documentation. | |
| Desktop Windows behaves much smoother in this situation. | |
| * interpreter/RegisterFile.cpp: | |
| (JSC::RegisterFile::~RegisterFile): | |
| 2009-09-21 Greg Bolsinga <bolsinga@apple.com> | |
| Reviewed by Simon Fraser & Sam Weinig. | |
| Add ENABLE(ORIENTATION_EVENTS) | |
| https://bugs.webkit.org/show_bug.cgi?id=29508 | |
| * wtf/Platform.h: Also sort PLATFORM(IPHONE) #defines. | |
| 2009-09-21 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Eric Seidel. | |
| [Fix] SourceCode's uninitialized member | |
| Potential source of crashes and bugs was fixed. Default constructor | |
| didn't initialized m_provider member. | |
| https://bugs.webkit.org/show_bug.cgi?id=29364 | |
| * parser/SourceCode.h: | |
| (JSC::SourceCode::SourceCode): | |
| 2009-09-21 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoff Garen. | |
| REGRESSION (r48582): Crash in StructureStubInfo::initPutByIdTransition when reloading trac.webkit.org | |
| https://bugs.webkit.org/show_bug.cgi?id=29599 | |
| It is unsafe to attempt to cache new property transitions on | |
| dictionaries of any type. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::tryCachePutByID): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::tryCachePutByID): | |
| 2009-09-21 Oliver Hunt <oliver@apple.com> | |
| RS=Maciej Stachowiak. | |
| Re-land SNES fix with corrected assertion. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::resolveGlobal): | |
| (JSC::Interpreter::tryCachePutByID): | |
| (JSC::Interpreter::tryCacheGetByID): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::tryCachePutByID): | |
| (JSC::JITThunks::tryCacheGetByID): | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * runtime/BatchedTransitionOptimizer.h: | |
| (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): | |
| * runtime/JSObject.cpp: | |
| (JSC::JSObject::removeDirect): | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::Structure): | |
| (JSC::Structure::getEnumerablePropertyNames): | |
| (JSC::Structure::despecifyDictionaryFunction): | |
| (JSC::Structure::addPropertyTransitionToExistingStructure): | |
| (JSC::Structure::addPropertyTransition): | |
| (JSC::Structure::removePropertyTransition): | |
| (JSC::Structure::toDictionaryTransition): | |
| (JSC::Structure::toCacheableDictionaryTransition): | |
| (JSC::Structure::toUncacheableDictionaryTransition): | |
| (JSC::Structure::fromDictionaryTransition): | |
| (JSC::Structure::removePropertyWithoutTransition): | |
| * runtime/Structure.h: | |
| (JSC::Structure::isDictionary): | |
| (JSC::Structure::isUncacheableDictionary): | |
| (JSC::Structure::): | |
| * runtime/StructureChain.cpp: | |
| (JSC::StructureChain::isCacheable): | |
| 2009-09-21 Adam Roben <aroben@apple.com> | |
| Revert r48573, as it caused many assertion failures | |
| * interpreter/Interpreter.cpp: | |
| * jit/JITStubs.cpp: | |
| * runtime/BatchedTransitionOptimizer.h: | |
| * runtime/JSObject.cpp: | |
| * runtime/Structure.cpp: | |
| * runtime/Structure.h: | |
| * runtime/StructureChain.cpp: | |
| 2009-09-21 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
| Unreviewed make dist build fix. Missing files. | |
| * GNUmakefile.am: | |
| 2009-09-19 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam 'Cabin Boy' Weinig. | |
| Fix stack alignment with ARM THUMB2 JIT. | |
| https://bugs.webkit.org/show_bug.cgi?id=29526 | |
| Stack is currently being decremented by 0x3c, bump this to 0x40 to make this a | |
| multiple of 16 bytes. | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::JITThunks): | |
| * jit/JITStubs.h: | |
| 2009-09-20 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| SNES is too slow | |
| https://bugs.webkit.org/show_bug.cgi?id=29534 | |
| The problem was that the emulator used multiple classes with | |
| more properties than our dictionary cutoff allowed, this resulted | |
| in more or less all critical logic inside the emulator requiring | |
| uncached property access. | |
| Rather than simply bumping the dictionary cutoff, this patch | |
| recognises that there are two ways to create a "dictionary" | |
| structure. Either by adding a large number of properties, or | |
| by removing a property. In the case of adding properties we | |
| know all the existing properties will maintain their existing | |
| offsets, so we could cache access to those properties, if we | |
| know they won't be removed. | |
| To make this possible, this patch adds the logic required to | |
| distinguish a dictionary created by addition from one created | |
| by removal. With this logic in place we can now cache access | |
| to objects with large numbers of properties. | |
| SNES performance improved by more than 6x. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::resolveGlobal): | |
| (JSC::Interpreter::tryCachePutByID): | |
| (JSC::Interpreter::tryCacheGetByID): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::tryCachePutByID): | |
| (JSC::JITThunks::tryCacheGetByID): | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * runtime/BatchedTransitionOptimizer.h: | |
| (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): | |
| * runtime/JSObject.cpp: | |
| (JSC::JSObject::removeDirect): | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::Structure): | |
| (JSC::Structure::getEnumerablePropertyNames): | |
| (JSC::Structure::despecifyDictionaryFunction): | |
| (JSC::Structure::addPropertyTransitionToExistingStructure): | |
| (JSC::Structure::addPropertyTransition): | |
| (JSC::Structure::removePropertyTransition): | |
| (JSC::Structure::toDictionaryTransition): | |
| (JSC::Structure::toCacheableDictionaryTransition): | |
| (JSC::Structure::toUncacheableDictionaryTransition): | |
| (JSC::Structure::fromDictionaryTransition): | |
| (JSC::Structure::removePropertyWithoutTransition): | |
| * runtime/Structure.h: | |
| (JSC::Structure::isDictionary): | |
| (JSC::Structure::isUncacheableDictionary): | |
| (JSC::Structure::): | |
| * runtime/StructureChain.cpp: | |
| (JSC::StructureChain::isCacheable): | |
| 2009-09-19 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Implement ES5 Object.create function | |
| https://bugs.webkit.org/show_bug.cgi?id=29524 | |
| Implement Object.create. Very simple patch, effectively Object.defineProperties | |
| only creating the target object itself. | |
| * runtime/CommonIdentifiers.h: | |
| * runtime/ObjectConstructor.cpp: | |
| (JSC::ObjectConstructor::ObjectConstructor): | |
| (JSC::objectConstructorCreate): | |
| 2009-09-19 Dan Bernstein <mitz@apple.com> | |
| Fix clean debug builds. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-09-19 Joerg Bornemann <joerg.bornemann@nokia.com> | |
| Reviewed by George Staikos. | |
| QtWebKit Windows CE compile fix | |
| https://bugs.webkit.org/show_bug.cgi?id=29379 | |
| There is no _aligned_alloc or _aligned_free on Windows CE. | |
| We just use the Windows code that was there before and use VirtualAlloc. | |
| But that also means that the BLOCK_SIZE must be 64K as this function | |
| allocates on 64K boundaries. | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::allocateBlock): | |
| (JSC::Heap::freeBlock): | |
| * runtime/Collector.h: | |
| 2009-09-19 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Sam Weinig. | |
| Implement ES5 Object.defineProperties function | |
| https://bugs.webkit.org/show_bug.cgi?id=29522 | |
| Implement Object.defineProperties. Fairly simple patch, simply makes use of | |
| existing functionality used for defineProperty. | |
| * runtime/CommonIdentifiers.h: | |
| * runtime/ObjectConstructor.cpp: | |
| (JSC::ObjectConstructor::ObjectConstructor): | |
| (JSC::defineProperties): | |
| (JSC::objectConstructorDefineProperties): | |
| 2009-09-19 Oliver Hunt <oliver@apple.com> | |
| Reviewed by NOBODY (Build fix). | |
| Windows build fix part2 | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-09-19 Oliver Hunt <oliver@apple.com> | |
| Reviewed by NOBODY (Buildfix). | |
| Windows build fix part 1. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-09-18 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoff Garen. | |
| Implement ES5 Object.defineProperty function | |
| https://bugs.webkit.org/show_bug.cgi?id=29503 | |
| Implement Object.defineProperty. This requires adding the API to | |
| ObjectConstructor, along with a helper function that implements the | |
| ES5 internal [[ToPropertyDescriptor]] function. It then adds | |
| JSObject::defineOwnProperty that implements the appropriate ES5 semantics. | |
| Currently defineOwnProperty uses a delete followed by a put to redefine | |
| attributes of a property, clearly this is less efficient than it could be | |
| but we can improve this if it needs to be possible in future. | |
| * JavaScriptCore.exp: | |
| * debugger/DebuggerActivation.cpp: | |
| (JSC::DebuggerActivation::defineGetter): | |
| (JSC::DebuggerActivation::defineSetter): | |
| * debugger/DebuggerActivation.h: | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JITStubs.cpp: | |
| Update defineGetter/Setter calls | |
| * runtime/CommonIdentifiers.h: | |
| * runtime/JSArray.cpp: | |
| (JSC::JSArray::getOwnPropertySlot): | |
| * runtime/JSGlobalObject.cpp: | |
| (JSC::JSGlobalObject::defineGetter): | |
| (JSC::JSGlobalObject::defineSetter): | |
| * runtime/JSGlobalObject.h: | |
| * runtime/JSObject.cpp: | |
| (JSC::JSObject::defineGetter): | |
| (JSC::JSObject::defineSetter): | |
| (JSC::putDescriptor): | |
| (JSC::JSObject::defineOwnProperty): | |
| * runtime/JSObject.h: | |
| * runtime/ObjectConstructor.cpp: | |
| (JSC::ObjectConstructor::ObjectConstructor): | |
| (JSC::objectConstructorGetOwnPropertyDescriptor): | |
| (JSC::toPropertyDescriptor): | |
| (JSC::objectConstructorDefineProperty): | |
| * runtime/ObjectPrototype.cpp: | |
| (JSC::objectProtoFuncDefineGetter): | |
| (JSC::objectProtoFuncDefineSetter): | |
| * runtime/PropertyDescriptor.cpp: | |
| (JSC::PropertyDescriptor::writable): | |
| (JSC::PropertyDescriptor::enumerable): | |
| (JSC::PropertyDescriptor::configurable): | |
| (JSC::PropertyDescriptor::isDataDescriptor): | |
| (JSC::PropertyDescriptor::isGenericDescriptor): | |
| (JSC::PropertyDescriptor::isAccessorDescriptor): | |
| (JSC::PropertyDescriptor::getter): | |
| (JSC::PropertyDescriptor::setter): | |
| (JSC::PropertyDescriptor::setDescriptor): | |
| (JSC::PropertyDescriptor::setAccessorDescriptor): | |
| (JSC::PropertyDescriptor::setWritable): | |
| (JSC::PropertyDescriptor::setEnumerable): | |
| (JSC::PropertyDescriptor::setConfigurable): | |
| (JSC::PropertyDescriptor::setSetter): | |
| (JSC::PropertyDescriptor::setGetter): | |
| (JSC::PropertyDescriptor::equalTo): | |
| (JSC::PropertyDescriptor::attributesEqual): | |
| (JSC::PropertyDescriptor::attributesWithOverride): | |
| * runtime/PropertyDescriptor.h: | |
| (JSC::PropertyDescriptor::PropertyDescriptor): | |
| (JSC::PropertyDescriptor::value): | |
| (JSC::PropertyDescriptor::setValue): | |
| (JSC::PropertyDescriptor::isEmpty): | |
| (JSC::PropertyDescriptor::writablePresent): | |
| (JSC::PropertyDescriptor::enumerablePresent): | |
| (JSC::PropertyDescriptor::configurablePresent): | |
| (JSC::PropertyDescriptor::setterPresent): | |
| (JSC::PropertyDescriptor::getterPresent): | |
| (JSC::PropertyDescriptor::operator==): | |
| (JSC::PropertyDescriptor::): | |
| 2009-09-18 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Build fix to enable ARM_THUMB2 on Linux | |
| https://bugs.webkit.org/show_bug.cgi?id= | |
| * jit/ExecutableAllocator.h: | |
| (JSC::ExecutableAllocator::cacheFlush): | |
| * jit/JITStubs.cpp: | |
| * wtf/Platform.h: | |
| 2009-09-18 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Defines two pseudo-platforms for ARM and Thumb-2 instruction set. | |
| https://bugs.webkit.org/show_bug.cgi?id=29122 | |
| Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2 | |
| macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used | |
| when Thumb-2 instruction set is the required target. The | |
| PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In | |
| case where the code is common the PLATFORM(ARM) have to be used. | |
| * assembler/ARMAssembler.cpp: | |
| * assembler/ARMAssembler.h: | |
| * assembler/ARMv7Assembler.h: | |
| * assembler/MacroAssembler.h: | |
| * assembler/MacroAssemblerARM.cpp: | |
| * assembler/MacroAssemblerARM.h: | |
| * assembler/MacroAssemblerCodeRef.h: | |
| (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr): | |
| * jit/ExecutableAllocator.h: | |
| * jit/JIT.h: | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::beginUninterruptedSequence): | |
| (JSC::JIT::preserveReturnAddressAfterCall): | |
| (JSC::JIT::restoreReturnAddressBeforeReturn): | |
| (JSC::JIT::restoreArgumentReference): | |
| (JSC::JIT::restoreArgumentReferenceForTrampoline): | |
| * jit/JITOpcodes.cpp: | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::JITThunks): | |
| * jit/JITStubs.h: | |
| * wtf/Platform.h: | |
| * yarr/RegexJIT.cpp: | |
| (JSC::Yarr::RegexGenerator::generateEnter): | |
| 2009-09-18 Joerg Bornemann <joerg.bornemann@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Fix the Qt/Windows CE build. | |
| * JavaScriptCore.pri: Build the ce_time.cpp functions from | |
| within Qt externally. | |
| * wtf/DateMath.cpp: Removed unnecessary Qt #ifdef, for the | |
| Qt build these functions are no external, too. | |
| 2009-09-17 Janne Koskinen <janne.p.koskinen@digia.com> | |
| Reviewed by Simon Hausmann. | |
| Symbian/WINSCW build fox. | |
| Repeat Q_OS_WIN wchar_t hack for WINSCW, similar to | |
| revision 24774. | |
| WINSCW defines wchar_t, thus UChar has to be wchar_t | |
| * wtf/unicode/qt4/UnicodeQt4.h: | |
| 2009-09-17 Janne Koskinen <janne.p.koskinen@digia.com> | |
| Reviewed by Simon Hausmann. | |
| Symbian/WINSCW build fix. | |
| https://bugs.webkit.org/show_bug.cgi?id=29186 | |
| WINSCW Template specialisation name in declaration must the be the same as in implementation. | |
| * runtime/LiteralParser.h: | |
| 2009-09-15 Norbert Leser <norbert.leser@nokia.com> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=27060 | |
| Symbian compiler for emulator target (WINSCW) fails with | |
| "illegal operand" for m_attributesInPrevious in structure.ccp | |
| (when calling make_pair functions). | |
| This error is apparently due to the compiler not properly | |
| resolving the unsigned type of the declared bitfield. | |
| Initial patch explicitly casted m_attributesInPrevious | |
| to unsigned, but since bitfield optimization is not critical for | |
| the emulator target, this conditional change in header file | |
| appears to be least intrusive. | |
| * runtime/Structure.h: | |
| 2009-09-16 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| Fix GCC warnings on ARM_THUMB2 platform | |
| * assembler/ARMv7Assembler.h: | |
| (JSC::ARMThumbImmediate::countLeadingZerosPartial): | |
| * assembler/MacroAssemblerARMv7.h: | |
| (JSC::MacroAssemblerARMv7::branchTruncateDoubleToInt32): | |
| (JSC::MacroAssemblerARMv7::moveFixedWidthEncoding): | |
| 2009-09-16 Greg Bolsinga <bolsinga@apple.com> | |
| Add ENABLE(INSPECTOR) | |
| https://bugs.webkit.org/show_bug.cgi?id=29260 | |
| Reviewed by David Kilzer. | |
| * wtf/Platform.h: | |
| 2009-09-16 Greg Bolsinga <bolsinga@apple.com> | |
| Add ENABLE(CONTEXT_MENUS) | |
| https://bugs.webkit.org/show_bug.cgi?id=29225 | |
| Reviewed by David Kilzer. | |
| * wtf/Platform.h: | |
| 2009-09-16 Benjamin C Meyer <benjamin.meyer@torchmobile.com> | |
| Reviewed by Eric Seidel. | |
| The webkit stdint and stdbool headers exists because | |
| the compiler MSVC doesn't include them. The check | |
| should not check for PLATFORM(WIN_OS) but for MSVC. | |
| * os-win32/stdbool.h: | |
| * os-win32/stdint.h: | |
| 2009-09-16 Greg Bolsinga <bolsinga@apple.com> | |
| Add ENABLE(DRAG_SUPPORT) | |
| https://bugs.webkit.org/show_bug.cgi?id=29233 | |
| Reviewed by David Kilzer. | |
| * wtf/Platform.h: | |
| 2009-09-16 Kevin Ollivier <kevino@theolliviers.com> | |
| waf build fix after flag was moved to correct place. | |
| * wscript: | |
| 2009-09-16 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Build fix for 64-bit Qt on Mac OS X | |
| * wtf/Platform.h: Use JSVALUE64 on DARWIN, not only on MAC | |
| 2009-09-16 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Fix wtf/ThreadSpecific.h under Qt to free thread local objects. | |
| https://bugs.webkit.org/show_bug.cgi?id=29295 | |
| This is an important fix when JavaScript workers are in use, since | |
| unfreed ThreadGlobalDatas leak a big amount of memory (50-100k each). | |
| QThreadStorage calls the destructor of a given object, which is the | |
| ThreadSpecific::Data. Unlike pthread, Qt is object oriented, and does | |
| not support the calling of a static utility function when the thread | |
| is about to close. In this patch we call the ThreadSpecific::destroy() | |
| utility function from the destructor of ThreadSpecific::Data. Moreover, | |
| since Qt resets all thread local values to 0 before the calling of the | |
| appropriate destructors, we set back the pointer to its original value. | |
| This is necessary because the get() method of the ThreadSpecific | |
| object may be called during the exuction of the destructor. | |
| * wtf/ThreadSpecific.h: | |
| (WTF::ThreadSpecific::Data::~Data): | |
| (WTF::::~ThreadSpecific): | |
| (WTF::::set): | |
| (WTF::::destroy): | |
| 2009-09-10 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoff Garen. | |
| Allow anonymous storage inside JSObject | |
| https://bugs.webkit.org/show_bug.cgi?id=29168 | |
| Add the concept of anonymous slots to Structures so that it is | |
| possible to store references to values that need marking in the | |
| standard JSObject storage buffer. This allows us to reduce the | |
| malloc overhead of some objects (by allowing them to store JS | |
| values in the inline storage of the object) and reduce the | |
| dependence of custom mark functions (if all an objects children | |
| are in the standard object property storage there's no need to | |
| mark them manually). | |
| * JavaScriptCore.exp: | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::putAnonymousValue): | |
| (JSC::JSObject::getAnonymousValue): | |
| (JSC::JSObject::addAnonymousSlots): | |
| * runtime/JSWrapperObject.h: | |
| (JSC::JSWrapperObject::createStructure): | |
| (JSC::JSWrapperObject::JSWrapperObject): | |
| (JSC::JSWrapperObject::setInternalValue): | |
| * runtime/PropertyMapHashTable.h: | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::~Structure): | |
| (JSC::Structure::materializePropertyMap): | |
| (JSC::Structure::addAnonymousSlotsTransition): | |
| (JSC::Structure::copyPropertyTable): | |
| (JSC::Structure::put): | |
| (JSC::Structure::rehashPropertyMapHashTable): | |
| * runtime/Structure.h: | |
| (JSC::Structure::propertyStorageSize): | |
| (JSC::StructureTransitionTable::reifySingleTransition): | |
| * runtime/StructureTransitionTable.h: | |
| (JSC::StructureTransitionTable::TransitionTable::addSlotTransition): | |
| (JSC::StructureTransitionTable::TransitionTable::removeSlotTransition): | |
| (JSC::StructureTransitionTable::TransitionTable::getSlotTransition): | |
| (JSC::StructureTransitionTable::getAnonymousSlotTransition): | |
| (JSC::StructureTransitionTable::addAnonymousSlotTransition): | |
| (JSC::StructureTransitionTable::removeAnonymousSlotTransition): | |
| 2009-09-15 Alex Milowski <alex@milowski.com> | |
| Reviewed by Tor Arne Vestbø. | |
| Added the ENABLE_MATHML define to the features | |
| * Configurations/FeatureDefines.xcconfig: | |
| 2009-09-15 Csaba Osztrogonac <oszi@inf.u-szeged.hu> | |
| Reviewed by Tor Arne Vestbø. | |
| [Qt] Build fix for windows. | |
| After http://trac.webkit.org/changeset/47795 the MinGW build broke, | |
| because MinGW has __mingw_aligned_malloc instead of _aligned_malloc. | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::allocateBlock): MinGW case added. | |
| (JSC::Heap::freeBlock): MinGW case added. | |
| 2009-09-15 Csaba Osztrogonac <oszi@inf.u-szeged.hu> | |
| Reviewed by Tor Arne Vestbø. | |
| [Qt] Build fix for Windows/MinGW | |
| https://bugs.webkit.org/show_bug.cgi?id=29268 | |
| * wtf/Platform.h: JSVALUE32_64 temporarily disabled on PLATFORM(WIN_OS) with COMPILER(MINGW) | |
| 2009-09-14 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Detect VFP at runtime in generic ARM port on Linux platform. | |
| https://bugs.webkit.org/show_bug.cgi?id=29076 | |
| * JavaScriptCore.pri: | |
| * assembler/MacroAssemblerARM.cpp: Added. | |
| (JSC::isVFPPresent): | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::supportsFloatingPoint): | |
| 2009-09-14 Csaba Osztrogonac <oszi@inf.u-szeged.hu> | |
| Reviewed by Tor Arne Vestbø. | |
| [Qt] Build fix for windows build. | |
| * JavaScriptCore.pri: Correct a logic error. | |
| * pcre/dftables: Add missing paranthesis for tmpdir function. | |
| 2009-09-12 Oliver Hunt <oliver@apple.com> | |
| Reviewed by NOBODY (Build fix). | |
| Build fix for windows exports (again). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-09-12 Oliver Hunt <oliver@apple.com> | |
| Reviewed by NOBODY (Build fix). | |
| Build fix for windows exports. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-09-12 Oliver Hunt <oliver@apple.com> | |
| Reviewed by NOBODY (Build fix). | |
| Correct fix for non-allinonefile builds | |
| * runtime/ObjectConstructor.cpp: | |
| 2009-09-12 Oliver Hunt <oliver@apple.com> | |
| Reviewed by NOBODY (Build fix). | |
| Fix non-allinonefile builds | |
| * runtime/ObjectConstructor.cpp: | |
| 2009-09-12 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| [ES5] Implement Object.keys | |
| https://bugs.webkit.org/show_bug.cgi?id=29170 | |
| This patch basically requires two separate steps, the first is to split getPropertyNames | |
| into two functions -- getOwnPropertyNames and getPropertyNames, basically making them behave | |
| in the same way as getOwnPropertySlot and getPropertySlot. In essence getOwnPropertyNames | |
| produces the list of properties on an object excluding its prototype chain and getPropertyNames | |
| just iterates the the object and its prototype chain calling getOwnPropertyNames at each level. | |
| * API/JSCallbackObject.h: | |
| * API/JSCallbackObjectFunctions.h: | |
| (JSC::::getOwnPropertyNames): | |
| * JavaScriptCore.exp: | |
| * debugger/DebuggerActivation.cpp: | |
| (JSC::DebuggerActivation::getOwnPropertyNames): | |
| * debugger/DebuggerActivation.h: | |
| * runtime/CommonIdentifiers.h: | |
| * runtime/JSArray.cpp: | |
| (JSC::JSArray::getOwnPropertyNames): | |
| * runtime/JSArray.h: | |
| * runtime/JSByteArray.cpp: | |
| (JSC::JSByteArray::getOwnPropertyNames): | |
| * runtime/JSByteArray.h: | |
| * runtime/JSNotAnObject.cpp: | |
| (JSC::JSNotAnObject::getOwnPropertyNames): | |
| * runtime/JSNotAnObject.h: | |
| * runtime/JSObject.cpp: | |
| (JSC::JSObject::getOwnPropertyNames): | |
| * runtime/JSObject.h: | |
| * runtime/JSVariableObject.cpp: | |
| (JSC::JSVariableObject::getOwnPropertyNames): | |
| * runtime/JSVariableObject.h: | |
| * runtime/ObjectConstructor.cpp: | |
| (JSC::ObjectConstructor::ObjectConstructor): | |
| (JSC::objectConstructorKeys): | |
| * runtime/RegExpMatchesArray.h: | |
| (JSC::RegExpMatchesArray::getOwnPropertyNames): | |
| * runtime/StringObject.cpp: | |
| (JSC::StringObject::getOwnPropertyNames): | |
| * runtime/StringObject.h: | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::getOwnEnumerablePropertyNames): | |
| (JSC::Structure::getEnumerablePropertyNames): | |
| * runtime/Structure.h: | |
| 2009-09-11 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Sam Weinig. | |
| getPropertyNames caching is invalid when the prototype chain contains objects with custom getPropertyNames | |
| https://bugs.webkit.org/show_bug.cgi?id=29214 | |
| Add a flag to TypeInfo to indicate whether a type overrides getPropertyNames. | |
| This flag is used to make sure that caching of the property name data is safe. | |
| * API/JSCallbackConstructor.h: | |
| (JSC::JSCallbackConstructor::createStructure): | |
| * debugger/DebuggerActivation.h: | |
| (JSC::DebuggerActivation::createStructure): | |
| * runtime/BooleanObject.h: | |
| (JSC::BooleanObject::createStructure): | |
| * runtime/DatePrototype.h: | |
| (JSC::DatePrototype::createStructure): | |
| * runtime/FunctionPrototype.h: | |
| (JSC::FunctionPrototype::createStructure): | |
| * runtime/JSONObject.h: | |
| (JSC::JSONObject::createStructure): | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::createStructure): | |
| * runtime/JSTypeInfo.h: | |
| (JSC::TypeInfo::hasDefaultGetPropertyNames): | |
| * runtime/JSVariableObject.h: | |
| (JSC::JSVariableObject::createStructure): | |
| * runtime/JSWrapperObject.h: | |
| (JSC::JSWrapperObject::createStructure): | |
| * runtime/MathObject.h: | |
| (JSC::MathObject::createStructure): | |
| * runtime/NumberConstructor.h: | |
| (JSC::NumberConstructor::createStructure): | |
| * runtime/NumberObject.h: | |
| (JSC::NumberObject::createStructure): | |
| * runtime/RegExpConstructor.h: | |
| (JSC::RegExpConstructor::createStructure): | |
| * runtime/RegExpObject.h: | |
| (JSC::RegExpObject::createStructure): | |
| * runtime/StructureChain.cpp: | |
| (JSC::StructureChain::isCacheable): | |
| 2009-09-11 Alexey Proskuryakov <ap@webkit.org> | |
| Reviewed by Geoff Garen. | |
| https://bugs.webkit.org/show_bug.cgi?id=29207 | |
| Add checks for using WebCore JS context on secondary threads | |
| * runtime/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData): | |
| * runtime/JSGlobalData.h: | |
| Added a new mainThreadOnly flag that WebCore would set. | |
| * runtime/Collector.cpp: (JSC::Heap::registerThread): JSC API methods always call this, | |
| so this is a good place to check that the API isn't used form a wrong thread. | |
| 2009-09-11 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Compiling JavaScriptCore on sparc 64 with gcc fails. | |
| ThreadSafeShared uses the atomic __gnu_cxx::__exchange_and_add with an int, | |
| however on sparc 64 the _Atomic_word argument is typedefed to long (8 bytes). | |
| The patch disables WTF_USE_LOCKFREE_THREADSAFESHARED in ThreadSafeShared to use | |
| a mutex instead when compiling for sparc 64 with gcc. | |
| https://bugs.webkit.org/show_bug.cgi?id=29175 | |
| * wtf/Platform.h: | |
| __sparc64__ is not defined on all OS. | |
| Uses instead: __sparc__ && __arch64__ || __sparcv9 | |
| * wtf/Threading.h: | |
| 2009-09-11 Prasanth Ullattil <prasanth.ullattil@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Fix compile error on Windows7(64Bit) with latest SDK. | |
| Added the missing include file. | |
| * runtime/UString.cpp: | |
| 2009-09-11 Joerg Bornemann <joerg.bornemann@trolltech.com> | |
| Reviewed by Simon Hausmann. | |
| Qt/Windows CE compile fix, include the executable allocator and | |
| markstack implementation in the windows build. | |
| * JavaScriptCore.pri: | |
| 2009-09-08 John Abd-El-Malek <jam@chromium.org> | |
| Reviewed by Dimitri Glazkov. | |
| Remove unneeded define for ActiveX. | |
| https://bugs.webkit.org/show_bug.cgi?id=29054 | |
| * wtf/Platform.h: | |
| 2009-09-10 Mark Rowe <mrowe@apple.com> | |
| Rubber-stamped by Sam Weinig. | |
| Update JavaScriptCore and WebKit's FeatureDefines.xcconfig so that they are in sync with WebCore as they need to be. | |
| * Configurations/FeatureDefines.xcconfig: | |
| 2009-09-10 Fumitoshi Ukai <ukai@chromium.org> | |
| Reviewed by Alexey Proskuryakov. | |
| Export WTF::tryFastMalloc used in WebSocketChannel. | |
| https://bugs.webkit.org/show_bug.cgi?id=28038 | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-09-10 Oliver Hunt <oliver@apple.com> | |
| Reviewed by NOBODY (Build fix). | |
| Make StructureTransitionTable use an enum for the PtrAndFlags member | |
| used for the single transition slot optimisation. | |
| * runtime/StructureTransitionTable.h: | |
| (JSC::StructureTransitionTable::StructureTransitionTable): | |
| (JSC::StructureTransitionTable::usingSingleTransitionSlot): | |
| (JSC::StructureTransitionTable::): | |
| 2009-09-10 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoff Garen. | |
| Refactor StructureTransitionTable and Structure to unify handling of the single slot optimization | |
| https://bugs.webkit.org/show_bug.cgi?id=29141 | |
| Make StructureTransitionTable encapsulate the single transition slot optimization. | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::Structure): | |
| (JSC::Structure::~Structure): | |
| (JSC::Structure::addPropertyTransitionToExistingStructure): | |
| (JSC::Structure::addPropertyTransition): | |
| (JSC::Structure::addPropertyWithoutTransition): | |
| (JSC::Structure::removePropertyWithoutTransition): | |
| (JSC::Structure::hasTransition): | |
| * runtime/Structure.h: | |
| (JSC::StructureTransitionTable::contains): | |
| (JSC::StructureTransitionTable::get): | |
| (JSC::StructureTransitionTable::hasTransition): | |
| (JSC::StructureTransitionTable::reifySingleTransition): | |
| * runtime/StructureTransitionTable.h: | |
| (JSC::StructureTransitionTable::StructureTransitionTable): | |
| (JSC::StructureTransitionTable::~StructureTransitionTable): | |
| (JSC::StructureTransitionTable::remove): | |
| (JSC::StructureTransitionTable::add): | |
| (JSC::StructureTransitionTable::table): | |
| (JSC::StructureTransitionTable::singleTransition): | |
| (JSC::StructureTransitionTable::usingSingleTransitionSlot): | |
| (JSC::StructureTransitionTable::setSingleTransition): | |
| (JSC::StructureTransitionTable::setTransitionTable): | |
| (JSC::StructureTransitionTable::): | |
| * wtf/PtrAndFlags.h: | |
| (WTF::PtrAndFlags::PtrAndFlags): | |
| 2009-09-10 Zoltan Horvath <zoltan@webkit.org> | |
| Reviewed by Darin Adler. | |
| Implement fastDeleteSkippingDestructor for FastAllocBase and fastDeleteAllValues for HashSet | |
| https://bugs.webkit.org/show_bug.cgi?id=25930 | |
| FastAllocBase has been extended with fastDeleteSkippingDestructor function which | |
| releases memory without destructor call. fastDeleteAllValues has been implemented | |
| similar as deleteAllValues but it uses fastDelete function to release memory. | |
| * wtf/FastAllocBase.h: | |
| (WTF::fastDeleteSkippingDestructor): | |
| * wtf/HashSet.h: | |
| (WTF::fastDeleteAllValues): | |
| 2009-09-10 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Darin Adler. | |
| ARM compiler does not understand GCC visibility attribute | |
| https://bugs.webkit.org/show_bug.cgi?id=29079 | |
| * API/JSBase.h: Make the test more specific to hit only | |
| the GCC compiler | |
| 2009-09-10 Adam Barth <abarth@webkit.org> | |
| Unreviewed revert of the previous change. It broke the tests. | |
| * wtf/dtoa.cpp: | |
| (WTF::dtoa): | |
| 2009-09-10 Ben Laurie <benl@google.com> | |
| Reviewed by Adam Barth. | |
| <https://bugs.webkit.org/show_bug.cgi?id=26836> | |
| If dtoa was given a small buffer and the number was either infinite or | |
| NaN, then the buffer would be overflowed. | |
| * wtf/dtoa.cpp: | |
| 2009-09-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Darin Adler. | |
| Change reinterpret_cast to static_cast in r48212. | |
| * jit/ExecutableAllocator.h: | |
| (JSC::ExecutableAllocator::cacheFlush): | |
| 2009-09-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Darin Adler. | |
| Remove WTF_PLATFORM_FORCE_PACK as it is no longer used | |
| https://bugs.webkit.org/show_bug.cgi?id=29066 | |
| * wtf/Platform.h: | |
| 2009-09-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Ariya Hidayat. | |
| Implement flushing the instruction cache for Symbian | |
| https://bugs.webkit.org/show_bug.cgi?id=29075 | |
| * jit/ExecutableAllocator.h: | |
| (JSC::ExecutableAllocator::cacheFlush): Call IMB_Range to flush | |
| the instruction cache on Symbian | |
| 2009-09-09 Kent Hansen <khansen@trolltech.com> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=29024 | |
| Make JavaScriptCore compile on platforms with case-insensitive file systems and typeinfo.h in STL | |
| These platforms include Microsoft Visual Studio 2003, and Symbian with Metrowerks compiler. | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/JSTypeInfo.h: Copied from JavaScriptCore/runtime/TypeInfo.h. | |
| * runtime/Structure.h: | |
| * runtime/TypeInfo.h: Removed. | |
| 2009-09-08 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| JSON.stringify(Date) loses the milliseconds information | |
| https://bugs.webkit.org/show_bug.cgi?id=29063 | |
| Make sure we include milliseconds in the output of toISOString. | |
| * runtime/DatePrototype.cpp: | |
| (JSC::dateProtoFuncToISOString): | |
| 2009-09-08 Kevin Ollivier <kevino@theolliviers.com> | |
| wx build fix, generate derived sources earlier in order to make sure | |
| they're found by the build system when generating the list of sources to build. | |
| * wscript: | |
| 2009-09-08 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Build fix when USE(LOCKFREE_THREADSAFESHARED) is not defined | |
| https://bugs.webkit.org/show_bug.cgi?id=29011 | |
| * wtf/Threading.h: Use LOCKFREE_THREADSAFESHARED guard for | |
| atomicIncrement and atomicDecrement | |
| 2009-09-07 Zoltan Horvath <zoltan@webkit.org> | |
| Reviewed by Darin Adler. | |
| Allow custom memory allocation control in Yarr's RegexInterpreter | |
| https://bugs.webkit.org/show_bug.cgi?id=29025 | |
| Inherits RegexInterpreter classes from FastAllocBase (bug #20422), which has | |
| been instantiated by 'new': | |
| class ByteDisjunction | |
| -> instantiated in JavaScriptCore/yarr/RegexInterpreter.cpp:1462 | |
| struct BytecodePattern | |
| -> instantiated in JavaScriptCore/yarr/RegexInterpreter.cpp:1279 | |
| * yarr/RegexInterpreter.h: | |
| 2009-09-07 Drew Wilson <atwilson@google.com> | |
| Reverting r48121 to fix Windows build errors. | |
| * JavaScriptCore.exp: | |
| 2009-09-07 Drew Wilson <atwilson@google.com> | |
| Reviewed by David Levin. | |
| Enable SHARED_WORKERS by default | |
| https://bugs.webkit.org/show_bug.cgi?id=28959 | |
| * Configurations/FeatureDefines.xcconfig: | |
| 2009-09-07 Fumitoshi Ukai <ukai@chromium.org> | |
| Reviewed by Alexey Proskuryakov. | |
| Export WTF::tryFastMalloc used in WebSocketChannel. | |
| https://bugs.webkit.org/show_bug.cgi?id=28038 | |
| * JavaScriptCore.exp: | |
| 2009-09-04 Oliver Hunt <oliver@apple.com> | |
| Reviewed by NOBODY (Build fix). | |
| Fix windows export files | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-09-04 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| [[ToString]] conversion should use the actual toString function for String objects. | |
| Remove incorrect specialisations of toString conversions on StringObject. | |
| * JavaScriptCore.exp: | |
| * runtime/StringObject.cpp: | |
| * runtime/StringObject.h: | |
| 2009-09-04 Steve Falkenburg <sfalken@apple.com> | |
| Windows build fix. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Add new export. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Add new export. | |
| 2009-09-04 Steve Falkenburg <sfalken@apple.com> | |
| Windows build fix. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Remove unneeded export. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Remove unneeded export. | |
| 2009-09-04 Darin Adler <darin@apple.com> | |
| Reviewed by Geoff Garen. | |
| DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32) | |
| https://bugs.webkit.org/show_bug.cgi?id=28909 | |
| Part two. | |
| Make some improvements to garbage collection code: | |
| 1) Create a runtime assertion that catches any classes that | |
| override markChildren but have the HasDefaultMark bit set. | |
| 2) Remove checks of the mark bit outside the MarkStack::append | |
| function; they are redundant. | |
| 3) Improve the efficiency of the asObject and asArray functions | |
| when called on JSCell* to avoid a round trip to JSValue. | |
| 4) Make more callers use the checked asCell and asObject | |
| casting functions rather than unchecked casts. | |
| 5) Removed the JSCell::marked function and other GC-related | |
| functions because these operations are no longer things that | |
| code other than the core GC code needs to do directly. Fixed | |
| callers that were calling them. | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::markConservatively): Removed unneeded call to MarkStack::drain. | |
| (JSC::Heap::markProtectedObjects): Removed unneeded check of the mark | |
| bit and call to MarkStack::drain. | |
| (JSC::Heap::collect): Removed unneeded checks of the mark bit and also | |
| changed call to SmallStrings::mark to call markChildren instead to match | |
| the rest of the objects. | |
| (JSC::typeName): Removed unneeded cast to JSObject*. | |
| * runtime/JSArray.h: | |
| (JSC::asArray): Added an overload for JSCell* and changed the JSValue | |
| version to call it. Removed some unneeded casts. | |
| (JSC::JSArray::markChildrenDirect): Marked this function inline. It's in | |
| a header, and if not marked inline this could lead to linking problems. | |
| (JSC::MarkStack::markChildren): Added. This helper function is used by | |
| the drain function to avoid repating code. Also added the code here to | |
| check fro default mark violations in debug code. If a markChildren | |
| function adds something to the mark stack, but the type info claimed | |
| hasDefaultMark was true, then we will get an assertion now. Also fixed | |
| the assertion about the mark bit to use the Heap function directly | |
| because we don't have a JSCell::marked function any more. | |
| (JSC::MarkStack::drain): Changed a local variable from "v" to "value", | |
| and from "currentCell" to "cell". Changed to call markChildren in two | |
| places instead of repeating a chain of if statements twice. Changed | |
| code that reads and writes the mark bit to use Heap::isCellMarked and | |
| Heap::markCell so we can eliminate the JSCell::marked and | |
| JSCell::markCellDirect functions. | |
| * runtime/JSCell.h: Removed JSCell's markCellDirect and marked member | |
| functions. Added a comment explaining that asCell should be deprecated | |
| in favor of the JSValue asCell member function. | |
| (JSC::MarkStack::append): Added the assertion that catches callers | |
| that have set the HasDefaultMark bit incorrectly. Changed | |
| code that reads and writes the mark bit to use Heap::isCellMarked and | |
| Heap::markCell so we can eliminate the JSCell::marked and | |
| JSCell::markCellDirect functions. Moved the overload of | |
| MarkStack::append for JSValue here so it can call through to the cell | |
| version. The old version had a copy of all the code instead, but that | |
| repeated the conversion from JSValue to JSCell* and the check for | |
| whether a value is a cell multiple times. | |
| (JSC::Structure::markAggregate): Moved this function here to avoid | |
| dependencies for Structure.h, since this calls MarkStack::append. | |
| * runtime/JSObject.cpp: | |
| (JSC::JSObject::markChildren): Added code to clear | |
| m_isCheckingForDefaultMarkViolation so the marking done by JSObject | |
| doesn't trigger the assertion. | |
| * runtime/JSValue.h: Moved some stray includes that were outside the | |
| header guard inside it. Not sure how that happened! Removed the | |
| GC-related member functions markChildren, hasChildren, marked, and | |
| markDirect. | |
| * runtime/JSWrapperObject.h: Made markChildren private. | |
| (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the | |
| HasDefaultMark bit was set. | |
| * runtime/MarkStack.h: Added m_isCheckingForDefaultMarkViolation and | |
| initialized it to false. Moved the append function body from here to | |
| JSCell.h. Added a declaration of a private markChildren function used | |
| inside the drain function. | |
| * runtime/SmallStrings.cpp: | |
| (JSC::SmallStrings::markChildren): Changed the name and style of this | |
| function to match other functions. This allows us to share the normal | |
| mark stack code path. | |
| * runtime/SmallStrings.h: Changed the name and interface of mark to | |
| the more-normal markChildren style. | |
| * runtime/Structure.h: Moved the body of markAggregate into the | |
| JSCell.h to avoid a circular dependency with JSCell.h. | |
| 2009-09-04 Darin Adler <darin@apple.com> | |
| Reviewed by Geoff Garen. | |
| DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32) | |
| https://bugs.webkit.org/show_bug.cgi?id=28909 | |
| Part one. | |
| Make some improvements to garbage collection code: | |
| 1) Fix the two classes that had the default mark bit set but | |
| should not. | |
| 2) Remove checks of the mark bit outside the MarkStack::append | |
| function; they are redundant. | |
| 3) Make more callers use the checked asCell and asObject | |
| casting functions rather than unchecked casts. | |
| 4) Removed some GC-related functions because these operations are | |
| no longer things that code other than the core GC code needs | |
| to do directly. Fixed callers that were calling them. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::markAggregate): Removed unneeded check of the mark | |
| bit before calling MarkStack::append. | |
| * interpreter/Register.h: Removed unneeded marked and markChildren | |
| functions. | |
| * jit/JITStubs.cpp: | |
| (op_eq): Removed unneeded assertions, instead using checked casting | |
| functions such as asObject. | |
| * runtime/ArgList.h: Added now-needed forward declaration of MarkStack. | |
| * runtime/GetterSetter.cpp: | |
| (JSC::GetterSetter::markChildren): Remmoved unneeded check of the mark bit. | |
| * runtime/GlobalEvalFunction.h: | |
| (JSC::GlobalEvalFunction::createStructure): Added. Fixes a bug where the | |
| HasDefaultMark bit was set. | |
| * runtime/JSCell.cpp: | |
| (JSC::JSCell::getObject): Use asObject to avoid a direct static_cast. | |
| * runtime/JSObject.h: | |
| (JSC::asObject): Added an overload for JSCell* and changed the JSValue | |
| version to call it. | |
| (JSC::JSValue::get): Use asObject to avoid a direct static_cast. | |
| * runtime/JSWrapperObject.h: Made markChildren private. | |
| (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the | |
| HasDefaultMark bit was set. Later we may want to optimize this for | |
| wrapper types that never have cells in their internal values, but there | |
| is no measured performance regression in SunSpider or V8 doing this | |
| all the time. | |
| * runtime/MarkStack.cpp: Tweaked formatting. | |
| 2009-09-04 Kevin Ollivier <kevino@theolliviers.com> | |
| wx build fix. Switch USE_ defines over to the compiler so that they can be | |
| checked by files not including config.h (like WebCorePrefix.h). | |
| * wtf/Platform.h: | |
| 2009-09-03 Yong Li <yong.li@torchmobile.com> | |
| Reviewed by David Levin. | |
| Remove unnecessary dependency on unistd.h | |
| https://bugs.webkit.org/show_bug.cgi?id=28962 | |
| * runtime/Completion.cpp: | |
| 2009-09-03 Fumitoshi Ukai <ukai@chromium.org> | |
| Reviewed by Eric Seidel. | |
| Add strnstr for Linux and Windows in StringExtras.h | |
| https://bugs.webkit.org/show_bug.cgi?id=28901 | |
| * wtf/StringExtras.h: | |
| (strnstr): | |
| 2009-09-03 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| Allow custom memory allocation control for JavaScriptCore's HashEntry class | |
| https://bugs.webkit.org/show_bug.cgi?id=27830 | |
| Inherits HashEntry class from FastAllocBase because it has been | |
| instantiated by 'new' JavaScriptCore/runtime/Lookup.cpp:32. | |
| * runtime/Lookup.h: | |
| 2009-09-02 Gavin Barraclough <barraclough@apple.com> | |
| Should crash if JIT code buffer allocation fails. | |
| https://bugs.webkit.org/show_bug.cgi?id=28926 | |
| <rdar://problem/7031922> | |
| * jit/ExecutableAllocatorPosix.cpp: | |
| (JSC::ExecutablePool::systemAlloc): | |
| * jit/ExecutableAllocatorWin.cpp: | |
| (JSC::ExecutablePool::systemAlloc): | |
| 2009-09-02 Kevin Ollivier <kevino@theolliviers.com> | |
| waf build fixes for Windows/MSVC. | |
| * wscript: | |
| 2009-09-02 Kevin Ollivier <kevino@theolliviers.com> | |
| Build fix for building on Windows. | |
| * wtf/ThreadingPthreads.cpp: | |
| 2009-09-02 Norbert Leser <norbert.leser@nokia.com> | |
| Reviewed by Eric Seidel. | |
| Use fastMalloc when neither MMAP nor VIRTUALALLOC are enabled | |
| RegisterFile constructor currently throws #error when both | |
| MMAP and VIRTUALALLOC conditions fail. | |
| On any platform that does not provide these features | |
| (for instance, Symbian), | |
| the fallback should be regular malloc (or fastMalloc). | |
| It is functionally equivalent in this case, even though it may | |
| have certain drawbacks such as lack of dynamic pre-allocation. | |
| * interpreter/RegisterFile.cpp: | |
| (JSC::RegisterFile::~RegisterFile): | |
| * interpreter/RegisterFile.h: | |
| (JSC::RegisterFile::RegisterFile): | |
| 2009-08-31 Robert Agoston <Agoston.Robert@stud.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Fixed typo. | |
| https://bugs.webkit.org/show_bug.cgi?id=28691 | |
| * parser/Parser.h: | |
| (JSC::Parser::parse): | |
| 2009-08-27 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| JSON Stringifier does not follow ES5 spec for handling of Number, String and Boolean objects | |
| https://bugs.webkit.org/show_bug.cgi?id=28797 | |
| Fixed unwrapBoxedPrimitive to do the right thing, which necessitated a couple of new exception | |
| checks, and corrected the logic in gap to correctly convert Number and String objects. | |
| * runtime/JSONObject.cpp: | |
| (JSC::unwrapBoxedPrimitive): | |
| (JSC::gap): | |
| (JSC::Stringifier::Stringifier): | |
| (JSC::Stringifier::appendStringifiedValue): | |
| 2009-08-27 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Adam Roben. | |
| JSON.stringify replacer array does not accept values that are not string primitives. | |
| https://bugs.webkit.org/show_bug.cgi?id=28788 | |
| Update the JSON stringifier to initialise its replacer array according to the most | |
| recent version of the spec. | |
| * runtime/Identifier.h: | |
| (JSC::Identifier::from): | |
| * runtime/JSONObject.cpp: | |
| (JSC::Stringifier::Stringifier): | |
| 2009-08-27 Alexey Proskuryakov <ap@apple.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=28753 | |
| <rdar://problem/7173448> Excessive number of threads (and a crash) | |
| * wtf/Threading.h: (WTF::atomicIncrement): Changed atomicIncrement to match decrement | |
| and return the new value. Also added using directives for these functions, to match | |
| te rest of WTF. | |
| 2009-08-27 Brent Fulgham <bfulgham@webkit.org> | |
| Reviewed by Adam Roben. | |
| Link the testapi against CFLite when building the WinCairo port. | |
| * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add new Release_CFLite | |
| target. Update all targets to inherit from either the | |
| JavaScriptCF.vsprops (Apple target) or the JavaScriptCFLite.vsprops | |
| file (WinCairo target). | |
| * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Remove | |
| input file CoreFoundation.lib. This is provided by either the | |
| JavaScriptCF.vsprops or JavaScriptCFLite.vsprops file. | |
| 2009-08-27 Steve Falkenburg <sfalken@apple.com> | |
| Reviewed by Geoff Garen. | |
| Fix Windows-specific crash due to missing memory clearing call. | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::allocateBlock): | |
| 2009-08-27 Brent Fulgham <bfulgham@webkit.org> | |
| Build fix: JavaScriptCore_debug.def missing some exports. Apple | |
| Windows build does not use this file, so it was not noticed previously. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-08-27 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| x86-64 GTK broken due to code offsets changing, pointers sometimes packed into immediates. | |
| https://bugs.webkit.org/show_bug.cgi?id=28317 | |
| Missed one, fix part II. | |
| * assembler/MacroAssemblerX86Common.h: | |
| (JSC::MacroAssemblerX86Common::move): | |
| * assembler/X86Assembler.h: | |
| (JSC::CAN_SIGN_EXTEND_8_32): | |
| 2009-08-27 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Adam Roben. | |
| JSON.stringify replacer array does not accept values that are not string primitives. | |
| https://bugs.webkit.org/show_bug.cgi?id=28788 | |
| Update the JSON stringifier to initialise its replacer array according to the most | |
| recent version of the spec. | |
| * runtime/Identifier.h: | |
| (JSC::Identifier::from): | |
| * runtime/JSONObject.cpp: | |
| (JSC::Stringifier::Stringifier): | |
| 2009-08-27 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Alexey Proskuryakov. | |
| JSON parser accepts trailing comma in array literals | |
| https://bugs.webkit.org/show_bug.cgi?id=28779 | |
| Update parser to correctly fail if there's a trailing comma. | |
| * runtime/LiteralParser.cpp: | |
| (JSC::LiteralParser::parse): | |
| 2009-08-26 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| 'this' in JSON.parse reviver is the global object | |
| https://bugs.webkit.org/show_bug.cgi?id=28752 | |
| This is a technically simple change, we merely update the code for calling | |
| the reviver function to pass the correct this object. Doing so however | |
| exposes the holder to arbitrary mutation by the reviver function so it is | |
| necessary for us to now guard all property accesses against the possibility | |
| of failure. | |
| * runtime/JSArray.h: | |
| JSON needs to delete a property from the array, so we friend its | |
| Walker class so that we can make a non-virtual call to the arrays | |
| delete and getOwnPropertySlot methods. | |
| * runtime/JSONObject.cpp: | |
| (JSC::Walker::callReviver): | |
| We need to pass the correct this object | |
| (JSC::Walker::walk): | |
| Update calls to callReviver, and update property logic logic | |
| to correctly handle the holder being mutated by the reviver | |
| function. | |
| 2009-08-26 Alice Liu <alice.liu@apple.com> | |
| Windows build fix: added some exported symbols | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-08-26 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: Removed some exported symbols that no longer exist. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-08-26 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Olliejver Hunt. | |
| x86-64 GTK broken due to code offsets changing, pointers sometimes packed into immediates. | |
| https://bugs.webkit.org/show_bug.cgi?id=28317 | |
| We rely on a slightly OS X specific behaviour, that x86-64 applications have a 4Gb zero page, | |
| so pointers are never representable as a 32-bit integer, and always have to be represented by | |
| a separate immediate load instruction, rather than within the immediate field of an arithmetic | |
| or memory operation. | |
| We explicitly check for a couple of cases where a value might be representable in 32-bit, but | |
| these probably never kick in on Mac OS, and only kick in to hose GTK. Deleting these does not | |
| show a performance degradation on SunSpider. Remove. | |
| * assembler/MacroAssemblerX86_64.h: | |
| (JSC::MacroAssemblerX86_64::storePtr): | |
| (JSC::MacroAssemblerX86_64::branchPtr): | |
| 2009-08-26 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| A bit of Collector refatoring. | |
| SunSpider says no change. v8 says 1.003x faster (1.02x faster on splay). | |
| * JavaScriptCore.exp: | |
| * runtime/JSCell.cpp: | |
| (JSC::JSCell::toPrimitive): | |
| (JSC::JSCell::getPrimitiveNumber): | |
| (JSC::JSCell::toBoolean): | |
| (JSC::JSCell::toNumber): | |
| (JSC::JSCell::toString): | |
| (JSC::JSCell::toObject): Removed pure virtual functions from | |
| JSCell, so the collector can construct one. This allowed | |
| me to remove a bunch of ASSERT_NOT_REACHED throughout the | |
| code, too. | |
| * runtime/JSCell.h: | |
| (JSC::JSCell::JSCell): ditto | |
| (JSC::Heap::heap): Inlined this function because it's trivial. | |
| * JavaScriptCore.exp: | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::destroy): | |
| (JSC::Heap::allocateBlock): | |
| (JSC::Heap::freeBlock): | |
| (JSC::Heap::freeBlocks): Renamed freeHeap to freeBlocks, since | |
| it doesn't actually free the Heap object. | |
| (JSC::Heap::heapAllocate): | |
| (JSC::Heap::sweep): | |
| * runtime/Collector.h: Refactored block allocation and destruction | |
| into helper functions. | |
| * runtime/GetterSetter.cpp: | |
| * runtime/JSAPIValueWrapper.cpp: | |
| * runtime/JSPropertyNameIterator.cpp: Removed dummy implementations | |
| of pure virtual functions. (See above.) | |
| === End re-roll-in of r47738:47740 with Windows crash fixed === | |
| 2009-08-26 Geoffrey Garen <ggaren@apple.com> | |
| Build fix: start out with a 32-bit value to avoid a shortening warning. | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::sweep): | |
| 2009-08-24 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Substantially reduced VM thrash in the GC heap. | |
| 1.08x faster on v8 (1.60x faster on v8-splay). | |
| 1.40x faster on bench-alloc-nonretained. | |
| 1.90x faster on bench-alloc-retained. | |
| SunSpider says no change. | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::heapAllocate): Fixed a long-standing bug: update a few local | |
| variables unconditionally after calling collect(), since they may be used | |
| even if we don't "goto scan". (In the bug I saw, usedBlocks got out of | |
| sync with heap.usedBlocks). | |
| (JSC::Heap::sweep): Keep enough free heap space to accomodate | |
| the number of objects we'll allocate before the next GC, plus 25%, for | |
| good measure. | |
| * runtime/Collector.h: Bumped the block size to 256k. This seems to give | |
| the best cache performance, and it prevents us from initiating lots of | |
| VM traffic to recover very small chunks of memory. | |
| === Begin re-roll-in of r47738:47740 with Windows crash fixed === | |
| 2009-08-25 Drew Wilson <atwilson@google.com> | |
| Reviewed by David Levin. | |
| postMessage() spec now supports sending arrays of ports | |
| https://bugs.webkit.org/show_bug.cgi?id=26902 | |
| Added OwnPtr to VectorTraits so we can store OwnPtrs in Vectors. | |
| * wtf/VectorTraits.h: | |
| 2009-08-26 Xan Lopez <xlopez@igalia.com> | |
| Rubber-stamped by Gustavo Noronha. | |
| Remove duplicated files from file list. | |
| * GNUmakefile.am: | |
| 2009-08-26 Oliver Hunt <oliver@apple.com> | |
| Reviewed by NOBODY (Build fix). | |
| More export fixes. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-08-26 Oliver Hunt <oliver@apple.com> | |
| Reviewed by NOBODY (Build fix). | |
| Hopefully fix all the exports from JSC on windows | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-08-26 Oliver Hunt <oliver@apple.com> | |
| Reviewed by NOBODY (Build fixes). | |
| Forgot I added files to JavaScriptCore. | |
| * GNUmakefile.am: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.pri: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| * JavaScriptCoreSources.bkl: | |
| 2009-08-25 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| [ES5] Implement getOwnPropertyDescriptor | |
| https://bugs.webkit.org/show_bug.cgi?id=28724 | |
| Implement the core runtime support for getOwnPropertyDescriptor. | |
| This adds a virtual getOwnPropertyDescriptor method to every class | |
| that implements getOwnPropertySlot that shadows the behaviour of | |
| getOwnPropertySlot. The alternative would be to make getOwnPropertySlot | |
| (or PropertySlots in general) provide property attribute information, | |
| but quick testing showed this to be a regression. | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/Arguments.cpp: | |
| (JSC::Arguments::getOwnPropertyDescriptor): | |
| * runtime/Arguments.h: | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::ArrayPrototype::getOwnPropertyDescriptor): | |
| * runtime/ArrayPrototype.h: | |
| * runtime/CommonIdentifiers.h: | |
| * runtime/DatePrototype.cpp: | |
| (JSC::DatePrototype::getOwnPropertyDescriptor): | |
| * runtime/DatePrototype.h: | |
| * runtime/JSArray.cpp: | |
| (JSC::JSArray::getOwnPropertyDescriptor): | |
| * runtime/JSArray.h: | |
| * runtime/JSByteArray.cpp: | |
| (JSC::JSByteArray::getOwnPropertyDescriptor): | |
| * runtime/JSByteArray.h: | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::getOwnPropertyDescriptor): | |
| * runtime/JSFunction.h: | |
| * runtime/JSGlobalObject.h: | |
| (JSC::JSGlobalObject::getOwnPropertyDescriptor): | |
| * runtime/JSNotAnObject.cpp: | |
| (JSC::JSNotAnObject::getOwnPropertyDescriptor): | |
| * runtime/JSNotAnObject.h: | |
| * runtime/JSONObject.cpp: | |
| (JSC::JSONObject::getOwnPropertySlot): | |
| (JSC::JSONObject::getOwnPropertyDescriptor): | |
| * runtime/JSONObject.h: | |
| * runtime/JSObject.cpp: | |
| (JSC::JSObject::getOwnPropertyDescriptor): | |
| (JSC::JSObject::getPropertyDescriptor): | |
| * runtime/JSObject.h: | |
| * runtime/JSString.cpp: | |
| (JSC::JSString::getStringPropertyDescriptor): | |
| (JSC::JSString::getOwnPropertyDescriptor): | |
| * runtime/JSString.h: | |
| * runtime/JSVariableObject.cpp: | |
| (JSC::JSVariableObject::symbolTableGet): | |
| * runtime/JSVariableObject.h: | |
| * runtime/Lookup.h: | |
| (JSC::getStaticPropertyDescriptor): | |
| (JSC::getStaticFunctionDescriptor): | |
| (JSC::getStaticValueDescriptor): | |
| Add property descriptor equivalents of the lookup | |
| table access functions | |
| * runtime/MathObject.cpp: | |
| (JSC::MathObject::getOwnPropertySlot): | |
| (JSC::MathObject::getOwnPropertyDescriptor): | |
| * runtime/MathObject.h: | |
| * runtime/NumberConstructor.cpp: | |
| (JSC::NumberConstructor::getOwnPropertyDescriptor): | |
| * runtime/NumberConstructor.h: | |
| * runtime/ObjectConstructor.cpp: | |
| (JSC::ObjectConstructor::ObjectConstructor): | |
| (JSC::objectConstructorGetOwnPropertyDescriptor): | |
| * runtime/PropertyDescriptor.cpp: Added. | |
| (JSC::PropertyDescriptor::writable): | |
| (JSC::PropertyDescriptor::enumerable): | |
| (JSC::PropertyDescriptor::configurable): | |
| (JSC::PropertyDescriptor::hasAccessors): | |
| (JSC::PropertyDescriptor::setUndefined): | |
| (JSC::PropertyDescriptor::getter): | |
| (JSC::PropertyDescriptor::setter): | |
| (JSC::PropertyDescriptor::setDescriptor): | |
| (JSC::PropertyDescriptor::setAccessorDescriptor): | |
| * runtime/PropertyDescriptor.h: Added. | |
| (JSC::PropertyDescriptor::PropertyDescriptor): | |
| (JSC::PropertyDescriptor::attributes): | |
| (JSC::PropertyDescriptor::isValid): | |
| (JSC::PropertyDescriptor::value): | |
| * runtime/RegExpConstructor.cpp: | |
| (JSC::RegExpConstructor::getOwnPropertyDescriptor): | |
| * runtime/RegExpConstructor.h: | |
| * runtime/RegExpMatchesArray.h: | |
| (JSC::RegExpMatchesArray::getOwnPropertyDescriptor): | |
| * runtime/RegExpObject.cpp: | |
| (JSC::RegExpObject::getOwnPropertyDescriptor): | |
| * runtime/RegExpObject.h: | |
| * runtime/StringObject.cpp: | |
| (JSC::StringObject::getOwnPropertyDescriptor): | |
| * runtime/StringObject.h: | |
| * runtime/StringPrototype.cpp: | |
| (JSC::StringPrototype::getOwnPropertyDescriptor): | |
| * runtime/StringPrototype.h: | |
| 2009-08-24 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Darin Adler. | |
| How many copies of the parameters do you need? | |
| https://bugs.webkit.org/show_bug.cgi?id=28701 | |
| The function parameters in JSC get copied a lot - and unnecessarily so. | |
| Originally this happened due to duplicating FunctionBodyNodes on recompilation, | |
| though the problem has been exacerbated by copying the parameters from the | |
| original function body onto the executable, then back onto the real body that | |
| will be generated (this happens on every function). And this is all made worse | |
| since the data structures in question are a little ugly - C style arrays of C++ | |
| objects containing ref counts, so they need a full copy-construct (rather than | |
| a simple memcpy). | |
| This can all be greatly simplified by just punting the parameters off into | |
| their own ref-counted object, and forgoing all the copying. | |
| ~no performance change, possible slight progression. | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::BytecodeGenerator): | |
| * bytecompiler/BytecodeGenerator.h: | |
| (JSC::BytecodeGenerator::makeFunction): | |
| * parser/Nodes.cpp: | |
| (JSC::FunctionParameters::FunctionParameters): | |
| (JSC::FunctionBodyNode::FunctionBodyNode): | |
| (JSC::FunctionBodyNode::finishParsing): | |
| * parser/Nodes.h: | |
| (JSC::FunctionBodyNode::parameters): | |
| (JSC::FunctionBodyNode::parameterCount): | |
| * runtime/Executable.cpp: | |
| (JSC::FunctionExecutable::~FunctionExecutable): | |
| (JSC::FunctionExecutable::compile): | |
| (JSC::FunctionExecutable::reparseExceptionInfo): | |
| (JSC::FunctionExecutable::fromGlobalCode): | |
| (JSC::FunctionExecutable::paramString): | |
| * runtime/Executable.h: | |
| (JSC::FunctionExecutable::FunctionExecutable): | |
| (JSC::FunctionExecutable::parameterCount): | |
| 2009-08-25 Brent Fulgham <bfulgham@webkit.org> | |
| Reviewed by NOBODY (Buildfix). | |
| * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_CFLite target | |
| that inherits from the debug_wincairo property sheet and therefore | |
| links to the proper debug library. | |
| * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_CFLite target | |
| that inherits from the debug_wincairo property sheet and therefore | |
| links to the proper debug library. | |
| 2009-08-25 Chris Marrin <cmarrin@apple.com> | |
| Reviewed by Simon Fraser. | |
| Export tryFastMalloc for Canvas3D work | |
| https://bugs.webkit.org/show_bug.cgi?id=28018 | |
| * JavaScriptCore.exp: | |
| 2009-08-25 David Levin <levin@chromium.org> | |
| Reviewed by Adam Roben. | |
| PLATFORM(CFNETWORK) should be USE(CFNETWORK). | |
| https://bugs.webkit.org/show_bug.cgi?id=28713 | |
| * wtf/Platform.h: Added a #define to catch this issue in the | |
| future. The define would generate an error on gcc without the | |
| space in the expansion, but Visual C++ needs the space to cause an error. | |
| 2009-08-24 Brent Fulgham <bfulgham@webkit.org> | |
| Reviewed by Steve Falkenburg. | |
| Revise CFLite Debug build to emit DLL's with _debug label. | |
| https://bugs.webkit.org/show_bug.cgi?id=28695. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Modify | |
| Cairo debug build to inherit from new debug_cairo property sheet. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops: | |
| Modify to look for debug CFLite when in debug build. | |
| 2009-08-24 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Adler & Darin Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=28691 | |
| Do not retain ScopeNodes outside of parsing | |
| There is now no need for these to exist outside of parsing - their use in the runtime is replaced by Executable types. | |
| * bytecode/EvalCodeCache.h: | |
| (JSC::EvalCodeCache::get): | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::BytecodeGenerator): | |
| (JSC::BytecodeGenerator::emitNewFunction): | |
| (JSC::BytecodeGenerator::emitNewFunctionExpression): | |
| * bytecompiler/BytecodeGenerator.h: | |
| (JSC::BytecodeGenerator::makeFunction): | |
| * debugger/Debugger.cpp: | |
| (JSC::Debugger::recompileAllJSFunctions): | |
| (JSC::evaluateInGlobalCallFrame): | |
| * debugger/DebuggerCallFrame.cpp: | |
| (JSC::DebuggerCallFrame::evaluate): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::execute): | |
| (JSC::Interpreter::prepareForRepeatCall): | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * parser/Nodes.cpp: | |
| (JSC::ScopeNodeData::ScopeNodeData): | |
| (JSC::ProgramNode::create): | |
| (JSC::EvalNode::create): | |
| (JSC::FunctionBodyNode::create): | |
| * parser/Nodes.h: | |
| (JSC::ScopeNode::adoptData): | |
| (JSC::FunctionBodyNode::parameterCount): | |
| * parser/Parser.cpp: | |
| * parser/Parser.h: | |
| (JSC::Parser::arena): | |
| (JSC::Parser::Parser): | |
| (JSC::Parser::parse): | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::isNumericCompareFunction): | |
| (JSC::arrayProtoFuncSort): | |
| * runtime/Completion.cpp: | |
| (JSC::checkSyntax): | |
| (JSC::evaluate): | |
| * runtime/Executable.cpp: | |
| (JSC::FunctionExecutable::~FunctionExecutable): | |
| (JSC::EvalExecutable::compile): | |
| (JSC::ProgramExecutable::checkSyntax): | |
| (JSC::ProgramExecutable::compile): | |
| (JSC::FunctionExecutable::compile): | |
| (JSC::EvalExecutable::generateJITCode): | |
| (JSC::ProgramExecutable::generateJITCode): | |
| (JSC::FunctionExecutable::generateJITCode): | |
| (JSC::FunctionExecutable::reparseExceptionInfo): | |
| (JSC::EvalExecutable::reparseExceptionInfo): | |
| (JSC::FunctionExecutable::recompile): | |
| (JSC::FunctionExecutable::fromGlobalCode): | |
| (JSC::FunctionExecutable::copyParameters): | |
| (JSC::FunctionExecutable::paramString): | |
| * runtime/Executable.h: | |
| (JSC::ScriptExecutable::ScriptExecutable): | |
| (JSC::ScriptExecutable::sourceID): | |
| (JSC::ScriptExecutable::sourceURL): | |
| (JSC::ScriptExecutable::lineNo): | |
| (JSC::ScriptExecutable::lastLine): | |
| (JSC::ScriptExecutable::usesEval): | |
| (JSC::ScriptExecutable::usesArguments): | |
| (JSC::ScriptExecutable::needsActivation): | |
| (JSC::ScriptExecutable::recordParse): | |
| (JSC::EvalExecutable::bytecode): | |
| (JSC::EvalExecutable::jitCode): | |
| (JSC::ProgramExecutable::bytecode): | |
| (JSC::ProgramExecutable::reparseExceptionInfo): | |
| (JSC::ProgramExecutable::jitCode): | |
| (JSC::FunctionExecutable::FunctionExecutable): | |
| (JSC::FunctionExecutable::make): | |
| (JSC::FunctionExecutable::bytecode): | |
| (JSC::FunctionExecutable::isGenerated): | |
| (JSC::FunctionExecutable::name): | |
| (JSC::FunctionExecutable::parameterCount): | |
| (JSC::FunctionExecutable::jitCode): | |
| * runtime/FunctionConstructor.cpp: | |
| (JSC::constructFunction): | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::numericCompareFunction): | |
| * runtime/JSGlobalObjectFunctions.cpp: | |
| (JSC::globalFuncEval): | |
| 2009-08-24 Darin Adler <darin@apple.com> | |
| * runtime/ObjectPrototype.cpp: | |
| (JSC::ObjectPrototype::put): Landed revised version I had tested but forgot | |
| to land. Leave out the branch, since we don't need one. | |
| 2009-08-24 Darin Adler <darin@apple.com> | |
| Reviewed by Geoff Garen. | |
| Array index miss case creates a string every time | |
| https://bugs.webkit.org/show_bug.cgi?id=28664 | |
| SunSpider test results I saw: | |
| 0.5% faster overall | |
| 1% faster on crypto-aes | |
| 20% faster on crypto-md5 | |
| 13% faster on crypto-sha1 | |
| * runtime/ObjectPrototype.cpp: | |
| (JSC::ObjectPrototype::ObjectPrototype): Initialize m_hasNoPropertiesWithUInt32Names | |
| to true. | |
| (JSC::ObjectPrototype::put): Clearly m_hasNoPropertiesWithUInt32Names if the new | |
| property has a name that is the string form of a UInt32. | |
| (JSC::ObjectPrototype::getOwnPropertySlot): Don't call JSObject::getOwnPropertySlot | |
| if m_hasNoPropertiesWithUInt32Names is true, and it is highly likely to be true. | |
| * runtime/ObjectPrototype.h: Added declarations for the above. | |
| 2009-08-24 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
| Unreviewed. Fix a typo in my distcheck build fix. | |
| * GNUmakefile.am: | |
| 2009-08-23 Gustavo Noronha Silva <gns@gnome.org> | |
| Unreviewed build fix for make distcheck. | |
| * GNUmakefile.am: Added files required for the build. | |
| 2009-08-22 Maciej Stachowiak <mjs@apple.com> | |
| Reviewed by Mark Rowe. | |
| REGRESSION(r47639-r47660): Webkit crashes on launch on PowerPC | |
| https://bugs.webkit.org/show_bug.cgi?id=28655 | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::JSFunction): Initialize properly with a VPtrHackExecutable. | |
| * wtf/Platform.h: | |
| 2009-08-22 Darin Adler <darin@apple.com> | |
| Fix storage leak from syntax tree arena allocation patch. | |
| * parser/Nodes.h: CommaNode needs to inherit from ParserArenaDeletable | |
| because it has a vector. | |
| 2009-08-21 Darin Adler <darin@apple.com> | |
| Fix Qt build. | |
| * parser/Nodes.cpp: | |
| (JSC::ScopeNodeData::ScopeNodeData): Made non-inline again. | |
| This is used outside Nodes.cpp so can't be inline unless | |
| it is in the header. | |
| 2009-08-21 Darin Adler <darin@apple.com> | |
| Two loose ends from the last commit. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: Made ParserArena.h | |
| and create_hash_table project-internal instead of "private". | |
| * runtime/Executable.h: Removed accidentally-added constructor. | |
| 2009-08-21 Darin Adler <darin@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Syntax tree nodes should use arena allocation | |
| https://bugs.webkit.org/show_bug.cgi?id=25674 | |
| Use an actual arena now. 0.6% speedup on SunSpider. | |
| New and improved with 100% less leaking of the universe. | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| Removed all exports involving the class FunctionBodyNode, which no | |
| longer needs to be used outside JavaScriptCore. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: Made Nodes.h and | |
| Executable.h project-internal instead of "private". | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::BytecodeGenerator): Updated since VarStack | |
| contains const Identifier* now. | |
| * parser/Grammar.y: Made identifiers from the lexer be const | |
| Identifier* and updated since VarStack contains const Identifier* now. | |
| * parser/Lexer.cpp: | |
| (JSC::Lexer::setCode): Pass in ParserArena, used for identifiers. | |
| (JSC::Lexer::makeIdentifier): Changed return type to const Identifier* | |
| and changed to call ParserArena. | |
| (JSC::Lexer::clear): Removed the code to manage m_identifiers and | |
| added code to set m_arena to 0. | |
| * parser/Lexer.h: Updated for changes above. | |
| * parser/NodeConstructors.h: | |
| (JSC::ParserArenaFreeable::operator new): Added. Calls allocateFreeable | |
| on the arena. | |
| (JSC::ParserArenaDeletable::operator new): Changed to call the | |
| allocateDeletable function on the arena instead of deleteWithArena. | |
| (JSC::PropertyNode::PropertyNode): Added new constructor that makes | |
| numeric identifiers. Some day we might want to optimize this for | |
| integers so it doesn't create a string for each one. | |
| (JSC::ContinueNode::ContinueNode): Initialize m_ident to nullIdentifier | |
| since it's now a const Identifier& so it can't be left uninitialized. | |
| (JSC::BreakNode::BreakNode): Ditto. | |
| (JSC::CaseClauseNode::CaseClauseNode): Updated to use SourceElements* | |
| to keep track of the statements rather than a separate statement vector. | |
| (JSC::BlockNode::BlockNode): Ditto. | |
| (JSC::ForInNode::ForInNode): Initialize m_ident to nullIdentifier. | |
| * parser/Nodes.cpp: Moved the comment explaining emitBytecode in here. | |
| It seemed strangely out of place in the header. | |
| (JSC::ThrowableExpressionData::emitThrowError): Added an overload for | |
| UString as well as Identifier. | |
| (JSC::SourceElements::singleStatement): Added. | |
| (JSC::SourceElements::lastStatement): Added. | |
| (JSC::RegExpNode::emitBytecode): Changed the throwError code to use | |
| the substitution mechanism instead of doing a string append. | |
| (JSC::SourceElements::emitBytecode): Added. Replaces the old | |
| statementListEmitCode function, since we now keep the SourceElements | |
| objects around. | |
| (JSC::BlockNode::lastStatement): Added. | |
| (JSC::BlockNode::emitBytecode): Changed to use emitBytecode instead of | |
| statementListEmitCode. | |
| (JSC::CaseClauseNode::emitBytecode): Added. | |
| (JSC::CaseBlockNode::emitBytecodeForBlock): Changed to use emitBytecode | |
| instead of statementListEmitCode. | |
| (JSC::ScopeNodeData::ScopeNodeData): Changed to store the | |
| SourceElements* instead of using releaseContentsIntoVector. | |
| (JSC::ScopeNode::emitStatementsBytecode): Added. | |
| (JSC::ScopeNode::singleStatement): Added. | |
| (JSC::ProgramNode::emitBytecode): Call emitStatementsBytecode instead | |
| of statementListEmitCode. | |
| (JSC::EvalNode::emitBytecode): Ditto. | |
| (JSC::FunctionBodyNode::emitBytecode): Call emitStatementsBytecode | |
| insetad of statementListEmitCode and check for the return node using | |
| the new functions. | |
| * parser/Nodes.h: Changed VarStack to store const Identifier* instead | |
| of Identifier and rely on the arena to control lifetime. Added a new | |
| ParserArenaFreeable class. Made ParserArenaDeletable inherit from | |
| FastAllocBase instead of having its own operator new. Base the Node | |
| class on ParserArenaFreeable. Changed the various Node classes | |
| to use const Identifier& instead of Identifier to avoid the need to | |
| call their destructors and allow them to function as "freeable" in the | |
| arena. Removed extraneous JSC_FAST_CALL on definitions of inline functions. | |
| Changed ElementNode, PropertyNode, ArgumentsNode, ParameterNode, | |
| CaseClauseNode, ClauseListNode, and CaseBlockNode to use ParserArenaFreeable | |
| as a base class since they do not descend from Node. Eliminated the | |
| StatementVector type and instead have various classes use SourceElements* | |
| instead of StatementVector. This prevents those classes from having to | |
| use ParserArenaDeletable to make sure the vector destructor is called. | |
| * parser/Parser.cpp: | |
| (JSC::Parser::parse): Pass the arena to the lexer. | |
| * parser/Parser.h: Added an include of ParserArena.h, which is no longer | |
| included by Nodes.h. | |
| (JSC::Parser::parseFunctionFromGlobalCode): Changed to use the | |
| singleStatement function, since there is no longer any children function. | |
| Removed some unneeded use of RefPtr. | |
| * parser/ParserArena.cpp: | |
| (JSC::ParserArena::ParserArena): Added. Initializes the new members, | |
| m_freeableMemory, m_freeablePoolEnd, and m_identifiers. | |
| (JSC::ParserArena::freeablePool): Added. Computes the pool pointer, | |
| since we store only the current pointer and the end of pool pointer. | |
| (JSC::ParserArena::deallocateObjects): Added. Contains the common | |
| memory-deallocation logic used by both the destructor and the | |
| reset function. | |
| (JSC::ParserArena::~ParserArena): Changed to call deallocateObjects. | |
| (JSC::ParserArena::reset): Ditto. Also added code to zero out the | |
| new structures, and switched to use clear() instead of shrink(0) since | |
| we don't really reuse arenas. | |
| (JSC::ParserArena::makeNumericIdentifier): Added. | |
| (JSC::ParserArena::allocateFreeablePool): Added. Used when the pool | |
| is empty. | |
| (JSC::ParserArena::isEmpty): Added. No longer inline, which is fine | |
| since this is used only for assertions at the moment. | |
| (JSC::ParserArena::derefWithArena): Make non-inline. | |
| * parser/ParserArena.h: Added an actual arena of "freeable" objects, | |
| ones that don't need destructors to be called. Also added a separate | |
| IdentifierArena object, a segmented vector of identifiers that used | |
| to be in the Lexer. | |
| * runtime/Executable.h: Moved the definition of the | |
| FunctionExecutable::make function here. It can't go in JSFunction.h | |
| since that header has to be used outside JavaScriptCore and so can't | |
| include this, which includes Nodes.h. The function could be moved | |
| elswhere if we don't want to include JSFunction.h in this header, but | |
| for now this seems to be the best place. | |
| * runtime/JSFunction.h: Removed the include of Executable.h and | |
| definition of the FunctionExecutable::make function. | |
| * wtf/FastMalloc.cpp: Fixed an incorrect comment. | |
| 2009-08-21 Mark Rowe <mrowe@apple.com> | |
| Fix the non-JIT build. | |
| * runtime/Executable.cpp: | |
| * runtime/Executable.h: | |
| 2009-08-21 Gavin Barraclough <barraclough@apple.com> | |
| Speculative QuickTime build fix. | |
| * runtime/JSArray.cpp: | |
| 2009-08-21 Gavin Barraclough <barraclough@apple.com> | |
| Speculative QT build fix. | |
| * runtime/StringPrototype.cpp: | |
| 2009-08-21 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Restructure Executable types so that host functions do not hold a FunctionExecutable. | |
| https://bugs.webkit.org/show_bug.cgi?id=28621 | |
| All JSFunction objects have a pointer to an Executable*. This is currently always a | |
| FunctionExecutable, however this has a couple of drawbacks. Host functions do not | |
| store a range of information that the FunctionExecutable provides (source, name, | |
| CodeBlock & information presently held on the FunctionBodyNode). | |
| [ * nearly all... see below! ] | |
| Instead, make JSFunctions hold a pointer to an ExecutableBase, move fields specific | |
| to JS sourced executable types (source, node) into a new subclass (ScriptExecutable), | |
| and create a new NativeExecutable type. We now provide a new method in JSFunction | |
| to access & downcast to FunctionExecutable, but in doing so we can make an early | |
| check (with an ASSERT) to ensure that the Executable read from a function will only | |
| be treated as a FunctionExecutable (and thus the JS sepcific fields will only be | |
| accessed) if the JSFunction is not a host function. | |
| There is one JSFunction that currently does not have an Executable, which is the | |
| object created to allow us to read out the vtable pointer. By making this change | |
| we can also add a new Executable type fror this object (VPtrHackExecutable). | |
| Since this means that really all JSFunctions have an Executable we no longer have | |
| to null-check m_executable before us it - particularly in isHostFunction(). | |
| This patch removes CacheableEvalExecutable, since all subclasses of ExecutableBase | |
| can now be ref-counted - since both JSFunction holds (and ref-counts) an ExecutableBase | |
| that might be a FunctionExecutable or a NativeExecutable. This does now mean that all | |
| ProgramExecutables and EvalExecutables (unnecessarily) provide an interface to be | |
| ref-counted, however this seems less-bad than host functions unnecessarily providing | |
| interface to access non-host specific information. | |
| The class hierarcy has changed from this: | |
| - ExecutableBase | |
| - ProgramExecutable | |
| - EvalExecutable | |
| - CacheableEvalExecutable (also RefCounted by multiple-inheritance) | |
| - FunctionExecutable (also RefCounted by multiple-inheritance, 'special' FunctionExecutable also used for host functions) | |
| To this: | |
| - RefCounted | |
| - ExecutableBase | |
| - NativeExecutable | |
| - VPtrHackExecutable | |
| - ScriptExecutable | |
| - ProgramExecutable | |
| - EvalExecutable | |
| - FunctionExecutable | |
| This patch speeds up sunspidey by a couple of ms (presumably due to the changes to isHostFunction()). | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::CodeBlock): | |
| * bytecode/CodeBlock.h: | |
| (JSC::CodeBlock::ownerExecutable): | |
| (JSC::GlobalCodeBlock::GlobalCodeBlock): | |
| * bytecode/EvalCodeCache.h: | |
| (JSC::EvalCodeCache::get): | |
| * debugger/Debugger.cpp: | |
| (JSC::Debugger::recompileAllJSFunctions): | |
| * interpreter/CachedCall.h: | |
| (JSC::CachedCall::CachedCall): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::callEval): | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * profiler/Profiler.cpp: | |
| (JSC::createCallIdentifierFromFunctionImp): | |
| * runtime/Arguments.h: | |
| (JSC::Arguments::getArgumentsData): | |
| (JSC::Arguments::Arguments): | |
| * runtime/Executable.cpp: | |
| (JSC::NativeExecutable::~NativeExecutable): | |
| (JSC::VPtrHackExecutable::~VPtrHackExecutable): | |
| * runtime/Executable.h: | |
| (JSC::ExecutableBase::ExecutableBase): | |
| (JSC::ExecutableBase::~ExecutableBase): | |
| (JSC::ExecutableBase::isHostFunction): | |
| (JSC::NativeExecutable::NativeExecutable): | |
| (JSC::VPtrHackExecutable::VPtrHackExecutable): | |
| (JSC::ScriptExecutable::ScriptExecutable): | |
| (JSC::ScriptExecutable::source): | |
| (JSC::ScriptExecutable::sourceID): | |
| (JSC::ScriptExecutable::sourceURL): | |
| (JSC::ScriptExecutable::lineNo): | |
| (JSC::ScriptExecutable::lastLine): | |
| (JSC::ScriptExecutable::usesEval): | |
| (JSC::ScriptExecutable::usesArguments): | |
| (JSC::ScriptExecutable::needsActivation): | |
| (JSC::EvalExecutable::EvalExecutable): | |
| (JSC::EvalExecutable::create): | |
| (JSC::ProgramExecutable::ProgramExecutable): | |
| (JSC::FunctionExecutable::FunctionExecutable): | |
| * runtime/FunctionPrototype.cpp: | |
| (JSC::functionProtoFuncToString): | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::JSFunction): | |
| (JSC::JSFunction::~JSFunction): | |
| (JSC::JSFunction::markChildren): | |
| (JSC::JSFunction::getCallData): | |
| (JSC::JSFunction::call): | |
| (JSC::JSFunction::lengthGetter): | |
| (JSC::JSFunction::getConstructData): | |
| (JSC::JSFunction::construct): | |
| * runtime/JSFunction.h: | |
| (JSC::JSFunction::executable): | |
| (JSC::JSFunction::jsExecutable): | |
| (JSC::JSFunction::isHostFunction): | |
| 2009-08-20 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Browser hangs on opening Web Inspector. | |
| https://bugs.webkit.org/show_bug.cgi?id=28438 | |
| Code generation needs to be able to walk the entire scopechain in some | |
| cases, however the symbol table used by activations was a member of the | |
| codeblock. Following recompilation this may no longer exist, leading | |
| to a crash or hang on lookup. | |
| We fix this by introducing a refcounted SymbolTable subclass, SharedSymbolTable, | |
| for the CodeBlocks used by function code. This allows activations to | |
| maintain ownership of a copy of the symbol table even after recompilation so | |
| they can continue to work. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::CodeBlock): | |
| * bytecode/CodeBlock.h: | |
| (JSC::CodeBlock::symbolTable): | |
| (JSC::CodeBlock::sharedSymbolTable): | |
| (JSC::GlobalCodeBlock::GlobalCodeBlock): | |
| (JSC::FunctionCodeBlock::FunctionCodeBlock): | |
| (JSC::FunctionCodeBlock::~FunctionCodeBlock): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::retrieveArguments): | |
| * runtime/Executable.cpp: | |
| (JSC::EvalExecutable::generateBytecode): | |
| (JSC::FunctionExecutable::generateBytecode): | |
| (JSC::FunctionExecutable::reparseExceptionInfo): | |
| (JSC::EvalExecutable::reparseExceptionInfo): | |
| * runtime/JSActivation.h: | |
| (JSC::JSActivation::JSActivationData::JSActivationData): | |
| (JSC::JSActivation::JSActivationData::~JSActivationData): | |
| * runtime/SymbolTable.h: | |
| 2009-08-20 Xan Lopez <xlopez@igalia.com> | |
| Add new file to GTK+ build. | |
| * GNUmakefile.am: | |
| 2009-08-20 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Added a number => string cache. | |
| 1.07x faster on v8 (1.7x faster on v8-splay). | |
| 1.004x faster on SunSpider. | |
| * runtime/JSCell.h: Moved JSValue::toString to JSString.h. | |
| * runtime/JSGlobalData.h: Holds the cache. | |
| * runtime/JSNumberCell.cpp: | |
| (JSC::JSNumberCell::toString): | |
| (JSC::JSNumberCell::toThisString): Removed -0 special case. | |
| UString handles this now, since too many clients were | |
| special-casing it. | |
| * runtime/JSString.h: | |
| (JSC::JSValue::toString): Use the cache when converting | |
| an int or double to string. | |
| * runtime/Operations.h: | |
| (JSC::concatenateStrings): Call toString to take advantage | |
| of the cache. | |
| * runtime/SmallStrings.h: | |
| (JSC::NumericStrings::add): | |
| (JSC::NumericStrings::lookup): The cache. | |
| * runtime/UString.cpp: | |
| (JSC::UString::from): Added -0 special case mentioned above. | |
| Removed appendNumeric because it's mutually exclusive with the | |
| cache. | |
| 2009-08-20 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| REGRESSION: fast/profiler/call.html is crashing occasionally | |
| https://bugs.webkit.org/show_bug.cgi?id=28476 | |
| Using the codeblock for information about how many parameters and | |
| locals a function has is unsafe in certain circumstances. The | |
| basic scenario is all function code being cleared in response to | |
| the debugger or profiler being enabled, and then an activation is | |
| marked before its associated function is re-executed. | |
| To deal with this scenario we store the variable count of a function | |
| directly in the FunctionExecutable, and then use that information. | |
| * runtime/Arguments.h: | |
| (JSC::Arguments::getArgumentsData): | |
| * runtime/Executable.cpp: | |
| (JSC::FunctionExecutable::generateBytecode): | |
| * runtime/Executable.h: | |
| (JSC::FunctionExecutable::FunctionExecutable): | |
| (JSC::FunctionExecutable::variableCount): | |
| * runtime/JSActivation.cpp: | |
| (JSC::JSActivation::markChildren): | |
| 2009-08-20 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Numbering of arguments to emitGetJITStubArg/emitPutJITStubArg incorrect | |
| <bug lost in the great bug disasteroony of 08/20/09!> | |
| The argumentNumber argument to emitGetJITStubArg/emitPutJITStubArg should match | |
| the argument number used within the stub functions in JITStubs.cpp, but it doesn't. | |
| Firstly, all the numbers changed when we added a void* 'reserved' as the first slot | |
| (rather than leaving argument 0 unused), and secondly in 32_64 builds the index to | |
| peek/poke needs to be multiplies by 2 (since the argument to peek/poke is a number | |
| of machine words, and on 32_64 build the argument slots to stub functions are two | |
| words wide). | |
| * jit/JIT.h: | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallSetupArgs): | |
| (JSC::JIT::compileOpConstructSetupArgs): | |
| (JSC::JIT::compileOpCallVarargsSetupArgs): | |
| (JSC::JIT::compileOpCall): | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::emitPutJITStubArg): | |
| (JSC::JIT::emitPutJITStubArgConstant): | |
| (JSC::JIT::emitGetJITStubArg): | |
| (JSC::JIT::emitPutJITStubArgFromVirtualRegister): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::privateCompilePutByIdTransition): | |
| 2009-08-20 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoff Garen. | |
| REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest | |
| https://bugs.webkit.org/show_bug.cgi?id=28332 | |
| Follow up style fixes that were missed in review. | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::hasTransition): | |
| * runtime/Structure.h: | |
| (JSC::Structure::get): | |
| (JSC::StructureTransitionTable::contains): | |
| * runtime/StructureTransitionTable.h: | |
| (JSC::StructureTransitionTable::add): | |
| 2009-08-20 Oliver Hunt <oliver@apple.com> | |
| Add new exports to windows jsc build | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-08-20 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest | |
| https://bugs.webkit.org/show_bug.cgi?id=28332 | |
| The method check optimisation made transitions aware of the value being | |
| assigned when a transition was assigning a function. This had the side | |
| effect of making every assignment of a function expression result in a | |
| new transition, and thus a new Structure. The net result of this is that | |
| the common JS idiom of | |
| function MyObject() { | |
| this.myFunction = function(...){...}; | |
| } | |
| new MyObject(); | |
| Will produce a unique structure on every iteration, meaning that all | |
| caching is defeated and there is a significant amount of structure churn. | |
| The fix is to return the transition to its original form where it is | |
| keyed off a property name + attributes tuple, but have each transition | |
| support an optional transition on a specific value. | |
| * JavaScriptCore.exp: | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::putDirectInternal): | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::~Structure): | |
| (JSC::Structure::addPropertyTransitionToExistingStructure): | |
| (JSC::Structure::addPropertyTransition): | |
| (JSC::Structure::hasTransition): | |
| * runtime/Structure.h: | |
| (JSC::Structure::transitionedFor): | |
| (JSC::Structure::hasTransition): | |
| (JSC::Structure::): | |
| (JSC::StructureTransitionTable::contains): | |
| (JSC::StructureTransitionTable::get): | |
| * runtime/StructureTransitionTable.h: | |
| (JSC::StructureTransitionTableHashTraits::emptyValue): | |
| (JSC::StructureTransitionTable::hasTransition): | |
| (JSC::StructureTransitionTable::remove): | |
| (JSC::StructureTransitionTable::add): | |
| 2009-08-20 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Remove FunctionCodeBlock. | |
| https://bugs.webkit.org/show_bug.cgi?id=28502 | |
| These only exist to allow JIT code to dereference properties off the | |
| CodeBlock for any callee, regardless of whether it is a host function. | |
| Instead just use the FunctionExecutable. Copy the m_parameters field | |
| from the CodeBlock into the Executable, and use this to distinguish | |
| between host functions, functions that have been bytecompiled, and | |
| functions that have not. | |
| m_parameters is moved to ExecutableBase rather than FunctionExecutable | |
| so that (as a separate change) we can move make a separate class of | |
| executable for host code, which is not devived from FunctionExecutable | |
| (host code does not feature any of the properties that normal executable | |
| do and will provide, such as source, attributes, and a parsed name). | |
| 1% win on v8 tests, 0.5% on sunspider. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::derefStructures): | |
| (JSC::CodeBlock::refStructures): | |
| (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): | |
| (JSC::CodeBlock::handlerForBytecodeOffset): | |
| (JSC::CodeBlock::lineNumberForBytecodeOffset): | |
| (JSC::CodeBlock::expressionRangeForBytecodeOffset): | |
| (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset): | |
| (JSC::CodeBlock::functionRegisterForBytecodeOffset): | |
| (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset): | |
| (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset): | |
| * bytecode/CodeBlock.h: | |
| (JSC::): | |
| (JSC::CodeBlock::source): | |
| (JSC::CodeBlock::sourceOffset): | |
| (JSC::CodeBlock::evalCodeCache): | |
| (JSC::CodeBlock::createRareDataIfNecessary): | |
| remove NativeCodeBlocks and the NativeCode code type. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::linkCall): | |
| Revert to previous behaviour (as currently still commented!) that Hhost functions have a null codeblock. | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallInitializeCallFrame): | |
| (JSC::JIT::compileOpCallSetupArgs): | |
| (JSC::JIT::compileOpCallVarargsSetupArgs): | |
| (JSC::JIT::compileOpConstructSetupArgs): | |
| (JSC::JIT::compileOpCallVarargs): | |
| (JSC::JIT::compileOpCall): | |
| (JSC::JIT::compileOpCallSlowCase): | |
| Bring the 32_64 & non-32_64 JITs into line with each other, callee in regT0. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| Rewrite call trampolines to not use the CodeBlock. | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| Make call_JSFunction & call_arityCheck return the callee, don't expect to be passed the CodeBlock. | |
| * runtime/Executable.cpp: | |
| (JSC::FunctionExecutable::generateBytecode): | |
| (JSC::FunctionExecutable::recompile): | |
| (JSC::FunctionExecutable::FunctionExecutable): | |
| * runtime/Executable.h: | |
| (JSC::ExecutableBase::): | |
| (JSC::ExecutableBase::ExecutableBase): | |
| (JSC::FunctionExecutable::isHostFunction): | |
| Add m_numParameters. | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::~JSFunction): | |
| Only call generatedBytecode() on JSFunctions non-host FunctionExecutables. | |
| 2009-08-20 Yongjun Zhang <yongjun.zhang@nokia.com> | |
| Reviewed by Eric Seidel. | |
| https://bugs.webkit.org/show_bug.cgi?id=28054 | |
| Use a helper function to work around winscw compiler forward declaration bug | |
| regarding templated classes. | |
| Add parenthesis around (PassRefPtr::*UnspecifiedBoolType) to make winscw compiler | |
| work with the default UnSpecifiedBoolType() operator, which removes the winscw | |
| specific bool cast hack. | |
| * wtf/PassRefPtr.h: | |
| (WTF::derefIfNotNull): | |
| (WTF::PassRefPtr::~PassRefPtr): | |
| 2009-08-19 Yong Li <yong.li@torchmobile.com> | |
| Reviewed by Gavin Barraclough. | |
| Change namespace ARM to ARMRegisters | |
| X86 to X86Registers to avoid conflict with macros | |
| https://bugs.webkit.org/show_bug.cgi?id=28428 | |
| * assembler/ARMAssembler.cpp: | |
| * assembler/ARMAssembler.h: | |
| * assembler/ARMv7Assembler.h: | |
| * assembler/MacroAssemblerARM.h: | |
| * assembler/MacroAssemblerARMv7.h: | |
| * assembler/MacroAssemblerX86Common.h: | |
| * assembler/MacroAssemblerX86_64.h: | |
| * assembler/X86Assembler.h: | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| * jit/JITInlineMethods.h: | |
| * jit/JITOpcodes.cpp: | |
| * wrec/WRECGenerator.cpp: | |
| * wrec/WRECGenerator.h: | |
| * yarr/RegexJIT.cpp: | |
| 2009-08-19 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Devirtualise marking | |
| https://bugs.webkit.org/show_bug.cgi?id=28294 | |
| We actually need to mark the value in a number object if we're using the | |
| 32bit number representation. | |
| * runtime/NumberObject.h: | |
| (JSC::NumberObject::createStructure): | |
| 2009-08-19 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Darin Adler. | |
| We probably shouldn't be keeping the AST for eval nodes around forevar. | |
| https://bugs.webkit.org/show_bug.cgi?id=28469 | |
| EvalNodes don't destroyData() (delete their parser data) since they need to hold onto | |
| their varStack. Copy a list of variable onto EvalCodeBlock, and this can go away. | |
| * bytecode/CodeBlock.h: | |
| (JSC::EvalCodeBlock::variable): | |
| (JSC::EvalCodeBlock::numVariables): | |
| (JSC::EvalCodeBlock::adoptVariables): | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::BytecodeGenerator): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::execute): | |
| * parser/Nodes.h: | |
| * runtime/Executable.cpp: | |
| (JSC::EvalExecutable::generateBytecode): | |
| * runtime/Executable.h: | |
| 2009-08-19 Jungshik Shin <jshin@chromium.org> | |
| Reviewed by Darin Adler. | |
| http://bugs.webkit.org/show_bug.cgi?id=28441 | |
| Fix a build issue with ICU 4.2 or later on Windows with Visual C++. | |
| Instead of defining all isXXX and toupper/tolower as | |
| WTF_Please_use_ASCIICType_instead_of_ctype_see_comment_in_ASCIICType_h, | |
| #define them to be different by prepending 'WTF_...ASCIIType_h' with | |
| the originial names like 'toupper_WTF_...ASCIIType_h'. | |
| * wtf/DisallowCType.h: | |
| 2009-08-18 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Assigning a function to an object should always use the existing transition, even if the transition is not specialized | |
| https://bugs.webkit.org/show_bug.cgi?id=28442 | |
| Check for an unspecialized transition as an alternative to always failing if specialisation does not match. | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::addPropertyTransitionToExistingStructure): | |
| 2009-08-18 Dirk Schulze <krit@webkit.org> | |
| Reviewed by Oliver Hunt. | |
| Added additional getter to ByteArray with an unsigned char as return. | |
| ByteArray can take unsigned char directly now. | |
| * wtf/ByteArray.h: | |
| (WTF::ByteArray::set): | |
| (WTF::ByteArray::get): | |
| 2009-08-18 Peter Kasting <pkasting@google.com> | |
| Reviewed by Eric Seidel. | |
| https://bugs.webkit.org/show_bug.cgi?id=28415 | |
| Set svn:eol-style CRLF on all .sln and .vcproj files that don't already | |
| have it. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: | |
| * JavaScriptCore.vcproj/testapi/testapi.vcproj: | |
| 2009-08-18 Xan Lopez <xlopez@igalia.com> | |
| Try to fix the GTK+ build. | |
| * GNUmakefile.am: | |
| 2009-08-17 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| No, silly runtime, AST nodes are not for you. | |
| We still use AST nodes (ScopeNodes, particularly FunctionBodyNodes) within | |
| the runtime, which means that these nodes must be persisted outside of the | |
| arena, contain both parser & runtime data, etc. This is all a bit of a mess. | |
| Move functionality into a new FunctionExecutable class. | |
| * API/JSCallbackFunction.cpp: | |
| * API/JSObjectRef.cpp: | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::CodeBlock): | |
| (JSC::CodeBlock::markAggregate): | |
| (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): | |
| (JSC::CodeBlock::lineNumberForBytecodeOffset): | |
| (JSC::CodeBlock::shrinkToFit): | |
| * bytecode/CodeBlock.h: | |
| (JSC::CodeBlock::getBytecodeIndex): | |
| (JSC::CodeBlock::discardBytecode): | |
| (JSC::CodeBlock::instructionCount): | |
| (JSC::CodeBlock::getJITCode): | |
| (JSC::CodeBlock::executablePool): | |
| (JSC::CodeBlock::ownerExecutable): | |
| (JSC::CodeBlock::extractExceptionInfo): | |
| (JSC::CodeBlock::addFunctionDecl): | |
| (JSC::CodeBlock::functionDecl): | |
| (JSC::CodeBlock::numberOfFunctionDecls): | |
| (JSC::CodeBlock::addFunctionExpr): | |
| (JSC::CodeBlock::functionExpr): | |
| (JSC::GlobalCodeBlock::GlobalCodeBlock): | |
| (JSC::ProgramCodeBlock::ProgramCodeBlock): | |
| (JSC::EvalCodeBlock::EvalCodeBlock): | |
| (JSC::FunctionCodeBlock::FunctionCodeBlock): | |
| (JSC::NativeCodeBlock::NativeCodeBlock): | |
| * bytecode/EvalCodeCache.h: | |
| * bytecode/SamplingTool.cpp: | |
| (JSC::SamplingTool::doRun): | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::BytecodeGenerator): | |
| (JSC::BytecodeGenerator::emitNewFunction): | |
| (JSC::BytecodeGenerator::emitNewFunctionExpression): | |
| * bytecompiler/BytecodeGenerator.h: | |
| * debugger/Debugger.cpp: | |
| (JSC::Debugger::recompileAllJSFunctions): | |
| * interpreter/CachedCall.h: | |
| (JSC::CachedCall::CachedCall): | |
| * interpreter/CallFrameClosure.h: | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::unwindCallFrame): | |
| (JSC::Interpreter::throwException): | |
| (JSC::Interpreter::execute): | |
| (JSC::Interpreter::prepareForRepeatCall): | |
| (JSC::Interpreter::debug): | |
| (JSC::Interpreter::privateExecute): | |
| (JSC::Interpreter::retrieveLastCaller): | |
| * interpreter/Interpreter.h: | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompile): | |
| * jit/JIT.h: | |
| (JSC::JIT::compile): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| (JSC::JIT::emit_op_new_func): | |
| (JSC::JIT::emit_op_new_func_exp): | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * jit/JITStubs.h: | |
| (JSC::): | |
| * parser/Nodes.cpp: | |
| (JSC::FunctionBodyNode::reparseDataIfNecessary): | |
| * parser/Nodes.h: | |
| (JSC::EvalNode::partialDestroyData): | |
| * parser/Parser.h: | |
| * profiler/ProfileGenerator.cpp: | |
| * profiler/Profiler.cpp: | |
| (JSC::Profiler::createCallIdentifier): | |
| (JSC::createCallIdentifierFromFunctionImp): | |
| * runtime/Arguments.h: | |
| (JSC::Arguments::getArgumentsData): | |
| (JSC::Arguments::Arguments): | |
| (JSC::JSActivation::copyRegisters): | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::isNumericCompareFunction): | |
| * runtime/CallData.h: | |
| (JSC::): | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::collect): | |
| * runtime/ConstructData.h: | |
| (JSC::): | |
| * runtime/ExceptionHelpers.cpp: | |
| (JSC::createUndefinedVariableError): | |
| (JSC::createInvalidParamError): | |
| (JSC::createNotAConstructorError): | |
| (JSC::createNotAFunctionError): | |
| (JSC::createNotAnObjectError): | |
| * runtime/Executable.cpp: Added. | |
| (JSC::EvalExecutable::generateBytecode): | |
| (JSC::ProgramExecutable::generateBytecode): | |
| (JSC::FunctionExecutable::generateBytecode): | |
| (JSC::EvalExecutable::generateJITCode): | |
| (JSC::ProgramExecutable::generateJITCode): | |
| (JSC::FunctionExecutable::generateJITCode): | |
| (JSC::FunctionExecutable::isHostFunction): | |
| (JSC::FunctionExecutable::markAggregate): | |
| (JSC::FunctionExecutable::reparseExceptionInfo): | |
| (JSC::EvalExecutable::reparseExceptionInfo): | |
| (JSC::FunctionExecutable::recompile): | |
| (JSC::FunctionExecutable::FunctionExecutable): | |
| * runtime/Executable.h: | |
| (JSC::ExecutableBase::~ExecutableBase): | |
| (JSC::ExecutableBase::ExecutableBase): | |
| (JSC::ExecutableBase::source): | |
| (JSC::ExecutableBase::sourceID): | |
| (JSC::ExecutableBase::lastLine): | |
| (JSC::ExecutableBase::usesEval): | |
| (JSC::ExecutableBase::usesArguments): | |
| (JSC::ExecutableBase::needsActivation): | |
| (JSC::ExecutableBase::astNode): | |
| (JSC::ExecutableBase::generatedJITCode): | |
| (JSC::ExecutableBase::getExecutablePool): | |
| (JSC::EvalExecutable::EvalExecutable): | |
| (JSC::EvalExecutable::bytecode): | |
| (JSC::EvalExecutable::varStack): | |
| (JSC::EvalExecutable::evalNode): | |
| (JSC::EvalExecutable::jitCode): | |
| (JSC::ProgramExecutable::ProgramExecutable): | |
| (JSC::ProgramExecutable::reparseExceptionInfo): | |
| (JSC::ProgramExecutable::bytecode): | |
| (JSC::ProgramExecutable::programNode): | |
| (JSC::ProgramExecutable::jitCode): | |
| (JSC::FunctionExecutable::FunctionExecutable): | |
| (JSC::FunctionExecutable::name): | |
| (JSC::FunctionExecutable::bytecode): | |
| (JSC::FunctionExecutable::generatedBytecode): | |
| (JSC::FunctionExecutable::usesEval): | |
| (JSC::FunctionExecutable::usesArguments): | |
| (JSC::FunctionExecutable::parameterCount): | |
| (JSC::FunctionExecutable::paramString): | |
| (JSC::FunctionExecutable::isGenerated): | |
| (JSC::FunctionExecutable::body): | |
| (JSC::FunctionExecutable::jitCode): | |
| (JSC::FunctionExecutable::createNativeThunk): | |
| * runtime/FunctionConstructor.cpp: | |
| (JSC::constructFunction): | |
| * runtime/FunctionPrototype.cpp: | |
| (JSC::functionProtoFuncToString): | |
| * runtime/JSActivation.cpp: | |
| (JSC::JSActivation::JSActivation): | |
| (JSC::JSActivation::markChildren): | |
| (JSC::JSActivation::isDynamicScope): | |
| (JSC::JSActivation::argumentsGetter): | |
| * runtime/JSActivation.h: | |
| (JSC::JSActivation::JSActivationData::JSActivationData): | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::isHostFunction): | |
| (JSC::JSFunction::JSFunction): | |
| (JSC::JSFunction::~JSFunction): | |
| (JSC::JSFunction::markChildren): | |
| (JSC::JSFunction::getCallData): | |
| (JSC::JSFunction::call): | |
| (JSC::JSFunction::lengthGetter): | |
| (JSC::JSFunction::getConstructData): | |
| (JSC::JSFunction::construct): | |
| * runtime/JSFunction.h: | |
| (JSC::JSFunction::executable): | |
| (JSC::FunctionExecutable::make): | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::JSGlobalData): | |
| (JSC::JSGlobalData::numericCompareFunction): | |
| * runtime/JSGlobalData.h: | |
| 2009-08-17 Mark Rowe <mrowe@apple.com> | |
| Reviewed by Darin Adler. | |
| Fix 300,000+ leaks seen during the regression tests. | |
| EvalCodeCache::get was heap-allocating an EvalExecutable instance without adopting the initial reference. | |
| While fixing this we noticed that EvalExecutable was a RefCounted type that was sometimes stack allocated. | |
| To make this cleaner and to prevent clients from attempting to ref a stack-allocated instance, we move the | |
| refcounting down to a new CacheableEvalExecutable class that derives from EvalExecutable. EvalCodeCache::get | |
| now uses CacheableEvalExecutable::create and avoids the leak. | |
| * bytecode/EvalCodeCache.h: | |
| (JSC::EvalCodeCache::get): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::callEval): | |
| * runtime/Executable.h: | |
| (JSC::CacheableEvalExecutable::create): | |
| (JSC::CacheableEvalExecutable::CacheableEvalExecutable): | |
| 2009-08-17 Oliver Hunt <oliver@apple.com> | |
| RS=Mark Rowe. | |
| REGRESSION (r47292): Prototype.js is broken by ES5 Arguments changes | |
| https://bugs.webkit.org/show_bug.cgi?id=28341 | |
| <rdar://problem/7145615> | |
| Reverting r47292. Alas Prototype.js breaks with Arguments inheriting | |
| from Array as ES5 attempted. Prototype.js defines $A in terms of a | |
| function it places on (among other global objects) the Array prototype, | |
| thus breaking $A for arrays. | |
| * runtime/Arguments.h: | |
| (JSC::Arguments::Arguments): | |
| * runtime/JSGlobalObject.cpp: | |
| (JSC::JSGlobalObject::reset): | |
| (JSC::JSGlobalObject::markChildren): | |
| * runtime/JSGlobalObject.h: | |
| (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): | |
| * runtime/ObjectPrototype.cpp: | |
| (JSC::ObjectPrototype::ObjectPrototype): | |
| * runtime/ObjectPrototype.h: | |
| * tests/mozilla/ecma_3/Function/arguments-001.js: | |
| 2009-08-17 Peter Kasting <pkasting@google.com> | |
| Reviewed by Steve Falkenburg. | |
| https://bugs.webkit.org/show_bug.cgi?id=27323 | |
| Only add Cygwin to the path when it isn't already there. This avoids | |
| causing problems for people who purposefully have non-Cygwin versions of | |
| executables like svn in front of the Cygwin ones in their paths. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: | |
| * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: | |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: | |
| * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: | |
| 2009-08-17 Xan Lopez <xlopez@igalia.com> | |
| Reviewed by Mark Rowe. | |
| Fix build with FAST_MALLOC_MATCH_VALIDATION enabled. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::fastMalloc): | |
| (WTF::fastCalloc): | |
| (WTF::fastRealloc): | |
| 2009-08-16 Holger Hans Peter Freyther <zecke@selfish.org> | |
| Reviewed by Mark Rowe. | |
| Fix crash on ./ecma_2/RegExp/exec-002.js. | |
| https://bugs.webkit.org/show_bug.cgi?id=28353 | |
| Change the order of freeParenthesesDisjunctionContext and | |
| popParenthesesDisjunctionContext on all call sites as the pop | |
| method is accessing backTrack->lastContext which is the context | |
| that is about to be freed. | |
| * yarr/RegexInterpreter.cpp: | |
| (JSC::Yarr::Interpreter::parenthesesDoBacktrack): | |
| (JSC::Yarr::Interpreter::backtrackParentheses): | |
| 2009-08-16 Holger Hans Peter Freyther <zecke@selfish.org> | |
| Reviewed by Mark Rowe. | |
| https://bugs.webkit.org/show_bug.cgi?id=28352 | |
| Fix coding style violations. Use m_ for C++ class members. Remove | |
| trailing whitespace on empty lines. | |
| * yarr/RegexInterpreter.cpp: | |
| (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::ParenthesesDisjunctionContext): | |
| (JSC::Yarr::Interpreter::tryConsumeCharacter): | |
| (JSC::Yarr::Interpreter::tryConsumeBackReference): | |
| (JSC::Yarr::Interpreter::parenthesesDoBacktrack): | |
| (JSC::Yarr::Interpreter::backtrackParentheses): | |
| (JSC::Yarr::ByteCompiler::ByteCompiler): | |
| (JSC::Yarr::ByteCompiler::compile): | |
| (JSC::Yarr::ByteCompiler::checkInput): | |
| (JSC::Yarr::ByteCompiler::assertionBOL): | |
| (JSC::Yarr::ByteCompiler::assertionEOL): | |
| (JSC::Yarr::ByteCompiler::assertionWordBoundary): | |
| (JSC::Yarr::ByteCompiler::atomPatternCharacter): | |
| (JSC::Yarr::ByteCompiler::atomCharacterClass): | |
| (JSC::Yarr::ByteCompiler::atomBackReference): | |
| (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin): | |
| (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin): | |
| (JSC::Yarr::ByteCompiler::popParenthesesStack): | |
| (JSC::Yarr::ByteCompiler::closeAlternative): | |
| (JSC::Yarr::ByteCompiler::closeBodyAlternative): | |
| (JSC::Yarr::ByteCompiler::atomParenthesesEnd): | |
| (JSC::Yarr::ByteCompiler::regexBegin): | |
| (JSC::Yarr::ByteCompiler::alterantiveBodyDisjunction): | |
| (JSC::Yarr::ByteCompiler::alterantiveDisjunction): | |
| (JSC::Yarr::ByteCompiler::emitDisjunction): | |
| 2009-08-15 Mark Rowe <mrowe@apple.com> | |
| Fix the build with JIT disabled. | |
| * runtime/Arguments.h: Only compile the jitCode method when the JIT is enabled. | |
| * runtime/Executable.h: Include PrototypeFunction.h so the compiler knows what | |
| NativeFunctionWrapper is when the JIT is disabled. | |
| 2009-08-15 Adam Bergkvist <adam.bergkvist@ericsson.com> | |
| Reviewed by Sam Weinig. | |
| Added ENABLE_EVENTSOURCE flag. | |
| https://bugs.webkit.org/show_bug.cgi?id=14997 | |
| * Configurations/FeatureDefines.xcconfig: | |
| 2009-08-14 Gavin Barraclough <barraclough@apple.com> | |
| * parser/Parser.h: | |
| (JSC::EvalExecutable::parse): | |
| (JSC::ProgramExecutable::parse): | |
| * runtime/Executable.h: | |
| 2009-08-14 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Remove AST nodes from use within the Runtime (outside of parsing), stage 1 | |
| https://bugs.webkit.org/show_bug.cgi?id=28330 | |
| Remove the EvalNode and ProgramNode from use in the runtime. They still exist | |
| after this patch, but are hidden behind EvalExecutable and FunctionExecutable, | |
| and are also still reachable behind CodeBlock::m_ownerNode. | |
| The next step will be to beat back FunctionBodyNode in the same fashion. | |
| Then remove the usage via CodeBlock, then only construct these nodes only on | |
| demand during bytecode generation. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * bytecode/CodeBlock.h: | |
| (JSC::GlobalCodeBlock::GlobalCodeBlock): | |
| (JSC::GlobalCodeBlock::~GlobalCodeBlock): | |
| (JSC::ProgramCodeBlock::ProgramCodeBlock): | |
| (JSC::EvalCodeBlock::EvalCodeBlock): | |
| (JSC::FunctionCodeBlock::FunctionCodeBlock): | |
| (JSC::NativeCodeBlock::NativeCodeBlock): | |
| * bytecode/EvalCodeCache.h: | |
| (JSC::EvalCodeCache::get): | |
| * debugger/Debugger.cpp: | |
| (JSC::evaluateInGlobalCallFrame): | |
| * debugger/DebuggerCallFrame.cpp: | |
| (JSC::DebuggerCallFrame::evaluate): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::callEval): | |
| (JSC::Interpreter::execute): | |
| * interpreter/Interpreter.h: | |
| * parser/Nodes.cpp: | |
| (JSC::FunctionBodyNode::createNativeThunk): | |
| (JSC::FunctionBodyNode::generateBytecode): | |
| (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse): | |
| * parser/Parser.h: | |
| (JSC::Parser::parse): | |
| (JSC::Parser::reparse): | |
| (JSC::Parser::parseFunctionFromGlobalCode): | |
| (JSC::::parse): | |
| * runtime/Completion.cpp: | |
| (JSC::checkSyntax): | |
| (JSC::evaluate): | |
| * runtime/Error.cpp: | |
| (JSC::throwError): | |
| * runtime/Error.h: | |
| * runtime/Executable.h: Added. | |
| (JSC::TemplateExecutable::TemplateExecutable): | |
| (JSC::TemplateExecutable::markAggregate): | |
| (JSC::TemplateExecutable::sourceURL): | |
| (JSC::TemplateExecutable::lineNo): | |
| (JSC::TemplateExecutable::bytecode): | |
| (JSC::TemplateExecutable::jitCode): | |
| (JSC::EvalExecutable::EvalExecutable): | |
| (JSC::ProgramExecutable::ProgramExecutable): | |
| * runtime/FunctionConstructor.cpp: | |
| (JSC::constructFunction): | |
| * runtime/FunctionConstructor.h: | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::numericCompareFunction): | |
| * runtime/JSGlobalObject.cpp: | |
| (JSC::JSGlobalObject::~JSGlobalObject): | |
| (JSC::JSGlobalObject::markChildren): | |
| * runtime/JSGlobalObject.h: | |
| (JSC::JSGlobalObject::codeBlocks): | |
| * runtime/JSGlobalObjectFunctions.cpp: | |
| (JSC::globalFuncEval): | |
| 2009-08-14 Darin Adler <darin@apple.com> | |
| Reviewed by Sam Weinig. | |
| Rename the confusing isObject(<class>) to inherits(<class>). | |
| It still works on non-objects, returning false. | |
| * runtime/ArrayConstructor.cpp: | |
| (JSC::arrayConstructorIsArray): Removed unneeded isObject call | |
| and updated remaining isObject call to new name, inherits. | |
| * runtime/JSCell.h: Renamed isObject(<class>) to inherits(<class>) | |
| but more importantly, made it non-virtual (it was already inline) | |
| so it is now as fast as JSObject::inherits was. | |
| * runtime/JSObject.h: Removed inherits function since the one | |
| in the base class is fine as-is. Also made various JSCell functions | |
| that should not be called on JSObject uncallable by making them | |
| both private and not implemented. | |
| (JSC::JSCell::inherits): Updated name. | |
| (JSC::JSValue::inherits): Ditto. | |
| * debugger/Debugger.cpp: | |
| (JSC::Debugger::recompileAllJSFunctions): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::unwindCallFrame): | |
| * runtime/ArrayPrototype.cpp: | |
| (JSC::arrayProtoFuncToString): | |
| (JSC::arrayProtoFuncToLocaleString): | |
| (JSC::arrayProtoFuncConcat): | |
| * runtime/BooleanPrototype.cpp: | |
| (JSC::booleanProtoFuncToString): | |
| (JSC::booleanProtoFuncValueOf): | |
| * runtime/DateConstructor.cpp: | |
| (JSC::constructDate): | |
| * runtime/DatePrototype.cpp: | |
| (JSC::dateProtoFuncToString): | |
| (JSC::dateProtoFuncToUTCString): | |
| (JSC::dateProtoFuncToISOString): | |
| (JSC::dateProtoFuncToDateString): | |
| (JSC::dateProtoFuncToTimeString): | |
| (JSC::dateProtoFuncToLocaleString): | |
| (JSC::dateProtoFuncToLocaleDateString): | |
| (JSC::dateProtoFuncToLocaleTimeString): | |
| (JSC::dateProtoFuncGetTime): | |
| (JSC::dateProtoFuncGetFullYear): | |
| (JSC::dateProtoFuncGetUTCFullYear): | |
| (JSC::dateProtoFuncToGMTString): | |
| (JSC::dateProtoFuncGetMonth): | |
| (JSC::dateProtoFuncGetUTCMonth): | |
| (JSC::dateProtoFuncGetDate): | |
| (JSC::dateProtoFuncGetUTCDate): | |
| (JSC::dateProtoFuncGetDay): | |
| (JSC::dateProtoFuncGetUTCDay): | |
| (JSC::dateProtoFuncGetHours): | |
| (JSC::dateProtoFuncGetUTCHours): | |
| (JSC::dateProtoFuncGetMinutes): | |
| (JSC::dateProtoFuncGetUTCMinutes): | |
| (JSC::dateProtoFuncGetSeconds): | |
| (JSC::dateProtoFuncGetUTCSeconds): | |
| (JSC::dateProtoFuncGetMilliSeconds): | |
| (JSC::dateProtoFuncGetUTCMilliseconds): | |
| (JSC::dateProtoFuncGetTimezoneOffset): | |
| (JSC::dateProtoFuncSetTime): | |
| (JSC::setNewValueFromTimeArgs): | |
| (JSC::setNewValueFromDateArgs): | |
| (JSC::dateProtoFuncSetYear): | |
| (JSC::dateProtoFuncGetYear): | |
| * runtime/FunctionPrototype.cpp: | |
| (JSC::functionProtoFuncToString): | |
| * runtime/JSActivation.cpp: | |
| (JSC::JSActivation::argumentsGetter): | |
| * runtime/JSValue.h: | |
| * runtime/RegExpConstructor.cpp: | |
| (JSC::constructRegExp): | |
| * runtime/RegExpPrototype.cpp: | |
| (JSC::regExpProtoFuncTest): | |
| (JSC::regExpProtoFuncExec): | |
| (JSC::regExpProtoFuncCompile): | |
| (JSC::regExpProtoFuncToString): | |
| * runtime/ScopeChain.cpp: | |
| (JSC::ScopeChain::localDepth): | |
| * runtime/StringPrototype.cpp: | |
| (JSC::stringProtoFuncReplace): | |
| (JSC::stringProtoFuncToString): | |
| (JSC::stringProtoFuncMatch): | |
| (JSC::stringProtoFuncSearch): | |
| (JSC::stringProtoFuncSplit): | |
| Updated to new name, inherits, from old name, isObject. | |
| 2009-07-31 Harald Fernengel <harald.fernengel@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Adding QNX as a platform. Currently only tested with Qt. | |
| https://bugs.webkit.org/show_bug.cgi?id=27885 | |
| * JavaScriptCore/runtime/Collector.cpp: Added retrieving of stack base | |
| since QNX doesn't have the pthread _nt functions | |
| * JavaScriptCore/wtf/Platform.h: Added WTF_PLATFORM_QNX and corresponding | |
| defines | |
| * WebCore/bridge/npapi.h: Build fix for missing typedefs on QNX | |
| 2009-08-14 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Simon Hausmann. | |
| Currently generic ARM and ARMv7 platforms work only with JSVALUE32 | |
| https://bugs.webkit.org/show_bug.cgi?id=28300 | |
| * wtf/Platform.h: | |
| 2009-08-14 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Simon Hausmann. | |
| Enable JIT on ARM for QT by default | |
| https://bugs.webkit.org/show_bug.cgi?id=28259 | |
| * wtf/Platform.h: | |
| 2009-08-14 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Simon Hausmann. | |
| Enable YARR_JIT on ARM for QT by default | |
| https://bugs.webkit.org/show_bug.cgi?id=28259 | |
| * wtf/Platform.h: | |
| 2009-08-14 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| [ES5] Arguments object should inherit from Array | |
| https://bugs.webkit.org/show_bug.cgi?id=28298 | |
| Make the Arguments object conform to the behaviour specified in ES5. | |
| The simple portion of this is to make Arguments use Array.prototype | |
| as its prototype rather than Object.prototype. | |
| The spec then requires us to set instance.constructor to the pristine | |
| Object constructor, and instance.toString and instance.toLocaleString | |
| to the pristine versions from Object.prototype. To do this we now | |
| make the ObjectPrototype constructor return its toString and | |
| toLocaleString functions (similar to the call and apply functions | |
| from FunctionPrototype). | |
| Oddly enough this reports itself as a slight win, but given the code | |
| isn't hit in the tests that claim to have improved I put this down to | |
| code motion. | |
| * runtime/Arguments.h: | |
| (JSC::Arguments::Arguments): | |
| (JSC::Arguments::initializeStandardProperties): | |
| * runtime/JSGlobalObject.cpp: | |
| (JSC::JSGlobalObject::reset): | |
| (JSC::JSGlobalObject::markChildren): | |
| * runtime/JSGlobalObject.h: | |
| (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): | |
| (JSC::JSGlobalObject::objectConstructor): | |
| (JSC::JSGlobalObject::objectToStringFunction): | |
| (JSC::JSGlobalObject::objectToLocaleStringFunction): | |
| * runtime/ObjectPrototype.cpp: | |
| (JSC::ObjectPrototype::ObjectPrototype): | |
| * runtime/ObjectPrototype.h: | |
| * tests/mozilla/ecma_3/Function/arguments-001.js: | |
| Update test to new es5 behaviour | |
| 2009-08-14 Oliver Hunt <oliver@apple.com> | |
| Remove MarkStack::drain from the JSC exports file | |
| MarkStack::drain is now marked inline, the including it in the exports file | |
| produces an ld warning | |
| * JavaScriptCore.exp: | |
| 2009-08-13 Sam Weinig <sam@webkit.org> | |
| Reviewed by Oliver Hunt. | |
| Remove accidentally left in debugging statement. | |
| * runtime/JSArray.h: | |
| (JSC::MarkStack::drain): | |
| 2009-08-13 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| [ES5] Implement Array.isArray | |
| https://bugs.webkit.org/show_bug.cgi?id=28296 | |
| Add support for Array.isArray to the Array constructor | |
| * runtime/ArrayConstructor.cpp: | |
| (JSC::ArrayConstructor::ArrayConstructor): | |
| (JSC::arrayConstructorIsArray): | |
| * runtime/ArrayConstructor.h: | |
| * runtime/CommonIdentifiers.h: | |
| * runtime/JSArray.h: | |
| (JSC::MarkStack::drain): | |
| * runtime/JSGlobalObject.cpp: | |
| (JSC::JSGlobalObject::reset): | |
| 2009-08-13 Oliver Hunt <oliver@apple.com> | |
| Reviewed by NOBODY (Buildfix). | |
| Attempt to fix windows build | |
| * runtime/Collector.cpp: | |
| 2009-08-13 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Devirtualise marking | |
| https://bugs.webkit.org/show_bug.cgi?id=28294 | |
| Add a bit to TypeInfo to indicate that an object uses the standard | |
| JSObject::markChildren method. This allows us to devirtualise marking | |
| of most objects (though a branch is still needed). We also add a branch | |
| to identify arrays thus devirtualising marking in that case as well. | |
| In order to make the best use of this devirtualisation I've also reworked | |
| the MarkStack::drain() logic to make the iteration more efficient. | |
| * API/JSCallbackConstructor.h: | |
| (JSC::JSCallbackConstructor::createStructure): | |
| * API/JSCallbackFunction.h: | |
| (JSC::JSCallbackFunction::createStructure): | |
| * JavaScriptCore.exp: | |
| * runtime/BooleanObject.h: | |
| (JSC::BooleanObject::createStructure): | |
| * runtime/FunctionPrototype.h: | |
| (JSC::FunctionPrototype::createStructure): | |
| * runtime/InternalFunction.h: | |
| (JSC::InternalFunction::createStructure): | |
| * runtime/JSAPIValueWrapper.h: | |
| (JSC::JSAPIValueWrapper::JSAPIValueWrapper): | |
| * runtime/JSArray.cpp: | |
| (JSC::JSArray::markChildren): | |
| * runtime/JSArray.h: | |
| (JSC::JSArray::markChildrenDirect): | |
| (JSC::MarkStack::drain): | |
| * runtime/JSByteArray.cpp: | |
| (JSC::JSByteArray::createStructure): | |
| * runtime/JSCell.h: | |
| (JSC::MarkStack::append): | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::JSGlobalData): | |
| * runtime/JSNumberCell.h: | |
| (JSC::JSNumberCell::createStructure): | |
| * runtime/JSONObject.h: | |
| (JSC::JSONObject::createStructure): | |
| * runtime/JSObject.cpp: | |
| (JSC::JSObject::markChildren): | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::markChildrenDirect): | |
| (JSC::JSObject::createStructure): | |
| * runtime/JSString.h: | |
| (JSC::JSString::createStructure): | |
| * runtime/JSType.h: | |
| (JSC::): | |
| * runtime/MarkStack.h: | |
| (JSC::MarkStack::MarkStack): | |
| (JSC::MarkStack::MarkSet::MarkSet): | |
| (JSC::MarkStack::MarkStackArray::last): | |
| * runtime/MathObject.h: | |
| (JSC::MathObject::createStructure): | |
| * runtime/NumberConstructor.h: | |
| (JSC::NumberConstructor::createStructure): | |
| * runtime/NumberObject.h: | |
| (JSC::NumberObject::createStructure): | |
| * runtime/RegExpConstructor.h: | |
| (JSC::RegExpConstructor::createStructure): | |
| * runtime/RegExpObject.h: | |
| (JSC::RegExpObject::createStructure): | |
| * runtime/StringObjectThatMasqueradesAsUndefined.h: | |
| (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): | |
| * runtime/TypeInfo.h: | |
| (JSC::TypeInfo::hasDefaultMark): | |
| 2009-08-13 Darin Adler <darin@apple.com> | |
| Reviewed by Mark Rowe. | |
| Some small bits of housekeeping. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: Make Parser.h | |
| project instead of private. Remove JSONObject.lut.h. | |
| * assembler/ARMAssembler.h: Remove unneeded WTF prefix. | |
| * assembler/AssemblerBufferWithConstantPool.h: Ditto. | |
| * bytecompiler/BytecodeGenerator.h: Ditto. | |
| * wtf/SegmentedVector.h: Add a "using" statement as we do | |
| with the other WTF headers. | |
| 2009-08-13 Darin Adler <darin@apple.com> | |
| Fix Tiger build. | |
| * parser/Grammar.y: Use a template function so we can compile | |
| setStatementLocation even if it comes before YYLTYPE is defined. | |
| 2009-08-13 Darin Adler <darin@apple.com> | |
| Reviewed by George Staikos. | |
| Too much use of void* in Grammar.y | |
| https://bugs.webkit.org/show_bug.cgi?id=28287 | |
| * parser/Grammar.y: Changed all the helper functions to | |
| take a JSGlobalData* instead of a void*. A couple formatting | |
| tweaks that I missed when breaking this into pieces. | |
| 2009-08-13 Darin Adler <darin@apple.com> | |
| Reviewed by George Staikos. | |
| Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 | |
| * parser/Grammar.y: Reduced and sorted includes. Tweaked comment | |
| format. Marked a few more functions inline. | |
| 2009-08-13 Darin Adler <darin@apple.com> | |
| Reviewed by George Staikos. | |
| Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 | |
| * parser/Grammar.y: Pass the number to the PropertyNode instead of | |
| first turning it into an Identifier. | |
| * parser/NodeConstructors.h: | |
| (JSC::PropertyNode::PropertyNode): Add an overload that takes a double | |
| so the code to convert to a string can be here instead of Grammar.y. | |
| * parser/Nodes.h: Ditto. | |
| 2009-08-13 Darin Adler <darin@apple.com> | |
| Reviewed by George Staikos. | |
| Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 | |
| * parser/Grammar.y: Eliminate the DBG macro. | |
| 2009-08-13 Darin Adler <darin@apple.com> | |
| Reviewed by George Staikos. | |
| Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 | |
| * parser/Grammar.y: Eliminate the SET_EXCEPTION_LOCATION macro. | |
| 2009-08-13 Darin Adler <darin@apple.com> | |
| Reviewed by George Staikos. | |
| George asked me to break the patch from | |
| https://bugs.webkit.org/show_bug.cgi?id=28287 | |
| into smaller pieces and land it in stages. | |
| * parser/Grammar.y: Eliminate the LEXER macro. | |
| 2009-08-13 Mark Rowe <mrowe@apple.com> | |
| Try some more to fix the Windows build. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto. | |
| 2009-08-13 Mark Rowe <mrowe@apple.com> | |
| Try and fix the Windows build. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto. | |
| 2009-08-13 Darin Adler <darin@apple.com> | |
| Reviewed by David Levin. | |
| JavaScriptCore tweaks to get ready for the parser arena | |
| https://bugs.webkit.org/show_bug.cgi?id=28243 | |
| Eliminate dependencies on Nodes.h outside JavaScriptCore, | |
| and cut down on them inside JavaScriptCore. | |
| Change regular expression parsing to use identifiers as | |
| with other strings we parse. | |
| Fix a couple things that are needed to use const Identifier | |
| more, which will be part of the parser arena work. | |
| * JavaScriptCore.exp: Resorted and updated. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: Changed | |
| CollectorHeapIterator.h to be project-internal. | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitPushNewScope): Added const. | |
| * bytecompiler/BytecodeGenerator.h: Ditto. | |
| * debugger/Debugger.cpp: | |
| (JSC::Debugger::recompileAllJSFunctions): Moved this function | |
| here from WebCore. Here is better since it uses so many internals. | |
| Removed unimportant optimization for the no listener case. | |
| * debugger/Debugger.h: Ditto. Also removed unneeded include | |
| and tweaked formatting and comments. | |
| * debugger/DebuggerCallFrame.cpp: | |
| (JSC::DebuggerCallFrame::functionName): Call asFunction instead | |
| of doing the unchecked static_cast. | |
| (JSC::DebuggerCallFrame::calculatedFunctionName): Ditto. | |
| * jit/JITStubs.cpp: | |
| (JSC::op_call_JSFunction): Call isHostFunction on the body rather | |
| than on the JSFunction. | |
| (JSC::vm_lazyLinkCall): Ditto. | |
| (JSC::op_construct_JSConstruct): Ditto. | |
| * parser/Grammar.y: Changed callers to use new scanRegExp with | |
| out arguments instead of relying on state in the Lexer. And | |
| callers that just want to skip a regular expression to use | |
| skipRegExp. | |
| * parser/Lexer.cpp: | |
| (JSC::Lexer::scanRegExp): Changed to use out arguments, and to | |
| add a prefix argument so we can add in the "=" character as needed. | |
| Also rewrote to streamline the logic a bit inspired by suggestions | |
| by David Levin. | |
| (JSC::Lexer::skipRegExp): Added. Version of the function above that | |
| does not actually put the regular expression into a string. | |
| (JSC::Lexer::clear): Removed code to clear m_pattern and m_flags. | |
| * parser/Lexer.h: Changed scanRegExp to have out arguments. Added | |
| skipRegExp. Eliminated pattern, flags, m_pattern, and m_flags. | |
| * parser/NodeConstructors.h: | |
| (JSC::RegExpNode::RegExpNode): Changed to take const Identifier&. | |
| * parser/Nodes.cpp: | |
| (JSC::RegExpNode::emitBytecode): Changed since m_pattern and | |
| m_flags are now Identifier instead of UString. | |
| (JSC::FunctionBodyNode::make): Moved this function here instead | |
| of putting it in the JSFunction.h header. | |
| * parser/Nodes.h: Changed RegExpNode to use Identifier. | |
| * profiler/Profiler.cpp: | |
| (JSC::Profiler::createCallIdentifier): Changed to use isHostFunction | |
| on the body instead of on the JSFunction object. | |
| * runtime/FunctionPrototype.cpp: | |
| (JSC::functionProtoFuncToString): Ditto. | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::isHostFunction): Moved here from header. | |
| (JSC::JSFunction::isHostFunctionNonInline): Added. | |
| (JSC::JSFunction::JSFunction): Removed unneeded initialization of | |
| m_body to 0. | |
| (JSC::JSFunction::setBody): Moved here from header. | |
| * runtime/JSFunction.h: Removed unneeded includes. Moved private | |
| constructor down to the private section. Made virtual functions | |
| private. Removed unneeded overload of setBody and moved the body | |
| of the function into the .cpp file. Changed assertions to use | |
| the non-inline version of isHostFunction. | |
| * runtime/PropertySlot.cpp: | |
| (JSC::PropertySlot::functionGetter): Use asFunction instead | |
| of doing the unchecked static_cast. | |
| * wtf/SegmentedVector.h: | |
| (WTF::SegmentedVector::isEmpty): Added. | |
| 2009-08-13 Mark Rowe <mrowe@apple.com> | |
| Rubber-stamped by Darin Adler. | |
| Use the version of operator new that takes a JSGlobalData when allocating FuncDeclNode and FuncExprNode | |
| from within the grammar to prevent these nodes from being leaked. | |
| * parser/Grammar.y: | |
| 2009-08-13 Simon Hausmann <simon.hausmann@nokia.com> | |
| Reviewed by Ariya Hidayat. | |
| Remove the special-case for Qt wrt JSVALUE_32 introduced in | |
| r46709. It must've been a dependency issue on the bot, as | |
| after a manual build all the tests pass on amd64 and ia32. | |
| * wtf/Platform.h: | |
| 2009-08-12 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Add optimize call and property access support for ARM JIT. | |
| https://bugs.webkit.org/show_bug.cgi?id=24986 | |
| For tightly coupled sequences the BEGIN_UNINTERRUPTED_SEQUENCE and | |
| END_UNINTERRUPTED_SEQUENCE macros have been introduced which ensure | |
| space for instructions and constants of the named sequence. This | |
| method is vital for those architecture which are using constant pool. | |
| The 'latePatch' method - which was linked to JmpSrc - is replaced with | |
| a port specific solution (each calls are marked to place their address | |
| on the constant pool). | |
| * assembler/ARMAssembler.cpp: | |
| (JSC::ARMAssembler::linkBranch): | |
| (JSC::ARMAssembler::executableCopy): Add extra align for constant pool. | |
| * assembler/ARMAssembler.h: | |
| (JSC::ARMAssembler::JmpSrc::JmpSrc): | |
| (JSC::ARMAssembler::sizeOfConstantPool): | |
| (JSC::ARMAssembler::jmp): | |
| (JSC::ARMAssembler::linkCall): | |
| * assembler/ARMv7Assembler.h: | |
| * assembler/AbstractMacroAssembler.h: | |
| * assembler/AssemblerBufferWithConstantPool.h: | |
| (JSC::AssemblerBufferWithConstantPool::flushIfNoSpaceFor): Fix the | |
| computation of the remaining space. | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::branch32): | |
| (JSC::MacroAssemblerARM::nearCall): | |
| (JSC::MacroAssemblerARM::call): | |
| (JSC::MacroAssemblerARM::branchPtrWithPatch): | |
| (JSC::MacroAssemblerARM::ensureSpace): | |
| (JSC::MacroAssemblerARM::sizeOfConstantPool): | |
| (JSC::MacroAssemblerARM::prepareCall): | |
| * assembler/X86Assembler.h: | |
| * jit/JIT.h: | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCall): | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::beginUninterruptedSequence): | |
| (JSC::JIT::endUninterruptedSequence): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emit_op_method_check): | |
| (JSC::JIT::compileGetByIdHotPath): | |
| (JSC::JIT::compileGetByIdSlowCase): | |
| (JSC::JIT::emit_op_put_by_id): | |
| 2009-08-12 Gavin Barraclough <barraclough@apple.com> | |
| Rubber Stamped by Dave Kilzer. | |
| Disable WTF_USE_JSVALUE32_64 on iPhone for now (support not yet added for ARMv7). | |
| * wtf/Platform.h: | |
| 2009-08-12 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Maciej Stachoviak. | |
| Ooops - moved code that had been accidentally added to op_new_func instead of | |
| op_new_func_exp, to where it shoulds be. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| * wtf/Platform.h: | |
| 2009-08-12 Ada Chan <adachan@apple.com> | |
| Added workaround for the limitation that VirtualFree with MEM_RELEASE | |
| can only accept the base address returned by VirtualAlloc when the region | |
| was reserved and it can only free the entire region, and not a part of it. | |
| Reviewed by Oliver Hunt. | |
| * runtime/MarkStack.h: | |
| (JSC::MarkStack::MarkStackArray::shrinkAllocation): | |
| * runtime/MarkStackWin.cpp: | |
| (JSC::MarkStack::releaseStack): | |
| 2009-08-12 Balazs Kelemen <kelemen.balazs.3@stud.u-szeged.hu> | |
| Reviewed by Ariya Hidayat. | |
| Build fix: use std::numeric_limits<long long>::min() instead of LLONG_MIN | |
| since LLONG_MIN is not defined in standard c++. | |
| * runtime/UString.cpp: | |
| (JSC::UString::from): | |
| 2009-08-12 Benjamin Otte <otte@gnome.org> | |
| Reviewed by Jan Alonzo. | |
| Buildfix for Gtk platforms debug builds. | |
| * GNUmakefile.am: Choose MarkStackPosix.cpp or MarkStackWin.cpp | |
| depending on platform. | |
| 2009-08-12 Simon Hausmann <simon.hausmann@nokia.com> | |
| Prospective build fix for Mac and 32-bit Windows. | |
| * runtime/UString.cpp: Include wtf/StringExtras.h for snprintf. | |
| (JSC::UString::from): Use %lld instead of %I64d for snprintf | |
| on non-windows platforms. | |
| 2009-08-12 Prasanth Ullattil <prasanth.ullattil@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Fix compile error on 64Bit Windows, when UString::from | |
| is called with an intptr_t. | |
| Added new UString::From overload with long long parameter. | |
| Thanks to Holger for the long long idea. | |
| * runtime/UString.cpp: | |
| (JSC::UString::from): | |
| * runtime/UString.h: | |
| 2009-08-11 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Mark Rowe. | |
| Minor style fixes. | |
| * runtime/UString.h: | |
| (JSC::UString::Rep::createEmptyBuffer): | |
| * wtf/FastMalloc.h: | |
| (WTF::TryMallocReturnValue::getValue): | |
| 2009-08-11 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Make it harder to misuse try* allocation routines | |
| https://bugs.webkit.org/show_bug.cgi?id=27469 | |
| Jump through a few hoops to make it much harder to accidentally | |
| miss null-checking of values returned by the try-* allocation | |
| routines. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/JSArray.cpp: | |
| (JSC::JSArray::putSlowCase): | |
| (JSC::JSArray::increaseVectorLength): | |
| * runtime/StringPrototype.cpp: | |
| (JSC::stringProtoFuncFontsize): | |
| (JSC::stringProtoFuncLink): | |
| * runtime/UString.cpp: | |
| (JSC::allocChars): | |
| (JSC::reallocChars): | |
| (JSC::expandCapacity): | |
| (JSC::UString::Rep::reserveCapacity): | |
| (JSC::UString::expandPreCapacity): | |
| (JSC::createRep): | |
| (JSC::concatenate): | |
| (JSC::UString::spliceSubstringsWithSeparators): | |
| (JSC::UString::replaceRange): | |
| (JSC::UString::append): | |
| (JSC::UString::operator=): | |
| * runtime/UString.h: | |
| (JSC::UString::Rep::createEmptyBuffer): | |
| * wtf/FastMalloc.cpp: | |
| (WTF::tryFastZeroedMalloc): | |
| (WTF::tryFastMalloc): | |
| (WTF::tryFastCalloc): | |
| (WTF::tryFastRealloc): | |
| (WTF::TCMallocStats::tryFastMalloc): | |
| (WTF::TCMallocStats::tryFastCalloc): | |
| (WTF::TCMallocStats::tryFastRealloc): | |
| * wtf/FastMalloc.h: | |
| (WTF::TryMallocReturnValue::TryMallocReturnValue): | |
| (WTF::TryMallocReturnValue::~TryMallocReturnValue): | |
| (WTF::TryMallocReturnValue::operator PossiblyNull<T>): | |
| (WTF::TryMallocReturnValue::getValue): | |
| * wtf/Platform.h: | |
| * wtf/PossiblyNull.h: Added. | |
| (WTF::PossiblyNull::PossiblyNull): | |
| (WTF::PossiblyNull::~PossiblyNull): | |
| (WTF::::getValue): | |
| 2009-08-11 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (build fix part deux). | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-08-11 Gavin Barraclough <barraclough@apple.com> | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-08-11 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Restrict use of FuncDeclNode & FuncExprNode to the parser. | |
| https://bugs.webkit.org/show_bug.cgi?id=28209 | |
| These objects were also being referenced from the CodeBlock. By changing this | |
| to just retain pointers to FunctionBodyNodes these classes can be restricted to | |
| use during parsing. | |
| No performance impact (or sub-percent progression). | |
| * JavaScriptCore.exp: | |
| Update symbols. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::mark): | |
| (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): | |
| (JSC::CodeBlock::shrinkToFit): | |
| * bytecode/CodeBlock.h: | |
| (JSC::CodeBlock::addFunction): | |
| (JSC::CodeBlock::function): | |
| Unify m_functions & m_functionExpressions into a single Vector<RefPtr<FuncExprNode> >. | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::BytecodeGenerator): | |
| (JSC::BytecodeGenerator::addConstant): | |
| (JSC::BytecodeGenerator::emitNewFunction): | |
| (JSC::BytecodeGenerator::emitNewFunctionExpression): | |
| * bytecompiler/BytecodeGenerator.h: | |
| FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::execute): | |
| (JSC::Interpreter::privateExecute): | |
| Update to reflect chnages in CodeBlock. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_new_func_exp): | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * jit/JITStubs.h: | |
| (JSC::): | |
| Update to reflect chnages in CodeBlock. | |
| * parser/Grammar.y: | |
| FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes. | |
| * parser/NodeConstructors.h: | |
| (JSC::FuncExprNode::FuncExprNode): | |
| (JSC::FuncDeclNode::FuncDeclNode): | |
| * parser/Nodes.cpp: | |
| (JSC::ScopeNodeData::mark): | |
| (JSC::FunctionBodyNode::finishParsing): | |
| * parser/Nodes.h: | |
| (JSC::FunctionBodyNode::ident): | |
| Move m_ident & make methods from FuncDeclNode & FuncExprNode to FunctionBodyNode. | |
| * runtime/JSFunction.h: | |
| (JSC::FunctionBodyNode::make): | |
| Make this method inline (was FuncDeclNode::makeFunction). | |
| 2009-08-11 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Native JSON.stringify does not omit functions | |
| https://bugs.webkit.org/show_bug.cgi?id=28117 | |
| Objects that are callable should be treated as undefined when | |
| serialising to JSON. | |
| * runtime/JSONObject.cpp: | |
| (JSC::Stringifier::appendStringifiedValue): | |
| 2009-08-11 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Geoff Garen. | |
| REGRESSION: Hang/crash in BytecodeGenerator::constRegisterFor loading simple page | |
| https://bugs.webkit.org/show_bug.cgi?id=28169 | |
| Handle the case where someone has attempted to shadow a property | |
| on the global object with a constant. | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::constRegisterFor): | |
| * parser/Nodes.cpp: | |
| (JSC::ConstDeclNode::emitCodeSingle): | |
| 2009-08-11 John Gregg <johnnyg@google.com> | |
| Reviewed by Maciej Stachowiak. | |
| Desktop Notifications API | |
| https://bugs.webkit.org/show_bug.cgi?id=25463 | |
| Adds ENABLE_NOTIFICATION flag. | |
| * Configurations/FeatureDefines.xcconfig: | |
| * wtf/Platform.h: | |
| 2009-08-11 Maxime Simon <simon.maxime@gmail.com> | |
| Reviewed by Eric Seidel. | |
| Modifications on JavaScriptCore to allow Haiku port. | |
| https://bugs.webkit.org/show_bug.cgi?id=28121 | |
| * runtime/Collector.cpp: Haiku doesn't have sys/mman.h, using OS.h instead. | |
| (JSC::currentThreadStackBase): Haiku uses its own threading system. | |
| * wtf/Platform.h: Defining all Haiku platform values. | |
| * wtf/haiku/MainThreadHaiku.cpp: Adding a missing header (NotImplemented.h). | |
| 2009-08-11 Jessie Berlin <jberlin@apple.com> | |
| Reviewed by Adam Roben. | |
| Fix windows build. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-08-11 Csaba Osztrogonac <oszi@inf.u-szeged.hu> | |
| Reviewed by Tor Arne Vestbø. | |
| Buildfix for Qt-win platforms. | |
| * JavaScriptCore.pri: Choose MarkStackPosix.cpp or MarkStackWin.cpp depend on platform. | |
| 2009-08-10 Oliver Hunt <oliver@apple.com> | |
| Reviewed by NOBODY (And another build fix). | |
| Add new exports for MSVC | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| 2009-08-10 Oliver Hunt <oliver@apple.com> | |
| Reviewed by NOBODY (yet another build fix). | |
| Remove obsolete entries from MSVC exports file | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-08-10 Oliver Hunt <oliver@apple.com> | |
| Add includes needed for non-allinonefile builds | |
| * runtime/GetterSetter.h: | |
| * runtime/ScopeChain.h: | |
| 2009-08-10 Oliver Hunt <oliver@apple.com> | |
| Fix export file for last build fix | |
| * JavaScriptCore.exp: | |
| 2009-08-10 Oliver Hunt <oliver@apple.com> | |
| Hoist page size initialization into platform specific code. | |
| * jit/ExecutableAllocatorPosix.cpp: | |
| * jit/ExecutableAllocatorWin.cpp: | |
| * runtime/MarkStack.h: | |
| (JSC::MarkStack::pageSize): | |
| * runtime/MarkStackPosix.cpp: | |
| (JSC::MarkStack::initializePagesize): | |
| * runtime/MarkStackWin.cpp: | |
| (JSC::MarkStack::initializePagesize): | |
| 2009-08-07 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Stack overflow crash in JavaScript garbage collector mark pass | |
| https://bugs.webkit.org/show_bug.cgi?id=12216 | |
| Make the GC mark phase iterative by using an explicit mark stack. | |
| To do this marking any single object is performed in multiple stages | |
| * The object is appended to the MarkStack, this sets the marked | |
| bit for the object using the new markDirect() function, and then | |
| returns | |
| * When the MarkStack is drain()ed the object is popped off the stack | |
| and markChildren(MarkStack&) is called on the object to collect | |
| all of its children. drain() then repeats until the stack is empty. | |
| Additionally I renamed a number of methods from 'mark' to 'markAggregate' | |
| in order to make it more clear that marking of those object was not | |
| going to result in an actual recursive mark. | |
| * GNUmakefile.am | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.gypi: | |
| * JavaScriptCore.pri: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::markAggregate): | |
| * bytecode/CodeBlock.h: | |
| * bytecode/EvalCodeCache.h: | |
| (JSC::EvalCodeCache::markAggregate): | |
| * debugger/DebuggerActivation.cpp: | |
| (JSC::DebuggerActivation::markChildren): | |
| * debugger/DebuggerActivation.h: | |
| * interpreter/Register.h: | |
| * interpreter/RegisterFile.h: | |
| (JSC::RegisterFile::markGlobals): | |
| (JSC::RegisterFile::markCallFrames): | |
| * parser/Nodes.cpp: | |
| (JSC::ScopeNodeData::markAggregate): | |
| (JSC::EvalNode::markAggregate): | |
| (JSC::FunctionBodyNode::markAggregate): | |
| * parser/Nodes.h: | |
| (JSC::ScopeNode::markAggregate): | |
| * runtime/ArgList.cpp: | |
| (JSC::MarkedArgumentBuffer::markLists): | |
| * runtime/ArgList.h: | |
| * runtime/Arguments.cpp: | |
| (JSC::Arguments::markChildren): | |
| * runtime/Arguments.h: | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::markConservatively): | |
| (JSC::Heap::markCurrentThreadConservativelyInternal): | |
| (JSC::Heap::markCurrentThreadConservatively): | |
| (JSC::Heap::markOtherThreadConservatively): | |
| (JSC::Heap::markStackObjectsConservatively): | |
| (JSC::Heap::markProtectedObjects): | |
| (JSC::Heap::collect): | |
| * runtime/Collector.h: | |
| * runtime/GetterSetter.cpp: | |
| (JSC::GetterSetter::markChildren): | |
| * runtime/GetterSetter.h: | |
| (JSC::GetterSetter::GetterSetter): | |
| (JSC::GetterSetter::createStructure): | |
| * runtime/GlobalEvalFunction.cpp: | |
| (JSC::GlobalEvalFunction::markChildren): | |
| * runtime/GlobalEvalFunction.h: | |
| * runtime/JSActivation.cpp: | |
| (JSC::JSActivation::markChildren): | |
| * runtime/JSActivation.h: | |
| * runtime/JSArray.cpp: | |
| (JSC::JSArray::markChildren): | |
| * runtime/JSArray.h: | |
| * runtime/JSCell.h: | |
| (JSC::JSCell::markCellDirect): | |
| (JSC::JSCell::markChildren): | |
| (JSC::JSValue::markDirect): | |
| (JSC::JSValue::markChildren): | |
| (JSC::JSValue::hasChildren): | |
| (JSC::MarkStack::append): | |
| (JSC::MarkStack::drain): | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::markChildren): | |
| * runtime/JSFunction.h: | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::JSGlobalData): | |
| * runtime/JSGlobalData.h: | |
| * runtime/JSGlobalObject.cpp: | |
| (JSC::markIfNeeded): | |
| (JSC::JSGlobalObject::markChildren): | |
| * runtime/JSGlobalObject.h: | |
| * runtime/JSNotAnObject.cpp: | |
| (JSC::JSNotAnObject::markChildren): | |
| * runtime/JSNotAnObject.h: | |
| * runtime/JSONObject.cpp: | |
| (JSC::Stringifier::markAggregate): | |
| (JSC::JSONObject::markStringifiers): | |
| * runtime/JSONObject.h: | |
| * runtime/JSObject.cpp: | |
| (JSC::JSObject::markChildren): | |
| (JSC::JSObject::defineGetter): | |
| (JSC::JSObject::defineSetter): | |
| * runtime/JSObject.h: | |
| * runtime/JSPropertyNameIterator.cpp: | |
| (JSC::JSPropertyNameIterator::markChildren): | |
| * runtime/JSPropertyNameIterator.h: | |
| (JSC::JSPropertyNameIterator::createStructure): | |
| (JSC::JSPropertyNameIterator::JSPropertyNameIterator): | |
| (JSC::JSPropertyNameIterator::create): | |
| * runtime/JSStaticScopeObject.cpp: | |
| (JSC::JSStaticScopeObject::markChildren): | |
| * runtime/JSStaticScopeObject.h: | |
| * runtime/JSType.h: | |
| (JSC::): | |
| * runtime/JSValue.h: | |
| * runtime/JSWrapperObject.cpp: | |
| (JSC::JSWrapperObject::markChildren): | |
| * runtime/JSWrapperObject.h: | |
| * runtime/MarkStack.cpp: Added. | |
| (JSC::MarkStack::compact): | |
| * runtime/MarkStack.h: Added. | |
| (JSC::): | |
| (JSC::MarkStack::MarkStack): | |
| (JSC::MarkStack::append): | |
| (JSC::MarkStack::appendValues): | |
| (JSC::MarkStack::~MarkStack): | |
| (JSC::MarkStack::MarkSet::MarkSet): | |
| (JSC::MarkStack::pageSize): | |
| MarkStackArray is a non-shrinking, mmap-based vector type | |
| used for storing objects to be marked. | |
| (JSC::MarkStack::MarkStackArray::MarkStackArray): | |
| (JSC::MarkStack::MarkStackArray::~MarkStackArray): | |
| (JSC::MarkStack::MarkStackArray::expand): | |
| (JSC::MarkStack::MarkStackArray::append): | |
| (JSC::MarkStack::MarkStackArray::removeLast): | |
| (JSC::MarkStack::MarkStackArray::isEmpty): | |
| (JSC::MarkStack::MarkStackArray::size): | |
| (JSC::MarkStack::MarkStackArray::shrinkAllocation): | |
| * runtime/MarkStackPosix.cpp: Added. | |
| (JSC::MarkStack::allocateStack): | |
| (JSC::MarkStack::releaseStack): | |
| * runtime/MarkStackWin.cpp: Added. | |
| (JSC::MarkStack::allocateStack): | |
| (JSC::MarkStack::releaseStack): | |
| * runtime/ScopeChain.h: | |
| * runtime/ScopeChainMark.h: | |
| (JSC::ScopeChain::markAggregate): | |
| * runtime/SmallStrings.cpp: | |
| (JSC::SmallStrings::mark): | |
| * runtime/Structure.h: | |
| (JSC::Structure::markAggregate): | |
| 2009-08-10 Mark Rowe <mrowe@apple.com> | |
| Reviewed by Darin Adler. | |
| Fix hundreds of "pointer being freed was not allocated" errors seen on the build bot. | |
| * wtf/FastMalloc.h: Implement nothrow variants of the delete and delete[] operators since | |
| we implement the nothrow variants of new and new[]. The nothrow variant of delete is called | |
| explicitly in the implementation of std::sort which was resulting in FastMalloc-allocated | |
| memory being passed to the system allocator to free. | |
| 2009-08-10 Jan Michael Alonzo <jmalonzo@webkit.org> | |
| [Gtk] Unreviewed build fix. Move JSAPIValueWrapper.cpp/.h in the debug | |
| section. This file is already part of AllInOneFile in Release builds. | |
| * GNUmakefile.am: | |
| 2009-08-10 Darin Adler <darin@apple.com> | |
| * wtf/FastMalloc.h: Fix build. | |
| 2009-08-10 Darin Adler <darin@apple.com> | |
| Reviewed by Mark Rowe. | |
| FastMalloc.h has cross-platform code but marked as WinCE-only | |
| https://bugs.webkit.org/show_bug.cgi?id=28160 | |
| 1) The support for nothrow was inside #if PLATFORM(WINCE) even though it is | |
| not platform-specific. | |
| 2) The code tried to override operator delete nothrow, which does not exist. | |
| 3) The code in the header checks the value of USE_SYSTEM_MALLOC, but the code | |
| in FastMalloc.cpp checks only if the macro is defined. | |
| * wtf/FastMalloc.h: See above. | |
| * wtf/FastMalloc.cpp: Ditto. | |
| 2009-08-10 Sam Weinig <sam@webkit.org> | |
| Reviewed by Anders Carlsson. | |
| Fix an annoying indentation issue. | |
| * runtime/DateConstructor.cpp: | |
| (JSC::constructDate): | |
| 2009-08-10 Xan Lopez <xlopez@igalia.com> | |
| Unreviewed build fix. | |
| Add new files to makefile. | |
| * GNUmakefile.am: | |
| 2009-08-10 Simon Hausmann <simon.hausmann@nokia.com> | |
| Fix compilation with the interpreter instead of the JIT by including | |
| PrototypeFunction.h as forward-declared through NativeFunctionWrapper.h. | |
| * runtime/ObjectConstructor.cpp: | |
| 2009-08-09 Oliver Hunt <oliver@apple.com> | |
| Reviewed by George Staikos. | |
| JSON.stringify replacer returning undefined does not omit object properties | |
| https://bugs.webkit.org/show_bug.cgi?id=28118 | |
| Correct behaviour of stringify when using a replacer function that returns | |
| undefined. This is a simple change to move the undefined value check to | |
| after the replacer function is called. This means that the replacer function | |
| is now called for properties with the value undefined, however i've confirmed | |
| that this behaviour is correct. | |
| In addition I've made the cyclic object exception have a more useful error | |
| message. | |
| * runtime/JSONObject.cpp: | |
| (JSC::Stringifier::appendStringifiedValue): | |
| 2009-08-08 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Eric Seidel and Sam Weinig. | |
| [ES5] Implement Object.getPrototypeOf | |
| https://bugs.webkit.org/show_bug.cgi?id=28114 | |
| Implement getPrototypeOf | |
| * runtime/CommonIdentifiers.h: | |
| * runtime/JSGlobalObject.cpp: | |
| (JSC::JSGlobalObject::reset): | |
| * runtime/ObjectConstructor.cpp: | |
| (JSC::ObjectConstructor::ObjectConstructor): | |
| (JSC::objectConsGetPrototypeOf): | |
| * runtime/ObjectConstructor.h: | |
| 2009-08-07 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Eric Seidel. | |
| Allow custom memory allocation control for Noncopyable class | |
| https://bugs.webkit.org/show_bug.cgi?id=27879 | |
| Several classes which are inherited from Noncopyable are instantiated by | |
| operator new, so Noncopyable class has been inherited from FastAllocBase. | |
| * wtf/Noncopyable.h: | |
| 2009-08-07 George Staikos <george.staikos@torchmobile.com> | |
| Reviewed by Eric Seidel. | |
| https://bugs.webkit.org/show_bug.cgi?id=27305 | |
| Implement WinCE-specific unicode layer. | |
| Written by George Staikos <george.staikos@torchmobile.com> | |
| with bug fixes by Yong Li <yong.li@torchmobile.com> | |
| refactored by Joe Mason <joe.mason@torchmobile.com> | |
| * wtf/Platform.h: | |
| * wtf/unicode/Unicode.h: | |
| * wtf/unicode/wince/UnicodeWince.cpp: Added. | |
| (WTF::Unicode::toLower): | |
| (WTF::Unicode::toUpper): | |
| (WTF::Unicode::foldCase): | |
| (WTF::Unicode::isPrintableChar): | |
| (WTF::Unicode::isSpace): | |
| (WTF::Unicode::isLetter): | |
| (WTF::Unicode::isUpper): | |
| (WTF::Unicode::isLower): | |
| (WTF::Unicode::isDigit): | |
| (WTF::Unicode::isPunct): | |
| (WTF::Unicode::toTitleCase): | |
| (WTF::Unicode::direction): | |
| (WTF::Unicode::category): | |
| (WTF::Unicode::decompositionType): | |
| (WTF::Unicode::combiningClass): | |
| (WTF::Unicode::mirroredChar): | |
| (WTF::Unicode::digitValue): | |
| * wtf/unicode/wince/UnicodeWince.h: Added. | |
| (WTF::Unicode::): | |
| (WTF::Unicode::isSeparatorSpace): | |
| (WTF::Unicode::isHighSurrogate): | |
| (WTF::Unicode::isLowSurrogate): | |
| (WTF::Unicode::isArabicChar): | |
| (WTF::Unicode::hasLineBreakingPropertyComplexContext): | |
| (WTF::Unicode::umemcasecmp): | |
| (WTF::Unicode::surrogateToUcs4): | |
| 2009-08-07 Yongjun Zhang <yongjun.zhang@nokia.com> | |
| Reviewed by Eric Seidel. | |
| https://bugs.webkit.org/show_bug.cgi?id=28069 | |
| Add inline to help winscw compiler resolve specialized argument in | |
| templated functions. | |
| * runtime/LiteralParser.cpp: | |
| (JSC::LiteralParser::Lexer::lexString): | |
| 2009-08-07 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Eric Seidel. | |
| Allow custom memory allocation control for RegExpObjectData struct | |
| http://bugs.webkit.org/show_bug.cgi?id=26750 | |
| Inherits RegExpObjectData struct from FastAllocBase because | |
| it has been instantiated by 'new' in JavaScriptCore/runtime/RegExpObject.cpp:62 | |
| * runtime/RegExpObject.h: | |
| 2009-08-06 Norbert Leser <norbert.leser@nokia.com> | |
| Reviewed by Darin Adler. | |
| Updated patch for bug #27059: | |
| Symbian platform always uses little endian encoding, | |
| regardless of compiler. | |
| We need to make sure that we correctly detect EABI architecture | |
| for armv5 targets on Symbian, | |
| where __EABI__ is set but not __ARM_EABI__ | |
| * wtf/Platform.h: | |
| 2009-08-06 Adam Barth <abarth@webkit.org> | |
| Unreviewed revert. | |
| http://bugs.webkit.org/show_bug.cgi?id=27879 | |
| Revert 46877 because it broke GTK. | |
| * wtf/Noncopyable.h: | |
| 2009-08-06 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Make get_by_id/put_by_id/method_check/call defer optimization using a data flag rather than a code modification. | |
| ( https://bugs.webkit.org/show_bug.cgi?id=27635 ) | |
| This improves performance of ENABLE(ASSEMBLER_WX_EXCLUSIVE) builds by 2-2.5%, reducing the overhead to about 2.5%. | |
| (No performance impact with ASSEMBLER_WX_EXCLUSIVE disabled). | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::printStructureStubInfo): | |
| - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. | |
| * bytecode/CodeBlock.h: | |
| (JSC::): | |
| (JSC::CallLinkInfo::seenOnce): | |
| (JSC::CallLinkInfo::setSeen): | |
| (JSC::MethodCallLinkInfo::seenOnce): | |
| (JSC::MethodCallLinkInfo::setSeen): | |
| - Change a pointer in CallLinkInfo/MethodCallLinkInfo to use a PtrAndFlags, use a flag to track when an op has been executed once. | |
| * bytecode/StructureStubInfo.cpp: | |
| (JSC::StructureStubInfo::deref): | |
| - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. | |
| * bytecode/StructureStubInfo.h: | |
| (JSC::StructureStubInfo::StructureStubInfo): | |
| (JSC::StructureStubInfo::initGetByIdSelf): | |
| (JSC::StructureStubInfo::initGetByIdProto): | |
| (JSC::StructureStubInfo::initGetByIdChain): | |
| (JSC::StructureStubInfo::initGetByIdSelfList): | |
| (JSC::StructureStubInfo::initGetByIdProtoList): | |
| (JSC::StructureStubInfo::initPutByIdTransition): | |
| (JSC::StructureStubInfo::initPutByIdReplace): | |
| (JSC::StructureStubInfo::seenOnce): | |
| (JSC::StructureStubInfo::setSeen): | |
| - Make StructureStubInfo store the type as an integer, rather than an OpcodeID, add a flag to track when an op has been executed once. | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitGetById): | |
| (JSC::BytecodeGenerator::emitPutById): | |
| - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| (JSC::JIT::unlinkCall): | |
| - Remove the "don't lazy link" stage of calls. | |
| * jit/JIT.h: | |
| (JSC::JIT::compileCTIMachineTrampolines): | |
| - Remove the "don't lazy link" stage of calls. | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallSlowCase): | |
| - Remove the "don't lazy link" stage of calls. | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::JITThunks): | |
| (JSC::JITThunks::tryCachePutByID): | |
| (JSC::JITThunks::tryCacheGetByID): | |
| (JSC::JITStubs::DEFINE_STUB_FUNCTION): | |
| (JSC::JITStubs::getPolymorphicAccessStructureListSlot): | |
| - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check. | |
| * jit/JITStubs.h: | |
| (JSC::JITThunks::ctiStringLengthTrampoline): | |
| (JSC::JITStubs::): | |
| - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check. | |
| * wtf/PtrAndFlags.h: | |
| (WTF::PtrAndFlags::PtrAndFlags): | |
| (WTF::PtrAndFlags::operator!): | |
| (WTF::PtrAndFlags::operator->): | |
| - Add ! and -> operators, add constuctor with pointer argument. | |
| 2009-08-06 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Adam Barth. | |
| Allow custom memory allocation control for Noncopyable class | |
| https://bugs.webkit.org/show_bug.cgi?id=27879 | |
| Several classes which inherited from Noncopyable are instantiated by | |
| operator new, so Noncopyable class has been inherited from FastAllocBase. | |
| * wtf/Noncopyable.h: | |
| 2009-08-06 Mark Rowe <mrowe@apple.com> | |
| Rubber-stamped by Sam Weinig. | |
| Add explicit dependencies for our build verification scripts to ensure that they always run after linking has completed. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| 2009-08-06 Mark Rowe <mrowe@apple.com> | |
| Bring a little order to our otherwise out of control lives. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| 2009-08-06 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| Allow custom memory allocation control for JavaScriptCore's PolymorphicAccessStructureList struct | |
| https://bugs.webkit.org/show_bug.cgi?id=27877 | |
| Inherits PolymorphicAccessStructureList struct from FastAllocBase because it has been instantiated by | |
| 'new' in JavaScriptCore/jit/JITStubs.cpp:1229. | |
| * bytecode/Instruction.h: | |
| 2009-08-05 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| Allow custom memory allocation control for JavaScriptCore's ScopeNodeData struct | |
| https://bugs.webkit.org/show_bug.cgi?id=27875 | |
| Inherits ScopeNodeData struct from FastAllocBase because it has been instantiated by | |
| 'new' in JavaScriptCore/parser/Nodes.cpp:1848. | |
| * parser/Nodes.h: | |
| 2009-08-05 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Add floating point support for generic ARM port. | |
| https://bugs.webkit.org/show_bug.cgi?id=24986 | |
| * assembler/ARMAssembler.cpp: | |
| (JSC::ARMAssembler::doubleTransfer): | |
| * assembler/ARMAssembler.h: | |
| (JSC::ARM::): | |
| (JSC::ARMAssembler::): | |
| (JSC::ARMAssembler::faddd_r): | |
| (JSC::ARMAssembler::fsubd_r): | |
| (JSC::ARMAssembler::fmuld_r): | |
| (JSC::ARMAssembler::fcmpd_r): | |
| (JSC::ARMAssembler::fdtr_u): | |
| (JSC::ARMAssembler::fdtr_d): | |
| (JSC::ARMAssembler::fmsr_r): | |
| (JSC::ARMAssembler::fsitod_r): | |
| (JSC::ARMAssembler::fmstat): | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::): | |
| (JSC::MacroAssemblerARM::supportsFloatingPoint): | |
| (JSC::MacroAssemblerARM::loadDouble): | |
| (JSC::MacroAssemblerARM::storeDouble): | |
| (JSC::MacroAssemblerARM::addDouble): | |
| (JSC::MacroAssemblerARM::subDouble): | |
| (JSC::MacroAssemblerARM::mulDouble): | |
| (JSC::MacroAssemblerARM::convertInt32ToDouble): | |
| (JSC::MacroAssemblerARM::branchDouble): | |
| * jit/JIT.h: | |
| 2009-08-05 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Add JIT support for generic ARM port without optimizations. | |
| https://bugs.webkit.org/show_bug.cgi?id=24986 | |
| All JIT optimizations are disabled. | |
| Signed off by Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
| Signed off by Gabor Loki <loki@inf.u-szeged.hu> | |
| * assembler/ARMAssembler.cpp: | |
| (JSC::ARMAssembler::baseIndexTransfer32): | |
| * assembler/AbstractMacroAssembler.h: | |
| (JSC::AbstractMacroAssembler::Imm32::Imm32): | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::store32): | |
| (JSC::MacroAssemblerARM::move): | |
| (JSC::MacroAssemblerARM::branch32): | |
| (JSC::MacroAssemblerARM::add32): | |
| (JSC::MacroAssemblerARM::sub32): | |
| (JSC::MacroAssemblerARM::load32): | |
| * bytecode/CodeBlock.h: | |
| (JSC::CodeBlock::getBytecodeIndex): | |
| * jit/JIT.h: | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::restoreArgumentReference): | |
| * jit/JITOpcodes.cpp: | |
| * jit/JITStubs.cpp: | |
| * jit/JITStubs.h: | |
| (JSC::JITStackFrame::returnAddressSlot): | |
| * wtf/Platform.h: | |
| 2009-08-04 Gavin Barraclough <barraclough@apple.com> | |
| Rubber Stamped by Oiver Hunt. | |
| Revert r46643 since this breaks the Yarr::Interpreter running the v8 tests. | |
| https://bugs.webkit.org/show_bug.cgi?id=27874 | |
| * yarr/RegexInterpreter.cpp: | |
| (JSC::Yarr::Interpreter::allocDisjunctionContext): | |
| (JSC::Yarr::Interpreter::freeDisjunctionContext): | |
| (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext): | |
| (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext): | |
| 2009-08-04 Oliver Hunt <oliver@apple.com> | |
| PPC64 Build fix | |
| * wtf/Platform.h: | |
| 2009-08-04 Benjamin C Meyer <benjamin.meyer@torchmobile.com> | |
| Reviewed by Adam Treat | |
| Explicitly include limits.h header when using INT_MAX and INT_MIN | |
| * interpreter/Interpreter.cpp | |
| 2009-08-03 Harald Fernengel <harald.fernengel@nokia.com> | |
| Reviewed by Darin Adler. | |
| Fix compile error for ambigous call to abs() | |
| https://bugs.webkit.org/show_bug.cgi?id=27873 | |
| Fix ambiguity in abs(long int) call by calling labs() instead | |
| * wtf/DateMath.cpp: replace call to abs() with labs() | |
| 2009-08-03 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Eric Seidel. | |
| [Qt] Consolidate common gcc flags to WebKit.pri | |
| https://bugs.webkit.org/show_bug.cgi?id=27934 | |
| * JavaScriptCore.pro: | |
| 2009-08-03 Ada Chan <adachan@apple.com> | |
| Fixed the Tiger build. | |
| * wtf/FastMalloc.cpp: | |
| 2009-08-03 Ada Chan <adachan@apple.com> | |
| Reviewed by Darin Adler. | |
| Don't use background thread to scavenge memory on Tiger until we figure out why it causes a crash. | |
| https://bugs.webkit.org/show_bug.cgi?id=27900 | |
| * wtf/FastMalloc.cpp: | |
| 2009-08-03 Fumitoshi Ukai <ukai@chromium.org> | |
| Reviewed by Jan Alonzo. | |
| Fix build break on Gtk/x86_64. | |
| https://bugs.webkit.org/show_bug.cgi?id=27936 | |
| Use JSVALUE64 for X86_64 LINUX, except Qt. | |
| * wtf/Platform.h: | |
| 2009-08-02 Xan Lopez <xlopez@igalia.com> | |
| Fix the GTK+ build. | |
| * wtf/Platform.h: | |
| 2009-08-02 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Disabled JSVALUE32_64 on Qt builds, since all layout tests mysteriously | |
| crash with it enabled. | |
| * wtf/Platform.h: | |
| 2009-08-02 Geoffrey Garen <ggaren@apple.com> | |
| Qt build fix. | |
| Added JSAPIValueWrapper.cpp to the build. | |
| * JavaScriptCore.pri: | |
| 2009-08-02 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix. | |
| Exported symbols for JSAPIValueWrapper. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-08-02 Geoffrey Garen <ggaren@apple.com> | |
| GTK build fix. | |
| * jit/JITStubs.cpp: #include <stdarg.h>, for a definition of va_start. | |
| 2009-08-02 Geoffrey Garen <ggaren@apple.com> | |
| Qt build fix. | |
| * runtime/Collector.cpp: #include <limits.h>, for a definition of ULONG_MAX. | |
| 2009-08-02 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: Nixed JSImmediate::prototype, JSImmediate::toObject, | |
| and JSImmediate::toThisObject, and removed their exported symbols. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| * runtime/JSImmediate.cpp: | |
| * runtime/JSImmediate.h: | |
| 2009-08-02 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Mark Rowe. | |
| Enabled JSVALUE32_64 by default on all platforms other than x86_64 (which uses JSVALUE64). | |
| * wtf/Platform.h: | |
| 2009-08-02 Kevin Ollivier <kevino@theolliviers.com> | |
| Reviewed by Jan Alonzo. | |
| Script for building the JavaScriptCore library for wx. | |
| https://bugs.webkit.org/show_bug.cgi?id=27619 | |
| * wscript: Added. | |
| 2009-08-02 Yong Li <yong.li@torchmobile.com> | |
| Reviewed by George Staikos. | |
| DateMath depends on strftime and localtime, which need to be imported manually on WinCE | |
| https://bugs.webkit.org/show_bug.cgi?id=26558 | |
| * wtf/DateMath.cpp: | |
| 2009-08-01 David Kilzer <ddkilzer@apple.com> | |
| wtf/Threading.h: added include of Platform.h | |
| Reviewed by Mark Rowe. | |
| * wtf/Threading.h: Added #include "Platform.h" since this header | |
| uses PLATFORM() and other macros. | |
| 2009-08-01 Mark Rowe <mrowe@apple.com> | |
| Rubber-stamped by Oliver Hunt. | |
| Roll out r46668 as it was misinformed. ScopeChain is only used with placement new. | |
| * runtime/ScopeChain.h: | |
| 2009-08-01 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Allow custom memory allocation control for JavaScriptCore's HashMap class | |
| http://bugs.webkit.org/show_bug.cgi?id=27871 | |
| Inherits HashMap class from FastAllocBase because it has been | |
| instantiated by 'new' in JavaScriptCore/API/JSClassRef.cpp:148. | |
| * wtf/RefPtrHashMap.h: | |
| (WTF::): | |
| 2009-08-01 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Allow custom memory allocation control for JavaScriptCore's ScopeChain class | |
| https://bugs.webkit.org/show_bug.cgi?id=27834 | |
| Inherits ScopeChain class from FastAllocBase because it has been | |
| instantiated by 'new' in JavaScriptCore/runtime/JSFunction.h:109. | |
| * runtime/ScopeChain.h: | |
| 2009-08-01 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| Allow custom memory allocation control for JavaScriptCore's RegExpConstructorPrivate struct | |
| https://bugs.webkit.org/show_bug.cgi?id=27833 | |
| Inherits RegExpConstructorPrivate class from FastAllocBase because it has been | |
| instantiated by 'new' in JavaScriptCore/runtime/RegExpConstructor.cpp:152. | |
| * runtime/RegExpConstructor.cpp: | |
| 2009-07-31 Yong Li <yong.li@torchmobile.com> | |
| Reviewed by George Staikos. | |
| Resurrect the old GetTickCount implementation of currentTime, controlled by WTF_USE_QUERY_PERFORMANCE_COUNTER | |
| currentSystemTime taken from older WebKit; currentTime written by Yong Li <yong.li@torchmobile.com>; cleanup by Joe Mason <joe.mason@torchmobile.com> | |
| https://bugs.webkit.org/show_bug.cgi?id=27848 | |
| * wtf/CurrentTime.cpp: | |
| (WTF::currentSystemTime): get current time with GetCurrentFT | |
| (WTF::currentTime): track msec elapsed since first currentSystemTime call using GetTickCount | |
| * wtf/Platform.h: | |
| 2009-07-31 Ada Chan <adachan@apple.com> | |
| Fixes the Windows release-PGO build. | |
| Reviewed by Jon Honeycutt. | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: Suppresses the warning about unreachable code that we get by adding "return 0" to WTF::TCMalloc_PageHeap::runScavengerThread(). | |
| * wtf/FastMalloc.cpp: | |
| (WTF::TCMalloc_PageHeap::runScavengerThread): Fixes the error about the method not returning a value in the release-PGO build. | |
| 2009-07-31 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Change malloc to fastMalloc and free to fastFree in Yarr's RegexInterpreter.cpp | |
| https://bugs.webkit.org/show_bug.cgi?id=27874 | |
| Use fastMalloc and fastFree instead of malloc and free in RegexInterpreter.cpp's methods. | |
| * yarr/RegexInterpreter.cpp: | |
| (JSC::Yarr::Interpreter::allocDisjunctionContext): | |
| (JSC::Yarr::Interpreter::freeDisjunctionContext): | |
| (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext): | |
| (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext): | |
| 2009-07-30 Xan Lopez <xlopez@igalia.com> | |
| Reviewed by Jan Alonzo. | |
| Fix compiler warning. | |
| GCC does not like C++-style comments in preprocessor directives. | |
| * wtf/Platform.h: | |
| 2009-07-30 John McCall <rjmccall@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Optimize the X86_64 trampolines: avoid the need for filler arguments | |
| and move the stub-args area closer to the stack pointer. | |
| * jit/JIT.h: adjust patch offsets because of slight code-size change | |
| * jit/JITCode.h: | |
| (JSC::JITCode::execute): don't pass filler args | |
| * jit/JITStubs.cpp: | |
| (ctiTrampoline): (X86_64): push args onto stack, use args directly | |
| (ctiVMThrowTrampoline): (X86_64): adjust %rsp by correct displacement | |
| (ctiOpThrowNotCaught): (X86_64): adjust %rsp by correct displacement | |
| * jit/JITStubs.h: | |
| (JITStackFrame): (X86_64): move args area earlier | |
| (ctiTrampoline): remove filler args from prototype | |
| 2009-07-30 Gavin Barraclough <barraclough@apple.com> | |
| Temporarily revert r46618 since this is b0rking on Linux. | |
| 2009-07-23 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Make get_by_id/put_by_id/method_check/call defer optimization using a data flag rather than a code modification. | |
| ( https://bugs.webkit.org/show_bug.cgi?id=27635 ) | |
| This improves performance of ENABLE(ASSEMBLER_WX_EXCLUSIVE) builds by 2-2.5%, reducing the overhead to about 2.5%. | |
| (No performance impact with ASSEMBLER_WX_EXCLUSIVE disabled). | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::printStructureStubInfo): | |
| - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. | |
| * bytecode/CodeBlock.h: | |
| (JSC::): | |
| (JSC::CallLinkInfo::seenOnce): | |
| (JSC::CallLinkInfo::setSeen): | |
| (JSC::MethodCallLinkInfo::seenOnce): | |
| (JSC::MethodCallLinkInfo::setSeen): | |
| - Change a pointer in CallLinkInfo/MethodCallLinkInfo to use a PtrAndFlags, use a flag to track when an op has been executed once. | |
| * bytecode/StructureStubInfo.cpp: | |
| (JSC::StructureStubInfo::deref): | |
| - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. | |
| * bytecode/StructureStubInfo.h: | |
| (JSC::StructureStubInfo::StructureStubInfo): | |
| (JSC::StructureStubInfo::initGetByIdSelf): | |
| (JSC::StructureStubInfo::initGetByIdProto): | |
| (JSC::StructureStubInfo::initGetByIdChain): | |
| (JSC::StructureStubInfo::initGetByIdSelfList): | |
| (JSC::StructureStubInfo::initGetByIdProtoList): | |
| (JSC::StructureStubInfo::initPutByIdTransition): | |
| (JSC::StructureStubInfo::initPutByIdReplace): | |
| (JSC::StructureStubInfo::seenOnce): | |
| (JSC::StructureStubInfo::setSeen): | |
| - Make StructureStubInfo store the type as an integer, rather than an OpcodeID, add a flag to track when an op has been executed once. | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitGetById): | |
| (JSC::BytecodeGenerator::emitPutById): | |
| - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| (JSC::JIT::unlinkCall): | |
| - Remove the "don't lazy link" stage of calls. | |
| * jit/JIT.h: | |
| (JSC::JIT::compileCTIMachineTrampolines): | |
| - Remove the "don't lazy link" stage of calls. | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallSlowCase): | |
| - Remove the "don't lazy link" stage of calls. | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::JITThunks): | |
| (JSC::JITThunks::tryCachePutByID): | |
| (JSC::JITThunks::tryCacheGetByID): | |
| (JSC::JITStubs::DEFINE_STUB_FUNCTION): | |
| (JSC::JITStubs::getPolymorphicAccessStructureListSlot): | |
| - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check. | |
| * jit/JITStubs.h: | |
| (JSC::JITThunks::ctiStringLengthTrampoline): | |
| (JSC::JITStubs::): | |
| - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check. | |
| * wtf/PtrAndFlags.h: | |
| (WTF::PtrAndFlags::PtrAndFlags): | |
| (WTF::PtrAndFlags::operator!): | |
| (WTF::PtrAndFlags::operator->): | |
| - Add ! and -> operators, add constuctor with pointer argument. | |
| 2009-07-30 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Fixed failing tests seen on Windows buildbot. | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * jit/JITStubs.h: | |
| (JSC::): Use "int" instead of "bool" to guarantee a 32-bit result, | |
| regardless of compiler. gcc on mac uses 32-bit values for bool, | |
| but gcc on linux and MSVC on Windows use 8-bit values. | |
| 2009-07-30 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: added missing symbols on Windows. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-07-30 Geoffrey Garen <ggaren@apple.com> | |
| Windows build fix: removed stale symbols on Windows. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| === End merge of nitro-extreme branch 2009-07-30 === | |
| 2009-07-20 Geoffrey Garen <ggaren@apple.com> | |
| Fixed a post-review typo in r46066 that caused tons of test failures. | |
| SunSpider reports no change. | |
| * runtime/JSArray.cpp: | |
| (JSC::JSArray::JSArray): Initialize the full vector capacity, to avoid | |
| uninitialized members at the end. | |
| 2009-07-20 Geoffrey Garen <ggaren@apple.com> | |
| Windows WebKit build fix: Added some missing exports. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-07-17 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Get the branch working on windows. | |
| https://bugs.webkit.org/show_bug.cgi?id=27391 | |
| SunSpider says 0.3% faster. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Updated | |
| MSVC export lists to fix linker errors. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added / removed | |
| new / old project files. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): Used #pragma pack to tell | |
| MSVC that these structures represent actual memory layout, and should not be | |
| automatically aligned. Changed the return value load to load a 64bit quantity | |
| into the canonical registers. | |
| * jit/JIT.h: Moved OBJECT_OFFSETOF definition to StdLibExtras.h because | |
| it's needed by more than just the JIT, and it supplements a standard library | |
| macro (offsetof). | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallInitializeCallFrame): Fixed an incorrectly signed | |
| cast to resolve an MSVC warning. | |
| * jit/JITStubs.h: Used #pragma pack to tell MSVC that these structures | |
| represent actual memory layout, and should not be automatically aligned. | |
| * runtime/JSArray.cpp: | |
| (JSC::JSArray::JSArray): Replaced memset_pattern8 with a for loop, since | |
| memset_pattern8 is not portable. (I verified that this version of the loop | |
| gives the best performance / generated code in GCC.) | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::JSObject): Removed accidental usage of FIELD_OFFSET -- | |
| OBJECT_OFFSETOF is our new macro name. (FIELD_OFFSET conflicts with a | |
| definition in winnt.h.) | |
| * runtime/JSValue.cpp: Added some headers needed by non-all-in-one builds. | |
| * runtime/JSValue.h: | |
| (JSC::JSValue::): Made the tag signed, to match MSVC's signed enum values. | |
| (GCC doesn't seem to care one way or the other.) | |
| * wtf/MainThread.cpp: Moved the StdLibExtras.h #include -- I did this a | |
| while ago to resolve a conflict with winnt.h. I can't remember if it's truly | |
| still needed, but what the heck. | |
| * wtf/StdLibExtras.h: Moved OBJECT_OFFSETOF definition here. | |
| 2009-07-06 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig (?). | |
| Fixed an assertion seen during the stress test. | |
| Don't assume that, if op1 is constant, op2 is not, and vice versa. Sadly, | |
| not all constants get folded. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_jnless): | |
| (JSC::JIT::emitSlow_op_jnless): | |
| (JSC::JIT::emit_op_jnlesseq): | |
| (JSC::JIT::emitSlow_op_jnlesseq): | |
| 2009-07-06 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Include op_convert_this in result caching. | |
| No change on SunSpider or v8. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_convert_this): | |
| * jit/JITStubs.cpp: | |
| (JSC::DEFINE_STUB_FUNCTION): | |
| * jit/JITStubs.h: | |
| (JSC::): Made the op_convert_this JIT stub return an EncodedJSValue, so | |
| to maintain the result caching contract that { tag, payload } can be | |
| found in { regT1, regT0 }. | |
| 2009-07-06 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Implemented result chaining. | |
| 1% faster on SunSpider. 4%-5% faster on v8. | |
| * assembler/MacroAssemblerX86Common.h: | |
| (JSC::MacroAssemblerX86Common::move): | |
| * assembler/X86Assembler.h: | |
| (JSC::X86Assembler::movl_rr): Added an optimization to eliminate | |
| no-op mov instructions, to simplify chaining. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::JIT): | |
| * jit/JIT.h: Added data members and helper functions for recording | |
| chained results. We record both a mapping from virtual to machine register | |
| and the opcode for which the mapping is valid, to help ensure that the | |
| mapping isn't used after the mapped register has been stomped by other | |
| instructions. | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallVarargs): | |
| (JSC::JIT::compileOpCallVarargsSlowCase): | |
| (JSC::JIT::emit_op_ret): | |
| (JSC::JIT::emit_op_construct_verify): | |
| (JSC::JIT::compileOpCall): | |
| (JSC::JIT::compileOpCallSlowCase): Chain function call results. | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::emitLoadTag): | |
| (JSC::JIT::emitLoadPayload): | |
| (JSC::JIT::emitLoad): | |
| (JSC::JIT::emitLoad2): | |
| (JSC::JIT::isLabeled): | |
| (JSC::JIT::map): | |
| (JSC::JIT::unmap): | |
| (JSC::JIT::isMapped): | |
| (JSC::JIT::getMappedPayload): | |
| (JSC::JIT::getMappedTag): Use helper functions when loading virtual | |
| registers into machine registers, in case the loads can be eliminated | |
| by chaining. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_mov): | |
| (JSC::JIT::emit_op_end): | |
| (JSC::JIT::emit_op_instanceof): | |
| (JSC::JIT::emit_op_get_global_var): | |
| (JSC::JIT::emit_op_put_global_var): | |
| (JSC::JIT::emit_op_get_scoped_var): | |
| (JSC::JIT::emit_op_put_scoped_var): | |
| (JSC::JIT::emit_op_to_primitive): | |
| (JSC::JIT::emit_op_resolve_global): | |
| (JSC::JIT::emit_op_jneq_ptr): | |
| (JSC::JIT::emit_op_next_pname): | |
| (JSC::JIT::emit_op_to_jsnumber): | |
| (JSC::JIT::emit_op_catch): Chain results from these opcodes. | |
| (JSC::JIT::emit_op_profile_will_call): | |
| (JSC::JIT::emit_op_profile_did_call): Load the profiler into regT2 to | |
| avoid stomping a chained result. | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emit_op_method_check): | |
| (JSC::JIT::emit_op_get_by_val): | |
| (JSC::JIT::emit_op_get_by_id): Chain results from these opcodes. | |
| * jit/JITStubCall.h: | |
| (JSC::JITStubCall::addArgument): Always use { regT1, regT0 }, to facilitate | |
| chaining. | |
| (JSC::JITStubCall::call): Unmap all mapped registers, since our callee | |
| stub might stomp them. | |
| 2009-07-01 Sam Weinig <sam@webkit.org> | |
| Reviewed by Gavin Barraclough. | |
| Don't reload values in emitBinaryDoubleOp. | |
| SunSpider reports a 0.6% progression. | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_jnless): | |
| (JSC::JIT::emit_op_jnlesseq): | |
| (JSC::JIT::emitBinaryDoubleOp): | |
| 2009-07-01 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Convert op_div to load op1 and op2 up front. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_div): | |
| 2009-07-01 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Don't emit code in emitBinaryDoubleOp if code is unreachable, observable | |
| via an empty (unlinked) jumplist passed in. This only effects op_jnless | |
| and op_jnlesseq at present. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitSlow_op_jnless): | |
| (JSC::JIT::emitSlow_op_jnlesseq): | |
| (JSC::JIT::emitBinaryDoubleOp): | |
| 2009-07-01 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Converted op_mod to put { tag, payload } in { regT1, regT0 }, and | |
| tidied up its constant case. | |
| SunSpider reports a 0.2% regression, but a micro-benchmark of op_mod | |
| shows a 12% speedup, and the SunSpider test that uses op_mod most should | |
| benefit a lot from result caching in the end, since it almost always | |
| performs (expression) % constant. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_mod): | |
| (JSC::JIT::emitSlow_op_mod): | |
| 2009-06-30 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Converted some more arithmetic ops to put { tag, payload } in | |
| { regT1, regT0 }. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_mul): | |
| (JSC::JIT::emitSlow_op_mul): | |
| 2009-06-30 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Converted some more arithmetic ops to put { tag, payload } in | |
| { regT1, regT0 }, and added a case for subtract constant. | |
| SunSpider says no change. v8 says 0.3% slower. | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_add): | |
| (JSC::JIT::emitAdd32Constant): | |
| (JSC::JIT::emitSlow_op_add): | |
| (JSC::JIT::emit_op_sub): | |
| (JSC::JIT::emitSub32Constant): | |
| (JSC::JIT::emitSlow_op_sub): | |
| 2009-06-30 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| Remove more uses of addressFor(), load double constants directly from | |
| the constantpool in the CodeBlock, rather than from the register file. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitAdd32Constant): | |
| (JSC::JIT::emitBinaryDoubleOp): | |
| 2009-06-30 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Fixed a bug in postfix ops, where we would treat x = x++ and x = x-- | |
| as a no-op, even if x were not an int, and the ++/-- could have side-effects. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_post_inc): | |
| (JSC::JIT::emitSlow_op_post_inc): | |
| (JSC::JIT::emit_op_post_dec): | |
| (JSC::JIT::emitSlow_op_post_dec): | |
| 2009-06-30 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Converted some arithmetic ops to put { tag, payload } in | |
| { regT1, regT0 }. | |
| SunSpider says 0.7% faster. v8 says no change. | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_jnless): | |
| (JSC::JIT::emit_op_jnlesseq): | |
| (JSC::JIT::emit_op_lshift): | |
| (JSC::JIT::emit_op_rshift): | |
| (JSC::JIT::emit_op_bitand): | |
| (JSC::JIT::emit_op_bitor): | |
| (JSC::JIT::emit_op_bitxor): | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::isOperandConstantImmediateInt): | |
| (JSC::JIT::getOperandConstantImmediateInt): | |
| 2009-06-30 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| Start removing cases of addressFor(). | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitAdd32Constant): | |
| (JSC::JIT::emitBinaryDoubleOp): | |
| (JSC::JIT::emit_op_div): | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::emitLoadDouble): | |
| (JSC::JIT::emitLoadInt32ToDouble): | |
| (JSC::JIT::emitStoreDouble): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_jfalse): | |
| (JSC::JIT::emit_op_jtrue): | |
| 2009-06-30 Geoffrey Garen <ggaren@apple.com> | |
| Rolled back in my last patch with regression fixed. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileSlowCases): | |
| * jit/JIT.h: | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_loop_if_less): | |
| (JSC::JIT::emit_op_loop_if_lesseq): | |
| (JSC::JIT::emit_op_resolve_global): | |
| (JSC::JIT::emitSlow_op_resolve_global): | |
| (JSC::JIT::emit_op_eq): | |
| (JSC::JIT::emitSlow_op_eq): | |
| (JSC::JIT::emit_op_neq): | |
| (JSC::JIT::emitSlow_op_neq): | |
| 2009-06-30 Geoffrey Garen <ggaren@apple.com> | |
| Rolled out my last patch because it was a 2% SunSpider regression. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileSlowCases): | |
| * jit/JIT.h: | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_loop_if_less): | |
| (JSC::JIT::emit_op_loop_if_lesseq): | |
| (JSC::JIT::emit_op_resolve_global): | |
| (JSC::JIT::emit_op_eq): | |
| (JSC::JIT::emitSlow_op_eq): | |
| (JSC::JIT::emit_op_neq): | |
| (JSC::JIT::emitSlow_op_neq): | |
| 2009-06-30 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Gavin "Sam Weinig" Barraclough. | |
| Standardized the rest of our opcodes to put { tag, payload } in | |
| { regT1, regT0 } where possible. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileSlowCases): | |
| * jit/JIT.h: | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_loop_if_less): | |
| (JSC::JIT::emit_op_loop_if_lesseq): | |
| (JSC::JIT::emit_op_resolve_global): | |
| (JSC::JIT::emitSlow_op_resolve_global): | |
| (JSC::JIT::emit_op_eq): | |
| (JSC::JIT::emitSlow_op_eq): | |
| (JSC::JIT::emit_op_neq): | |
| (JSC::JIT::emitSlow_op_neq): | |
| 2009-06-30 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoffrey Garen. | |
| Replace calls to store32(tagFor()) and store32(payloadFor()) | |
| with emitStoreInt32(), emitStoreBool(), and emitStoreCell(). | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_negate): | |
| (JSC::JIT::emit_op_lshift): | |
| (JSC::JIT::emit_op_rshift): | |
| (JSC::JIT::emit_op_bitand): | |
| (JSC::JIT::emitBitAnd32Constant): | |
| (JSC::JIT::emit_op_bitor): | |
| (JSC::JIT::emitBitOr32Constant): | |
| (JSC::JIT::emit_op_bitxor): | |
| (JSC::JIT::emitBitXor32Constant): | |
| (JSC::JIT::emit_op_bitnot): | |
| (JSC::JIT::emit_op_post_inc): | |
| (JSC::JIT::emit_op_post_dec): | |
| (JSC::JIT::emit_op_pre_inc): | |
| (JSC::JIT::emit_op_pre_dec): | |
| (JSC::JIT::emit_op_add): | |
| (JSC::JIT::emitAdd32Constant): | |
| (JSC::JIT::emit_op_sub): | |
| (JSC::JIT::emitSub32ConstantLeft): | |
| (JSC::JIT::emitSub32ConstantRight): | |
| (JSC::JIT::emit_op_mul): | |
| (JSC::JIT::emitSlow_op_mul): | |
| (JSC::JIT::emit_op_div): | |
| (JSC::JIT::emit_op_mod): | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::emit_op_load_varargs): | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::emitStoreInt32): | |
| (JSC::JIT::emitStoreCell): | |
| (JSC::JIT::emitStoreBool): | |
| (JSC::JIT::emitStore): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_instanceof): | |
| (JSC::JIT::emit_op_not): | |
| (JSC::JIT::emit_op_eq): | |
| (JSC::JIT::emitSlow_op_eq): | |
| (JSC::JIT::emit_op_neq): | |
| (JSC::JIT::emitSlow_op_neq): | |
| (JSC::JIT::compileOpStrictEq): | |
| (JSC::JIT::emit_op_eq_null): | |
| (JSC::JIT::emit_op_neq_null): | |
| * jit/JITStubCall.h: | |
| (JSC::JITStubCall::call): | |
| 2009-06-30 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Standardized the rest of the property access instructions to put { tag, | |
| payload } in { regT1, regT0 }. | |
| Small v8 speedup, 0.2% SunSpider slowdown. | |
| * jit/JIT.h: | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::emitLoad): | |
| (JSC::JIT::emitLoad2): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emit_op_get_by_val): | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| (JSC::JIT::emit_op_put_by_val): | |
| (JSC::JIT::emitSlow_op_put_by_val): | |
| (JSC::JIT::emit_op_put_by_id): | |
| (JSC::JIT::emitSlow_op_put_by_id): | |
| (JSC::JIT::patchPutByIdReplace): | |
| 2009-06-29 Sam Weinig <sam@webkit.org> | |
| Reviewed by Gavin Barraclough. | |
| Various cleanups. | |
| - Use fpRegT* instead of X86::xmm*. | |
| - Use a switch statement in emitBinaryDoubleOp instead of a bunch of | |
| if/elses. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitAdd32Constant): | |
| (JSC::JIT::emitBinaryDoubleOp): | |
| (JSC::JIT::emit_op_div): | |
| 2009-06-29 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Add inline code dealing with doubles for op_jfalse and op_jtrue. | |
| * assembler/MacroAssemblerX86Common.h: | |
| (JSC::MacroAssemblerX86Common::): | |
| (JSC::MacroAssemblerX86Common::zeroDouble): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_jfalse): | |
| (JSC::JIT::emit_op_jtrue): | |
| 2009-06-28 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Standardized op_get_by_id to put { tag, payload } in { regT1, regT0 }. | |
| SunSpider and v8 report maybe 0.2%-0.4% regressions, but the optimization | |
| this enables will win much more than that back. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| * jit/JIT.h: | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emit_op_method_check): | |
| (JSC::JIT::emit_op_get_by_id): | |
| (JSC::JIT::compileGetByIdHotPath): | |
| (JSC::JIT::compileGetByIdSlowCase): | |
| (JSC::JIT::patchGetByIdSelf): | |
| (JSC::JIT::privateCompilePatchGetArrayLength): | |
| (JSC::JIT::privateCompileGetByIdProto): | |
| (JSC::JIT::privateCompileGetByIdSelfList): | |
| (JSC::JIT::privateCompileGetByIdProtoList): | |
| (JSC::JIT::privateCompileGetByIdChainList): | |
| (JSC::JIT::privateCompileGetByIdChain): | |
| 2009-06-26 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Standardized op_call to put { tag, payload } in { regT1, regT0 }. | |
| SunSpider and v8 report no change. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallInitializeCallFrame): | |
| (JSC::JIT::compileOpCallSetupArgs): | |
| (JSC::JIT::compileOpConstructSetupArgs): | |
| (JSC::JIT::compileOpCallVarargsSetupArgs): | |
| (JSC::JIT::compileOpCallVarargs): | |
| (JSC::JIT::compileOpCall): | |
| (JSC::JIT::compileOpCallSlowCase): | |
| 2009-06-26 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Handle multiplying by zero a little better by | |
| inlining the case that both operands are non-negative | |
| into the slowpath. | |
| * assembler/MacroAssemblerX86Common.h: | |
| (JSC::MacroAssemblerX86Common::branchOr32): | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_mul): | |
| (JSC::JIT::emitSlow_op_mul): | |
| 2009-06-25 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Optimize x++ to ++x inside for loops. | |
| Sadly, no measurable speedup, but this should help with result chaining. | |
| * parser/Nodes.cpp: | |
| (JSC::ForNode::emitBytecode): | |
| 2009-06-25 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitSlow_op_bitnot): | |
| (JSC::JIT::emit_op_post_inc): | |
| 2009-06-25 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_bitnot): | |
| (JSC::JIT::emit_op_post_dec): | |
| (JSC::JIT::emit_op_pre_inc): | |
| (JSC::JIT::emitSlow_op_pre_inc): | |
| (JSC::JIT::emit_op_pre_dec): | |
| (JSC::JIT::emitSlow_op_pre_dec): | |
| 2009-06-25 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_negate): | |
| (JSC::JIT::emitSlow_op_negate): | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::emit_op_construct_verify): | |
| (JSC::JIT::emitSlow_op_construct_verify): | |
| 2009-06-25 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_loop_if_true): | |
| (JSC::JIT::emit_op_jfalse): | |
| (JSC::JIT::emit_op_jtrue): | |
| (JSC::JIT::emit_op_jeq_null): | |
| (JSC::JIT::emit_op_jneq_null): | |
| (JSC::JIT::emit_op_eq_null): | |
| (JSC::JIT::emit_op_neq_null): | |
| 2009-06-25 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig (sort of, maybe). | |
| Fixed some ASSERTs in http/tests/security. | |
| These ASSERTs were introduced by http://trac.webkit.org/changeset/45057, | |
| but the underlying problem was actually older. http://trac.webkit.org/changeset/45057 | |
| just exposed the problem by enabling optimization in more cases. | |
| The ASSERTs fired because we tested PropertySlot::slotBase() for validity, | |
| but slotBase() ASSERTs if it's invalid, so we would ASSERT before | |
| the test could happen. Solution: Remove the ASSERT. Maybe it was valid | |
| once, but it clearly goes against a pattern we've deployed of late. | |
| The underlying problem was that WebCore would re-use a PropertySlot in | |
| the case of a forwarding access, and the second use would not completely | |
| overwrite the first use. Solution: Make sure to overwrite m_offset when | |
| setting a value on a PropertySlot. (Other values already get implicitly | |
| overwritten during reuse.) | |
| * runtime/PropertySlot.h: | |
| (JSC::PropertySlot::PropertySlot): | |
| (JSC::PropertySlot::setValueSlot): | |
| (JSC::PropertySlot::setValue): | |
| (JSC::PropertySlot::setRegisterSlot): | |
| (JSC::PropertySlot::setUndefined): | |
| (JSC::PropertySlot::slotBase): | |
| (JSC::PropertySlot::clearOffset): | |
| 2009-06-24 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Enable JIT_OPTIMIZE_METHOD_CALLS on the branch, implementation matches current implemenatation in ToT. | |
| * jit/JIT.h: | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emit_op_method_check): | |
| (JSC::JIT::emitSlow_op_method_check): | |
| (JSC::JIT::emit_op_get_by_id): | |
| (JSC::JIT::compileGetByIdHotPath): | |
| (JSC::JIT::emitSlow_op_get_by_id): | |
| (JSC::JIT::compileGetByIdSlowCase): | |
| 2009-06-23 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Bit off a tiny bit more of standardizing opcode behavior to help with result | |
| caching. | |
| SunSpider reports no change, v8 maybe a tiny speedup. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_to_jsnumber): | |
| (JSC::JIT::emitSlow_op_to_jsnumber): | |
| (JSC::JIT::emit_op_convert_this): | |
| (JSC::JIT::emitSlow_op_convert_this): | |
| 2009-06-23 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Bit off a tiny bit more of standardizing opcode behavior to help with result | |
| caching -- including removing my old enemy, op_resolve_function, because | |
| it was non-standard, and removing it felt better than helping it limp along. | |
| SunSpider reports no change, v8 maybe a tiny speedup. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::dump): | |
| * bytecode/Opcode.h: | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| * bytecompiler/BytecodeGenerator.h: | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): | |
| * jit/JIT.h: | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_get_scoped_var): | |
| (JSC::JIT::emit_op_put_scoped_var): | |
| (JSC::JIT::emit_op_to_primitive): | |
| (JSC::JIT::emitSlow_op_to_primitive): | |
| * jit/JITStubs.cpp: | |
| * jit/JITStubs.h: | |
| * parser/Nodes.cpp: | |
| (JSC::FunctionCallResolveNode::emitBytecode): | |
| 2009-06-23 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Bit off a tiny bit of standardizing opcode behavior to help with result | |
| caching. | |
| 0.6% SunSpider speedup. 0.3% v8 speedup. | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::emitLoad): Accomodate a base register that overlaps with payload | |
| by loading tag before payload, to avoid stomping base/payload. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_mov): Abide by the standard "tag in regT1, payload in | |
| regT0" semantics. | |
| (JSC::JIT::emit_op_get_global_var): | |
| (JSC::JIT::emit_op_put_global_var): Ditto. Also, removed some irrelevent | |
| loads while I was at it. The global object's "d" pointer never changes | |
| after construction. | |
| 2009-06-23 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| Remove 'arguments' field from Register union (again). | |
| This time do so without breaking tests (radical, I know). | |
| * interpreter/CallFrame.h: | |
| (JSC::ExecState::optionalCalleeArguments): | |
| (JSC::ExecState::setArgumentCount): | |
| (JSC::ExecState::init): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::dumpRegisters): | |
| (JSC::Interpreter::unwindCallFrame): | |
| (JSC::Interpreter::privateExecute): | |
| (JSC::Interpreter::retrieveArguments): | |
| * interpreter/Register.h: | |
| (JSC::Register::withInt): | |
| (JSC::Register::): | |
| (JSC::Register::Register): | |
| (JSC::Register::i): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITStubs::cti_op_tear_off_arguments): | |
| * runtime/Arguments.h: | |
| (JSC::JSActivation::copyRegisters): | |
| (JSC::Register::arguments): | |
| * runtime/JSActivation.cpp: | |
| (JSC::JSActivation::argumentsGetter): | |
| * runtime/JSActivation.h: | |
| 2009-06-23 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Removed some result register tracking cruft in preparation for a new | |
| result tracking mechanism. | |
| SunSpider reports no change. | |
| * assembler/AbstractMacroAssembler.h: | |
| * assembler/X86Assembler.h: | |
| (JSC::X86Assembler::JmpDst::JmpDst): No need to track jump targets in | |
| machine code; we already do this in bytecode. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::JIT): | |
| (JSC::JIT::emitTimeoutCheck): Make sure to save and restore the result | |
| registers, so an opcode with a timeout check can still benefit from result | |
| register caching. | |
| (JSC::JIT::privateCompileMainPass): | |
| (JSC::JIT::privateCompileSlowCases): Removed calls to killLastResultRegister() | |
| in preparation for something new. | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_jnless): | |
| (JSC::JIT::emit_op_jnlesseq): | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::emitGetFromCallFrameHeaderPtr): | |
| (JSC::JIT::emitGetFromCallFrameHeader32): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_jmp): | |
| (JSC::JIT::emit_op_jfalse): | |
| (JSC::JIT::emit_op_jtrue): | |
| (JSC::JIT::emit_op_jeq_null): | |
| (JSC::JIT::emit_op_jneq_null): | |
| (JSC::JIT::emit_op_jneq_ptr): | |
| (JSC::JIT::emit_op_jsr): | |
| (JSC::JIT::emit_op_sret): | |
| (JSC::JIT::emit_op_jmp_scopes): ditto | |
| * jit/JITStubCall.h: | |
| (JSC::JITStubCall::JITStubCall): | |
| (JSC::JITStubCall::getArgument): added a mechanism for reloading an argument | |
| you passed to a JIT stub, for use in emitTimeoutCheck. | |
| 2009-06-23 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Remove now-useless inplace variants of binary ops. | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_bitand): | |
| (JSC::JIT::emit_op_bitor): | |
| (JSC::JIT::emit_op_bitxor): | |
| (JSC::JIT::emit_op_add): | |
| (JSC::JIT::emit_op_sub): | |
| (JSC::JIT::emit_op_mul): | |
| 2009-06-23 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Move off memory operands to aid in re-enabling result caching. | |
| - No regression measured. | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_negate): | |
| (JSC::JIT::emit_op_jnless): | |
| (JSC::JIT::emit_op_jnlesseq): | |
| (JSC::JIT::emit_op_lshift): | |
| (JSC::JIT::emit_op_rshift): | |
| (JSC::JIT::emit_op_bitand): | |
| (JSC::JIT::emitBitAnd32Constant): | |
| (JSC::JIT::emitBitAnd32InPlace): | |
| (JSC::JIT::emit_op_bitor): | |
| (JSC::JIT::emitBitOr32Constant): | |
| (JSC::JIT::emitBitOr32InPlace): | |
| (JSC::JIT::emit_op_bitxor): | |
| (JSC::JIT::emitBitXor32Constant): | |
| (JSC::JIT::emitBitXor32InPlace): | |
| (JSC::JIT::emit_op_bitnot): | |
| (JSC::JIT::emit_op_post_inc): | |
| (JSC::JIT::emit_op_post_dec): | |
| (JSC::JIT::emit_op_pre_inc): | |
| (JSC::JIT::emitSlow_op_pre_inc): | |
| (JSC::JIT::emit_op_pre_dec): | |
| (JSC::JIT::emitSlow_op_pre_dec): | |
| (JSC::JIT::emit_op_add): | |
| (JSC::JIT::emitAdd32Constant): | |
| (JSC::JIT::emitAdd32InPlace): | |
| (JSC::JIT::emitSlow_op_add): | |
| (JSC::JIT::emitSlowAdd32Constant): | |
| (JSC::JIT::emit_op_sub): | |
| (JSC::JIT::emitSlow_op_sub): | |
| (JSC::JIT::emitSub32ConstantLeft): | |
| (JSC::JIT::emitSub32ConstantRight): | |
| (JSC::JIT::emitSub32InPlaceLeft): | |
| (JSC::JIT::emitSub32InPlaceRight): | |
| (JSC::JIT::emitBinaryDoubleOp): | |
| (JSC::JIT::emit_op_mul): | |
| (JSC::JIT::emitMul32InPlace): | |
| (JSC::JIT::emit_op_div): | |
| (JSC::JIT::emit_op_mod): | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallVarargs): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_loop_if_less): | |
| (JSC::JIT::emit_op_loop_if_lesseq): | |
| (JSC::JIT::emit_op_instanceof): | |
| (JSC::JIT::emit_op_to_primitive): | |
| (JSC::JIT::emit_op_not): | |
| (JSC::JIT::emit_op_jneq_ptr): | |
| (JSC::JIT::emit_op_eq): | |
| (JSC::JIT::emit_op_neq): | |
| (JSC::JIT::emit_op_to_jsnumber): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emit_op_get_by_val): | |
| (JSC::JIT::emit_op_put_by_val): | |
| 2009-06-23 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Fixed some missing and/or misplaced labels in bytecode generation, so | |
| we don't have to work around them in JIT code generation. | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitJumpSubroutine): | |
| * parser/Nodes.cpp: | |
| (JSC::TryNode::emitBytecode): | |
| 2009-06-22 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| For member function calls, emit "this" directly into the "this" slot | |
| for the function call, instead of moving it there later. This reduces | |
| time spent in op_mov during certain calls, like "a.b.c()". | |
| 1%-2% speedup on v8, mostly richards and delta-blue. | |
| * parser/Nodes.cpp: | |
| (JSC::FunctionCallDotNode::emitBytecode): | |
| 2009-06-22 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| Remove 'arguments' field from Register union. Having JSCell derived types in the union is | |
| dangerous since it opens the possibility for the field to be written as a raw pointer but | |
| then read as a JSValue. This will lead to statle data being read for the tag, which may | |
| be dangerous. Having removed Arguments* types form Register, all arguments objects must | |
| always explicitly be stored in the register file as JSValues. | |
| * interpreter/CallFrame.h: | |
| (JSC::ExecState::optionalCalleeArguments): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::unwindCallFrame): | |
| (JSC::Interpreter::privateExecute): | |
| (JSC::Interpreter::retrieveArguments): | |
| * interpreter/Register.h: | |
| (JSC::Register::): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITStubs::cti_op_tear_off_arguments): | |
| * runtime/Arguments.h: | |
| (JSC::JSActivation::copyRegisters): | |
| * runtime/JSActivation.cpp: | |
| (JSC::JSActivation::argumentsGetter): | |
| * runtime/JSActivation.h: | |
| 2009-06-03 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Add back known this value optimization by abstracting | |
| slow case if not JSCell jumps. | |
| * jit/JIT.h: | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallVarargs): | |
| (JSC::JIT::compileOpCallVarargsSlowCase): | |
| (JSC::JIT::compileOpCall): | |
| (JSC::JIT::compileOpCallSlowCase): | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::emitJumpSlowCaseIfNotJSCell): | |
| (JSC::JIT::linkSlowCaseIfNotJSCell): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_instanceof): | |
| (JSC::JIT::emitSlow_op_instanceof): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emit_op_get_by_val): | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| (JSC::JIT::emit_op_put_by_val): | |
| (JSC::JIT::emitSlow_op_put_by_val): | |
| (JSC::JIT::emit_op_get_by_id): | |
| (JSC::JIT::emitSlow_op_get_by_id): | |
| (JSC::JIT::emit_op_put_by_id): | |
| (JSC::JIT::emitSlow_op_put_by_id): | |
| 2009-06-01 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Fixed some of the regression in crypto-aes.js. (8.5% speedup in | |
| crypto-aes.js.) | |
| SunSpider reports no change overall. | |
| Division was producing double results, which took the slow path through | |
| array access code. | |
| Strangely, all my attempts at versions of this patch that modified array | |
| access code to accept ints encoded as doubles along the fast or slow paths | |
| were regressions. So I did this instead. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_div): When dividing an int by an int, go ahead and try | |
| to turn the result into an int. Don't just do int division, though, because | |
| testing shows it to be slower than SSE double division, and the corner | |
| cases are pretty complicated / lengthy on top of that. Also, don't try | |
| to canonicalize division of known tiny numerators into ints, since that's a | |
| waste of time. | |
| 2009-05-26 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Fixed a regression caused by my recent fix for NaN. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitBinaryDoubleOp): Actually do the comparison in reverse | |
| order, like the ChangeLog said we would, bokay? | |
| 2009-05-26 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig and Oliver Hunt. | |
| Fixed two edge cases in %: | |
| - Don't do -2147483648 % x as a fast case, since you might do -2147483648 % -1, | |
| which will signal a hardware exception due to overflow. | |
| - In the case of a zero remainder, be sure to store negative zero if the | |
| dividend was zero. | |
| SunSpider reports no change. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_mod): | |
| (JSC::JIT::emitSlow_op_mod): | |
| 2009-05-25 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Fixed a regression when comparing to NaN. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitBinaryDoubleOp): For op_jnless and op_jnless_eq, do the | |
| comparison in reverse order, and jump if the result is below or | |
| below-or-equal. This ensures that we do jump in the case of NaN. | |
| 2009-05-25 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| SunSpider says no change. | |
| Fixed regressions in fast/js/var-declarations-shadowing.html and | |
| fast/js/equality.html, caused by recent == and != optimizations. | |
| * jit/JITStubs.cpp: | |
| (JSC::JITStubs::cti_op_eq): Don't treat "compare to string" as always | |
| numeric or string comparison. If the second operand is an object, you | |
| need to ToPrimitive it, and start all over again. Also, I wrote out each | |
| of the possible cases explicitly, to cut down on redundant branching. | |
| 2009-05-25 Sam Weinig <sam@webkit.org> | |
| Reviewed by Mark Rowe. | |
| Fix bug in fast/js/constant-folding.html where we were not negating | |
| -0 properly. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_negate): | |
| 2009-05-23 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Refactored new slow case codegen for == and !=. | |
| SunSpider reports no change, maybe a tiny speedup. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emitSlow_op_eq): | |
| (JSC::JIT::emitSlow_op_neq): Made a vptr comparison a *Ptr operation, | |
| instead of *32, to make it portable to 64bit. Reorganized the string | |
| and generic cases to make their control flow a little clearer. | |
| 2009-05-23 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| Optimized == and != for our new value representation -- especially for strings. | |
| 14% speedup on date-format-tofte. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_eq): | |
| (JSC::JIT::emitSlow_op_eq): | |
| (JSC::JIT::emit_op_neq): | |
| (JSC::JIT::emitSlow_op_neq): | |
| * jit/JITStubCall.h: | |
| (JSC::JITStubCall::JITStubCall): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITStubs::cti_op_eq): | |
| (JSC::JITStubs::cti_op_eq_strings): | |
| (JSC::JITStubs::cti_op_call_eval): | |
| * jit/JITStubs.h: | |
| (JSC::): | |
| * runtime/JSValue.h: | |
| 2009-05-22 Sam Weinig <sam@webkit.org> | |
| Reviewed by Gavin Barraclough. | |
| Fix non-SSE enabled builds. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitSlow_op_add): Don't early return here, we still need to call the JIT stub. | |
| (JSC::JIT::emitSlow_op_sub): Ditto. | |
| 2009-05-22 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Here's a thought: let's not take a jit stub call just to multiply by 1, | |
| bokay? | |
| imul doesn't set the zero flag, so to test for a zero result, we need | |
| an explicit instruction. (Luckily, it does set the overflow flag, so | |
| we can still use that.) | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_mul): | |
| (JSC::JIT::emitSlow_op_mul): | |
| (JSC::JIT::emitMul32InPlace): | |
| 2009-05-22 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey "Premature Commit" Garen. | |
| Add back constant integer cases for op_add. | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_add): | |
| (JSC::JIT::emitAdd32Constant): | |
| (JSC::JIT::emitSlow_op_add): | |
| (JSC::JIT::emitSlowAdd32Constant): | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::getConstantOperandImmediateDouble): | |
| (JSC::JIT::isOperandConstantImmediateDouble): | |
| 2009-05-22 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Added fast double cases for op_jnless and op_jnlesseq. | |
| * assembler/AbstractMacroAssembler.h: | |
| (JSC::AbstractMacroAssembler::JumpList::jumps): New accesor, used by | |
| addSlowCase. | |
| * assembler/X86Assembler.h: | |
| (JSC::X86Assembler::ucomisd_rm): New method for comparing register to | |
| memory. | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_jnless): | |
| (JSC::JIT::emitSlow_op_jnless): | |
| (JSC::JIT::emit_op_jnlesseq): | |
| (JSC::JIT::emitSlow_op_jnlesseq): | |
| (JSC::JIT::emit_op_add): | |
| (JSC::JIT::emit_op_sub): | |
| (JSC::JIT::emitBinaryDoubleOp): | |
| (JSC::JIT::emit_op_mul): | |
| (JSC::JIT::emit_op_div): Modified emitBinaryDoubleOp to accept comparison/jump | |
| operations in addition to operations with explicit result registers. | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::addSlowCase): Added an "addSlowCase" for JumpLists, so clients | |
| can track multiple jumps to the same slow case condition together. | |
| 2009-05-21 Sam Weinig <sam@webkit.org> | |
| Reviewed by Gavin Barraclough. | |
| Implement op_negate inline fast cases. | |
| * assembler/MacroAssemblerX86Common.h: | |
| (JSC::MacroAssemblerX86Common::neg32): | |
| * assembler/X86Assembler.h: | |
| (JSC::X86Assembler::): | |
| (JSC::X86Assembler::negl_m): | |
| (JSC::X86Assembler::xorpd_rr): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): | |
| (JSC::JIT::privateCompileSlowCases): | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_negate): | |
| (JSC::JIT::emitSlow_op_negate): | |
| 2009-05-20 Sam Weinig <sam@webkit.org> | |
| Reviewed by Gavin Barraclough. | |
| Update the patchOffsetGetByIdSlowCaseCall constant for the | |
| case that OPCODE_SAMPLING is enabled. | |
| * jit/JIT.h: | |
| 2009-05-20 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Added support for inline subtraction of doubles. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_sub): | |
| (JSC::JIT::emitSlow_op_sub): | |
| (JSC::JIT::emitSlowSub32InPlaceLeft): | |
| (JSC::JIT::emitBinaryDoubleOp): | |
| 2009-05-20 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Added support for inline division. | |
| * assembler/X86Assembler.h: | |
| (JSC::X86Assembler::): | |
| (JSC::X86Assembler::divsd_rr): | |
| (JSC::X86Assembler::divsd_mr): | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::dump): | |
| * bytecode/Opcode.h: | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitBinaryOp): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): | |
| (JSC::JIT::privateCompileSlowCases): | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitBinaryDoubleOp): | |
| (JSC::JIT::emit_op_div): | |
| (JSC::JIT::emitSlow_op_div): | |
| 2009-05-20 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Added support for inline addition of doubles. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_add): | |
| (JSC::JIT::emitSlow_op_add): | |
| (JSC::JIT::emitSlowAdd32InPlace): | |
| (JSC::JIT::emitBinaryDoubleOp): | |
| (JSC::JIT::emit_op_mul): | |
| (JSC::JIT::emitSlow_op_mul): | |
| 2009-05-20 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Factored inline double operations into a helper function, so that we | |
| can reuse this code for other math operations. | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitBinaryDoubleOp): | |
| (JSC::JIT::emit_op_mul): | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallInitializeCallFrame): | |
| 2009-05-20 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Added support for inline multiplication of doubles. | |
| * assembler/X86Assembler.h: | |
| (JSC::X86Assembler::cvtsi2sd_mr): New function, useful for loading an | |
| int32 into a double register. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_mul): | |
| (JSC::JIT::emitSlow_op_mul): Filled out these cases for double arithmetic. | |
| * jit/JIT.h: | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::addressFor): New function, useful for addressing a JSValue's | |
| full 64bits as a double. | |
| 2009-05-19 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Implement and enable optimized calls. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): Add ENABLE(JIT_OPTIMIZE_CALL) guards | |
| around the the optimize call only trampolines (virtualCallPreLink and virtualCallLink). | |
| Update the trampolines to account for the new JSValue representation. | |
| (JSC::JIT::unlinkCall): Use NULL instead of JSValue noValue. | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCall): Update to account for the new JSValue representation | |
| (JSC::JIT::compileOpCallSlowCase): Ditto. | |
| * jit/JITStubs.h: Remove incorrect !ENABLE(JIT_OPTIMIZE_CALL) guard. | |
| * wtf/Platform.h: Enable ENABLE_JIT_OPTIMIZE_CALL. | |
| 2009-05-19 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Implement and enable optimized property access. | |
| * assembler/AbstractMacroAssembler.h: Fix comment. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): Remove array length trampoline | |
| and implement the string length trampoline. | |
| * jit/JIT.h: Add new constants for patch offsets. | |
| * jit/JITInlineMethods.h: Remove FIELD_OFFSET which is now in StdLibExtras.h. | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emit_op_get_by_id): | |
| (JSC::JIT::emitSlow_op_get_by_id): | |
| (JSC::JIT::emit_op_put_by_id): | |
| (JSC::JIT::emitSlow_op_put_by_id): | |
| (JSC::JIT::compilePutDirectOffset): | |
| (JSC::JIT::compileGetDirectOffset): | |
| (JSC::JIT::privateCompilePutByIdTransition): | |
| (JSC::JIT::patchGetByIdSelf): | |
| (JSC::JIT::patchPutByIdReplace): | |
| (JSC::JIT::privateCompilePatchGetArrayLength): | |
| (JSC::JIT::privateCompileGetByIdProto): | |
| (JSC::JIT::privateCompileGetByIdSelfList): | |
| (JSC::JIT::privateCompileGetByIdProtoList): | |
| (JSC::JIT::privateCompileGetByIdChainList): | |
| (JSC::JIT::privateCompileGetByIdChain): | |
| * jit/JITStubCall.h: | |
| (JSC::JITStubCall::addArgument): Add version of addArgument that takes | |
| two registers for the tag and payload. | |
| * jit/JITStubs.cpp: | |
| (JSC::JITStubs::JITStubs): Remove array length trampoline pointer. | |
| (JSC::JITStubs::cti_op_get_by_id_self_fail): | |
| * jit/JITStubs.h: | |
| * runtime/JSObject.h: | |
| (JSC::JSObject::JSObject): Move m_inheritorID below the property storage | |
| to align it to a 16 byte boundary. | |
| * wtf/Platform.h: Enable ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS | |
| * wtf/StdLibExtras.h: Move FIELD_OFFSET here. | |
| 2009-05-17 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Remove unneeded ExecState parameter from the number JSValue constructors. | |
| * runtime/JSValue.h: | |
| (JSC::jsNumber): | |
| (JSC::jsNaN): | |
| (JSC::JSValue::JSValue): | |
| 2009-05-15 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Implemented fast path for op_put_by_val when putting to arrays. | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emit_op_put_by_val): | |
| (JSC::JIT::emitSlow_op_put_by_val): | |
| 2009-05-15 Geoffrey Garen <ggaren@apple.com> (Mostly by Sam) | |
| Reviewed by Sam Weinig. | |
| Implemented fast path for op_get_by_val when accessing array. | |
| * jit/JIT.cpp: | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emit_op_get_by_val): | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| 2009-05-14 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Fixed a failure in fast/js/math-transforms.html caused by failing to | |
| preserve -0 in multiplication. | |
| * assembler/X86Assembler.h: | |
| (JSC::X86Assembler::jz): | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_mul): | |
| (JSC::JIT::emitSlow_op_mul): | |
| (JSC::JIT::emitMul32Constant): | |
| (JSC::JIT::emitMul32InPlace): Check both for overflow and for zero when | |
| doing multiplication. Use a slow case to get these right. | |
| 2009-05-14 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Fixed a bug in the varargs calling convention. | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallVarargs): Move the argument count into regT1, | |
| since that's where ctiVirtualCall expects it to be. | |
| 2009-05-14 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Fixed a small bug in instanceof's looping code. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_instanceof): NULL means the object has no prototype, | |
| so only loop when *not* equal to NULL. | |
| 2009-05-14 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Fixed a small bug in instanceof's result writing code. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_instanceof): Make sure to fill out the payload bits | |
| in all cases. | |
| 2009-05-14 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Removed an invalid assertion in cti_op_urshift which | |
| depended on a fast path for op_urshift which has | |
| never existed. | |
| * jit/JITStubs.cpp: | |
| (JSC::JITStubs::cti_op_urshift): | |
| 2009-05-14 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Fixed loop_if_true, which had the same reversed test that jtrue had. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_loop_if_true): | |
| 2009-05-14 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| In op_neq, we apparently want to check that one value | |
| does *not* equal another. Go figure. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_neq): | |
| 2009-05-14 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| The slow case of op_mod should call op_mod's jit stub, | |
| not op_mul. That would be dumb. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitSlow_op_mod): | |
| 2009-05-14 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Fixed problems when using 'arguments' due to a half-initialized register. | |
| * interpreter/CallFrame.h: | |
| (JSC::ExecState::setCalleeArguments): | |
| (JSC::ExecState::init): Require a full JSValue when setting up the | |
| 'arguments' virtual register, since this register is accessible from JIT | |
| code and bytecode, and needs to be a true JSValue. | |
| * interpreter/CallFrameClosure.h: | |
| (JSC::CallFrameClosure::resetCallFrame): ditto | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): ditto | |
| * interpreter/Register.h: Removed the constructor that allowed assignment | |
| of a JSArguments* to a register. That is not safe. See above. | |
| * jit/JITStubs.cpp: | |
| (JSC::JITStubs::cti_op_create_arguments): | |
| (JSC::JITStubs::cti_op_create_arguments_no_params): ditto | |
| 2009-05-14 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| We really want to go to the slow case in op_jfalse and | |
| op_jtrue if the value is *not* boolean. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_jfalse): | |
| (JSC::JIT::emit_op_jtrue): | |
| 2009-05-14 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Flipped the condition when emitting a an op_loop_if_less or op_loop_if_lesseq | |
| if the first operand is a constant. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_loop_if_less): | |
| (JSC::JIT::emit_op_loop_if_lesseq): | |
| 2009-05-14 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Added missing return in op_jnless and op_jnlesseq. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_jnless): | |
| (JSC::JIT::emit_op_jnlesseq): | |
| 2009-05-14 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Load constants into the the register file as a temporary measure to | |
| aid bring up. This allows us to use to treat constants like any | |
| other virtual register. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_enter): | |
| (JSC::JIT::emit_op_enter_with_activation): | |
| 2009-05-14 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Implemented op_strict_eq. Original patch by Snowy, by way of Sam and Gavin. | |
| * assembler/MacroAssemblerX86Common.h: | |
| (JSC::MacroAssemblerX86Common::set8): Added set8, since it's slightly | |
| faster than set32, and the new value representation usually doesn't | |
| need set32. | |
| * jit/JIT.cpp: | |
| * jit/JIT.h: | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::emitLoadTag): | |
| (JSC::JIT::emitLoadPayload): Added helper functions for dealing with | |
| constants. Eventually, we should write special cases for all constants, | |
| but these are helpful in the short term. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::compileOpStrictEq): | |
| (JSC::JIT::emitSlow_op_stricteq): | |
| (JSC::JIT::emitSlow_op_nstricteq): teh opcodez. | |
| * runtime/JSValue.h: | |
| (JSC::JSValue::): | |
| (JSC::JSValue::isDouble): Added a LowestTag for clarity. | |
| 2009-05-13 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Fixed some bugs in host function calls. | |
| testapi now passes! | |
| * jit/JIT.cpp: Changed some registers around to avoid overwriting edx:eax, | |
| which is how JSValues are now returned. Also changed the code that | |
| passes thisValue to pass the full 64bits of the value. Also added | |
| an #error compiler directive to other platform builds, since the JSValue | |
| return signature probably won't return in edx:eax on those platforms, | |
| and we'll have to investigate a solution. | |
| 2009-05-13 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Removed parameters from functions that are intended never to use their | |
| parameters. | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| (JSC::JIT::emitSlow_op_put_by_val): | |
| 2009-05-13 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Ported op_instance_of from TOT. It's basically the same, but some register | |
| stuff changed to memory stuff. | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::emitPutJITStubArgFromVirtualRegister): | |
| (JSC::JIT::emitStore): Changed to use helper functions. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_instanceof): | |
| (JSC::JIT::emitSlow_op_instanceof): Ported from TOT. | |
| 2009-05-13 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Added a comment to explain an exception-handling subtelty that we found | |
| hard to remember when reviewing my last patch. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_catch): | |
| 2009-05-13 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Implemented try/catch. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_throw): Updated to use JITStackFrame abstraction. | |
| (JSC::JIT::emit_op_catch): Filled out. | |
| 2009-05-13 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Implemented op_loop_if_true, op_jfalse, op_jtrue, op_jeq_null and op_jneq_null | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emitSlow_op_instanceof): Moved from below to be next to its | |
| fast brother. | |
| (JSC::JIT::emit_op_loop_if_true): Similar to the old version | |
| in that it tries to do the integer case first and reduce the | |
| number of jumps you might need to take. | |
| (JSC::JIT::emitSlow_op_loop_if_true): | |
| (JSC::JIT::emit_op_jfalse): Very similar to op_loop_if_true, only | |
| the inverse and without a timeout check. | |
| (JSC::JIT::emitSlow_op_jfalse): | |
| (JSC::JIT::emit_op_jtrue): Very similar to op_loop_if_true except | |
| without the timeout check. | |
| (JSC::JIT::emitSlow_op_jtrue): | |
| (JSC::JIT::emit_op_jeq_null): Very similar to the implementation | |
| of op_eq, except it takes jumps instead of copying the condition | |
| to a dst. | |
| (JSC::JIT::emit_op_jneq_null): Ditto but for op_neq. | |
| 2009-05-13 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Implemented op_call_varargs. | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallVarargsSetupArgs): | |
| (JSC::JIT::compileOpCallVarargs): | |
| (JSC::JIT::emit_op_call): | |
| (JSC::JIT::emit_op_call_eval): | |
| (JSC::JIT::emit_op_load_varargs): | |
| (JSC::JIT::emit_op_call_varargs): | |
| (JSC::JIT::emit_op_construct): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_jneq_ptr): | |
| 2009-05-13 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Implemented op_call_eval. | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallVarargsSetupArgs): | |
| (JSC::JIT::compileOpCall): | |
| * jit/JITStubCall.h: | |
| (JSC::CallEvalJITStub::CallEvalJITStub): | |
| 2009-05-13 Sam Weinig <sam@webkit.org> | |
| Reviewed by Gavin Barraclough. | |
| Implemented op_not. (Gavin did most of the work!) | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_not): | |
| (JSC::JIT::emitSlow_op_not): | |
| 2009-05-13 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Implemented op_global_resolve. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_loop_if_less): | |
| (JSC::JIT::emit_op_loop_if_lesseq): Added back accidentally removed | |
| early returns. | |
| (JSC::JIT::emit_op_resolve_global): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITStubs::cti_op_resolve_global): Pretty similar to the old code, | |
| but we need two reads and a TimesEight step in order to account for the | |
| 64bit value size. | |
| * jit/JITStubs.h: | |
| (JSC::): Slightly tweaked this code to specialize for a JSGlobalObject*, | |
| to avoid having to pass an irrelevant tag pointer to the stub. | |
| 2009-05-13 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Implemented op_to_jsnumber. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_to_jsnumber): | |
| (JSC::JIT::emitSlow_op_to_jsnumber): | |
| 2009-05-13 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Implemented op_convert_this. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_convert_this): | |
| (JSC::JIT::emitSlow_op_convert_this): | |
| 2009-05-13 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Got basic JS function and constructor calls working. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| * jit/JIT.h: | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallSetupArgs): | |
| (JSC::JIT::compileOpCallVarargsSetupArgs): | |
| (JSC::JIT::compileOpConstructSetupArgs): | |
| (JSC::JIT::emit_op_ret): | |
| (JSC::JIT::emit_op_construct_verify): | |
| (JSC::JIT::emitSlow_op_construct_verify): | |
| (JSC::JIT::emitSlow_op_call): | |
| (JSC::JIT::emitSlow_op_call_eval): | |
| (JSC::JIT::emitSlow_op_call_varargs): | |
| (JSC::JIT::emitSlow_op_construct): | |
| (JSC::JIT::compileOpCall): Filled out these cases, with call_eval #if'd out. | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::emitPutJITStubArgFromVirtualRegister): | |
| (JSC::JIT::emitLoad): Restored some legacy "*CTIArg*" functions, | |
| since I wanted to avoid the complexity of revamping the API here while | |
| trying to bring it up. Eventually, we should re-remove all of these functions. | |
| (JSC::JIT::recordJumpTarget): Removed unnecessary macro cruft. You will | |
| not silence me, Sam Weinig! The world will know that you are a crufty, | |
| crufty, crufty programmer!!! | |
| * jit/JITOpcodes.cpp: | |
| * jit/JITStubs.cpp: | |
| (JSC::): | |
| * jit/JITStubs.h: Changed up some offsets in the JITStackFrame class, since | |
| and off-by-one error was causing stack misalignment. | |
| 2009-05-13 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Implement op_eq_null and op_neq_null. | |
| * assembler/MacroAssemblerX86Common.h: | |
| (JSC::MacroAssemblerX86Common::set8): | |
| (JSC::MacroAssemblerX86Common::setTest8): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_stricteq): | |
| (JSC::JIT::emitSlow_op_stricteq): | |
| (JSC::JIT::emit_op_nstricteq): | |
| (JSC::JIT::emitSlow_op_nstricteq): | |
| (JSC::JIT::emit_op_eq_null): | |
| (JSC::JIT::emit_op_neq_null): | |
| * jsc.cpp: | |
| 2009-05-12 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Implement op_new_error. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_new_error): | |
| * jit/JITStubCall.h: | |
| (JSC::JITStubCall::addArgument): Add a version of addArgument | |
| that takes a constant JSValue. | |
| 2009-05-12 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Remove now unused emitGetVariableObjectRegister and emitPutVariableObjectRegister. | |
| * jit/JIT.cpp: | |
| * jit/JIT.h: | |
| 2009-05-12 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Implement op_to_primitive and op_next_pname. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emitSlow_op_construct_verify): | |
| (JSC::JIT::emit_op_to_primitive): | |
| (JSC::JIT::emitSlow_op_to_primitive): | |
| (JSC::JIT::emitSlow_op_loop_if_true): | |
| (JSC::JIT::emit_op_jtrue): | |
| (JSC::JIT::emit_op_next_pname): | |
| 2009-05-12 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Add op_get_global_var, op_put_global_var, emit_op_get_scoped_var, emit_op_put_scoped_var and | |
| op_unexpected_load. | |
| * jit/JIT.h: | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::tagFor): | |
| (JSC::JIT::payloadFor): | |
| (JSC::JIT::emitLoad): | |
| (JSC::JIT::emitStore): | |
| (JSC::JIT::emitLoadReturnValue): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_get_global_var): | |
| (JSC::JIT::emit_op_put_global_var): | |
| (JSC::JIT::emit_op_get_scoped_var): | |
| (JSC::JIT::emit_op_put_scoped_var): | |
| (JSC::JIT::emit_op_unexpected_load): | |
| 2009-05-12 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Added overflow handling to op_sub. | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitSlow_op_sub): | |
| (JSC::JIT::emitSlowSub32InPlaceLeft): | |
| 2009-05-12 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Remove a function call by folding op_get_by_id and op_put_by_id into | |
| their respective compile functions. | |
| * jit/JIT.h: | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emit_op_get_by_id): | |
| (JSC::JIT::emitSlow_op_get_by_id): | |
| (JSC::JIT::emit_op_put_by_id): | |
| (JSC::JIT::emitSlow_op_put_by_id): | |
| 2009-05-12 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Make JITStubCall work in 64bit by making the stack index | |
| step dependent on the size of void*. | |
| * jit/JITStubCall.h: | |
| (JSC::JITStubCall::JITStubCall): | |
| (JSC::JITStubCall::addArgument): | |
| 2009-05-12 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Implement simple version of property access opcodes | |
| which just call a stub functions. | |
| * jit/JITOpcodes.cpp: | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emitSlow_op_put_by_id): | |
| (JSC::JIT::emitSlow_op_get_by_id): | |
| (JSC::JIT::emit_op_get_by_val): | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| (JSC::JIT::emit_op_put_by_val): | |
| (JSC::JIT::emitSlow_op_put_by_val): | |
| (JSC::JIT::emit_op_put_by_index): | |
| (JSC::JIT::emit_op_put_getter): | |
| (JSC::JIT::emit_op_put_setter): | |
| (JSC::JIT::emit_op_del_by_id): | |
| (JSC::JIT::compileGetByIdHotPath): | |
| (JSC::JIT::compilePutByIdHotPath): | |
| * jit/JITStubCall.h: | |
| (JSC::JITStubCall::addArgument): | |
| * jsc.cpp: | |
| 2009-05-12 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Added work-around for XCode debugging echo problem. | |
| * jsc.cpp: | |
| (runInteractive): | |
| 2009-05-12 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Added overflow handling to op_add. | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitSlow_op_add): | |
| (JSC::JIT::emitSlowAdd32InPlace): | |
| 2009-05-12 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Add slow cases for op_jnless or emit_op_jnlesseq. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitSlow_op_jnless): | |
| (JSC::JIT::emitSlow_op_jnlesseq): | |
| 2009-05-12 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Add implementations for op_jnless, emit_op_jnlesseq, op_loop_if_less and op_loop_if_lesseq. | |
| No slow cases for op_jnless or emit_op_jnlesseq yet. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_jnless): | |
| (JSC::JIT::emitSlow_op_jnless): | |
| (JSC::JIT::emit_op_jnlesseq): | |
| (JSC::JIT::emitSlow_op_jnlesseq): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_loop_if_less): | |
| (JSC::JIT::emitSlow_op_loop_if_less): | |
| (JSC::JIT::emit_op_loop_if_lesseq): | |
| (JSC::JIT::emitSlow_op_loop_if_lesseq): | |
| 2009-05-12 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Turn the RECORD_JUMP_TARGET macro into an inline function. | |
| * jit/JIT.h: | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::recordJumpTarget): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_jmp): | |
| (JSC::JIT::emit_op_jsr): | |
| (JSC::JIT::emit_op_jmp_scopes): | |
| 2009-05-12 Sam Weinig <sam@webkit.org> | |
| Add MacroAssemblerX86Common::set8 to fix the build. | |
| * assembler/MacroAssemblerX86Common.h: | |
| (JSC::MacroAssemblerX86Common::set8): | |
| 2009-05-12 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Added overflow recovery for pre_inc and pre_dec. | |
| Turned some short-circuit code into early returns, as is the WebKit style. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_post_inc): | |
| (JSC::JIT::emitSlow_op_post_inc): | |
| (JSC::JIT::emit_op_post_dec): | |
| (JSC::JIT::emitSlow_op_post_dec): | |
| (JSC::JIT::emitSlow_op_pre_inc): | |
| (JSC::JIT::emitSlow_op_pre_dec): | |
| 2009-05-12 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Implement op_jmp, op_loop, op_eq and op_neq. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_jmp): | |
| (JSC::JIT::emit_op_loop): | |
| (JSC::JIT::emit_op_eq): | |
| (JSC::JIT::emitSlow_op_eq): | |
| (JSC::JIT::emit_op_neq): | |
| (JSC::JIT::emitSlow_op_neq): | |
| (JSC::JIT::emit_op_enter): | |
| (JSC::JIT::emit_op_enter_with_activation): | |
| 2009-05-12 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Implement the slow cases for arithmetic opcodes. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emitSlow_op_lshift): | |
| (JSC::JIT::emitSlow_op_rshift): | |
| (JSC::JIT::emitSlow_op_bitand): | |
| (JSC::JIT::emitSlow_op_bitor): | |
| (JSC::JIT::emitSlow_op_bitxor): | |
| (JSC::JIT::emitSlow_op_bitnot): | |
| (JSC::JIT::emitSlow_op_sub): | |
| (JSC::JIT::emitSlow_op_mul): | |
| (JSC::JIT::emitSlow_op_mod): | |
| (JSC::JIT::emit_op_mod): | |
| 2009-05-12 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Implement op_bitnot. | |
| * assembler/MacroAssemblerX86Common.h: | |
| (JSC::MacroAssemblerX86Common::not32): | |
| * assembler/X86Assembler.h: | |
| (JSC::X86Assembler::notl_m): | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_bitnot): | |
| 2009-05-12 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Add arithmetic opcode implementations from the old nitro-extreme branch. | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_jnless): | |
| (JSC::JIT::emitSlow_op_jnless): | |
| (JSC::JIT::emit_op_jnlesseq): | |
| (JSC::JIT::emitSlow_op_jnlesseq): | |
| (JSC::JIT::emit_op_lshift): | |
| (JSC::JIT::emitSlow_op_lshift): | |
| (JSC::JIT::emit_op_rshift): | |
| (JSC::JIT::emitSlow_op_rshift): | |
| (JSC::JIT::emit_op_bitand): | |
| (JSC::JIT::emitBitAnd32Constant): | |
| (JSC::JIT::emitBitAnd32InPlace): | |
| (JSC::JIT::emit_op_bitor): | |
| (JSC::JIT::emitSlow_op_bitor): | |
| (JSC::JIT::emitBitOr32Constant): | |
| (JSC::JIT::emitBitOr32InPlace): | |
| (JSC::JIT::emit_op_bitxor): | |
| (JSC::JIT::emitSlow_op_bitxor): | |
| (JSC::JIT::emitBitXor32Constant): | |
| (JSC::JIT::emitBitXor32InPlace): | |
| (JSC::JIT::emit_op_bitnot): | |
| (JSC::JIT::emitSlow_op_bitnot): | |
| (JSC::JIT::emit_op_post_inc): | |
| (JSC::JIT::emitSlow_op_post_inc): | |
| (JSC::JIT::emit_op_post_dec): | |
| (JSC::JIT::emitSlow_op_post_dec): | |
| (JSC::JIT::emit_op_pre_inc): | |
| (JSC::JIT::emitSlow_op_pre_inc): | |
| (JSC::JIT::emit_op_pre_dec): | |
| (JSC::JIT::emitSlow_op_pre_dec): | |
| (JSC::JIT::emit_op_add): | |
| (JSC::JIT::emitAdd32Constant): | |
| (JSC::JIT::emitAdd32InPlace): | |
| (JSC::JIT::emitSlow_op_add): | |
| (JSC::JIT::emit_op_sub): | |
| (JSC::JIT::emitSlow_op_sub): | |
| (JSC::JIT::emitSub32ConstantLeft): | |
| (JSC::JIT::emitSub32ConstantRight): | |
| (JSC::JIT::emitSub32InPlaceLeft): | |
| (JSC::JIT::emitSub32InPlaceRight): | |
| (JSC::JIT::emit_op_mul): | |
| (JSC::JIT::emitSlow_op_mul): | |
| (JSC::JIT::emitMul32Constant): | |
| (JSC::JIT::emitMul32InPlace): | |
| (JSC::JIT::emit_op_mod): | |
| (JSC::JIT::emitSlow_op_mod): | |
| * jit/JITOpcodes.cpp: | |
| 2009-05-12 Geoffrey Garen <ggaren@apple.com> | |
| Removed JIT_OPTIMIZE_ARITHMETIC setting, since it was all about 32bit | |
| value representations. | |
| Added JSAPIValueWrapper to the repository. | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| * runtime/JSAPIValueWrapper.cpp: Added. | |
| (JSC::JSAPIValueWrapper::toPrimitive): | |
| (JSC::JSAPIValueWrapper::getPrimitiveNumber): | |
| (JSC::JSAPIValueWrapper::toBoolean): | |
| (JSC::JSAPIValueWrapper::toNumber): | |
| (JSC::JSAPIValueWrapper::toString): | |
| (JSC::JSAPIValueWrapper::toObject): | |
| * runtime/JSAPIValueWrapper.h: Added. | |
| (JSC::JSAPIValueWrapper::value): | |
| (JSC::JSAPIValueWrapper::isAPIValueWrapper): | |
| (JSC::JSAPIValueWrapper::JSAPIValueWrapper): | |
| (JSC::jsAPIValueWrapper): | |
| * wtf/Platform.h: | |
| 2009-05-12 Geoffrey Garen <ggaren@apple.com> | |
| Turned on the JIT and got it building and running the most trivial of | |
| programs. | |
| All configurable optimizations are turned off, and a few opcodes are ad | |
| hoc #if'd out. | |
| So far, I've only merged op_mov and op_end, but some stub-reliant | |
| opcodes work as-is from TOT. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::~CodeBlock): | |
| * bytecode/CodeBlock.h: | |
| * jit/JIT.cpp: | |
| (JSC::JIT::compileOpStrictEq): | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_lshift): | |
| (JSC::JIT::emitSlow_op_lshift): | |
| (JSC::JIT::emit_op_rshift): | |
| (JSC::JIT::emitSlow_op_rshift): | |
| (JSC::JIT::emit_op_jnless): | |
| (JSC::JIT::emitSlow_op_jnless): | |
| (JSC::JIT::emit_op_jnlesseq): | |
| (JSC::JIT::emitSlow_op_jnlesseq): | |
| (JSC::JIT::emit_op_bitand): | |
| (JSC::JIT::emitSlow_op_bitand): | |
| (JSC::JIT::emit_op_post_inc): | |
| (JSC::JIT::emitSlow_op_post_inc): | |
| (JSC::JIT::emit_op_post_dec): | |
| (JSC::JIT::emitSlow_op_post_dec): | |
| (JSC::JIT::emit_op_pre_inc): | |
| (JSC::JIT::emitSlow_op_pre_inc): | |
| (JSC::JIT::emit_op_pre_dec): | |
| (JSC::JIT::emitSlow_op_pre_dec): | |
| (JSC::JIT::emit_op_mod): | |
| (JSC::JIT::emitSlow_op_mod): | |
| (JSC::JIT::emit_op_add): | |
| (JSC::JIT::emit_op_mul): | |
| (JSC::JIT::emit_op_sub): | |
| (JSC::JIT::compileBinaryArithOpSlowCase): | |
| (JSC::JIT::emitSlow_op_add): | |
| (JSC::JIT::emitSlow_op_mul): | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallInitializeCallFrame): | |
| (JSC::JIT::compileOpConstructSetupArgs): | |
| (JSC::JIT::compileOpCallVarargs): | |
| (JSC::JIT::compileOpCall): | |
| (JSC::JIT::compileOpCallSlowCase): | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::getConstantOperandImmediateInt): | |
| (JSC::JIT::isOperandConstantImmediateInt): | |
| (JSC::JIT::emitInitRegister): | |
| (JSC::JIT::addSlowCase): | |
| (JSC::JIT::addJump): | |
| (JSC::JIT::emitJumpSlowToHot): | |
| (JSC::JIT::tagFor): | |
| (JSC::JIT::payloadFor): | |
| (JSC::JIT::emitLoad): | |
| (JSC::JIT::emitLoadReturnValue): | |
| (JSC::JIT::emitStore): | |
| (JSC::JIT::emitStoreReturnValue): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_mov): | |
| (JSC::JIT::emit_op_end): | |
| (JSC::JIT::emit_op_jmp): | |
| (JSC::JIT::emit_op_loop): | |
| (JSC::JIT::emit_op_loop_if_less): | |
| (JSC::JIT::emit_op_loop_if_lesseq): | |
| (JSC::JIT::emit_op_instanceof): | |
| (JSC::JIT::emit_op_get_global_var): | |
| (JSC::JIT::emit_op_put_global_var): | |
| (JSC::JIT::emit_op_get_scoped_var): | |
| (JSC::JIT::emit_op_put_scoped_var): | |
| (JSC::JIT::emit_op_tear_off_activation): | |
| (JSC::JIT::emit_op_ret): | |
| (JSC::JIT::emit_op_construct_verify): | |
| (JSC::JIT::emit_op_to_primitive): | |
| (JSC::JIT::emit_op_loop_if_true): | |
| (JSC::JIT::emit_op_resolve_global): | |
| (JSC::JIT::emit_op_not): | |
| (JSC::JIT::emit_op_jfalse): | |
| (JSC::JIT::emit_op_jeq_null): | |
| (JSC::JIT::emit_op_jneq_null): | |
| (JSC::JIT::emit_op_jneq_ptr): | |
| (JSC::JIT::emit_op_unexpected_load): | |
| (JSC::JIT::emit_op_eq): | |
| (JSC::JIT::emit_op_bitnot): | |
| (JSC::JIT::emit_op_jtrue): | |
| (JSC::JIT::emit_op_neq): | |
| (JSC::JIT::emit_op_bitxor): | |
| (JSC::JIT::emit_op_bitor): | |
| (JSC::JIT::emit_op_throw): | |
| (JSC::JIT::emit_op_next_pname): | |
| (JSC::JIT::emit_op_push_scope): | |
| (JSC::JIT::emit_op_to_jsnumber): | |
| (JSC::JIT::emit_op_push_new_scope): | |
| (JSC::JIT::emit_op_catch): | |
| (JSC::JIT::emit_op_switch_imm): | |
| (JSC::JIT::emit_op_switch_char): | |
| (JSC::JIT::emit_op_switch_string): | |
| (JSC::JIT::emit_op_new_error): | |
| (JSC::JIT::emit_op_eq_null): | |
| (JSC::JIT::emit_op_neq_null): | |
| (JSC::JIT::emit_op_convert_this): | |
| (JSC::JIT::emit_op_profile_will_call): | |
| (JSC::JIT::emit_op_profile_did_call): | |
| (JSC::JIT::emitSlow_op_construct_verify): | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| (JSC::JIT::emitSlow_op_loop_if_less): | |
| (JSC::JIT::emitSlow_op_loop_if_lesseq): | |
| (JSC::JIT::emitSlow_op_put_by_val): | |
| (JSC::JIT::emitSlow_op_not): | |
| (JSC::JIT::emitSlow_op_instanceof): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emit_op_get_by_val): | |
| (JSC::JIT::emit_op_put_by_val): | |
| (JSC::JIT::emit_op_put_by_index): | |
| (JSC::JIT::emit_op_put_getter): | |
| (JSC::JIT::emit_op_put_setter): | |
| (JSC::JIT::emit_op_del_by_id): | |
| (JSC::JIT::compileGetByIdHotPath): | |
| (JSC::JIT::compilePutByIdHotPath): | |
| * jit/JITStubCall.h: | |
| (JSC::JITStubCall::JITStubCall): | |
| (JSC::JITStubCall::addArgument): | |
| (JSC::JITStubCall::call): | |
| (JSC::JITStubCall::): | |
| (JSC::CallEvalJITStub::CallEvalJITStub): | |
| * jit/JITStubs.cpp: | |
| (JSC::): | |
| (JSC::JITStubs::cti_op_add): | |
| (JSC::JITStubs::cti_op_pre_inc): | |
| (JSC::JITStubs::cti_op_mul): | |
| (JSC::JITStubs::cti_op_get_by_val): | |
| (JSC::JITStubs::cti_op_get_by_val_string): | |
| (JSC::JITStubs::cti_op_get_by_val_byte_array): | |
| (JSC::JITStubs::cti_op_sub): | |
| (JSC::JITStubs::cti_op_put_by_val): | |
| (JSC::JITStubs::cti_op_put_by_val_array): | |
| (JSC::JITStubs::cti_op_put_by_val_byte_array): | |
| (JSC::JITStubs::cti_op_negate): | |
| (JSC::JITStubs::cti_op_div): | |
| (JSC::JITStubs::cti_op_pre_dec): | |
| (JSC::JITStubs::cti_op_post_inc): | |
| (JSC::JITStubs::cti_op_eq): | |
| (JSC::JITStubs::cti_op_lshift): | |
| (JSC::JITStubs::cti_op_bitand): | |
| (JSC::JITStubs::cti_op_rshift): | |
| (JSC::JITStubs::cti_op_bitnot): | |
| (JSC::JITStubs::cti_op_mod): | |
| (JSC::JITStubs::cti_op_neq): | |
| (JSC::JITStubs::cti_op_post_dec): | |
| (JSC::JITStubs::cti_op_urshift): | |
| (JSC::JITStubs::cti_op_bitxor): | |
| (JSC::JITStubs::cti_op_bitor): | |
| (JSC::JITStubs::cti_op_switch_imm): | |
| * jit/JITStubs.h: | |
| * runtime/JSArray.cpp: | |
| (JSC::JSArray::JSArray): | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::~JSFunction): | |
| * runtime/JSValue.h: | |
| (JSC::JSValue::payload): | |
| * wtf/Platform.h: | |
| 2009-05-07 Sam Weinig <sam@webkit.org> | |
| Reviewed by Geoffrey Garen. | |
| Add some new MacroAssembler and assembler functions that will be needed shortly. | |
| * assembler/MacroAssemblerX86Common.h: | |
| (JSC::MacroAssemblerX86Common::add32): | |
| (JSC::MacroAssemblerX86Common::and32): | |
| (JSC::MacroAssemblerX86Common::mul32): | |
| (JSC::MacroAssemblerX86Common::neg32): | |
| (JSC::MacroAssemblerX86Common::or32): | |
| (JSC::MacroAssemblerX86Common::sub32): | |
| (JSC::MacroAssemblerX86Common::xor32): | |
| (JSC::MacroAssemblerX86Common::branchAdd32): | |
| (JSC::MacroAssemblerX86Common::branchMul32): | |
| (JSC::MacroAssemblerX86Common::branchSub32): | |
| * assembler/X86Assembler.h: | |
| (JSC::X86Assembler::): | |
| (JSC::X86Assembler::addl_rm): | |
| (JSC::X86Assembler::andl_mr): | |
| (JSC::X86Assembler::andl_rm): | |
| (JSC::X86Assembler::andl_im): | |
| (JSC::X86Assembler::negl_r): | |
| (JSC::X86Assembler::notl_r): | |
| (JSC::X86Assembler::orl_rm): | |
| (JSC::X86Assembler::orl_im): | |
| (JSC::X86Assembler::subl_rm): | |
| (JSC::X86Assembler::xorl_mr): | |
| (JSC::X86Assembler::xorl_rm): | |
| (JSC::X86Assembler::xorl_im): | |
| (JSC::X86Assembler::imull_mr): | |
| 2009-05-11 Sam Weinig <sam@webkit.org> | |
| Reviewed by Cameron Zwarich. | |
| Remove the NumberHeap. | |
| * JavaScriptCore.exp: | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::Heap): | |
| (JSC::Heap::destroy): | |
| (JSC::Heap::recordExtraCost): | |
| (JSC::Heap::heapAllocate): | |
| (JSC::Heap::markConservatively): | |
| (JSC::Heap::sweep): | |
| (JSC::Heap::collect): | |
| (JSC::Heap::objectCount): | |
| (JSC::Heap::statistics): | |
| (JSC::typeName): | |
| (JSC::Heap::isBusy): | |
| * runtime/Collector.h: | |
| (JSC::Heap::globalData): | |
| * runtime/JSCell.h: | |
| 2009-05-11 Geoffrey Garen <ggaren@apple.com> | |
| Reviewed by Sam Weinig. | |
| Land initial commit of new number representation for 32 bit platforms, | |
| with JIT disabled. | |
| * API/APICast.h: | |
| (toJS): | |
| (toRef): | |
| * API/JSCallbackObjectFunctions.h: | |
| (JSC::::hasInstance): | |
| (JSC::::toNumber): | |
| (JSC::::toString): | |
| * API/tests/testapi.c: | |
| (EvilExceptionObject_convertToType): | |
| * AllInOneFile.cpp: | |
| * JavaScriptCore.exp: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::valueToSourceString): | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::emitLoad): | |
| (JSC::BytecodeGenerator::emitUnexpectedLoad): | |
| (JSC::keyForImmediateSwitch): | |
| * bytecompiler/BytecodeGenerator.h: | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::dumpRegisters): | |
| (JSC::Interpreter::privateExecute): | |
| * parser/Nodes.cpp: | |
| (JSC::ArrayNode::emitBytecode): | |
| (JSC::processClauseList): | |
| * runtime/ArgList.h: | |
| * runtime/Collector.h: | |
| (JSC::sizeof): | |
| * runtime/DateMath.cpp: | |
| * runtime/ExceptionHelpers.h: | |
| * runtime/InitializeThreading.cpp: | |
| * runtime/JSArray.cpp: | |
| (JSC::JSArray::JSArray): | |
| * runtime/JSCell.cpp: | |
| * runtime/JSCell.h: | |
| (JSC::JSCell::isAPIValueWrapper): | |
| (JSC::JSValue::isString): | |
| (JSC::JSValue::isGetterSetter): | |
| (JSC::JSValue::isObject): | |
| (JSC::JSValue::getString): | |
| (JSC::JSValue::getObject): | |
| (JSC::JSValue::getCallData): | |
| (JSC::JSValue::getConstructData): | |
| (JSC::JSValue::getUInt32): | |
| (JSC::JSValue::marked): | |
| (JSC::JSValue::toPrimitive): | |
| (JSC::JSValue::getPrimitiveNumber): | |
| (JSC::JSValue::toBoolean): | |
| (JSC::JSValue::toNumber): | |
| (JSC::JSValue::toString): | |
| (JSC::JSValue::needsThisConversion): | |
| (JSC::JSValue::toThisString): | |
| (JSC::JSValue::getJSNumber): | |
| (JSC::JSValue::toObject): | |
| (JSC::JSValue::toThisObject): | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::JSGlobalData): | |
| * runtime/JSGlobalData.h: | |
| * runtime/JSGlobalObject.h: | |
| (JSC::Structure::prototypeForLookup): | |
| * runtime/JSGlobalObjectFunctions.cpp: | |
| (JSC::globalFuncParseInt): | |
| * runtime/JSImmediate.h: | |
| * runtime/JSNumberCell.cpp: Removed. | |
| * runtime/JSNumberCell.h: Removed. | |
| * runtime/JSObject.h: | |
| (JSC::JSValue::get): | |
| (JSC::JSValue::put): | |
| * runtime/JSString.h: | |
| (JSC::JSValue::toThisJSString): | |
| * runtime/JSValue.cpp: | |
| (JSC::JSValue::toInteger): | |
| (JSC::JSValue::toIntegerPreserveNaN): | |
| (JSC::JSValue::toObjectSlowCase): | |
| (JSC::JSValue::toThisObjectSlowCase): | |
| (JSC::JSValue::synthesizeObject): | |
| (JSC::JSValue::synthesizePrototype): | |
| (JSC::JSValue::description): | |
| (JSC::nonInlineNaN): | |
| * runtime/JSValue.h: | |
| (JSC::JSValue::): | |
| (JSC::EncodedJSValueHashTraits::emptyValue): | |
| (JSC::jsNaN): | |
| (JSC::operator==): | |
| (JSC::operator!=): | |
| (JSC::toInt32): | |
| (JSC::toUInt32): | |
| (JSC::JSValue::encode): | |
| (JSC::JSValue::decode): | |
| (JSC::JSValue::JSValue): | |
| (JSC::JSValue::operator bool): | |
| (JSC::JSValue::operator==): | |
| (JSC::JSValue::operator!=): | |
| (JSC::JSValue::isUndefined): | |
| (JSC::JSValue::isNull): | |
| (JSC::JSValue::isUndefinedOrNull): | |
| (JSC::JSValue::isCell): | |
| (JSC::JSValue::isInt32): | |
| (JSC::JSValue::isUInt32): | |
| (JSC::JSValue::isDouble): | |
| (JSC::JSValue::isTrue): | |
| (JSC::JSValue::isFalse): | |
| (JSC::JSValue::tag): | |
| (JSC::JSValue::asInt32): | |
| (JSC::JSValue::asUInt32): | |
| (JSC::JSValue::asDouble): | |
| (JSC::JSValue::asCell): | |
| (JSC::JSValue::isNumber): | |
| (JSC::JSValue::isBoolean): | |
| (JSC::JSValue::getBoolean): | |
| (JSC::JSValue::uncheckedGetNumber): | |
| (JSC::JSValue::toJSNumber): | |
| (JSC::JSValue::getNumber): | |
| (JSC::JSValue::toInt32): | |
| (JSC::JSValue::toUInt32): | |
| * runtime/Operations.h: | |
| (JSC::JSValue::equal): | |
| (JSC::JSValue::equalSlowCaseInline): | |
| (JSC::JSValue::strictEqual): | |
| (JSC::JSValue::strictEqualSlowCaseInline): | |
| (JSC::jsLess): | |
| (JSC::jsLessEq): | |
| (JSC::jsAdd): | |
| * runtime/PropertySlot.h: | |
| * runtime/StringPrototype.cpp: | |
| (JSC::stringProtoFuncCharAt): | |
| (JSC::stringProtoFuncCharCodeAt): | |
| (JSC::stringProtoFuncIndexOf): | |
| * wtf/Platform.h: | |
| === Start merge of nitro-extreme branch 2009-07-30 === | |
| 2009-07-29 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by George Staikos. | |
| Resolve class/struct mixup in forward declarations | |
| https://bugs.webkit.org/show_bug.cgi?id=27708 | |
| * API/JSClassRef.h: | |
| * bytecode/SamplingTool.h: | |
| * interpreter/Interpreter.h: | |
| * jit/JIT.h: | |
| * profiler/ProfileGenerator.h: | |
| * profiler/Profiler.h: | |
| * runtime/ClassInfo.h: | |
| * runtime/ExceptionHelpers.h: | |
| * runtime/JSByteArray.h: | |
| * runtime/JSCell.h: | |
| * runtime/JSFunction.h: | |
| * runtime/JSGlobalData.h: | |
| * runtime/JSObject.h: | |
| * runtime/JSString.h: | |
| 2009-07-28 Ada Chan <adachan@apple.com> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=27236 | |
| - Implement TCMalloc_SystemRelease and TCMalloc_SystemCommit for Windows. | |
| - Use a background thread to periodically scavenge memory to release back to the system. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::TCMalloc_PageHeap::init): | |
| (WTF::TCMalloc_PageHeap::runScavengerThread): | |
| (WTF::TCMalloc_PageHeap::scavenge): | |
| (WTF::TCMalloc_PageHeap::shouldContinueScavenging): | |
| (WTF::TCMalloc_PageHeap::New): | |
| (WTF::TCMalloc_PageHeap::AllocLarge): | |
| (WTF::TCMalloc_PageHeap::Delete): | |
| (WTF::TCMalloc_PageHeap::GrowHeap): | |
| (WTF::sleep): | |
| (WTF::TCMalloc_PageHeap::scavengerThread): | |
| * wtf/TCSystemAlloc.cpp: | |
| (TCMalloc_SystemRelease): | |
| (TCMalloc_SystemCommit): | |
| * wtf/TCSystemAlloc.h: | |
| 2009-07-28 Xan Lopez <xlopez@igalia.com> | |
| Add new files, fixes distcheck. | |
| * GNUmakefile.am: | |
| 2009-07-28 Csaba Osztrogonac <oszi@inf.u-szeged.hu> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Determining whether to use JIT or interpreter | |
| moved from JavaScriptCore.pri to Platform.h | |
| * JavaScriptCore.pri: | |
| * wtf/Platform.h: | |
| 2009-07-27 Brian Weinstein <bweinstein@apple.com> | |
| Fix of misuse of sort command. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-07-27 Brian Weinstein <bweinstein@apple.com> | |
| Build fix for Windows. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-07-27 Gavin Barraclough <barraclough@apple.com> | |
| Rubber stamped by Oliver Hunt. | |
| Fix tyop in JIT, renamed preverveReturnAddressAfterCall -> preserveReturnAddressAfterCall. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompile): | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| * jit/JIT.h: | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::preserveReturnAddressAfterCall): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::privateCompilePutByIdTransition): | |
| 2009-07-27 Alexey Proskuryakov <ap@webkit.org> | |
| Gtk build fix. | |
| * runtime/JSLock.cpp: (JSC::JSLock::JSLock): Fix "no threading" case. | |
| 2009-07-27 Alexey Proskuryakov <ap@webkit.org> | |
| Release build fix. | |
| * runtime/JSLock.h: (JSC::JSLock::~JSLock): | |
| 2009-07-27 Alexey Proskuryakov <ap@webkit.org> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=27735 | |
| Give a helpful name to JSLock constructor argument | |
| * API/JSBase.cpp: | |
| (JSGarbageCollect): | |
| * API/JSContextRef.cpp: | |
| * API/JSObjectRef.cpp: | |
| (JSPropertyNameArrayRelease): | |
| (JSPropertyNameAccumulatorAddName): | |
| * JavaScriptCore.exp: | |
| * jsc.cpp: | |
| (functionGC): | |
| (cleanupGlobalData): | |
| (jscmain): | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::destroy): | |
| * runtime/JSLock.cpp: | |
| (JSC::JSLock::JSLock): | |
| (JSC::JSLock::lock): | |
| (JSC::JSLock::unlock): | |
| (JSC::JSLock::DropAllLocks::DropAllLocks): | |
| (JSC::JSLock::DropAllLocks::~DropAllLocks): | |
| * runtime/JSLock.h: | |
| (JSC::): | |
| (JSC::JSLock::JSLock): | |
| (JSC::JSLock::~JSLock): | |
| 2009-07-25 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Eric Seidel. | |
| Allow custom memory allocation control for OpaqueJSPropertyNameArray struct | |
| https://bugs.webkit.org/show_bug.cgi?id=27342 | |
| Inherits OpaqueJSPropertyNameArray struct from FastAllocBase because it has been | |
| instantiated by 'new' JavaScriptCore/API/JSObjectRef.cpp:473. | |
| * API/JSObjectRef.cpp: | |
| 2009-07-24 Ada Chan <adachan@apple.com> | |
| In preparation for https://bugs.webkit.org/show_bug.cgi?id=27236: | |
| Remove TCMALLOC_TRACK_DECOMMITED_SPANS. We'll always track decommitted spans. | |
| We have tested this and show it has little impact on performance. | |
| Reviewed by Mark Rowe. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::TCMalloc_PageHeap::New): | |
| (WTF::TCMalloc_PageHeap::AllocLarge): | |
| (WTF::propagateDecommittedState): | |
| (WTF::mergeDecommittedStates): | |
| (WTF::TCMalloc_PageHeap::Delete): | |
| (WTF::TCMalloc_PageHeap::IncrementalScavenge): | |
| 2009-07-24 Csaba Osztrogonac <oszi@inf.u-szeged.hu> | |
| Reviewed by Darin Adler and Adam Barth. | |
| Build fix for x86 platforms. | |
| https://bugs.webkit.org/show_bug.cgi?id=27602 | |
| * jit/JIT.cpp: | |
| 2009-07-23 Kevin Ollivier <kevino@theolliviers.com> | |
| wx build fix, adding missing header. | |
| * jit/JIT.cpp: | |
| 2009-07-22 Yong Li <yong.li@torchmobile.com> | |
| Reviewed by George Staikos. | |
| Add wince specific memory files into wtf/wince | |
| https://bugs.webkit.org/show_bug.cgi?id=27550 | |
| * wtf/wince/FastMallocWince.h: Added. | |
| * wtf/wince/MemoryManager.cpp: Added. | |
| * wtf/wince/MemoryManager.h: Added. | |
| 2009-07-23 Norbert Leser <norbert.leser@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Fix for missing mmap features in Symbian | |
| https://bugs.webkit.org/show_bug.cgi?id=24540 | |
| Fix, conditionally for PLATFORM(SYMBIAN), as an alternative | |
| to missing support for the MAP_ANON property flag in mmap. | |
| It utilizes Symbian specific memory allocation features. | |
| * runtime/Collector.cpp | |
| 2009-07-22 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| With ENABLE(ASSEMBLER_WX_EXCLUSIVE), only change permissions once per repatch event. | |
| ( https://bugs.webkit.org/show_bug.cgi?id=27564 ) | |
| Currently we change permissions forwards and backwards for each instruction modified, | |
| instead we should only change permissions once per complete repatching event. | |
| 2.5% progression running with ENABLE(ASSEMBLER_WX_EXCLUSIVE) enabled, | |
| which recoups 1/3 of the penalty of running with this mode enabled. | |
| * assembler/ARMAssembler.cpp: | |
| (JSC::ARMAssembler::linkBranch): | |
| - Replace usage of MakeWritable with cacheFlush. | |
| * assembler/ARMAssembler.h: | |
| (JSC::ARMAssembler::patchPointerInternal): | |
| (JSC::ARMAssembler::repatchLoadPtrToLEA): | |
| - Replace usage of MakeWritable with cacheFlush. | |
| * assembler/ARMv7Assembler.h: | |
| (JSC::ARMv7Assembler::relinkJump): | |
| (JSC::ARMv7Assembler::relinkCall): | |
| (JSC::ARMv7Assembler::repatchInt32): | |
| (JSC::ARMv7Assembler::repatchPointer): | |
| (JSC::ARMv7Assembler::repatchLoadPtrToLEA): | |
| (JSC::ARMv7Assembler::setInt32): | |
| - Replace usage of MakeWritable with cacheFlush. | |
| * assembler/LinkBuffer.h: | |
| (JSC::LinkBuffer::performFinalization): | |
| - Make explicit call to cacheFlush. | |
| * assembler/MacroAssemblerCodeRef.h: | |
| (JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef): | |
| - Make size always available. | |
| * assembler/RepatchBuffer.h: | |
| (JSC::RepatchBuffer::RepatchBuffer): | |
| (JSC::RepatchBuffer::~RepatchBuffer): | |
| - Add calls to MakeWritable & makeExecutable. | |
| * assembler/X86Assembler.h: | |
| (JSC::X86Assembler::relinkJump): | |
| (JSC::X86Assembler::relinkCall): | |
| (JSC::X86Assembler::repatchInt32): | |
| (JSC::X86Assembler::repatchPointer): | |
| (JSC::X86Assembler::repatchLoadPtrToLEA): | |
| - Remove usage of MakeWritable. | |
| * bytecode/CodeBlock.h: | |
| (JSC::CodeBlock::getJITCode): | |
| - Provide access to CodeBlock's JITCode. | |
| * jit/ExecutableAllocator.h: | |
| (JSC::ExecutableAllocator::makeExecutable): | |
| (JSC::ExecutableAllocator::cacheFlush): | |
| - Remove MakeWritable, make cacheFlush public. | |
| * jit/JIT.cpp: | |
| (JSC::ctiPatchNearCallByReturnAddress): | |
| (JSC::ctiPatchCallByReturnAddress): | |
| (JSC::JIT::privateCompile): | |
| (JSC::JIT::unlinkCall): | |
| (JSC::JIT::linkCall): | |
| - Add CodeBlock argument to RepatchBuffer. | |
| * jit/JIT.h: | |
| - Pass CodeBlock argument for use by RepatchBuffer. | |
| * jit/JITCode.h: | |
| (JSC::JITCode::start): | |
| (JSC::JITCode::size): | |
| - Provide access to code start & size. | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::privateCompilePutByIdTransition): | |
| (JSC::JIT::patchGetByIdSelf): | |
| (JSC::JIT::patchMethodCallProto): | |
| (JSC::JIT::patchPutByIdReplace): | |
| (JSC::JIT::privateCompilePatchGetArrayLength): | |
| (JSC::JIT::privateCompileGetByIdProto): | |
| (JSC::JIT::privateCompileGetByIdSelfList): | |
| (JSC::JIT::privateCompileGetByIdProtoList): | |
| (JSC::JIT::privateCompileGetByIdChainList): | |
| (JSC::JIT::privateCompileGetByIdChain): | |
| - Add CodeBlock argument to RepatchBuffer. | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::tryCachePutByID): | |
| (JSC::JITThunks::tryCacheGetByID): | |
| (JSC::JITStubs::DEFINE_STUB_FUNCTION): | |
| - Pass CodeBlock argument for use by RepatchBuffer. | |
| 2009-07-21 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Cache not only the structure of the method, but the | |
| structure of its prototype as well. | |
| https://bugs.webkit.org/show_bug.cgi?id=27077 | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::~CodeBlock): | |
| * bytecode/CodeBlock.h: | |
| (JSC::MethodCallLinkInfo::MethodCallLinkInfo): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::patchMethodCallProto): | |
| 2009-07-21 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| Move call linking / repatching down from AbstractMacroAssembler into MacroAssemblerARCH classes. | |
| ( https://bugs.webkit.org/show_bug.cgi?id=27527 ) | |
| This allows the implementation to be defined per architecture. Specifically this addresses the | |
| fact that x86-64 MacroAssembler implements far calls as a load to register, followed by a call | |
| to register. Patching the call actually requires the pointer load to be patched, rather than | |
| the call to be patched. This is implementation detail specific to MacroAssemblerX86_64, and as | |
| such is best handled there. | |
| * assembler/AbstractMacroAssembler.h: | |
| * assembler/MacroAssemblerARM.h: | |
| (JSC::MacroAssemblerARM::linkCall): | |
| (JSC::MacroAssemblerARM::repatchCall): | |
| * assembler/MacroAssemblerARMv7.h: | |
| (JSC::MacroAssemblerARMv7::linkCall): | |
| (JSC::MacroAssemblerARMv7::repatchCall): | |
| * assembler/MacroAssemblerX86.h: | |
| (JSC::MacroAssemblerX86::linkCall): | |
| (JSC::MacroAssemblerX86::repatchCall): | |
| * assembler/MacroAssemblerX86_64.h: | |
| (JSC::MacroAssemblerX86_64::linkCall): | |
| (JSC::MacroAssemblerX86_64::repatchCall): | |
| 2009-07-21 Adam Treat <adam.treat@torchmobile.com> | |
| Reviewed by George Staikos. | |
| Every wtf file includes other wtf files with <> style includes | |
| except this one. Fix the exception. | |
| * wtf/ByteArray.h: | |
| 2009-07-21 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Move LinkBuffer/RepatchBuffer out of AbstractMacroAssembler. | |
| ( https://bugs.webkit.org/show_bug.cgi?id=27485 ) | |
| This change is the first step in a process to move code that should be in | |
| the architecture-specific MacroAssembler classes up out of Assmbler and | |
| AbstractMacroAssembler. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| - added new files | |
| * assembler/ARMAssembler.h: | |
| (JSC::ARMAssembler::linkPointer): | |
| - rename patchPointer to bring it in line with the current link/repatch naming scheme | |
| * assembler/ARMv7Assembler.h: | |
| (JSC::ARMv7Assembler::linkCall): | |
| (JSC::ARMv7Assembler::linkPointer): | |
| (JSC::ARMv7Assembler::relinkCall): | |
| (JSC::ARMv7Assembler::repatchInt32): | |
| (JSC::ARMv7Assembler::repatchPointer): | |
| (JSC::ARMv7Assembler::setInt32): | |
| (JSC::ARMv7Assembler::setPointer): | |
| - rename patchPointer to bring it in line with the current link/repatch naming scheme | |
| * assembler/AbstractMacroAssembler.h: | |
| (JSC::AbstractMacroAssembler::linkJump): | |
| (JSC::AbstractMacroAssembler::linkCall): | |
| (JSC::AbstractMacroAssembler::linkPointer): | |
| (JSC::AbstractMacroAssembler::getLinkerAddress): | |
| (JSC::AbstractMacroAssembler::getLinkerCallReturnOffset): | |
| (JSC::AbstractMacroAssembler::repatchJump): | |
| (JSC::AbstractMacroAssembler::repatchCall): | |
| (JSC::AbstractMacroAssembler::repatchNearCall): | |
| (JSC::AbstractMacroAssembler::repatchInt32): | |
| (JSC::AbstractMacroAssembler::repatchPointer): | |
| (JSC::AbstractMacroAssembler::repatchLoadPtrToLEA): | |
| - remove the LinkBuffer/RepatchBuffer classes, but leave a set of (private, friended) methods to interface to the Assembler | |
| * assembler/LinkBuffer.h: Added. | |
| (JSC::LinkBuffer::LinkBuffer): | |
| (JSC::LinkBuffer::~LinkBuffer): | |
| (JSC::LinkBuffer::link): | |
| (JSC::LinkBuffer::patch): | |
| (JSC::LinkBuffer::locationOf): | |
| (JSC::LinkBuffer::locationOfNearCall): | |
| (JSC::LinkBuffer::returnAddressOffset): | |
| (JSC::LinkBuffer::finalizeCode): | |
| (JSC::LinkBuffer::finalizeCodeAddendum): | |
| (JSC::LinkBuffer::code): | |
| (JSC::LinkBuffer::performFinalization): | |
| - new file containing the LinkBuffer class, previously a member of AbstractMacroAssembler | |
| * assembler/RepatchBuffer.h: Added. | |
| (JSC::RepatchBuffer::RepatchBuffer): | |
| (JSC::RepatchBuffer::relink): | |
| (JSC::RepatchBuffer::repatch): | |
| (JSC::RepatchBuffer::repatchLoadPtrToLEA): | |
| (JSC::RepatchBuffer::relinkCallerToTrampoline): | |
| (JSC::RepatchBuffer::relinkCallerToFunction): | |
| (JSC::RepatchBuffer::relinkNearCallerToTrampoline): | |
| - new file containing the RepatchBuffer class, previously a member of AbstractMacroAssembler | |
| * assembler/X86Assembler.h: | |
| (JSC::X86Assembler::linkJump): | |
| (JSC::X86Assembler::linkCall): | |
| (JSC::X86Assembler::linkPointerForCall): | |
| (JSC::X86Assembler::linkPointer): | |
| (JSC::X86Assembler::relinkJump): | |
| (JSC::X86Assembler::relinkCall): | |
| (JSC::X86Assembler::repatchInt32): | |
| (JSC::X86Assembler::repatchPointer): | |
| (JSC::X86Assembler::setPointer): | |
| (JSC::X86Assembler::setInt32): | |
| (JSC::X86Assembler::setRel32): | |
| - rename patchPointer to bring it in line with the current link/repatch naming scheme | |
| * jit/JIT.cpp: | |
| (JSC::ctiPatchNearCallByReturnAddress): | |
| (JSC::ctiPatchCallByReturnAddress): | |
| - include new headers | |
| - remove MacroAssembler:: specification from RepatchBuffer usage | |
| * jit/JITPropertyAccess.cpp: | |
| * yarr/RegexJIT.cpp: | |
| - include new headers | |
| 2009-07-21 Robert Agoston <Agoston.Robert@stud.u-szeged.hu> | |
| Reviewed by David Levin. | |
| Fixed #undef typo. | |
| https://bugs.webkit.org/show_bug.cgi?id=27506 | |
| * bytecode/Opcode.h: | |
| 2009-07-21 Adam Roben <aroben@apple.com> | |
| Roll out r46153, r46154, and r46155 | |
| These changes were causing build failures and assertion failures on | |
| Windows. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/JSArray.cpp: | |
| * runtime/StringPrototype.cpp: | |
| * runtime/UString.cpp: | |
| * runtime/UString.h: | |
| * wtf/FastMalloc.cpp: | |
| * wtf/FastMalloc.h: | |
| * wtf/Platform.h: | |
| * wtf/PossiblyNull.h: Removed. | |
| 2009-07-21 Roland Steiner <rolandsteiner@google.com> | |
| Reviewed by David Levin. | |
| Add ENABLE_RUBY to list of build options | |
| https://bugs.webkit.org/show_bug.cgi?id=27324 | |
| * Configurations/FeatureDefines.xcconfig: Added flag ENABLE_RUBY. | |
| 2009-07-20 Oliver Hunt <oliver@apple.com> | |
| Build fix attempt #2 | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-07-20 Oliver Hunt <oliver@apple.com> | |
| Build fix attempt #1 | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-07-20 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| Make it harder to misuse try* allocation routines | |
| https://bugs.webkit.org/show_bug.cgi?id=27469 | |
| Jump through a few hoops to make it much harder to accidentally | |
| miss null-checking of values returned by the try-* allocation | |
| routines. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * runtime/JSArray.cpp: | |
| (JSC::JSArray::putSlowCase): | |
| (JSC::JSArray::increaseVectorLength): | |
| * runtime/StringPrototype.cpp: | |
| (JSC::stringProtoFuncFontsize): | |
| (JSC::stringProtoFuncLink): | |
| * runtime/UString.cpp: | |
| (JSC::allocChars): | |
| (JSC::reallocChars): | |
| (JSC::expandCapacity): | |
| (JSC::UString::Rep::reserveCapacity): | |
| (JSC::UString::expandPreCapacity): | |
| (JSC::createRep): | |
| (JSC::concatenate): | |
| (JSC::UString::spliceSubstringsWithSeparators): | |
| (JSC::UString::replaceRange): | |
| (JSC::UString::append): | |
| (JSC::UString::operator=): | |
| * runtime/UString.h: | |
| (JSC::UString::Rep::createEmptyBuffer): | |
| * wtf/FastMalloc.cpp: | |
| (WTF::tryFastZeroedMalloc): | |
| (WTF::tryFastMalloc): | |
| (WTF::tryFastCalloc): | |
| (WTF::tryFastRealloc): | |
| (WTF::TCMallocStats::tryFastMalloc): | |
| (WTF::TCMallocStats::tryFastCalloc): | |
| (WTF::TCMallocStats::tryFastRealloc): | |
| * wtf/FastMalloc.h: | |
| (WTF::TryMallocReturnValue::TryMallocReturnValue): | |
| (WTF::TryMallocReturnValue::~TryMallocReturnValue): | |
| (WTF::TryMallocReturnValue::operator Maybe<T>): | |
| (WTF::TryMallocReturnValue::getValue): | |
| * wtf/PossiblyNull.h: | |
| (WTF::PossiblyNull::PossiblyNull): | |
| (WTF::PossiblyNull::~PossiblyNull): | |
| (WTF::PossiblyNull::getValue): | |
| * wtf/Platform.h: | |
| 2009-07-20 Gavin Barraclough <barraclough@apple.com> | |
| RS Oliver Hunt. | |
| Add ARM assembler files to xcodeproj, for convenience editing. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| 2009-07-20 Jessie Berlin <jberlin@apple.com> | |
| Reviewed by David Levin. | |
| Fix an incorrect assertion in Vector::remove. | |
| https://bugs.webkit.org/show_bug.cgi?id=27477 | |
| * wtf/Vector.h: | |
| (WTF::::remove): | |
| Assert that the position at which to start removing elements + the | |
| length (the number of elements to remove) is less than or equal to the | |
| size of the entire Vector. | |
| 2009-07-20 Peter Kasting <pkasting@google.com> | |
| Reviewed by Mark Rowe. | |
| https://bugs.webkit.org/show_bug.cgi?id=27468 | |
| Back out r46060, which caused problems for some Apple developers. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: | |
| * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: | |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: | |
| * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: | |
| 2009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Oliver Hunt. | |
| Allow custom memory allocation control in NewThreadContext | |
| https://bugs.webkit.org/show_bug.cgi?id=27338 | |
| Inherits NewThreadContext struct from FastAllocBase because it | |
| has been instantiated by 'new' JavaScriptCore/wtf/Threading.cpp:76. | |
| * wtf/Threading.cpp: | |
| 2009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Oliver Hunt. | |
| Allow custom memory allocation control in JavaScriptCore's JSClassRef.h | |
| https://bugs.webkit.org/show_bug.cgi?id=27340 | |
| Inherit StaticValueEntry and StaticFunctionEntry struct from FastAllocBase because these | |
| have been instantiated by 'new' in JavaScriptCore/API/JSClassRef.cpp:153 | |
| and in JavaScriptCore/API/JSClassRef.cpp:166. | |
| * API/JSClassRef.h: | |
| 2009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| Allow custom memory allocation control in JavaScriptCore's RegexPattern.h | |
| https://bugs.webkit.org/show_bug.cgi?id=27343 | |
| Inherits RegexPattern.h's structs (which have been instantiated by operator new) from FastAllocBase: | |
| CharacterClass (new call: JavaScriptCore/yarr/RegexCompiler.cpp:144) | |
| PatternAlternative (new call: JavaScriptCore/yarr/RegexPattern.h:221) | |
| PatternDisjunction (new call: JavaScriptCore/yarr/RegexCompiler.cpp:446) | |
| * yarr/RegexPattern.h: | |
| 2009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| Allow custom memory allocation control for JavaScriptCore's MatchFrame struct | |
| https://bugs.webkit.org/show_bug.cgi?id=27344 | |
| Inherits MatchFrame struct from FastAllocBase because it has | |
| been instantiated by 'new' JavaScriptCore/pcre/pcre_exec.cpp:359. | |
| * pcre/pcre_exec.cpp: | |
| 2009-07-20 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Holger Freyther. | |
| Remove some outdated S60 platform specific code | |
| https://bugs.webkit.org/show_bug.cgi?id=27423 | |
| * wtf/Platform.h: | |
| 2009-07-20 Csaba Osztrogonac <oszi@inf.u-szeged.hu> | |
| Reviewed by Simon Hausmann. | |
| Qt build fix with MSVC and MinGW. | |
| * jsc.pro: Make sure jsc is a console application, and turn off | |
| exceptions and stl support to fix the build. | |
| 2009-07-20 Xan Lopez <xlopez@igalia.com> | |
| Reviewed by Gustavo Noronha. | |
| Do not use C++-style comments in preprocessor directives. | |
| GCC does not like this in some configurations, using C-style | |
| comments is safer. | |
| * wtf/Platform.h: | |
| 2009-07-17 Peter Kasting <pkasting@google.com> | |
| Reviewed by Steve Falkenburg. | |
| https://bugs.webkit.org/show_bug.cgi?id=27323 | |
| Only add Cygwin to the path when it isn't already there. This avoids | |
| causing problems for people who purposefully have non-Cygwin versions of | |
| executables like svn in front of the Cygwin ones in their paths. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: | |
| * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: | |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: | |
| * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: | |
| 2009-07-17 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Add YARR support for generic ARM platforms (disabled by default). | |
| https://bugs.webkit.org/show_bug.cgi?id=24986 | |
| Add generic ARM port for MacroAssembler. It supports the whole | |
| MacroAssembler functionality except floating point. | |
| The class JmpSrc is extended with a flag which enables to patch | |
| the jump destination offset during execution. This feature is | |
| required for generic ARM port. | |
| Signed off by Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
| Signed off by Gabor Loki <loki@inf.u-szeged.hu> | |
| * JavaScriptCore.pri: | |
| * assembler/ARMAssembler.cpp: Added. | |
| (JSC::ARMAssembler::getLdrImmAddress): | |
| (JSC::ARMAssembler::linkBranch): | |
| (JSC::ARMAssembler::patchConstantPoolLoad): | |
| (JSC::ARMAssembler::getOp2): | |
| (JSC::ARMAssembler::genInt): | |
| (JSC::ARMAssembler::getImm): | |
| (JSC::ARMAssembler::moveImm): | |
| (JSC::ARMAssembler::dataTransfer32): | |
| (JSC::ARMAssembler::baseIndexTransfer32): | |
| (JSC::ARMAssembler::executableCopy): | |
| * assembler/ARMAssembler.h: Added. | |
| (JSC::ARM::): | |
| (JSC::ARMAssembler::ARMAssembler): | |
| (JSC::ARMAssembler::): | |
| (JSC::ARMAssembler::JmpSrc::JmpSrc): | |
| (JSC::ARMAssembler::JmpSrc::enableLatePatch): | |
| (JSC::ARMAssembler::JmpDst::JmpDst): | |
| (JSC::ARMAssembler::JmpDst::isUsed): | |
| (JSC::ARMAssembler::JmpDst::used): | |
| (JSC::ARMAssembler::emitInst): | |
| (JSC::ARMAssembler::and_r): | |
| (JSC::ARMAssembler::ands_r): | |
| (JSC::ARMAssembler::eor_r): | |
| (JSC::ARMAssembler::eors_r): | |
| (JSC::ARMAssembler::sub_r): | |
| (JSC::ARMAssembler::subs_r): | |
| (JSC::ARMAssembler::rsb_r): | |
| (JSC::ARMAssembler::rsbs_r): | |
| (JSC::ARMAssembler::add_r): | |
| (JSC::ARMAssembler::adds_r): | |
| (JSC::ARMAssembler::adc_r): | |
| (JSC::ARMAssembler::adcs_r): | |
| (JSC::ARMAssembler::sbc_r): | |
| (JSC::ARMAssembler::sbcs_r): | |
| (JSC::ARMAssembler::rsc_r): | |
| (JSC::ARMAssembler::rscs_r): | |
| (JSC::ARMAssembler::tst_r): | |
| (JSC::ARMAssembler::teq_r): | |
| (JSC::ARMAssembler::cmp_r): | |
| (JSC::ARMAssembler::orr_r): | |
| (JSC::ARMAssembler::orrs_r): | |
| (JSC::ARMAssembler::mov_r): | |
| (JSC::ARMAssembler::movs_r): | |
| (JSC::ARMAssembler::bic_r): | |
| (JSC::ARMAssembler::bics_r): | |
| (JSC::ARMAssembler::mvn_r): | |
| (JSC::ARMAssembler::mvns_r): | |
| (JSC::ARMAssembler::mul_r): | |
| (JSC::ARMAssembler::muls_r): | |
| (JSC::ARMAssembler::mull_r): | |
| (JSC::ARMAssembler::ldr_imm): | |
| (JSC::ARMAssembler::ldr_un_imm): | |
| (JSC::ARMAssembler::dtr_u): | |
| (JSC::ARMAssembler::dtr_ur): | |
| (JSC::ARMAssembler::dtr_d): | |
| (JSC::ARMAssembler::dtr_dr): | |
| (JSC::ARMAssembler::ldrh_r): | |
| (JSC::ARMAssembler::ldrh_d): | |
| (JSC::ARMAssembler::ldrh_u): | |
| (JSC::ARMAssembler::strh_r): | |
| (JSC::ARMAssembler::push_r): | |
| (JSC::ARMAssembler::pop_r): | |
| (JSC::ARMAssembler::poke_r): | |
| (JSC::ARMAssembler::peek_r): | |
| (JSC::ARMAssembler::clz_r): | |
| (JSC::ARMAssembler::bkpt): | |
| (JSC::ARMAssembler::lsl): | |
| (JSC::ARMAssembler::lsr): | |
| (JSC::ARMAssembler::asr): | |
| (JSC::ARMAssembler::lsl_r): | |
| (JSC::ARMAssembler::lsr_r): | |
| (JSC::ARMAssembler::asr_r): | |
| (JSC::ARMAssembler::size): | |
| (JSC::ARMAssembler::ensureSpace): | |
| (JSC::ARMAssembler::label): | |
| (JSC::ARMAssembler::align): | |
| (JSC::ARMAssembler::jmp): | |
| (JSC::ARMAssembler::patchPointerInternal): | |
| (JSC::ARMAssembler::patchConstantPoolLoad): | |
| (JSC::ARMAssembler::patchPointer): | |
| (JSC::ARMAssembler::repatchInt32): | |
| (JSC::ARMAssembler::repatchPointer): | |
| (JSC::ARMAssembler::repatchLoadPtrToLEA): | |
| (JSC::ARMAssembler::linkJump): | |
| (JSC::ARMAssembler::relinkJump): | |
| (JSC::ARMAssembler::linkCall): | |
| (JSC::ARMAssembler::relinkCall): | |
| (JSC::ARMAssembler::getRelocatedAddress): | |
| (JSC::ARMAssembler::getDifferenceBetweenLabels): | |
| (JSC::ARMAssembler::getCallReturnOffset): | |
| (JSC::ARMAssembler::getOp2Byte): | |
| (JSC::ARMAssembler::placeConstantPoolBarrier): | |
| (JSC::ARMAssembler::RM): | |
| (JSC::ARMAssembler::RS): | |
| (JSC::ARMAssembler::RD): | |
| (JSC::ARMAssembler::RN): | |
| (JSC::ARMAssembler::getConditionalField): | |
| * assembler/ARMv7Assembler.h: | |
| (JSC::ARMv7Assembler::JmpSrc::enableLatePatch): | |
| * assembler/AbstractMacroAssembler.h: | |
| (JSC::AbstractMacroAssembler::Call::enableLatePatch): | |
| (JSC::AbstractMacroAssembler::Jump::enableLatePatch): | |
| * assembler/MacroAssembler.h: | |
| * assembler/MacroAssemblerARM.h: Added. | |
| (JSC::MacroAssemblerARM::): | |
| (JSC::MacroAssemblerARM::add32): | |
| (JSC::MacroAssemblerARM::and32): | |
| (JSC::MacroAssemblerARM::lshift32): | |
| (JSC::MacroAssemblerARM::mul32): | |
| (JSC::MacroAssemblerARM::not32): | |
| (JSC::MacroAssemblerARM::or32): | |
| (JSC::MacroAssemblerARM::rshift32): | |
| (JSC::MacroAssemblerARM::sub32): | |
| (JSC::MacroAssemblerARM::xor32): | |
| (JSC::MacroAssemblerARM::load32): | |
| (JSC::MacroAssemblerARM::load32WithAddressOffsetPatch): | |
| (JSC::MacroAssemblerARM::loadPtrWithPatchToLEA): | |
| (JSC::MacroAssemblerARM::load16): | |
| (JSC::MacroAssemblerARM::store32WithAddressOffsetPatch): | |
| (JSC::MacroAssemblerARM::store32): | |
| (JSC::MacroAssemblerARM::pop): | |
| (JSC::MacroAssemblerARM::push): | |
| (JSC::MacroAssemblerARM::move): | |
| (JSC::MacroAssemblerARM::swap): | |
| (JSC::MacroAssemblerARM::signExtend32ToPtr): | |
| (JSC::MacroAssemblerARM::zeroExtend32ToPtr): | |
| (JSC::MacroAssemblerARM::branch32): | |
| (JSC::MacroAssemblerARM::branch16): | |
| (JSC::MacroAssemblerARM::branchTest32): | |
| (JSC::MacroAssemblerARM::jump): | |
| (JSC::MacroAssemblerARM::branchAdd32): | |
| (JSC::MacroAssemblerARM::mull32): | |
| (JSC::MacroAssemblerARM::branchMul32): | |
| (JSC::MacroAssemblerARM::branchSub32): | |
| (JSC::MacroAssemblerARM::breakpoint): | |
| (JSC::MacroAssemblerARM::nearCall): | |
| (JSC::MacroAssemblerARM::call): | |
| (JSC::MacroAssemblerARM::ret): | |
| (JSC::MacroAssemblerARM::set32): | |
| (JSC::MacroAssemblerARM::setTest32): | |
| (JSC::MacroAssemblerARM::tailRecursiveCall): | |
| (JSC::MacroAssemblerARM::makeTailRecursiveCall): | |
| (JSC::MacroAssemblerARM::moveWithPatch): | |
| (JSC::MacroAssemblerARM::branchPtrWithPatch): | |
| (JSC::MacroAssemblerARM::storePtrWithPatch): | |
| (JSC::MacroAssemblerARM::supportsFloatingPoint): | |
| (JSC::MacroAssemblerARM::supportsFloatingPointTruncate): | |
| (JSC::MacroAssemblerARM::loadDouble): | |
| (JSC::MacroAssemblerARM::storeDouble): | |
| (JSC::MacroAssemblerARM::addDouble): | |
| (JSC::MacroAssemblerARM::subDouble): | |
| (JSC::MacroAssemblerARM::mulDouble): | |
| (JSC::MacroAssemblerARM::convertInt32ToDouble): | |
| (JSC::MacroAssemblerARM::branchDouble): | |
| (JSC::MacroAssemblerARM::branchTruncateDoubleToInt32): | |
| (JSC::MacroAssemblerARM::ARMCondition): | |
| (JSC::MacroAssemblerARM::prepareCall): | |
| (JSC::MacroAssemblerARM::call32): | |
| * assembler/X86Assembler.h: | |
| (JSC::X86Assembler::JmpSrc::enableLatePatch): | |
| * jit/ExecutableAllocator.h: | |
| (JSC::ExecutableAllocator::cacheFlush): | |
| * wtf/Platform.h: | |
| * yarr/RegexJIT.cpp: | |
| (JSC::Yarr::RegexGenerator::generateEnter): | |
| (JSC::Yarr::RegexGenerator::generateReturn): | |
| 2009-07-17 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Extend AssemblerBuffer with constant pool handling mechanism. | |
| https://bugs.webkit.org/show_bug.cgi?id=24986 | |
| Add a platform independed constant pool framework. | |
| This pool can store 32 or 64 bits values which is enough to hold | |
| any integer, pointer or double constant. | |
| * assembler/AssemblerBuffer.h: | |
| (JSC::AssemblerBuffer::putIntUnchecked): | |
| (JSC::AssemblerBuffer::putInt64Unchecked): | |
| (JSC::AssemblerBuffer::append): | |
| (JSC::AssemblerBuffer::grow): | |
| * assembler/AssemblerBufferWithConstantPool.h: Added. | |
| (JSC::): | |
| 2009-07-17 Eric Roman <eroman@chromium.org> | |
| Reviewed by Darin Adler. | |
| Build fix for non-Darwin. | |
| Add a guard for inclusion of RetainPtr.h which includes CoreFoundation.h | |
| https://bugs.webkit.org/show_bug.cgi?id=27382 | |
| * wtf/unicode/icu/CollatorICU.cpp: | |
| 2009-07-17 Alexey Proskuryakov <ap@webkit.org> | |
| Reviewed by John Sullivan. | |
| Get user default collation order via a CFLocale API when available. | |
| * wtf/unicode/icu/CollatorICU.cpp: (WTF::Collator::userDefault): | |
| 2009-07-17 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Fix the include path for the Symbian port | |
| https://bugs.webkit.org/show_bug.cgi?id=27358 | |
| * JavaScriptCore.pri: | |
| 2009-07-17 Csaba Osztrogonac <oszi@inf.u-szeged.hu> | |
| Reviewed by David Levin. | |
| Build fix on platforms don't have MMAP. | |
| https://bugs.webkit.org/show_bug.cgi?id=27365 | |
| * interpreter/RegisterFile.h: Including stdio.h irrespectively of HAVE(MMAP) | |
| 2009-07-16 Fumitoshi Ukai <ukai@chromium.org> | |
| Reviewed by David Levin. | |
| Add --web-sockets flag and ENABLE_WEB_SOCKETS define. | |
| https://bugs.webkit.org/show_bug.cgi?id=27206 | |
| Add ENABLE_WEB_SOCKETS | |
| * Configurations/FeatureDefines.xcconfig: add ENABLE_WEB_SOCKETS | |
| 2009-07-16 Maxime Simon <simon.maxime@gmail.com> | |
| Reviewed by Eric Seidel. | |
| Added Haiku-specific files for JavaScriptCore. | |
| https://bugs.webkit.org/show_bug.cgi?id=26620 | |
| * wtf/haiku/MainThreadHaiku.cpp: Added. | |
| (WTF::initializeMainThreadPlatform): | |
| (WTF::scheduleDispatchFunctionsOnMainThread): | |
| 2009-07-16 Gavin Barraclough <barraclough@apple.com> | |
| RS by Oliver Hunt. | |
| Revert r45969, this fix does not appear to be valid. | |
| https://bugs.webkit.org/show_bug.cgi?id=27077 | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::~CodeBlock): | |
| (JSC::CodeBlock::unlinkCallers): | |
| * jit/JIT.cpp: | |
| * jit/JIT.h: | |
| 2009-07-16 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Oliver Hunt. | |
| Allow custom memory allocation control in ExceptionInfo and RareData struct | |
| https://bugs.webkit.org/show_bug.cgi?id=27336 | |
| Inherits ExceptionInfo and RareData struct from FastAllocBase because these | |
| have been instantiated by 'new' in JavaScriptCore/bytecode/CodeBlock.cpp:1289 and | |
| in JavaScriptCore/bytecode/CodeBlock.h:453. | |
| Remove unnecessary WTF:: namespace from CodeBlock inheritance. | |
| * bytecode/CodeBlock.h: | |
| 2009-07-16 Mark Rowe <mrowe@apple.com> | |
| Rubber-stamped by Geoff Garen. | |
| Fix FeatureDefines.xcconfig to not be out of sync with the rest of the world. | |
| * Configurations/FeatureDefines.xcconfig: | |
| 2009-07-16 Yong Li <yong.li@torchmobile.com> | |
| Reviewed by George Staikos. | |
| https://bugs.webkit.org/show_bug.cgi?id=27320 | |
| _countof is only included in CE6; for CE5 we need to define it ourself | |
| * wtf/Platform.h: | |
| 2009-07-16 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
| Reviewed by Oliver Hunt. | |
| Workers + garbage collector: weird crashes | |
| https://bugs.webkit.org/show_bug.cgi?id=27077 | |
| We need to unlink cached method call sites when a function is destroyed. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::~CodeBlock): | |
| (JSC::CodeBlock::unlinkCallers): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::unlinkMethodCall): | |
| * jit/JIT.h: | |
| 2009-07-15 Steve Falkenburg <sfalken@apple.com> | |
| Windows Build fix. | |
| Visual Studio reset our intermediate directory on us. | |
| This sets it back. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| * JavaScriptCore.vcproj/testapi/testapi.vcproj: | |
| 2009-07-15 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| https://bugs.webkit.org/show_bug.cgi?id=26794 | |
| Make Yacc-generated parsers to use fastMalloc/fastFree. | |
| Define YYMALLOC and YYFREE to fastMalloc and fastFree | |
| respectively. | |
| * parser/Grammar.y: | |
| 2009-07-15 Darin Adler <darin@apple.com> | |
| Fix a build for a particular Apple configuration. | |
| * wtf/FastAllocBase.h: Change include to use "" style for | |
| including another wtf header. This is the style we use for | |
| including other public headers in the same directory. | |
| 2009-07-15 George Staikos <george.staikos@torchmobile.com> | |
| Reviewed by Adam Treat. | |
| https://bugs.webkit.org/show_bug.cgi?id=27303 | |
| Implement createThreadInternal for WinCE. | |
| Contains changes by George Staikos <george.staikos@torchmobile.com> and Joe Mason <joe.mason@torchmobile.com> | |
| * wtf/ThreadingWin.cpp: | |
| (WTF::createThreadInternal): | |
| 2009-07-15 Joe Mason <joe.mason@torchmobile.com> | |
| Reviewed by George Staikos. | |
| https://bugs.webkit.org/show_bug.cgi?id=27298 | |
| Platform defines for WINCE. | |
| Contains changes by Yong Li <yong.li@torchmobile.com>, | |
| George Staikos <george.staikos@torchmobile.com> and Joe Mason <joe.mason@torchmobile.com> | |
| * wtf/Platform.h: | |
| 2009-07-15 Yong Li <yong.li@torchmobile.com> | |
| Reviewed by Adam Treat. | |
| https://bugs.webkit.org/show_bug.cgi?id=27306 | |
| Use RegisterClass instead of RegisterClassEx on WinCE. | |
| * wtf/win/MainThreadWin.cpp: | |
| (WTF::initializeMainThreadPlatform): | |
| 2009-07-15 Yong Li <yong.li@torchmobile.com> | |
| Reviewed by George Staikos. | |
| https://bugs.webkit.org/show_bug.cgi?id=27301 | |
| Use OutputDebugStringW on WinCE since OutputDebugStringA is not supported | |
| Originally written by Yong Li <yong.li@torchmobile.com> and refactored by | |
| Joe Mason <joe.mason@torchmobile.com> | |
| * wtf/Assertions.cpp: vprintf_stderr_common | |
| 2009-07-15 Yong Li <yong.li@torchmobile.com> | |
| Reviewed by George Staikos. | |
| https://bugs.webkit.org/show_bug.cgi?id=27020 | |
| msToGregorianDateTime should set utcOffset to 0 when outputIsUTC is false | |
| * wtf/DateMath.cpp: | |
| (WTF::gregorianDateTimeToMS): | |
| 2009-07-15 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| [Qt] Cleanup - Remove obsolete code from the make system | |
| https://bugs.webkit.org/show_bug.cgi?id=27299 | |
| * JavaScriptCore.pro: | |
| * jsc.pro: | |
| 2009-07-07 Norbert Leser <norbert.leser@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| https://bugs.webkit.org/show_bug.cgi?id=27056 | |
| Alternate bool operator for codewarrior compiler (WINSCW). | |
| Compiler (latest b482) reports error for UnspecifiedBoolType construct: | |
| "illegal explicit conversion from 'WTF::OwnArrayPtr<JSC::Register>' to 'bool'" | |
| Same fix as in r38391. | |
| * JavaScriptCore/wtf/OwnArrayPtr.h: | |
| 2009-07-15 Norbert Leser <norbert.leser@nokia.com> | |
| Reviewed by Darin Adler. | |
| Qualify include path with wtf to fix compilation | |
| on Symbian. | |
| https://bugs.webkit.org/show_bug.cgi?id=27055 | |
| * interpreter/Interpreter.h: | |
| 2009-07-15 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Dave Kilzer. | |
| Turn off non-portable date manipulations for SYMBIAN | |
| https://bugs.webkit.org/show_bug.cgi?id=27064 | |
| Introduce HAVE(TM_GMTOFF), HAVE(TM_ZONE) and HAVE(TIMEGM) guards | |
| and place the rules for controlling the guards in Platform.h. | |
| Turn off these newly introduced guards for SYMBIAN. | |
| * wtf/DateMath.cpp: | |
| (WTF::calculateUTCOffset): | |
| * wtf/DateMath.h: | |
| (WTF::GregorianDateTime::GregorianDateTime): | |
| (WTF::GregorianDateTime::operator tm): | |
| * wtf/Platform.h: | |
| 2009-07-15 Norbert Leser <norbert.leser@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Undef ASSERT on Symbian, to avoid excessive warnings | |
| https://bugs.webkit.org/show_bug.cgi?id=27052 | |
| * wtf/Assertions.h: | |
| 2009-07-15 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Simon Hausmann. | |
| REGRESSION: fast/js/postfix-syntax.html fails with interpreter | |
| https://bugs.webkit.org/show_bug.cgi?id=27294 | |
| When postfix operators operating on locals assign to the same local | |
| the order of operations has to be to store the incremented value, then | |
| store the unmodified number. Rather than implementing this subtle | |
| semantic in the interpreter I've just made the logic explicit in the | |
| bytecode generator, so x=x++ effectively becomes x=ToNumber(x) (for a | |
| local var x). | |
| * parser/Nodes.cpp: | |
| (JSC::emitPostIncOrDec): | |
| 2009-07-15 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Simon Hausmann. | |
| REGRESSION(43559): fast/js/kde/arguments-scope.html fails with interpreter | |
| https://bugs.webkit.org/show_bug.cgi?id=27259 | |
| The interpreter was incorrectly basing its need to create the arguments object | |
| based on the presence of the callframe's argument reference rather than the local | |
| arguments reference. Based on this it then overrode the local variable reference. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| 2009-07-14 Steve Falkenburg <sfalken@apple.com> | |
| Reorganize JavaScriptCore headers into: | |
| API: include/JavaScriptCore/ | |
| Private: include/private/JavaScriptCore/ | |
| Reviewed by Darin Adler. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: | |
| * JavaScriptCore.vcproj/testapi/testapi.vcproj: | |
| * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: | |
| 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| Change JSCell's superclass to NoncopyableCustomAllocated | |
| https://bugs.webkit.org/show_bug.cgi?id=27248 | |
| JSCell class customizes operator new, since Noncopyable will be | |
| inherited from FastAllocBase, NoncopyableCustomAllocated has | |
| to be used. | |
| * runtime/JSCell.h: | |
| 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| Change all Noncopyable inheriting visibility to public. | |
| https://bugs.webkit.org/show_bug.cgi?id=27225 | |
| Change all Noncopyable inheriting visibility to public because | |
| it is needed to the custom allocation framework (bug #20422). | |
| * bytecode/SamplingTool.h: | |
| * bytecompiler/RegisterID.h: | |
| * interpreter/CachedCall.h: | |
| * interpreter/RegisterFile.h: | |
| * parser/Lexer.h: | |
| * parser/Parser.h: | |
| * runtime/ArgList.h: | |
| * runtime/BatchedTransitionOptimizer.h: | |
| * runtime/Collector.h: | |
| * runtime/CommonIdentifiers.h: | |
| * runtime/JSCell.h: | |
| * runtime/JSGlobalObject.h: | |
| * runtime/JSLock.h: | |
| * runtime/JSONObject.cpp: | |
| * runtime/SmallStrings.cpp: | |
| * runtime/SmallStrings.h: | |
| * wtf/CrossThreadRefCounted.h: | |
| * wtf/GOwnPtr.h: | |
| * wtf/Locker.h: | |
| * wtf/MessageQueue.h: | |
| * wtf/OwnArrayPtr.h: | |
| * wtf/OwnFastMallocPtr.h: | |
| * wtf/OwnPtr.h: | |
| * wtf/RefCounted.h: | |
| * wtf/ThreadSpecific.h: | |
| * wtf/Threading.h: | |
| * wtf/Vector.h: | |
| * wtf/unicode/Collator.h: | |
| 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| Change ParserArenaRefCounted's superclass to RefCountedCustomAllocated | |
| https://bugs.webkit.org/show_bug.cgi?id=27249 | |
| ParserArenaDeletable customizes operator new, to avoid double inheritance | |
| ParserArenaDeletable's superclass has been changed to RefCountedCustomAllocated. | |
| * parser/Nodes.h: | |
| 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| Add RefCountedCustomAllocated to RefCounted.h | |
| https://bugs.webkit.org/show_bug.cgi?id=27232 | |
| Some class which are inherited from RefCounted customize | |
| operator new, but RefCounted is inherited from Noncopyable | |
| which will be inherited from FastAllocBase. To avoid | |
| conflicts Noncopyable inheriting was moved down to RefCounted | |
| and to avoid double inheritance this class has been added. | |
| * wtf/RefCounted.h: | |
| (WTF::RefCountedCustomAllocated::deref): | |
| (WTF::RefCountedCustomAllocated::~RefCountedCustomAllocated): | |
| 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| Add NoncopyableCustomAllocated to Noncopyable.h. | |
| https://bugs.webkit.org/show_bug.cgi?id=27228 | |
| Some classes which inherited from Noncopyable overrides operator new | |
| since Noncopyable'll be inherited from FastAllocBase, Noncopyable.h | |
| needs to be extended with this new class to support the overriding. | |
| * wtf/Noncopyable.h: | |
| (WTFNoncopyable::NoncopyableCustomAllocated::NoncopyableCustomAllocated): | |
| (WTFNoncopyable::NoncopyableCustomAllocated::~NoncopyableCustomAllocated): | |
| 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| Allow custom memory allocation control for JavaScriptCore's IdentifierTable class | |
| https://bugs.webkit.org/show_bug.cgi?id=27260 | |
| Inherits IdentifierTable class from FastAllocBase because it has been | |
| instantiated by 'new' in JavaScriptCore/runtime/Identifier.cpp:70. | |
| * runtime/Identifier.cpp: | |
| 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| Allow custom memory allocation control for JavaScriptCore's Profiler class | |
| https://bugs.webkit.org/show_bug.cgi?id=27253 | |
| Inherits Profiler class from FastAllocBase because it has been instantiated by | |
| 'new' in JavaScriptCore/profiler/Profiler.cpp:56. | |
| * profiler/Profiler.h: | |
| 2009-07-06 George Staikos <george.staikos@torchmobile.com> | |
| Reviewed by Adam Treat. | |
| Authors: George Staikos <george.staikos@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com>, Makoto Matsumoto <matumoto@math.keio.ac.jp>, Takuji Nishimura | |
| https://bugs.webkit.org/show_bug.cgi?id=27030 | |
| Implement custom RNG for WinCE using Mersenne Twister | |
| * wtf/RandomNumber.cpp: | |
| (WTF::randomNumber): | |
| * wtf/RandomNumberSeed.h: | |
| (WTF::initializeRandomNumberGenerator): | |
| * wtf/wince/mt19937ar.c: Added. | |
| (init_genrand): | |
| (init_by_array): | |
| (genrand_int32): | |
| (genrand_int31): | |
| (genrand_real1): | |
| (genrand_real2): | |
| (genrand_real3): | |
| (genrand_res53): | |
| 2009-07-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
| Unreviewed make dist build fix. | |
| * GNUmakefile.am: | |
| 2009-07-13 Drew Wilson <atwilson@google.com> | |
| Reviewed by David Levin. | |
| Add ENABLE(SHARED_WORKERS) flag and define SharedWorker APIs | |
| https://bugs.webkit.org/show_bug.cgi?id=26932 | |
| Added ENABLE(SHARED_WORKERS) flag (off by default). | |
| * Configurations/FeatureDefines.xcconfig: | |
| 2009-07-07 Norbert Leser <norbert.leser@nokia.com> | |
| Reviewed by Maciej Stachoviak. | |
| https://bugs.webkit.org/show_bug.cgi?id=27058 | |
| Removed superfluous parenthesis around single expression. | |
| Compilers on Symbian platform fail to properly parse and compile. | |
| * JavaScriptCore/wtf/Platform.h: | |
| 2009-07-13 Norbert Leser <norbert.leser@nokia.com> | |
| Reviewed by Maciej Stachoviak. | |
| https://bugs.webkit.org/show_bug.cgi?id=27054 | |
| Renamed Translator to HashTranslator | |
| Codewarrior compiler (WINSCW) latest b482 cannot resolve typename | |
| mismatch between template declaration and definition | |
| (HashTranslator / Translator) | |
| * wtf/HashSet.h: | |
| 2009-07-13 Norbert Leser <norbert.leser@nokia.com> | |
| Reviewed by Eric Seidel. | |
| https://bugs.webkit.org/show_bug.cgi?id=27053 | |
| Ambiguity in LabelScope initialization | |
| Codewarrior compiler (WINSCW) latest b482 on Symbian cannot resolve | |
| type of "0" unambiguously. Set expression explicitly to | |
| PassRefPtr<Label>::PassRefPtr() | |
| * bytecompiler/BytecodeGenerator.cpp | |
| 2009-07-11 Simon Fraser <simon.fraser@apple.com> | |
| Enable support for accelerated compositing and 3d transforms on Leopard. | |
| <https://bugs.webkit.org/show_bug.cgi?id=20166> | |
| <rdar://problem/6120614> | |
| Reviewed by Oliver Hunt. | |
| * Configurations/FeatureDefines.xcconfig: | |
| * wtf/Platform.h: | |
| 2009-07-10 Mark Rowe <mrowe@apple.com> | |
| Second part of the "make Windows happier" dance. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-07-10 Mark Rowe <mrowe@apple.com> | |
| Try and make the Windows build happy. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-07-10 Kevin McCullough <kmccullough@apple.com> | |
| Reviewed by Geoffrey Garen. | |
| * debugger/Debugger.h: Made this function virtual for use in WebCore's | |
| WebInspector. | |
| 2009-07-10 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Darin Adler. | |
| ParserArenaDeletable should override delete | |
| https://bugs.webkit.org/show_bug.cgi?id=26790 | |
| ParserArenaDeletable overrides new, but it does not override delete. | |
| ParserArenaDeletable must be freed by fastFree | |
| because it is allocated by fastMalloc. | |
| * parser/NodeConstructors.h: | |
| (JSC::ParserArenaDeletable::operator delete): | |
| * parser/Nodes.h: | |
| 2009-07-10 Adam Roben <aroben@apple.com> | |
| Sort all our Xcode projects | |
| Accomplished using sort-Xcode-project-file. | |
| Requested by Dave Kilzer. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: | |
| 2009-07-09 Maciej Stachowiak <mjs@apple.com> | |
| Not reviewed, build fix. | |
| Windows build fix for the last change. | |
| * wtf/dtoa.cpp: Forgot to include Vector.h | |
| 2009-07-09 Maciej Stachowiak <mjs@apple.com> | |
| Reviewed by Darin Adler. | |
| REGRESSION: crash in edge cases of floating point parsing. | |
| https://bugs.webkit.org/show_bug.cgi?id=27110 | |
| <rdar://problem/7044458> | |
| Tests: fast/css/number-parsing-crash.html | |
| fast/css/number-parsing-crash.html | |
| fast/js/number-parsing-crash.html | |
| * wtf/dtoa.cpp: | |
| (WTF::BigInt::BigInt): Converted this to more a proper class, using a Vector | |
| with inline capacity | |
| (WTF::lshift): Rearranged logic somewhat nontrivially to deal with the new way of sizing BigInts. | |
| Added an assertion to verify that invariants are maintained. | |
| All other functions are adapted fairly mechanically to the above changes. | |
| (WTF::BigInt::clear): | |
| (WTF::BigInt::size): | |
| (WTF::BigInt::resize): | |
| (WTF::BigInt::words): | |
| (WTF::BigInt::append): | |
| (WTF::multadd): | |
| (WTF::s2b): | |
| (WTF::i2b): | |
| (WTF::mult): | |
| (WTF::cmp): | |
| (WTF::diff): | |
| (WTF::b2d): | |
| (WTF::d2b): | |
| (WTF::ratio): | |
| (WTF::strtod): | |
| (WTF::quorem): | |
| (WTF::dtoa): | |
| 2009-07-09 Drew Wilson <atwilson@google.com> | |
| Reviewed by Alexey Proskuryakov. | |
| Turned on CHANNEL_MESSAGING by default because the MessageChannel API | |
| can now be implemented for Web Workers and is reasonably stable. | |
| * Configurations/FeatureDefines.xcconfig: | |
| 2009-07-09 Oliver Hunt <oliver@apple.com> | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| 2009-07-09 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Darin Adler. | |
| Bug 27016 - Interpreter crashes due to invalid array indexes | |
| <https://bugs.webkit.org/show_bug.cgi?id=27016> | |
| Unsigned vs signed conversions results in incorrect behaviour in | |
| 64bit interpreter builds. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::privateExecute): | |
| 2009-07-09 Dimitri Glazkov <dglazkov@chromium.org> | |
| Reviewed by Darin Fisher. | |
| [Chromium] Upstream JavaScriptCore.gypi, the project file for Chromium build. | |
| https://bugs.webkit.org/show_bug.cgi?id=27135 | |
| * JavaScriptCore.gypi: Added. | |
| 2009-07-09 Joe Mason <joe.mason@torchmobile.com> | |
| Reviewed by George Staikos. | |
| Authors: Yong Li <yong.li@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com> | |
| https://bugs.webkit.org/show_bug.cgi?id=27031 | |
| Add an override for deleteOwnedPtr(HDC) on Windows | |
| * wtf/OwnPtrCommon.h: | |
| * wtf/OwnPtrWin.cpp: | |
| (WTF::deleteOwnedPtr): | |
| 2009-07-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
| Reviewed by Darin Adler. | |
| Guard singal.h dependency with HAVE(SIGNAL_H) to enable building jsc | |
| on SYMBIAN. | |
| https://bugs.webkit.org/show_bug.cgi?id=27026 | |
| Based on Norbert Leser's work. | |
| * jsc.cpp: | |
| (printUsageStatement): | |
| (parseArguments): | |
| * wtf/Platform.h: | |
| 2009-07-07 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Sam Weinig. | |
| Stop loading constants into the register file. | |
| Instead, use high register values (highest bit bar the sign bit set) to indicate | |
| constants in the instruction stream, and when we encounter such a value load it | |
| directly from the CodeBlock. | |
| Since constants are no longer copied into the register file, this patch renders | |
| the 'unexpected constant' mechanism redundant, and removes it. | |
| 2% improvement, thanks to Sam Weinig. | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::dump): | |
| (JSC::CodeBlock::CodeBlock): | |
| (JSC::CodeBlock::mark): | |
| (JSC::CodeBlock::shrinkToFit): | |
| * bytecode/CodeBlock.h: | |
| (JSC::CodeBlock::isTemporaryRegisterIndex): | |
| (JSC::CodeBlock::constantRegister): | |
| (JSC::CodeBlock::isConstantRegisterIndex): | |
| (JSC::CodeBlock::getConstant): | |
| (JSC::ExecState::r): | |
| * bytecode/Opcode.h: | |
| * bytecompiler/BytecodeGenerator.cpp: | |
| (JSC::BytecodeGenerator::preserveLastVar): | |
| (JSC::BytecodeGenerator::BytecodeGenerator): | |
| (JSC::BytecodeGenerator::addConstantValue): | |
| (JSC::BytecodeGenerator::emitEqualityOp): | |
| (JSC::BytecodeGenerator::emitLoad): | |
| (JSC::BytecodeGenerator::emitResolveBase): | |
| (JSC::BytecodeGenerator::emitResolveWithBase): | |
| (JSC::BytecodeGenerator::emitNewError): | |
| * bytecompiler/BytecodeGenerator.h: | |
| (JSC::BytecodeGenerator::emitNode): | |
| * interpreter/CallFrame.h: | |
| (JSC::ExecState::noCaller): | |
| (JSC::ExecState::hasHostCallFrameFlag): | |
| (JSC::ExecState::addHostCallFrameFlag): | |
| (JSC::ExecState::removeHostCallFrameFlag): | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::resolve): | |
| (JSC::Interpreter::resolveSkip): | |
| (JSC::Interpreter::resolveGlobal): | |
| (JSC::Interpreter::resolveBase): | |
| (JSC::Interpreter::resolveBaseAndProperty): | |
| (JSC::Interpreter::resolveBaseAndFunc): | |
| (JSC::Interpreter::dumpRegisters): | |
| (JSC::Interpreter::throwException): | |
| (JSC::Interpreter::createExceptionScope): | |
| (JSC::Interpreter::privateExecute): | |
| (JSC::Interpreter::retrieveArguments): | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileMainPass): | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::emitLoadDouble): | |
| (JSC::JIT::emitLoadInt32ToDouble): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_new_error): | |
| (JSC::JIT::emit_op_enter): | |
| (JSC::JIT::emit_op_enter_with_activation): | |
| * parser/Nodes.cpp: | |
| (JSC::DeleteResolveNode::emitBytecode): | |
| (JSC::DeleteValueNode::emitBytecode): | |
| (JSC::PrefixResolveNode::emitBytecode): | |
| * runtime/JSActivation.cpp: | |
| (JSC::JSActivation::JSActivation): | |
| * wtf/Platform.h: | |
| 2009-07-07 Mark Rowe <mrowe@apple.com> | |
| Reviewed by Darin Adler. | |
| Fix <https://bugs.webkit.org/show_bug.cgi?id=27025> / <rdar://problem/7033448>. | |
| Bug 27025: Crashes and regression test failures related to regexps in 64-bit | |
| For x86_64 RegexGenerator uses rbx, a callee-save register, as a scratch register but | |
| neglects to save and restore it. The change in handling of the output vector in r45545 | |
| altered code generation so that the RegExp::match was now storing important data in rbx, | |
| which caused crashes and bogus results when it was clobbered. | |
| * yarr/RegexJIT.cpp: | |
| (JSC::Yarr::RegexGenerator::generateEnter): Save rbx. | |
| (JSC::Yarr::RegexGenerator::generateReturn): Restore rbx. | |
| 2009-07-06 Ada Chan <adachan@apple.com> | |
| Reviewed by Darin Adler and Mark Rowe. | |
| Decommitted spans are added to the list of normal spans rather than | |
| the returned spans in TCMalloc_PageHeap::Delete(). | |
| https://bugs.webkit.org/show_bug.cgi?id=26998 | |
| In TCMalloc_PageHeap::Delete(), the deleted span can be decommitted in | |
| the process of merging with neighboring spans that are also decommitted. | |
| The merged span needs to be placed in the list of returned spans (spans | |
| whose memory has been returned to the system). Right now it's always added | |
| to the list of the normal spans which can theoretically cause thrashing. | |
| * wtf/FastMalloc.cpp: | |
| (WTF::TCMalloc_PageHeap::Delete): | |
| 2009-07-05 Lars Knoll <lars.knoll@nokia.com> | |
| Reviewed by Maciej Stachowiak. | |
| https://bugs.webkit.org/show_bug.cgi?id=26843 | |
| Fix run-time crashes in JavaScriptCore with the Metrowerks compiler on Symbian. | |
| The Metrowerks compiler on the Symbian platform moves the globally | |
| defined Hashtables into read-only memory, despite one of the members | |
| being mutable. This causes crashes at run-time due to write access to | |
| read-only memory. | |
| Avoid the use of const with this compiler by introducing the | |
| JSC_CONST_HASHTABLE macro. | |
| Based on idea by Norbert Leser. | |
| * runtime/Lookup.h: Define JSC_CONST_HASHTABLE as const for !WINSCW. | |
| * create_hash_table: Use JSC_CONST_HASHTABLE for hashtables. | |
| * runtime/JSGlobalData.cpp: Import various global hashtables via the macro. | |
| 2009-07-04 Dan Bernstein <mitz@apple.com> | |
| - debug build fix | |
| * runtime/RegExpConstructor.cpp: | |
| (JSC::RegExpConstructor::getLastParen): | |
| 2009-07-03 Yong Li <yong.li@torchmobile.com> | |
| Reviewed by Maciej Stachowiak (and revised slightly) | |
| RegExp::match to be optimized | |
| https://bugs.webkit.org/show_bug.cgi?id=26957 | |
| Allow regexp matching to use Vectors with inline capacity instead of | |
| allocating a new ovector buffer every time. | |
| ~5% speedup on SunSpider string-unpack-code test, 0.3% on SunSpider overall. | |
| * runtime/RegExp.cpp: | |
| (JSC::RegExp::match): | |
| * runtime/RegExp.h: | |
| * runtime/RegExpConstructor.cpp: | |
| (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate): | |
| (JSC::RegExpConstructorPrivate::lastOvector): | |
| (JSC::RegExpConstructorPrivate::tempOvector): | |
| (JSC::RegExpConstructorPrivate::changeLastOvector): | |
| (JSC::RegExpConstructor::performMatch): | |
| (JSC::RegExpMatchesArray::RegExpMatchesArray): | |
| (JSC::RegExpMatchesArray::fillArrayInstance): | |
| (JSC::RegExpConstructor::getBackref): | |
| (JSC::RegExpConstructor::getLastParen): | |
| (JSC::RegExpConstructor::getLeftContext): | |
| (JSC::RegExpConstructor::getRightContext): | |
| * runtime/StringPrototype.cpp: | |
| (JSC::stringProtoFuncSplit): | |
| 2009-06-30 Kwang Yul Seo <skyul@company100.net> | |
| Reviewed by Eric Seidel. | |
| Override operator new/delete with const std::nothrow_t& as the second | |
| argument. | |
| https://bugs.webkit.org/show_bug.cgi?id=26792 | |
| On Windows CE, operator new/delete, new[]/delete[] with const | |
| std::nothrow_t& must be overrided because some standard template | |
| libraries use these operators. | |
| The problem occurs when memory allocated by new(size_t s, const | |
| std::nothrow_t&) is freed by delete(void* p). This causes the umatched | |
| malloc/free problem. | |
| The patch overrides all new, delete, new[] and delete[] to use | |
| fastMaloc and fastFree consistently. | |
| * wtf/FastMalloc.h: | |
| (throw): | |
| 2009-06-30 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Sam Weinig. | |
| <https://bugs.webkit.org/show_bug.cgi?id=24986> | |
| Remove unnecessary references to AssemblerBuffer. | |
| * interpreter/Interpreter.cpp: | |
| * interpreter/Interpreter.h: | |
| 2009-06-29 David Levin <levin@chromium.org> | |
| Reviewed by Oliver Hunt. | |
| Still seeing occasional leaks from UString::sharedBuffer code | |
| https://bugs.webkit.org/show_bug.cgi?id=26420 | |
| The problem is that the pointer to the memory allocation isn't visible | |
| by "leaks" due to the lower bits being used as flags. The fix is to | |
| make the pointer visible in memory (in debug only). The downside of | |
| this fix that the memory allocated by sharedBuffer will still look like | |
| a leak in non-debug builds when any flags are set. | |
| * wtf/PtrAndFlags.h: | |
| (WTF::PtrAndFlags::set): | |
| 2009-06-29 Sam Weinig <sam@webkit.org> | |
| Reviewed by Mark Rowe. | |
| Remove more unused scons support. | |
| * SConstruct: Removed. | |
| 2009-06-29 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| <rdar://problem/7016214> JSON.parse fails to parse valid JSON with most Unicode characters | |
| <https://bugs.webkit.org/show_bug.cgi?id=26802> | |
| In the original JSON.parse patch unicode was handled correctly, however in some last | |
| minute "clean up" I oversimplified isSafeStringCharacter. This patch corrects this bug. | |
| * runtime/LiteralParser.cpp: | |
| (JSC::isSafeStringCharacter): | |
| (JSC::LiteralParser::Lexer::lexString): | |
| 2009-06-26 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Dan Bernstein. | |
| <rdar://problem/7009684> REGRESSION(r45039): Crashes inside JSEvent::put on PowerPC (26746) | |
| <https://bugs.webkit.org/show_bug.cgi?id=26746> | |
| Fix for r45039 incorrectly uncached a get_by_id by converting it to put_by_id. Clearly this | |
| is less than correct. This patch corrects that error. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::tryCacheGetByID): | |
| 2009-06-26 Eric Seidel <eric@webkit.org> | |
| No review, only rolling out r45259. | |
| Roll out r45259 after crash appeared on the bots: | |
| plugins/undefined-property-crash.html | |
| ASSERTION FAILED: s <= HeapConstants<heapType>::cellSize | |
| (leopard-intel-debug-tests/build/JavaScriptCore/runtime/Collector.cpp:278 | |
| void* JSC::Heap::heapAllocate(size_t) [with JSC::HeapType heapType = PrimaryHeap]) | |
| * runtime/DateInstance.cpp: | |
| * runtime/Identifier.cpp: | |
| * runtime/Lookup.h: | |
| * runtime/RegExpConstructor.cpp: | |
| * runtime/RegExpObject.h: | |
| * runtime/ScopeChain.h: | |
| * runtime/UString.h: | |
| 2009-06-26 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
| Reviewed by Simon Hausmann. | |
| Add support for QDataStream operators to Vector. | |
| * wtf/Vector.h: | |
| (WTF::operator<<): | |
| (WTF::operator>>): | |
| 2009-06-24 Sam Weinig <sam@webkit.org> | |
| Reviewed by Gavin Barraclough. | |
| Make the opcode sampler work once again. | |
| * jit/JIT.h: | |
| (JSC::JIT::compileGetByIdProto): | |
| (JSC::JIT::compileGetByIdSelfList): | |
| (JSC::JIT::compileGetByIdProtoList): | |
| (JSC::JIT::compileGetByIdChainList): | |
| (JSC::JIT::compileGetByIdChain): | |
| (JSC::JIT::compilePutByIdTransition): | |
| (JSC::JIT::compileCTIMachineTrampolines): | |
| (JSC::JIT::compilePatchGetArrayLength): | |
| * jit/JITStubCall.h: | |
| (JSC::JITStubCall::call): | |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Maciej Stachowiak. | |
| Extend FastAllocBase.h with 'using WTF::FastAllocBase' to avoid | |
| unnecessary WTF:: usings. | |
| Remove existing unnecessary WTF:: usings. | |
| * interpreter/Interpreter.h: | |
| * profiler/CallIdentifier.h: | |
| * runtime/ScopeChain.h: | |
| * wtf/FastAllocBase.h: | |
| 2009-06-24 David Levin <levin@chromium.org> | |
| Fix all builds. | |
| * bytecode/CodeBlock.h: | |
| * bytecompiler/BytecodeGenerator.h: | |
| * interpreter/Register.h: | |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Maciej Stachowiak. | |
| https://bugs.webkit.org/show_bug.cgi?id=26677 | |
| Inherits CodeBlock class from FastAllocBase because it | |
| has been instantiated by 'new' in JavaScriptCore/bytecode/CodeBlock.h:217. | |
| * bytecode/CodeBlock.h: | |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Maciej Stachowiak. | |
| https://bugs.webkit.org/show_bug.cgi?id=26676 | |
| Inherits BytecodeGenerator class from FastAllocBase because it has been | |
| instantiated by 'new' in JavaScriptCore/parser/Nodes.cpp:1892. | |
| * bytecompiler/BytecodeGenerator.h: | |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Maciej Stachowiak. | |
| https://bugs.webkit.org/show_bug.cgi?id=26675 | |
| Inherits Register class from FastAllocBase because it has been | |
| instantiated by 'new' in JavaScriptCore/runtime/JSVariableObject.h:149. | |
| * interpreter/Register.h: | |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=26674 | |
| Inherits HashMap class from FastAllocBase because it has been | |
| instantiated by 'new' in JavaScriptCore/runtime/Structure.cpp:458. | |
| * wtf/HashMap.h: | |
| 2009-06-24 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Darin Adler. | |
| <rdar://problem/6940519> REGRESSION (Safari 4 Public Beta - TOT): google.com/adplanner shows blank page instead of site details in "basic research' | |
| The problem was caused by the page returned with a function using a | |
| var declaration list containing around ~3000 variables. The solution | |
| to this is to flatten the comma expression representation and make | |
| codegen comma expressions and initializer lists iterative rather than | |
| recursive. | |
| * parser/Grammar.y: | |
| * parser/NodeConstructors.h: | |
| (JSC::CommaNode::CommaNode): | |
| * parser/Nodes.cpp: | |
| (JSC::CommaNode::emitBytecode): | |
| * parser/Nodes.h: | |
| (JSC::ExpressionNode::isCommaNode): | |
| (JSC::CommaNode::isCommaNode): | |
| (JSC::CommaNode::append): | |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Maciej Stachowiak. | |
| https://bugs.webkit.org/show_bug.cgi?id=26645 | |
| Inherits ScopeChainNode class from FastAllocBase because it has been | |
| instantiated by 'new' in JavaScriptCore/runtime/ScopeChain.h:95. | |
| * wtf/RefPtr.h: | |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=26648 | |
| Inherits Deque class from FastAllocBase because it has been | |
| instantiated by 'new' with DEFINE_STATIC_LOCAL macro in | |
| JavaScriptCore/wtf/MainThread.cpp:62. | |
| * wtf/Deque.h: | |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| https://bugs.webkit.org/show_bug.cgi?id=26644 | |
| Inherits RefPtr class from FastAllocBase because it has been | |
| instantiated by 'new' in JavaScriptCore/runtime/StructureChain.cpp:41. | |
| * wtf/RefPtr.h: | |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| Inherits HashSet class from FastAllocBase, because it has been | |
| instantiated by 'new' in JavaScriptCore/runtime/Collector.h:116. | |
| * wtf/HashSet.h: | |
| 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| Inherits Vector class from FastAllocBase because it has been | |
| instantiated by 'new' in JavaScriptCore/runtime/Structure.cpp:633. | |
| * wtf/Vector.h: | |
| 2009-06-24 Norbert Leser <norbert.leser@nokia.com> | |
| Reviewed by Maciej Stachoviak. | |
| The BytecodeGenerator objects were instantiated on stack, which takes up ~38kB per instance | |
| (each instance includes copy of JSC::CodeBlock with large SymbolTable, etc.). | |
| Specifically, since there is nested invocation (e.g., GlobalCode --> FunctionCode), | |
| the stack overflows immediately on Symbian hardware (max. 80 kB). | |
| Proposed change allocates generator objects on heap. | |
| Performance impact (if any) should be negligible and change is proposed as general fix, | |
| rather than ifdef'd for SYMBIAN. | |
| * parser/Nodes.cpp: | |
| (JSC::ProgramNode::generateBytecode): | |
| (JSC::EvalNode::generateBytecode): | |
| (JSC::EvalNode::bytecodeForExceptionInfoReparse): | |
| (JSC::FunctionBodyNode::generateBytecode): | |
| (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse): | |
| 2009-06-23 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| <rdar://problem/6992806> REGRESSION: Enumeration can skip new properties in cases of prototypes that have more than 64 (26593) | |
| <https://bugs.webkit.org/show_bug.cgi?id=26593> | |
| Do not attempt to cache structure chains if they contain a dictionary at any level. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::tryCachePutByID): | |
| (JSC::Interpreter::tryCacheGetByID): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::tryCachePutByID): | |
| * runtime/Structure.cpp: | |
| (JSC::Structure::getEnumerablePropertyNames): | |
| (JSC::Structure::addPropertyTransition): | |
| * runtime/StructureChain.cpp: | |
| (JSC::StructureChain::isCacheable): | |
| * runtime/StructureChain.h: | |
| 2009-06-23 Yong Li <yong.li@torchmobile.com> | |
| Reviewed by George Staikos. | |
| https://bugs.webkit.org/show_bug.cgi?id=26654 | |
| Add the proper export define for the JavaScriptCore API when building for WINCE. | |
| * API/JSBase.h: | |
| 2009-06-23 Joe Mason <joe.mason@torchmobile.com> | |
| Reviewed by Adam Treat. | |
| Authors: Yong Li <yong.li@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com> | |
| https://bugs.webkit.org/show_bug.cgi?id=26611 | |
| Implement currentThreadStackBase on WINCE by adding a global, | |
| g_stackBase, which must be set to the address of a local variable | |
| by the caller before calling any WebKit function that invokes JSC. | |
| * runtime/Collector.cpp: | |
| (JSC::isPageWritable): | |
| (JSC::getStackBase): | |
| Starts at the top of the stack and returns the entire range of | |
| consecutive writable pages as an estimate of the actual stack. | |
| This will be much bigger than the actual stack range, so some | |
| dead objects can't be collected, but it guarantees live objects | |
| aren't collected prematurely. | |
| (JSC::currentThreadStackBase): | |
| On WinCE, returns g_stackBase if set or call getStackBase as a | |
| fallback if not. | |
| 2009-06-23 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Alexey Proskuryakov. | |
| Fix stupid performance problem in the LiteralParser | |
| The LiteralParser was making a new UString in order to use | |
| toDouble, however UString's toDouble allows a much wider range | |
| of numberic strings than the LiteralParser accepts, and requires | |
| an additional heap allocation or two for the construciton of the | |
| UString. To rectify this we just call WTF::dtoa directly using | |
| a stack allocated buffer to hold the validated numeric literal. | |
| * runtime/LiteralParser.cpp: | |
| (JSC::LiteralParser::Lexer::lexNumber): | |
| (JSC::LiteralParser::parse): | |
| * runtime/LiteralParser.h: | |
| 2009-06-22 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Alexey Proskuryakov. | |
| Bug 26640: JSON.stringify needs to special case Boolean objects | |
| <https://bugs.webkit.org/show_bug.cgi?id=26640> | |
| Add special case handling of the Boolean object so we match current | |
| ES5 errata. | |
| * runtime/JSONObject.cpp: | |
| (JSC::unwrapBoxedPrimitive): renamed from unwrapNumberOrString | |
| (JSC::gap): | |
| (JSC::Stringifier::appendStringifiedValue): | |
| 2009-06-22 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Darin Adler. | |
| Bug 26591: Support revivers in JSON.parse | |
| <https://bugs.webkit.org/show_bug.cgi?id=26591> | |
| Add reviver support to JSON.parse. This completes the JSON object. | |
| * runtime/JSONObject.cpp: | |
| (JSC::Walker::Walker): | |
| (JSC::Walker::callReviver): | |
| (JSC::Walker::walk): | |
| (JSC::JSONProtoFuncParse): | |
| 2009-06-21 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Darin Adler. | |
| Bug 26592: Support standard toJSON functions | |
| <https://bugs.webkit.org/show_bug.cgi?id=26592> | |
| Add support for the standard Date.toJSON function. | |
| * runtime/DatePrototype.cpp: | |
| (JSC::dateProtoFuncToJSON): | |
| 2009-06-21 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Sam Weinig. | |
| Bug 26594: JSC needs to support Date.toISOString | |
| <https://bugs.webkit.org/show_bug.cgi?id=26594> | |
| Add support for Date.toISOString. | |
| * runtime/DatePrototype.cpp: | |
| (JSC::dateProtoFuncToISOString): | |
| 2009-06-21 Oliver Hunt <oliver@apple.com> | |
| Remove dead code. | |
| * runtime/LiteralParser.cpp: | |
| (JSC::LiteralParser::parse): | |
| 2009-06-21 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Darin Adler and Cameron Zwarich. | |
| Bug 26587: Support JSON.parse | |
| <https://bugs.webkit.org/show_bug.cgi?id=26587> | |
| Extend the LiteralParser to support the full strict JSON | |
| grammar, fix a few places where the grammar was incorrectly | |
| lenient. Doesn't yet support the JSON.parse reviver function | |
| but that does not block the JSON.parse functionality itself. | |
| * interpreter/Interpreter.cpp: | |
| (JSC::Interpreter::callEval): | |
| * runtime/JSGlobalObjectFunctions.cpp: | |
| (JSC::globalFuncEval): | |
| * runtime/JSONObject.cpp: | |
| (JSC::JSONProtoFuncParse): | |
| * runtime/LiteralParser.cpp: | |
| (JSC::LiteralParser::Lexer::lex): | |
| (JSC::isSafeStringCharacter): | |
| (JSC::LiteralParser::Lexer::lexString): | |
| (JSC::LiteralParser::parse): | |
| * runtime/LiteralParser.h: | |
| (JSC::LiteralParser::LiteralParser): | |
| (JSC::LiteralParser::tryJSONParse): | |
| (JSC::LiteralParser::): | |
| (JSC::LiteralParser::Lexer::Lexer): | |
| 2009-06-21 David Levin <levin@chromium.org> | |
| Reviewed by NOBODY (speculative build fix for windows). | |
| Simply removed some whitespace form this file to make windows build wtf and | |
| hopefully copy the new MessageQueque.h so that WebCore picks it up. | |
| * wtf/Assertions.cpp: | |
| 2009-06-21 Drew Wilson <atwilson@google.com> | |
| Reviewed by David Levin. | |
| <https://bugs.webkit.org/show_bug.cgi?id=25043> | |
| Added support for multi-threaded MessagePorts. | |
| * wtf/MessageQueue.h: | |
| (WTF::::appendAndCheckEmpty): | |
| Added API to test whether the queue was empty before adding an element. | |
| 2009-06-20 David D. Kilzer <ddkilzer@webkit.org> | |
| Fix namespace comment in SegmentedVector.h | |
| * wtf/SegmentedVector.h: Updated namespace comment to reflect | |
| new namespace after r44897. | |
| 2009-06-20 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
| Bug 24986: ARM JIT port | |
| <https://bugs.webkit.org/show_bug.cgi?id=24986> | |
| Reviewed by Oliver Hunt. | |
| An Iterator added for SegmentedVector. Currently | |
| only the pre ++ operator is supported. | |
| * wtf/SegmentedVector.h: | |
| (WTF::SegmentedVectorIterator::~SegmentedVectorIterator): | |
| (WTF::SegmentedVectorIterator::operator*): | |
| (WTF::SegmentedVectorIterator::operator->): | |
| (WTF::SegmentedVectorIterator::operator++): | |
| (WTF::SegmentedVectorIterator::operator==): | |
| (WTF::SegmentedVectorIterator::operator!=): | |
| (WTF::SegmentedVectorIterator::operator=): | |
| (WTF::SegmentedVectorIterator::SegmentedVectorIterator): | |
| (WTF::SegmentedVector::alloc): | |
| (WTF::SegmentedVector::begin): | |
| (WTF::SegmentedVector::end): | |
| 2009-06-20 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
| Bug 24986: ARM JIT port | |
| <https://bugs.webkit.org/show_bug.cgi?id=24986> | |
| Reviewed by Oliver Hunt. | |
| Move SegmentedVector to /wtf subdirectory | |
| and change "namespace JSC" to "namespace WTF" | |
| Additional build file updates by David Kilzer. | |
| * GNUmakefile.am: Updated path to SegmentedVector.h. | |
| * JavaScriptCore.order: Updated SegmentedVector namespace from | |
| JSC to WTF in mangled C++ method name. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
| Removed reference to bytecompiler\SegmentedVector.h. | |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added reference to | |
| wtf\SegmentedVector.h. | |
| * JavaScriptCore.xcodeproj/project.pbxproj: Moved | |
| SegmentedVector.h definition from bytecompiler subdirectory to | |
| wtf subdirectory. | |
| * bytecompiler/BytecodeGenerator.h: Updated #include path to | |
| SegmentedVector.h and prepended WTF:: namespace to its use. | |
| * parser/Lexer.h: Ditto. | |
| * wtf/SegmentedVector.h: Renamed from JavaScriptCore/bytecompiler/SegmentedVector.h. | |
| (WTF::SegmentedVector::SegmentedVector): | |
| (WTF::SegmentedVector::~SegmentedVector): | |
| (WTF::SegmentedVector::size): | |
| (WTF::SegmentedVector::at): | |
| (WTF::SegmentedVector::operator[]): | |
| (WTF::SegmentedVector::last): | |
| (WTF::SegmentedVector::append): | |
| (WTF::SegmentedVector::removeLast): | |
| (WTF::SegmentedVector::grow): | |
| (WTF::SegmentedVector::clear): | |
| (WTF::SegmentedVector::deleteAllSegments): | |
| (WTF::SegmentedVector::segmentExistsFor): | |
| (WTF::SegmentedVector::segmentFor): | |
| (WTF::SegmentedVector::subscriptFor): | |
| (WTF::SegmentedVector::ensureSegmentsFor): | |
| (WTF::SegmentedVector::ensureSegment): | |
| 2009-06-19 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (build fix take 2 - rename FIELD_OFFSET to something that doesn't conflict with winnt.h). | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompile): | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| (JSC::JIT::emitGetVariableObjectRegister): | |
| (JSC::JIT::emitPutVariableObjectRegister): | |
| * jit/JIT.h: | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_rshift): | |
| (JSC::JIT::emitSlow_op_jnless): | |
| (JSC::JIT::emitSlow_op_jnlesseq): | |
| (JSC::JIT::compileBinaryArithOp): | |
| * jit/JITCall.cpp: | |
| (JSC::JIT::compileOpCallInitializeCallFrame): | |
| (JSC::JIT::compileOpCall): | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::restoreArgumentReference): | |
| (JSC::JIT::checkStructure): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_instanceof): | |
| (JSC::JIT::emit_op_get_scoped_var): | |
| (JSC::JIT::emit_op_put_scoped_var): | |
| (JSC::JIT::emit_op_construct_verify): | |
| (JSC::JIT::emit_op_resolve_global): | |
| (JSC::JIT::emit_op_jeq_null): | |
| (JSC::JIT::emit_op_jneq_null): | |
| (JSC::JIT::emit_op_to_jsnumber): | |
| (JSC::JIT::emit_op_catch): | |
| (JSC::JIT::emit_op_eq_null): | |
| (JSC::JIT::emit_op_neq_null): | |
| (JSC::JIT::emit_op_convert_this): | |
| (JSC::JIT::emit_op_profile_will_call): | |
| (JSC::JIT::emit_op_profile_did_call): | |
| (JSC::JIT::emitSlow_op_get_by_val): | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::emit_op_get_by_val): | |
| (JSC::JIT::emit_op_put_by_val): | |
| (JSC::JIT::emit_op_method_check): | |
| (JSC::JIT::compileGetByIdHotPath): | |
| (JSC::JIT::emit_op_put_by_id): | |
| (JSC::JIT::compilePutDirectOffset): | |
| (JSC::JIT::compileGetDirectOffset): | |
| (JSC::JIT::privateCompilePutByIdTransition): | |
| (JSC::JIT::privateCompilePatchGetArrayLength): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::JITThunks): | |
| 2009-06-19 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (Windows build fix). | |
| * jit/JIT.h: | |
| * jit/JITInlineMethods.h: | |
| 2009-06-19 Gabor Loki <loki@inf.u-szeged.hu> | |
| Reviewed by Gavin Barraclough. | |
| Reorganize ARM architecture specific macros. | |
| Use PLATFORM_ARM_ARCH(7) instead of PLATFORM(ARM_V7). | |
| Bug 24986: ARM JIT port | |
| <https://bugs.webkit.org/show_bug.cgi?id=24986> | |
| * assembler/ARMv7Assembler.h: | |
| * assembler/AbstractMacroAssembler.h: | |
| (JSC::AbstractMacroAssembler::Imm32::Imm32): | |
| * assembler/MacroAssembler.h: | |
| * assembler/MacroAssemblerCodeRef.h: | |
| (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr): | |
| * jit/ExecutableAllocator.h: | |
| (JSC::ExecutableAllocator::cacheFlush): | |
| * jit/JIT.h: | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::restoreArgumentReferenceForTrampoline): | |
| * jit/JITStubs.cpp: | |
| * jit/JITStubs.h: | |
| * wtf/Platform.h: | |
| * yarr/RegexJIT.cpp: | |
| (JSC::Yarr::RegexGenerator::generateEnter): | |
| (JSC::Yarr::RegexGenerator::generateReturn): | |
| 2009-06-19 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Fix armv7 JIT build issues. | |
| Unfortunate the arm compiler does not like the use of offsetof on JITStackFrame (since it now contains non POD types), | |
| and the FIELD_OFFSET macro does not appear constantish enough for it to be happy with its use in COMPILE_ASSERT macros. | |
| * Replace offsetofs with FIELD_OFFSETs (safe on C++ objects). | |
| * Move COMPILE_ASSERTs defending layout of JITStackFrame structure on armv7 into JITThunks constructor. | |
| * jit/JIT.cpp: | |
| * jit/JIT.h: | |
| * jit/JITInlineMethods.h: | |
| (JSC::JIT::restoreArgumentReference): | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_catch): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITThunks::JITThunks): | |
| 2009-06-19 Adam Treat <adam.treat@torchmobile.com> | |
| Blind attempt at build fix. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-06-19 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Oliver Hunt. | |
| Inherits CallIdentifier struct from FastAllocBase because it has been | |
| instantiated by 'new' in JavaScriptCore/profiler/CallIdentifier.h:86. | |
| * wtf/HashCountedSet.h: | |
| 2009-06-19 Adam Treat <adam.treat@torchmobile.com> | |
| Reviewed by Oliver Hunt. | |
| https://bugs.webkit.org/show_bug.cgi?id=26540 | |
| Modify the test shell to add a new function 'checkSyntax' that will | |
| only parse the source instead of executing it. In this way we can test | |
| pure parsing performance against some of the larger scripts in the wild. | |
| * jsc.cpp: | |
| (GlobalObject::GlobalObject): | |
| (functionCheckSyntax): | |
| 2009-06-19 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
| Reviewed by Darin Adler. | |
| Inherits HashCountedSet class from FastAllocBase because it has been | |
| instantiated by 'new' in JavaScriptCore/runtime/Collector.cpp:1095. | |
| * wtf/HashCountedSet.h: | |
| 2009-06-19 Yong Li <yong.li@torchmobile.com> | |
| Reviewed by George Staikos. | |
| https://bugs.webkit.org/show_bug.cgi?id=26558 | |
| Declare these symbols extern for WINCE as they are provided by libce. | |
| * runtime/DateConstructor.cpp: | |
| * runtime/DatePrototype.cpp: | |
| (JSC::formatLocaleDate): | |
| 2009-06-19 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Maciej Stachowiak. | |
| <rdar://problem/6988973> ScopeChain leak in interpreter builds | |
| Move the Scopechain destruction code in JSFunction outside of the ENABLE(JIT) | |
| path. | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::~JSFunction): | |
| * wtf/Platform.h: | |
| 2009-06-19 Yong Li <yong.li@torchmobile.com> | |
| Reviewed by George Staikos. | |
| https://bugs.webkit.org/show_bug.cgi?id=26543 | |
| Windows CE uses 'GetLastError' instead of 'errno.' | |
| * interpreter/RegisterFile.h: | |
| (JSC::RegisterFile::RegisterFile): | |
| (JSC::RegisterFile::grow): | |
| 2009-06-19 David Levin <levin@chromium.org> | |
| Reviewed by NOBODY (Windows build fix). | |
| Add export for Windows corresponding to OSX export done in r44844. | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
| 2009-06-18 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin "Viceroy of Venezuela" Barraclough. | |
| Bug 26532: Native functions do not correctly unlink from optimised callsites when they're collected | |
| <https://bugs.webkit.org/show_bug.cgi?id=26532> <rdar://problem/6625385> | |
| We need to make sure that each native function instance correctly unlinks any references to it | |
| when it is collected. Allowing this to happen required a few changes: | |
| * Every native function needs a codeblock to track the link information | |
| * To have this codeblock, every function now also needs its own functionbodynode | |
| so we no longer get to have a single shared instance. | |
| * Identifying a host function is now done by looking for CodeBlock::codeType() == NativeCode | |
| * JavaScriptCore.exp: | |
| * bytecode/CodeBlock.cpp: | |
| (JSC::CodeBlock::CodeBlock): | |
| Constructor for NativeCode CodeBlock | |
| (JSC::CodeBlock::derefStructures): | |
| (JSC::CodeBlock::refStructures): | |
| (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): | |
| (JSC::CodeBlock::handlerForBytecodeOffset): | |
| (JSC::CodeBlock::lineNumberForBytecodeOffset): | |
| (JSC::CodeBlock::expressionRangeForBytecodeOffset): | |
| (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset): | |
| (JSC::CodeBlock::functionRegisterForBytecodeOffset): | |
| (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset): | |
| (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset): | |
| (JSC::CodeBlock::setJITCode): | |
| Add assertions to ensure we don't try and use NativeCode CodeBlocks as | |
| a normal codeblock. | |
| * bytecode/CodeBlock.h: | |
| (JSC::): | |
| (JSC::CodeBlock::source): | |
| (JSC::CodeBlock::sourceOffset): | |
| (JSC::CodeBlock::evalCodeCache): | |
| (JSC::CodeBlock::createRareDataIfNecessary): | |
| More assertions. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::privateCompileCTIMachineTrampolines): | |
| (JSC::JIT::linkCall): | |
| Update logic to allow native function caching | |
| * jit/JITStubs.cpp: | |
| * parser/Nodes.cpp: | |
| (JSC::FunctionBodyNode::createNativeThunk): | |
| (JSC::FunctionBodyNode::isHostFunction): | |
| * parser/Nodes.h: | |
| * runtime/JSFunction.cpp: | |
| (JSC::JSFunction::JSFunction): | |
| (JSC::JSFunction::~JSFunction): | |
| (JSC::JSFunction::mark): | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::~JSGlobalData): | |
| * runtime/JSGlobalData.h: | |
| 2009-06-18 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by NOBODY (Windows build fix). | |
| * wtf/DateMath.cpp: | |
| (WTF::calculateUTCOffset): | |
| 2009-06-18 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Geoff Garen. | |
| Timezone calculation incorrect in Venezuela. | |
| https://bugs.webkit.org/show_bug.cgi?id=26531 | |
| <rdar://problem/6646169> Time is incorrectly reported to JavaScript in both Safari 3 and Firefox 3 | |
| The problem is that we're calculating the timezone relative to 01/01/2000, | |
| but the VET timezone changed from -4 hours to -4:30 hours on 12/09/2007. | |
| According to the spec, section 15.9.1.9 states "the time since the beginning | |
| of the year", presumably meaning the *current* year. Change the calculation | |
| to be based on whatever the current year is, rather than a canned date. | |
| No performance impact. | |
| * wtf/DateMath.cpp: | |
| (WTF::calculateUTCOffset): | |
| 2009-06-18 Gavin Barraclough <barraclough@apple.com> | |
| Rubber Stamped by Mark Rowe (originally reviewed by Sam Weinig). | |
| (Reintroducing patch added in r44492, and reverted in r44796.) | |
| Change the implementation of op_throw so the stub function always modifies its | |
| return address - if it doesn't find a 'catch' it will switch to a trampoline | |
| to force a return from JIT execution. This saves memory, by avoiding the need | |
| for a unique return for every op_throw. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_throw): | |
| JITStubs::cti_op_throw now always changes its return address, | |
| remove return code generated after the stub call (this is now | |
| handled by ctiOpThrowNotCaught). | |
| * jit/JITStubs.cpp: | |
| (JSC::): | |
| Add ctiOpThrowNotCaught definitions. | |
| (JSC::JITStubs::DEFINE_STUB_FUNCTION): | |
| Change cti_op_throw to always change its return address. | |
| * jit/JITStubs.h: | |
| Add ctiOpThrowNotCaught declaration. | |
| 2009-06-18 Kevin McCullough <kmccullough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| <rdar://problem/6940880> REGRESSION: Breakpoints don't break in 64-bit | |
| - Exposed functions now needed by WebCore. | |
| * JavaScriptCore.exp: | |
| 2009-06-17 Darin Adler <darin@apple.com> | |
| Reviewed by Oliver Hunt. | |
| Bug 26429: Make JSON.stringify non-recursive so it can handle objects | |
| of arbitrary complexity | |
| https://bugs.webkit.org/show_bug.cgi?id=26429 | |
| For marking I decided not to use gcProtect, because this is inside the engine | |
| so it's easy enough to just do marking. And that darned gcProtect does locking! | |
| Oliver tried to convince me to used MarkedArgumentBuffer, but the constructor | |
| for that class says "FIXME: Remove all clients of this API, then remove this API." | |
| * runtime/Collector.cpp: | |
| (JSC::Heap::collect): Add a call to JSONObject::markStringifiers. | |
| * runtime/CommonIdentifiers.cpp: | |
| (JSC::CommonIdentifiers::CommonIdentifiers): Added emptyIdentifier. | |
| * runtime/CommonIdentifiers.h: Ditto. | |
| * runtime/JSGlobalData.cpp: | |
| (JSC::JSGlobalData::JSGlobalData): Initialize firstStringifierToMark to 0. | |
| * runtime/JSGlobalData.h: Added firstStringifierToMark. | |
| * runtime/JSONObject.cpp: Cut down the includes to the needed ones only. | |
| (JSC::unwrapNumberOrString): Added. Helper for unwrapping number and string | |
| objects to get their number and string values. | |
| (JSC::ReplacerPropertyName::ReplacerPropertyName): Added. The class is used | |
| to wrap an identifier or integer so we don't have to do any work unless we | |
| actually call a replacer. | |
| (JSC::ReplacerPropertyName::value): Added. | |
| (JSC::gap): Added. Helper function for the Stringifier constructor. | |
| (JSC::PropertyNameForFunctionCall::PropertyNameForFunctionCall): Added. | |
| The class is used to wrap an identifier or integer so we don't have to | |
| allocate a number or string until we actually call toJSON or a replacer. | |
| (JSC::PropertyNameForFunctionCall::asJSValue): Added. | |
| (JSC::Stringifier::Stringifier): Updated and moved out of the class | |
| definition. Added code to hook this into a singly linked list for marking. | |
| (JSC::Stringifier::~Stringifier): Remove from the singly linked list. | |
| (JSC::Stringifier::mark): Mark all the objects in the holder stacks. | |
| (JSC::Stringifier::stringify): Updated. | |
| (JSC::Stringifier::appendQuotedString): Tweaked and streamlined a bit. | |
| (JSC::Stringifier::toJSON): Renamed from toJSONValue. | |
| (JSC::Stringifier::appendStringifiedValue): Renamed from stringify. | |
| Added code to use the m_holderStack to do non-recursive stringify of | |
| objects and arrays. This code also uses the timeout checker since in | |
| pathological cases it could be slow even without calling into the | |
| JavaScript virtual machine. | |
| (JSC::Stringifier::willIndent): Added. | |
| (JSC::Stringifier::indent): Added. | |
| (JSC::Stringifier::unindent): Added. | |
| (JSC::Stringifier::startNewLine): Added. | |
| (JSC::Stringifier::Holder::Holder): Added. | |
| (JSC::Stringifier::Holder::appendNextProperty): Added. This is the | |
| function that handles the format of arrays and objects. | |
| (JSC::JSONObject::getOwnPropertySlot): Moved this down to the bottom | |
| of the file so the JSONObject class is not interleaved with the | |
| Stringifier class. | |
| (JSC::JSONObject::markStringifiers): Added. Calls mark. | |
| (JSC::JSONProtoFuncStringify): Streamlined the code here. The code | |
| to compute the gap string is now a separate function. | |
| * runtime/JSONObject.h: Made everything private. Added markStringifiers. | |
| 2009-06-17 Oliver Hunt <oliver@apple.com> | |
| Reviewed by Gavin Barraclough. | |
| <rdar://problem/6974140> REGRESSION(r43849): Crash in cti_op_call_NotJSFunction when getting directions on maps.google.com | |
| Roll out r43849 as it appears that we cannot rely on the address of | |
| an objects property storage being constant even if the structure is | |
| unchanged. | |
| * jit/JIT.h: | |
| * jit/JITPropertyAccess.cpp: | |
| (JSC::JIT::compileGetDirectOffset): | |
| (JSC::JIT::privateCompileGetByIdProto): | |
| (JSC::JIT::privateCompileGetByIdProtoList): | |
| (JSC::JIT::privateCompileGetByIdChainList): | |
| (JSC::JIT::privateCompileGetByIdChain): | |
| 2009-06-17 Gavin Barraclough <barraclough@apple.com> | |
| Rubber Stamped by Mark Rowe. | |
| Fully revert r44492 & r44748 while we fix a bug they cause on internal builds <rdar://problem/6955963>. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_throw): | |
| * jit/JITStubs.cpp: | |
| (JSC::): | |
| (JSC::JITStubs::DEFINE_STUB_FUNCTION): | |
| * jit/JITStubs.h: | |
| 2009-06-17 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Mark Rowe. | |
| <rdar://problem/6947426> sunspider math-cordic.js exhibits different intermediate results running 32-bit vs. 64-bit | |
| On 64-bit, NaN-encoded values must be detagged before they can be used in rshift. | |
| No performance impact. | |
| * jit/JITArithmetic.cpp: | |
| (JSC::JIT::emit_op_rshift): | |
| 2009-06-17 Adam Treat <adam.treat@torchmobile.com> | |
| Reviewed by George Staikos. | |
| https://bugs.webkit.org/show_bug.cgi?id=23155 | |
| Move WIN_CE -> WINCE as previously discussed with Qt WINCE folks. | |
| * jsc.cpp: | |
| (main): | |
| 2009-06-17 George Staikos <george.staikos@torchmobile.com> | |
| Reviewed by Adam Treat. | |
| https://bugs.webkit.org/show_bug.cgi?id=23155 | |
| Move WIN_CE -> WINCE as previously discussed with Qt WINCE folks. | |
| * config.h: | |
| * jsc.cpp: | |
| * wtf/Assertions.cpp: | |
| * wtf/Assertions.h: | |
| * wtf/CurrentTime.cpp: | |
| (WTF::lowResUTCTime): | |
| * wtf/DateMath.cpp: | |
| (WTF::getLocalTime): | |
| * wtf/MathExtras.h: | |
| * wtf/Platform.h: | |
| * wtf/StringExtras.h: | |
| * wtf/Threading.h: | |
| * wtf/win/MainThreadWin.cpp: | |
| 2009-06-17 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver Hunt. | |
| <rdar://problem/6974175> ASSERT in JITStubs.cpp at appsaccess.apple.com | |
| Remove PropertySlot::putValue - PropertySlots should only be used for getting, | |
| not putting. Rename JSGlobalObject::getOwnPropertySlot to hasOwnPropertyForWrite, | |
| which is what it really was being used to ask, and remove some other getOwnPropertySlot | |
| & getOwnPropertySlotForWrite methods, which were unused and likely to lead to confusion. | |
| * runtime/JSGlobalObject.h: | |
| (JSC::JSGlobalObject::hasOwnPropertyForWrite): | |
| * runtime/JSObject.h: | |
| * runtime/JSStaticScopeObject.cpp: | |
| * runtime/JSStaticScopeObject.h: | |
| * runtime/PropertySlot.h: | |
| 2009-06-16 Gavin Barraclough <barraclough@apple.com> | |
| Reviewed by Oliver hunt. | |
| Temporarily partially disable r44492, since this is causing some problems on internal builds. | |
| * jit/JITOpcodes.cpp: | |
| (JSC::JIT::emit_op_throw): | |
| * jit/JITStubs.cpp: | |
| (JSC::JITStubs::DEFINE_STUB_FUNCTION): | |
| 2009-06-16 Sam Weinig <sam@webkit.org> | |
| Fix windows build. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::JIT): | |
| 2009-06-16 Sam Weinig <sam@webkit.org> | |
| Reviewed by Oliver Hunt. | |
| Initialize m_bytecodeIndex to -1 in JIT, and correctly initialize | |
| it for each type of stub using the return address to find the correct | |
| offset. | |
| * jit/JIT.cpp: | |
| (JSC::JIT::JIT): | |
| * jit/JIT.h: | |
| (JSC::JIT::compileGetByIdProto): | |
| (JSC::JIT::compileGetByIdSelfList): | |
| (JSC::JIT::compileGetByIdProtoList): | |
| (JSC::JIT::compileGetByIdChainList): | |
| (JSC::JIT::compileGetByIdChain): | |
| (JSC::JIT::compilePutByIdTransition): | |
| (JSC::JIT::compileCTIMachineTrampolines): | |
| (JSC::JIT::compilePatchGetArrayLength): | |
| * jit/JITStubCall.h: | |
| (JSC::JITStubCall::call): | |
| == Rolled over to ChangeLog-2009-06-16 == |