| 2011-06-21 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Moved 'const' off the global-variable-as-local-variable crack pipe |
| https://bugs.webkit.org/show_bug.cgi?id=63105 |
| |
| This is necessary for moving the rest of the code off of same. |
| |
| Many problems remain in our handling of const. I have fixed none of them. |
| |
| * bytecompiler/BytecodeGenerator.h: |
| (JSC::BytecodeGenerator::scopeChain): New accessor, needed to enable |
| const to directly implement its unique scoping rules. |
| |
| * bytecompiler/NodesCodegen.cpp: |
| (JSC::PrefixResolveNode::emitBytecode): Do specify that our resolve is |
| for writing, so we don't overwrite const variables. |
| |
| (JSC::ConstDeclNode::emitCodeSingle): Don't assume that all declared const |
| variables are available as local variables, since this won't be the case |
| once global variables are not available as local variables. Instead, use |
| put_scoped_var in the case where there is no local variable. Like a local |
| variable, put_scoped_var succeeds even though const properties are |
| read-only, since put_scoped_var skips read-only checks. (Yay?) |
| |
| 2011-06-21 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| REGRESSION(r89257): It broke 2 jscore tests (Requested by Ossy_away on #webkit). |
| https://bugs.webkit.org/show_bug.cgi?id=63052 |
| |
| Release mode only failure, the stack overflow guards were getting there error |
| handling inlined, so that they were essentially causing their own demise. |
| |
| * parser/JSParser.cpp: |
| (JSC::JSParser::updateErrorMessage): |
| (JSC::JSParser::updateErrorWithNameAndMessage): |
| |
| 2011-06-20 Kenneth Russell <kbr@google.com> |
| |
| Unreviewed. |
| |
| Rolled out r89233 and r89235 because of crashes in http/tests/misc/acid3.html on Snow Leopard and other platforms |
| https://bugs.webkit.org/show_bug.cgi?id=63022 |
| |
| * wtf/Platform.h: |
| |
| 2011-06-18 Anders Carlsson <andersca@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Disallow assigning into PassOwnArrayPtr, PassOwnPtr and PassRefPtr |
| https://bugs.webkit.org/show_bug.cgi?id=62940 |
| |
| Remove clear() and all assignment operators except one which now has a COMPILE_ASSERT. |
| |
| * wtf/PassOwnArrayPtr.h: |
| (WTF::PassOwnArrayPtr::operator=): |
| * wtf/PassOwnPtr.h: |
| (WTF::PassOwnPtr::operator=): |
| * wtf/PassRefPtr.h: |
| (WTF::PassRefPtr::operator=): |
| (WTF::NonNullPassRefPtr::operator=): |
| |
| 2011-06-20 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| REGRESSION (r79060): Searching for a flight at united.com fails |
| https://bugs.webkit.org/show_bug.cgi?id=63003 |
| |
| This original change also broke Twitter, and we attempted to refine the fix to |
| address that problem (http://trac.webkit.org/changeset/80542), but since it still breaks United, |
| we need to revert the change until we understand the problem better. |
| |
| * wtf/DateMath.cpp: |
| (WTF::parseDateFromNullTerminatedCharacters): |
| |
| 2011-06-20 Juan C. Montemayor <jmont@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| No context for javascript parse errors. |
| https://bugs.webkit.org/show_bug.cgi?id=62613 |
| |
| Parse errors now show more details like: |
| "Unexpected token: ]" |
| or |
| "Expected token: while" |
| |
| For reserved names, numbers, indentifiers, strings, lexer errors, |
| and EOFs, the following error messages are printed: |
| |
| "Use of reserved word: super" |
| "Unexpected number: 42" |
| "Unexpected identifier: " |
| "Unexpected string: "foobar"" |
| "Invalid token character sequence: \u4023" |
| "Unexpected EOF" |
| |
| * parser/JSParser.cpp: |
| (JSC::JSParser::consume): |
| (JSC::JSParser::getToken): |
| (JSC::JSParser::getTokenName): |
| (JSC::JSParser::updateErrorMessageSpecialCase): |
| (JSC::JSParser::updateErrorMessage): |
| (JSC::JSParser::updateErrorWithNameAndMessage): |
| (JSC::jsParse): |
| (JSC::JSParser::JSParser): |
| (JSC::JSParser::parseProgram): |
| (JSC::JSParser::parseVarDeclarationList): |
| (JSC::JSParser::parseForStatement): |
| (JSC::JSParser::parseBreakStatement): |
| (JSC::JSParser::parseContinueStatement): |
| (JSC::JSParser::parseWithStatement): |
| (JSC::JSParser::parseTryStatement): |
| (JSC::JSParser::parseStatement): |
| (JSC::JSParser::parseFormalParameters): |
| (JSC::JSParser::parseFunctionInfo): |
| (JSC::JSParser::parseAssignmentExpression): |
| (JSC::JSParser::parsePrimaryExpression): |
| (JSC::JSParser::parseMemberExpression): |
| (JSC::JSParser::parseUnaryExpression): |
| * parser/JSParser.h: |
| * parser/Lexer.cpp: |
| (JSC::Lexer::lex): |
| * parser/Parser.cpp: |
| (JSC::Parser::parse): |
| |
| 2011-06-20 Nikolas Zimmermann <nzimmermann@rim.com> |
| |
| Reviewed by Rob Buis. |
| |
| Integrate SVG Fonts within GlyphPage concept, removing the special SVG code paths from Font, making it possible to reuse the simple text code path for SVG Fonts |
| https://bugs.webkit.org/show_bug.cgi?id=59085 |
| |
| * wtf/Platform.h: Force Qt-EWS into a full rebuild, otherwhise this patch breaks the EWS. |
| |
| 2011-06-19 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Correct logic for putting errors on the correct line when handling JSONP |
| https://bugs.webkit.org/show_bug.cgi?id=62962 |
| |
| Minor fix for the minor fix. *sigh* |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::execute): |
| |
| 2011-06-19 Oliver Hunt <oliver@apple.com> |
| |
| Minor fix to correct layout test results. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::execute): |
| |
| 2011-06-17 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| JSONP is unnecessarily slow |
| https://bugs.webkit.org/show_bug.cgi?id=62920 |
| |
| JSONP has unfortunately become a fairly common idiom online, yet |
| it triggers very poor performance in JSC as we end up doing codegen |
| for a large number of property accesses that will |
| * only be run once, so the vast amount of logic we dump to handle |
| caching of accesses is unnecessary. |
| * We are doing codegen that is directly proportional to just |
| creating the object in the first place. |
| |
| This patch extends the use of the literal parser to JSONP-like structures |
| in global code, handling a number of different forms I have seen online. |
| In an extreme case this improves performance of JSONP by more than 2x |
| due to removal of code generation and execution time, and a few optimisations |
| that I made to the parser itself. |
| |
| * API/JSValueRef.cpp: |
| (JSValueMakeFromJSONString): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::callEval): |
| (JSC::Interpreter::execute): |
| * parser/Lexer.cpp: |
| (JSC::Lexer::isKeyword): |
| * parser/Lexer.h: |
| * runtime/JSGlobalObjectFunctions.cpp: |
| (JSC::globalFuncEval): |
| * runtime/JSONObject.cpp: |
| (JSC::JSONProtoFuncParse): |
| * runtime/LiteralParser.cpp: |
| (JSC::LiteralParser::tryJSONPParse): |
| (JSC::LiteralParser::makeIdentifier): |
| (JSC::LiteralParser::Lexer::lex): |
| (JSC::LiteralParser::Lexer::next): |
| (JSC::isSafeStringCharacter): |
| (JSC::LiteralParser::Lexer::lexString): |
| (JSC::LiteralParser::Lexer::lexNumber): |
| (JSC::LiteralParser::parse): |
| * runtime/LiteralParser.h: |
| (JSC::LiteralParser::LiteralParser): |
| (JSC::LiteralParser::tryLiteralParse): |
| (JSC::LiteralParser::Lexer::Lexer): |
| |
| 2011-06-18 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r89184. |
| http://trac.webkit.org/changeset/89184 |
| https://bugs.webkit.org/show_bug.cgi?id=62927 |
| |
| It broke 22 tests on all bot (Requested by Ossy_weekend on |
| #webkit). |
| |
| * API/JSValueRef.cpp: |
| (JSValueMakeFromJSONString): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::callEval): |
| (JSC::Interpreter::execute): |
| * parser/Lexer.cpp: |
| * parser/Lexer.h: |
| * 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::Lexer::lexNumber): |
| (JSC::LiteralParser::parse): |
| * runtime/LiteralParser.h: |
| (JSC::LiteralParser::LiteralParser): |
| (JSC::LiteralParser::tryLiteralParse): |
| (JSC::LiteralParser::Lexer::Lexer): |
| (JSC::LiteralParser::Lexer::next): |
| |
| 2011-06-17 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| JSONP is unnecessarily slow |
| https://bugs.webkit.org/show_bug.cgi?id=62920 |
| |
| JSONP has unfortunately become a fairly common idiom online, yet |
| it triggers very poor performance in JSC as we end up doing codegen |
| for a large number of property accesses that will |
| * only be run once, so the vast amount of logic we dump to handle |
| caching of accesses is unnecessary. |
| * We are doing codegen that is directly proportional to just |
| creating the object in the first place. |
| |
| This patch extends the use of the literal parser to JSONP-like structures |
| in global code, handling a number of different forms I have seen online. |
| In an extreme case this improves performance of JSONP by more than 2x |
| due to removal of code generation and execution time, and a few optimisations |
| that I made to the parser itself. |
| |
| * API/JSValueRef.cpp: |
| (JSValueMakeFromJSONString): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::callEval): |
| (JSC::Interpreter::execute): |
| * parser/Lexer.cpp: |
| (JSC::Lexer::isKeyword): |
| * parser/Lexer.h: |
| * runtime/JSGlobalObjectFunctions.cpp: |
| (JSC::globalFuncEval): |
| * runtime/JSONObject.cpp: |
| (JSC::JSONProtoFuncParse): |
| * runtime/LiteralParser.cpp: |
| (JSC::LiteralParser::tryJSONPParse): |
| (JSC::LiteralParser::makeIdentifier): |
| (JSC::LiteralParser::Lexer::lex): |
| (JSC::LiteralParser::Lexer::next): |
| (JSC::isSafeStringCharacter): |
| (JSC::LiteralParser::Lexer::lexString): |
| (JSC::LiteralParser::Lexer::lexNumber): |
| (JSC::LiteralParser::parse): |
| * runtime/LiteralParser.h: |
| (JSC::LiteralParser::LiteralParser): |
| (JSC::LiteralParser::tryLiteralParse): |
| (JSC::LiteralParser::Lexer::Lexer): |
| |
| 2011-06-17 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Moved some property access JIT code into property access JIT files |
| https://bugs.webkit.org/show_bug.cgi?id=62906 |
| |
| * jit/JITOpcodes.cpp: |
| * jit/JITOpcodes32_64.cpp: |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emitSlow_op_put_by_val): |
| (JSC::JIT::emit_op_get_scoped_var): |
| (JSC::JIT::emit_op_put_scoped_var): |
| (JSC::JIT::emit_op_get_global_var): |
| (JSC::JIT::emit_op_put_global_var): |
| * jit/JITPropertyAccess32_64.cpp: |
| (JSC::JIT::emit_op_get_scoped_var): |
| (JSC::JIT::emit_op_put_scoped_var): |
| (JSC::JIT::emit_op_get_global_var): |
| (JSC::JIT::emit_op_put_global_var): |
| |
| 2011-06-17 Anders Carlsson <andersca@apple.com> |
| |
| Build fix. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2011-06-17 Geoffrey Garen <ggaren@apple.com> |
| |
| Try to fix the Leopard build? |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2011-06-16 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Added some write barrier action, compiled out by default |
| https://bugs.webkit.org/show_bug.cgi?id=62844 |
| |
| * JavaScriptCore.exp: Build! |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: Fixed an incremental build |
| issue with Heap.cpp. |
| |
| * heap/Heap.cpp: |
| (JSC::Heap::writeBarrierSlowCase): |
| * heap/Heap.h: |
| (JSC::Heap::writeBarrier): |
| * heap/MarkedBlock.h: |
| (JSC::MarkedBlock::isAtomAligned): |
| (JSC::MarkedBlock::blockFor): |
| (JSC::MarkedBlock::atomNumber): |
| (JSC::MarkedBlock::ownerSetNumber): |
| (JSC::MarkedBlock::addOldSpaceOwner): |
| (JSC::MarkedBlock::OwnerSet::OwnerSet): |
| (JSC::MarkedBlock::OwnerSet::add): |
| (JSC::MarkedBlock::OwnerSet::clear): |
| (JSC::MarkedBlock::OwnerSet::size): |
| (JSC::MarkedBlock::OwnerSet::didOverflow): |
| (JSC::MarkedBlock::OwnerSet::owners): Added a basic write barrier that |
| tracks owners for regions within blocks. Currently unused. |
| |
| 2011-06-17 Raphael Kubo da Costa <kubo@profusion.mobi> |
| |
| Reviewed by Eric Seidel. |
| |
| [EFL] Add some OwnPtr specializations for EFL types. |
| For now there are specializations for Ecore_Evas and Evas_Object. |
| https://bugs.webkit.org/show_bug.cgi?id=62877 |
| |
| * wtf/CMakeListsEfl.txt: |
| * wtf/OwnPtrCommon.h: |
| * wtf/efl/OwnPtrEfl.cpp: Added. |
| (WTF::deleteOwnedPtr): |
| |
| 2011-06-17 Joone Hur <joone.hur@collabora.co.uk> |
| |
| Reviewed by Martin Robinson. |
| |
| [GTK] Replace GdkRectangle by cairo_rectangle_int_t |
| https://bugs.webkit.org/show_bug.cgi?id=60687 |
| |
| Replace GdkRectangle by cairo_rectangle_int_t. |
| |
| * wtf/gobject/GTypedefs.h: Replace GdkRectangle by cairo_rectangle_int_t. |
| |
| 2011-06-16 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=53014 |
| ES5 strict mode keyword restrictions aren't implemented |
| |
| The following are future restricted words is strict mode code: |
| implements, interface, let, package, private, protected, public, static, yield |
| |
| * parser/JSParser.h: |
| - Add RESERVED_IF_STRICT token. |
| * parser/Keywords.table: |
| - Add new future restricted words. |
| * parser/Lexer.cpp: |
| (JSC::Lexer::parseIdentifier): |
| - Check for RESERVED_IF_STRICT; in nonstrict code this is converted to IDENT. |
| (JSC::Lexer::lex): |
| - Pass strictMode flag to parseIdentifier. |
| * parser/Lexer.h: |
| - parseIdentifier needs a strictMode flag. |
| * runtime/CommonIdentifiers.h: |
| - Add identifiers for new reserved words. |
| |
| 2011-06-16 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=23611 |
| Multiline Javascript comments cause incorrect parsing of following script. |
| |
| From the spec: |
| "A MultiLineComment [is] simply discarded if it contains no line terminator, |
| but if a MultiLineComment contains one or more line terminators, then it is |
| replaced with a single line terminator, which becomes part of the stream of |
| inputs for the syntactic grammar." |
| |
| This may result in behavioural changes, due to automatic semicolon insertion. |
| |
| * parser/Lexer.cpp: |
| (JSC::Lexer::parseMultilineComment): |
| - Set m_terminator is we see a line terminator in a multiline comment. |
| |
| 2011-06-16 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=62824 |
| DFG JIT - add support for branch-fusion of compareEq, JSValue comparisons in SpeculativeJIT |
| |
| CompareEq of non-integer values is the most common cause of speculation failure. |
| |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compilePeepHoleIntegerBranch): |
| - Support Equals. |
| (JSC::DFG::SpeculativeJIT::compilePeepHoleEq): |
| - new! - peephole optimized Eq of JSValues. |
| (JSC::DFG::SpeculativeJIT::compile): |
| - Add peephole optimization for CompareEq. |
| * dfg/DFGSpeculativeJIT.h: |
| (JSC::DFG::SpeculativeJIT::detectPeepHoleBranch): |
| - Add support for dead nodes between compare & branch. |
| (JSC::DFG::SpeculativeJIT::isInteger): |
| - Added to determine which form of peephole to do in CompareEq. |
| |
| 2011-06-16 Geoffrey Garen <ggaren@apple.com> |
| |
| Try to fix the Windows build. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export another |
| symbol. |
| |
| * bytecode/EvalCodeCache.h: |
| * heap/HandleHeap.h: |
| * heap/HeapRootVisitor.h: |
| * heap/NewSpace.h: |
| * runtime/ArgList.h: |
| * runtime/ScopeChain.h: |
| * runtime/SmallStrings.h: |
| * runtime/Structure.h: Stop forward-declaring things that don't really |
| exist anymore. |
| |
| 2011-06-16 Geoffrey Garen <ggaren@apple.com> |
| |
| Try to fix the Mac build: Removed and re-added SlotVisitor.h to the Xcode |
| project while crossing my fingers and facing west. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2011-06-16 Geoffrey Garen <ggaren@apple.com> |
| |
| Build fix: Removed an incorrect symbol on Windows. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2011-06-16 Geoffrey Garen <ggaren@apple.com> |
| |
| Build fix: Removed an accidental commit from the future. |
| |
| * CMakeLists.txt: |
| |
| 2011-06-16 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Introduced SlotVisitor into the project |
| https://bugs.webkit.org/show_bug.cgi?id=62820 |
| |
| This resolves a class vs typedef forward declaration issue, and gives all |
| exported symbols the correct names. |
| |
| * CMakeLists.txt: |
| * GNUmakefile.list.am: |
| * JavaScriptCore.exp: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.xcodeproj/project.pbxproj: Build! |
| |
| * bytecode/EvalCodeCache.h: |
| * heap/HandleHeap.h: |
| * heap/Heap.cpp: |
| (JSC::Heap::Heap): |
| (JSC::Heap::markRoots): |
| * heap/Heap.h: |
| * heap/HeapRootVisitor.h: Replaced MarkStack with SlotVisitor. Now no |
| clients operate on a MarkStack. |
| |
| * heap/MarkStack.cpp: |
| (JSC::SlotVisitor::visitChildren): |
| (JSC::SlotVisitor::drain): |
| * heap/SlotVisitor.h: Added. |
| (JSC::SlotVisitor::SlotVisitor): Used 'protected' and a little cheesy |
| inheritance to give SlotVisitor all the attributes of MarkStack without |
| making this change giant. Over time, we will move more behavior into |
| SlotVisitor and its subclasses. |
| |
| * heap/MarkStack.h: |
| * heap/NewSpace.h: Replaced MarkStack with SlotVisitor. Now no |
| clients operate on a MarkStack. |
| |
| * runtime/ArgList.h: |
| * runtime/JSCell.h: |
| * runtime/JSObject.h: |
| * runtime/ScopeChain.h: |
| * runtime/SmallStrings.h: |
| * runtime/Structure.h: Replaced MarkStack with SlotVisitor. Now no |
| clients operate on a MarkStack. |
| |
| 2011-06-15 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Reduce memory usage of resolve_global |
| https://bugs.webkit.org/show_bug.cgi?id=62765 |
| |
| If we have a large number of resolve_globals in a single |
| block start planting plain resolve instructions instead |
| whenever we aren't in a loop. This allows us to reduce |
| the code size for extremely large functions without |
| losing the performance benefits of op_resolve_global. |
| |
| * bytecode/CodeBlock.h: |
| (JSC::CodeBlock::globalResolveInfoCount): |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::shouldAvoidResolveGlobal): |
| (JSC::BytecodeGenerator::emitResolve): |
| (JSC::BytecodeGenerator::emitResolveWithBase): |
| * bytecompiler/BytecodeGenerator.h: |
| |
| 2011-06-16 Qi Zhang <qi.2.zhang@nokia.com> |
| |
| Reviewed by Laszlo Gombos. |
| |
| [Qt] Fix building with CONFIG(use_system_icu) |
| https://bugs.webkit.org/show_bug.cgi?id=62744 |
| |
| Do not define WTF_USE_QT4_UNICODE if WTF_USE_ICU_UNICODE is set. |
| |
| * wtf/Platform.h: |
| |
| 2011-06-15 Darin Adler <darin@apple.com> |
| |
| Reviewed by Adam Barth. |
| |
| Remove obsolete LOOSE_OWN_PTR code |
| https://bugs.webkit.org/show_bug.cgi?id=59909 |
| |
| The internal Apple dependency on this is gone now. |
| |
| * wtf/OwnArrayPtr.h: Removed constructor that takes a raw pointer, |
| set function that takes a raw pointer. |
| |
| * wtf/OwnPtr.h: Removed constructor that takes a raw pointer, |
| set functino that takes a raw pointer. |
| |
| * wtf/PassOwnArrayPtr.h: Made constructor that takes a nullptr |
| and assignment operator that takes a nullptr unconditional. |
| Made constructor that takes a raw pointer private and explicit, |
| and removed assignment operator that takes a raw pointer. |
| |
| * wtf/PassOwnPtr.h: Made assignment operator that takes a nullptr |
| unconditional. Made constructor that takes a raw pointer private |
| and explicit, and removed assignment operator that takes a raw pointer. |
| |
| 2011-06-15 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen and Gavin Barraclough. |
| |
| Make access-nseive ~9x faster on the non-speculative path by |
| adding special casing for doubles that can lossless-ly be converted |
| to a uint32_t in getByVal and putByVal. This avoids calls to stringification |
| and the hash lookup. Long term, we should try and get property of a getByVal |
| and putByVal to be an integer immediate even in the non-speculative path. |
| |
| * dfg/DFGOperations.cpp: |
| (JSC::DFG::putByVal): |
| (JSC::DFG::operationPutByValInternal): |
| |
| 2011-06-15 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| REGRESSION (r88719): 5by5.tv schedule is not visible |
| https://bugs.webkit.org/show_bug.cgi?id=62720 |
| |
| Problem here is that the lexer wasn't considering '$' to be |
| a valid character in an identifier. |
| |
| * parser/Lexer.h: |
| (JSC::Lexer::lexExpectIdentifier): |
| |
| 2011-06-15 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Reduce the size of global_resolve |
| https://bugs.webkit.org/show_bug.cgi?id=62738 |
| |
| Reduce the code size of global_resolve in the JIT by replacing |
| multiple pointer loads with a single pointer move + two offset |
| loads. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_resolve_global): |
| * jit/JITOpcodes32_64.cpp: |
| (JSC::JIT::emit_op_resolve_global): |
| |
| 2011-06-14 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Dan Bernstein. |
| |
| Fixed an inavlid ASSERT I found while investigating |
| <rdar://problem/9580254> Crash in JSC::HandleHeap::finalizeWeakHandles + 92 |
| https://bugs.webkit.org/show_bug.cgi?id=62699 |
| |
| No test since we don't know of a way to get WebCore to deallocate the |
| next-to-finalize handle, which is also the last handle in the list, |
| while finalizing the second-to-last handle in the list. |
| |
| * heap/HandleHeap.h: |
| (JSC::HandleHeap::deallocate): Don't ASSERT that m_nextToFinalize has a |
| non-0 next() after updating it, since it is valid to update m_nextToFinalize |
| to point to the tail sentinel. |
| |
| Do ASSERT that m_nextToFinalize has a non-0 next() before updating it, |
| since it is not valid to update m_nextToFinalize to point past the tail |
| sentinel. |
| |
| Also, use m_nextToFinalize consistently for clarity. |
| |
| 2011-06-14 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=43841 |
| SegmentedVector::operator== typo |
| |
| * wtf/SegmentedVector.h: |
| (WTF::SegmentedVectorIterator::operator==): |
| (WTF::SegmentedVectorIterator::operator!=): |
| |
| 2011-06-14 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Constant array literals result in unnecessarily large amounts of code |
| https://bugs.webkit.org/show_bug.cgi?id=62658 |
| |
| Add a new version of op_new_array that simply copies values from a buffer |
| we hang off of the CodeBlock, rather than generating code to place each |
| entry into the registerfile, and then copying it from the registerfile into |
| the array. This is a slight improvement on some sunspider tests, but no |
| measurable overall change. That's okay though as our goal was to reduce |
| code size without hurting performance. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::dump): |
| * bytecode/CodeBlock.h: |
| (JSC::CodeBlock::addImmediateBuffer): |
| (JSC::CodeBlock::immediateBuffer): |
| * bytecode/Opcode.h: |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::addImmediateBuffer): |
| (JSC::BytecodeGenerator::emitNewArray): |
| * bytecompiler/BytecodeGenerator.h: |
| * bytecompiler/NodesCodegen.cpp: |
| (JSC::ArrayNode::emitBytecode): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileMainPass): |
| * jit/JIT.h: |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_new_array): |
| (JSC::JIT::emit_op_new_array_buffer): |
| * jit/JITOpcodes32_64.cpp: |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * jit/JITStubs.h: |
| |
| 2011-06-14 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r88841. |
| http://trac.webkit.org/changeset/88841 |
| https://bugs.webkit.org/show_bug.cgi?id=62672 |
| |
| Caused many tests to crash (Requested by rniwa on #webkit). |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::dump): |
| * bytecode/CodeBlock.h: |
| * bytecode/Opcode.h: |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitNewArray): |
| * bytecompiler/BytecodeGenerator.h: |
| * bytecompiler/NodesCodegen.cpp: |
| (JSC::ArrayNode::emitBytecode): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileMainPass): |
| * jit/JIT.h: |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_new_array): |
| * jit/JITOpcodes32_64.cpp: |
| (JSC::JIT::emit_op_new_array): |
| * jit/JITStubs.cpp: |
| * jit/JITStubs.h: |
| |
| 2011-06-14 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Constant array literals result in unnecessarily large amounts of code |
| https://bugs.webkit.org/show_bug.cgi?id=62658 |
| |
| Add a new version of op_new_array that simply copies values from a buffer |
| we hang off of the CodeBlock, rather than generating code to place each |
| entry into the registerfile, and then copying it from the registerfile into |
| the array. This is a slight improvement on some sunspider tests, but no |
| measurable overall change. That's okay though as our goal was to reduce |
| code size without hurting performance. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::dump): |
| * bytecode/CodeBlock.h: |
| (JSC::CodeBlock::addImmediateBuffer): |
| (JSC::CodeBlock::immediateBuffer): |
| * bytecode/Opcode.h: |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::addImmediateBuffer): |
| (JSC::BytecodeGenerator::emitNewArray): |
| * bytecompiler/BytecodeGenerator.h: |
| * bytecompiler/NodesCodegen.cpp: |
| (JSC::ArrayNode::emitBytecode): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileMainPass): |
| * jit/JIT.h: |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_new_array): |
| (JSC::JIT::emit_op_new_array_buffer): |
| * jit/JITOpcodes32_64.cpp: |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * jit/JITStubs.h: |
| |
| 2011-06-14 Stephanie Lewis <slewis@apple.com> |
| |
| Rubber stamped by Oliver Hunt. |
| |
| <rdar://problem/9511169> |
| Update order files. |
| |
| * JavaScriptCore.order: |
| |
| 2011-06-14 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Fix dumping of constants to have the correct constant number. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::dump): |
| |
| 2011-06-14 Benjamin Poulain <benjamin@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| KeywordLookupGenerator's Trie does not work with Python 3 |
| https://bugs.webkit.org/show_bug.cgi?id=62635 |
| |
| With Python 3, dict.items() return an iterator. Since the iterator |
| protocol changed between Python 2 and 3, the easiest way to get the |
| values is to have something that use the iterator implicitely, like a |
| for() loop. |
| |
| * KeywordLookupGenerator.py: |
| |
| 2011-06-13 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Fix llocp and lvalp names in the lexer to something more meaningful |
| https://bugs.webkit.org/show_bug.cgi?id=62605 |
| |
| A simple rename |
| |
| * parser/Lexer.cpp: |
| (JSC::Lexer::parseIdentifier): |
| (JSC::Lexer::parseString): |
| (JSC::Lexer::lex): |
| * parser/Lexer.h: |
| (JSC::Lexer::lexExpectIdentifier): |
| |
| 2011-06-13 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Make it possible to inline the common case of identifier lexing |
| https://bugs.webkit.org/show_bug.cgi?id=62600 |
| |
| Add a lexing function that expects to lex an "normal" alpha numeric |
| identifier (that ignores keywords) so it's possible to inline the |
| common parsing cases. This comes out as a reasonable parsing speed |
| boost. |
| |
| * parser/JSParser.cpp: |
| (JSC::JSParser::nextExpectIdentifier): |
| (JSC::JSParser::parseProperty): |
| (JSC::JSParser::parseMemberExpression): |
| * parser/Lexer.cpp: |
| * parser/Lexer.h: |
| (JSC::Lexer::makeIdentifier): |
| (JSC::Lexer::lexExpectIdentifier): |
| |
| 2011-06-13 Xan Lopez <xlopez@igalia.com> |
| |
| Reviewed by Martin Robinson. |
| |
| Distcheck fixes. |
| |
| * GNUmakefile.am: |
| * GNUmakefile.list.am: |
| |
| 2011-06-13 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Simon Fraser. |
| |
| Make it possible to inline Identifier::equal |
| https://bugs.webkit.org/show_bug.cgi?id=62584 |
| |
| Move Identifier::equal to the Identifier header file. |
| |
| * runtime/Identifier.cpp: |
| * runtime/Identifier.h: |
| (JSC::Identifier::equal): |
| |
| 2011-06-13 Tony Chang <tony@chromium.org> |
| |
| Reviewed by Dimitri Glazkov. |
| |
| rename ENABLE_NEW_FLEXBOX to ENABLE_CSS3_FLEXBOX |
| https://bugs.webkit.org/show_bug.cgi?id=62578 |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2011-06-13 Tony Chang <tony@chromium.org> |
| |
| Reviewed by Adam Barth. |
| |
| rename ENABLE_FLEXBOX to ENABLE_NEW_FLEXBOX |
| https://bugs.webkit.org/show_bug.cgi?id=62545 |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2011-06-12 Patrick Gansterer <paroga@webkit.org> |
| |
| Unreviewed. Build fix for !ENABLE(JIT) after r88604. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::visitAggregate): |
| |
| 2011-06-11 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=16777 |
| |
| Remove #define NaN per Darin's comments. |
| |
| * runtime/JSGlobalObjectFunctions.cpp: |
| (JSC::parseIntOverflow): |
| (JSC::parseInt): |
| (JSC::jsStrDecimalLiteral): |
| (JSC::jsToNumber): |
| (JSC::parseFloat): |
| * wtf/DateMath.cpp: |
| (WTF::equivalentYearForDST): |
| (WTF::parseES5DateFromNullTerminatedCharacters): |
| (WTF::parseDateFromNullTerminatedCharacters): |
| (WTF::timeClip): |
| (JSC::parseDateFromNullTerminatedCharacters): |
| |
| 2011-06-11 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber stamped by Geoff Garen. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=62503 |
| Remove JIT_OPTIMIZE_* switches |
| |
| The alternative code paths are untested, and not well maintained. |
| These were useful when there was more churn in the JIT, but now |
| are a maintenance overhead. Time to move on, removing. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::visitAggregate): |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileSlowCases): |
| (JSC::JIT::privateCompile): |
| (JSC::JIT::linkConstruct): |
| * jit/JIT.h: |
| * jit/JITCall.cpp: |
| * jit/JITCall32_64.cpp: |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| (JSC::JIT::privateCompileCTINativeCall): |
| * jit/JITOpcodes32_64.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| (JSC::JIT::privateCompileCTINativeCall): |
| (JSC::JIT::softModulo): |
| * jit/JITPropertyAccess.cpp: |
| * jit/JITPropertyAccess32_64.cpp: |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/Lookup.cpp: |
| (JSC::setUpStaticFunctionSlot): |
| * runtime/Lookup.h: |
| * wtf/Platform.h: |
| |
| 2011-06-10 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=16777 |
| Eliminate JSC::NaN and JSC::Inf |
| |
| There's no good reason for -K-J-S- JSC to have its own NAN and infinity constants. |
| The ones in std::numeric_limits are perfectly good. |
| Remove JSC::Inf, JSC::NaN, switch some cases of (isnan || isinf) to !isfinite. |
| |
| * API/JSCallbackObjectFunctions.h: |
| (JSC::::toNumber): |
| * API/JSValueRef.cpp: |
| (JSValueMakeNumber): |
| (JSValueToNumber): |
| * JavaScriptCore.exp: |
| * runtime/CachedTranscendentalFunction.h: |
| (JSC::CachedTranscendentalFunction::initialize): |
| * runtime/DateConstructor.cpp: |
| (JSC::constructDate): |
| * runtime/DateInstanceCache.h: |
| (JSC::DateInstanceData::DateInstanceData): |
| (JSC::DateInstanceCache::reset): |
| * runtime/JSCell.cpp: |
| * runtime/JSCell.h: |
| (JSC::JSCell::JSValue::getPrimitiveNumber): |
| (JSC::JSCell::JSValue::toNumber): |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| (JSC::JSGlobalData::resetDateCache): |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::reset): |
| * runtime/JSGlobalObjectFunctions.cpp: |
| (JSC::globalFuncParseInt): |
| (JSC::globalFuncIsFinite): |
| * runtime/JSNotAnObject.cpp: |
| (JSC::JSNotAnObject::toNumber): |
| * runtime/JSValue.cpp: |
| * runtime/JSValue.h: |
| * runtime/JSValueInlineMethods.h: |
| (JSC::jsNaN): |
| * runtime/MathObject.cpp: |
| (JSC::mathProtoFuncMax): |
| (JSC::mathProtoFuncMin): |
| * runtime/NumberConstructor.cpp: |
| (JSC::numberConstructorNegInfinity): |
| (JSC::numberConstructorPosInfinity): |
| * runtime/NumberPrototype.cpp: |
| (JSC::numberProtoFuncToExponential): |
| (JSC::numberProtoFuncToFixed): |
| (JSC::numberProtoFuncToPrecision): |
| (JSC::numberProtoFuncToString): |
| * runtime/UString.cpp: |
| * wtf/DecimalNumber.h: |
| (WTF::DecimalNumber::DecimalNumber): |
| * wtf/dtoa.cpp: |
| (WTF::dtoa): |
| |
| 2011-06-10 Tony Chang <tony@chromium.org> |
| |
| Reviewed by Ojan Vafai. |
| |
| add a compile guard ENABLE(FLEXBOX) |
| https://bugs.webkit.org/show_bug.cgi?id=62049 |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2011-06-10 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=55347 |
| "name" and "message" enumerable on *Error.prototype |
| |
| This arises from chapter 15 of the spec: |
| "Every other property described in this clause has the attributes |
| { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true } |
| unless otherwise specified." |
| Standardized properties are not enumerable. |
| |
| * runtime/ErrorInstance.cpp: |
| (JSC::ErrorInstance::ErrorInstance): |
| * runtime/NativeErrorPrototype.cpp: |
| (JSC::NativeErrorPrototype::NativeErrorPrototype): |
| |
| 2011-06-09 Geoffrey Garen <ggaren@apple.com> |
| |
| Build fix: Corrected header spelling. |
| |
| * heap/OldSpace.h: |
| |
| 2011-06-09 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Added OldSpace to the project |
| https://bugs.webkit.org/show_bug.cgi?id=62417 |
| |
| Currently unused. |
| |
| Added OldSpace, the ability to iterate NewSpace vs OldSpace, and a |
| per-block flag for testing whether you're in NewSpace vs OldSpace. |
| |
| * CMakeLists.txt: |
| * GNUmakefile.list.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.pro: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: Build! |
| |
| * heap/MarkedBlock.cpp: |
| (JSC::MarkedBlock::MarkedBlock): |
| * heap/MarkedBlock.h: |
| (JSC::MarkedBlock::inNewSpace): |
| (JSC::MarkedBlock::setInNewSpace): Added inNewSpace flag, for use in |
| write barrier. |
| |
| * heap/NewSpace.cpp: |
| (JSC::NewSpace::addBlock): |
| (JSC::NewSpace::removeBlock): |
| * heap/NewSpace.h: |
| (JSC::NewSpace::forEachBlock): Added forEachBlock, to use for |
| NewSpace-specific operations. |
| |
| * heap/OldSpace.cpp: Added. |
| (JSC::OldSpace::OldSpace): |
| (JSC::OldSpace::addBlock): |
| (JSC::OldSpace::removeBlock): |
| * heap/OldSpace.h: Added. |
| (JSC::OldSpace::forEachBlock): New class for holding promoted blocks. |
| Not in use yet. |
| |
| 2011-06-09 Hyowon Kim <hw1008.kim@samsung.com> |
| |
| Reviewed by Antonio Gomes. |
| |
| [EFL] Make accelerated compositing build in Webkit-EFL |
| https://bugs.webkit.org/show_bug.cgi?id=62361 |
| |
| Add PLATFORM(EFL) to enable ACCELERATED_COMPOSITING on EFL port. |
| |
| * wtf/Platform.h: |
| |
| 2011-06-09 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Bug 62405 - Fix integer overflow in Array.prototype.push |
| |
| Fix geoff's review comments re static_cast. |
| |
| * runtime/ArrayPrototype.cpp: |
| (JSC::arrayProtoFuncPush): |
| |
| 2011-06-09 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Factored MarkedBlock set management into a helper class with a fast case Bloom filter |
| https://bugs.webkit.org/show_bug.cgi?id=62413 |
| |
| SunSpider reports a small speedup. |
| |
| This is in preparation for having ConservativeSet operate on arbitrary |
| sets of MarkedBlocks, and in preparation for conservative scanning |
| becoming proportionally more important than other GC activities. |
| |
| * GNUmakefile.list.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.xcodeproj/project.pbxproj: Build-o. |
| |
| * heap/ConservativeRoots.cpp: |
| (JSC::ConservativeRoots::add): |
| * heap/ConservativeRoots.h: |
| (JSC::ConservativeRoots::ConservativeRoots): Operate on a MarkedBlockSet |
| directly, instead of a Heap, so we can operate on subsets of the Heap |
| instead. |
| |
| Use a TinyBloomFilter for single-cycle exclusion of most pointers. This |
| is particularly important since we expect not to find our subject pointer |
| in the MarkedBlock hash, and hash misses are more expensive than typical |
| hash lookups because they have high collision rates. |
| |
| No need for single-pointer add() to be public anymore, since nobody uses it. |
| |
| * heap/Heap.cpp: |
| (JSC::Heap::markRoots): |
| * heap/Heap.h: |
| (JSC::Heap::forEachCell): |
| (JSC::Heap::forEachBlock): Use MarkedBlockSet since that's what |
| ConservativeRoots relies on. |
| |
| Nixed contains(), since nobody uses it anymore. |
| |
| * heap/MarkedBlock.h: |
| (WTF::MarkedBlockHash::hash): Added a faster hash taking advantage of |
| the VM layout properties of MarkedBlocks. |
| |
| * heap/MarkedBlockSet.h: Added. |
| (JSC::MarkedBlockSet::add): |
| (JSC::MarkedBlockSet::remove): |
| (JSC::MarkedBlockSet::recomputeFilter): |
| (JSC::MarkedBlockSet::filter): |
| (JSC::MarkedBlockSet::set): |
| * heap/TinyBloomFilter.h: Added. |
| (JSC::TinyBloomFilter::TinyBloomFilter): |
| (JSC::TinyBloomFilter::add): |
| (JSC::TinyBloomFilter::ruleOut): New helper class, used above. |
| |
| * interpreter/RegisterFile.cpp: |
| (JSC::RegisterFile::gatherConservativeRoots): No need to specifically |
| exclude values by tag -- the tiny bloom filter is already a register-register |
| compare, so adding another "rule out" factor just slows things down. |
| |
| 2011-06-09 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Bug 62405 - Fix integer overflow in Array.prototype.push |
| |
| There are three integer overflows here, leading to safe (not a security risk) |
| but incorrect (non-spec-compliant) behaviour. |
| |
| Two overflows occur when calculating the new length after pushing (one in the |
| fast version of push in JSArray, one in the generic version in ArrayPrototype). |
| The other occurs calculating indices to write to when multiple items are pushed. |
| |
| These errors result in three test-262 failures. |
| |
| * runtime/ArrayPrototype.cpp: |
| (JSC::arrayProtoFuncPush): |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::put): |
| (JSC::JSArray::push): |
| |
| 2011-06-09 Dan Bernstein <mitz@apple.com> |
| |
| Reviewed by Anders Carlsson. |
| |
| Add Vector::reverse() |
| https://bugs.webkit.org/show_bug.cgi?id=62393 |
| |
| * wtf/Vector.h: |
| (WTF::Vector::reverse): Added |
| |
| 2011-06-08 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Factored a bunch of Heap functionality into stand-alone functors |
| https://bugs.webkit.org/show_bug.cgi?id=62337 |
| |
| This is in preparation for making these functors operate on arbitrary |
| sets of MarkedBlocks. |
| |
| * JavaScriptCore.exp: This file is a small tragedy. |
| |
| * debugger/Debugger.cpp: |
| (JSC::Debugger::recompileAllJSFunctions): Updated for type change and rename. |
| |
| * heap/HandleHeap.h: |
| (JSC::HandleHeap::forEachStrongHandle): New function for iterating all |
| strong handles, so we can play along in the functor game. |
| |
| * heap/Heap.cpp: |
| (JSC::CountFunctor::CountFunctor::CountFunctor): |
| (JSC::CountFunctor::CountFunctor::count): |
| (JSC::CountFunctor::CountFunctor::returnValue): |
| (JSC::CountFunctor::ClearMarks::operator()): |
| (JSC::CountFunctor::ResetAllocator::operator()): |
| (JSC::CountFunctor::Sweep::operator()): |
| (JSC::CountFunctor::MarkCount::operator()): |
| (JSC::CountFunctor::Size::operator()): |
| (JSC::CountFunctor::Capacity::operator()): |
| (JSC::CountFunctor::Count::operator()): |
| (JSC::CountFunctor::CountIfGlobalObject::operator()): |
| (JSC::CountFunctor::TakeIfEmpty::TakeIfEmpty): |
| (JSC::CountFunctor::TakeIfEmpty::operator()): |
| (JSC::CountFunctor::TakeIfEmpty::returnValue): |
| (JSC::CountFunctor::RecordType::RecordType): |
| (JSC::CountFunctor::RecordType::typeName): |
| (JSC::CountFunctor::RecordType::operator()): |
| (JSC::CountFunctor::RecordType::returnValue): These functors factor out |
| behavior that used to be in the functions below. |
| |
| (JSC::Heap::clearMarks): |
| (JSC::Heap::sweep): |
| (JSC::Heap::objectCount): |
| (JSC::Heap::size): |
| (JSC::Heap::capacity): |
| (JSC::Heap::protectedGlobalObjectCount): |
| (JSC::Heap::protectedObjectCount): |
| (JSC::Heap::protectedObjectTypeCounts): |
| (JSC::Heap::objectTypeCounts): |
| (JSC::Heap::resetAllocator): |
| (JSC::Heap::freeBlocks): |
| (JSC::Heap::shrink): Factored out behavior into the functors above. |
| |
| * heap/Heap.h: |
| (JSC::Heap::forEachProtectedCell): |
| (JSC::Heap::forEachCell): |
| (JSC::Heap::forEachBlock): Added forEach* iteration templates. I chose |
| functor-based templates instead of plain iterators because they're simpler |
| to implement in this case and they require a lot less code at the call site. |
| |
| * heap/MarkedBlock.h: |
| (JSC::MarkedBlock::VoidFunctor::returnValue): Default parent class for |
| trivial functors. |
| |
| (JSC::MarkedBlock::forEachCell): Renamed forEach to forEachCell because |
| we have a few different kind of "for each" now. |
| |
| * runtime/JSGlobalData.cpp: |
| (WTF::Recompile::operator()): |
| (JSC::JSGlobalData::JSGlobalData): |
| (JSC::JSGlobalData::recompileAllJSFunctions): Updated for type change and rename. |
| |
| * runtime/JSGlobalData.h: Removed globalObjectCount because it was unused. |
| |
| 2011-06-08 Mikołaj Małecki <m.malecki@samsung.com> |
| |
| Reviewed by Pavel Feldman. |
| |
| Web Inspector: Crash by buffer overrun crash when serializing inspector object tree. |
| https://bugs.webkit.org/show_bug.cgi?id=52791 |
| |
| No new tests. The problem can be reproduced by trying to create InspectorValue |
| from 1.0e-100 and call ->toJSONString() on this. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| export 2 functions DecimalNumber::bufferLengthForStringExponential and |
| DecimalNumber::toStringExponential. |
| |
| 2011-06-08 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r88404. |
| http://trac.webkit.org/changeset/88404 |
| https://bugs.webkit.org/show_bug.cgi?id=62342 |
| |
| broke win and mac build (Requested by tony^work on #webkit). |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| |
| 2011-06-08 Evan Martin <evan@chromium.org> |
| |
| Reviewed by Adam Barth. |
| |
| [chromium] use gyp 'settings' type for settings target |
| https://bugs.webkit.org/show_bug.cgi?id=62323 |
| |
| The 'settings' gyp target type is for targets that exist solely |
| for their settings (no build rules). The comment above this target |
| says it's for this, but it incorrectly uses 'none'. |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| |
| 2011-06-08 Sailesh Agrawal <sail@chromium.org> |
| |
| Reviewed by Mihai Parparita. |
| |
| Chromium Mac: Enable overlay scrollbars |
| https://bugs.webkit.org/show_bug.cgi?id=59756 |
| |
| Enable WTF_USE_WK_SCROLLBAR_PAINTER for Chromium Mac. This allows us to use overlay scrollbars on future versions of Mac OS X. |
| |
| * wtf/Platform.h: |
| |
| 2011-06-08 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Add faster lookup cache for multi character identifiers |
| https://bugs.webkit.org/show_bug.cgi?id=62327 |
| |
| Add a non-hash lookup for mutiple character identifiers. This saves us from |
| adding repeated identifiers to the ParserArena's identifier list as people |
| tend to not start all their variables and properties with the same character |
| and happily identifier locality works in our favour. |
| |
| * parser/ParserArena.h: |
| (JSC::IdentifierArena::isEmpty): |
| (JSC::IdentifierArena::clear): |
| (JSC::IdentifierArena::makeIdentifier): |
| |
| 2011-06-08 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Took some responsibilities away from NewSpace |
| https://bugs.webkit.org/show_bug.cgi?id=62325 |
| |
| NewSpace is basically just an allocator now. |
| |
| Heap acts as a controller, responsible for managing the set of all |
| MarkedBlocks. |
| |
| This is in preparation for moving parts of the controller logic into |
| separate helper classes that can act on arbitrary sets of MarkedBlocks |
| that may or may not be in NewSpace. |
| |
| * heap/Heap.cpp: |
| (JSC::Heap::Heap): |
| (JSC::Heap::destroy): |
| (JSC::Heap::allocate): |
| (JSC::Heap::markRoots): |
| (JSC::Heap::clearMarks): |
| (JSC::Heap::sweep): |
| (JSC::Heap::objectCount): |
| (JSC::Heap::size): |
| (JSC::Heap::capacity): |
| (JSC::Heap::collect): |
| (JSC::Heap::resetAllocator): |
| (JSC::Heap::allocateBlock): |
| (JSC::Heap::freeBlocks): |
| (JSC::Heap::shrink): Moved the set of MarkedBlocks from NewSpace to Heap, |
| along with all functions that operate on the set of MarkedBlocks. Also |
| moved responsibility for deciding whether to allocate a new MarkedBlock, |
| and for allocating it. |
| |
| * heap/Heap.h: |
| (JSC::Heap::contains): |
| (JSC::Heap::forEach): Ditto. |
| |
| * heap/NewSpace.cpp: |
| (JSC::NewSpace::addBlock): |
| (JSC::NewSpace::removeBlock): |
| (JSC::NewSpace::resetAllocator): |
| * heap/NewSpace.h: |
| (JSC::NewSpace::waterMark): |
| (JSC::NewSpace::allocate): Ditto. |
| |
| 2011-06-08 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Some more MarkedSpace => NewSpace renaming |
| https://bugs.webkit.org/show_bug.cgi?id=62305 |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.order: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * heap/Heap.cpp: |
| (JSC::Heap::Heap): |
| (JSC::Heap::destroy): |
| (JSC::Heap::reportExtraMemoryCostSlowCase): |
| (JSC::Heap::allocate): |
| (JSC::Heap::markRoots): |
| (JSC::Heap::objectCount): |
| (JSC::Heap::size): |
| (JSC::Heap::capacity): |
| (JSC::Heap::collect): |
| (JSC::Heap::isValidAllocation): |
| * heap/Heap.h: |
| (JSC::Heap::markedSpace): |
| (JSC::Heap::contains): |
| (JSC::Heap::forEach): |
| (JSC::Heap::allocate): |
| * runtime/JSCell.h: |
| |
| 2011-06-08 Kevin Ollivier <kevino@theolliviers.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Add export macros to profiler headers. |
| https://bugs.webkit.org/show_bug.cgi?id=27551 |
| |
| * profiler/Profiler.h: |
| |
| 2011-06-08 Kevin Ollivier <kevino@theolliviers.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Add export symbols to parser headers. |
| https://bugs.webkit.org/show_bug.cgi?id=27551 |
| |
| * parser/SourceProviderCache.h: |
| |
| 2011-06-08 Kevin Ollivier <kevino@theolliviers.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Add export symbols to interpreter headers. |
| https://bugs.webkit.org/show_bug.cgi?id=27551 |
| |
| * interpreter/Interpreter.h: |
| |
| 2011-06-08 Kevin Ollivier <kevino@theolliviers.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Add export symbols to debugger headers. |
| https://bugs.webkit.org/show_bug.cgi?id=27551 |
| |
| * debugger/Debugger.h: |
| * debugger/DebuggerCallFrame.h: |
| |
| 2011-06-08 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Moved MarkedSpace.* to NewSpace.* in preparation for more renaming |
| https://bugs.webkit.org/show_bug.cgi?id=62268 |
| |
| * CMakeLists.txt: |
| * GNUmakefile.list.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.pro: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * heap/Heap.h: |
| * heap/MarkedBlock.h: |
| * heap/MarkedSpace.cpp: Removed. |
| * heap/MarkedSpace.h: Removed. |
| * heap/NewSpace.cpp: Copied from Source/JavaScriptCore/heap/MarkedSpace.cpp. |
| * heap/NewSpace.h: Copied from Source/JavaScriptCore/heap/MarkedSpace.h. |
| |
| 2011-06-08 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r88365. |
| http://trac.webkit.org/changeset/88365 |
| https://bugs.webkit.org/show_bug.cgi?id=62301 |
| |
| windows bots broken (Requested by loislo_ on #webkit). |
| |
| * JavaScriptCore.exp: |
| |
| 2011-06-08 Ryan Sleevi <rsleevi@chromium.org> |
| |
| Reviewed by Tony Chang. |
| |
| Suppress C++0x compat warnings when compiling Chromium port with GCC 4.6 |
| |
| Compiling Chromium port under GCC 4.6 produces warnings about nullptr |
| https://bugs.webkit.org/show_bug.cgi?id=62242 |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| |
| 2011-06-08 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org> |
| |
| Reviewed by Andreas Kling. |
| |
| Webkit on SPARC Solaris has wrong endian |
| https://bugs.webkit.org/show_bug.cgi?id=29407 |
| |
| Bug 57256 fixed one crash on misaligned reads on sparc/solaris, but |
| there are more ocurrences of the same code pattern in webkit. |
| |
| This patch includes the check on these other parts of the code. |
| |
| This is a speculative fix, I don't have a sparc machine to test and |
| don't know which kind of test would trigger a crash (but it's quite |
| obvious that it's the same code duplicated in different files). |
| |
| * runtime/UString.h: |
| (JSC::UStringHash::equal): |
| * wtf/text/StringHash.h: |
| (WTF::StringHash::equal): |
| |
| 2011-06-08 Yael Aharon <yael.aharon@nokia.com> |
| |
| Reviewed by Andreas Kling. |
| |
| [Qt] Build fix for building QtWebKit inside of Qt. |
| https://bugs.webkit.org/show_bug.cgi?id=62280 |
| |
| Remove CONFIG=staticlib, because it causes the configure script to add -ljavascriptcore |
| into QtWebKit.prl. |
| |
| No new tests, as this is just a build fix. |
| |
| * JavaScriptCore.pri: |
| |
| 2011-06-07 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Split 'reset' into 'collect' and 'resetAllocator' |
| https://bugs.webkit.org/show_bug.cgi?id=62267 |
| |
| * heap/Heap.cpp: |
| (JSC::Heap::allocate): |
| (JSC::Heap::collectAllGarbage): |
| (JSC::Heap::collect): |
| * heap/Heap.h: |
| * heap/MarkedBlock.h: |
| (JSC::MarkedBlock::resetAllocator): |
| * heap/MarkedSpace.cpp: |
| (JSC::MarkedSpace::resetAllocator): |
| * heap/MarkedSpace.h: |
| (JSC::MarkedSpace::SizeClass::resetAllocator): |
| |
| 2011-06-07 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Renamed some more marks to visits |
| https://bugs.webkit.org/show_bug.cgi?id=62254 |
| |
| * heap/HandleHeap.cpp: |
| (JSC::HandleHeap::visitStrongHandles): |
| (JSC::HandleHeap::visitWeakHandles): |
| * heap/HandleHeap.h: |
| * heap/HandleStack.cpp: |
| (JSC::HandleStack::visit): |
| * heap/HandleStack.h: |
| * heap/Heap.cpp: |
| (JSC::Heap::markProtectedObjects): |
| (JSC::Heap::markTempSortVectors): |
| (JSC::Heap::markRoots): |
| * heap/HeapRootVisitor.h: |
| (JSC::HeapRootVisitor::visit): |
| * runtime/ArgList.cpp: |
| (JSC::MarkedArgumentBuffer::markLists): |
| |
| 2011-06-07 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig |
| |
| https://bugs.webkit.org/show_bug.cgi?id=55537 |
| Functions claim to have 'callee' which they actually don't (and shouldn't) |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::getOwnPropertyNames): |
| |
| 2011-06-07 Juan C. Montemayor <jmont@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Make JSStaticFunction and JSStaticValue less "const" |
| https://bugs.webkit.org/show_bug.cgi?id=62222 |
| |
| * API/JSObjectRef.h: |
| * API/tests/testapi.c: |
| (checkConstnessInJSObjectNames): |
| (main): |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2011-06-07 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=62240 |
| DFG JIT - add support for for-loop array initialization. |
| |
| Support put by val beyond vector length. |
| Add a operationPutByValBeyondArrayBounds operation, make |
| PutValVal call this if the vector length check fails. |
| |
| * dfg/DFGJITCodeGenerator.h: |
| (JSC::DFG::JITCodeGenerator::silentSpillGPR): |
| (JSC::DFG::JITCodeGenerator::silentFillGPR): |
| (JSC::DFG::JITCodeGenerator::silentSpillAllRegisters): |
| (JSC::DFG::JITCodeGenerator::isDoubleConstantWithInt32Value): |
| (JSC::DFG::JITCodeGenerator::isJSConstantWithInt32Value): |
| (JSC::DFG::JITCodeGenerator::isIntegerConstant): |
| (JSC::DFG::JITCodeGenerator::valueOfIntegerConstant): |
| * dfg/DFGOperations.cpp: |
| (JSC::DFG::operationPutByValInternal): |
| * dfg/DFGOperations.h: |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.h: |
| |
| 2011-06-06 James Simonsen <simonjam@chromium.org> |
| |
| Reviewed by James Robinson. |
| |
| Add monotonicallyIncreasingTime() to get monotonically increasing time |
| https://bugs.webkit.org/show_bug.cgi?id=37743 |
| |
| * wtf/CurrentTime.cpp: Add monotonicallyIncreasingTime() for mac and a fallback implementation that just wraps currentTime(). |
| (WTF::monotonicallyIncreasingTime): |
| * wtf/CurrentTime.h: Add monotonicallyIncreasingTime(). |
| |
| 2011-06-06 Alexandru Chiculita <achicu@adobe.com> |
| |
| Reviewed by Kent Tamura. |
| |
| Add ENABLE_CSS_EXCLUSIONS support for build-webkit script |
| https://bugs.webkit.org/show_bug.cgi?id=61628 |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2011-06-06 Mihnea Ovidenie <mihnea@adobe.com> |
| |
| Reviewed by Kent Tamura. |
| |
| Add ENABLE(CSS_REGIONS) guard for CSS Regions support |
| https://bugs.webkit.org/show_bug.cgi?id=61631 |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2011-06-06 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Fix the GTK+ build. |
| |
| * GNUmakefile.am: Add javascriptcore_cflags variable. |
| |
| 2011-06-04 Kevin Ollivier <kevino@theolliviers.com> |
| |
| [wx] Unreviewed build fix. Restore the PPC build and allow users to specify architectures |
| to build on Mac. |
| |
| * wtf/Platform.h: |
| |
| 2011-06-04 Gustavo Noronha Silva <gns@gnome.org> |
| |
| Unreviewed, MIPS build fix. |
| |
| WebKitGTK+ tarball fails to build on MIPS. |
| https://buildd.debian.org/status/fetch.php?pkg=webkitgtk%2B&arch=mips&ver=1.4.0-1&stamp=1304786691 |
| |
| * GNUmakefile.list.am: Add missing MIPS-related file to the list |
| of files that are added to the tarball on make dist, and fix |
| sorting. |
| |
| 2011-06-04 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| Fix formatting of the output generated by KeywordLookupGenerator.py |
| https://bugs.webkit.org/show_bug.cgi?id=62083 |
| |
| - Uses correct year for copyright. |
| - Puts ending brace on same line as "else if" |
| - Puts starting brace of function on its own line. |
| - Adds some tasteful whitespace. |
| - Adds comments to make clear that scopes are ending |
| - Make macros actually split on two lines. |
| |
| * KeywordLookupGenerator.py: |
| |
| 2011-06-04 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| KeywordLookupGenerator.py spams stdout in Chromium Linux build |
| https://bugs.webkit.org/show_bug.cgi?id=62087 |
| |
| This action does not appear to be needed. |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| |
| 2011-06-03 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Lexer needs to provide Identifier for reserved words |
| https://bugs.webkit.org/show_bug.cgi?id=62086 |
| |
| Alas it is necessary to provide an Identifier reference for keywords |
| so that we can do the right thing when they're used in object literals. |
| We now keep Identifiers for all reserved words in the CommonIdentifiers |
| structure so that we can access them without a hash lookup. |
| |
| * KeywordLookupGenerator.py: |
| * parser/Lexer.cpp: |
| (JSC::Lexer::parseIdentifier): |
| * parser/Lexer.h: |
| * runtime/CommonIdentifiers.cpp: |
| (JSC::CommonIdentifiers::CommonIdentifiers): |
| * runtime/CommonIdentifiers.h: |
| |
| 2011-06-03 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Add debug code to break on speculation failures. |
| |
| * dfg/DFGJITCompiler.cpp: |
| (JSC::DFG::JITCompiler::jumpFromSpeculativeToNonSpeculative): |
| (JSC::DFG::JITCompiler::compileFunction): |
| * dfg/DFGNode.h: |
| |
| 2011-06-03 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=62082 |
| DFG JIT - bug passing arguments that need swap |
| |
| This is really just a typo. |
| When setting up the arguments for a call out to a C operation, we'll |
| fail to swap arguments where this is necessary. For example, in the |
| case of 2 arg calls, where the first argument is in %rdx & the second |
| is in %rsi we should swap (exec will be passed in %rdi), but we don't. |
| |
| This can also affect function calls passing three arguments. |
| |
| * dfg/DFGJITCodeGenerator.h: |
| (JSC::DFG::JITCodeGenerator::setupTwoStubArgs): |
| - Call swap with the correct arguments. |
| |
| 2011-06-03 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Force inlining of some hot lexer functions |
| https://bugs.webkit.org/show_bug.cgi?id=62079 |
| |
| Fix more GCC stupidity |
| |
| * parser/Lexer.h: |
| (JSC::Lexer::isWhiteSpace): |
| (JSC::Lexer::isLineTerminator): |
| |
| 2011-06-03 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| GCC not inlining some functions that it really should be |
| https://bugs.webkit.org/show_bug.cgi?id=62075 |
| |
| Add ALWAYS_INLINE to a number of parsing and lexing functions |
| that should always be inlined. This gets us ~1.4% on my ad hoc |
| parser test. |
| |
| * KeywordLookupGenerator.py: |
| * parser/JSParser.cpp: |
| (JSC::JSParser::next): |
| (JSC::JSParser::nextTokenIsColon): |
| (JSC::JSParser::consume): |
| (JSC::JSParser::match): |
| (JSC::JSParser::tokenStart): |
| (JSC::JSParser::tokenLine): |
| (JSC::JSParser::tokenEnd): |
| * parser/Lexer.cpp: |
| (JSC::isIdentPart): |
| |
| 2011-06-03 Oliver Hunt <oliver@apple.com> |
| |
| Whoops, fix last minute bug. |
| |
| * parser/Lexer.cpp: |
| (JSC::Lexer::parseIdentifier): |
| |
| 2011-06-03 Martin Robinson <mrobinson@igalia.com> |
| |
| Try to fix the GTK+ build. |
| |
| * GNUmakefile.am: Clean up some spaces that should be tabs. |
| * GNUmakefile.list.am: Add KeywordLookup.h to the source list |
| and clean up some spaces that should be tabs. |
| |
| 2011-06-03 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Improve keyword lookup |
| https://bugs.webkit.org/show_bug.cgi?id=61913 |
| |
| Rather than doing multiple hash lookups as we currently |
| do when trying to identify keywords we now use an |
| automatically generated decision tree (essentially it's |
| a hard coded patricia trie). We still use the regular |
| lookup table for the last few characters of an input as |
| this allows us to completely skip all bounds checks. |
| |
| * CMakeLists.txt: |
| * DerivedSources.make: |
| * DerivedSources.pro: |
| * GNUmakefile.am: |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * KeywordLookupGenerator.py: Added. |
| * make-generated-sources.sh: |
| * parser/Lexer.cpp: |
| (JSC::Lexer::internalShift): |
| (JSC::Lexer::shift): |
| (JSC::Lexer::parseIdentifier): |
| * parser/Lexer.h: |
| |
| 2011-06-03 Siddharth Mathur <siddharth.mathur@nokia.com> |
| |
| Reviewed by Benjamin Poulain. |
| |
| [Qt] Build flag for experimental ICU library support |
| https://bugs.webkit.org/show_bug.cgi?id=60786 |
| |
| Adds a build-time flag (CONFIG+=use_system_icu) that enables experimental |
| ICU powered Unicode support. |
| |
| * JavaScriptCore.pri: Support for use_system_icu CONFIG flag. |
| * wtf/unicode/qt4/UnicodeQt4.h: Guard an include file with USE(ICU_UNICODE). |
| |
| 2011-06-03 Alexis Menard <alexis.menard@openbossa.org> |
| |
| Reviewed by Benjamin Poulain. |
| |
| [Qt] Build fix of QtWebKit 2.2 when inside Qt tree with GCC 4.6. |
| https://bugs.webkit.org/show_bug.cgi?id=61957 |
| |
| When building inside the Qt source tree, qmake always append the mkspecs |
| defines after ours. We have to workaround and make sure that we append |
| our flags after the qmake variable used inside Qt. This workaround was provided |
| by our qmake folks. We need to append in both case because qmake behave differently |
| when called with -spec or via SUBDIR+=. This patch unbreak r87950 on Mac for Qt port. |
| |
| * JavaScriptCore.pro: |
| |
| 2011-06-02 Jay Civelli <jcivelli@chromium.org> |
| |
| Reviewed by Adam Barth. |
| |
| Added a method to generate RFC 2822 compliant date strings. |
| https://bugs.webkit.org/show_bug.cgi?id=7169 |
| |
| * wtf/DateMath.cpp: |
| (WTF::twoDigitStringFromNumber): |
| (WTF::makeRFC2822DateString): |
| * wtf/DateMath.h: |
| |
| 2011-06-02 Alexis Menard <alexis.menard@openbossa.org> |
| |
| Reviewed by Andreas Kling. |
| |
| [Qt] Build fix of QtWebKit 2.2 when inside Qt tree with GCC 4.6. |
| https://bugs.webkit.org/show_bug.cgi?id=61957 |
| |
| When building inside the Qt source tree, qmake always append the mkspecs |
| defines after ours. We have to workaround and make sure that we append |
| our flags after the qmake variable used inside Qt. This workaround was provided |
| by our qmake folks. |
| |
| * JavaScriptCore.pro: |
| |
| 2011-06-01 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Add single character lookup cache to IdentifierArena |
| https://bugs.webkit.org/show_bug.cgi?id=61879 |
| |
| Add a simple lookup cache for single ascii character |
| identifiers. Produces around a 2% improvement in parse |
| time for my adhoc parser test. |
| |
| * parser/ParserArena.h: |
| (JSC::IdentifierArena::IdentifierArena): |
| (JSC::IdentifierArena::clear): |
| (JSC::IdentifierArena::makeIdentifier): |
| |
| 2011-05-31 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Freezing a function and its prototype causes browser to crash. |
| https://bugs.webkit.org/show_bug.cgi?id=61758 |
| |
| Make JSObject::preventExtensions virtual so that we can override it |
| and instantiate all lazy |
| |
| * JavaScriptCore.exp: |
| * runtime/JSFunction.cpp: |
| (JSC::createPrototypeProperty): |
| (JSC::JSFunction::preventExtensions): |
| (JSC::JSFunction::getOwnPropertySlot): |
| * runtime/JSFunction.h: |
| * runtime/JSObject.h: |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::seal): |
| (JSC::JSObject::seal): |
| |
| 2011-06-01 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r87788. |
| http://trac.webkit.org/changeset/87788 |
| https://bugs.webkit.org/show_bug.cgi?id=61856 |
| |
| breaks windows chromium canary (Requested by jknotten on |
| #webkit). |
| |
| * wtf/DateMath.cpp: |
| (WTF::timeClip): |
| * wtf/DateMath.h: |
| |
| 2011-06-01 Jay Civelli <jcivelli@chromium.org> |
| |
| Reviewed by Adam Barth. |
| |
| Added a method to generate RFC 2822 compliant date strings. |
| https://bugs.webkit.org/show_bug.cgi?id=7169 |
| |
| * wtf/DateMath.cpp: |
| (WTF::twoDigitStringFromNumber): |
| (WTF::makeRFC2822DateString): |
| * wtf/DateMath.h: |
| |
| 2011-05-31 Yong Li <yoli@rim.com> |
| |
| Reviewed by Eric Seidel. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=54807 |
| We have been assuming plain bitfields (like "int a : 31") are always signed integers. |
| However some compilers can treat them as unsigned. For example, RVCT 4.0 states plain |
| bitfields (declared without either signed or unsigned qualifiers) are treats as unsigned. |
| http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0348c/Babjddhe.html |
| Although we can use "--signed-bitfields" flag to make RVCT 4.0 behave as most other compilers, |
| always using "signed"/"unsigned" qualifier to declare integral type bitfields is still a good |
| rule we should have in order to make our code independent from compilers and compiler flags. |
| |
| No new test added because this change is not known to fix any issue. |
| |
| * bytecode/StructureStubInfo.h: |
| |
| 2011-05-30 Hojong Han <hojong.han@samsung.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| [JSC] malfunction during arithmetic condition check with negative number (-2147483648) |
| https://bugs.webkit.org/show_bug.cgi?id=61416 |
| |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::branch32): |
| * tests/mozilla/ecma/Expressions/11.12-1.js: |
| (getTestCases): |
| |
| 2011-05-29 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Some heap refactoring |
| https://bugs.webkit.org/show_bug.cgi?id=61704 |
| |
| SunSpider says no change. |
| |
| * JavaScriptCore.exp: Export! |
| |
| * heap/Heap.cpp: COLLECT_ON_EVERY_ALLOCATION can actually do so now. |
| |
| (JSC::Heap::Heap): Changed Heap sub-objects to point to the heap. |
| |
| (JSC::Heap::allocate): Changed inline allocation code to only select the |
| size class, since this can be optimized out at compile time -- everything |
| else is now inlined into this out-of-line function. |
| |
| No need to duplicate ASSERTs made in our caller. |
| |
| * heap/Heap.h: |
| (JSC::Heap::heap): |
| (JSC::Heap::isMarked): |
| (JSC::Heap::testAndSetMarked): |
| (JSC::Heap::testAndClearMarked): |
| (JSC::Heap::setMarked): Call directly into MarkedBlock instead of adding |
| a layer of indirection through MarkedSpace. |
| |
| (JSC::Heap::allocate): See above. |
| |
| * heap/MarkedBlock.cpp: |
| (JSC::MarkedBlock::create): |
| (JSC::MarkedBlock::MarkedBlock): |
| * heap/MarkedBlock.h: Changed Heap sub-objects to point to the heap. |
| |
| * heap/MarkedSpace.cpp: |
| (JSC::MarkedSpace::MarkedSpace): |
| (JSC::MarkedSpace::allocateBlock): |
| * heap/MarkedSpace.h: |
| (JSC::MarkedSpace::allocate): Updated to match changes above. |
| |
| 2011-05-28 David Kilzer <ddkilzer@apple.com> |
| |
| BUILD FIX when building only the interpreter |
| |
| Fixes the following compiler warning: |
| |
| JavaScriptCore/runtime/JSGlobalData.cpp:462:6: error: no previous prototype for function 'releaseExecutableMemory' [-Werror,-Wmissing-prototypes,3] |
| void releaseExecutableMemory(JSGlobalData& globalData) |
| ^ |
| |
| * jit/ExecutableAllocator.h: Moved declaration of |
| JSC::releaseExecutableMemory(). |
| |
| 2011-05-28 David Kilzer <ddkilzer@apple.com> |
| |
| BUILD FIX after r87527 with ENABLE(BRANCH_COMPACTION) |
| |
| * assembler/LinkBuffer.h: |
| (JSC::LinkBuffer::linkCode): Added missing argument. |
| |
| 2011-05-27 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| JS API is too aggressive about throwing exceptions for NULL get or set operations |
| https://bugs.webkit.org/show_bug.cgi?id=61678 |
| |
| * API/JSCallbackObject.h: Changed our staticValueGetter to a regular |
| function that returns a JSValue, so it can fail and still forward to |
| normal property lookup. |
| |
| * API/JSCallbackObjectFunctions.h: |
| (JSC::::getOwnPropertySlot): Don't throw an exception when failing to |
| access a static property -- just forward the access. This allows objects |
| to observe get/set operations but still let the JS object manage lifetime. |
| |
| (JSC::::put): Ditto. |
| |
| (JSC::::getStaticValue): Same as JSCallbackObject.h. |
| |
| * API/tests/testapi.c: |
| (MyObject_set_nullGetForwardSet): |
| * API/tests/testapi.js: Updated tests to reflect slightly less strict |
| behavior, which matches headerdoc claims. |
| |
| 2011-05-27 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Property caching is too aggressive for API objects |
| https://bugs.webkit.org/show_bug.cgi?id=61677 |
| |
| * API/JSCallbackObject.h: Opt in to ProhibitsPropertyCaching, since our |
| callback APIs allow the client to change its mind about our propertis at |
| any time. |
| |
| * API/tests/testapi.c: |
| (PropertyCatchalls_getProperty): |
| (PropertyCatchalls_setProperty): |
| (PropertyCatchalls_getPropertyNames): |
| (PropertyCatchalls_class): |
| (main): |
| * API/tests/testapi.js: Some tests for dynamic API objects. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::tryCachePutByID): |
| (JSC::Interpreter::tryCacheGetByID): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::tryCachePutByID): |
| (JSC::JITThunks::tryCacheGetByID): |
| (JSC::DEFINE_STUB_FUNCTION): Opt out of property caching if the client |
| requires it. |
| |
| * runtime/JSTypeInfo.h: |
| (JSC::TypeInfo::TypeInfo): |
| (JSC::TypeInfo::isFinal): |
| (JSC::TypeInfo::prohibitsPropertyCaching): |
| (JSC::TypeInfo::flags): Added a flag to track opting out of property |
| caching. Fixed an "&&" vs "&" typo that was previously harmless, but |
| is now harmful since m_flags2 can have more than one bit set. |
| |
| 2011-05-27 Stephanie Lewis <slewis@apple.com> |
| |
| Unreviewed. |
| |
| Fix a typo in the order_file flag. |
| |
| * Configurations/Base.xcconfig: |
| |
| 2011-05-27 Patrick Gansterer <paroga@webkit.org> |
| |
| Unreviewed. Build fix for !ENABLE(ASSEMBLER) after r87527. |
| |
| * runtime/JSGlobalData.cpp: |
| (JSGlobalData::JSGlobalData): |
| |
| 2011-05-27 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Add a few validity assertions to JSCallbackObject |
| https://bugs.webkit.org/show_bug.cgi?id=61659 |
| |
| * API/JSCallbackObject.h: |
| (JSC::JSCallbackObject::visitChildren): |
| |
| 2011-05-27 Oliver Hunt <oliver@apple.com> |
| |
| Build fix |
| |
| * runtime/RegExpCache.cpp: |
| (JSC::RegExpCache::invalidateCode): |
| |
| 2011-05-27 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Try to release unused executable memory when the FixedVMPool allocator is under pressure |
| https://bugs.webkit.org/show_bug.cgi?id=61651 |
| |
| Rather than crashing when full the FixedVMPool allocator now returns a null |
| allocation. We replace the code that used to CRASH() on null allocations |
| with logic that asks the provided globalData to release any executable memory |
| that it can. Currently this just means throwing away all regexp code, but |
| in future we'll try to be more aggressive. |
| |
| * assembler/ARMAssembler.cpp: |
| (JSC::ARMAssembler::executableCopy): |
| * assembler/ARMAssembler.h: |
| * assembler/AssemblerBuffer.h: |
| (JSC::AssemblerBuffer::executableCopy): |
| * assembler/AssemblerBufferWithConstantPool.h: |
| * assembler/LinkBuffer.h: |
| (JSC::LinkBuffer::LinkBuffer): |
| (JSC::LinkBuffer::linkCode): |
| * assembler/MIPSAssembler.h: |
| (JSC::MIPSAssembler::executableCopy): |
| * assembler/SH4Assembler.h: |
| (JSC::SH4Assembler::executableCopy): |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::executableCopy): |
| (JSC::X86Assembler::X86InstructionFormatter::executableCopy): |
| * dfg/DFGJITCompiler.cpp: |
| (JSC::DFG::JITCompiler::compileFunction): |
| * jit/ExecutableAllocator.h: |
| (JSC::ExecutablePool::create): |
| (JSC::ExecutablePool::alloc): |
| (JSC::ExecutableAllocator::ExecutableAllocator): |
| (JSC::ExecutableAllocator::poolForSize): |
| (JSC::ExecutablePool::ExecutablePool): |
| (JSC::ExecutablePool::poolAllocate): |
| * jit/ExecutableAllocatorFixedVMPool.cpp: |
| (JSC::FixedVMPoolAllocator::alloc): |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompile): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| * jit/JITOpcodes32_64.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| (JSC::JIT::privateCompileCTINativeCall): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::stringGetByValStubGenerator): |
| (JSC::JIT::privateCompilePutByIdTransition): |
| (JSC::JIT::privateCompilePatchGetArrayLength): |
| (JSC::JIT::privateCompileGetByIdProto): |
| (JSC::JIT::privateCompileGetByIdSelfList): |
| (JSC::JIT::privateCompileGetByIdProtoList): |
| (JSC::JIT::privateCompileGetByIdChainList): |
| (JSC::JIT::privateCompileGetByIdChain): |
| * jit/JITPropertyAccess32_64.cpp: |
| (JSC::JIT::stringGetByValStubGenerator): |
| (JSC::JIT::privateCompilePutByIdTransition): |
| (JSC::JIT::privateCompilePatchGetArrayLength): |
| (JSC::JIT::privateCompileGetByIdProto): |
| (JSC::JIT::privateCompileGetByIdSelfList): |
| (JSC::JIT::privateCompileGetByIdProtoList): |
| (JSC::JIT::privateCompileGetByIdChainList): |
| (JSC::JIT::privateCompileGetByIdChain): |
| * jit/SpecializedThunkJIT.h: |
| (JSC::SpecializedThunkJIT::finalize): |
| * jit/ThunkGenerators.cpp: |
| (JSC::charCodeAtThunkGenerator): |
| (JSC::charAtThunkGenerator): |
| (JSC::fromCharCodeThunkGenerator): |
| (JSC::sqrtThunkGenerator): |
| (JSC::powThunkGenerator): |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| (JSC::JSGlobalData::releaseExecutableMemory): |
| (JSC::releaseExecutableMemory): |
| * runtime/JSGlobalData.h: |
| * runtime/RegExpCache.cpp: |
| (JSC::RegExpCache::invalidateCode): |
| * runtime/RegExpCache.h: |
| * yarr/YarrJIT.cpp: |
| (JSC::Yarr::YarrGenerator::compile): |
| |
| 2011-05-26 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Optimized ConservativeSet to avoid double-visiting objects |
| https://bugs.webkit.org/show_bug.cgi?id=61592 |
| |
| SunSpider thinks this might be a 1% speedup |
| |
| * heap/ConservativeRoots.h: |
| (JSC::ConservativeRoots::add): Use testAndClearMarked to avoid double-visiting |
| an object. |
| |
| * heap/Heap.h: |
| (JSC::Heap::isMarked): |
| (JSC::Heap::testAndSetMarked): |
| (JSC::Heap::testAndClearMarked): |
| (JSC::Heap::setMarked): Added testAndClearMarked. Changed argument type |
| to void*, since clients want to ask questions about arbitrary pointers |
| into the heap, even when they aren't known to be JSCells. |
| |
| * heap/MarkedBlock.h: |
| (JSC::MarkedBlock::testAndClearMarked): |
| * heap/MarkedSpace.h: |
| (JSC::MarkedSpace::isMarked): |
| (JSC::MarkedSpace::testAndSetMarked): |
| (JSC::MarkedSpace::testAndClearMarked): |
| (JSC::MarkedSpace::setMarked): |
| (JSC::MarkedSpace::contains): Ditto. |
| |
| * wtf/Bitmap.h: |
| (WTF::::testAndClear): New function for ConservativeRoots's inverted |
| marking pass. |
| |
| 2011-05-27 Stephanie Lewis <slewis@apple.com> |
| |
| Rubber Stamped by Adam Roben. |
| |
| Update Order Files. Use -order_file flag since it can order more of the binary. |
| |
| * Configurations/Base.xcconfig: |
| * JavaScriptCore.order: |
| |
| 2011-05-26 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Renamed heapRootMarker to heapRootVisitor to match its class name |
| https://bugs.webkit.org/show_bug.cgi?id=61584 |
| |
| * heap/Heap.cpp: |
| (JSC::Heap::markProtectedObjects): |
| (JSC::Heap::markTempSortVectors): |
| (JSC::Heap::markRoots): |
| |
| 2011-05-26 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Removed some interdependency between Heap and SmallStrings by simplifying |
| the SmallStrings lifetime model |
| https://bugs.webkit.org/show_bug.cgi?id=61579 |
| |
| SunSpider reports no change. |
| |
| Using Weak<T> could accomplish this too, but we're not sure it will give |
| us the performance we need. This is a first step, and it accomplishes |
| most of the value of using Weak<T>. |
| |
| * heap/Heap.cpp: |
| (JSC::Heap::destroy): |
| (JSC::Heap::markRoots): |
| (JSC::Heap::reset): Finalize small strings just like other weak handles. |
| |
| * runtime/SmallStrings.cpp: |
| (JSC::finalize): |
| (JSC::SmallStrings::finalizeSmallStrings): |
| * runtime/SmallStrings.h: Make all small strings trivially weak, instead |
| of having an "all for one, one for all" memory model. |
| |
| 2011-05-26 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make RegExpCache a weak map |
| https://bugs.webkit.org/show_bug.cgi?id=61554 |
| |
| Switch to a weak map for the regexp cache, and hide that |
| behaviour behind RegExp::create. |
| |
| When a RegExp is compiled it attempts to add itself to |
| the "strong" cache. This cache is a simple round-robin |
| buffer as was the old strong cache. Happily this can |
| be smaller than the old strong cache as RegExps are only |
| added when they're compiled so it is under less pressure |
| to evict. |
| |
| * bytecompiler/NodesCodegen.cpp: |
| (JSC::RegExpNode::emitBytecode): |
| * runtime/RegExp.cpp: |
| (JSC::RegExp::RegExp): |
| (JSC::RegExp::create): |
| (JSC::RegExp::match): |
| * runtime/RegExp.h: |
| (JSC::RegExp::gcShouldInvalidateCode): |
| (JSC::RegExp::hasCode): |
| (JSC::RegExp::key): |
| * runtime/RegExpCache.cpp: |
| (JSC::RegExpCache::lookupOrCreate): |
| (JSC::RegExpCache::RegExpCache): |
| (JSC::RegExpCache::isReachableFromOpaqueRoots): |
| (JSC::RegExpCache::finalize): |
| * runtime/RegExpCache.h: |
| * runtime/RegExpConstructor.cpp: |
| (JSC::constructRegExp): |
| * runtime/RegExpPrototype.cpp: |
| (JSC::regExpProtoFuncCompile): |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncMatch): |
| (JSC::stringProtoFuncSearch): |
| |
| 2011-05-26 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Moved Heap-related functions out of JSCell.h and into respective header files |
| https://bugs.webkit.org/show_bug.cgi?id=61567 |
| |
| * heap/Heap.h: |
| (JSC::Heap::allocate): |
| (JSC::Heap::heap): |
| * heap/MarkedBlock.h: |
| (JSC::MarkedBlock::allocate): |
| * heap/MarkedSpace.h: |
| (JSC::MarkedSpace::sizeClassFor): |
| (JSC::MarkedSpace::allocate): |
| * runtime/JSCell.h: |
| (JSC::JSCell::destructor): |
| |
| 2011-05-26 Geoffrey Garen <ggaren@apple.com> |
| |
| Try to fix Windows build. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2011-05-26 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| [debug feature] WTFString should have show() method |
| https://bugs.webkit.org/show_bug.cgi?id=61149 |
| |
| Added String::show and AtomicString::show in NDEBUG. |
| |
| * wtf/text/AtomicString.cpp: |
| (WTF::AtomicString::show): |
| * wtf/text/AtomicString.h: |
| * wtf/text/WTFString.cpp: |
| (String::show): |
| * wtf/text/WTFString.h: |
| |
| 2011-05-26 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Factored out some Heap ASSERTs |
| https://bugs.webkit.org/show_bug.cgi?id=61565 |
| |
| * JavaScriptCore.exp: |
| * heap/Heap.cpp: |
| (JSC::isValidSharedInstanceThreadState): |
| (JSC::isValidThreadState): |
| (JSC::Heap::markRoots): |
| (JSC::Heap::isValidAllocation): |
| * heap/Heap.h: |
| * runtime/JSCell.h: |
| (JSC::JSCell::Heap::allocate): |
| |
| 2011-05-26 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=61508 |
| DFG JIT - Add support for get by id self caching. |
| |
| Change the call out to be an unexpected call (using silent spill/fill functions), |
| add a structure check & compact load to the JIT code, and add repatching mechanisms. |
| Since DFGOperations may want to be be implemented in asm, make these symbols be extern |
| "C". Add an asm wrapper to pass the return address to the optimizing get-by-id operation, |
| so that it can look up its StructureStubInfo. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| - Added new files. |
| * bytecode/StructureStubInfo.h: |
| - Added 'unset' entries to union. |
| * dfg/DFGJITCodeGenerator.h: |
| (JSC::DFG::JITCodeGenerator::appendCallWithExceptionCheck): |
| - Return the call, we need this to populate the StructureStubInfo. |
| * dfg/DFGJITCompiler.cpp: |
| (JSC::DFG::JITCompiler::compileFunction): |
| - Populate the CodebBlock's StructureStubInfo Vector. |
| * dfg/DFGJITCompiler.h: |
| (JSC::DFG::JITCompiler::appendCallWithExceptionCheck): |
| - Return the call, we need this to populate the StructureStubInfo. |
| (JSC::DFG::JITCompiler::addPropertyAccess): |
| (JSC::DFG::JITCompiler::PropertyAccessRecord::PropertyAccessRecord): |
| - Add structures to record property access info during compilation. |
| * dfg/DFGOperations.cpp: |
| - Made all external methods extern "C". |
| (JSC::DFG::operationPutByValInternal): |
| - Moved outside of the extern "C" block. |
| * dfg/DFGOperations.h: |
| - Made all external methods extern "C". |
| * dfg/DFGRepatch.cpp: Added. |
| (JSC::DFG::dfgRepatchCall): |
| - repatch a call to link to a new callee function. |
| (JSC::DFG::dfgRepatchGetByIdSelf): |
| - Modify the JIT code to optimize self accesses. |
| (JSC::DFG::tryCacheGetByID): |
| - Internal implementation of dfgRepatchGetByID (factor out failing cases). |
| (JSC::DFG::dfgRepatchGetByID): |
| - Used to optimize 'operationGetByIdOptimize' - repatches to 'operationGetById', and tries to optimize self accesses! |
| * dfg/DFGRepatch.h: Added. |
| - Expose dfgRepatchGetByID. |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| - Changed implementation of GetById ops. |
| |
| 2011-05-26 Geoffrey Garen <ggaren@apple.com> |
| |
| Rolled back in http://trac.webkit.org/changeset/87408 with Windows build fixed. |
| |
| * heap/MarkedBlock.cpp: |
| (JSC::MarkedBlock::MarkedBlock): |
| * heap/MarkedBlock.h: |
| * wtf/DoublyLinkedList.h: |
| (WTF::::DoublyLinkedListNode): |
| (WTF::::setPrev): |
| (WTF::::setNext): |
| (WTF::::prev): |
| (WTF::::next): |
| (WTF::::DoublyLinkedList): |
| (WTF::::isEmpty): |
| (WTF::::size): |
| (WTF::::clear): |
| (WTF::::head): |
| (WTF::::append): |
| (WTF::::remove): |
| (WTF::::removeHead): |
| |
| 2011-05-26 Geoffrey Garen <ggaren@apple.com> |
| |
| Rolled out http://trac.webkit.org/changeset/87408 because it broke the |
| Windows build. |
| |
| * heap/MarkedBlock.cpp: |
| (JSC::MarkedBlock::MarkedBlock): |
| * heap/MarkedBlock.h: |
| (JSC::MarkedBlock::setPrev): |
| (JSC::MarkedBlock::setNext): |
| (JSC::MarkedBlock::prev): |
| (JSC::MarkedBlock::next): |
| * wtf/DoublyLinkedList.h: |
| (WTF::::DoublyLinkedList): |
| (WTF::::isEmpty): |
| (WTF::::head): |
| (WTF::::append): |
| (WTF::::remove): |
| |
| 2011-05-26 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Provide a real owner when copying a property table, for the sake of |
| write barriers. |
| https://bugs.webkit.org/show_bug.cgi?id=61547 |
| |
| No test because we can't enable the writeBarrier() ASSERT just yet. |
| |
| * runtime/Structure.cpp: |
| (JSC::Structure::addPropertyTransition): |
| |
| 2011-05-26 Adam Roben <aroben@apple.com> |
| |
| Windows build fix after r87346 |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Fixed up exports to match |
| reality. |
| |
| 2011-05-26 Patrick Gansterer <paroga@webkit.org> |
| |
| Reviewed by Adam Barth. |
| |
| ASSERT(isMainThread()) when using single threaded jsc executable |
| https://bugs.webkit.org/show_bug.cgi?id=60846 |
| |
| Remove the ASSERT since we do not have the concept of MainThread in JSC. |
| |
| * wtf/CryptographicallyRandomNumber.cpp: |
| (WTF::ARC4Stream::ARC4RandomNumberGenerator::randomNumber): |
| (WTF::ARC4Stream::ARC4RandomNumberGenerator::randomValues): |
| |
| 2011-05-25 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=61506 |
| |
| Move the silent spill/fill methods in the DFG JIT to the JITCodeGenerator |
| so that they are available to the SpeculativeJIT. |
| |
| * dfg/DFGJITCodeGenerator.h: |
| (JSC::DFG::JITCodeGenerator::silentSpillGPR): |
| (JSC::DFG::JITCodeGenerator::silentSpillFPR): |
| (JSC::DFG::JITCodeGenerator::silentFillGPR): |
| (JSC::DFG::JITCodeGenerator::silentFillFPR): |
| (JSC::DFG::JITCodeGenerator::silentSpillAllRegisters): |
| (JSC::DFG::JITCodeGenerator::silentFillAllRegisters): |
| * dfg/DFGNonSpeculativeJIT.h: |
| |
| 2011-05-25 Ryosuke Niwa <rniwa@webkit.org> |
| |
| An attempt to revive Windows bots. |
| |
| * runtime/RegExp.cpp: |
| * runtime/RegExp.h: |
| |
| 2011-05-25 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bug 61503 - Move population of CodeBlock::m_structureStubInfos into JIT |
| |
| This data structure, used at runtime by the JIT, is currently unnecessarily populated |
| with default entries during byte compilation. |
| |
| Aside from meaning that there is JIT specific code in the bytecompiler, this also ties |
| us to one entry per corresponding bytecode op, which may be undesirable. Instead, |
| populate this array from the JIT. |
| |
| The type StructureStubInfo has two unused states, one for gets & one for puts. Unify |
| these, so that the class can have a default constructor (and to simply switch statements |
| in code walking over the table). |
| |
| This change has ramification for the DFG JIT, in that the DFG JIT used this datastructure |
| to check for functions containing property access. Instead do so in the DFGByteCodeParser. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::printStructureStubInfo): |
| * bytecode/CodeBlock.h: |
| (JSC::CodeBlock::setNumberOfStructureStubInfos): |
| (JSC::CodeBlock::numberOfStructureStubInfos): |
| * bytecode/StructureStubInfo.cpp: |
| (JSC::StructureStubInfo::deref): |
| (JSC::StructureStubInfo::visitAggregate): |
| * bytecode/StructureStubInfo.h: |
| (JSC::StructureStubInfo::StructureStubInfo): |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitGetById): |
| (JSC::BytecodeGenerator::emitPutById): |
| (JSC::BytecodeGenerator::emitDirectPutById): |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::parseBlock): |
| * jit/JIT.cpp: |
| (JSC::JIT::JIT): |
| (JSC::JIT::privateCompileMainPass): |
| (JSC::JIT::privateCompileSlowCases): |
| (JSC::JIT::privateCompile): |
| * jit/JIT.h: |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emit_op_get_by_id): |
| (JSC::JIT::emit_op_put_by_id): |
| (JSC::JIT::emit_op_method_check): |
| (JSC::JIT::compileGetByIdHotPath): |
| (JSC::JIT::compileGetByIdSlowCase): |
| (JSC::JIT::emitSlow_op_put_by_id): |
| * jit/JITPropertyAccess32_64.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::emit_op_method_check): |
| (JSC::JIT::compileGetByIdHotPath): |
| (JSC::JIT::compileGetByIdSlowCase): |
| * runtime/Executable.cpp: |
| (JSC::tryDFGCompile): |
| |
| 2011-05-25 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bug 61501 - Unify AbstractMacroAssembler::differenceBetween methods. |
| |
| * assembler/AbstractMacroAssembler.h: |
| (JSC::AbstractMacroAssembler::Call::Call): |
| (JSC::AbstractMacroAssembler::Call::fromTailJump): |
| (JSC::AbstractMacroAssembler::Jump::Jump): |
| (JSC::AbstractMacroAssembler::Jump::link): |
| (JSC::AbstractMacroAssembler::Jump::linkTo): |
| (JSC::AbstractMacroAssembler::Jump::isSet): |
| (JSC::AbstractMacroAssembler::differenceBetween): |
| (JSC::AbstractMacroAssembler::linkJump): |
| (JSC::AbstractMacroAssembler::getLinkerCallReturnOffset): |
| * assembler/LinkBuffer.h: |
| (JSC::LinkBuffer::link): |
| (JSC::LinkBuffer::locationOf): |
| (JSC::LinkBuffer::locationOfNearCall): |
| (JSC::LinkBuffer::returnAddressOffset): |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::linkCall): |
| * assembler/MacroAssemblerARMv7.h: |
| (JSC::MacroAssemblerARMv7::linkCall): |
| * assembler/MacroAssemblerMIPS.h: |
| (JSC::MacroAssemblerMIPS::linkCall): |
| * assembler/MacroAssemblerSH4.cpp: |
| (JSC::MacroAssemblerSH4::linkCall): |
| * assembler/MacroAssemblerX86.h: |
| (JSC::MacroAssemblerX86::linkCall): |
| * assembler/MacroAssemblerX86_64.h: |
| (JSC::MacroAssemblerX86_64::linkCall): |
| |
| 2011-05-25 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=61500 |
| Add JSObject::offsetOfPropertyStorage |
| |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::compileGetDirectOffset): |
| (JSC::JIT::compileGetByIdHotPath): |
| (JSC::JIT::emit_op_put_by_id): |
| (JSC::JIT::compilePutDirectOffset): |
| * jit/JITPropertyAccess32_64.cpp: |
| (JSC::JIT::compileGetByIdHotPath): |
| (JSC::JIT::emit_op_put_by_id): |
| (JSC::JIT::compilePutDirectOffset): |
| (JSC::JIT::compileGetDirectOffset): |
| * runtime/JSObject.h: |
| (JSC::JSObject::offsetOfPropertyStorage): |
| |
| 2011-05-25 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make RegExp GC allocated |
| https://bugs.webkit.org/show_bug.cgi?id=61490 |
| |
| Make RegExp GC allocated. Basically mechanical change to replace |
| most use of [Pass]RefPtr<RegExp> with RegExp* or WriteBarrier<RegExp> |
| where actual ownership happens. |
| |
| Made the RegExpCache use Strong<> references currently to avoid any |
| changes in behaviour. |
| |
| * JavaScriptCore.exp: |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::visitAggregate): |
| * bytecode/CodeBlock.h: |
| (JSC::CodeBlock::addRegExp): |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::addRegExp): |
| (JSC::BytecodeGenerator::emitNewRegExp): |
| * bytecompiler/BytecodeGenerator.h: |
| * runtime/JSCell.h: |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| (JSC::JSGlobalData::clearBuiltinStructures): |
| (JSC::JSGlobalData::addRegExpToTrace): |
| * runtime/JSGlobalData.h: |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::reset): |
| * runtime/RegExp.cpp: |
| (JSC::RegExp::RegExp): |
| (JSC::RegExp::create): |
| (JSC::RegExp::invalidateCode): |
| * runtime/RegExp.h: |
| (JSC::RegExp::createStructure): |
| * runtime/RegExpCache.cpp: |
| (JSC::RegExpCache::lookupOrCreate): |
| (JSC::RegExpCache::create): |
| * runtime/RegExpCache.h: |
| * runtime/RegExpConstructor.cpp: |
| (JSC::constructRegExp): |
| * runtime/RegExpObject.cpp: |
| (JSC::RegExpObject::RegExpObject): |
| (JSC::RegExpObject::visitChildren): |
| * runtime/RegExpObject.h: |
| (JSC::RegExpObject::setRegExp): |
| (JSC::RegExpObject::RegExpObjectData::RegExpObjectData): |
| * runtime/RegExpPrototype.cpp: |
| (JSC::RegExpPrototype::RegExpPrototype): |
| (JSC::regExpProtoFuncCompile): |
| * runtime/RegExpPrototype.h: |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncMatch): |
| (JSC::stringProtoFuncSearch): |
| |
| 2011-05-25 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Generate regexp code lazily |
| https://bugs.webkit.org/show_bug.cgi?id=61476 |
| |
| RegExp construction now simply validates the RegExp, it does |
| not perform actual codegen. |
| |
| * runtime/RegExp.cpp: |
| (JSC::RegExp::RegExp): |
| (JSC::RegExp::recompile): |
| (JSC::RegExp::compile): |
| (JSC::RegExp::match): |
| * runtime/RegExp.h: |
| (JSC::RegExp::recompileIfNecessary): |
| * runtime/RegExpConstructor.h: |
| (JSC::RegExpConstructor::performMatch): |
| * runtime/RegExpObject.cpp: |
| (JSC::RegExpObject::match): |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncReplace): |
| (JSC::stringProtoFuncMatch): |
| (JSC::stringProtoFuncSearch): |
| (JSC::stringProtoFuncSplit): |
| |
| 2011-05-24 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Removed MarkSetProperties because it was unused |
| https://bugs.webkit.org/show_bug.cgi?id=61418 |
| |
| * heap/MarkStack.h: |
| (JSC::MarkSet::MarkSet): |
| (JSC::MarkStack::append): |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::visitChildren): |
| * runtime/JSArray.h: |
| (JSC::JSArray::visitChildrenDirect): |
| * runtime/JSPropertyNameIterator.cpp: |
| (JSC::JSPropertyNameIterator::visitChildren): |
| * runtime/WriteBarrier.h: |
| (JSC::MarkStack::appendValues): |
| |
| 2011-05-25 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make allocations with guard pages ensure that the allocation succeeded |
| https://bugs.webkit.org/show_bug.cgi?id=61453 |
| |
| Add null checks, and make PageBlock's operator bool() use |
| the realbase, rather than the start of usable memory. |
| |
| * wtf/OSAllocatorPosix.cpp: |
| (WTF::OSAllocator::reserveAndCommit): |
| * wtf/PageBlock.h: |
| (WTF::PageBlock::operator bool): |
| (WTF::PageBlock::PageBlock): |
| |
| 2011-04-10 Kevin Ollivier <kevino@theolliviers.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Add JS_EXPORT_PRIVATE macro for exported methods in bytecompiler headers. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27551 |
| |
| * bytecompiler/BytecodeGenerator.h: |
| |
| 2011-05-24 Keishi Hattori <keishi@webkit.org> |
| |
| Reviewed by Kent Tamura. |
| |
| Disable textfield implementation of <input type=color>. Add INPUT_COLOR feature flag. Add input color sanitizer. |
| https://bugs.webkit.org/show_bug.cgi?id=61273 |
| |
| * Configurations/FeatureDefines.xcconfig: Added COLOR_INPUT feature flag. |
| |
| 2011-05-24 Kevin Ollivier <kevino@theolliviers.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Add export macros to WTFString.h. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27551 |
| |
| * wtf/text/WTFString.h: |
| (WTF::String::String): |
| (WTF::String::findIgnoringCase): |
| (WTF::String::isHashTableDeletedValue): |
| |
| 2011-05-24 Geoffrey Garen <ggaren@apple.com> |
| |
| Maybe fix the Mac build now? |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2011-05-24 Geoffrey Garen <ggaren@apple.com> |
| |
| Maybe fix the Mac build? |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2011-05-24 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Split HeapRootVisitor into its own class |
| https://bugs.webkit.org/show_bug.cgi?id=61399 |
| |
| * GNUmakefile.list.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * heap/HandleHeap.cpp: |
| * heap/HandleStack.cpp: |
| * heap/Heap.cpp: |
| * heap/HeapRootVisitor.h: Copied from Source/JavaScriptCore/heap/MarkStack.h. |
| * heap/MarkStack.h: |
| * runtime/ArgList.cpp: |
| * runtime/SmallStrings.cpp: |
| |
| 2011-05-24 Jay Civelli <jcivelli@chromium.org> |
| |
| Rubberstamped by David Kilzer. |
| |
| Updated some files that I forgot in my previous MHTML CL. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2011-05-24 Geoffrey Garen <ggaren@apple.com> |
| |
| Fix the Mac build: Yes, please do remove these files, svn. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2011-05-24 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Let's just have one way to get the system page size, bokay? |
| https://bugs.webkit.org/show_bug.cgi?id=61384 |
| |
| * CMakeListsEfl.txt: |
| * CMakeListsWinCE.txt: |
| * GNUmakefile.list.am: |
| * JavaScriptCore.exp: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.pro: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: MarkStack[Platform].cpp |
| is gone completely now, since it only existed to provide a duplicate way |
| to access the system page size. |
| |
| * heap/MarkStack.cpp: |
| (JSC::MarkStack::reset): |
| * heap/MarkStack.h: |
| (JSC::::MarkStackArray): |
| (JSC::::shrinkAllocation): Use WTF::pageSize. |
| |
| * heap/MarkStackPosix.cpp: |
| * heap/MarkStackSymbian.cpp: |
| * heap/MarkStackWin.cpp: Removed now-empty files. |
| |
| * jit/ExecutableAllocator.cpp: |
| (JSC::ExecutableAllocator::reprotectRegion): |
| * jit/ExecutableAllocator.h: |
| (JSC::ExecutableAllocator::ExecutableAllocator): |
| (JSC::ExecutablePool::ExecutablePool): |
| (JSC::ExecutablePool::poolAllocate): |
| * jit/ExecutableAllocatorFixedVMPool.cpp: Use WTF::pageSize. |
| |
| * wscript: Removed now-empty files. |
| |
| * wtf/PageBlock.cpp: |
| (WTF::systemPageSize): Integrated questionable Symbian page size rule |
| from ExecutableAllocator, because that seems like what the original |
| author should have done. |
| |
| 2011-05-24 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Interpreter crashes with gc validation enabled due to failure to mark initial cache structure |
| https://bugs.webkit.org/show_bug.cgi?id=61385 |
| |
| The interpreter uses the structure slot of get_by_id and put_by_id to hold |
| the initial structure it encountered so that it can identify whether a |
| given access is stable. |
| |
| When marking though we only visit the slot when we've decided to cache, and |
| so this value could die. This was "safe" as the value was only used for a |
| pointer compare, but it was incorrect. We now just mark the slot like we |
| should have been doing already. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::visitStructures): |
| |
| 2011-05-24 Adam Roben <aroben@apple.com> |
| |
| Windows build fix |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Removed now-inline functions. |
| |
| 2011-05-24 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix: update the #if OS(WINDOWS) section to match my last patch. |
| |
| * heap/MarkStack.h: |
| (JSC::::shrinkAllocation): |
| |
| 2011-05-24 Geoffrey Garen <ggaren@apple.com> |
| |
| Rubber-stamped by Oliver Hunt. |
| |
| Split out function definitions and class definitions from class |
| declarations in MarkStack.h, for readability. |
| |
| * heap/MarkStack.h: |
| (JSC::MarkStack::MarkStack): |
| (JSC::MarkStack::~MarkStack): |
| (JSC::MarkStack::addOpaqueRoot): |
| (JSC::MarkStack::containsOpaqueRoot): |
| (JSC::MarkStack::opaqueRootCount): |
| (JSC::MarkSet::MarkSet): |
| (JSC::MarkStack::allocateStack): |
| (JSC::MarkStack::releaseStack): |
| (JSC::MarkStack::pageSize): |
| (JSC::::MarkStackArray): |
| (JSC::::~MarkStackArray): |
| (JSC::::expand): |
| (JSC::::append): |
| (JSC::::removeLast): |
| (JSC::::last): |
| (JSC::::isEmpty): |
| (JSC::::size): |
| (JSC::::shrinkAllocation): |
| |
| 2011-05-24 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Avoid creating unnecessary identifiers and strings in the syntax checker |
| https://bugs.webkit.org/show_bug.cgi?id=61378 |
| |
| Selectively tell the lexer that there are some places it does not need to |
| do the real work of creating Identifiers for IDENT and STRING tokens. |
| |
| Make parseString and parseIdentifier templatized on whether they should |
| do real work, or merely validate the tokens. |
| |
| SunSpider --parse-only reports ~5-8% win depending on hardware. |
| |
| * parser/ASTBuilder.h: |
| (JSC::ASTBuilder::createDotAccess): |
| * parser/JSParser.cpp: |
| (JSC::JSParser::next): |
| (JSC::JSParser::consume): |
| (JSC::JSParser::parseVarDeclarationList): |
| (JSC::JSParser::parseConstDeclarationList): |
| (JSC::JSParser::parseExpression): |
| (JSC::JSParser::parseAssignmentExpression): |
| (JSC::JSParser::parseConditionalExpression): |
| (JSC::JSParser::parseBinaryExpression): |
| (JSC::JSParser::parseProperty): |
| (JSC::JSParser::parseObjectLiteral): |
| (JSC::JSParser::parseArrayLiteral): |
| (JSC::JSParser::parseArguments): |
| (JSC::JSParser::parseMemberExpression): |
| * parser/Lexer.cpp: |
| (JSC::Lexer::parseIdentifier): |
| (JSC::Lexer::parseString): |
| (JSC::Lexer::lex): |
| * parser/Lexer.h: |
| * parser/SyntaxChecker.h: |
| (JSC::SyntaxChecker::createDotAccess): |
| (JSC::SyntaxChecker::createProperty): |
| |
| 2011-05-23 Michael Saboff <msaboff@apple.com> |
| |
| Reviewed by Mark Rowe. |
| |
| Safari often freezes when clicking "Return free memory" in Caches dialog |
| https://bugs.webkit.org/show_bug.cgi?id=61325 |
| |
| There are two fixes and improvement in instrumentation code used to find |
| one of the problems. |
| Changed ReleaseFreeList() to set the "decommitted" bit when releasing |
| pages to the system and moving Spans from the normal list to the returned |
| list. |
| Added a "not making forward progress" check to TCMalloc_PageHeap::scavenge |
| to eliminate an infinite loop if we can't meet the pagesToRelease target. |
| Added a check for the decommitted bit being set properly in |
| TCMalloc_PageHeap::CheckList. |
| |
| * wtf/FastMalloc.cpp: |
| (WTF::TCMalloc_PageHeap::scavenge): |
| (WTF::TCMalloc_PageHeap::Check): |
| (WTF::TCMalloc_PageHeap::CheckList): |
| (WTF::ReleaseFreeList): |
| |
| 2011-05-23 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=61306 |
| |
| The begin characters optimization currently has issues (#61129), |
| and does not appear to still be a performance win. The prudent |
| next step seems to be to disable while we ascertain whether this |
| is still a useful performance optimization. |
| |
| * yarr/YarrInterpreter.cpp: |
| (JSC::Yarr::Interpreter::matchDisjunction): |
| (JSC::Yarr::Interpreter::interpret): |
| * yarr/YarrInterpreter.h: |
| (JSC::Yarr::BytecodePattern::BytecodePattern): |
| * yarr/YarrPattern.cpp: |
| (JSC::Yarr::YarrPatternConstructor::YarrPatternConstructor): |
| (JSC::Yarr::YarrPattern::compile): |
| (JSC::Yarr::YarrPattern::YarrPattern): |
| * yarr/YarrPattern.h: |
| (JSC::Yarr::YarrPattern::reset): |
| |
| 2011-05-23 Matthew Delaney <mdelaney@apple.com> |
| |
| Reviewed by Simon Fraser. |
| |
| Remove safeFloatToInt() in FloatRect.cpp and replace with working version of clampToInteger() |
| https://bugs.webkit.org/show_bug.cgi?id=58216 |
| |
| * wtf/MathExtras.h: |
| (clampToInteger): |
| (clampToPositiveInteger): |
| |
| 2011-05-23 Ruben <chromium@hybridsource.org> |
| |
| Reviewed by Tony Chang. |
| |
| Chromium gyp patch to use new POSIX defines toolkit_uses_gtk and os_posix |
| https://bugs.webkit.org/show_bug.cgi?id=61219 |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| |
| 2011-05-23 Thouraya ANDOLSI <thouraya.andolsi@st.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| [SH4] AssemblerLabel does not name a type |
| https://bugs.webkit.org/show_bug.cgi?id=59927 |
| |
| SH4Assembler.h file shoold be included before AbstractMacroAssembler.h. |
| |
| * assembler/MacroAssemblerSH4.h: |
| |
| 2011-05-23 Ryuan Choi <ryuan.choi@samsung.com> |
| |
| Rubber stamped by Eric Seidel. |
| |
| [CMAKE] Refactoring wtf related code. |
| https://bugs.webkit.org/show_bug.cgi?id=60146 |
| |
| Move wtf-files to Source/JavaScriptCore/wtf/CMakeLists.txt. |
| |
| * CMakeLists.txt: |
| * CMakeListsEfl.txt: |
| * wtf/CMakeLists.txt: |
| * wtf/CMakeListsEfl.txt: |
| |
| 2011-05-22 Adam Barth <abarth@webkit.org> |
| |
| Enable strict PassOwnPtr for everyone. I expect this patch will need |
| some followups to make the GTK and EFL bots green again. |
| |
| * wtf/PassOwnPtr.h: |
| |
| 2011-05-20 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Reduce size of inline cache path of get_by_id on ARMv7 |
| https://bugs.webkit.org/show_bug.cgi?id=61221 |
| |
| This reduces the code size of get_by_id by 20 bytes |
| |
| * assembler/ARMv7Assembler.h: |
| (JSC::ARMv7Assembler::ldrCompact): |
| (JSC::ARMv7Assembler::repatchCompact): |
| (JSC::ARMv7Assembler::setUInt7ForLoad): |
| * assembler/MacroAssemblerARMv7.h: |
| (JSC::MacroAssemblerARMv7::load32WithCompactAddressOffsetPatch): |
| * jit/JIT.h: |
| |
| 2011-05-20 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> |
| |
| Reviewed by Oliver Hunt. |
| |
| Zombies should "live" forever |
| https://bugs.webkit.org/show_bug.cgi?id=61170 |
| |
| Reusing zombie cells could still hide garbage |
| collected cell related bugs. |
| |
| * JavaScriptCore.pro: |
| * heap/MarkedBlock.cpp: |
| (JSC::MarkedBlock::clearMarks): |
| * heap/MarkedBlock.h: |
| * heap/MarkedSpace.cpp: |
| (JSC::MarkedSpace::destroy): |
| * runtime/JSCell.h: |
| (JSC::JSCell::JSValue::isZombie): |
| * runtime/JSZombie.h: |
| (JSC::JSZombie::~JSZombie): |
| * runtime/WriteBarrier.h: |
| (JSC::WriteBarrierBase::setWithoutWriteBarrier): |
| |
| 2011-05-20 Brady Eidson <beidson@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| <rdar://problem/9472883> and https://bugs.webkit.org/show_bug.cgi?id=61203 |
| Horrendous bug in callOnMainThreadAndWait |
| |
| * wtf/MainThread.cpp: |
| (WTF::dispatchFunctionsFromMainThread): Before signaling the background thread with the |
| syncFlag condition, reacquire the mutex first. |
| |
| 2011-05-20 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Remove unnecessary double->int conversion at the end of op_div |
| https://bugs.webkit.org/show_bug.cgi?id=61198 |
| |
| We don't attempt this conversion on 64bit, removing it actually speeds |
| up sunspider and v8 slightly, and it reduces code size. |
| |
| * jit/JITArithmetic32_64.cpp: |
| (JSC::JIT::emit_op_div): |
| |
| 2011-05-19 Evan Martin <evan@chromium.org> |
| |
| Reviewed by Tony Chang. |
| |
| [chromium] remove <(library) variable |
| https://bugs.webkit.org/show_bug.cgi?id=61158 |
| |
| This was for a build experiment; we can just use the correct value now. |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| |
| 2011-05-20 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Interpreter uses wrong bytecode offset for determining exception handler |
| https://bugs.webkit.org/show_bug.cgi?id=61191 |
| |
| The bytecode offset given for the returnPC from the JIT is |
| actually the offset for the start of the instruction triggering |
| the call, whereas in the interpreter it is the actual return |
| VPC. This means if the next instruction following a call was |
| in an exception region we would incorrectly redirect to its |
| handler. Long term we want to completely redo how exceptions |
| are handled anyway so the simplest and lowest risk fix here is |
| to simply subtract one from the return vPC so that we have an |
| offset in the triggering instruction. |
| |
| It turns out this is caught by a couple of tests already. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::unwindCallFrame): |
| |
| 2011-05-20 Xan Lopez <xlopez@igalia.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| JIT requires VM overcommit (particularly on x86-64), Linux does not by default support this without swap? |
| https://bugs.webkit.org/show_bug.cgi?id=42756 |
| |
| Use the MAP_NORESERVE flag for mmap on Linux to skip the kernel |
| check of the available memory. This should give us an |
| overcommit-like behavior in most systems, which is what we want. |
| |
| * wtf/OSAllocatorPosix.cpp: |
| (WTF::OSAllocator::reserveAndCommit): pass MAP_NORSERVE to mmap. |
| |
| 2011-05-19 Gabor Loki <loki@webkit.org> |
| |
| Fix ARM build after r86919 |
| |
| * assembler/ARMAssembler.h: |
| (JSC::ARMAssembler::nop): |
| |
| 2011-05-19 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Randomise code starting location a little |
| https://bugs.webkit.org/show_bug.cgi?id=61161 |
| |
| Add a nop() function to the Assemblers so that we |
| can randomise code offsets slightly at no real cost. |
| |
| * assembler/ARMAssembler.h: |
| (JSC::ARMAssembler::nop): |
| * assembler/ARMv7Assembler.h: |
| (JSC::ARMv7Assembler::nop): |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::nop): |
| * assembler/MacroAssemblerARMv7.h: |
| (JSC::MacroAssemblerARMv7::nop): |
| * assembler/MacroAssemblerMIPS.h: |
| (JSC::MacroAssemblerMIPS::nop): |
| * assembler/MacroAssemblerSH4.h: |
| (JSC::MacroAssemblerSH4::nop): |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::nop): |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::nop): |
| * jit/JIT.cpp: |
| (JSC::JIT::JIT): |
| (JSC::JIT::privateCompile): |
| * jit/JIT.h: |
| * runtime/WeakRandom.h: |
| (JSC::WeakRandom::getUint32): |
| |
| 2011-05-19 Oliver Hunt <oliver@apple.com> |
| |
| Fix windows build. |
| |
| * wtf/OSAllocatorWin.cpp: |
| (WTF::OSAllocator::reserveUncommitted): |
| (WTF::OSAllocator::reserveAndCommit): |
| |
| 2011-05-19 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Add guard pages to each end of the memory region used by the fixedvm allocator |
| https://bugs.webkit.org/show_bug.cgi?id=61150 |
| |
| Add mechanism to notify the OSAllocator that pages at either end of an |
| allocation should be considered guard pages. Update PageReservation, |
| PageAllocation, etc to handle this. |
| |
| * JavaScriptCore.exp: |
| * jit/ExecutableAllocatorFixedVMPool.cpp: |
| (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): |
| * wtf/OSAllocator.h: |
| * wtf/OSAllocatorPosix.cpp: |
| (WTF::OSAllocator::reserveUncommitted): |
| (WTF::OSAllocator::reserveAndCommit): |
| * wtf/PageAllocation.h: |
| (WTF::PageAllocation::PageAllocation): |
| * wtf/PageAllocationAligned.h: |
| (WTF::PageAllocationAligned::PageAllocationAligned): |
| * wtf/PageBlock.h: |
| (WTF::PageBlock::PageBlock): |
| * wtf/PageReservation.h: |
| (WTF::PageReservation::reserve): |
| (WTF::PageReservation::reserveWithGuardPages): |
| Add a new function to make a reservation that will add guard |
| pages to the ends of an allocation. |
| (WTF::PageReservation::PageReservation): |
| |
| 2011-05-19 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make Executables release their JIT code as soon as they become dead |
| https://bugs.webkit.org/show_bug.cgi?id=61134 |
| |
| Add an ability to clear an Executable's jit code without requiring |
| it to be destroyed, and then call that from a finalizer. |
| |
| * heap/Weak.h: |
| (JSC::Weak::Weak): |
| (JSC::Weak::leak): |
| * jit/JITCode.h: |
| (JSC::JITCode::clear): |
| * runtime/Executable.cpp: |
| (JSC::ExecutableFinalizer::finalize): |
| (JSC::ExecutableBase::executableFinalizer): |
| * runtime/Executable.h: |
| (JSC::ExecutableBase::ExecutableBase): |
| (JSC::ExecutableBase::clearExecutableCode): |
| |
| 2011-05-19 Adam Roben <aroben@apple.com> |
| |
| Remove a redundant and broken data export |
| |
| Data can't be exported from JavaScriptCore.dll by listing it in the .def file. The |
| JS_EXPORTDATA macro must be used instead. (In this case it was already being used, leading |
| to a linker warning about multiple definitions.) |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Removed JSGlobalData::s_info. |
| |
| 2011-05-18 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Some tests crashing in JSC::MarkStack::validateValue beneath ScriptController::clearWindowShell on SnowLeopard Intel Release (WebKit2 Tests) |
| https://bugs.webkit.org/show_bug.cgi?id=61064 |
| |
| Switch NonFinalObject to using WriteBarrier<> rather than WriteBarrierBase<> |
| for its inline storage. This resolves the problem of GC occurring before |
| a subclass has initialised its anonymous storage. |
| |
| * runtime/JSObject.h: |
| |
| 2011-05-18 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Sam Weinig. |
| |
| Delete WTFURL |
| https://bugs.webkit.org/show_bug.cgi?id=61084 |
| |
| It's been a year and we've failed to complete this project. It's time |
| to throw in the towel. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * wtf/url: Removed. |
| * wtf/url/api: Removed. |
| * wtf/url/api/ParsedURL.cpp: Removed. |
| * wtf/url/api/ParsedURL.h: Removed. |
| * wtf/url/api/URLString.h: Removed. |
| * wtf/url/src: Removed. |
| * wtf/url/src/RawURLBuffer.h: Removed. |
| * wtf/url/src/URLBuffer.h: Removed. |
| * wtf/url/src/URLCharacterTypes.cpp: Removed. |
| * wtf/url/src/URLCharacterTypes.h: Removed. |
| * wtf/url/src/URLComponent.h: Removed. |
| * wtf/url/src/URLEscape.cpp: Removed. |
| * wtf/url/src/URLEscape.h: Removed. |
| * wtf/url/src/URLParser.h: Removed. |
| * wtf/url/src/URLQueryCanonicalizer.h: Removed. |
| * wtf/url/src/URLSegments.cpp: Removed. |
| * wtf/url/src/URLSegments.h: Removed. |
| * wtf/url/wtfurl.gyp: Removed. |
| |
| 2011-05-18 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| JSGlobalObject and some others do GC allocation during initialization, which can cause heap corruption |
| https://bugs.webkit.org/show_bug.cgi?id=61090 |
| |
| Remove the Structure-free JSGlobalObject constructor and instead always |
| pass the structure into the JSGlobalObject constructor. |
| Stop DebuggerActivation creating a new structure every time, and simply |
| use a single shared structure held by the GlobalData. |
| |
| * API/JSContextRef.cpp: |
| * debugger/DebuggerActivation.cpp: |
| (JSC::DebuggerActivation::DebuggerActivation): |
| * jsc.cpp: |
| (GlobalObject::GlobalObject): |
| (functionRun): |
| (jscmain): |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| (JSC::JSGlobalData::clearBuiltinStructures): |
| * runtime/JSGlobalData.h: |
| * runtime/JSGlobalObject.h: |
| |
| 2011-05-18 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Adam Roben. |
| |
| Disable gc validation in release builds |
| https://bugs.webkit.org/show_bug.cgi?id=60680 |
| |
| Add back the NDEBUG check |
| |
| * wtf/Platform.h: |
| |
| 2011-05-17 Geoffrey Garen <ggaren@apple.com> |
| |
| Rolled out attempts to fix EFL build because they're not enough -- the |
| build script needs to be fixed. |
| |
| * runtime/BooleanPrototype.cpp: |
| * runtime/DateConstructor.cpp: |
| * runtime/ErrorPrototype.cpp: |
| |
| 2011-05-17 Geoffrey Garen <ggaren@apple.com> |
| |
| More attempts to work around the EFL build system being borken. |
| |
| * runtime/DateConstructor.cpp: |
| * runtime/ErrorPrototype.cpp: |
| |
| 2011-05-17 Geoffrey Garen <ggaren@apple.com> |
| |
| Try to fix the EFL build. |
| |
| * runtime/BooleanPrototype.cpp: |
| |
| 2011-05-16 Geoffrey Garen <ggaren@apple.com> |
| |
| Rolling back in r86653 with build fixed. |
| |
| Reviewed by Gavin Barraclough and Oliver Hunt. |
| |
| Global object initialization is expensive |
| https://bugs.webkit.org/show_bug.cgi?id=60933 |
| |
| Changed a bunch of globals to allocate their properties lazily, and changed |
| the global object to allocate a bunch of its globals lazily. |
| |
| This reduces the footprint of a global object from 287 objects with 58 |
| functions for 24K to 173 objects with 20 functions for 15K. |
| |
| Large patch, but it's all mechanical. |
| |
| * DerivedSources.make: |
| * JavaScriptCore.exp: Build! |
| |
| * create_hash_table: Added a special case for fromCharCode, since it uses |
| a custom "thunk generator". |
| |
| * heap/Heap.cpp: |
| (JSC::TypeCounter::operator()): Fixed a bug where the type counter would |
| overcount objects that were owned through more than one mechanism because |
| it was getting in the way of counting the results for this patch. |
| |
| * interpreter/CallFrame.h: |
| (JSC::ExecState::arrayConstructorTable): |
| (JSC::ExecState::arrayPrototypeTable): |
| (JSC::ExecState::booleanPrototypeTable): |
| (JSC::ExecState::dateConstructorTable): |
| (JSC::ExecState::errorPrototypeTable): |
| (JSC::ExecState::globalObjectTable): |
| (JSC::ExecState::numberConstructorTable): |
| (JSC::ExecState::numberPrototypeTable): |
| (JSC::ExecState::objectPrototypeTable): |
| (JSC::ExecState::regExpPrototypeTable): |
| (JSC::ExecState::stringConstructorTable): Added new tables. |
| |
| * runtime/ArrayConstructor.cpp: |
| (JSC::ArrayConstructor::ArrayConstructor): |
| (JSC::ArrayConstructor::getOwnPropertySlot): |
| (JSC::ArrayConstructor::getOwnPropertyDescriptor): |
| * runtime/ArrayConstructor.h: |
| (JSC::ArrayConstructor::createStructure): |
| * runtime/ArrayPrototype.cpp: |
| (JSC::ArrayPrototype::getOwnPropertySlot): |
| (JSC::ArrayPrototype::getOwnPropertyDescriptor): |
| * runtime/ArrayPrototype.h: |
| * runtime/BooleanPrototype.cpp: |
| (JSC::BooleanPrototype::BooleanPrototype): |
| (JSC::BooleanPrototype::getOwnPropertySlot): |
| (JSC::BooleanPrototype::getOwnPropertyDescriptor): |
| * runtime/BooleanPrototype.h: |
| (JSC::BooleanPrototype::createStructure): |
| * runtime/DateConstructor.cpp: |
| (JSC::DateConstructor::DateConstructor): |
| (JSC::DateConstructor::getOwnPropertySlot): |
| (JSC::DateConstructor::getOwnPropertyDescriptor): |
| * runtime/DateConstructor.h: |
| (JSC::DateConstructor::createStructure): |
| * runtime/ErrorPrototype.cpp: |
| (JSC::ErrorPrototype::ErrorPrototype): |
| (JSC::ErrorPrototype::getOwnPropertySlot): |
| (JSC::ErrorPrototype::getOwnPropertyDescriptor): |
| * runtime/ErrorPrototype.h: |
| (JSC::ErrorPrototype::createStructure): Standardized these objects |
| to use static tables for function properties. |
| |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| (JSC::JSGlobalData::~JSGlobalData): |
| * runtime/JSGlobalData.h: Added new tables. |
| |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::reset): |
| (JSC::JSGlobalObject::addStaticGlobals): |
| (JSC::JSGlobalObject::getOwnPropertySlot): |
| (JSC::JSGlobalObject::getOwnPropertyDescriptor): |
| * runtime/JSGlobalObject.h: |
| * runtime/JSGlobalObjectFunctions.cpp: |
| * runtime/JSGlobalObjectFunctions.h: Changed JSGlobalObject to use a |
| static table for its global functions. This required uninlining some |
| things to avoid a circular header dependency. However, those things |
| probably shouldn't have been inlined in the first place. |
| |
| Even more global object properties can be made lazy, but that requires |
| more in-depth changes. |
| |
| * runtime/MathObject.cpp: |
| * runtime/NumberConstructor.cpp: |
| (JSC::NumberConstructor::getOwnPropertySlot): |
| (JSC::NumberConstructor::getOwnPropertyDescriptor): |
| * runtime/NumberPrototype.cpp: |
| (JSC::NumberPrototype::NumberPrototype): |
| (JSC::NumberPrototype::getOwnPropertySlot): |
| (JSC::NumberPrototype::getOwnPropertyDescriptor): |
| * runtime/NumberPrototype.h: |
| (JSC::NumberPrototype::createStructure): |
| * runtime/ObjectPrototype.cpp: |
| (JSC::ObjectPrototype::ObjectPrototype): |
| (JSC::ObjectPrototype::put): |
| (JSC::ObjectPrototype::getOwnPropertySlot): |
| (JSC::ObjectPrototype::getOwnPropertyDescriptor): |
| * runtime/ObjectPrototype.h: |
| (JSC::ObjectPrototype::createStructure): |
| * runtime/RegExpPrototype.cpp: |
| (JSC::RegExpPrototype::RegExpPrototype): |
| (JSC::RegExpPrototype::getOwnPropertySlot): |
| (JSC::RegExpPrototype::getOwnPropertyDescriptor): |
| * runtime/RegExpPrototype.h: |
| (JSC::RegExpPrototype::createStructure): |
| * runtime/StringConstructor.cpp: |
| (JSC::StringConstructor::StringConstructor): |
| (JSC::StringConstructor::getOwnPropertySlot): |
| (JSC::StringConstructor::getOwnPropertyDescriptor): |
| * runtime/StringConstructor.h: |
| (JSC::StringConstructor::createStructure): Standardized these objects |
| to use static tables for function properties. |
| |
| 2011-05-17 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Oliver Hunt. |
| |
| JSGlobalContextRelease should not trigger a synchronous garbage collection |
| https://bugs.webkit.org/show_bug.cgi?id=60990 |
| |
| * API/JSContextRef.cpp: |
| Change synchronous call to collectAllGarbage to a call to trigger the |
| activityCallback. |
| |
| 2011-05-16 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Reduce code size for inline cache |
| https://bugs.webkit.org/show_bug.cgi?id=60942 |
| |
| This patch introduces the concept of a "compact" address that |
| allows individual architectures to control the maximum offset |
| used for the inline path of get_by_id. This reduces the code |
| size of get_by_id by 3 bytes on x86 and x86_64 and slightly |
| improves performance on v8 tests. |
| |
| * assembler/ARMAssembler.h: |
| (JSC::ARMAssembler::repatchCompact): |
| * assembler/ARMv7Assembler.h: |
| (JSC::ARMv7Assembler::repatchCompact): |
| * assembler/AbstractMacroAssembler.h: |
| (JSC::AbstractMacroAssembler::DataLabelCompact::DataLabelCompact): |
| (JSC::AbstractMacroAssembler::differenceBetween): |
| (JSC::AbstractMacroAssembler::repatchCompact): |
| * assembler/CodeLocation.h: |
| (JSC::CodeLocationDataLabelCompact::CodeLocationDataLabelCompact): |
| (JSC::CodeLocationCommon::dataLabelCompactAtOffset): |
| * assembler/LinkBuffer.h: |
| (JSC::LinkBuffer::locationOf): |
| * assembler/MIPSAssembler.h: |
| (JSC::MIPSAssembler::repatchCompact): |
| * assembler/MacroAssembler.h: |
| (JSC::MacroAssembler::loadPtrWithCompactAddressOffsetPatch): |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::load32WithCompactAddressOffsetPatch): |
| * assembler/MacroAssemblerARMv7.h: |
| (JSC::MacroAssemblerARMv7::load32WithCompactAddressOffsetPatch): |
| * assembler/MacroAssemblerMIPS.h: |
| (JSC::MacroAssemblerMIPS::load32WithCompactAddressOffsetPatch): |
| * assembler/MacroAssemblerSH4.h: |
| (JSC::MacroAssemblerSH4::load32WithAddressOffsetPatch): |
| * assembler/MacroAssemblerX86.h: |
| (JSC::MacroAssemblerX86::repatchCompact): |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::loadCompactWithAddressOffsetPatch): |
| * assembler/MacroAssemblerX86_64.h: |
| (JSC::MacroAssemblerX86_64::loadPtrWithCompactAddressOffsetPatch): |
| * assembler/RepatchBuffer.h: |
| (JSC::RepatchBuffer::repatch): |
| * assembler/SH4Assembler.h: |
| (JSC::SH4Assembler::repatchCompact): |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::movl_mr_disp8): |
| (JSC::X86Assembler::movq_mr_disp8): |
| (JSC::X86Assembler::repatchCompact): |
| (JSC::X86Assembler::setInt8): |
| (JSC::X86Assembler::X86InstructionFormatter::oneByteOp_disp8): |
| (JSC::X86Assembler::X86InstructionFormatter::oneByteOp64_disp8): |
| (JSC::X86Assembler::X86InstructionFormatter::memoryModRM): |
| * jit/JIT.h: |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::compileGetByIdHotPath): |
| (JSC::JIT::emit_op_put_by_id): |
| (JSC::JIT::patchGetByIdSelf): |
| * jit/JITPropertyAccess32_64.cpp: |
| (JSC::JIT::compileGetByIdHotPath): |
| (JSC::JIT::emit_op_put_by_id): |
| (JSC::JIT::patchGetByIdSelf): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::tryCacheGetByID): |
| |
| 2011-05-16 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r86653. |
| http://trac.webkit.org/changeset/86653 |
| https://bugs.webkit.org/show_bug.cgi?id=60944 |
| |
| "Caused regressions on Windows, OSX and EFL" (Requested by |
| yutak on #webkit). |
| |
| * DerivedSources.make: |
| * DerivedSources.pro: |
| * GNUmakefile.am: |
| * GNUmakefile.list.am: |
| * JavaScriptCore.exp: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * create_hash_table: |
| * heap/Heap.cpp: |
| (JSC::TypeCounter::operator()): |
| * interpreter/CallFrame.h: |
| (JSC::ExecState::arrayTable): |
| (JSC::ExecState::numberTable): |
| * runtime/ArrayConstructor.cpp: |
| (JSC::ArrayConstructor::ArrayConstructor): |
| * runtime/ArrayConstructor.h: |
| * runtime/ArrayPrototype.cpp: |
| (JSC::ArrayPrototype::getOwnPropertySlot): |
| (JSC::ArrayPrototype::getOwnPropertyDescriptor): |
| * runtime/ArrayPrototype.h: |
| * runtime/BooleanPrototype.cpp: |
| (JSC::BooleanPrototype::BooleanPrototype): |
| * runtime/BooleanPrototype.h: |
| * runtime/DateConstructor.cpp: |
| (JSC::DateConstructor::DateConstructor): |
| * runtime/DateConstructor.h: |
| * runtime/ErrorPrototype.cpp: |
| (JSC::ErrorPrototype::ErrorPrototype): |
| * runtime/ErrorPrototype.h: |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| (JSC::JSGlobalData::~JSGlobalData): |
| * runtime/JSGlobalData.h: |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::reset): |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::addStaticGlobals): |
| (JSC::JSGlobalObject::getOwnPropertySlot): |
| (JSC::JSGlobalObject::getOwnPropertyDescriptor): |
| * runtime/JSGlobalObjectFunctions.cpp: |
| (JSC::globalFuncJSCPrint): |
| * runtime/JSGlobalObjectFunctions.h: |
| * runtime/MathObject.cpp: |
| * runtime/NumberConstructor.cpp: |
| (JSC::NumberConstructor::getOwnPropertySlot): |
| (JSC::NumberConstructor::getOwnPropertyDescriptor): |
| * runtime/NumberPrototype.cpp: |
| (JSC::NumberPrototype::NumberPrototype): |
| * runtime/NumberPrototype.h: |
| * runtime/ObjectPrototype.cpp: |
| (JSC::ObjectPrototype::ObjectPrototype): |
| (JSC::ObjectPrototype::put): |
| (JSC::ObjectPrototype::getOwnPropertySlot): |
| * runtime/ObjectPrototype.h: |
| * runtime/RegExpPrototype.cpp: |
| (JSC::RegExpPrototype::RegExpPrototype): |
| * runtime/RegExpPrototype.h: |
| * runtime/StringConstructor.cpp: |
| (JSC::StringConstructor::StringConstructor): |
| * runtime/StringConstructor.h: |
| |
| 2011-05-16 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Global object initialization is expensive |
| https://bugs.webkit.org/show_bug.cgi?id=60933 |
| |
| Changed a bunch of globals to allocate their properties lazily, and changed |
| the global object to allocate a bunch of its globals lazily. |
| |
| This reduces the footprint of a global object from 287 objects with 58 |
| functions for 24K to 173 objects with 20 functions for 15K. |
| |
| Large patch, but it's all mechanical. |
| |
| * DerivedSources.make: |
| * JavaScriptCore.exp: Build! |
| |
| * create_hash_table: Added a special case for fromCharCode, since it uses |
| a custom "thunk generator". |
| |
| * heap/Heap.cpp: |
| (JSC::TypeCounter::operator()): Fixed a bug where the type counter would |
| overcount objects that were owned through more than one mechanism because |
| it was getting in the way of counting the results for this patch. |
| |
| * interpreter/CallFrame.h: |
| (JSC::ExecState::arrayConstructorTable): |
| (JSC::ExecState::arrayPrototypeTable): |
| (JSC::ExecState::booleanPrototypeTable): |
| (JSC::ExecState::dateConstructorTable): |
| (JSC::ExecState::errorPrototypeTable): |
| (JSC::ExecState::globalObjectTable): |
| (JSC::ExecState::numberConstructorTable): |
| (JSC::ExecState::numberPrototypeTable): |
| (JSC::ExecState::objectPrototypeTable): |
| (JSC::ExecState::regExpPrototypeTable): |
| (JSC::ExecState::stringConstructorTable): Added new tables. |
| |
| * runtime/ArrayConstructor.cpp: |
| (JSC::ArrayConstructor::ArrayConstructor): |
| (JSC::ArrayConstructor::getOwnPropertySlot): |
| (JSC::ArrayConstructor::getOwnPropertyDescriptor): |
| * runtime/ArrayConstructor.h: |
| (JSC::ArrayConstructor::createStructure): |
| * runtime/ArrayPrototype.cpp: |
| (JSC::ArrayPrototype::getOwnPropertySlot): |
| (JSC::ArrayPrototype::getOwnPropertyDescriptor): |
| * runtime/ArrayPrototype.h: |
| * runtime/BooleanPrototype.cpp: |
| (JSC::BooleanPrototype::BooleanPrototype): |
| (JSC::BooleanPrototype::getOwnPropertySlot): |
| (JSC::BooleanPrototype::getOwnPropertyDescriptor): |
| * runtime/BooleanPrototype.h: |
| (JSC::BooleanPrototype::createStructure): |
| * runtime/DateConstructor.cpp: |
| (JSC::DateConstructor::DateConstructor): |
| (JSC::DateConstructor::getOwnPropertySlot): |
| (JSC::DateConstructor::getOwnPropertyDescriptor): |
| * runtime/DateConstructor.h: |
| (JSC::DateConstructor::createStructure): |
| * runtime/ErrorPrototype.cpp: |
| (JSC::ErrorPrototype::ErrorPrototype): |
| (JSC::ErrorPrototype::getOwnPropertySlot): |
| (JSC::ErrorPrototype::getOwnPropertyDescriptor): |
| * runtime/ErrorPrototype.h: |
| (JSC::ErrorPrototype::createStructure): Standardized these objects |
| to use static tables for function properties. |
| |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| (JSC::JSGlobalData::~JSGlobalData): |
| * runtime/JSGlobalData.h: Added new tables. |
| |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::reset): |
| (JSC::JSGlobalObject::addStaticGlobals): |
| (JSC::JSGlobalObject::getOwnPropertySlot): |
| (JSC::JSGlobalObject::getOwnPropertyDescriptor): |
| * runtime/JSGlobalObject.h: |
| * runtime/JSGlobalObjectFunctions.cpp: |
| * runtime/JSGlobalObjectFunctions.h: Changed JSGlobalObject to use a |
| static table for its global functions. This required uninlining some |
| things to avoid a circular header dependency. However, those things |
| probably shouldn't have been inlined in the first place. |
| |
| Even more global object properties can be made lazy, but that requires |
| more in-depth changes. |
| |
| * runtime/MathObject.cpp: |
| * runtime/NumberConstructor.cpp: |
| (JSC::NumberConstructor::getOwnPropertySlot): |
| (JSC::NumberConstructor::getOwnPropertyDescriptor): |
| * runtime/NumberPrototype.cpp: |
| (JSC::NumberPrototype::NumberPrototype): |
| (JSC::NumberPrototype::getOwnPropertySlot): |
| (JSC::NumberPrototype::getOwnPropertyDescriptor): |
| * runtime/NumberPrototype.h: |
| (JSC::NumberPrototype::createStructure): |
| * runtime/ObjectPrototype.cpp: |
| (JSC::ObjectPrototype::ObjectPrototype): |
| (JSC::ObjectPrototype::put): |
| (JSC::ObjectPrototype::getOwnPropertySlot): |
| (JSC::ObjectPrototype::getOwnPropertyDescriptor): |
| * runtime/ObjectPrototype.h: |
| (JSC::ObjectPrototype::createStructure): |
| * runtime/RegExpPrototype.cpp: |
| (JSC::RegExpPrototype::RegExpPrototype): |
| (JSC::RegExpPrototype::getOwnPropertySlot): |
| (JSC::RegExpPrototype::getOwnPropertyDescriptor): |
| * runtime/RegExpPrototype.h: |
| (JSC::RegExpPrototype::createStructure): |
| * runtime/StringConstructor.cpp: |
| (JSC::StringConstructor::StringConstructor): |
| (JSC::StringConstructor::getOwnPropertySlot): |
| (JSC::StringConstructor::getOwnPropertyDescriptor): |
| * runtime/StringConstructor.h: |
| (JSC::StringConstructor::createStructure): Standardized these objects |
| to use static tables for function properties. |
| |
| 2011-05-16 David Kilzer <ddkilzer@apple.com> |
| |
| <http://webkit.org/b/60913> C++ exceptions should not be enabled when building with llvm-gcc-4.2 |
| <rdar://problem/9446430> |
| |
| Reviewed by Mark Rowe. |
| |
| * Configurations/Base.xcconfig: Fixed typo. |
| |
| 2011-05-16 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| JSWeakObjectMap finalisation may occur while gc is in inconsistent state |
| https://bugs.webkit.org/show_bug.cgi?id=60908 |
| <rdar://problem/9409491> |
| |
| We need to ensure that we have called all the weak map finalizers while |
| the global object (and hence global context) is still in a consistent |
| state. The best way to achieve this is to simply use a weak handle and |
| finalizer on the global object. |
| |
| * JavaScriptCore.exp: |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::WeakMapFinalizer::finalize): |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::registerWeakMap): |
| |
| 2011-05-16 Siddharth Mathur <siddharth.mathur@nokia.com> |
| |
| Reviewed by Laszlo Gombos. |
| |
| [Qt][WK2][Symbian] Shared memory implementation for Symbian |
| https://bugs.webkit.org/show_bug.cgi?id=55875 |
| |
| * wtf/Platform.h: Exclude Symbian OS from USE(UNIX_DOMAIN_SOCKETS) users |
| |
| 2011-05-16 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber stamped by Geoff Garen. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=60866 |
| Evaluation order broken for empty alternatives in subpatterns |
| |
| Reverting https://bugs.webkit.org/show_bug.cgi?id=51395 |
| |
| * yarr/YarrPattern.cpp: |
| (JSC::Yarr::YarrPatternConstructor::atomParenthesesEnd): |
| |
| 2011-05-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen & Michael Saboff. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=60860 |
| Simplify backtracking in YARR JIT |
| |
| YARR JIT currently performs a single pass of code generation over the pattern, |
| with special handling to allow the code generation for some backtracking code |
| out of line. We can simplify things by moving to a common mechanism whereby all |
| forwards matching code is generated in one pass, and all backtracking code is |
| generated in another. Backtracking code can be generated in reverse order, to |
| optimized the common fall-through case. |
| |
| To make it easier to walk over the pattern, we can first convert to a more |
| byte-code like format before JIT generating. In time we should unify this with |
| the YARR interpreter to more closely unify the two. |
| |
| * yarr/YarrJIT.cpp: |
| (JSC::Yarr::YarrGenerator::jumpIfNoAvailableInput): |
| (JSC::Yarr::YarrGenerator::YarrOp::YarrOp): |
| (JSC::Yarr::YarrGenerator::BacktrackingState::BacktrackingState): |
| (JSC::Yarr::YarrGenerator::BacktrackingState::append): |
| (JSC::Yarr::YarrGenerator::BacktrackingState::fallthrough): |
| (JSC::Yarr::YarrGenerator::BacktrackingState::link): |
| (JSC::Yarr::YarrGenerator::BacktrackingState::linkTo): |
| (JSC::Yarr::YarrGenerator::BacktrackingState::takeBacktracksToJumpList): |
| (JSC::Yarr::YarrGenerator::BacktrackingState::isEmpty): |
| (JSC::Yarr::YarrGenerator::BacktrackingState::linkDataLabels): |
| (JSC::Yarr::YarrGenerator::BacktrackingState::ReturnAddressRecord::ReturnAddressRecord): |
| (JSC::Yarr::YarrGenerator::generateAssertionBOL): |
| (JSC::Yarr::YarrGenerator::backtrackAssertionBOL): |
| (JSC::Yarr::YarrGenerator::generateAssertionEOL): |
| (JSC::Yarr::YarrGenerator::backtrackAssertionEOL): |
| (JSC::Yarr::YarrGenerator::matchAssertionWordchar): |
| (JSC::Yarr::YarrGenerator::generateAssertionWordBoundary): |
| (JSC::Yarr::YarrGenerator::backtrackAssertionWordBoundary): |
| (JSC::Yarr::YarrGenerator::generatePatternCharacterOnce): |
| (JSC::Yarr::YarrGenerator::backtrackPatternCharacterOnce): |
| (JSC::Yarr::YarrGenerator::generatePatternCharacterFixed): |
| (JSC::Yarr::YarrGenerator::backtrackPatternCharacterFixed): |
| (JSC::Yarr::YarrGenerator::generatePatternCharacterGreedy): |
| (JSC::Yarr::YarrGenerator::backtrackPatternCharacterGreedy): |
| (JSC::Yarr::YarrGenerator::generatePatternCharacterNonGreedy): |
| (JSC::Yarr::YarrGenerator::backtrackPatternCharacterNonGreedy): |
| (JSC::Yarr::YarrGenerator::generateCharacterClassOnce): |
| (JSC::Yarr::YarrGenerator::backtrackCharacterClassOnce): |
| (JSC::Yarr::YarrGenerator::generateCharacterClassFixed): |
| (JSC::Yarr::YarrGenerator::backtrackCharacterClassFixed): |
| (JSC::Yarr::YarrGenerator::generateCharacterClassGreedy): |
| (JSC::Yarr::YarrGenerator::backtrackCharacterClassGreedy): |
| (JSC::Yarr::YarrGenerator::generateCharacterClassNonGreedy): |
| (JSC::Yarr::YarrGenerator::backtrackCharacterClassNonGreedy): |
| (JSC::Yarr::YarrGenerator::generateTerm): |
| (JSC::Yarr::YarrGenerator::backtrackTerm): |
| (JSC::Yarr::YarrGenerator::generate): |
| (JSC::Yarr::YarrGenerator::backtrack): |
| (JSC::Yarr::YarrGenerator::opCompileParenthesesSubpattern): |
| (JSC::Yarr::YarrGenerator::opCompileParentheticalAssertion): |
| (JSC::Yarr::YarrGenerator::opCompileAlternative): |
| (JSC::Yarr::YarrGenerator::opCompileBody): |
| (JSC::Yarr::YarrGenerator::YarrGenerator): |
| (JSC::Yarr::YarrGenerator::compile): |
| |
| 2011-05-15 Adam Barth <abarth@webkit.org> |
| |
| Enable strict PassOwnPtr on Qt. (Build fixes to follow.) |
| |
| * wtf/PassOwnPtr.h: |
| |
| 2011-05-15 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Partial fix for <rdar://problem/9417875> REGRESSION: SunSpider ~17% slower |
| in browser than on command line |
| |
| This patch fixes a few issues in generated code that could unreasonably |
| prolong object lifetimes. |
| |
| * heap/Heap.cpp: |
| (JSC::Heap::collectAllGarbage): Throw away all function code before doing |
| a major collection. We want to clear polymorphic caches, since they can |
| keep alive large object graphs that have gone "stale". For the same reason, |
| but to a lesser extent, we also want to clear linked functions and other |
| one-off caches. |
| |
| This has the side-benefit of reducing memory footprint from run-once |
| functions, and of allowing predictions and caches that have failed to |
| re-specialize. |
| |
| Eventually, if compilation costs rise far enough, we may want a more |
| limited strategy for de-specializing code without throwing it away |
| completely, but this works for now, and it's the simplest solution. |
| |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::hostFunctionStub): |
| * jit/JITStubs.h: |
| * runtime/JSFunction.cpp: Made the host function stub cache weak -- |
| otherwise it's effectively a memory leak that can seriously fragment the |
| GC and JIT heaps. |
| |
| (JSC::JSFunction::JSFunction): |
| (JSC::JSFunction::visitChildren): Cleared up some comments that confused |
| me when working with this code. |
| |
| 2011-05-13 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make GC validation more aggressive |
| https://bugs.webkit.org/show_bug.cgi?id=60802 |
| |
| This patch makes the checks performed under GC_VALIDATION |
| much more aggressive, and adds the checks to more places |
| in order to allow us to catch GC bugs much closer to the |
| point of failure. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * debugger/DebuggerActivation.cpp: |
| (JSC::DebuggerActivation::visitChildren): |
| * heap/MarkedBlock.cpp: |
| (JSC::MarkedBlock::MarkedBlock): |
| * heap/MarkedSpace.cpp: |
| * runtime/Arguments.cpp: |
| (JSC::Arguments::visitChildren): |
| * runtime/Executable.cpp: |
| (JSC::EvalExecutable::visitChildren): |
| (JSC::ProgramExecutable::visitChildren): |
| (JSC::FunctionExecutable::visitChildren): |
| * runtime/Executable.h: |
| * runtime/GetterSetter.cpp: |
| (JSC::GetterSetter::visitChildren): |
| * runtime/GetterSetter.h: |
| * runtime/JSAPIValueWrapper.h: |
| (JSC::JSAPIValueWrapper::createStructure): |
| (JSC::JSAPIValueWrapper::JSAPIValueWrapper): |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::visitChildren): |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::visitChildren): |
| * runtime/JSCell.cpp: |
| (JSC::slowValidateCell): |
| * runtime/JSCell.h: |
| (JSC::JSCell::JSCell::unvalidatedStructure): |
| (JSC::JSCell::JSCell::JSCell): |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::visitChildren): |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::visitChildren): |
| (JSC::slowValidateCell): |
| * runtime/JSONObject.h: |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::visitChildren): |
| * runtime/JSPropertyNameIterator.cpp: |
| (JSC::JSPropertyNameIterator::visitChildren): |
| * runtime/JSPropertyNameIterator.h: |
| * runtime/JSStaticScopeObject.cpp: |
| (JSC::JSStaticScopeObject::visitChildren): |
| * runtime/JSString.h: |
| (JSC::RopeBuilder::JSString): |
| * runtime/JSWrapperObject.cpp: |
| (JSC::JSWrapperObject::visitChildren): |
| * runtime/NativeErrorConstructor.cpp: |
| (JSC::NativeErrorConstructor::visitChildren): |
| * runtime/PropertyMapHashTable.h: |
| (JSC::PropertyMapEntry::PropertyMapEntry): |
| * runtime/RegExpObject.cpp: |
| (JSC::RegExpObject::visitChildren): |
| * runtime/ScopeChain.cpp: |
| (JSC::ScopeChainNode::visitChildren): |
| * runtime/ScopeChain.h: |
| (JSC::ScopeChainNode::ScopeChainNode): |
| * runtime/Structure.cpp: |
| (JSC::Structure::Structure): |
| (JSC::Structure::addPropertyTransition): |
| (JSC::Structure::visitChildren): |
| * runtime/Structure.h: |
| (JSC::JSCell::classInfo): |
| * runtime/StructureChain.cpp: |
| (JSC::StructureChain::visitChildren): |
| * runtime/StructureChain.h: |
| * runtime/WriteBarrier.h: |
| (JSC::validateCell): |
| (JSC::JSCell): |
| (JSC::JSGlobalObject): |
| (JSC::WriteBarrierBase::set): |
| (JSC::WriteBarrierBase::setMayBeNull): |
| (JSC::WriteBarrierBase::setEarlyValue): |
| (JSC::WriteBarrierBase::get): |
| (JSC::WriteBarrierBase::operator*): |
| (JSC::WriteBarrierBase::operator->): |
| (JSC::WriteBarrierBase::unvalidatedGet): |
| (JSC::WriteBarrier::WriteBarrier): |
| * wtf/Assertions.h: |
| |
| 2011-05-13 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make GC validation more aggressive |
| https://bugs.webkit.org/show_bug.cgi?id=60802 |
| |
| This patch makes the checks performed under GC_VALIDATION |
| much more aggressive, and adds the checks to more places |
| in order to allow us to catch GC bugs much closer to the |
| point of failure. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * debugger/DebuggerActivation.cpp: |
| (JSC::DebuggerActivation::visitChildren): |
| * heap/MarkedBlock.cpp: |
| (JSC::MarkedBlock::MarkedBlock): |
| * heap/MarkedSpace.cpp: |
| * runtime/Arguments.cpp: |
| (JSC::Arguments::visitChildren): |
| * runtime/Executable.cpp: |
| (JSC::EvalExecutable::visitChildren): |
| (JSC::ProgramExecutable::visitChildren): |
| (JSC::FunctionExecutable::visitChildren): |
| * runtime/Executable.h: |
| * runtime/GetterSetter.cpp: |
| (JSC::GetterSetter::visitChildren): |
| * runtime/GetterSetter.h: |
| * runtime/JSAPIValueWrapper.h: |
| (JSC::JSAPIValueWrapper::createStructure): |
| (JSC::JSAPIValueWrapper::JSAPIValueWrapper): |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::visitChildren): |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::visitChildren): |
| * runtime/JSCell.cpp: |
| (JSC::slowValidateCell): |
| * runtime/JSCell.h: |
| (JSC::JSCell::JSCell::unvalidatedStructure): |
| (JSC::JSCell::JSCell::JSCell): |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::visitChildren): |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::visitChildren): |
| (JSC::slowValidateCell): |
| * runtime/JSONObject.h: |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::visitChildren): |
| * runtime/JSPropertyNameIterator.cpp: |
| (JSC::JSPropertyNameIterator::visitChildren): |
| * runtime/JSPropertyNameIterator.h: |
| * runtime/JSStaticScopeObject.cpp: |
| (JSC::JSStaticScopeObject::visitChildren): |
| * runtime/JSString.h: |
| (JSC::RopeBuilder::JSString): |
| * runtime/JSWrapperObject.cpp: |
| (JSC::JSWrapperObject::visitChildren): |
| * runtime/NativeErrorConstructor.cpp: |
| (JSC::NativeErrorConstructor::visitChildren): |
| * runtime/PropertyMapHashTable.h: |
| (JSC::PropertyMapEntry::PropertyMapEntry): |
| * runtime/RegExpObject.cpp: |
| (JSC::RegExpObject::visitChildren): |
| * runtime/ScopeChain.cpp: |
| (JSC::ScopeChainNode::visitChildren): |
| * runtime/ScopeChain.h: |
| (JSC::ScopeChainNode::ScopeChainNode): |
| * runtime/Structure.cpp: |
| (JSC::Structure::Structure): |
| (JSC::Structure::addPropertyTransition): |
| (JSC::Structure::visitChildren): |
| * runtime/Structure.h: |
| (JSC::JSCell::classInfo): |
| * runtime/StructureChain.cpp: |
| (JSC::StructureChain::visitChildren): |
| * runtime/StructureChain.h: |
| * runtime/WriteBarrier.h: |
| (JSC::validateCell): |
| (JSC::JSCell): |
| (JSC::JSGlobalObject): |
| (JSC::WriteBarrierBase::set): |
| (JSC::WriteBarrierBase::setMayBeNull): |
| (JSC::WriteBarrierBase::setEarlyValue): |
| (JSC::WriteBarrierBase::get): |
| (JSC::WriteBarrierBase::operator*): |
| (JSC::WriteBarrierBase::operator->): |
| (JSC::WriteBarrierBase::unvalidatedGet): |
| (JSC::WriteBarrier::WriteBarrier): |
| * wtf/Assertions.h: |
| |
| 2011-05-14 Csaba Osztrogonác <ossy@webkit.org> |
| |
| Unreviewed, rolling out r86469 and r86471, because they made hundreds tests crash on Qt. |
| |
| Make GC validation more aggressive |
| https://bugs.webkit.org/show_bug.cgi?id=60802 |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * debugger/DebuggerActivation.cpp: |
| (JSC::DebuggerActivation::visitChildren): |
| * heap/MarkedBlock.cpp: |
| (JSC::MarkedBlock::MarkedBlock): |
| * heap/MarkedSpace.cpp: |
| * runtime/Arguments.cpp: |
| (JSC::Arguments::visitChildren): |
| * runtime/Executable.cpp: |
| (JSC::EvalExecutable::visitChildren): |
| (JSC::ProgramExecutable::visitChildren): |
| (JSC::FunctionExecutable::visitChildren): |
| * runtime/Executable.h: |
| (JSC::ProgramExecutable::createStructure): |
| (JSC::FunctionExecutable::createStructure): |
| * runtime/GetterSetter.cpp: |
| (JSC::GetterSetter::visitChildren): |
| * runtime/GetterSetter.h: |
| (JSC::GetterSetter::createStructure): |
| * runtime/JSAPIValueWrapper.h: |
| (JSC::JSAPIValueWrapper::createStructure): |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::visitChildren): |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::visitChildren): |
| * runtime/JSCell.cpp: |
| * runtime/JSCell.h: |
| (JSC::JSCell::JSCell::JSCell): |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::visitChildren): |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::visitChildren): |
| * runtime/JSONObject.h: |
| (JSC::JSONObject::createStructure): |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::visitChildren): |
| * runtime/JSPropertyNameIterator.cpp: |
| (JSC::JSPropertyNameIterator::visitChildren): |
| * runtime/JSPropertyNameIterator.h: |
| * runtime/JSStaticScopeObject.cpp: |
| (JSC::JSStaticScopeObject::visitChildren): |
| * runtime/JSString.h: |
| (JSC::RopeBuilder::createStructure): |
| * runtime/JSWrapperObject.cpp: |
| (JSC::JSWrapperObject::visitChildren): |
| * runtime/NativeErrorConstructor.cpp: |
| (JSC::NativeErrorConstructor::visitChildren): |
| * runtime/PropertyMapHashTable.h: |
| (JSC::PropertyMapEntry::PropertyMapEntry): |
| * runtime/RegExpObject.cpp: |
| (JSC::RegExpObject::visitChildren): |
| * runtime/ScopeChain.cpp: |
| (JSC::ScopeChainNode::visitChildren): |
| * runtime/ScopeChain.h: |
| (JSC::ScopeChainNode::ScopeChainNode): |
| * runtime/Structure.cpp: |
| (JSC::Structure::Structure): |
| (JSC::Structure::addPropertyTransition): |
| (JSC::Structure::visitChildren): |
| * runtime/Structure.h: |
| (JSC::Structure::createStructure): |
| (JSC::JSCell::classInfo): |
| * runtime/StructureChain.cpp: |
| (JSC::StructureChain::visitChildren): |
| * runtime/StructureChain.h: |
| * runtime/WriteBarrier.h: |
| (JSC::WriteBarrierBase::set): |
| (JSC::WriteBarrierBase::get): |
| (JSC::WriteBarrierBase::operator*): |
| (JSC::WriteBarrierBase::operator->): |
| (JSC::WriteBarrier::WriteBarrier): |
| * wtf/Assertions.h: |
| |
| 2011-05-13 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make GC validation more aggressive |
| https://bugs.webkit.org/show_bug.cgi?id=60802 |
| |
| This patch makes the checks performed under GC_VALIDATION |
| much more aggressive, and adds the checks to more places |
| in order to allow us to catch GC bugs much closer to the |
| point of failure. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * debugger/DebuggerActivation.cpp: |
| (JSC::DebuggerActivation::visitChildren): |
| * heap/MarkedBlock.cpp: |
| (JSC::MarkedBlock::MarkedBlock): |
| * heap/MarkedSpace.cpp: |
| * runtime/Arguments.cpp: |
| (JSC::Arguments::visitChildren): |
| * runtime/Executable.cpp: |
| (JSC::EvalExecutable::visitChildren): |
| (JSC::ProgramExecutable::visitChildren): |
| (JSC::FunctionExecutable::visitChildren): |
| * runtime/Executable.h: |
| * runtime/GetterSetter.cpp: |
| (JSC::GetterSetter::visitChildren): |
| * runtime/GetterSetter.h: |
| * runtime/JSAPIValueWrapper.h: |
| (JSC::JSAPIValueWrapper::createStructure): |
| (JSC::JSAPIValueWrapper::JSAPIValueWrapper): |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::visitChildren): |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::visitChildren): |
| * runtime/JSCell.cpp: |
| (JSC::slowValidateCell): |
| * runtime/JSCell.h: |
| (JSC::JSCell::JSCell::unvalidatedStructure): |
| (JSC::JSCell::JSCell::JSCell): |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::visitChildren): |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::visitChildren): |
| (JSC::slowValidateCell): |
| * runtime/JSONObject.h: |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::visitChildren): |
| * runtime/JSPropertyNameIterator.cpp: |
| (JSC::JSPropertyNameIterator::visitChildren): |
| * runtime/JSPropertyNameIterator.h: |
| * runtime/JSStaticScopeObject.cpp: |
| (JSC::JSStaticScopeObject::visitChildren): |
| * runtime/JSString.h: |
| (JSC::RopeBuilder::JSString): |
| * runtime/JSWrapperObject.cpp: |
| (JSC::JSWrapperObject::visitChildren): |
| * runtime/NativeErrorConstructor.cpp: |
| (JSC::NativeErrorConstructor::visitChildren): |
| * runtime/PropertyMapHashTable.h: |
| (JSC::PropertyMapEntry::PropertyMapEntry): |
| * runtime/RegExpObject.cpp: |
| (JSC::RegExpObject::visitChildren): |
| * runtime/ScopeChain.cpp: |
| (JSC::ScopeChainNode::visitChildren): |
| * runtime/ScopeChain.h: |
| (JSC::ScopeChainNode::ScopeChainNode): |
| * runtime/Structure.cpp: |
| (JSC::Structure::Structure): |
| (JSC::Structure::addPropertyTransition): |
| (JSC::Structure::visitChildren): |
| * runtime/Structure.h: |
| (JSC::JSCell::classInfo): |
| * runtime/StructureChain.cpp: |
| (JSC::StructureChain::visitChildren): |
| * runtime/StructureChain.h: |
| * runtime/WriteBarrier.h: |
| (JSC::validateCell): |
| (JSC::JSCell): |
| (JSC::JSGlobalObject): |
| (JSC::WriteBarrierBase::set): |
| (JSC::WriteBarrierBase::setMayBeNull): |
| (JSC::WriteBarrierBase::setEarlyValue): |
| (JSC::WriteBarrierBase::get): |
| (JSC::WriteBarrierBase::operator*): |
| (JSC::WriteBarrierBase::operator->): |
| (JSC::WriteBarrierBase::unvalidatedGet): |
| (JSC::WriteBarrier::WriteBarrier): |
| * wtf/Assertions.h: |
| |
| 2011-05-01 Holger Hans Peter Freyther <holger@moiji-mobile.com> |
| |
| Reviewed by Steve Block. |
| |
| [android] OS(ANDROID) does not imply PLATFORM(ANDROID) |
| https://bugs.webkit.org/show_bug.cgi?id=59888 |
| |
| It is possible to build QtWebKit and others for OS(ANDROID). Let |
| the buildsystem decide which platform is to be build. |
| |
| * wtf/Platform.h: |
| |
| 2011-05-12 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| XMLDocumentParserLibxml2 should play nice with strict OwnPtrs |
| https://bugs.webkit.org/show_bug.cgi?id=59394 |
| |
| This portion of the change introduces a PassTraits template, which |
| is used to enable takeFirst() to work for a Deque holding OwnPtrs, |
| and optimize it for a Deque holding RefPtrs. In the future it can |
| be deployed elsewhere to make our data structures work better with |
| our smart pointers. |
| |
| * GNUmakefile.list.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * wtf/CMakeLists.txt: |
| * wtf/Deque.h: |
| (WTF::::takeFirst): |
| * wtf/PassTraits.h: Added. |
| (WTF::PassTraits::transfer): |
| |
| 2011-05-12 Nikolas Zimmermann <nzimmermann@rim.com> |
| |
| Not reviewed. |
| |
| Revert r86334, it broke the win build. WinCE build is fixed even without this patch. WinCairo remains broken atm, everything else works. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2011-05-12 Nikolas Zimmermann <nzimmermann@rim.com> |
| |
| Not reviewed. |
| |
| String operator+ reallocates unnecessarily when concatting > 2 strings |
| https://bugs.webkit.org/show_bug.cgi?id=58420 |
| |
| Try to fix WinCE/WinCairo linking by exporting three symbols, not sure whether it's correct though. Win worked just fine before. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2011-05-12 Nikolas Zimmermann <nzimmermann@rim.com> |
| |
| Reviewed by Darin Adler. |
| |
| String operator+ reallocates unnecessarily when concatting > 2 strings |
| https://bugs.webkit.org/show_bug.cgi?id=58420 |
| |
| Provide a faster String append operator. |
| Up until now, "String operator+(const String& a, const String& b)" copied String a into a temporary |
| object, and used a.append(b), which reallocates a new buffer of aLength+bLength. When concatting |
| N strings using operator+, this leads to N-1 reallocations. |
| |
| Replace this with a flexible operator+ implementation, that avoids these reallocations. |
| When concatting a 'String' with any string type (char*, UChar, Vector<char>, String, AtomicString, etc..) |
| a StringAppend<String, T> object is created, which holds the intermediate string objects, and delays |
| creation of the final string, until operator String() is invoked. |
| |
| template<typename T> |
| StringAppend<String, T> operator+(const String& string1, T string2) |
| { |
| return StringAppend<String, T>(string1, string2); |
| } |
| |
| template<typename U, typename V, typename W> |
| StringAppend<U, StringAppend<V, W> > operator+(U string1, const StringAppend<V, W>& string2) |
| { |
| return StringAppend<U, StringAppend<V, W> >(string1, string2); |
| } |
| |
| When concatting three strings - "String a, b, c; String result = a + b + c;" following happens: |
| first a StringAppend<String, String> object is created by operator+(const String& string1, String string2). |
| Then operator+(String string1, const StringAppend<String, String>& string2) is invoked, which returns |
| a StringAppend<String, StringAppend<String, String> > object. |
| Then operator String() is invoked, which allocates a StringImpl object, once, large enough to hold the |
| final string - it uses tryMakeString provided by StringConcatenate.h under the hoods, which guards us |
| against too big string allocations, etc. |
| |
| Note that the second template, defines a recursive way to concat an arbitary number of strings |
| into a single String with just one allocation. |
| |
| * GNUmakefile.list.am: Add StringOperators.h to build. |
| * JavaScriptCore.exp: Export WTF::emptyString(). Remove no longer needed symbols. |
| * JavaScriptCore.gypi: Add StringOperators.h to build. |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto. |
| * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. |
| * wtf/text/AtomicString.h: Pull in StringConcatenate.h at the end of the file. |
| * wtf/text/StringConcatenate.h: Conditionally include AtomicString.h to avoid a cyclic dependency. Pull in StringOperators.h at the end of the file. |
| * wtf/text/StringOperators.h: Added. This is never meant to be included directly, including either WTFString.h or AtomicString.h automatically pulls in this file. |
| (WTF::StringAppend::StringAppend): |
| (WTF::StringAppend::operator String): |
| (WTF::StringAppend::operator AtomicString): |
| (WTF::StringAppend::writeTo): |
| (WTF::StringAppend::length): |
| (WTF::operator+): |
| * wtf/text/WTFString.cpp: Remove operator+ implementations that use String::append(). |
| (WTF::emptyString): Add new shared empty string free function. |
| * wtf/text/WTFString.h: Replace operator+ implementations by StringAppend template solution. Pull in AtomicString.h at the end of the file. |
| |
| 2011-05-12 Philippe Normand <pnormand@igalia.com> |
| |
| Unreviewed, GTK build fix. |
| |
| * wtf/Platform.h: |
| |
| 2011-05-12 Keith Kyzivat <keith.kyzivat@nokia.com> |
| |
| Reviewed by Csaba Osztrogonác. |
| |
| [Qt] Arm debug build failing on ARMAssembler::debugOffset() |
| https://bugs.webkit.org/show_bug.cgi?id=60688 |
| |
| Related to svn rev 85523 |
| |
| * assembler/ARMAssembler.h: |
| (JSC::ARMAssembler::debugOffset): |
| |
| 2011-05-11 Igor Oliveira <igor.oliveira@openbossa.org> |
| |
| Reviewed by Eric Seidel. |
| |
| WebKit does not build with GCCE |
| https://bugs.webkit.org/show_bug.cgi?id=60667 |
| |
| Allow compile WebKit with GCCE |
| |
| * wtf/Alignment.h: |
| * wtf/Platform.h: |
| |
| 2011-05-11 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Enable strict PassOwnPtr on Mac |
| https://bugs.webkit.org/show_bug.cgi?id=60684 |
| |
| This should build cleanly now. |
| |
| * wtf/PassOwnPtr.h: |
| |
| 2011-05-11 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Protect JSC from WebCore executing JS during JS wrapper finalization |
| https://bugs.webkit.org/show_bug.cgi?id=60672 |
| <rdar://problem/9350997> |
| |
| Detect when we're trying to execute JS during GC and prevent the |
| execution from happening. We also assert that this isn't happening |
| as it implies incorrect behaviour of an object's destructor. |
| |
| * JavaScriptCore.exp: |
| * heap/Heap.cpp: |
| * heap/Heap.h: |
| (JSC::Heap::isBusy): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::execute): |
| (JSC::Interpreter::executeCall): |
| (JSC::Interpreter::executeConstruct): |
| * runtime/JSGlobalData.h: |
| (JSC::JSGlobalData::isCollectorBusy): |
| |
| 2011-05-11 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Enable gc mark validation in temporarily in release builds |
| https://bugs.webkit.org/show_bug.cgi?id=60678 |
| |
| Make it easier to turn the gc mark validation on and off, and |
| temporarily turn it on for all builds. |
| |
| * heap/MarkStack.cpp: |
| * heap/MarkStack.h: |
| (JSC::MarkStack::append): |
| (JSC::MarkStack::internalAppend): |
| * runtime/WriteBarrier.h: |
| (JSC::MarkStack::appendValues): |
| * wtf/Platform.h: |
| |
| 2011-05-11 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| <rdar://problem/9331651> REGRESSION: RPRVT grows by 1MB / sec @ dvd2blu.com |
| |
| SunSpider reports no change. |
| |
| This bug was caused by changing Structure and Executable to being GC |
| objects, and by a long-standing bug that would thrash the global object |
| between dictionary and non-dictionary states. |
| |
| * runtime/BatchedTransitionOptimizer.h: |
| (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): Don't |
| eagerly transition to dictionary -- this can cause pathological dictionary |
| churn, and it's not necessary, since objects know how to automatically |
| transition to dictionary when necessary. |
| |
| * runtime/Executable.cpp: |
| (JSC::EvalExecutable::compileInternal): |
| (JSC::ProgramExecutable::compileInternal): |
| (JSC::FunctionExecutable::compileForCallInternal): |
| (JSC::FunctionExecutable::compileForConstructInternal): Be sure to report |
| extra cost from compilation, because it can be quite high. This is especially |
| important for program code, since DOM timers can repeatedly allocate |
| program code without allocating any other objects. |
| |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::removeDirect): Don't transition to the uncacheable state |
| if the thing we're trying to remove doesn't exist. This can happen during |
| compilation, since the compiler needs to ensure that no pre-existing |
| conflicting definitions exist for certain declarations. |
| |
| 2011-05-11 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Make mark stack validation functions do something useful in a release build |
| https://bugs.webkit.org/show_bug.cgi?id=60645 |
| |
| Turn ASSERTs into actual if(...) CRASH(); statements. |
| |
| * heap/MarkStack.cpp: |
| (JSC::MarkStack::validateValue): |
| |
| 2011-05-11 Xan Lopez <xlopez@igalia.com> |
| |
| Reviewed by Martin Robinson. |
| |
| Fix copy&paste error in comment. |
| |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::stringGetByValStubGenerator): the value is stored in |
| regT2, not regT1. |
| |
| 2011-05-11 Adam Roben <aroben@apple.com> |
| |
| WinCE build fixes for strict PassOwnPtr |
| |
| * wtf/unicode/CollatorDefault.cpp: |
| (WTF::Collator::userDefault): Use adoptPtr. |
| |
| 2011-05-11 Holger Hans Peter Freyther <holger@moiji-mobile.com> |
| |
| Unreviewed build fix. |
| |
| [MIPS] Fix compilation of the MIPS JIT |
| |
| Include the MIPSAssembler.h first to indirectly include |
| AssemblerBuffer.h before the AbstractMacroAssembler.h. This |
| order is used for the ARM and X86 MacroAssembler*.h |
| |
| * assembler/MacroAssemblerMIPS.h: |
| |
| 2011-05-11 Adam Roben <aroben@apple.com> |
| |
| Turn on strict PassOwnPtr on Windows |
| |
| Fixes <http://webkit.org/b/60632> Windows should build with strict PassOwnPtr enabled |
| |
| Reviewed by Adam Barth. |
| |
| * wtf/PassOwnPtr.h: |
| |
| 2011-05-10 Stephanie Lewis <slewis@apple.com> |
| |
| Unreviewed. |
| |
| Revert accidental JavaScriptCore change in http://trac.webkit.org/changeset/86130 |
| |
| * Configurations/JavaScriptCore.xcconfig: |
| |
| 2011-05-10 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by David Levin. |
| |
| Enable strict PassOwnPtr on Chromium |
| https://bugs.webkit.org/show_bug.cgi?id=60502 |
| |
| Other platforms to follow. |
| |
| * wtf/PassOwnPtr.h: |
| |
| 2011-05-10 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Fixed up some #include dependencies so the WriteBarrier class can actually call Heap::writeBarrier |
| https://bugs.webkit.org/show_bug.cgi?id=60532 |
| |
| * GNUmakefile.list.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.xcodeproj/project.pbxproj: Build! |
| |
| * heap/Handle.h: Moved HandleTypes to its own header because that's the |
| WebKit style, and it was necessary to resolve a circular dependency |
| between Handle.h and WriteBarrier.h. |
| |
| * heap/Heap.h: |
| (JSC::Heap::writeBarrier): Added an inline no-op writeBarrier(), to |
| verify that all the code is in the right place. |
| |
| * heap/MarkStack.h: Moved WriteBarrier operations to WriteBarrier.h to |
| resolve a circular dependency. |
| |
| * runtime/ArgList.h: |
| * runtime/JSCell.h: #include WriteBarrier.h since we don't get it for |
| free anymore. |
| |
| * runtime/PropertyMapHashTable.h: |
| (JSC::PropertyTable::PropertyTable): Call the real writeBarrier() |
| function, now that it exists. |
| |
| * runtime/SmallStrings.h: Removed a stray #include to resolve a circular |
| dependency. |
| |
| * runtime/WriteBarrier.h: |
| (JSC::WriteBarrierBase::set): |
| (JSC::MarkStack::append): |
| (JSC::MarkStack::appendValues): Updated to match the changes above. |
| |
| 2011-05-10 Oliver Hunt <oliver@apple.com> |
| |
| Build fix. |
| |
| * heap/MarkStack.cpp: |
| (JSC::MarkStack::validateValue): |
| |
| 2011-05-10 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Add some aggressive GC validation to debug builds. |
| https://bugs.webkit.org/show_bug.cgi?id=60601 |
| |
| When assertions are enabled we now do some validity checking |
| of objects being added to the mark stack. |
| |
| * bytecode/Instruction.h: |
| (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::PolymorphicStubInfo): |
| (JSC::PolymorphicAccessStructureList::visitAggregate): |
| * heap/MarkStack.cpp: |
| (JSC::MarkStack::validateSet): |
| (JSC::MarkStack::validateValue): |
| * heap/MarkStack.h: |
| (JSC::MarkStack::appendValues): |
| (JSC::MarkStack::append): |
| (JSC::MarkStack::internalAppend): |
| |
| 2011-05-09 Darin Adler <darin@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| http://bugs.webkit.org/show_bug.cgi?id=60509 |
| Wrong type used for return value from strlen |
| |
| * wtf/FastMalloc.cpp: |
| (WTF::fastStrDup): Use size_t. Also don't bother checking for failure since |
| fastMalloc won't return if it fails. |
| |
| 2011-05-09 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| CSP should block Function constructor |
| https://bugs.webkit.org/show_bug.cgi?id=60240 |
| |
| When eval is disabled, we need to block the use of the function |
| constructor. However, the WebCore JSC bindings call the function |
| constructor directly to create inline event listeners. To support that |
| use, this patch adds an entrypoint that bypasses the check for whether |
| eval is enabled. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * runtime/FunctionConstructor.cpp: |
| (JSC::constructFunction): |
| (JSC::constructFunctionSkippingEvalEnabledCheck): |
| * runtime/FunctionConstructor.h: |
| |
| 2011-05-09 Adam Roben <aroben@apple.com> |
| |
| Automatically touch WebKit.idl whenever any other WebKit1 IDL file changes |
| |
| Fixes <http://webkit.org/b/60468> WebKit.idl needs to be manually touched whenever any other |
| WebKit1 IDL file changes to avoid build errors |
| |
| Reviewed by Tim Hatcher. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: |
| Updated for script rename. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: Removed. |
| * JavaScriptCore.vcproj/JavaScriptCore/work-around-vs-dependency-tracking-bugs.py: Renamed |
| from react-to-vsprops-changes.py. |
| (top level): Moved a constant here from main. |
| (main): Moved most code from here to react_to_vsprops_changes. Added a call to the new |
| react_to_webkit1_interface_changes function. |
| (react_to_vsprops_changes): Moved code here from main. Updated to use the |
| TOP_LEVEL_DIRECTORY global. Moved some code from here to mtime_of_newest_file_matching_globa |
| and touch_if_older_than. |
| (react_to_webkit1_interface_changes): Added. Touches WebKit.idl if any other WebKit1 IDL |
| file has changed. |
| (mtime_of_newest_file_matching_glob): Added. Code came from main. |
| (touch_if_older_than): Added. Code came from main. |
| |
| 2011-05-08 Jessie Berlin <jberlin@apple.com> |
| |
| Reviewed by Dan Bernstein. |
| |
| Make JSRetainPtr work with JSGlobalContextRefs. |
| https://bugs.webkit.org/show_bug.cgi?id=60452 |
| |
| Add specialized functions for JSRetain and JSRelease when dealing with JSGlobalContextRefs. |
| |
| * API/JSRetainPtr.h: |
| (JSRetain): |
| (JSRelease): |
| |
| 2011-05-07 Dawit Alemayehu <adawit@kde.org> |
| |
| Reviewed by Daniel Bates. |
| |
| Fix compile with GCC 4.6.0 |
| https://bugs.webkit.org/show_bug.cgi?id=60380 |
| |
| Remove unused local variable from code. |
| |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncMatch): |
| |
| 2011-05-06 Alexis Menard <alexis.menard@openbossa.org> |
| |
| Unreviewed build fix with gcc 4.6.0 on linux and c++0x support. |
| |
| std::tr1::has_trivial_constructor is in <tr1/memory>. |
| |
| * wtf/TypeTraits.h: |
| |
| 2011-05-05 Jay Civelli <jcivelli@chromium.org> |
| |
| Reviewed by Adam Barth. |
| |
| Added convenience methods to convert from a byte to hex ASCII digit |
| characters and vice-versa. |
| https://bugs.webkit.org/show_bug.cgi?id=59834 |
| |
| * wtf/ASCIICType.h: |
| (WTF::toASCIIHexValue): |
| (WTF::lowerNibbleToASCIIHexDigit): |
| (WTF::upperNibbleToASCIIHexDigit): |
| |
| 2011-05-05 Alexis Menard <alexis.menard@openbossa.org> |
| |
| Reviewed by Benjamin Poulain. |
| |
| [Qt] Make QtWebKit build when using gcc 4.6.0 |
| https://bugs.webkit.org/show_bug.cgi?id=60265 |
| |
| If QtWebKit is compiled with gcc 4.6.0 or later we don't want to deactivate |
| the c++0x support because it works. |
| |
| * JavaScriptCore.pro: |
| |
| 2011-05-04 Fridrich Strba <fridrich.strba@bluewin.ch> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Port MachineStackMarker.cpp to Windows x64 |
| https://bugs.webkit.org/show_bug.cgi?id=60216 |
| |
| * heap/MachineStackMarker.cpp: |
| (JSC::getPlatformThreadRegisters): the CONTEXT struct is usable also |
| on 64-bit Windows. |
| (JSC::otherThreadStackPointer): return the Rsp register on Windows x64. |
| |
| 2011-05-04 Fridrich Strba <fridrich.strba@bluewin.ch> |
| |
| Reviewed by Martin Robinson. |
| |
| Link libjavascriptcoregtk on Windows with winmm.dll |
| https://bugs.webkit.org/show_bug.cgi?id=60215 |
| |
| * GNUmakefile.am: |
| |
| 2011-05-04 Tao Bai <michaelbai@chromium.org> |
| |
| Reviewed by David Kilzer. |
| |
| Populate touch-icon url to FrameLoaderClient |
| https://bugs.webkit.org/show_bug.cgi?id=59143 |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2011-05-03 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| <rdar://problem/9366557> Various crashes due to bad DFG codegen at canalplus.fr |
| |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::checkArgumentTypes): Removed a stray line of |
| code that accidentally survived the conversion to a switch statement, |
| causing a lot of important code not to run most of the time. |
| |
| Since this is not a trivial finger-picking mistake, I will not call it a |
| typo. |
| |
| 2011-05-04 Adam Roben <aroben@apple.com> |
| |
| Another attempted build fix |
| |
| * wtf/OwnPtr.h: |
| (WTF::OwnPtr::operator==): |
| (WTF::OwnPtr::operator!=): |
| * wtf/PassOwnPtr.h: |
| (WTF::PassOwnPtr::operator==): |
| (WTF::PassOwnPtr::operator!=): |
| Added a return statement. And made a tweak based on a suggestion from Anders Carlsson. |
| |
| 2011-05-04 Adam Roben <aroben@apple.com> |
| |
| Try to fix Leopard, Qt, and probably others |
| |
| * wtf/OwnPtr.h: |
| (WTF::OwnPtr::operator==): |
| (WTF::OwnPtr::operator!=): |
| * wtf/PassOwnPtr.h: |
| (WTF::PassOwnPtr::operator==): |
| (WTF::PassOwnPtr::operator!=): |
| Try to get the compiler not to instantiate these function templates unnecessarily. |
| |
| 2011-05-03 Adam Roben <aroben@apple.com> |
| |
| Disallow equality comparisons between [Pass]OwnPtrs |
| |
| If you have two OwnPtrs that are equal, you've already lost. (Unless you're doing something |
| really sneaky, in which case you should stop!) |
| |
| Fixes <http://webkit.org/b/60053> Testing OwnPtrs for equality should cause a compiler error |
| |
| Reviewed by Anders Carlsson and Antti Koivisto. |
| |
| * wtf/OwnPtr.h: |
| (WTF::OwnPtr::operator==): |
| (WTF::OwnPtr::operator!=): |
| * wtf/PassOwnPtr.h: |
| (WTF::PassOwnPtr::operator==): |
| (WTF::PassOwnPtr::operator!=): |
| Added private equality operators that fail to compile when used. (When not used, the |
| compiler will skip over them because they are function templates.) |
| |
| 2011-05-04 Alexis Menard <alexis.menard@openbossa.org> |
| |
| Reviewed by Gavin Barraclough. |
| |
| JITArithmetic.cpp produces a warning on a unused variable. |
| https://bugs.webkit.org/show_bug.cgi?id=60060 |
| |
| Just properly use what we already have converted. |
| |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emitSlow_op_add): |
| (JSC::JIT::emitSlow_op_mul): |
| |
| 2011-05-04 Alexis Menard <alexis.menard@openbossa.org> |
| |
| Reviewed by Geoffrey Garen. |
| |
| JITPropertyAccess produces a unused but set variable warning in gcc 4.6.0. |
| https://bugs.webkit.org/show_bug.cgi?id=60050 |
| |
| This patch fix a compilation warning. The new warning scenario -Wunused-but-set-variable |
| in gcc 4.6.0 is included in -Wall and therefore stops the compilation when warnings are treated |
| as errors. The patch introduces a new macro ASSERT_JIT_OFFSET_UNUSED and ASSERT_WITH_MESSAGE_UNUSED |
| which copy the idea of ASSERT_UNUSED. |
| |
| * jit/JIT.h: |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::emit_op_method_check): |
| (JSC::JIT::compileGetByIdHotPath): |
| (JSC::JIT::emit_op_put_by_id): |
| * wtf/Assertions.h: |
| (assertWithMessageUnused): |
| |
| 2011-04-29 Jer Noble <jer.noble@apple.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Implement FULLSCREEN_API on Windows, Part 4: Enable it |
| https://bugs.webkit.org/show_bug.cgi?id=59798 |
| |
| * wtf/Platform.h: Set ENABLE_FULLSCREEN_API on win. |
| |
| 2011-05-03 Alexis Menard <alexis.menard@openbossa.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Unused but set variable warning in MacroAssemberX86_64 |
| https://bugs.webkit.org/show_bug.cgi?id=59482 |
| |
| * assembler/MacroAssemblerX86_64.h: |
| (JSC::MacroAssemblerX86_64::call): |
| (JSC::MacroAssemblerX86_64::tailRecursiveCall): |
| (JSC::MacroAssemblerX86_64::makeTailRecursiveCall): |
| |
| 2011-05-03 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make malloc validation useful |
| https://bugs.webkit.org/show_bug.cgi?id=57502 |
| |
| Reland this patch (rolled out in 82905) without |
| turning it on by default. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * wtf/FastMalloc.cpp: |
| (WTF::tryFastMalloc): |
| (WTF::fastMalloc): |
| (WTF::tryFastCalloc): |
| (WTF::fastCalloc): |
| (WTF::fastFree): |
| (WTF::tryFastRealloc): |
| (WTF::fastRealloc): |
| (WTF::fastMallocSize): |
| (WTF::TCMalloc_PageHeap::isScavengerSuspended): |
| (WTF::TCMalloc_PageHeap::scheduleScavenger): |
| (WTF::TCMalloc_PageHeap::suspendScavenger): |
| (WTF::TCMalloc_PageHeap::signalScavenger): |
| (WTF::TCMallocStats::malloc): |
| (WTF::TCMallocStats::free): |
| (WTF::TCMallocStats::fastCalloc): |
| (WTF::TCMallocStats::tryFastCalloc): |
| (WTF::TCMallocStats::calloc): |
| (WTF::TCMallocStats::fastRealloc): |
| (WTF::TCMallocStats::tryFastRealloc): |
| (WTF::TCMallocStats::realloc): |
| (WTF::TCMallocStats::fastMallocSize): |
| * wtf/FastMalloc.h: |
| (WTF::Internal::fastMallocValidationHeader): |
| (WTF::Internal::fastMallocValidationSuffix): |
| (WTF::Internal::fastMallocMatchValidationType): |
| (WTF::Internal::setFastMallocMatchValidationType): |
| (WTF::fastMallocMatchValidateFree): |
| (WTF::fastMallocValidate): |
| |
| 2011-05-03 Xan Lopez <xlopez@igalia.com> |
| |
| Reviewed by Anders Carlsson. |
| |
| Compile error with GCC 4.6.0, tries to assign unsigned& to bitfield |
| https://bugs.webkit.org/show_bug.cgi?id=59261 |
| |
| Use unary '+' to force proper type detection in template arguments |
| with GCC 4.6.0. See bug report for more details. |
| |
| * runtime/Structure.cpp: |
| (JSC::StructureTransitionTable::remove): Use '+' to force precise type detection. |
| (JSC::StructureTransitionTable::add): ditto. |
| * runtime/Structure.h: |
| (JSC::StructureTransitionTable::keyForWeakGCMapFinalizer): ditto. |
| |
| 2011-05-03 Jessie Berlin <jberlin@apple.com> |
| |
| Rubber-stamped by Adam Roben. |
| |
| Revert r85550 and r85575. |
| |
| Variables cannot be exported via the .def file. Instead, they should be annotated with |
| JS_EXPORTDATA. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * runtime/Structure.cpp: |
| (JSC::Structure::materializePropertyMap): |
| * runtime/Structure.h: |
| (JSC::Structure::typeInfo): |
| (JSC::Structure::previousID): |
| (JSC::Structure::propertyStorageCapacity): |
| (JSC::Structure::propertyStorageSize): |
| (JSC::Structure::get): |
| (JSC::Structure::materializePropertyMapIfNecessary): |
| |
| 2011-05-02 Adam Roben <aroben@apple.com> |
| |
| Allow implicit conversion from nullptr_t to PassOwnPtr |
| |
| This makes it a lot easier to write code that just wants a null PassOwnPtr, especially in |
| strict PassOwnPtr mode. |
| |
| Fixes <http://webkit.org/b/59964> Implicit conversion from std::nullptr_t to PassOwnPtr |
| doesn't work, but should |
| |
| Reviewed by Adam Barth. |
| |
| * wtf/PassOwnPtr.h: |
| (WTF::PassOwnPtr::PassOwnPtr): Added a non-explicit constructor that takes a nullptr_t. |
| |
| * wtf/MessageQueue.h: |
| (WTF::::waitForMessageFilteredWithTimeout): |
| (WTF::::tryGetMessage): |
| Use the new implicit conversion. |
| |
| 2011-05-02 Jessie Berlin <jberlin@apple.com> |
| |
| Rubber-stamped by Oliver Hunt. |
| |
| Remove an assertion that Windows was hitting on launch. |
| |
| * runtime/Structure.cpp: |
| (JSC::Structure::materializePropertyMap): |
| * runtime/Structure.h: |
| (JSC::Structure::typeInfo): |
| (JSC::Structure::previousID): |
| (JSC::Structure::propertyStorageCapacity): |
| (JSC::Structure::propertyStorageSize): |
| (JSC::Structure::get): |
| (JSC::Structure::materializePropertyMapIfNecessary): |
| |
| 2011-05-02 Mark Rowe <mrowe@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| <rdar://problem/9371948> JavaScriptCore should build with GCC 4.2 |
| |
| * Configurations/CompilerVersion.xcconfig: |
| |
| 2011-05-02 Gavin Barraclough <barraclough@apple.com> |
| |
| ARMv7 build fix. |
| |
| * assembler/AbstractMacroAssembler.h: |
| (JSC::AbstractMacroAssembler::Jump::link): |
| (JSC::AbstractMacroAssembler::Jump::linkTo): |
| |
| 2011-05-02 Oliver Hunt <oliver@apple.com> |
| |
| Windows build fix. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2011-05-02 Michael Saboff <msaboff@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| crash in JSC::RegExp::match |
| https://bugs.webkit.org/show_bug.cgi?id=58922 |
| |
| Cleared chained backtrack data label when linking label even if that |
| label doesn't chain itself. This is needed so that subsequent |
| backtrack data labels point to the next outer paren and not within |
| the current paren. |
| |
| * yarr/YarrJIT.cpp: |
| (JSC::Yarr::YarrGenerator::TermGenerationState::linkDataLabelToBacktrackIfExists): |
| |
| 2011-05-02 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Tiny bit of heap cleanup. |
| |
| * heap/MarkedBlock.h: |
| (JSC::MarkedBlock::contains): Tightened up an assertion and a comment. |
| |
| * heap/MarkedSpace.h: |
| (JSC::MarkedSpace::globalData): |
| (JSC::MarkedSpace::highWaterMark): |
| (JSC::MarkedSpace::setHighWaterMark): Moved inlines out of the class |
| definition, for better clarity. |
| |
| 2011-05-02 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Correct marking of interpreter data in mixed mode builds |
| https://bugs.webkit.org/show_bug.cgi?id=59962 |
| |
| We had a few places in mixed mode builds where we would not |
| track data used by the interpreter for marking. This patch |
| corrects the problem and adds a number of assertions to catch |
| live Structures being collected. |
| |
| * JavaScriptCore.exp: |
| * assembler/ARMv7Assembler.h: |
| (JSC::ARMv7Assembler::ARMInstructionFormatter::debugOffset): |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::dump): |
| * bytecode/CodeBlock.h: |
| (JSC::CodeBlock::addPropertyAccessInstruction): |
| (JSC::CodeBlock::addGlobalResolveInstruction): |
| (JSC::CodeBlock::addStructureStubInfo): |
| (JSC::CodeBlock::addGlobalResolveInfo): |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitResolve): |
| (JSC::BytecodeGenerator::emitResolveWithBase): |
| (JSC::BytecodeGenerator::emitGetById): |
| (JSC::BytecodeGenerator::emitPutById): |
| (JSC::BytecodeGenerator::emitDirectPutById): |
| * runtime/Structure.cpp: |
| (JSC::Structure::materializePropertyMap): |
| * runtime/Structure.h: |
| (JSC::Structure::typeInfo): |
| (JSC::Structure::previousID): |
| (JSC::Structure::propertyStorageCapacity): |
| (JSC::Structure::propertyStorageSize): |
| (JSC::Structure::get): |
| (JSC::Structure::materializePropertyMapIfNecessary): |
| |
| 2011-05-02 Xan Lopez <xlopez@igalia.com> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Use native NullPtr when using GCC 4.6.0 and C++0x |
| https://bugs.webkit.org/show_bug.cgi?id=59252 |
| |
| GCC 4.6.0 has nullptr support, use it when possible. |
| |
| * wtf/NullPtr.cpp: include config.h to pull in Platform.h before |
| NullPtr.h, since we need the GCC_VERSION_AT_LEAST definition. |
| * wtf/NullPtr.h: check for GCC >= 4.6.0 and C++0x in order to |
| use native nullptr. |
| |
| 2011-05-02 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=59950 |
| Clean up AssemblerBuffer to use a Vector internally. |
| |
| AssemblerBuffer handles reallocing a byte array itself - stop that. |
| |
| * assembler/ARMAssembler.cpp: |
| (JSC::ARMAssembler::executableCopy): |
| * assembler/AssemblerBuffer.h: |
| (JSC::AssemblerLabel::AssemblerLabel): |
| (JSC::AssemblerLabel::labelAtOffset): |
| (JSC::AssemblerBuffer::AssemblerBuffer): |
| (JSC::AssemblerBuffer::~AssemblerBuffer): |
| (JSC::AssemblerBuffer::isAvailable): |
| (JSC::AssemblerBuffer::ensureSpace): |
| (JSC::AssemblerBuffer::isAligned): |
| (JSC::AssemblerBuffer::putIntegral): |
| (JSC::AssemblerBuffer::putIntegralUnchecked): |
| (JSC::AssemblerBuffer::putByteUnchecked): |
| (JSC::AssemblerBuffer::putByte): |
| (JSC::AssemblerBuffer::putShortUnchecked): |
| (JSC::AssemblerBuffer::putShort): |
| (JSC::AssemblerBuffer::putIntUnchecked): |
| (JSC::AssemblerBuffer::putInt): |
| (JSC::AssemblerBuffer::putInt64Unchecked): |
| (JSC::AssemblerBuffer::putInt64): |
| (JSC::AssemblerBuffer::codeSize): |
| (JSC::AssemblerBuffer::label): |
| (JSC::AssemblerBuffer::executableCopy): |
| (JSC::AssemblerBuffer::rewindToLabel): |
| (JSC::AssemblerBuffer::debugOffset): |
| (JSC::AssemblerBuffer::append): |
| (JSC::AssemblerBuffer::grow): |
| * assembler/AssemblerBufferWithConstantPool.h: |
| * assembler/MacroAssemblerX86_64.h: |
| (JSC::MacroAssemblerX86_64::linkCall): |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::X86InstructionFormatter::rewindToLabel): |
| |
| 2011-05-02 Jeff Miller <jeffm@apple.com> |
| |
| Reviewed by Alexy Proskuryakov. |
| |
| Avoid potential buffer overflow in WTFLog() and WTFLogVerbose() |
| https://bugs.webkit.org/show_bug.cgi?id=59949 |
| |
| * wtf/Assertions.cpp: Check for 0 or empty format string in WTFLog() and WTFLogVerbose(). |
| |
| 2011-05-02 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| StringImpl::endsWith has some insane code |
| https://bugs.webkit.org/show_bug.cgi?id=59900 |
| |
| * wtf/text/StringImpl.cpp: |
| (WTF::StringImpl::endsWith): |
| - m_data shadows a member variable of the same name. |
| |
| 2011-05-02 Gabor Loki <loki@webkit.org> |
| |
| Buildfix for ARM after r85448 |
| |
| * assembler/ARMAssembler.h: |
| (JSC::ARMAssembler::loadBranchTarget): |
| |
| 2011-05-01 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Strict-mode only reserved words not reserved |
| https://bugs.webkit.org/show_bug.cgi?id=55342 |
| |
| Fix line number tracking when we rollback the lexer. |
| |
| * parser/JSParser.cpp: |
| (JSC::JSParser::parseSourceElements): |
| |
| 2011-05-01 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| ES5 Strict mode does not allow getter and setter for same propId |
| https://bugs.webkit.org/show_bug.cgi?id=57295 |
| |
| Simplify and correct the logic for strict mode object literals. |
| |
| * parser/JSParser.cpp: |
| (JSC::JSParser::parseStrictObjectLiteral): |
| |
| 2011-05-01 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Assigning to function identifier under strict should throw |
| https://bugs.webkit.org/show_bug.cgi?id=59289 |
| |
| Add logic to StaticScopeObject to ensure we don't silently consume |
| writes to constant properties. |
| |
| * runtime/JSStaticScopeObject.cpp: |
| (JSC::JSStaticScopeObject::put): |
| |
| 2011-05-01 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=59903 |
| Use AssemblerLabel throughout Assembler classes, AssemblerBuffer |
| |
| Creating a lable() into the AssemblerBuffer should return an AssemblerLabel, |
| not an unsigned int. |
| |
| * assembler/ARMAssembler.cpp: |
| (JSC::ARMAssembler::executableCopy): |
| * assembler/ARMAssembler.h: |
| (JSC::ARMAssembler::blx): |
| (JSC::ARMAssembler::label): |
| (JSC::ARMAssembler::loadBranchTarget): |
| * assembler/ARMv7Assembler.h: |
| (JSC::ARMv7Assembler::b): |
| (JSC::ARMv7Assembler::blx): |
| (JSC::ARMv7Assembler::bx): |
| (JSC::ARMv7Assembler::label): |
| (JSC::ARMv7Assembler::ARMInstructionFormatter::label): |
| * assembler/AssemblerBuffer.h: |
| (JSC::AssemblerBuffer::label): |
| * assembler/AssemblerBufferWithConstantPool.h: |
| * assembler/MIPSAssembler.h: |
| (JSC::MIPSAssembler::label): |
| (JSC::MIPSAssembler::relocateJumps): |
| * assembler/SH4Assembler.h: |
| (JSC::SH4Assembler::loadConstant): |
| (JSC::SH4Assembler::loadConstantUnReusable): |
| (JSC::SH4Assembler::call): |
| (JSC::SH4Assembler::jmp): |
| (JSC::SH4Assembler::jne): |
| (JSC::SH4Assembler::je): |
| (JSC::SH4Assembler::label): |
| (JSC::SH4Assembler::oneShortOp): |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::call): |
| (JSC::X86Assembler::jmp_r): |
| (JSC::X86Assembler::label): |
| (JSC::X86Assembler::X86InstructionFormatter::immediateRel32): |
| (JSC::X86Assembler::X86InstructionFormatter::label): |
| |
| 2011-05-01 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by David Levin. |
| |
| Enable strict mode for OwnPtr and PassOwnPtr |
| https://bugs.webkit.org/show_bug.cgi?id=59428 |
| |
| * wtf/OwnPtr.h: |
| |
| 2011-05-01 Patrick Gansterer <paroga@webkit.org> |
| |
| Reviewed by Adam Barth. |
| |
| Enable strict OwnPtr for PLATFORM(WIN) |
| https://bugs.webkit.org/show_bug.cgi?id=59881 |
| |
| * wtf/OwnPtr.h: |
| |
| 2011-05-01 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=59896 |
| Remove JmpSrc/JmpDst types. |
| |
| The JmpSrc/JmpDst classes predate the MacroAssembler interface. Having these |
| object be per-assembler in unhelpful, causes unnecessary code duplication, |
| and prevents the AssemblerBuffer from providing a richer type for labels. |
| The limited semantic meaning that they did convey is undermined by the manner |
| in which their meanings have been overloaded (use of JmpSrc for Call, JmpDst |
| for data labels). |
| |
| Jumps on ARMv7 have had additional information added to the object via the |
| ARMv7 JmpSrc. This data should probably be in the instruction stream. This |
| patch does not fix the problem, and moves the data (ifdefed) to |
| AbstractMacroAssembler::Jump (which is effectively where it was before!). |
| This at least closes the hole such that no further data may be added to JmpSrc, |
| but this is unfortunate, and should be cleaned up. |
| |
| * assembler/ARMAssembler.h: |
| (JSC::ARMAssembler::blx): |
| (JSC::ARMAssembler::label): |
| (JSC::ARMAssembler::align): |
| (JSC::ARMAssembler::loadBranchTarget): |
| (JSC::ARMAssembler::jmp): |
| (JSC::ARMAssembler::linkPointer): |
| (JSC::ARMAssembler::linkJump): |
| (JSC::ARMAssembler::linkCall): |
| (JSC::ARMAssembler::getRelocatedAddress): |
| (JSC::ARMAssembler::getDifferenceBetweenLabels): |
| (JSC::ARMAssembler::getCallReturnOffset): |
| * assembler/ARMv7Assembler.h: |
| (JSC::ARMv7Assembler::b): |
| (JSC::ARMv7Assembler::blx): |
| (JSC::ARMv7Assembler::bx): |
| (JSC::ARMv7Assembler::label): |
| (JSC::ARMv7Assembler::align): |
| (JSC::ARMv7Assembler::getRelocatedAddress): |
| (JSC::ARMv7Assembler::getDifferenceBetweenLabels): |
| (JSC::ARMv7Assembler::getCallReturnOffset): |
| (JSC::ARMv7Assembler::linkJump): |
| (JSC::ARMv7Assembler::linkCall): |
| (JSC::ARMv7Assembler::linkPointer): |
| * assembler/AbstractMacroAssembler.h: |
| (JSC::AbstractMacroAssembler::Label::isSet): |
| (JSC::AbstractMacroAssembler::Call::Call): |
| (JSC::AbstractMacroAssembler::Jump::Jump): |
| (JSC::AbstractMacroAssembler::Jump::link): |
| (JSC::AbstractMacroAssembler::Jump::linkTo): |
| (JSC::AbstractMacroAssembler::linkPointer): |
| (JSC::AbstractMacroAssembler::getLinkerAddress): |
| * assembler/AssemblerBuffer.h: |
| (JSC::AssemblerLabel::AssemblerLabel): |
| (JSC::AssemblerLabel::isSet): |
| * assembler/LinkBuffer.h: |
| (JSC::LinkBuffer::patch): |
| * assembler/MIPSAssembler.h: |
| (JSC::MIPSAssembler::label): |
| (JSC::MIPSAssembler::align): |
| (JSC::MIPSAssembler::getRelocatedAddress): |
| (JSC::MIPSAssembler::getDifferenceBetweenLabels): |
| (JSC::MIPSAssembler::getCallReturnOffset): |
| (JSC::MIPSAssembler::linkJump): |
| (JSC::MIPSAssembler::linkCall): |
| (JSC::MIPSAssembler::linkPointer): |
| * assembler/MacroAssemblerARMv7.h: |
| (JSC::MacroAssemblerARMv7::branchDouble): |
| (JSC::MacroAssemblerARMv7::branchDoubleZeroOrNaN): |
| (JSC::MacroAssemblerARMv7::jump): |
| (JSC::MacroAssemblerARMv7::nearCall): |
| (JSC::MacroAssemblerARMv7::call): |
| (JSC::MacroAssemblerARMv7::ret): |
| (JSC::MacroAssemblerARMv7::tailRecursiveCall): |
| (JSC::MacroAssemblerARMv7::makeBranch): |
| * assembler/MacroAssemblerMIPS.h: |
| (JSC::MacroAssemblerMIPS::nearCall): |
| (JSC::MacroAssemblerMIPS::call): |
| (JSC::MacroAssemblerMIPS::tailRecursiveCall): |
| (JSC::MacroAssemblerMIPS::branchTrue): |
| (JSC::MacroAssemblerMIPS::branchFalse): |
| (JSC::MacroAssemblerMIPS::branchEqual): |
| (JSC::MacroAssemblerMIPS::branchNotEqual): |
| * assembler/SH4Assembler.h: |
| (JSC::SH4Assembler::call): |
| (JSC::SH4Assembler::jmp): |
| (JSC::SH4Assembler::jne): |
| (JSC::SH4Assembler::je): |
| (JSC::SH4Assembler::label): |
| (JSC::SH4Assembler::align): |
| (JSC::SH4Assembler::linkJump): |
| (JSC::SH4Assembler::linkCall): |
| (JSC::SH4Assembler::linkPointer): |
| (JSC::SH4Assembler::getCallReturnOffset): |
| (JSC::SH4Assembler::getRelocatedAddress): |
| (JSC::SH4Assembler::getDifferenceBetweenLabels): |
| (JSC::SH4Assembler::patchPointer): |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::call): |
| (JSC::X86Assembler::jmp): |
| (JSC::X86Assembler::jmp_r): |
| (JSC::X86Assembler::jne): |
| (JSC::X86Assembler::jnz): |
| (JSC::X86Assembler::je): |
| (JSC::X86Assembler::jz): |
| (JSC::X86Assembler::jl): |
| (JSC::X86Assembler::jb): |
| (JSC::X86Assembler::jle): |
| (JSC::X86Assembler::jbe): |
| (JSC::X86Assembler::jge): |
| (JSC::X86Assembler::jg): |
| (JSC::X86Assembler::ja): |
| (JSC::X86Assembler::jae): |
| (JSC::X86Assembler::jo): |
| (JSC::X86Assembler::jp): |
| (JSC::X86Assembler::js): |
| (JSC::X86Assembler::jCC): |
| (JSC::X86Assembler::label): |
| (JSC::X86Assembler::labelFor): |
| (JSC::X86Assembler::align): |
| (JSC::X86Assembler::linkJump): |
| (JSC::X86Assembler::linkCall): |
| (JSC::X86Assembler::linkPointer): |
| (JSC::X86Assembler::getCallReturnOffset): |
| (JSC::X86Assembler::getRelocatedAddress): |
| (JSC::X86Assembler::getDifferenceBetweenLabels): |
| (JSC::X86Assembler::rewindToLabel): |
| (JSC::X86Assembler::X86InstructionFormatter::immediateRel32): |
| (JSC::X86Assembler::X86InstructionFormatter::rewindToLabel): |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompileMainPass): |
| * jit/JIT.h: |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::atJumpTarget): |
| (JSC::JIT::emitGetVirtualRegister): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_jmp): |
| (JSC::JIT::emit_op_jfalse): |
| (JSC::JIT::emit_op_jeq_null): |
| (JSC::JIT::emit_op_jneq_null): |
| (JSC::JIT::emit_op_jneq_ptr): |
| (JSC::JIT::emit_op_jsr): |
| (JSC::JIT::emit_op_jtrue): |
| (JSC::JIT::emit_op_jmp_scopes): |
| |
| 2011-05-01 Chao-ying Fu <fu@mips.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Fix MIPS build due to the split of "Condition" enum |
| https://bugs.webkit.org/show_bug.cgi?id=59407 |
| |
| * assembler/MIPSAssembler.h: |
| (JSC::MIPSAssembler::debugOffset): |
| * assembler/MacroAssemblerMIPS.h: |
| (JSC::MacroAssemblerMIPS::branch32): |
| (JSC::MacroAssemblerMIPS::compare32): |
| |
| 2011-04-30 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Adam Barth. |
| |
| Enable strict OwnPtr for GTK |
| https://bugs.webkit.org/show_bug.cgi?id=59861 |
| |
| * wtf/OwnPtr.h: |
| |
| 2011-04-30 Gavin Barraclough <barraclough@apple.com> |
| |
| ARMv7 build fix. |
| |
| * assembler/AssemblerBufferWithConstantPool.h: |
| |
| 2011-04-30 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Bug 59869 - AssemblerBuffer cleanup - disambiguate size() |
| |
| The method size() is called on the AssemblerBuffer both to acquire |
| the complete size of the code, and to get a position to use as a |
| label into the code. Instead, add an explicit 'label' method. |
| |
| * assembler/ARMAssembler.cpp: |
| (JSC::ARMAssembler::executableCopy): |
| * assembler/ARMAssembler.h: |
| (JSC::ARMAssembler::blx): |
| (JSC::ARMAssembler::codeSize): |
| (JSC::ARMAssembler::label): |
| (JSC::ARMAssembler::loadBranchTarget): |
| * assembler/ARMv7Assembler.h: |
| (JSC::ARMv7Assembler::b): |
| (JSC::ARMv7Assembler::blx): |
| (JSC::ARMv7Assembler::bx): |
| (JSC::ARMv7Assembler::label): |
| (JSC::ARMv7Assembler::codeSize): |
| (JSC::ARMv7Assembler::ARMInstructionFormatter::codeSize): |
| (JSC::ARMv7Assembler::ARMInstructionFormatter::data): |
| * assembler/AbstractMacroAssembler.h: |
| * assembler/AssemblerBuffer.h: |
| (JSC::AssemblerBuffer::codeSize): |
| (JSC::AssemblerBuffer::label): |
| * assembler/AssemblerBufferWithConstantPool.h: |
| * assembler/LinkBuffer.h: |
| (JSC::LinkBuffer::LinkBuffer): |
| (JSC::LinkBuffer::linkCode): |
| * assembler/MIPSAssembler.h: |
| (JSC::MIPSAssembler::newJmpSrc): |
| (JSC::MIPSAssembler::appendJump): |
| (JSC::MIPSAssembler::label): |
| (JSC::MIPSAssembler::codeSize): |
| (JSC::MIPSAssembler::relocateJumps): |
| * assembler/SH4Assembler.h: |
| (JSC::SH4Assembler::loadConstant): |
| (JSC::SH4Assembler::loadConstantUnReusable): |
| (JSC::SH4Assembler::call): |
| (JSC::SH4Assembler::jmp): |
| (JSC::SH4Assembler::jne): |
| (JSC::SH4Assembler::je): |
| (JSC::SH4Assembler::label): |
| (JSC::SH4Assembler::executableCopy): |
| (JSC::SH4Assembler::oneShortOp): |
| (JSC::SH4Assembler::codeSize): |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::call): |
| (JSC::X86Assembler::jmp_r): |
| (JSC::X86Assembler::codeSize): |
| (JSC::X86Assembler::label): |
| (JSC::X86Assembler::executableCopy): |
| (JSC::X86Assembler::X86InstructionFormatter::immediateRel32): |
| (JSC::X86Assembler::X86InstructionFormatter::codeSize): |
| (JSC::X86Assembler::X86InstructionFormatter::label): |
| (JSC::X86Assembler::X86InstructionFormatter::executableCopy): |
| * dfg/DFGJITCompiler.cpp: |
| (JSC::DFG::JITCompiler::compileFunction): |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompile): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| * jit/JITOpcodes32_64.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| * yarr/YarrJIT.cpp: |
| (JSC::Yarr::YarrGenerator::compile): |
| |
| 2011-04-29 Adam Barth <abarth@webkit.org> |
| |
| Attempt to fix the Windows build. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2011-04-29 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| CSP script-src should block eval |
| https://bugs.webkit.org/show_bug.cgi?id=59850 |
| |
| ggaren recommend a different approach to this patch, essentially |
| installing a new function for function-eval and changing the AST |
| representation of operator-eval to call function-eval. However, I'm |
| not sure that approach is workable because the ASTBuilder doesn't know |
| about global objects, and there is added complication due to the cache. |
| |
| This approach is more dynamic, adding a branch in EvalExecutable to |
| detect whether eval is current disabled in the lexical scope. The spec |
| is slightly unclear about whether we should return undefined or throw |
| an exception. I've asked Brandon to clarify the spec, but throwing an |
| exception seems natural. |
| |
| * JavaScriptCore.exp: |
| * runtime/Executable.cpp: |
| (JSC::EvalExecutable::compileInternal): |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::disableEval): |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::JSGlobalObject): |
| (JSC::JSGlobalObject::isEvalEnabled): |
| |
| 2011-04-29 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=59847 |
| Remove linkOffset from LinkBuffer |
| |
| This is redundant since removal of recompilation for exception info. |
| |
| * assembler/LinkBuffer.h: |
| (JSC::LinkBuffer::LinkBuffer): |
| (JSC::LinkBuffer::linkCode): |
| * dfg/DFGJITCompiler.cpp: |
| (JSC::DFG::JITCompiler::compileFunction): |
| * jit/JIT.cpp: |
| (JSC::JIT::JIT): |
| (JSC::JIT::privateCompile): |
| * jit/JIT.h: |
| (JSC::JIT::compile): |
| (JSC::JIT::compileCTIMachineTrampolines): |
| (JSC::JIT::compileCTINativeCall): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| * jit/JITOpcodes32_64.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| (JSC::JIT::privateCompileCTINativeCall): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::stringGetByValStubGenerator): |
| (JSC::JIT::privateCompilePutByIdTransition): |
| (JSC::JIT::privateCompilePatchGetArrayLength): |
| (JSC::JIT::privateCompileGetByIdProto): |
| (JSC::JIT::privateCompileGetByIdSelfList): |
| (JSC::JIT::privateCompileGetByIdProtoList): |
| (JSC::JIT::privateCompileGetByIdChainList): |
| (JSC::JIT::privateCompileGetByIdChain): |
| * jit/JITPropertyAccess32_64.cpp: |
| (JSC::JIT::stringGetByValStubGenerator): |
| (JSC::JIT::privateCompilePutByIdTransition): |
| (JSC::JIT::privateCompilePatchGetArrayLength): |
| (JSC::JIT::privateCompileGetByIdProto): |
| (JSC::JIT::privateCompileGetByIdSelfList): |
| (JSC::JIT::privateCompileGetByIdProtoList): |
| (JSC::JIT::privateCompileGetByIdChainList): |
| (JSC::JIT::privateCompileGetByIdChain): |
| * jit/SpecializedThunkJIT.h: |
| (JSC::SpecializedThunkJIT::finalize): |
| * yarr/YarrJIT.cpp: |
| (JSC::Yarr::YarrGenerator::compile): |
| |
| 2011-04-29 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt & Geoff Garen. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=59221 |
| [RegexFuzz] Regression blocking testing |
| |
| Okay, so the bug here is that when, in the case of a TypeParentheticalAssertion |
| node, emitDisjunction recursively calls to itself to emit the nested disjunction |
| the value of parenthesesInputCountAlreadyChecked is bogus (doesn't take into |
| account the uncheck that has just taken place). |
| |
| Also, the special handling given to countToCheck in the case of parenthetical |
| assertions is nonsense, delete it, along with the isParentheticalAssertion argument. |
| |
| * yarr/YarrInterpreter.cpp: |
| (JSC::Yarr::ByteCompiler::emitDisjunction): |
| |
| 2011-04-29 Csaba Osztrogonác <ossy@webkit.org> |
| |
| Reviewed by Adam Barth. |
| |
| Enable strict OwnPtr for Qt |
| https://bugs.webkit.org/show_bug.cgi?id=59667 |
| |
| * wtf/OwnPtr.h: |
| |
| 2011-04-29 Dean Jackson <dino@apple.com> |
| |
| Reviewed by Simon Fraser. |
| |
| Add ENABLE macro for WebKitAnimation |
| https://bugs.webkit.org/show_bug.cgi?id=59729 |
| |
| Add new feature to toggle WebKit Animation API. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2011-04-28 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Mark Rowe. |
| |
| Install testapi.js along side testapi |
| https://bugs.webkit.org/show_bug.cgi?id=59773 |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| Add new build phase to copy testapi.js to install path of testapi |
| on install. |
| |
| 2011-04-28 David Levin <levin@chromium.org> |
| |
| Reviewed by Adam Barth. |
| |
| Remove IMAGE_RESIZER related code. |
| https://bugs.webkit.org/show_bug.cgi?id=59735 |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2011-04-28 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=59763 |
| DFG JIT - Unify FPRReg & FPRegisterID |
| |
| (Following on from GPRReg/RegisterID unification). |
| |
| * dfg/DFGFPRInfo.h: |
| (JSC::DFG::FPRInfo::toRegister): |
| (JSC::DFG::FPRInfo::debugName): |
| * dfg/DFGGPRInfo.h: |
| * dfg/DFGJITCodeGenerator.cpp: |
| (JSC::DFG::JITCodeGenerator::fillDouble): |
| (JSC::DFG::JITCodeGenerator::checkConsistency): |
| * dfg/DFGJITCodeGenerator.h: |
| (JSC::DFG::JITCodeGenerator::boxDouble): |
| (JSC::DFG::JITCodeGenerator::unboxDouble): |
| (JSC::DFG::JITCodeGenerator::flushRegisters): |
| (JSC::DFG::JITCodeGenerator::isFlushed): |
| (JSC::DFG::JITCodeGenerator::setupTwoStubArgs): |
| (JSC::DFG::JITCodeGenerator::setupStubArguments): |
| (JSC::DFG::JITCodeGenerator::callOperation): |
| (JSC::DFG::GPRResult::lockedResult): |
| (JSC::DFG::FPRResult::lockedResult): |
| * dfg/DFGJITCompiler.cpp: |
| (JSC::DFG::JITCompiler::fillNumericToDouble): |
| (JSC::DFG::JITCompiler::jumpFromSpeculativeToNonSpeculative): |
| (JSC::DFG::JITCompiler::compileFunction): |
| * dfg/DFGJITCompiler.h: |
| * dfg/DFGNode.h: |
| * dfg/DFGNonSpeculativeJIT.cpp: |
| (JSC::DFG::EntryLocation::EntryLocation): |
| (JSC::DFG::NonSpeculativeJIT::valueToNumber): |
| (JSC::DFG::NonSpeculativeJIT::valueToInt32): |
| (JSC::DFG::NonSpeculativeJIT::numberToInt32): |
| (JSC::DFG::NonSpeculativeJIT::compile): |
| * dfg/DFGNonSpeculativeJIT.h: |
| (JSC::DFG::NonSpeculativeJIT::silentSpillAllRegisters): |
| (JSC::DFG::NonSpeculativeJIT::silentFillAllRegisters): |
| * dfg/DFGRegisterBank.h: |
| (JSC::DFG::RegisterBank::iterator::regID): |
| (JSC::DFG::RegisterBank::iterator::debugName): |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculationCheck::SpeculationCheck): |
| (JSC::DFG::SpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.h: |
| |
| 2011-04-28 David Kilzer <ddkilzer@apple.com> |
| |
| Revert "<http://webkit.org/b/59705> WTF::postTimer() leaks a CFRunLoopTimerRef every time it's called" |
| |
| This reverts commit r85195. It was crashing DumpRenderTree on Lion. |
| |
| * wtf/mac/MainThreadMac.mm: |
| (WTF::postTimer): |
| |
| 2011-04-28 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Remove WML |
| https://bugs.webkit.org/show_bug.cgi?id=59678 |
| |
| Remove the WML configuration option from the Mac build system. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2011-04-28 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r85233 and r85235. |
| http://trac.webkit.org/changeset/85233 |
| http://trac.webkit.org/changeset/85235 |
| https://bugs.webkit.org/show_bug.cgi?id=59754 |
| |
| Causes issues with jsc. (Requested by dave_levin on #webkit). |
| |
| * GNUmakefile.list.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * jit/ExecutableAllocator.h: |
| (JSC::ExecutablePool::ExecutablePool): |
| * parser/SourceProvider.h: |
| (JSC::SourceProvider::SourceProvider): |
| * runtime/RegExp.cpp: |
| (JSC::RegExp::RegExp): |
| * wtf/CMakeLists.txt: |
| * wtf/RefCounted.h: |
| (WTF::RefCountedBase::ref): |
| (WTF::RefCountedBase::hasOneRef): |
| (WTF::RefCountedBase::refCount): |
| (WTF::RefCountedBase::derefBase): |
| * wtf/SizeLimits.cpp: |
| * wtf/ThreadRestrictionVerifier.h: Removed. |
| * wtf/text/CString.h: |
| (WTF::CStringBuffer::CStringBuffer): |
| |
| 2011-04-28 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Bug 59740 - DFG JIT - Unify GPRReg & RegisterID |
| |
| Currently we use a mix of enum values throughout the DFG JIT to represent |
| gpr registers - the RegisterID provided by the MacroAssembler, and the |
| GPRReg enum giving the sequential register set over which the RegisterBank |
| allocates. Unify the two. |
| |
| Patch to unify FPRReg in a similar fashion will follow. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * dfg/DFGFPRInfo.h: Added. |
| (JSC::DFG::next): |
| (JSC::DFG::FPRBankInfo::toRegister): |
| (JSC::DFG::FPRBankInfo::toIndex): |
| * dfg/DFGGPRInfo.h: Added. |
| (JSC::DFG::GPRInfo::toRegister): |
| (JSC::DFG::GPRInfo::toIndex): |
| (JSC::DFG::GPRInfo::debugName): |
| * dfg/DFGJITCodeGenerator.cpp: |
| (JSC::DFG::JITCodeGenerator::fillInteger): |
| (JSC::DFG::JITCodeGenerator::fillDouble): |
| (JSC::DFG::JITCodeGenerator::fillJSValue): |
| (JSC::DFG::JITCodeGenerator::dump): |
| (JSC::DFG::JITCodeGenerator::checkConsistency): |
| (JSC::DFG::GPRTemporary::GPRTemporary): |
| (JSC::DFG::FPRTemporary::FPRTemporary): |
| * dfg/DFGJITCodeGenerator.h: |
| (JSC::DFG::JITCodeGenerator::boxDouble): |
| (JSC::DFG::JITCodeGenerator::unboxDouble): |
| (JSC::DFG::JITCodeGenerator::spill): |
| (JSC::DFG::JITCodeGenerator::flushRegisters): |
| (JSC::DFG::JITCodeGenerator::isFlushed): |
| (JSC::DFG::JITCodeGenerator::bitOp): |
| (JSC::DFG::JITCodeGenerator::shiftOp): |
| (JSC::DFG::JITCodeGenerator::setupTwoStubArgs): |
| (JSC::DFG::JITCodeGenerator::setupStubArguments): |
| (JSC::DFG::JITCodeGenerator::callOperation): |
| (JSC::DFG::IntegerOperand::gpr): |
| (JSC::DFG::DoubleOperand::gpr): |
| (JSC::DFG::GPRTemporary::gpr): |
| (JSC::DFG::FPRTemporary::gpr): |
| (JSC::DFG::GPRResult::lockedResult): |
| * dfg/DFGJITCompiler.cpp: |
| (JSC::DFG::JITCompiler::fillNumericToDouble): |
| (JSC::DFG::JITCompiler::fillInt32ToInteger): |
| (JSC::DFG::JITCompiler::fillToJS): |
| (JSC::DFG::JITCompiler::jumpFromSpeculativeToNonSpeculative): |
| (JSC::DFG::JITCompiler::compileFunction): |
| (JSC::DFG::JITCompiler::jitAssertIsInt32): |
| (JSC::DFG::JITCompiler::jitAssertIsJSInt32): |
| (JSC::DFG::JITCompiler::jitAssertIsJSNumber): |
| (JSC::DFG::JITCompiler::jitAssertIsJSDouble): |
| * dfg/DFGJITCompiler.h: |
| (JSC::DFG::JITCompiler::preserveReturnAddressAfterCall): |
| (JSC::DFG::JITCompiler::restoreReturnAddressBeforeReturn): |
| (JSC::DFG::JITCompiler::emitGetFromCallFrameHeaderPtr): |
| (JSC::DFG::JITCompiler::emitPutToCallFrameHeader): |
| (JSC::DFG::JITCompiler::emitPutImmediateToCallFrameHeader): |
| (JSC::DFG::JITCompiler::addressForGlobalVar): |
| (JSC::DFG::JITCompiler::addressFor): |
| (JSC::DFG::JITCompiler::tagFor): |
| (JSC::DFG::JITCompiler::payloadFor): |
| * dfg/DFGNonSpeculativeJIT.cpp: |
| (JSC::DFG::EntryLocation::EntryLocation): |
| (JSC::DFG::NonSpeculativeJIT::valueToNumber): |
| (JSC::DFG::NonSpeculativeJIT::valueToInt32): |
| (JSC::DFG::NonSpeculativeJIT::numberToInt32): |
| (JSC::DFG::NonSpeculativeJIT::compile): |
| * dfg/DFGNonSpeculativeJIT.h: |
| (JSC::DFG::NonSpeculativeJIT::silentSpillGPR): |
| (JSC::DFG::NonSpeculativeJIT::silentSpillFPR): |
| (JSC::DFG::NonSpeculativeJIT::silentFillGPR): |
| (JSC::DFG::NonSpeculativeJIT::silentFillFPR): |
| (JSC::DFG::NonSpeculativeJIT::silentSpillAllRegisters): |
| (JSC::DFG::NonSpeculativeJIT::silentFillAllRegisters): |
| * dfg/DFGRegisterBank.h: |
| (JSC::DFG::RegisterBank::allocate): |
| (JSC::DFG::RegisterBank::retain): |
| (JSC::DFG::RegisterBank::release): |
| (JSC::DFG::RegisterBank::lock): |
| (JSC::DFG::RegisterBank::unlock): |
| (JSC::DFG::RegisterBank::isLocked): |
| (JSC::DFG::RegisterBank::name): |
| (JSC::DFG::RegisterBank::iterator::name): |
| (JSC::DFG::RegisterBank::iterator::isLocked): |
| (JSC::DFG::RegisterBank::iterator::release): |
| (JSC::DFG::RegisterBank::iterator::gpr): |
| (JSC::DFG::RegisterBank::iterator::debugName): |
| (JSC::DFG::RegisterBank::iterator::operator++): |
| (JSC::DFG::RegisterBank::iterator::operator!=): |
| (JSC::DFG::RegisterBank::iterator::index): |
| (JSC::DFG::RegisterBank::iterator::iterator): |
| (JSC::DFG::RegisterBank::begin): |
| (JSC::DFG::RegisterBank::end): |
| (JSC::DFG::RegisterBank::isLockedAtIndex): |
| (JSC::DFG::RegisterBank::nameAtIndex): |
| (JSC::DFG::RegisterBank::releaseAtIndex): |
| (JSC::DFG::RegisterBank::allocateInternal): |
| (JSC::DFG::RegisterBank::MapEntry::MapEntry): |
| * dfg/DFGScoreBoard.h: |
| (JSC::DFG::ScoreBoard::~ScoreBoard): |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal): |
| (JSC::DFG::SpeculationCheck::SpeculationCheck): |
| (JSC::DFG::SpeculativeJIT::fillSpeculateCell): |
| (JSC::DFG::SpeculativeJIT::compilePeepHoleBranch): |
| (JSC::DFG::SpeculativeJIT::compile): |
| (JSC::DFG::SpeculativeJIT::checkArgumentTypes): |
| (JSC::DFG::SpeculativeJIT::initializeVariableTypes): |
| * dfg/DFGSpeculativeJIT.h: |
| (JSC::DFG::SpeculateIntegerOperand::gpr): |
| |
| 2011-04-28 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Remove evil addressOfStructure() function |
| https://bugs.webkit.org/show_bug.cgi?id=59739 |
| |
| Remove the addressOfStructure function from JSCell, and update |
| callsites to use the same logic as testPrototype() |
| |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::privateCompileGetByIdProto): |
| (JSC::JIT::privateCompileGetByIdProtoList): |
| * jit/JITPropertyAccess32_64.cpp: |
| (JSC::JIT::privateCompileGetByIdProto): |
| (JSC::JIT::privateCompileGetByIdProtoList): |
| * runtime/JSCell.h: |
| |
| 2011-04-28 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Clean up testPrototype() |
| https://bugs.webkit.org/show_bug.cgi?id=59734 |
| |
| Remove direct pointer to the inside of a GC object and just do |
| the indirect load manually. Doesn't effect sunspider but does |
| clean up the code quite a bit, and simplifies the handling of |
| GC values. |
| |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::testPrototype): |
| |
| 2011-04-28 David Levin <levin@chromium.org> |
| |
| Build fix. |
| |
| * wtf/RefCounted.h: Fix inverted ifdef. |
| |
| 2011-04-07 David Levin <levin@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 |
| |
| * GNUmakefile.list.am: Added new files to the build. |
| * JavaScriptCore.gypi: Ditto. |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto. |
| * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. |
| * jit/ExecutableAllocator.h: |
| (JSC::ExecutablePool::ExecutablePool): Turned off checks for this |
| due to not being able to figure out what was guarding it (bug 58091). |
| * parser/SourceProvider.h: |
| (JSC::SourceProvider::SourceProvider): Ditto. |
| * runtime/RegExp.cpp: |
| (JSC::RegExp::RegExp): Ditto. |
| * wtf/CMakeLists.txt: Added new files to the build. |
| * wtf/ThreadRestrictionVerifier.h: Added. |
| Everything is done in the header to avoid the issue with exports |
| that are only useful in debug but still needing to export them. |
| * wtf/RefCounted.h: |
| (WTF::RefCountedBase::ref): Added checks using the non thread safe verifier. |
| and filed bug 58171 about making it stricter. |
| (WTF::RefCountedBase::hasOneRef): Ditto. |
| (WTF::RefCountedBase::refCount): Ditto. |
| (WTF::RefCountedBase::setMutexForVerifier): Expose a way to change the checks to be based |
| on a mutex. This is in the header to avoid adding more exports from JavaScriptCore. |
| (WTF::RefCountedBase::deprecatedTurnOffVerifier): Temporary way to turn off verification. |
| Filed bug 58174 to remove this method. |
| (WTF::RefCountedBase::derefBase): |
| * wtf/SizeLimits.cpp: Adjusted the debug size check for RefCounted. |
| * wtf/text/CString.h: |
| (WTF::CStringBuffer::CStringBuffer): Turned off checks for this while a fix is being |
| done in Chromium's test_shell (bug 58093). |
| |
| 2011-04-28 Xan Lopez <xlopez@igalia.com> |
| |
| Unreviewed attempt to fix the build. |
| |
| * GNUmakefile.am: add -lpthread. |
| |
| 2011-04-28 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Only need a single implementation of testPrototype |
| https://bugs.webkit.org/show_bug.cgi?id=59724 |
| |
| Remove excess copy of identical testPrototype() code |
| |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::testPrototype): |
| * jit/JITPropertyAccess32_64.cpp: |
| |
| 2011-04-28 Xan Lopez <xlopez@igalia.com> |
| |
| Reviewed by Martin Robinson. |
| |
| [Gtk] Split JSC and WebCore builds |
| https://bugs.webkit.org/show_bug.cgi?id=19428 |
| |
| Build JavaScriptCore as a libtool shared library instead of a |
| private convenience library. |
| |
| * GNUmakefile.am: define new jsc library and adapt to new name for |
| javascriptcore target. |
| * GNUmakefile.list.am: ditto. |
| |
| 2011-04-28 David Kilzer <ddkilzer@apple.com> |
| |
| <http://webkit.org/b/59705> WTF::postTimer() leaks a CFRunLoopTimerRef every time it's called |
| |
| Reviewed by Simon Fraser. |
| |
| * wtf/mac/MainThreadMac.mm: |
| (WTF::postTimer): Use RetainPtr to plug the leak. |
| |
| 2011-04-27 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by David Kilzer. |
| |
| Add way to install testapi in production builds |
| https://bugs.webkit.org/show_bug.cgi?id=59674 |
| |
| * Configurations/TestAPI.xcconfig: Copied from Configurations/JavaScriptCore.xcconfig. |
| Add configuration file for TestAPI. In addition to name, we now specify an install path |
| and allow SKIP_INSTALL to be overridden by setting FORCE_TOOL_INSTALL. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| Remove in-project build settings and add missing configuration files. Added missing CompilerVersion.xcconfig |
| file. |
| |
| 2011-04-27 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by David Levin. |
| |
| Enable strict OwnPtrs for Chromium |
| https://bugs.webkit.org/show_bug.cgi?id=59666 |
| |
| * wtf/OwnPtr.h: |
| |
| 2011-04-27 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Add ability to remove keys from weakmap API |
| https://bugs.webkit.org/show_bug.cgi?id=59645 |
| |
| Add JSWeakObjectMapRemove API |
| |
| * API/JSWeakObjectMapRefPrivate.cpp: |
| * API/JSWeakObjectMapRefPrivate.h: |
| * JavaScriptCore.exp: |
| |
| 2011-04-27 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by David Levin. |
| |
| Enable strict mode for OwnPtr |
| https://bugs.webkit.org/show_bug.cgi?id=59428 |
| |
| This patch enables strict mode for OwnPtr on PLATFORM(MAC) only. |
| |
| * wtf/OwnPtr.h: |
| |
| 2011-04-27 Steve Block <steveblock@google.com> |
| |
| Reviewed by David Levin. |
| |
| Remove Android build system |
| https://bugs.webkit.org/show_bug.cgi?id=48111 |
| |
| This is to avoid the maintenance burden until the Android port is |
| fully upstreamed. |
| |
| * Android.mk: Removed. |
| * Android.v8.wtf.mk: Removed. |
| |
| 2011-04-27 Mark Rowe <mrowe@apple.com> |
| |
| Fix 32-bit build after r85036. |
| |
| * wtf/Platform.h: USE(PLUGIN_HOST_PROCESS) is only true for 64-bit. |
| |
| 2011-04-27 Csaba Osztrogonác <ossy@webkit.org> |
| |
| Unreviewed buildfix after r85036. |
| |
| Readd non-dead code. |
| |
| * wtf/OSAllocatorPosix.cpp: |
| (WTF::OSAllocator::reserveAndCommit): |
| |
| 2011-04-27 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Kenneth Russell. |
| |
| OwnPtr assignment operator should be private |
| https://bugs.webkit.org/show_bug.cgi?id=59487 |
| |
| Unfortunately we can't remove the copy constructor because of some |
| detail about gcc. (The issue is documented in a comment already.) |
| |
| * wtf/OwnPtr.h: |
| |
| 2011-04-26 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r84977. |
| http://trac.webkit.org/changeset/84977 |
| https://bugs.webkit.org/show_bug.cgi?id=59568 |
| |
| caused crashes on the SL WK2 bots (Requested by jessieberlin |
| on #webkit). |
| |
| * assembler/MacroAssemblerX86_64.h: |
| (JSC::MacroAssemblerX86_64::call): |
| (JSC::MacroAssemblerX86_64::tailRecursiveCall): |
| (JSC::MacroAssemblerX86_64::makeTailRecursiveCall): |
| |
| 2011-04-26 Kevin Ollivier <kevino@theolliviers.com> |
| |
| Rubberstamped by Eric Seidel. |
| |
| Enable waf to be used to build other ports |
| https://bugs.webkit.org/show_bug.cgi?id=58213 |
| |
| * wscript: |
| |
| 2011-04-26 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by David Hyatt. |
| |
| Remove Datagrid from the tree |
| https://bugs.webkit.org/show_bug.cgi?id=59543 |
| |
| * Configurations/FeatureDefines.xcconfig: |
| Remove feature. |
| |
| 2011-04-26 Adrienne Walker <enne@google.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Fix incorrect use of OwnPtr<T*> in GCActivityCallback |
| https://bugs.webkit.org/show_bug.cgi?id=59559 |
| |
| * runtime/GCActivityCallback.h: |
| |
| 2011-04-26 Xan Lopez <xlopez@igalia.com> |
| |
| Reviewed by Daniel Bates. |
| |
| Unused but set variable warning in MacroAssembelX86_64 |
| https://bugs.webkit.org/show_bug.cgi?id=59482 |
| |
| * assembler/MacroAssemblerX86_64.h: |
| (JSC::MacroAssemblerX86_64::call): do not declare the label |
| variable if we are not going to use it. |
| (JSC::MacroAssemblerX86_64::tailRecursiveCall): ditto. |
| (JSC::MacroAssemblerX86_64::makeTailRecursiveCall): ditto. |
| |
| 2011-04-26 Dan Bernstein <mitz@apple.com> |
| |
| Reviewed by Mark Rowe. |
| |
| Choose the compiler based on the Xcode version for Snow Leopard debug builds. |
| |
| * Configurations/Base.xcconfig: |
| * Configurations/CompilerVersion.xcconfig: Added. |
| |
| 2011-04-25 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Nixed special finalizer handling for WebCore strings |
| https://bugs.webkit.org/show_bug.cgi?id=59425 |
| |
| SunSpider reports no change. |
| |
| Not needed anymore, since weak handles have finalizers. |
| |
| * runtime/JSString.cpp: |
| (JSC::JSString::resolveRope): |
| (JSC::JSString::resolveRopeSlowCase): |
| (JSC::JSString::outOfMemory): |
| (JSC::JSString::substringFromRope): |
| (JSC::JSString::replaceCharacter): Updated for removal of union. |
| |
| * runtime/JSString.h: |
| (JSC::RopeBuilder::JSString): |
| (JSC::RopeBuilder::~JSString): |
| (JSC::RopeBuilder::appendStringInConstruct): |
| (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): No need for |
| union or special constructor anymore. |
| |
| 2011-04-26 Gabor Loki <loki@webkit.org> |
| |
| Reviewed by Csaba Osztrogonác. |
| |
| Speeding up SVG filters with multicore (SMP) support |
| https://bugs.webkit.org/show_bug.cgi?id=43903 |
| |
| Some SVG filters execute a huge number of pixel manipulations, which |
| cannot be sped up by graphics accelerators, since their algorithm is |
| too complex. Using the power of Symmetric Multi Processing (SMP) we |
| can split up a task to smaller (data independent) tasks, which can be |
| executed independently. |
| |
| The ParallelJobs framework provides a simple way for distributed |
| programming. The framework is based on WebKit's threading infrastructure, |
| Open Multi-Processing's (OpenMP) API, and libdispatch API. |
| |
| * GNUmakefile.list.am: |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * wtf/CMakeLists.txt: |
| * wtf/ParallelJobs.h: Added. |
| (WTF::ParallelJobs::ParallelJobs): |
| (WTF::ParallelJobs::numberOfJobs): |
| (WTF::ParallelJobs::parameterForJob): |
| (WTF::ParallelJobs::executeJobs): |
| * wtf/ParallelJobsGeneric.cpp: Added. |
| (WTF::ParallelEnvironment::ThreadPrivate::tryLockFor): |
| (WTF::ParallelEnvironment::ThreadPrivate::executeJob): |
| (WTF::ParallelEnvironment::ThreadPrivate::waitForFinish): |
| (WTF::ParallelEnvironment::ThreadPrivate::workerThread): |
| * wtf/ParallelJobsGeneric.h: Added. |
| (WTF::ParallelEnvironment::ParallelEnvironment): |
| (WTF::ParallelEnvironment::numberOfJobs): |
| (WTF::ParallelEnvironment::parameterForJob): |
| (WTF::ParallelEnvironment::executeJobs): |
| (WTF::ParallelEnvironment::ThreadPrivate::ThreadPrivate): |
| (WTF::ParallelEnvironment::ThreadPrivate::create): |
| * wtf/ParallelJobsLibdispatch.h: Added. |
| (WTF::ParallelEnvironment::ParallelEnvironment): |
| (WTF::ParallelEnvironment::numberOfJobs): |
| (WTF::ParallelEnvironment::parameterForJob): |
| (WTF::ParallelEnvironment::executeJobs): |
| * wtf/ParallelJobsOpenMP.h: Added. |
| (WTF::ParallelEnvironment::ParallelEnvironment): |
| (WTF::ParallelEnvironment::numberOfJobs): |
| (WTF::ParallelEnvironment::parameterForJob): |
| (WTF::ParallelEnvironment::executeJobs): |
| * wtf/Platform.h: |
| * wtf/wtf.pri: |
| |
| 2011-04-26 Mihai Parparita <mihaip@chromium.org> |
| |
| Reviewed by Adam Barth. |
| |
| Turn off make built-in implicit rules for derived sources makefile |
| https://bugs.webkit.org/show_bug.cgi?id=59418 |
| |
| We don't use any of make's built-in implicit rules, turning them off |
| speeds up parsing of the makefile. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * gyp/generate-derived-sources.sh: |
| |
| 2011-04-25 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Custom prototypes on DOM objects don't persist after garbage collection |
| https://bugs.webkit.org/show_bug.cgi?id=59412 |
| |
| SunSpider reports no change. |
| |
| The hasCustomProperties() check didn't check for a custom prototype. |
| |
| * runtime/JSObject.h: |
| (JSC::JSObject::hasCustomProperties): Changed to delegate to Structure |
| because it is the "truth" about an object's pedigree. |
| |
| * runtime/Structure.cpp: |
| (JSC::Structure::Structure): |
| * runtime/Structure.h: |
| (JSC::Structure::didTransition): Track whether a Structure has ever |
| transitioned for any reason. If so, we have to assume that the object |
| holding it is custom in some way. |
| |
| 2011-04-25 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=59405 |
| DFG JIT - add type speculation for integer & array types, for vars & args. |
| |
| If a var or argument is used as the base for a GetByVal or PutByVal access |
| we are speculating that it is of type Array (we only generate code on the |
| speculative path to perform array accesses). By typing the var or args slot |
| as Array, and checking on entry to the function (in the case of args), and |
| each time the local is written to, we can avoid a type check at each point |
| the array is accessed. This will typically hoist type checks out of loops. |
| |
| Similarly, any local that is incremented or decremented, or is the input or |
| output or a bitwise operator, is likely to be an integer. By typing the |
| local as int32 we can avoid speculation checks on access, and tagging when |
| writing to the slot. All accesses can become 32bit instead of 64. |
| |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::set): |
| (JSC::DFG::ByteCodeParser::predictArray): |
| (JSC::DFG::ByteCodeParser::predictInt32): |
| (JSC::DFG::ByteCodeParser::parseBlock): |
| * dfg/DFGGraph.h: |
| (JSC::DFG::PredictionSlot::PredictionSlot): |
| (JSC::DFG::Graph::Graph): |
| (JSC::DFG::Graph::predict): |
| (JSC::DFG::Graph::getPrediction): |
| * dfg/DFGJITCompiler.cpp: |
| (JSC::DFG::JITCompiler::compileFunction): |
| * dfg/DFGJITCompiler.h: |
| (JSC::DFG::JITCompiler::tagFor): |
| (JSC::DFG::JITCompiler::payloadFor): |
| * dfg/DFGNode.h: |
| * dfg/DFGNonSpeculativeJIT.cpp: |
| (JSC::DFG::NonSpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| (JSC::DFG::SpeculativeJIT::checkArgumentTypes): |
| (JSC::DFG::SpeculativeJIT::initializeVariableTypes): |
| * dfg/DFGSpeculativeJIT.h: |
| * runtime/Executable.cpp: |
| (JSC::tryDFGCompile): |
| |
| 2011-04-25 David Levin <levin@chromium.org> |
| |
| Reviewed by James Robinson. |
| |
| Fix OwnPtr strict mode violation in MessageQueue.h |
| https://bugs.webkit.org/show_bug.cgi?id=59400 |
| |
| * wtf/MessageQueue.h: |
| (WTF::::waitForMessage): |
| (WTF::::waitForMessageFilteredWithTimeout): |
| (WTF::::tryGetMessage): |
| |
| 2011-04-25 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| JavaScriptCore should play nice strict OwnPtrs |
| https://bugs.webkit.org/show_bug.cgi?id=59401 |
| |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::parse): |
| * heap/Heap.cpp: |
| (JSC::TypeCounter::TypeCounter): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::JITThunks): |
| * parser/JSParser.cpp: |
| (JSC::JSParser::Scope::Scope): |
| * yarr/YarrJIT.cpp: |
| (JSC::Yarr::YarrGenerator::GenerationState::addParenthesesTail): |
| |
| 2011-04-25 Mark Rowe <mrowe@apple.com> |
| |
| Build fix. |
| |
| * wtf/ListHashSet.h: |
| |
| 2011-04-25 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Bug 59370 - DFG JIT - fix leak of BlocksBlocks |
| (put the blocks immediately into an OwnPtr). |
| |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::parse): |
| |
| 2011-04-25 James Robinson <jamesr@chromium.org> |
| |
| Reviewed by David Levin. |
| |
| Fix strict OwnPtr violations in ListHashSet and RenderLayerCompositor |
| https://bugs.webkit.org/show_bug.cgi?id=59353 |
| |
| * wtf/ListHashSet.h: |
| (WTF::::ListHashSet): |
| |
| 2011-04-25 David Levin <levin@chromium.org> |
| |
| Reviewed by Adam Barth. |
| |
| Fix PassOwnPtr issues in Structure and JSGlobalData.cpp |
| https://bugs.webkit.org/show_bug.cgi?id=59347 |
| |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| * runtime/Structure.cpp: |
| (JSC::Structure::copyPropertyTable): |
| (JSC::Structure::createPropertyMap): |
| * runtime/Structure.h: |
| |
| 2011-04-25 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make ClassInfo required when creating a Structure |
| https://bugs.webkit.org/show_bug.cgi?id=59340 |
| |
| Add ClassInfo to all those types which currently don't |
| have it, and add an assertion to Structure::create to |
| ensure that the provided classInfo is not null. |
| |
| * runtime/Executable.h: |
| (JSC::EvalExecutable::createStructure): |
| (JSC::ProgramExecutable::createStructure): |
| (JSC::FunctionExecutable::createStructure): |
| * runtime/GetterSetter.cpp: |
| * runtime/GetterSetter.h: |
| (JSC::GetterSetter::createStructure): |
| * runtime/JSAPIValueWrapper.cpp: |
| * runtime/JSAPIValueWrapper.h: |
| (JSC::JSAPIValueWrapper::createStructure): |
| * runtime/JSCell.cpp: |
| * runtime/JSCell.h: |
| * runtime/JSString.cpp: |
| * runtime/JSString.h: |
| (JSC::RopeBuilder::createStructure): |
| * runtime/Structure.h: |
| (JSC::Structure::create): |
| (JSC::JSCell::createDummyStructure): |
| |
| 2011-04-25 David Levin <levin@chromium.org> |
| |
| Reviewed by Adam Barth. |
| |
| PropertyMapHashTable.h should use adoptPtr instead of implicit conversions to PassRefPtr. |
| https://bugs.webkit.org/show_bug.cgi?id=59342 |
| |
| This patch is to prepare for the strict OwnPtr hack-a-thon. |
| |
| * runtime/PropertyMapHashTable.h: |
| (JSC::PropertyTable::copy): |
| |
| 2011-04-25 Thouraya ANDOLSI <thouraya.andolsi@st.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Rationalize MacroAssembler branch methods |
| https://bugs.webkit.org/show_bug.cgi?id=58950 |
| |
| split out the 'Condition' enum into 'RelationalCondition' and 'ResultCondition' |
| and apply related changes (only for SH4 platforms). |
| |
| * assembler/MacroAssemblerSH4.cpp: |
| * assembler/MacroAssemblerSH4.h: |
| (JSC::MacroAssemblerSH4::compare32): |
| (JSC::MacroAssemblerSH4::branch32WithUnalignedHalfWords): |
| (JSC::MacroAssemblerSH4::branchDouble): |
| (JSC::MacroAssemblerSH4::branch32): |
| (JSC::MacroAssemblerSH4::branchTest8): |
| (JSC::MacroAssemblerSH4::branch8): |
| (JSC::MacroAssemblerSH4::branchTruncateDoubleToInt32): |
| (JSC::MacroAssemblerSH4::test8): |
| (JSC::MacroAssemblerSH4::branch16): |
| (JSC::MacroAssemblerSH4::branchTest32): |
| (JSC::MacroAssemblerSH4::branchAdd32): |
| (JSC::MacroAssemblerSH4::branchMul32): |
| (JSC::MacroAssemblerSH4::branchSub32): |
| (JSC::MacroAssemblerSH4::branchOr32): |
| (JSC::MacroAssemblerSH4::branchConvertDoubleToInt32): |
| (JSC::MacroAssemblerSH4::branchPtrWithPatch): |
| (JSC::MacroAssemblerSH4::SH4Condition): |
| * assembler/SH4Assembler.h: |
| (JSC::SH4Assembler::cmpEqImmR0): |
| |
| 2011-04-25 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| PropertyMapHashTable should work with strict OwnPtr |
| https://bugs.webkit.org/show_bug.cgi?id=59337 |
| |
| This patch is in preparation for the strict OwnPtr hack-a-thon. |
| |
| * runtime/PropertyMapHashTable.h: |
| (JSC::PropertyTable::PropertyTable): |
| (JSC::PropertyTable::addDeletedOffset): |
| |
| 2011-04-25 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Nixed MarkStack::deprecatedAppend, since it has no clients left. |
| |
| * heap/MarkStack.h: |
| |
| 2011-04-23 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Bug 59287 - DFG JIT - Handle temporaries as vars, allowing support for ?: |
| |
| SetLocals to temporaries will only be generated if they are used within other |
| blocks, due to the SSA based DCE. |
| |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::ByteCodeParser): |
| (JSC::DFG::ByteCodeParser::get): |
| (JSC::DFG::ByteCodeParser::set): |
| (JSC::DFG::ByteCodeParser::getLocal): |
| (JSC::DFG::ByteCodeParser::setLocal): |
| (JSC::DFG::ByteCodeParser::parseBlock): |
| (JSC::DFG::ByteCodeParser::processPhiStack): |
| (JSC::DFG::ByteCodeParser::allocateVirtualRegisters): |
| (JSC::DFG::ByteCodeParser::parse): |
| * dfg/DFGGraph.h: |
| (JSC::DFG::BasicBlock::BasicBlock): |
| |
| 2011-04-22 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig & Geoff Garen. |
| |
| Bug 59266 - DFG JIT - Add SSA style DCE |
| |
| This works by making GetLocal nodes reference SetLocal nodes from prior blocks, |
| via intermediate Phi nodes. Whenever we add a GetLocal to the graph, also add a |
| matching child Phi, and add the Phi to a work queue to add references to prior |
| definitions once we have the full CFG & can determine predecessors. This process |
| is iterative, inserting new phis into predecessors as necessary. |
| |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::getVariable): |
| (JSC::DFG::ByteCodeParser::setVariable): |
| (JSC::DFG::ByteCodeParser::getArgument): |
| (JSC::DFG::ByteCodeParser::setArgument): |
| (JSC::DFG::ByteCodeParser::parseBlock): |
| (JSC::DFG::ByteCodeParser::processWorkQueue): |
| (JSC::DFG::ByteCodeParser::allocateVirtualRegisters): |
| (JSC::DFG::ByteCodeParser::parse): |
| * dfg/DFGGraph.cpp: |
| (JSC::DFG::Graph::dump): |
| (JSC::DFG::Graph::refChildren): |
| * dfg/DFGGraph.h: |
| (JSC::DFG::Graph::ref): |
| * dfg/DFGNode.h: |
| (JSC::DFG::Node::ref): |
| * dfg/DFGNonSpeculativeJIT.cpp: |
| (JSC::DFG::NonSpeculativeJIT::compile): |
| * dfg/DFGScoreBoard.h: |
| (JSC::DFG::ScoreBoard::~ScoreBoard): |
| (JSC::DFG::ScoreBoard::dump): |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| |
| 2011-04-22 Vitaly Repeshko <vitalyr@chromium.org> |
| |
| Reviewed by Adam Barth. |
| |
| Add missing default constructors for HashMap iterator specializations. |
| https://bugs.webkit.org/show_bug.cgi?id=59250 |
| |
| * wtf/HashIterators.h: |
| * wtf/HashTable.h: |
| (WTF::HashTableConstIterator::HashTableConstIterator): Added cast |
| to help compiler find the function template. |
| |
| 2011-04-22 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bug 59262 - DFG JIT - reduce size of VariableRecord |
| |
| We never need both the get & set node, only the most recent |
| (which is always a set, if both exist). |
| |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::getVariable): |
| (JSC::DFG::ByteCodeParser::setVariable): |
| (JSC::DFG::ByteCodeParser::getArgument): |
| (JSC::DFG::ByteCodeParser::setArgument): |
| (JSC::DFG::ByteCodeParser::parseBlock): |
| * dfg/DFGGraph.h: |
| (JSC::DFG::VariableRecord::VariableRecord): |
| |
| 2011-04-22 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Bug 59254 - DFG JIT - retain VariableRecords for args/var in all basic blocks, |
| such that this information is available for DCE. Also, since this enlarges the |
| size of BasicBlock, make Graph hold a vector of pointers to basic blocks, not a |
| vector of blocks. |
| |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::ByteCodeParser): |
| (JSC::DFG::ByteCodeParser::get): |
| (JSC::DFG::ByteCodeParser::set): |
| (JSC::DFG::ByteCodeParser::getVariable): |
| (JSC::DFG::ByteCodeParser::setVariable): |
| (JSC::DFG::ByteCodeParser::getArgument): |
| (JSC::DFG::ByteCodeParser::setArgument): |
| (JSC::DFG::ByteCodeParser::parseBlock): |
| (JSC::DFG::ByteCodeParser::setupPredecessors): |
| (JSC::DFG::ByteCodeParser::allocateVirtualRegisters): |
| (JSC::DFG::ByteCodeParser::parse): |
| * dfg/DFGGraph.cpp: |
| (JSC::DFG::Graph::dump): |
| * dfg/DFGGraph.h: |
| (JSC::DFG::VariableRecord::VariableRecord): |
| (JSC::DFG::BasicBlock::BasicBlock): |
| (JSC::DFG::BasicBlock::getBytecodeBegin): |
| (JSC::DFG::Graph::blockIndexForBytecodeOffset): |
| (JSC::DFG::Graph::blockForBytecodeOffset): |
| * dfg/DFGNonSpeculativeJIT.cpp: |
| (JSC::DFG::NonSpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.h: |
| (JSC::DFG::SpeculativeJIT::detectPeepHoleBranch): |
| |
| 2011-04-22 Gavin Barraclough <barraclough@apple.com> |
| |
| Errk, build fix. |
| |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| |
| 2011-04-22 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Quick cleanup to SpeculativeJIT/NonSpeculativeJIT compile loop, |
| move out the call to checkConsistency(). |
| |
| * dfg/DFGNonSpeculativeJIT.cpp: |
| (JSC::DFG::NonSpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.h: |
| (JSC::DFG::SpeculativeJIT::SpeculativeJIT): |
| (JSC::DFG::SpeculativeJIT::terminateSpeculativeExecution): |
| |
| 2011-04-21 Vitaly Repeshko <vitalyr@chromium.org> |
| |
| Reviewed by Adam Barth. |
| |
| Provide default constructors for HashMap iterators. |
| https://bugs.webkit.org/show_bug.cgi?id=59151 |
| |
| These will be used to implement an iterator over EventTarget's |
| listeners. |
| |
| * wtf/HashTable.h: |
| (WTF::HashTableConstIteratorAdapter::HashTableConstIteratorAdapter): |
| (WTF::HashTableIteratorAdapter::HashTableIteratorAdapter): |
| |
| 2011-04-22 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Bug 59232 - DFG JIT - Add predecessor links to BasicBlocks |
| |
| These will be necessary for DCE support. |
| Also factor allocateVirtualRegisters out into its own method. |
| |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::setupPredecessors): |
| (JSC::DFG::ByteCodeParser::allocateVirtualRegisters): |
| (JSC::DFG::ByteCodeParser::parse): |
| * dfg/DFGGraph.h: |
| (JSC::DFG::Graph::blockForBytecodeOffset): |
| * dfg/DFGNode.h: |
| (JSC::DFG::Node::isTerminal): |
| |
| 2011-04-22 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Object.create creates uncachable objects |
| https://bugs.webkit.org/show_bug.cgi?id=59164 |
| |
| Use the prototype object's inheritorID, as we |
| should always have done |
| |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::reset): |
| (JSC::JSGlobalObject::visitChildren): |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::nullPrototypeObjectStructure): |
| * runtime/ObjectConstructor.cpp: |
| (JSC::objectConstructorCreate): |
| |
| 2011-04-22 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bug 59222 - DFG JIT - don't allocate virtual registers to nodes with no result |
| |
| We currently allocate virtual registers to nodes which have no result - these are |
| clearly unused, and may result in us allocating a larger than necessary stack frame. |
| |
| Encapsulate Node::virtualRegister such that we can ASSERT this is only called on |
| nodes that have results, and improve the quality of output from the consistency check. |
| |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::parse): |
| * dfg/DFGGraph.cpp: |
| (JSC::DFG::Graph::dump): |
| * dfg/DFGGraph.h: |
| (JSC::DFG::Graph::ref): |
| (JSC::DFG::Graph::deref): |
| * dfg/DFGJITCodeGenerator.cpp: |
| (JSC::DFG::JITCodeGenerator::fillInteger): |
| (JSC::DFG::JITCodeGenerator::fillDouble): |
| (JSC::DFG::JITCodeGenerator::fillJSValue): |
| (JSC::DFG::JITCodeGenerator::dump): |
| (JSC::DFG::JITCodeGenerator::checkConsistency): |
| * dfg/DFGJITCodeGenerator.h: |
| (JSC::DFG::JITCodeGenerator::canReuse): |
| (JSC::DFG::JITCodeGenerator::isFilled): |
| (JSC::DFG::JITCodeGenerator::isFilledDouble): |
| (JSC::DFG::JITCodeGenerator::use): |
| (JSC::DFG::JITCodeGenerator::integerResult): |
| (JSC::DFG::JITCodeGenerator::noResult): |
| (JSC::DFG::JITCodeGenerator::cellResult): |
| (JSC::DFG::JITCodeGenerator::jsValueResult): |
| (JSC::DFG::JITCodeGenerator::doubleResult): |
| (JSC::DFG::JITCodeGenerator::initConstantInfo): |
| * dfg/DFGJITCompiler.cpp: |
| (JSC::DFG::JITCompiler::fillNumericToDouble): |
| (JSC::DFG::JITCompiler::fillInt32ToInteger): |
| (JSC::DFG::JITCompiler::fillToJS): |
| (JSC::DFG::JITCompiler::jumpFromSpeculativeToNonSpeculative): |
| * dfg/DFGNode.h: |
| (JSC::DFG::Node::Node): |
| (JSC::DFG::Node::hasResult): |
| (JSC::DFG::Node::virtualRegister): |
| (JSC::DFG::Node::setVirtualRegister): |
| (JSC::DFG::Node::refCount): |
| (JSC::DFG::Node::ref): |
| (JSC::DFG::Node::deref): |
| (JSC::DFG::Node::adjustedRefCount): |
| * dfg/DFGNonSpeculativeJIT.cpp: |
| (JSC::DFG::NonSpeculativeJIT::isKnownInteger): |
| (JSC::DFG::NonSpeculativeJIT::isKnownNumeric): |
| (JSC::DFG::NonSpeculativeJIT::compile): |
| * dfg/DFGScoreBoard.h: |
| (JSC::DFG::ScoreBoard::use): |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal): |
| (JSC::DFG::SpeculativeJIT::fillSpeculateCell): |
| (JSC::DFG::SpeculativeJIT::compile): |
| |
| 2011-04-22 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Gavin Barraclough and Oliver Hunt. |
| |
| Arrays should participate in global object forwarding fun |
| https://bugs.webkit.org/show_bug.cgi?id=59215 |
| |
| * runtime/JSGlobalObject.h: |
| (JSC::constructEmptyArray): |
| (JSC::constructArray): |
| Add variants of constructArray that take a global object. |
| |
| 2011-04-22 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r84650 and r84654. |
| http://trac.webkit.org/changeset/84650 |
| http://trac.webkit.org/changeset/84654 |
| https://bugs.webkit.org/show_bug.cgi?id=59218 |
| |
| Broke Windows build (Requested by bweinstein on #webkit). |
| |
| * API/JSCallbackObjectFunctions.h: |
| (JSC::::init): |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * heap/Handle.h: |
| (JSC::HandleBase::operator!): |
| (JSC::HandleBase::operator UnspecifiedBoolType*): |
| (JSC::HandleTypes::getFromSlot): |
| * heap/HandleHeap.cpp: |
| (JSC::HandleHeap::markStrongHandles): |
| (JSC::HandleHeap::markWeakHandles): |
| (JSC::HandleHeap::finalizeWeakHandles): |
| (JSC::HandleHeap::writeBarrier): |
| (JSC::HandleHeap::protectedGlobalObjectCount): |
| (JSC::HandleHeap::isValidWeakNode): |
| * heap/HandleHeap.h: |
| (JSC::HandleHeap::copyWeak): |
| (JSC::HandleHeap::makeWeak): |
| (JSC::HandleHeap::Node::slot): |
| * heap/HandleStack.cpp: |
| (JSC::HandleStack::mark): |
| (JSC::HandleStack::grow): |
| * heap/HandleStack.h: |
| (JSC::HandleStack::zapTo): |
| (JSC::HandleStack::push): |
| * heap/Heap.cpp: |
| (JSC::HandleHeap::protectedObjectTypeCounts): |
| * heap/Local.h: |
| (JSC::::set): |
| * heap/Strong.h: |
| (JSC::Strong::set): |
| * heap/Weak.h: |
| (JSC::Weak::set): |
| * runtime/StructureTransitionTable.h: |
| (JSC::StructureTransitionTable::singleTransition): |
| (JSC::StructureTransitionTable::setSingleTransition): |
| * runtime/WeakGCMap.h: |
| (JSC::WeakGCMap::add): |
| (JSC::WeakGCMap::set): |
| * runtime/WriteBarrier.h: |
| |
| 2011-04-22 Brian Weinstein <bweinstein@apple.com> |
| |
| Part of Windows build fix from r84650. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2011-04-22 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make it harder to use HandleSlot incorrectly |
| https://bugs.webkit.org/show_bug.cgi?id=59205 |
| |
| Just add a little type fudging to make it harder to |
| incorrectly assign through a HandleSlot. |
| |
| * API/JSCallbackObjectFunctions.h: |
| (JSC::::init): |
| * JavaScriptCore.exp: |
| * heap/Handle.h: |
| (JSC::HandleBase::operator!): |
| (JSC::HandleBase::operator UnspecifiedBoolType*): |
| (JSC::HandleTypes::getFromSlot): |
| * heap/HandleHeap.cpp: |
| (JSC::HandleHeap::markStrongHandles): |
| (JSC::HandleHeap::markWeakHandles): |
| (JSC::HandleHeap::finalizeWeakHandles): |
| (JSC::HandleHeap::writeBarrier): |
| (JSC::HandleHeap::protectedGlobalObjectCount): |
| (JSC::HandleHeap::isValidWeakNode): |
| * heap/HandleHeap.h: |
| (JSC::HandleHeap::copyWeak): |
| (JSC::HandleHeap::makeWeak): |
| (JSC::HandleHeap::Node::slot): |
| * heap/HandleStack.cpp: |
| (JSC::HandleStack::mark): |
| (JSC::HandleStack::grow): |
| * heap/HandleStack.h: |
| (JSC::HandleStack::zapTo): |
| (JSC::HandleStack::push): |
| * heap/Heap.cpp: |
| (JSC::HandleHeap::protectedObjectTypeCounts): |
| * heap/Local.h: |
| (JSC::::set): |
| * heap/Strong.h: |
| (JSC::Strong::set): |
| * heap/Weak.h: |
| (JSC::Weak::set): |
| * runtime/StructureTransitionTable.h: |
| (JSC::StructureTransitionTable::singleTransition): |
| (JSC::StructureTransitionTable::setSingleTransition): |
| * runtime/WeakGCMap.h: |
| (JSC::WeakGCMap::add): |
| (JSC::WeakGCMap::set): |
| * runtime/WriteBarrier.h: |
| (JSC::OpaqueJSValue::toJSValue): |
| (JSC::OpaqueJSValue::toJSValueRef): |
| (JSC::OpaqueJSValue::fromJSValue): |
| |
| 2011-04-22 Patrick Gansterer <paroga@webkit.org> |
| |
| Unreviewed. Build fix for ENABLE(INTERPRETER) after r84556. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::visitAggregate): |
| |
| 2011-04-21 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r84583. |
| http://trac.webkit.org/changeset/84583 |
| https://bugs.webkit.org/show_bug.cgi?id=59173 |
| |
| "broke |
| http://trac.webkit.org/export/84593/trunk/LayoutTests/fast/js |
| /Object-create.html" (Requested by ggaren on #webkit). |
| |
| * runtime/ObjectConstructor.cpp: |
| (JSC::objectConstructorCreate): |
| |
| 2011-04-21 Maciej Stachowiak <mjs@apple.com> |
| |
| Reviewed by Adam Roben. |
| |
| Add a feature define to allow <details> and <summary> to be disabled |
| https://bugs.webkit.org/show_bug.cgi?id=59118 |
| <rdar://problem/9257045> |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2011-04-21 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Object.create creates uncachable objects |
| https://bugs.webkit.org/show_bug.cgi?id=59164 |
| |
| Use the prototype object's inheritorID, as we |
| should always have done |
| |
| * runtime/ObjectConstructor.cpp: |
| (JSC::objectConstructorCreate): |
| |
| 2011-04-21 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Start moving to a general visitor pattern for GC traversal |
| https://bugs.webkit.org/show_bug.cgi?id=59141 |
| |
| This is just a rename: |
| markChildren -> visitChildren |
| markAggregate -> visitAggregate |
| markStack -> visitor |
| MarkStack -> typedef'd to SlotVisitor |
| |
| * API/JSCallbackObject.h: |
| (JSC::JSCallbackObjectData::visitChildren): |
| (JSC::JSCallbackObjectData::JSPrivatePropertyMap::visitChildren): |
| (JSC::JSCallbackObject::visitChildren): |
| * JavaScriptCore.exp: |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::visitStructures): |
| (JSC::EvalCodeCache::visitAggregate): |
| (JSC::CodeBlock::visitAggregate): |
| * bytecode/CodeBlock.h: |
| * bytecode/EvalCodeCache.h: |
| * bytecode/Instruction.h: |
| (JSC::PolymorphicAccessStructureList::visitAggregate): |
| * bytecode/StructureStubInfo.cpp: |
| (JSC::StructureStubInfo::visitAggregate): |
| * bytecode/StructureStubInfo.h: |
| * debugger/DebuggerActivation.cpp: |
| (JSC::DebuggerActivation::visitChildren): |
| * debugger/DebuggerActivation.h: |
| * heap/HandleHeap.cpp: |
| (JSC::WeakHandleOwner::isReachableFromOpaqueRoots): |
| (JSC::HandleHeap::markStrongHandles): |
| (JSC::HandleHeap::markWeakHandles): |
| * heap/HandleHeap.h: |
| * heap/HandleStack.cpp: |
| (JSC::HandleStack::mark): |
| * heap/HandleStack.h: |
| * heap/Heap.cpp: |
| (JSC::Heap::markProtectedObjects): |
| (JSC::Heap::markTempSortVectors): |
| (JSC::Heap::markRoots): |
| * heap/Heap.h: |
| * heap/MarkStack.cpp: |
| (JSC::MarkStack::visitChildren): |
| (JSC::MarkStack::drain): |
| * heap/MarkStack.h: |
| (JSC::HeapRootVisitor::HeapRootVisitor): |
| (JSC::HeapRootVisitor::mark): |
| (JSC::HeapRootVisitor::visitor): |
| * heap/MarkedSpace.h: |
| * runtime/ArgList.cpp: |
| (JSC::MarkedArgumentBuffer::markLists): |
| * runtime/ArgList.h: |
| * runtime/Arguments.cpp: |
| (JSC::Arguments::visitChildren): |
| * runtime/Arguments.h: |
| * runtime/Executable.cpp: |
| (JSC::EvalExecutable::visitChildren): |
| (JSC::ProgramExecutable::visitChildren): |
| (JSC::FunctionExecutable::visitChildren): |
| * runtime/Executable.h: |
| * runtime/GetterSetter.cpp: |
| (JSC::GetterSetter::visitChildren): |
| * runtime/GetterSetter.h: |
| (JSC::GetterSetter::createStructure): |
| * runtime/JSAPIValueWrapper.h: |
| (JSC::JSAPIValueWrapper::createStructure): |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::visitChildren): |
| * runtime/JSActivation.h: |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::visitChildren): |
| * runtime/JSArray.h: |
| (JSC::JSArray::visitDirect): |
| * runtime/JSCell.h: |
| (JSC::JSCell::JSCell::visitChildren): |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::visitChildren): |
| * runtime/JSFunction.h: |
| * runtime/JSGlobalObject.cpp: |
| (JSC::visitIfNeeded): |
| (JSC::JSGlobalObject::visitChildren): |
| * runtime/JSGlobalObject.h: |
| * runtime/JSONObject.cpp: |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::visitChildren): |
| * runtime/JSObject.h: |
| (JSC::JSObject::visitDirect): |
| * runtime/JSPropertyNameIterator.cpp: |
| (JSC::JSPropertyNameIterator::visitChildren): |
| * runtime/JSPropertyNameIterator.h: |
| (JSC::JSPropertyNameIterator::createStructure): |
| * runtime/JSStaticScopeObject.cpp: |
| (JSC::JSStaticScopeObject::visitChildren): |
| * runtime/JSStaticScopeObject.h: |
| * runtime/JSTypeInfo.h: |
| (JSC::TypeInfo::TypeInfo): |
| (JSC::TypeInfo::overridesVisitChildren): |
| * runtime/JSWrapperObject.cpp: |
| (JSC::JSWrapperObject::visitChildren): |
| * runtime/JSWrapperObject.h: |
| * runtime/JSZombie.h: |
| (JSC::JSZombie::visitChildren): |
| * runtime/NativeErrorConstructor.cpp: |
| (JSC::NativeErrorConstructor::visitChildren): |
| * runtime/NativeErrorConstructor.h: |
| * runtime/RegExpObject.cpp: |
| (JSC::RegExpObject::visitChildren): |
| * runtime/RegExpObject.h: |
| * runtime/ScopeChain.cpp: |
| (JSC::ScopeChainNode::visitChildren): |
| * runtime/ScopeChain.h: |
| * runtime/SmallStrings.cpp: |
| (JSC::SmallStrings::visitChildren): |
| * runtime/SmallStrings.h: |
| * runtime/Structure.cpp: |
| (JSC::Structure::Structure): |
| (JSC::Structure::visitChildren): |
| * runtime/Structure.h: |
| * runtime/StructureChain.cpp: |
| (JSC::StructureChain::visitChildren): |
| * runtime/StructureChain.h: |
| (JSC::StructureChain::createStructure): |
| |
| 2011-04-21 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r84548. |
| http://trac.webkit.org/changeset/84548 |
| https://bugs.webkit.org/show_bug.cgi?id=59144 |
| |
| Broke chromium-win build (Requested by aklein on #webkit). |
| |
| * wtf/Platform.h: |
| |
| 2011-04-21 Adam Klein <adamk@chromium.org> |
| |
| Reviewed by David Levin. |
| |
| [fileapi] Worker File API calls that create Blobs fail in debug builds due to random number generator thread assertion |
| https://bugs.webkit.org/show_bug.cgi?id=55728 |
| |
| Enable WTF_MULTIPLE_THREADS for Chromium. |
| |
| * wtf/Platform.h: |
| |
| 2011-04-20 Michael Saboff <msaboff@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| JSString::resolveRope inefficient for common 2 fiber case |
| https://bugs.webkit.org/show_bug.cgi?id=58994 |
| |
| Split JSString::resolveRope into three routines. |
| resolveRope allocates the new buffer and handles the 1 or 2 |
| fiber case with single level fibers. |
| resolveRopeSlowCase handles the general case. |
| outOfMemory handles the rare out of memory exception case. |
| |
| * runtime/JSString.cpp: |
| (JSC::JSString::resolveRope): |
| (JSC::JSString::resolveRopeSlowCase): |
| (JSC::JSString::outOfMemory): |
| * runtime/JSString.h: |
| |
| 2011-04-20 Adam Klein <adamk@chromium.org> |
| |
| Reviewed by David Levin. |
| |
| Rename all uses of JSC_MULTIPLE_THREADS under wtf/... to WTF_MULTIPLE_THREADS |
| https://bugs.webkit.org/show_bug.cgi?id=59040 |
| |
| This will be used to fix https://bugs.webkit.org/show_bug.cgi?id=55728 |
| by enabling WTF_MULTIPLE_THREADS for Chromium. |
| |
| * wtf/CryptographicallyRandomNumber.cpp: |
| (WTF::ARC4Stream::ARC4RandomNumberGenerator::randomNumber): |
| (WTF::ARC4Stream::ARC4RandomNumberGenerator::randomValues): |
| * wtf/FastMalloc.cpp: |
| * wtf/Platform.h: |
| Enable WTF_MULTIPLE_THREADS whenever JSC_MULTIPLE_THREADS is enabled. |
| * wtf/RandomNumber.cpp: |
| (WTF::randomNumber): |
| * wtf/RefCountedLeakCounter.cpp: |
| (WTF::RefCountedLeakCounter::increment): |
| (WTF::RefCountedLeakCounter::decrement): |
| * wtf/dtoa.cpp: |
| (WTF::pow5mult): |
| |
| 2011-04-20 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber stamped by Geoff Garen |
| |
| Bug 59069 - DFG JIT - register allocate r8, r9, r10 |
| |
| * dfg/DFGJITCompiler.h: |
| (JSC::DFG::JITCompiler::gprToRegisterID): |
| |
| 2011-04-20 Gavin Barraclough <barraclough@apple.com> |
| |
| Build fix - revert accidental change. |
| |
| * wtf/Platform.h: |
| |
| 2011-04-20 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Add SAMPLING_FLAGS tool to DFG JIT. |
| |
| * bytecode/SamplingTool.h: |
| (JSC::SamplingFlags::addressOfFlags): |
| * dfg/DFGJITCompiler.cpp: |
| (JSC::DFG::JITCompiler::setSamplingFlag): |
| (JSC::DFG::JITCompiler::clearSamplingFlag): |
| * dfg/DFGJITCompiler.h: |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::setSamplingFlag): |
| (JSC::JIT::clearSamplingFlag): |
| * wtf/Platform.h: |
| |
| 2011-04-20 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Bug 59022 - DFG JIT - Optimize branch-on-relational-compare |
| |
| If a relational compare (< or <=) is immediately followed by a branch, |
| we can combine the two, avoiding generation of a boolean into a register. |
| |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::branch32): |
| (JSC::MacroAssemblerX86Common::invert): |
| (JSC::MacroAssemblerX86Common::commute): |
| * dfg/DFGNode.h: |
| (JSC::DFG::Node::adjustedRefCount): |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compilePeepHoleBranch): |
| (JSC::DFG::SpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.h: |
| (JSC::DFG::SpeculativeJIT::isJSConstantWithInt32Value): |
| (JSC::DFG::SpeculativeJIT::detectPeepHoleBranch): |
| |
| 2011-04-20 Gavin Barraclough <barraclough@apple.com> |
| |
| ARMv7 build fix II. |
| |
| * jit/JITOpcodes32_64.cpp: |
| (JSC::JIT::softModulo): |
| |
| 2011-04-20 Gavin Barraclough <barraclough@apple.com> |
| |
| ARMv7 build fix. |
| |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::test8): |
| |
| 2011-04-19 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Rationalize MacroAssembler branch methods |
| https://bugs.webkit.org/show_bug.cgi?id=58950 |
| |
| The MacroAssembler currently exposes x86's weird behaviour that the 'setcc' |
| instruction only sets the low 8 bits of a register. Stop that. |
| |
| Having done so, to clarify remove the 'set32' prefix from test & compare |
| instructions - these methods all now set a full 32/64 bit register (Ptr size). |
| The size in the function name should indicate the amount of data being compared. |
| |
| Also split out the 'Condition' enum into 'RelationalCondition' and |
| 'ResultCondition'. The former is used in binary comparison, the latter is a unary |
| condition check on the result of an operation. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * assembler/MacroAssembler.h: |
| (JSC::MacroAssembler::branchPtr): |
| (JSC::MacroAssembler::branch32): |
| (JSC::MacroAssembler::branch16): |
| (JSC::MacroAssembler::branchTestPtr): |
| (JSC::MacroAssembler::comparePtr): |
| (JSC::MacroAssembler::branchAddPtr): |
| (JSC::MacroAssembler::branchSubPtr): |
| (JSC::MacroAssembler::branchTest8): |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::branch8): |
| (JSC::MacroAssemblerARM::branch32): |
| (JSC::MacroAssemblerARM::branch32WithUnalignedHalfWords): |
| (JSC::MacroAssemblerARM::branch16): |
| (JSC::MacroAssemblerARM::branchTest8): |
| (JSC::MacroAssemblerARM::branchTest32): |
| (JSC::MacroAssemblerARM::branchAdd32): |
| (JSC::MacroAssemblerARM::branchMul32): |
| (JSC::MacroAssemblerARM::branchSub32): |
| (JSC::MacroAssemblerARM::branchNeg32): |
| (JSC::MacroAssemblerARM::branchOr32): |
| (JSC::MacroAssemblerARM::compare32): |
| (JSC::MacroAssemblerARM::test32): |
| (JSC::MacroAssemblerARM::test8): |
| (JSC::MacroAssemblerARM::branchPtrWithPatch): |
| (JSC::MacroAssemblerARM::ARMCondition): |
| * assembler/MacroAssemblerARMv7.h: |
| (JSC::MacroAssemblerARMv7::branch32): |
| (JSC::MacroAssemblerARMv7::branch32WithUnalignedHalfWords): |
| (JSC::MacroAssemblerARMv7::branch16): |
| (JSC::MacroAssemblerARMv7::branch8): |
| (JSC::MacroAssemblerARMv7::branchTest32): |
| (JSC::MacroAssemblerARMv7::branchTest8): |
| (JSC::MacroAssemblerARMv7::branchAdd32): |
| (JSC::MacroAssemblerARMv7::branchMul32): |
| (JSC::MacroAssemblerARMv7::branchOr32): |
| (JSC::MacroAssemblerARMv7::branchSub32): |
| (JSC::MacroAssemblerARMv7::compare32): |
| (JSC::MacroAssemblerARMv7::test32): |
| (JSC::MacroAssemblerARMv7::test8): |
| (JSC::MacroAssemblerARMv7::branchPtrWithPatch): |
| (JSC::MacroAssemblerARMv7::makeBranch): |
| (JSC::MacroAssemblerARMv7::armV7Condition): |
| * assembler/MacroAssemblerMIPS.h: |
| (JSC::MacroAssemblerMIPS::branch8): |
| (JSC::MacroAssemblerMIPS::branch32): |
| (JSC::MacroAssemblerMIPS::branch32WithUnalignedHalfWords): |
| (JSC::MacroAssemblerMIPS::branch16): |
| (JSC::MacroAssemblerMIPS::branchTest32): |
| (JSC::MacroAssemblerMIPS::branchTest8): |
| (JSC::MacroAssemblerMIPS::branchAdd32): |
| (JSC::MacroAssemblerMIPS::branchMul32): |
| (JSC::MacroAssemblerMIPS::branchSub32): |
| (JSC::MacroAssemblerMIPS::branchOr32): |
| (JSC::MacroAssemblerMIPS::compare32): |
| (JSC::MacroAssemblerMIPS::test8): |
| (JSC::MacroAssemblerMIPS::test32): |
| (JSC::MacroAssemblerMIPS::branchPtrWithPatch): |
| * assembler/MacroAssemblerX86.h: |
| (JSC::MacroAssemblerX86::branch32): |
| (JSC::MacroAssemblerX86::branchPtrWithPatch): |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::branch8): |
| (JSC::MacroAssemblerX86Common::branch32): |
| (JSC::MacroAssemblerX86Common::branch32WithUnalignedHalfWords): |
| (JSC::MacroAssemblerX86Common::branch16): |
| (JSC::MacroAssemblerX86Common::branchTest32): |
| (JSC::MacroAssemblerX86Common::branchTest8): |
| (JSC::MacroAssemblerX86Common::branchAdd32): |
| (JSC::MacroAssemblerX86Common::branchMul32): |
| (JSC::MacroAssemblerX86Common::branchSub32): |
| (JSC::MacroAssemblerX86Common::branchNeg32): |
| (JSC::MacroAssemblerX86Common::branchOr32): |
| (JSC::MacroAssemblerX86Common::compare32): |
| (JSC::MacroAssemblerX86Common::test8): |
| (JSC::MacroAssemblerX86Common::test32): |
| (JSC::MacroAssemblerX86Common::x86Condition): |
| * assembler/MacroAssemblerX86_64.h: |
| (JSC::MacroAssemblerX86_64::comparePtr): |
| (JSC::MacroAssemblerX86_64::branchPtr): |
| (JSC::MacroAssemblerX86_64::branchTestPtr): |
| (JSC::MacroAssemblerX86_64::branchAddPtr): |
| (JSC::MacroAssemblerX86_64::branchSubPtr): |
| (JSC::MacroAssemblerX86_64::branchPtrWithPatch): |
| (JSC::MacroAssemblerX86_64::branchTest8): |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_eq): |
| (JSC::JIT::emit_op_neq): |
| (JSC::JIT::compileOpStrictEq): |
| (JSC::JIT::emit_op_eq_null): |
| (JSC::JIT::emit_op_neq_null): |
| * jit/JITOpcodes32_64.cpp: |
| (JSC::JIT::emit_op_eq): |
| (JSC::JIT::emit_op_neq): |
| (JSC::JIT::compileOpStrictEq): |
| (JSC::JIT::emit_op_eq_null): |
| (JSC::JIT::emit_op_neq_null): |
| |
| 2011-04-20 Balazs Kelemen <kbalazs@webkit.org> |
| |
| Reviewed by Csaba Osztrogonác. |
| |
| [Qt] Cleanup includepath adjustment for generated files |
| https://bugs.webkit.org/show_bug.cgi?id=58869 |
| |
| * JavaScriptCore.pri: Add the directory of generated files to the include |
| path with absolute path to make it valid in the final build step. |
| |
| 2011-04-19 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Remove unneeded deprecated methods from MarkStack |
| https://bugs.webkit.org/show_bug.cgi?id=58853 |
| |
| Remove deprecated methods |
| |
| * heap/MarkStack.h: |
| |
| 2011-04-19 Mark Rowe <mrowe@apple.com> |
| |
| Things work best when the Xcode project refers to the file at a path that exists. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2011-04-19 Renata Hodovan <reni@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Move the alignment related macros in Vector.h to new Alignment.h. |
| https://bugs.webkit.org/show_bug.cgi?id=56000 |
| |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * wtf/Alignment.h: Added. |
| * wtf/CMakeLists.txt: |
| * wtf/Vector.h: |
| |
| 2011-04-19 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Remove DeprecatedPtr |
| https://bugs.webkit.org/show_bug.cgi?id=58718 |
| |
| Remove the class an all functions that still exist to support it. |
| |
| * heap/MarkStack.h: |
| (JSC::MarkStack::append): |
| * runtime/JSValue.h: |
| * runtime/WriteBarrier.h: |
| |
| 2011-04-19 Jungshik Shin <jshin@chromium.org> |
| |
| Reviewed by David Levin |
| |
| Add U+FEFF (Zero width no-break space) to CharacterNames.h. |
| It's added to the list of characters to treat as zero-width |
| in WebCore. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=48860 |
| |
| * wtf/unicode/CharacterNames.h: |
| |
| 2011-04-19 Csaba Osztrogonác <ossy@webkit.org> |
| |
| [Qt] REGRESSION(84176): http/tests/xmlhttprequest/event-listener-gc.html fails |
| https://bugs.webkit.org/show_bug.cgi?id=58871 |
| |
| Unreviewed, rolling out r84176, r84178, r84186, r84212 and r84231. |
| http://trac.webkit.org/changeset/84176 (original patch) |
| http://trac.webkit.org/changeset/84178 (original patch - part 2) |
| http://trac.webkit.org/changeset/84186 (build fix) |
| http://trac.webkit.org/changeset/84212 |
| http://trac.webkit.org/changeset/84231 (skip failing test) |
| |
| original bugs: |
| - https://bugs.webkit.org/show_bug.cgi?id=58718 |
| - https://bugs.webkit.org/show_bug.cgi?id=58853 |
| |
| * heap/MarkStack.h: |
| (JSC::MarkStack::deprecatedAppendValues): |
| (JSC::MarkStack::append): |
| (JSC::MarkStack::deprecatedAppend): |
| * runtime/JSValue.h: |
| * runtime/WriteBarrier.h: |
| (JSC::DeprecatedPtr::DeprecatedPtr): |
| (JSC::DeprecatedPtr::get): |
| (JSC::DeprecatedPtr::operator*): |
| (JSC::DeprecatedPtr::operator->): |
| (JSC::DeprecatedPtr::slot): |
| (JSC::DeprecatedPtr::operator UnspecifiedBoolType*): |
| (JSC::DeprecatedPtr::operator!): |
| (JSC::operator==): |
| |
| 2011-04-18 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Remove unneeded deprecated methods from MarkStack |
| https://bugs.webkit.org/show_bug.cgi?id=58853 |
| |
| Remove deprecated methods |
| |
| * heap/MarkStack.h: |
| |
| 2011-04-18 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Adam Roben. |
| |
| Off by one initialising repeat callframe |
| https://bugs.webkit.org/show_bug.cgi?id=58838 |
| <rdar://problem/8756810> |
| |
| If the end of a callframe made for a repeat call landed on |
| a page boundary the following page may not have been committed |
| which means that the off by one could lead to a crash. However |
| it could only happen in this case and only on windows which is |
| why it was so hard to repro. Alas given the steps needed to |
| reproduce are such that it's not really possible to make a |
| testcase. |
| |
| This fix makes the code a little less squirrely by not trying |
| to avoid the unnecessary initialisation of |this|. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::prepareForRepeatCall): |
| |
| 2011-04-18 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Bug 58829 - DFG JIT - Optimize add/sub immediate, multiply. |
| |
| Add code generation for add/subtract instruction with immediate operands |
| (where a child is a constant), and don't bail to non-speculative if an |
| integer multiple results in a +0 result (only if it should be generating -0). |
| |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.h: |
| (JSC::DFG::SpeculativeJIT::isDoubleConstantWithInt32Value): |
| |
| 2011-04-18 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Bug 58817 - DFG JIT - if speculative compilation fails, throw away code. |
| |
| If we detect a logical conflict, throw away generated code, |
| and only compile through the NonSpeculativeJIT. |
| |
| * assembler/AbstractMacroAssembler.h: |
| (JSC::AbstractMacroAssembler::rewindToLabel): |
| * assembler/AssemblerBuffer.h: |
| (JSC::AssemblerBuffer::rewindToOffset): |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::branchAdd32): |
| (JSC::MacroAssemblerX86Common::branchSub32): |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::rewindToLabel): |
| (JSC::X86Assembler::X86InstructionFormatter::rewindToLabel): |
| * dfg/DFGJITCompiler.cpp: |
| (JSC::DFG::JITCompiler::linkSpeculationChecks): |
| (JSC::DFG::JITCompiler::compileFunction): |
| * dfg/DFGNode.h: |
| * dfg/DFGNonSpeculativeJIT.cpp: |
| (JSC::DFG::NonSpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.h: |
| (JSC::DFG::SpeculationCheckIndexIterator::SpeculationCheckIndexIterator): |
| |
| 2011-04-18 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Remove DeprecatedPtr |
| https://bugs.webkit.org/show_bug.cgi?id=58718 |
| |
| As simple as it sounds. |
| |
| * runtime/JSValue.h: |
| * runtime/WriteBarrier.h: |
| |
| 2011-04-17 Cameron Zwarich <zwarich@apple.com> |
| |
| Reviewed by Dan Bernstein. |
| |
| JSC no longer builds with Clang due to -Woverloaded-virtual warning |
| https://bugs.webkit.org/show_bug.cgi?id=58760 |
| |
| Rename Structure's specificValue overload of put to putSpecificValue to avoid |
| Clang's warning for overloading a virtual function. |
| |
| * runtime/Structure.cpp: |
| (JSC::Structure::addPropertyTransition): |
| (JSC::Structure::addPropertyWithoutTransition): |
| (JSC::Structure::putSpecificValue): |
| * runtime/Structure.h: |
| |
| 2011-04-17 Patrick Gansterer <paroga@webkit.org> |
| |
| Reviewed by Adam Barth. |
| |
| Remove WTF_PLATFORM_SGL |
| https://bugs.webkit.org/show_bug.cgi?id=58743 |
| |
| WTF_PLATFORM_SGL and PLATFORM(SGL) are not used in the code anywhere. |
| |
| * wtf/Platform.h: |
| |
| 2011-04-17 Patrick Gansterer <paroga@webkit.org> |
| |
| Reviewed by Adam Barth. |
| |
| Rename PLATFORM(CA) to USE(CA) |
| https://bugs.webkit.org/show_bug.cgi?id=58742 |
| |
| * wtf/Platform.h: |
| |
| 2011-04-17 Patrick Gansterer <paroga@webkit.org> |
| |
| Reviewed by Adam Barth. |
| |
| Rename PLATFORM(CG) to USE(CG) |
| https://bugs.webkit.org/show_bug.cgi?id=58729 |
| |
| * wtf/Platform.h: |
| |
| 2011-04-16 Patrick Gansterer <paroga@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Rename PLATFORM(CAIRO) to USE(CAIRO) |
| https://bugs.webkit.org/show_bug.cgi?id=55192 |
| |
| * wtf/Platform.h: |
| * wtf/gobject/GTypedefs.h: |
| |
| 2011-04-15 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r84067. |
| http://trac.webkit.org/changeset/84067 |
| https://bugs.webkit.org/show_bug.cgi?id=58724 |
| |
| qt build are failing. (Requested by loislo2 on #webkit). |
| |
| * heap/MarkStack.h: |
| (JSC::MarkStack::append): |
| * runtime/JSValue.h: |
| * runtime/WriteBarrier.h: |
| (JSC::DeprecatedPtr::DeprecatedPtr): |
| (JSC::DeprecatedPtr::get): |
| (JSC::DeprecatedPtr::operator*): |
| (JSC::DeprecatedPtr::operator->): |
| (JSC::DeprecatedPtr::slot): |
| (JSC::DeprecatedPtr::operator UnspecifiedBoolType*): |
| (JSC::DeprecatedPtr::operator!): |
| (JSC::operator==): |
| |
| 2011-04-15 Shishir Agrawal <shishir@chromium.org> |
| |
| Reviewed by James Robinson. |
| |
| Add a flag to guard Page Visibility API changes. |
| https://bugs.webkit.org/show_bug.cgi?id=58464 |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2011-04-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Errrk! - build fix from !x86-64. |
| |
| * dfg/DFGNode.h: |
| |
| 2011-04-15 David Levin <levin@chromium.org> |
| |
| Revert of r83974. |
| |
| JavaScriptCore shouldn't depend on ../ThirdParty/gtest/xcode/gtest.xcodeproj |
| https://bugs.webkit.org/show_bug.cgi?id=58716 |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * wtf/tests/RunAllWtfTests.cpp: Removed. |
| * wtf/tests/StringTests.cpp: Removed. |
| |
| 2011-04-15 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Remove DeprecatedPtr |
| https://bugs.webkit.org/show_bug.cgi?id=58718 |
| |
| As simple as it sounds. |
| |
| * heap/MarkStack.h: |
| (JSC::MarkStack::append): |
| * runtime/JSValue.h: |
| * runtime/WriteBarrier.h: |
| |
| 2011-04-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Add a simple tool to gather statistics on whether functions |
| are completed through the new or old JIT. |
| |
| * dfg/DFGNode.h: |
| * dfg/DFGNonSpeculativeJIT.cpp: |
| (JSC::DFG::NonSpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompile): |
| |
| 2011-04-15 Oliver Hunt <oliver@apple.com> |
| |
| GC allocate Structure |
| https://bugs.webkit.org/show_bug.cgi?id=58483 |
| |
| Rolling r83894 r83827 r83810 r83809 r83808 back in with |
| a workaround for the gcc bug seen by the gtk bots |
| |
| * API/JSCallbackConstructor.cpp: |
| (JSC::JSCallbackConstructor::JSCallbackConstructor): |
| * API/JSCallbackConstructor.h: |
| (JSC::JSCallbackConstructor::createStructure): |
| * API/JSCallbackFunction.h: |
| (JSC::JSCallbackFunction::createStructure): |
| * API/JSCallbackObject.h: |
| (JSC::JSCallbackObject::createStructure): |
| * API/JSCallbackObjectFunctions.h: |
| (JSC::::JSCallbackObject): |
| * API/JSContextRef.cpp: |
| * JavaScriptCore.JSVALUE32_64only.exp: |
| * JavaScriptCore.JSVALUE64only.exp: |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::~CodeBlock): |
| (JSC::CodeBlock::markStructures): |
| (JSC::CodeBlock::markAggregate): |
| * bytecode/CodeBlock.h: |
| (JSC::MethodCallLinkInfo::setSeen): |
| (JSC::GlobalResolveInfo::GlobalResolveInfo): |
| * bytecode/Instruction.h: |
| (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set): |
| (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList): |
| (JSC::PolymorphicAccessStructureList::markAggregate): |
| (JSC::Instruction::Instruction): |
| * bytecode/StructureStubInfo.cpp: |
| (JSC::StructureStubInfo::deref): |
| (JSC::StructureStubInfo::markAggregate): |
| * bytecode/StructureStubInfo.h: |
| (JSC::StructureStubInfo::initGetByIdSelf): |
| (JSC::StructureStubInfo::initGetByIdProto): |
| (JSC::StructureStubInfo::initGetByIdChain): |
| (JSC::StructureStubInfo::initPutByIdTransition): |
| (JSC::StructureStubInfo::initPutByIdReplace): |
| * debugger/DebuggerActivation.cpp: |
| (JSC::DebuggerActivation::DebuggerActivation): |
| * debugger/DebuggerActivation.h: |
| (JSC::DebuggerActivation::createStructure): |
| * heap/Handle.h: |
| * heap/MarkStack.cpp: |
| (JSC::MarkStack::markChildren): |
| (JSC::MarkStack::drain): |
| * heap/MarkedBlock.cpp: |
| (JSC::MarkedBlock::MarkedBlock): |
| (JSC::MarkedBlock::sweep): |
| * heap/Strong.h: |
| (JSC::Strong::Strong): |
| (JSC::Strong::set): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::resolveGlobal): |
| (JSC::Interpreter::resolveGlobalDynamic): |
| (JSC::Interpreter::tryCachePutByID): |
| (JSC::Interpreter::uncachePutByID): |
| (JSC::Interpreter::tryCacheGetByID): |
| (JSC::Interpreter::uncacheGetByID): |
| (JSC::Interpreter::privateExecute): |
| * jit/JIT.h: |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::privateCompilePutByIdTransition): |
| (JSC::JIT::patchMethodCallProto): |
| (JSC::JIT::privateCompileGetByIdProto): |
| (JSC::JIT::privateCompileGetByIdSelfList): |
| (JSC::JIT::privateCompileGetByIdProtoList): |
| (JSC::JIT::privateCompileGetByIdChainList): |
| (JSC::JIT::privateCompileGetByIdChain): |
| * jit/JITPropertyAccess32_64.cpp: |
| (JSC::JIT::privateCompilePutByIdTransition): |
| (JSC::JIT::patchMethodCallProto): |
| (JSC::JIT::privateCompileGetByIdProto): |
| (JSC::JIT::privateCompileGetByIdSelfList): |
| (JSC::JIT::privateCompileGetByIdProtoList): |
| (JSC::JIT::privateCompileGetByIdChainList): |
| (JSC::JIT::privateCompileGetByIdChain): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::tryCachePutByID): |
| (JSC::JITThunks::tryCacheGetByID): |
| (JSC::DEFINE_STUB_FUNCTION): |
| (JSC::getPolymorphicAccessStructureListSlot): |
| * jit/JSInterfaceJIT.h: |
| (JSC::JSInterfaceJIT::storePtrWithWriteBarrier): |
| * jsc.cpp: |
| (cleanupGlobalData): |
| * runtime/Arguments.h: |
| (JSC::Arguments::createStructure): |
| (JSC::Arguments::Arguments): |
| (JSC::JSActivation::copyRegisters): |
| * runtime/ArrayConstructor.cpp: |
| (JSC::ArrayConstructor::ArrayConstructor): |
| (JSC::constructArrayWithSizeQuirk): |
| * runtime/ArrayConstructor.h: |
| * runtime/ArrayPrototype.cpp: |
| (JSC::ArrayPrototype::ArrayPrototype): |
| (JSC::arrayProtoFuncSplice): |
| * runtime/ArrayPrototype.h: |
| (JSC::ArrayPrototype::createStructure): |
| * runtime/BatchedTransitionOptimizer.h: |
| (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): |
| * runtime/BooleanConstructor.cpp: |
| (JSC::BooleanConstructor::BooleanConstructor): |
| * runtime/BooleanConstructor.h: |
| * runtime/BooleanObject.cpp: |
| (JSC::BooleanObject::BooleanObject): |
| * runtime/BooleanObject.h: |
| (JSC::BooleanObject::createStructure): |
| * 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: |
| (JSC::DateInstance::createStructure): |
| * runtime/DatePrototype.cpp: |
| (JSC::DatePrototype::DatePrototype): |
| * runtime/DatePrototype.h: |
| (JSC::DatePrototype::createStructure): |
| * runtime/Error.cpp: |
| (JSC::StrictModeTypeErrorFunction::StrictModeTypeErrorFunction): |
| * runtime/ErrorConstructor.cpp: |
| (JSC::ErrorConstructor::ErrorConstructor): |
| * runtime/ErrorConstructor.h: |
| * runtime/ErrorInstance.cpp: |
| (JSC::ErrorInstance::ErrorInstance): |
| (JSC::ErrorInstance::create): |
| * runtime/ErrorInstance.h: |
| (JSC::ErrorInstance::createStructure): |
| * runtime/ErrorPrototype.cpp: |
| (JSC::ErrorPrototype::ErrorPrototype): |
| * runtime/ErrorPrototype.h: |
| * runtime/ExceptionHelpers.cpp: |
| (JSC::InterruptedExecutionError::InterruptedExecutionError): |
| (JSC::TerminatedExecutionError::TerminatedExecutionError): |
| * runtime/Executable.cpp: |
| * runtime/Executable.h: |
| (JSC::ExecutableBase::ExecutableBase): |
| (JSC::ExecutableBase::createStructure): |
| (JSC::NativeExecutable::createStructure): |
| (JSC::NativeExecutable::NativeExecutable): |
| (JSC::ScriptExecutable::ScriptExecutable): |
| (JSC::EvalExecutable::createStructure): |
| (JSC::ProgramExecutable::createStructure): |
| (JSC::FunctionExecutable::createStructure): |
| * runtime/FunctionConstructor.cpp: |
| (JSC::FunctionConstructor::FunctionConstructor): |
| * runtime/FunctionConstructor.h: |
| * runtime/FunctionPrototype.cpp: |
| (JSC::FunctionPrototype::FunctionPrototype): |
| * runtime/FunctionPrototype.h: |
| (JSC::FunctionPrototype::createStructure): |
| * runtime/GetterSetter.h: |
| (JSC::GetterSetter::GetterSetter): |
| (JSC::GetterSetter::createStructure): |
| * runtime/InitializeThreading.cpp: |
| (JSC::initializeThreadingOnce): |
| * runtime/InternalFunction.cpp: |
| (JSC::InternalFunction::InternalFunction): |
| * runtime/InternalFunction.h: |
| (JSC::InternalFunction::createStructure): |
| * runtime/JSAPIValueWrapper.h: |
| (JSC::JSAPIValueWrapper::createStructure): |
| (JSC::JSAPIValueWrapper::JSAPIValueWrapper): |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::JSActivation): |
| * runtime/JSActivation.h: |
| (JSC::JSActivation::createStructure): |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::JSArray): |
| * runtime/JSArray.h: |
| (JSC::JSArray::createStructure): |
| * runtime/JSByteArray.cpp: |
| (JSC::JSByteArray::JSByteArray): |
| (JSC::JSByteArray::createStructure): |
| * runtime/JSByteArray.h: |
| (JSC::JSByteArray::JSByteArray): |
| * runtime/JSCell.cpp: |
| (JSC::isZombie): |
| * runtime/JSCell.h: |
| (JSC::JSCell::JSCell::JSCell): |
| (JSC::JSCell::JSCell::addressOfStructure): |
| (JSC::JSCell::JSCell::structure): |
| (JSC::JSCell::JSCell::markChildren): |
| (JSC::JSCell::JSValue::isZombie): |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::JSFunction): |
| * runtime/JSFunction.h: |
| (JSC::JSFunction::createStructure): |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::storeVPtrs): |
| (JSC::JSGlobalData::JSGlobalData): |
| (JSC::JSGlobalData::clearBuiltinStructures): |
| (JSC::JSGlobalData::createLeaked): |
| * runtime/JSGlobalData.h: |
| (JSC::allocateGlobalHandle): |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::reset): |
| (JSC::JSGlobalObject::markChildren): |
| (JSC::JSGlobalObject::copyGlobalsFrom): |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::JSGlobalObject): |
| (JSC::JSGlobalObject::createStructure): |
| (JSC::Structure::prototypeChain): |
| (JSC::Structure::isValid): |
| (JSC::constructEmptyArray): |
| * runtime/JSNotAnObject.h: |
| (JSC::JSNotAnObject::JSNotAnObject): |
| (JSC::JSNotAnObject::createStructure): |
| * runtime/JSONObject.cpp: |
| (JSC::JSONObject::JSONObject): |
| * runtime/JSONObject.h: |
| (JSC::JSONObject::createStructure): |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::defineGetter): |
| (JSC::JSObject::defineSetter): |
| (JSC::JSObject::seal): |
| (JSC::JSObject::freeze): |
| (JSC::JSObject::preventExtensions): |
| (JSC::JSObject::removeDirect): |
| (JSC::JSObject::createInheritorID): |
| * runtime/JSObject.h: |
| (JSC::JSObject::createStructure): |
| (JSC::JSObject::JSObject): |
| (JSC::JSNonFinalObject::createStructure): |
| (JSC::JSNonFinalObject::JSNonFinalObject): |
| (JSC::JSFinalObject::create): |
| (JSC::JSFinalObject::createStructure): |
| (JSC::JSFinalObject::JSFinalObject): |
| (JSC::constructEmptyObject): |
| (JSC::createEmptyObjectStructure): |
| (JSC::JSObject::~JSObject): |
| (JSC::JSObject::setPrototype): |
| (JSC::JSObject::setStructure): |
| (JSC::JSObject::inheritorID): |
| (JSC::JSObject::putDirectInternal): |
| (JSC::JSObject::transitionTo): |
| (JSC::JSObject::markChildrenDirect): |
| * runtime/JSObjectWithGlobalObject.cpp: |
| (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject): |
| * runtime/JSObjectWithGlobalObject.h: |
| (JSC::JSObjectWithGlobalObject::createStructure): |
| (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject): |
| * runtime/JSPropertyNameIterator.cpp: |
| (JSC::JSPropertyNameIterator::JSPropertyNameIterator): |
| (JSC::JSPropertyNameIterator::create): |
| (JSC::JSPropertyNameIterator::get): |
| * runtime/JSPropertyNameIterator.h: |
| (JSC::JSPropertyNameIterator::createStructure): |
| (JSC::JSPropertyNameIterator::setCachedStructure): |
| (JSC::Structure::setEnumerationCache): |
| * runtime/JSStaticScopeObject.h: |
| (JSC::JSStaticScopeObject::JSStaticScopeObject): |
| (JSC::JSStaticScopeObject::createStructure): |
| * runtime/JSString.h: |
| (JSC::RopeBuilder::JSString): |
| (JSC::RopeBuilder::createStructure): |
| * runtime/JSType.h: |
| * runtime/JSTypeInfo.h: |
| (JSC::TypeInfo::TypeInfo): |
| * runtime/JSValue.h: |
| * runtime/JSVariableObject.h: |
| (JSC::JSVariableObject::createStructure): |
| (JSC::JSVariableObject::JSVariableObject): |
| (JSC::JSVariableObject::copyRegisterArray): |
| * runtime/JSWrapperObject.h: |
| (JSC::JSWrapperObject::createStructure): |
| (JSC::JSWrapperObject::JSWrapperObject): |
| * runtime/JSZombie.cpp: |
| * runtime/JSZombie.h: |
| (JSC::JSZombie::JSZombie): |
| (JSC::JSZombie::createStructure): |
| * runtime/MathObject.cpp: |
| (JSC::MathObject::MathObject): |
| * runtime/MathObject.h: |
| (JSC::MathObject::createStructure): |
| * runtime/NativeErrorConstructor.cpp: |
| (JSC::NativeErrorConstructor::NativeErrorConstructor): |
| (JSC::NativeErrorConstructor::markChildren): |
| (JSC::constructWithNativeErrorConstructor): |
| * runtime/NativeErrorConstructor.h: |
| (JSC::NativeErrorConstructor::createStructure): |
| * runtime/NativeErrorPrototype.cpp: |
| (JSC::NativeErrorPrototype::NativeErrorPrototype): |
| * runtime/NativeErrorPrototype.h: |
| * runtime/NumberConstructor.cpp: |
| (JSC::NumberConstructor::NumberConstructor): |
| * runtime/NumberConstructor.h: |
| (JSC::NumberConstructor::createStructure): |
| * runtime/NumberObject.cpp: |
| (JSC::NumberObject::NumberObject): |
| * runtime/NumberObject.h: |
| (JSC::NumberObject::createStructure): |
| * runtime/NumberPrototype.cpp: |
| (JSC::NumberPrototype::NumberPrototype): |
| * runtime/NumberPrototype.h: |
| * runtime/ObjectConstructor.cpp: |
| (JSC::ObjectConstructor::ObjectConstructor): |
| * runtime/ObjectConstructor.h: |
| (JSC::ObjectConstructor::createStructure): |
| * runtime/ObjectPrototype.cpp: |
| (JSC::ObjectPrototype::ObjectPrototype): |
| * runtime/ObjectPrototype.h: |
| * runtime/PropertyMapHashTable.h: |
| (JSC::PropertyTable::PropertyTable): |
| * runtime/RegExpConstructor.cpp: |
| (JSC::RegExpConstructor::RegExpConstructor): |
| (JSC::RegExpMatchesArray::RegExpMatchesArray): |
| * runtime/RegExpConstructor.h: |
| (JSC::RegExpConstructor::createStructure): |
| * runtime/RegExpObject.cpp: |
| (JSC::RegExpObject::RegExpObject): |
| * runtime/RegExpObject.h: |
| (JSC::RegExpObject::createStructure): |
| * runtime/RegExpPrototype.cpp: |
| (JSC::RegExpPrototype::RegExpPrototype): |
| * runtime/RegExpPrototype.h: |
| * runtime/ScopeChain.h: |
| (JSC::ScopeChainNode::ScopeChainNode): |
| (JSC::ScopeChainNode::createStructure): |
| * runtime/StrictEvalActivation.cpp: |
| (JSC::StrictEvalActivation::StrictEvalActivation): |
| * runtime/StringConstructor.cpp: |
| (JSC::StringConstructor::StringConstructor): |
| * runtime/StringConstructor.h: |
| * runtime/StringObject.cpp: |
| (JSC::StringObject::StringObject): |
| * runtime/StringObject.h: |
| (JSC::StringObject::createStructure): |
| * runtime/StringObjectThatMasqueradesAsUndefined.h: |
| (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined): |
| (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): |
| * runtime/StringPrototype.cpp: |
| (JSC::StringPrototype::StringPrototype): |
| * runtime/StringPrototype.h: |
| (JSC::StringPrototype::createStructure): |
| * runtime/Structure.cpp: |
| (JSC::StructureTransitionTable::remove): |
| (JSC::StructureTransitionTable::add): |
| (JSC::Structure::Structure): |
| (JSC::Structure::~Structure): |
| (JSC::Structure::materializePropertyMap): |
| (JSC::Structure::addPropertyTransitionToExistingStructure): |
| (JSC::Structure::addPropertyTransition): |
| (JSC::Structure::removePropertyTransition): |
| (JSC::Structure::changePrototypeTransition): |
| (JSC::Structure::despecifyFunctionTransition): |
| (JSC::Structure::getterSetterTransition): |
| (JSC::Structure::toDictionaryTransition): |
| (JSC::Structure::toCacheableDictionaryTransition): |
| (JSC::Structure::toUncacheableDictionaryTransition): |
| (JSC::Structure::sealTransition): |
| (JSC::Structure::freezeTransition): |
| (JSC::Structure::preventExtensionsTransition): |
| (JSC::Structure::flattenDictionaryStructure): |
| (JSC::Structure::copyPropertyTable): |
| (JSC::Structure::put): |
| (JSC::Structure::markChildren): |
| * runtime/Structure.h: |
| (JSC::Structure::create): |
| (JSC::Structure::setPrototypeWithoutTransition): |
| (JSC::Structure::createStructure): |
| (JSC::JSCell::createDummyStructure): |
| (JSC::StructureTransitionTable::keyForWeakGCMapFinalizer): |
| * runtime/StructureChain.cpp: |
| (JSC::StructureChain::StructureChain): |
| (JSC::StructureChain::markChildren): |
| * runtime/StructureChain.h: |
| (JSC::StructureChain::create): |
| (JSC::StructureChain::head): |
| (JSC::StructureChain::createStructure): |
| * runtime/StructureTransitionTable.h: |
| (JSC::StructureTransitionTable::WeakGCMapFinalizerCallback::finalizerContextFor): |
| (JSC::StructureTransitionTable::WeakGCMapFinalizerCallback::keyForFinalizer): |
| (JSC::StructureTransitionTable::~StructureTransitionTable): |
| (JSC::StructureTransitionTable::slot): |
| (JSC::StructureTransitionTable::setMap): |
| (JSC::StructureTransitionTable::singleTransition): |
| (JSC::StructureTransitionTable::clearSingleTransition): |
| (JSC::StructureTransitionTable::setSingleTransition): |
| * runtime/WeakGCMap.h: |
| (JSC::DefaultWeakGCMapFinalizerCallback::finalizerContextFor): |
| (JSC::DefaultWeakGCMapFinalizerCallback::keyForFinalizer): |
| (JSC::WeakGCMap::contains): |
| (JSC::WeakGCMap::find): |
| (JSC::WeakGCMap::remove): |
| (JSC::WeakGCMap::add): |
| (JSC::WeakGCMap::set): |
| (JSC::WeakGCMap::finalize): |
| * runtime/WriteBarrier.h: |
| (JSC::writeBarrier): |
| (JSC::WriteBarrierBase::set): |
| (JSC::WriteBarrierBase::operator*): |
| (JSC::WriteBarrierBase::operator->): |
| (JSC::WriteBarrierBase::setWithoutWriteBarrier): |
| |
| 2011-04-15 Fridrich Strba <fridrich.strba@bluewin.ch> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Correctly prefix symbols. Since gcc 4.5.0, Windows x64 symbols |
| are not prefixed by underscore anymore. This is consistent with |
| what MSVC does. |
| https://bugs.webkit.org/show_bug.cgi?id=58573 |
| |
| * jit/JITStubs.cpp: |
| |
| 2011-04-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Bug 58705 - DFG JIT Add support for flow control (branch, jump). |
| |
| Add support for control flow by breaking the CodeBlock up into multiple |
| basic blocks, generating code for each basic block in turn through the |
| speculative JIT & then the non-speculative JIT. |
| |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::setTemporary): |
| (JSC::DFG::ByteCodeParser::addToGraph): |
| (JSC::DFG::ByteCodeParser::parseBlock): |
| (JSC::DFG::ByteCodeParser::parse): |
| * dfg/DFGGraph.cpp: |
| (JSC::DFG::Graph::dump): |
| * dfg/DFGGraph.h: |
| (JSC::DFG::BasicBlock::BasicBlock): |
| (JSC::DFG::BasicBlock::getBytecodeOffset): |
| (JSC::DFG::Graph::blockIndexForBytecodeOffset): |
| * dfg/DFGJITCodeGenerator.h: |
| (JSC::DFG::JITCodeGenerator::JITCodeGenerator): |
| (JSC::DFG::JITCodeGenerator::addBranch): |
| (JSC::DFG::JITCodeGenerator::linkBranches): |
| (JSC::DFG::JITCodeGenerator::BranchRecord::BranchRecord): |
| * dfg/DFGNode.h: |
| (JSC::DFG::Node::Node): |
| (JSC::DFG::Node::isJump): |
| (JSC::DFG::Node::isBranch): |
| (JSC::DFG::Node::takenBytecodeOffset): |
| (JSC::DFG::Node::notTakenBytecodeOffset): |
| * dfg/DFGNonSpeculativeJIT.cpp: |
| (JSC::DFG::NonSpeculativeJIT::compile): |
| * dfg/DFGNonSpeculativeJIT.h: |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.h: |
| |
| 2011-04-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| |
| Bug 58701 - DFG JIT - add GetLocal/SetLocal nodes |
| |
| Use these for both access to arguments & local variables, adds ability |
| to set locals, such that values will persist between basic blocks. |
| |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::ByteCodeParser): |
| (JSC::DFG::ByteCodeParser::get): |
| (JSC::DFG::ByteCodeParser::set): |
| (JSC::DFG::ByteCodeParser::getVariable): |
| (JSC::DFG::ByteCodeParser::setVariable): |
| (JSC::DFG::ByteCodeParser::getArgument): |
| (JSC::DFG::ByteCodeParser::setArgument): |
| (JSC::DFG::ByteCodeParser::getThis): |
| (JSC::DFG::ByteCodeParser::setThis): |
| (JSC::DFG::ByteCodeParser::VariableRecord::VariableRecord): |
| (JSC::DFG::ByteCodeParser::parseBlock): |
| * dfg/DFGGraph.cpp: |
| (JSC::DFG::Graph::dump): |
| (JSC::DFG::Graph::derefChildren): |
| * dfg/DFGGraph.h: |
| (JSC::DFG::Graph::ref): |
| (JSC::DFG::Graph::deref): |
| * dfg/DFGNode.h: |
| (JSC::DFG::Node::hasLocal): |
| (JSC::DFG::Node::local): |
| * dfg/DFGNonSpeculativeJIT.cpp: |
| (JSC::DFG::NonSpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| |
| 2011-04-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bug 58696 - DFG JIT split handling of vars/temporaries |
| |
| Presently all callee registers are treated as having single block scope, |
| since the DFG JIT can only compile single block functions. In order to |
| expand the JIT to support control flow we will need to change to retaining |
| locals (but not temporaries) across basic block boundaries. |
| |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::ByteCodeParser): |
| (JSC::DFG::ByteCodeParser::get): |
| (JSC::DFG::ByteCodeParser::set): |
| (JSC::DFG::ByteCodeParser::getVariable): |
| (JSC::DFG::ByteCodeParser::setVariable): |
| (JSC::DFG::ByteCodeParser::getTemporary): |
| (JSC::DFG::ByteCodeParser::setTemporary): |
| (JSC::DFG::ByteCodeParser::getArgument): |
| (JSC::DFG::ByteCodeParser::getInt32Constant): |
| (JSC::DFG::ByteCodeParser::getDoubleConstant): |
| (JSC::DFG::ByteCodeParser::getJSConstant): |
| (JSC::DFG::ByteCodeParser::constantUndefined): |
| (JSC::DFG::ByteCodeParser::constantNull): |
| (JSC::DFG::ByteCodeParser::one): |
| (JSC::DFG::ByteCodeParser::parseBlock): |
| (JSC::DFG::ByteCodeParser::parse): |
| (JSC::DFG::parse): |
| * dfg/DFGNode.h: |
| * dfg/DFGScoreBoard.h: |
| (JSC::DFG::ScoreBoard::ScoreBoard): |
| (JSC::DFG::ScoreBoard::~ScoreBoard): |
| (JSC::DFG::ScoreBoard::allocate): |
| (JSC::DFG::ScoreBoard::use): |
| |
| 2011-04-15 Michael Saboff <msaboff@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| globalObject moved to JSObjectWithGlobalObject.cpp inhibits inlining |
| https://bugs.webkit.org/show_bug.cgi?id=58677 |
| |
| Moved JSObjectWithGlobalObject::globalObject() to |
| runtime/JSObjectWithGlobalObject.h to allow the compiler to inline |
| it for a performance benefit. An equivalent instance had been in |
| a header file before r60057. |
| |
| * JavaScriptCore.exp: |
| * runtime/JSObjectWithGlobalObject.cpp: |
| * runtime/JSObjectWithGlobalObject.h: |
| (JSC::JSObjectWithGlobalObject::globalObject): |
| |
| 2011-04-14 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make JSNodeFilterCondition handle its lifetime correctly |
| https://bugs.webkit.org/show_bug.cgi?id=58622 |
| |
| Add export |
| |
| * JavaScriptCore.exp: |
| |
| 2011-04-14 Alexey Proskuryakov <ap@apple.com> |
| |
| Reviewed by Dan Bernstein. |
| |
| WebKit2: Password field input does not switch to ASCII-compatible source |
| https://bugs.webkit.org/show_bug.cgi?id=58583 |
| <rdar://problem/9059651> |
| |
| * wtf/Platform.h: Removed WTF_USE_CARBON_SECURE_INPUT_MODE. It's now only used by Chromium, |
| and shouldn't be enabled on any other platforms, so there is no reason to make it |
| configurable via Platform.h. |
| |
| 2011-04-15 Dmitry Lomov <dslomov@google.com> |
| |
| Reviewed by David Levin. |
| |
| Add a sample test case for GTest framework |
| https://bugs.webkit.org/show_bug.cgi?id=58509 |
| |
| Add an example of GTest testcase, complete with a runner, to JavaScriptCore. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * wtf/tests/RunAllWtfTests.cpp: Added. |
| (main): |
| * wtf/tests/StringTests.cpp: Added. |
| |
| 2011-04-15 Anna Cavender <annacc@chromium.org> |
| |
| Reviewed by Eric Carlson. |
| |
| Renaming TRACK feature define to VIDEO_TRACK |
| https://bugs.webkit.org/show_bug.cgi?id=53556 |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2011-04-14 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber stamped by Geoffrey Garen. |
| |
| Hide DFG_JIT_RESTRICTIONS behind ARITHMETIC_OP() macro, and rename |
| m_regressionGuard to m_parseFailed, such that it can be reused for |
| other failure cases. |
| |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::ByteCodeParser): |
| (JSC::DFG::ByteCodeParser::parse): |
| |
| 2011-04-14 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Bug 58620 - DFG JIT - loading of arguments should not be lazy |
| |
| This optimization is overly simplistic. It only works because we never |
| write out definitions to arguments (since we currently only compile |
| single block functions). Revert this for now, we may want to reintroduce |
| something like this again in the future, but it will need to be aware |
| how to schedule definitions to arguments versus lazy loads that have not |
| yet been performed. |
| |
| * dfg/DFGGenerationInfo.h: |
| (JSC::DFG::GenerationInfo::needsSpill): |
| * dfg/DFGGraph.cpp: |
| (JSC::DFG::Graph::dump): |
| * dfg/DFGGraph.h: |
| * dfg/DFGJITCodeGenerator.cpp: |
| (JSC::DFG::JITCodeGenerator::fillInteger): |
| (JSC::DFG::JITCodeGenerator::fillDouble): |
| (JSC::DFG::JITCodeGenerator::fillJSValue): |
| * dfg/DFGJITCodeGenerator.h: |
| (JSC::DFG::JITCodeGenerator::initConstantInfo): |
| * dfg/DFGJITCompiler.cpp: |
| (JSC::DFG::JITCompiler::fillNumericToDouble): |
| (JSC::DFG::JITCompiler::fillInt32ToInteger): |
| (JSC::DFG::JITCompiler::fillToJS): |
| * dfg/DFGNonSpeculativeJIT.cpp: |
| (JSC::DFG::NonSpeculativeJIT::isKnownInteger): |
| (JSC::DFG::NonSpeculativeJIT::isKnownNumeric): |
| (JSC::DFG::NonSpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal): |
| (JSC::DFG::SpeculativeJIT::fillSpeculateCell): |
| (JSC::DFG::SpeculativeJIT::compile): |
| |
| 2011-04-14 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Bug 58600 - DFG JIT bugs in ValueToInt, PutByVal |
| |
| The bug in PutByVal is that an operand is in JSValueOperand - when this |
| locks an integer into a register it will always retag the value without |
| checking if the register is already locked. This is a problem where the |
| value being stored by a PutByVal is the same as the subscript. |
| The subscript is locked into a register first, as a strict integer. |
| Locking the value results in the subscript being modified. |
| |
| The bug in ValueToInt related to the function of sillentFillAllRegisters. |
| The problem is that this method will restore all register values from |
| prior to the call, overwriting the result of the call out. Allow a |
| register to be passed to specifically be excluded from being preserved. |
| |
| * assembler/ARMAssembler.h: |
| (JSC::ARMAssembler::debugOffset): |
| * assembler/ARMv7Assembler.h: |
| (JSC::ARMv7Assembler::ARMInstructionFormatter::debugOffset): |
| * assembler/AbstractMacroAssembler.h: |
| (JSC::AbstractMacroAssembler::debugOffset): |
| * assembler/AssemblerBuffer.h: |
| (JSC::AssemblerBuffer::debugOffset): |
| * assembler/LinkBuffer.h: |
| (JSC::LinkBuffer::debugAddress): |
| * assembler/MIPSAssembler.h: |
| (JSC::MIPSAssembler::debugOffset): |
| * assembler/MacroAssemblerX86_64.h: |
| (JSC::MacroAssemblerX86_64::orPtr): |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::debugOffset): |
| (JSC::X86Assembler::X86InstructionFormatter::debugOffset): |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::parse): |
| * dfg/DFGGenerationInfo.h: |
| * dfg/DFGJITCodeGenerator.cpp: |
| (JSC::DFG::JITCodeGenerator::fillJSValue): |
| * dfg/DFGJITCodeGenerator.h: |
| (JSC::DFG::JITCodeGenerator::isConstant): |
| * dfg/DFGJITCompiler.cpp: |
| (JSC::DFG::JITCompiler::compileFunction): |
| * dfg/DFGJITCompiler.h: |
| (JSC::DFG::JITCompiler::isConstant): |
| * dfg/DFGNonSpeculativeJIT.cpp: |
| (JSC::DFG::NonSpeculativeJIT::valueToNumber): |
| (JSC::DFG::NonSpeculativeJIT::valueToInt32): |
| (JSC::DFG::NonSpeculativeJIT::numberToInt32): |
| (JSC::DFG::NonSpeculativeJIT::isKnownInteger): |
| (JSC::DFG::NonSpeculativeJIT::isKnownNumeric): |
| (JSC::DFG::NonSpeculativeJIT::compile): |
| * dfg/DFGNonSpeculativeJIT.h: |
| (JSC::DFG::NonSpeculativeJIT::silentSpillGPR): |
| (JSC::DFG::NonSpeculativeJIT::silentSpillFPR): |
| (JSC::DFG::NonSpeculativeJIT::silentFillGPR): |
| (JSC::DFG::NonSpeculativeJIT::silentFillFPR): |
| (JSC::DFG::NonSpeculativeJIT::silentSpillAllRegisters): |
| (JSC::DFG::NonSpeculativeJIT::silentFillAllRegisters): |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| |
| 2011-04-14 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Drain the mark stack while marking weak handles, not after. |
| https://bugs.webkit.org/show_bug.cgi?id=58574 |
| |
| Otherwise, items that would have caused more weak handle marking are |
| processed after all weak handle marking has finished, and referenced |
| weak handles get recycled. |
| |
| * heap/HandleHeap.cpp: |
| (JSC::HandleHeap::markWeakHandles): Removed looping from here, since we |
| want Heap::markRoots to be responsible for draining the mark stack. |
| |
| * heap/Heap.cpp: |
| (JSC::Heap::markRoots): Moved looping to here, as explained above. |
| |
| For efficiency's sake, drain the mark stack before starting to mark weak |
| handles. Otherwise, items drained while marking weak handles may force |
| an extra trip through the weak handle list. |
| |
| For correctness's sake, drain the mark stack each time through the weak |
| handle list. Otherwise, opaque roots that would make weak handles reachable |
| are not discovered until after weak handle marking is over. |
| |
| 2011-04-14 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make protected object list in caches window reflect reality |
| https://bugs.webkit.org/show_bug.cgi?id=58565 |
| |
| Make sure the heap includes objects protected by Strong handles |
| in its list of protected objects. |
| |
| * heap/HandleHeap.h: |
| * heap/Heap.cpp: |
| (JSC::HandleHeap::protectedObjectTypeCounts): |
| |
| 2011-04-14 Satish Sampath <satish@chromium.org> |
| |
| Reviewed by Anders Carlsson. |
| |
| Don't emit RegExp tables for chromium where they are not used |
| https://bugs.webkit.org/show_bug.cgi?id=58544 |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| * create_regex_tables: Added the "--notables" command line argument. |
| |
| 2011-04-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Try to fix ASSERTs seen on Windows bots. |
| |
| * wtf/HashTable.h: |
| (WTF::hashTableSwap): Force MSVC to use the right version of swap. |
| |
| 2011-04-13 Ryuan Choi <ryuan.choi@samsung.com> |
| |
| Reviewed by Kenneth Rohde Christiansen. |
| |
| [CMAKE] Separate DerivedSources. |
| https://bugs.webkit.org/show_bug.cgi?id=58427 |
| |
| * CMakeLists.txt: Change DERIVED_SOURCES_DIR to DERIVED_SOURCES_JAVASCRIPTCORE_DIR. |
| |
| 2011-04-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Switched DOM wrappers to use HashMap of Weak<T> instead of WeakGCMap<T> |
| https://bugs.webkit.org/show_bug.cgi?id=58482 |
| |
| This will allow wrappers to make individual decisions about their lifetimes. |
| |
| * heap/HandleHeap.h: |
| (JSC::HandleHeap::copyWeak): New function for copying a weak handle. |
| It's wasn't previously possible to perform this operation using HandleHeap |
| API because the HandleHeap doesn't expose its underlying Node structure. |
| |
| * heap/Local.h: |
| (JSC::::set): |
| * heap/Strong.h: |
| (JSC::Strong::set): Added ASSERTs to verify that dead objects are not |
| resurrected by placement into handles. |
| |
| (JSC::swap): Added a swap helper, so use of Strong<T> inside a hash table |
| is efficient. |
| |
| * heap/Weak.h: |
| (JSC::Weak::Weak): Fixed a bug where copying a weak pointer would not |
| copy its weak callback and context. |
| |
| (JSC::Weak::operator=): Added an assignment operator, since the default |
| C++ assignment operator did the wrong thing. |
| |
| (JSC::Weak::set): Added ASSERTs to verify that dead objects are not |
| resurrected by placement into handles. |
| |
| (JSC::swap): Added a swap helper, so use of Strong<T> inside a hash table |
| is efficient, and can be done without copying, which is illegal during |
| the handle finalization phase. |
| |
| 2011-04-13 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Make PropertyMapEntry use a WriteBarrier for specificValue |
| https://bugs.webkit.org/show_bug.cgi?id=58407 |
| |
| Make PropertyMapEntry use a WriteBarrier for specificValue, and then |
| propagate the required JSGlobalData through all the methods it ends |
| up being needed. |
| |
| * API/JSClassRef.cpp: |
| (OpaqueJSClass::prototype): |
| * API/JSContextRef.cpp: |
| * API/JSObjectRef.cpp: |
| (JSObjectMake): |
| (JSObjectSetPrototype): |
| * JavaScriptCore.exp: |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::BytecodeGenerator): |
| * interpreter/Interpreter.cpp: |
| (JSC::appendSourceToError): |
| (JSC::Interpreter::tryCacheGetByID): |
| (JSC::Interpreter::privateExecute): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::tryCacheGetByID): |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/BatchedTransitionOptimizer.h: |
| (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): |
| * runtime/InternalFunction.cpp: |
| (JSC::InternalFunction::name): |
| (JSC::InternalFunction::displayName): |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::getOwnPropertySlot): |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::name): |
| (JSC::JSFunction::displayName): |
| (JSC::JSFunction::getOwnPropertySlot): |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::putWithAttributes): |
| (JSC::JSGlobalObject::reset): |
| (JSC::JSGlobalObject::resetPrototype): |
| * runtime/JSGlobalObject.h: |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::put): |
| (JSC::JSObject::deleteProperty): |
| (JSC::JSObject::defineGetter): |
| (JSC::JSObject::defineSetter): |
| (JSC::JSObject::lookupGetter): |
| (JSC::JSObject::lookupSetter): |
| (JSC::JSObject::getPropertySpecificValue): |
| (JSC::JSObject::getOwnPropertyNames): |
| (JSC::JSObject::seal): |
| (JSC::JSObject::freeze): |
| (JSC::JSObject::preventExtensions): |
| (JSC::JSObject::removeDirect): |
| (JSC::JSObject::getOwnPropertyDescriptor): |
| (JSC::JSObject::defineOwnProperty): |
| * runtime/JSObject.h: |
| (JSC::JSObject::getDirect): |
| (JSC::JSObject::getDirectLocation): |
| (JSC::JSObject::isSealed): |
| (JSC::JSObject::isFrozen): |
| (JSC::JSObject::setPrototypeWithCycleCheck): |
| (JSC::JSObject::setPrototype): |
| (JSC::JSObject::inlineGetOwnPropertySlot): |
| (JSC::JSObject::putDirectInternal): |
| (JSC::JSObject::putDirectWithoutTransition): |
| (JSC::JSObject::putDirectFunctionWithoutTransition): |
| * runtime/Lookup.cpp: |
| (JSC::setUpStaticFunctionSlot): |
| * runtime/ObjectConstructor.cpp: |
| (JSC::objectConstructorCreate): |
| (JSC::objectConstructorSeal): |
| (JSC::objectConstructorFreeze): |
| (JSC::objectConstructorPreventExtensions): |
| (JSC::objectConstructorIsSealed): |
| (JSC::objectConstructorIsFrozen): |
| * runtime/Operations.h: |
| (JSC::normalizePrototypeChain): |
| * runtime/PropertyMapHashTable.h: |
| (JSC::PropertyMapEntry::PropertyMapEntry): |
| (JSC::PropertyTable::PropertyTable): |
| (JSC::PropertyTable::copy): |
| * runtime/Structure.cpp: |
| (JSC::Structure::materializePropertyMap): |
| (JSC::Structure::despecifyDictionaryFunction): |
| (JSC::Structure::addPropertyTransition): |
| (JSC::Structure::removePropertyTransition): |
| (JSC::Structure::changePrototypeTransition): |
| (JSC::Structure::despecifyFunctionTransition): |
| (JSC::Structure::getterSetterTransition): |
| (JSC::Structure::toDictionaryTransition): |
| (JSC::Structure::toCacheableDictionaryTransition): |
| (JSC::Structure::toUncacheableDictionaryTransition): |
| (JSC::Structure::sealTransition): |
| (JSC::Structure::freezeTransition): |
| (JSC::Structure::preventExtensionsTransition): |
| (JSC::Structure::isSealed): |
| (JSC::Structure::isFrozen): |
| (JSC::Structure::addPropertyWithoutTransition): |
| (JSC::Structure::removePropertyWithoutTransition): |
| (JSC::Structure::copyPropertyTable): |
| (JSC::Structure::get): |
| (JSC::Structure::despecifyFunction): |
| (JSC::Structure::despecifyAllFunctions): |
| (JSC::Structure::put): |
| (JSC::Structure::getPropertyNames): |
| * runtime/Structure.h: |
| (JSC::Structure::get): |
| (JSC::Structure::materializePropertyMapIfNecessary): |
| |
| 2011-04-13 Paul Knight <pknight@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| BACKTRACE() macro should check for Debug configuration in macro, not WTFReportBacktrace definition |
| https://bugs.webkit.org/show_bug.cgi?id=58405 |
| |
| The BACKTRACE() macro requires JavaScriptCore be built with a Debug |
| configuration in order for it to be enabled. Move the NDEBUG check to |
| the header so it will be enabled when the calling framework or |
| application is built with a Debug configuration, similar to how |
| ASSERT() and friends work. |
| |
| * wtf/Assertions.cpp: |
| * wtf/Assertions.h: |
| |
| 2011-04-12 Ben Taylor <bentaylor.solx86@gmail.com> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=58131 |
| |
| Provide a workaround for an obscure Studio 12 compiler bug, which |
| couldn't call src->~T() on a const T *src. |
| |
| * wtf/Vector.h: |
| |
| 2011-04-12 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=58395 |
| Exceptions thrown from property getters called from Array prototype functions can be missed |
| |
| This is caught by an ASSERT in the top of Interpreter::executeCall. |
| Check for exceptions after accessing properties that could be getters. |
| |
| * runtime/ArrayPrototype.cpp: |
| (JSC::arrayProtoFuncSort): |
| (JSC::arrayProtoFuncFilter): |
| (JSC::arrayProtoFuncMap): |
| (JSC::arrayProtoFuncEvery): |
| (JSC::arrayProtoFuncForEach): |
| (JSC::arrayProtoFuncSome): |
| (JSC::arrayProtoFuncReduce): |
| (JSC::arrayProtoFuncReduceRight): |
| - Add exception checks. |
| |
| 2011-04-12 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make API callback objects use weak handles to run their finalizers |
| https://bugs.webkit.org/show_bug.cgi?id=58389 |
| |
| Make the API object's private data struct act as a finalizer for |
| an api object if the callback object has a API defined finalizer. |
| |
| * API/JSCallbackObject.cpp: |
| (JSC::JSCallbackObjectData::finalize): |
| * API/JSCallbackObject.h: |
| * API/JSCallbackObjectFunctions.h: |
| (JSC::::init): |
| * heap/Handle.h: |
| |
| 2011-04-12 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Cleaned up hash traits, and added hash traits for handles |
| https://bugs.webkit.org/show_bug.cgi?id=58381 |
| |
| * heap/Handle.h: |
| (JSC::HandleBase::swap): |
| (JSC::Handle::Handle): |
| (JSC::Handle::swap): Implemented swap, so we can rehash efficiently, and |
| without creating new handles (which is not allowed during handle finalization). |
| |
| * heap/Strong.h: |
| (JSC::Strong::swap): Use new SimpleClassHashTraits to avoid duplication. |
| |
| * heap/Weak.h: |
| (JSC::Weak::isHashTableDeletedValue): |
| (JSC::Weak::Weak): |
| (JSC::Weak::swap): |
| (JSC::Weak::hashTableDeletedValue): Ditto. |
| |
| * wtf/HashTraits.h: |
| (WTF::SimpleClassHashTraits::constructDeletedValue): |
| (WTF::SimpleClassHashTraits::isDeletedValue): Added SimpleClassHashTraits, |
| which are analogous to SimpleClassVectorTraits, since they are used in a |
| bunch of places. |
| |
| * wtf/RetainPtr.h: Use new SimpleClassHashTraits to avoid duplication. |
| |
| * wtf/text/StringHash.h: Use new SimpleClassHashTraits to avoid duplication. |
| |
| 2011-04-12 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Cleaned up some Vector traits, and added missing Vector traits for handles |
| https://bugs.webkit.org/show_bug.cgi?id=58372 |
| |
| * heap/Local.h: Inherit from SimpleClassVectorTraits to avoid duplication. |
| |
| * heap/Strong.h: Ditto. |
| |
| * heap/Weak.h: Ditto. |
| |
| * parser/JSParser.cpp: Fixed a traits error. No test case because this |
| particular trait is not currently exercised by the parser. |
| |
| * runtime/UString.h: No need to override canInitializeWithMemset, since |
| our base class sets it to true. |
| |
| * wtf/VectorTraits.h: Inherit from VectorTraitsBase to avoid duplication. |
| |
| * wtf/text/WTFString.h: No need to override canInitializeWithMemset, since |
| our base class sets it to true. |
| |
| 2011-04-12 Thouraya ANDOLSI <thouraya.andolsi@st.com> |
| |
| Reviewed by Eric Seidel. |
| |
| [Qt] Enable JIT build for SH4 platforms. |
| https://bugs.webkit.org/show_bug.cgi?id=58317 |
| enable JIT build for QT backend for SH4 platforms. |
| |
| * JavaScriptCore.pro: |
| * wtf/Platform.h: |
| |
| 2011-04-11 Ben Taylor <bentaylor.solx86@gmail.com> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=58289 |
| |
| Fix compilation on Solaris/Studio 12 C++ in wtf/FastMalloc.cpp, |
| WTF::TCMalloc_PageHeap::runScavengerThread(void*) expected to return a value. |
| |
| * wtf/FastMalloc.cpp: |
| (WTF::TCMalloc_PageHeap::runScavengerThread): |
| |
| 2011-04-11 Mark Rowe <mrowe@apple.com> |
| |
| Fix the build. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: Headers used outside of JavaScriptCore need to be marked as private. |
| |
| 2011-04-11 Anna Cavender <annacc@chromium.org> |
| |
| Reviewed by Eric Carlson. |
| |
| Setup ENABLE(TRACK) feature define |
| https://bugs.webkit.org/show_bug.cgi?id=53556 |
| |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2011-04-11 Geoffrey Garen <ggaren@apple.com> |
| |
| Try to fix a few builds. |
| |
| Updated a few more build configurations for file moves. |
| |
| * CMakeListsWinCE.txt: |
| |
| 2011-04-11 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bug 58263 - Use EncodedValueDescriptor on both JSVALUE32_64, JSVALUE64 |
| |
| The JSJITInterface already uses EncodedValueDescriptor to access the tag/payload |
| separately on JSVALUE64, even though EncodedValueDescriptor is not used in |
| JSVALUE64's implementation of JSValue. Remove the separate definition for m_ptr |
| on X86_64. Using the union allows us to remove a layer of makeImmediate()/ |
| immedaiteValue() methods. |
| |
| * dfg/DFGNonSpeculativeJIT.cpp: |
| (JSC::DFG::NonSpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitTagAsBoolImmediate): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_not): |
| (JSC::JIT::emit_op_jeq_null): |
| (JSC::JIT::emit_op_jneq_null): |
| (JSC::JIT::emit_op_get_pnames): |
| (JSC::JIT::emit_op_eq_null): |
| (JSC::JIT::emit_op_neq_null): |
| (JSC::JIT::emitSlow_op_not): |
| * runtime/JSCell.h: |
| * runtime/JSValue.h: |
| * runtime/JSValueInlineMethods.h: |
| (JSC::JSValue::encode): |
| (JSC::JSValue::decode): |
| (JSC::JSValue::operator==): |
| (JSC::JSValue::operator!=): |
| (JSC::JSValue::JSValue): |
| (JSC::JSValue::operator bool): |
| (JSC::JSValue::asInt32): |
| (JSC::JSValue::isUndefinedOrNull): |
| (JSC::JSValue::isBoolean): |
| (JSC::JSValue::isCell): |
| (JSC::JSValue::isInt32): |
| (JSC::JSValue::asDouble): |
| (JSC::JSValue::isNumber): |
| (JSC::JSValue::asCell): |
| |
| 2011-04-11 Geoffrey Garen <ggaren@apple.com> |
| |
| Try to fix a few builds. |
| |
| Updated a few more build configurations for file moves. |
| |
| * CMakeListsEfl.txt: |
| * wscript: |
| |
| 2011-04-11 Geoffrey Garen <ggaren@apple.com> |
| |
| Build fix: Updated a file name. |
| |
| * CMakeLists.txt: |
| |
| 2011-04-11 Geoffrey Garen <ggaren@apple.com> |
| |
| Rubber-stamped by Sam Weinig. |
| |
| Moved remaining heap implementation files to the heap folder. |
| |
| * Android.mk: |
| * CMakeLists.txt: |
| * GNUmakefile.list.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.pro: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * heap/ConservativeRoots.cpp: Copied from runtime/ConservativeSet.cpp. |
| * heap/ConservativeRoots.h: Copied from runtime/ConservativeSet.h. |
| * heap/Handle.h: |
| * heap/Heap.cpp: |
| * heap/MachineStackMarker.cpp: Copied from runtime/MachineStackMarker.cpp. |
| * heap/MachineStackMarker.h: Copied from runtime/MachineStackMarker.h. |
| * heap/MarkStack.cpp: Copied from runtime/MarkStack.cpp. |
| * heap/MarkStack.h: Copied from runtime/MarkStack.h. |
| * heap/MarkStackPosix.cpp: Copied from runtime/MarkStackPosix.cpp. |
| * heap/MarkStackSymbian.cpp: Copied from runtime/MarkStackSymbian.cpp. |
| * heap/MarkStackWin.cpp: Copied from runtime/MarkStackWin.cpp. |
| * heap/MarkedBlock.cpp: Copied from runtime/MarkedBlock.cpp. |
| * heap/MarkedBlock.h: Copied from runtime/MarkedBlock.h. |
| * heap/MarkedSpace.cpp: Copied from runtime/MarkedSpace.cpp. |
| * heap/MarkedSpace.h: Copied from runtime/MarkedSpace.h. |
| * interpreter/RegisterFile.cpp: |
| * runtime/ConservativeSet.cpp: Removed. |
| * runtime/ConservativeSet.h: Removed. |
| * runtime/MachineStackMarker.cpp: Removed. |
| * runtime/MachineStackMarker.h: Removed. |
| * runtime/MarkStack.cpp: Removed. |
| * runtime/MarkStack.h: Removed. |
| * runtime/MarkStackPosix.cpp: Removed. |
| * runtime/MarkStackSymbian.cpp: Removed. |
| * runtime/MarkStackWin.cpp: Removed. |
| * runtime/MarkedBlock.cpp: Removed. |
| * runtime/MarkedBlock.h: Removed. |
| * runtime/MarkedSpace.cpp: Removed. |
| * runtime/MarkedSpace.h: Removed. |
| |
| 2011-04-11 Gavin Barraclough <barraclough@apple.com> |
| |
| Windows build fix. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2011-04-09 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bug 58198 - Clean up JSValue implementation for JSVALUE64 |
| |
| Remove JSNumberCell, JSImmediate, unify some methods between JSVALUE32_64/JSVALUE64 |
| |
| JSNumberCell.h largely just contained the constructors for JSValue on JSVALUE64, |
| which should not have been here. JSImmediate mostly contained uncalled methods, |
| along with the internal implementation of the JSValue constructors split unnecessarily |
| across a number of layers of function calls. These could largely be merged back |
| together. Many methods and constructors from JSVALUE32_64 and JSVALUE64 can by unified. |
| |
| The .cpp files were empty. |
| |
| Moving all these methods into JSValue.h seems to be a repro measurable regression, so |
| I have kept these methods in a separate JSValueInlineMethods.h. Adding the 64-bit tag |
| values as static const members of JSValue also measures as a repro regression, so I |
| have made these #defines. |
| |
| * Android.mk: |
| * CMakeLists.txt: |
| * GNUmakefile.list.am: |
| * JavaScriptCore.exp: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.pro: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| - Removed JSImmediate.h, JSNumberCell.h. |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitLoad): |
| - Removed class JSImmediate. |
| * dfg/DFGNonSpeculativeJIT.cpp: |
| (JSC::DFG::NonSpeculativeJIT::compile): |
| - Removed class JSImmediate. |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| - Removed class JSImmediate. |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::compileBinaryArithOpSlowCase): |
| - Removed class JSImmediate. |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitJumpIfJSCell): |
| (JSC::JIT::emitJumpIfNotJSCell): |
| (JSC::JIT::emitJumpIfImmediateInteger): |
| (JSC::JIT::emitJumpIfNotImmediateInteger): |
| (JSC::JIT::emitFastArithDeTagImmediate): |
| (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero): |
| (JSC::JIT::emitFastArithReTagImmediate): |
| (JSC::JIT::emitTagAsBoolImmediate): |
| - Removed class JSImmediate. |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_not): |
| (JSC::JIT::emit_op_jeq_null): |
| (JSC::JIT::emit_op_jneq_null): |
| (JSC::JIT::emit_op_get_pnames): |
| (JSC::JIT::emit_op_eq_null): |
| (JSC::JIT::emit_op_neq_null): |
| (JSC::JIT::emitSlow_op_not): |
| - Removed class JSImmediate. |
| * jit/JSInterfaceJIT.h: |
| - Removed class JSImmediate. |
| * runtime/JSCell.h: |
| - Removed JSImmediate.h, JSNumberCell.h. |
| * runtime/JSImmediate.cpp: Removed. |
| * runtime/JSImmediate.h: Removed. |
| * runtime/JSNumberCell.cpp: Removed. |
| * runtime/JSNumberCell.h: Removed. |
| - Removed. |
| * runtime/JSObject.h: |
| - Removed JSImmediate.h, JSNumberCell.h. |
| * runtime/JSString.h: |
| - Removed JSImmediate.h, JSNumberCell.h. |
| * runtime/JSValue.h: |
| - Added tags for JSVALUE64, moved out some JSVALUE32_64 methods, unified with JSVALUE64. |
| * runtime/JSValueInlineMethods.h: Added. |
| (JSC::JSValue::toInt32): |
| (JSC::JSValue::toUInt32): |
| (JSC::JSValue::isUInt32): |
| (JSC::JSValue::asUInt32): |
| (JSC::JSValue::uncheckedGetNumber): |
| (JSC::JSValue::toJSNumber): |
| (JSC::jsNaN): |
| (JSC::JSValue::getNumber): |
| (JSC::JSValue::getBoolean): |
| (JSC::JSValue::JSValue): |
| (JSC::JSValue::encode): |
| (JSC::JSValue::decode): |
| (JSC::JSValue::operator bool): |
| (JSC::JSValue::operator==): |
| (JSC::JSValue::operator!=): |
| (JSC::JSValue::isUndefined): |
| (JSC::JSValue::isNull): |
| (JSC::JSValue::isUndefinedOrNull): |
| (JSC::JSValue::isCell): |
| (JSC::JSValue::isInt32): |
| (JSC::JSValue::isDouble): |
| (JSC::JSValue::isTrue): |
| (JSC::JSValue::isFalse): |
| (JSC::JSValue::tag): |
| (JSC::JSValue::payload): |
| (JSC::JSValue::asInt32): |
| (JSC::JSValue::asDouble): |
| (JSC::JSValue::asCell): |
| (JSC::JSValue::isNumber): |
| (JSC::JSValue::isBoolean): |
| (JSC::JSValue::makeImmediate): |
| (JSC::JSValue::immediateValue): |
| (JSC::reinterpretDoubleToIntptr): |
| (JSC::reinterpretIntptrToDouble): |
| - Methods moved here from JSImmediate.h/JSNumberCell.h/JSValue.h. |
| * runtime/Operations.h: |
| - Removed JSImmediate.h, JSNumberCell.h. |
| * wtf/StdLibExtras.h: |
| - Export bitwise_cast. |
| |
| 2011-04-11 Thouraya ANDOLSI <thouraya.andolsi@st.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| SH4 JIT SUPPORT. |
| https://bugs.webkit.org/show_bug.cgi?id=44329 |
| |
| Add JIT remaining part for SH4 platforms. |
| |
| * assembler/MacroAssemblerSH4.h: |
| * jit/JIT.h: |
| * jit/JITInlineMethods.h: |
| * jit/JITOpcodes32_64.cpp: |
| * jit/JITPropertyAccess32_64.cpp: |
| * jit/JITStubs.cpp: |
| * jit/JITStubs.h: |
| * jit/JSInterfaceJIT.h: |
| |
| 2011-04-10 Geoffrey Garen <ggaren@apple.com> |
| |
| Rubber-stamped by Beth Dakin. |
| |
| Moved Heap.h and Heap.cpp to the heap folder, because anything less |
| would be uncivilized. |
| |
| * Android.mk: |
| * CMakeLists.txt: |
| * GNUmakefile.list.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.pro: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * heap/Heap.cpp: Copied from JavaScriptCore/runtime/Heap.cpp. |
| * heap/Heap.h: Copied from JavaScriptCore/runtime/Heap.h. |
| * runtime/Heap.cpp: Removed. |
| * runtime/Heap.h: Removed. |
| |
| 2011-04-10 Patrick Gansterer <paroga@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| Remove duplicated code from AtomicString::fromUTF8() |
| https://bugs.webkit.org/show_bug.cgi?id=53711 |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * wtf/text/AtomicString.cpp: |
| (WTF::AtomicString::fromUTF8Internal): |
| * wtf/text/AtomicString.h: |
| (WTF::AtomicString::fromUTF8): |
| * wtf/unicode/UTF8.cpp: |
| (WTF::Unicode::calculateStringHashAndLengthFromUTF8): |
| * wtf/unicode/UTF8.h: |
| |
| 2011-04-10 Maciej Stachowiak <mjs@apple.com> |
| |
| Not reviewed. |
| |
| Fix build (at least on Lion) by adding some newish header files to |
| PrivateHeaders. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2011-04-09 Geoffrey Garen <ggaren@apple.com> |
| |
| Not reviewed. |
| |
| Try recommitting some things svn left out of its last commit. |
| |
| * heap/Handle.h: |
| (JSC::HandleBase::operator!): |
| (JSC::HandleBase::HandleBase): |
| (JSC::HandleBase::slot): |
| (JSC::HandleBase::setSlot): |
| (JSC::Handle::Handle): |
| * heap/HandleHeap.cpp: |
| (JSC::HandleHeap::markWeakHandles): |
| (JSC::HandleHeap::finalizeWeakHandles): |
| (JSC::HandleHeap::isValidWeakNode): |
| * heap/HandleHeap.h: |
| (JSC::HandleHeap::globalData): |
| |
| 2011-04-08 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| A few heap-related renames and file moves. |
| |
| WeakGCPtr<T> => Weak<T> |
| Global<T> => Strong<T> |
| collector/ => heap/ |
| collector/* => heap/* |
| runtime/WeakGCPtr.h => heap/Weak.h |
| |
| (Eventually, even more files should move into the heap directory. Like |
| Heap.h and Heap.cpp, for example.) |
| |
| * API/JSClassRef.h: |
| * CMakeLists.txt: |
| * GNUmakefile.am: |
| * GNUmakefile.list.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.pri: |
| * JavaScriptCore.pro: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: |
| * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: |
| * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * bytecode/SamplingTool.h: |
| * bytecompiler/BytecodeGenerator.h: |
| * collector: Removed. |
| * collector/handles: Removed. |
| * collector/handles/Global.h: Removed. |
| * collector/handles/Handle.h: Removed. |
| * collector/handles/HandleHeap.cpp: Removed. |
| * collector/handles/HandleHeap.h: Removed. |
| * collector/handles/HandleStack.cpp: Removed. |
| * collector/handles/HandleStack.h: Removed. |
| * collector/handles/Local.h: Removed. |
| * collector/handles/LocalScope.h: Removed. |
| * heap: Copied from collector. |
| * heap/Handle.h: Copied from collector/handles/Handle.h. |
| * heap/HandleHeap.cpp: Copied from collector/handles/HandleHeap.cpp. |
| * heap/HandleHeap.h: Copied from collector/handles/HandleHeap.h. |
| * heap/HandleStack.cpp: Copied from collector/handles/HandleStack.cpp. |
| * heap/HandleStack.h: Copied from collector/handles/HandleStack.h. |
| * heap/Local.h: Copied from collector/handles/Local.h. |
| * heap/LocalScope.h: Copied from collector/handles/LocalScope.h. |
| * heap/Strong.h: Copied from collector/handles/Global.h. |
| (JSC::Strong::Strong): |
| (JSC::Strong::~Strong): |
| (JSC::Strong::operator=): |
| * heap/Weak.h: Copied from runtime/WeakGCPtr.h. |
| (JSC::Weak::Weak): |
| (JSC::Weak::~Weak): |
| * heap/handles: Removed. |
| * interpreter/RegisterFile.h: |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::hostFunctionStub): |
| * jit/JITStubs.h: |
| * runtime/Structure.h: |
| * runtime/WeakGCPtr.h: Removed. |
| |
| 2011-04-08 Alpha Lam <hclam@chromium.org> |
| |
| Unreviewed, rolling out r83335. |
| http://trac.webkit.org/changeset/83335 |
| https://bugs.webkit.org/show_bug.cgi?id=53556 |
| |
| GTK and QT bots are broken |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2011-04-08 Gavin Barraclough <barraclough@apple.com> |
| |
| Ooops, typo, build fix. |
| |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::parse): |
| |
| 2011-04-08 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Bug 58154 - Add support for comparison operators to the DFG JIT. |
| |
| Add support for <, <=, ==, ===, and also !. Add support for all corresponding |
| bytecode ops, including the not- and -null forms. Initially add functionally |
| correct support, we'll revisit the performance. |
| |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::ByteCodeParser): |
| (JSC::DFG::ByteCodeParser::constantNull): |
| (JSC::DFG::ByteCodeParser::parse): |
| - Add support for parsing of bytecode opcodes, |
| * dfg/DFGJITCodeGenerator.h: |
| (JSC::DFG::JITCodeGenerator::callOperation): |
| - Add new operation call types, return bool values. |
| * dfg/DFGNode.h: |
| - Add new node types. |
| * dfg/DFGNonSpeculativeJIT.cpp: |
| (JSC::DFG::NonSpeculativeJIT::compile): |
| - Add code generation for new nodes. |
| * dfg/DFGOperations.cpp: |
| (JSC::DFG::operationCompareLess): |
| (JSC::DFG::operationCompareLessEq): |
| (JSC::DFG::operationCompareEq): |
| (JSC::DFG::operationCompareStrictEq): |
| (JSC::DFG::dfgConvertJSValueToBoolean): |
| * dfg/DFGOperations.h: |
| - Add operation callbacks to implement new ops. |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| - Add code generation for new nodes. |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| - Switched to a simpler <0 check, rather than relying on an internal value in JSImmediate. |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::privateCompilePatchGetArrayLength): |
| - Switched to a simpler <0 check, rather than relying on an internal value in JSImmediate. |
| * runtime/JSImmediate.h: |
| - Make tag values public, rather than relying on a friend - this matches JSVALUE32_64. |
| |
| 2011-04-07 Anna Cavender <annacc@chromium.org> |
| |
| Reviewed by Eric Carlson. |
| |
| Setup ENABLE(TRACK) feature define |
| https://bugs.webkit.org/show_bug.cgi?id=53556 |
| |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2011-04-07 Balazs Kelemen <kbalazs@webkit.org> |
| |
| Reviewed by Kenneth Rohde Christiansen. |
| |
| [WK2][Qt][GTK] Introduce common use flag for the shared UNIX domain socket IPC implementation |
| https://bugs.webkit.org/show_bug.cgi?id=58030 |
| |
| * wtf/Platform.h: Introduce USE(UNIX_DOMAIN_SOCKETS) for WebKit2. |
| |
| 2011-04-08 Adam Roben <aroben@apple.com> |
| |
| Clean build fix |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: Don't try to delete directories that |
| don't exist. Also switched from del /s to rmdir /s, which has the benefit of deleting the |
| directory itself in addition to the files it contains. |
| |
| 2011-04-07 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Some Handle<T> cleanup |
| https://bugs.webkit.org/show_bug.cgi?id=58109 |
| |
| * bytecode/SamplingTool.h: Sorted alphabetically because that's the |
| WebKit style. Added a Global.h #include that was previously missing |
| but harmless. |
| |
| * collector/handles/Global.h: |
| (JSC::Global::Global): Added a null constructor. No need for a special |
| tag, and the tag is incompatible with some data structures. |
| |
| (JSC::Global::isHashTableDeletedValue): |
| (JSC::Global::~Global): |
| (JSC::Global::set): |
| (JSC::Global::operator=): |
| (JSC::Global::clear): |
| (JSC::Global::hashTableDeletedValue): Reordered constructors to be near |
| each other. |
| |
| (JSC::Global::setWithWriteBarrier): Renamed internalSet to |
| setWithWriteBarrier for clarity, and funneled more code into using set |
| and setWithWriteBarrier to reduce duplication. |
| |
| * collector/handles/Handle.h: |
| (JSC::HandleBase::operator!): |
| (JSC::HandleBase::HandleBase): Removed isEmpty(), since we already have |
| boolean and ! operators. |
| |
| (JSC::HandleBase::slot): |
| (JSC::HandleBase::setSlot): |
| (JSC::Handle::Handle): Added general support for null Handles. This was |
| previously outlawed by ASSERTs, but our code has grown to support and |
| rely on null Handles. |
| |
| * collector/handles/HandleHeap.cpp: |
| (JSC::HandleHeap::markWeakHandles): |
| (JSC::HandleHeap::finalizeWeakHandles): |
| (JSC::HandleHeap::isValidWeakNode): Migrated from isValidWeakHandle, |
| and beefed this up a bit. |
| |
| * collector/handles/HandleHeap.h: |
| (JSC::HandleHeap::globalData): Added accessor, used by some new set functions. |
| |
| * collector/handles/Local.h: Moved hash traits to the bottom of the file, |
| since this file is about the Local class, not the traits. |
| |
| (JSC::::Local): Updated for removal of invalidate(). |
| |
| (JSC::::operator): Deployed "using" to avoid a lot of this-> |
| template funny business. |
| |
| (JSC::::setWithSlotCheck): Renamed from internalSet, more specific now. |
| |
| * interpreter/RegisterFile.h: |
| (JSC::RegisterFile::RegisterFile): Updated to use null constructor. |
| |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::hostFunctionStub): |
| |
| * runtime/JSPropertyNameIterator.h: |
| (JSC::Structure::setEnumerationCache): |
| * runtime/Structure.h: Removed clearEnumerationCache |
| because it was an unused holdover from when the enumeration cache was |
| not a handle. |
| |
| * runtime/WeakGCMap.h: |
| (JSC::WeakGCMap::set): Finish initializing our handle before putting it |
| in the table. This seemed more logical, and at one point was required |
| to avoid triggering an ASSERT. |
| |
| * runtime/WeakGCPtr.h: Inherit from Handle instead of rolling our own |
| handle-like behavior, to avoid duplication. |
| |
| (JSC::WeakGCPtr::WeakGCPtr): |
| (JSC::WeakGCPtr::~WeakGCPtr): |
| (JSC::WeakGCPtr::get): |
| (JSC::WeakGCPtr::clear): |
| (JSC::WeakGCPtr::set): |
| (JSC::WeakGCPtr::setWithWriteBarrier): Removed duplicate code and |
| standardized on Handle idioms. |
| |
| 2011-04-07 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Martin Robinson. |
| |
| Refactor Gtk build system to separate list of files |
| https://bugs.webkit.org/show_bug.cgi?id=58090 |
| |
| This is the first step towards generating part of the GTK build system |
| using GYP. In the first iteration, our plan is to just generate the |
| list of files. This patch is the first step, which is to separate out |
| the part of JavaScriptCore build system that we intend to generate from |
| the rest of the build system. |
| |
| * GNUmakefile.am: |
| * GNUmakefile.list.am: Added. |
| |
| 2011-04-07 Zoltan Herczeg <zherczeg@webkit.org> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Mapping booleans the same way as integers |
| https://bugs.webkit.org/show_bug.cgi?id=56913 |
| |
| Instead of having a seperate tag field for booleans, |
| the logical values are stored in the payload field |
| (for JSValue32_64 representation). |
| |
| 1.007x speedup on SunSpider. |
| |
| * jit/JIT.h: |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitStoreBool): |
| * jit/JITOpcodes32_64.cpp: |
| (JSC::JIT::emit_op_instanceof): |
| (JSC::JIT::emit_op_not): |
| (JSC::JIT::emit_op_jfalse): |
| (JSC::JIT::emitSlow_op_jfalse): |
| (JSC::JIT::emit_op_jtrue): |
| (JSC::JIT::emitSlow_op_jtrue): |
| (JSC::JIT::emit_op_jeq_null): |
| (JSC::JIT::emit_op_jneq_null): |
| (JSC::JIT::emit_op_eq): |
| (JSC::JIT::emitSlow_op_eq): |
| (JSC::JIT::emit_op_neq): |
| (JSC::JIT::emitSlow_op_neq): |
| (JSC::JIT::compileOpStrictEq): |
| (JSC::JIT::emit_op_eq_null): |
| (JSC::JIT::emit_op_neq_null): |
| * jit/JSInterfaceJIT.h: |
| * runtime/JSValue.h: |
| (JSC::JSValue::JSValue): |
| (JSC::JSValue::isTrue): |
| (JSC::JSValue::isFalse): |
| (JSC::JSValue::getBoolean): |
| |
| 2011-04-07 Eric Seidel <eric@webkit.org> |
| |
| Reviewed by Adam Barth. |
| |
| Add stub support for generating Gtk build system from gyp |
| https://bugs.webkit.org/show_bug.cgi?id=58086 |
| |
| This does not produce a buildable JavaScriptCore, but it |
| does allow running gyp/configure --port=gtk and having |
| it generate a gtk.Makefile which we can use for testing |
| the rest of the plumbing. |
| |
| * gyp/gtk.gyp: Added. |
| |
| 2011-04-07 Andrew Scherkus <scherkus@chromium.org> |
| |
| Revert ENABLE_TRACK patch due to compile failures. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2011-04-07 Adam Barth <abarth@webkit.org> |
| |
| Fix whitespace in GNUmakefile.am. |
| |
| * GNUmakefile.am: |
| |
| 2011-04-07 Gavin Barraclough <barraclough@apple.com> |
| |
| Fix a couple of typos in comments that Darin spotted. |
| |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_not): |
| * runtime/JSImmediate.h: |
| |
| 2011-04-06 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoff Garen. |
| Bug 58057 - Store boolean payload in low bit of JSImmediate |
| |
| And remove some uncalled functions from JSImmediate.h |
| |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitTagAsBoolImmediate): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_not): |
| * runtime/JSImmediate.h: |
| (JSC::JSImmediate::makeInt): |
| (JSC::JSImmediate::makeBool): |
| (JSC::JSImmediate::intValue): |
| (JSC::JSImmediate::boolValue): |
| (JSC::JSImmediate::asInt32): |
| (JSC::JSImmediate::toDouble): |
| (JSC::JSValue::asInt32): |
| (JSC::JSValue::isUInt32): |
| (JSC::JSValue::asUInt32): |
| |
| 2011-04-07 Liang Qi <liang.qi@nokia.com> |
| |
| Reviewed by Laszlo Gombos. |
| |
| [Qt][Symbian] Enable webkit build with GCCE on Symbian. |
| https://bugs.webkit.org/show_bug.cgi?id=57841 |
| |
| * wtf/MathExtras.h: GCCE compiler doesn't support those std static functions. |
| |
| 2011-04-06 Dai Mikurube <dmikurube@chromium.org> |
| |
| Reviewed by David Levin. |
| |
| Add QUOTA build flag for unified quota API |
| https://bugs.webkit.org/show_bug.cgi?id=57918 |
| |
| * Configurations/FeatureDefines.xcconfig: Added QUOTA build flag |
| |
| 2011-04-06 Kevin Ollivier <kevino@theolliviers.com> |
| |
| Reviewed by Darin Adler. |
| |
| Make sure JS_EXPORT_PRIVATE is an empty define when we aren't using the export macros. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27551 |
| |
| * config.h: |
| |
| 2011-04-06 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Stop JSObject::isUsingInlineStorage() from using the structure |
| https://bugs.webkit.org/show_bug.cgi?id=57986 |
| |
| Make the isUsingInlineStorage() implementation just look at |
| whether the property storage is inside the object. |
| |
| * runtime/JSObject.h: |
| (JSC::JSObject::isUsingInlineStorage): |
| (JSC::JSObject::JSObject): |
| |
| 2011-04-06 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber stamped by Geoff Garen. |
| |
| Update comments documenting JSVALUE64/JSVALUE32_64 JSValue representations. |
| |
| * runtime/JSImmediate.h: |
| * runtime/JSValue.h: |
| |
| 2011-04-06 Lucas De Marchi <lucas.demarchi@profusion.mobi> |
| |
| cmake: Fix build for ARMv7 |
| |
| * CMakeLists.txt: add missing file. |
| |
| 2011-04-06 Liang Qi <liang.qi@nokia.com> |
| |
| Reviewed by Benjamin Poulain. |
| |
| Correct a include file name. |
| https://bugs.webkit.org/show_bug.cgi?id=57839 |
| |
| * wtf/PageAllocatorSymbian.h: It should be case sensitive. This fix |
| builds on Unix hosts. |
| |
| 2011-04-06 Adam Roben <aroben@apple.com> |
| |
| Build fix after r83056 |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: Added property svn:executable. |
| |
| 2011-04-06 Adam Roben <aroben@apple.com> |
| |
| Move JavaScriptCoreGenerated's file-copying logic out to a new script |
| |
| Hopefully this will make it easier to modify this logic in the future. I also made the |
| script much quieter than the old logic, since it didn't seem helpful to see long lists of |
| filenames during the copying phase. |
| |
| If we like this new style, we could copy it for our other projects. |
| |
| Fixes <http://webkit.org/b/57950> JavaScriptCoreGenerated's file-copying logic is hard to |
| modify and noisy |
| |
| Reviewed by Steve Falkenburg. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Moved logic to copy |
| files from here... |
| * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: ...to here. (Added.) |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Added copy-files.cmd |
| for convenience. |
| |
| 2011-04-05 Geoffrey Garen <ggaren@apple.com> |
| |
| Try to fix the Windows build. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Who likes export files? I do! |
| |
| 2011-04-05 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Introduced the concept of opaque roots, in preparation for marking the DOM with them |
| https://bugs.webkit.org/show_bug.cgi?id=57903 |
| |
| * JavaScriptCore.exp: Who likes export files? I do! |
| |
| * collector/handles/HandleHeap.cpp: |
| (JSC::isValidWeakHandle): Factored out a helper function for ASSERTs. |
| |
| (JSC::WeakHandleOwner::~WeakHandleOwner): Moved from header to avoid |
| weak linkage problems. |
| |
| (JSC::WeakHandleOwner::isReachableFromOpaqueRoots): New callback. |
| Currently unused. |
| |
| (JSC::WeakHandleOwner::finalize): Switched from pure virtual to a |
| default empty implementation, since not all clients necessarily want |
| or need non-trivial finalizers. |
| |
| (JSC::HandleHeap::markWeakHandles): Split updateWeakHandles into two |
| passes. The first pass marks all reachable weak handles. The second pass |
| finalizes all unreachable weak handles. This must be two passes because |
| we don't know the set of finalizable weak handles until we're done |
| marking all weak handles. |
| |
| (JSC::HandleHeap::finalizeWeakHandles): Use new helper function. |
| |
| * collector/handles/HandleHeap.h: Ditto. |
| |
| * runtime/Heap.cpp: |
| (JSC::Heap::destroy): |
| (JSC::Heap::markRoots): |
| (JSC::Heap::reset): Split out handle marking from handle finalization. |
| |
| * runtime/MarkStack.cpp: |
| (JSC::MarkStack::reset): |
| * runtime/MarkStack.h: |
| (JSC::MarkStack::addOpaqueRoot): |
| (JSC::MarkStack::containsOpaqueRoot): |
| (JSC::MarkStack::opaqueRootCount): |
| (JSC::HeapRootMarker::markStack): New helper functions for managing the |
| set of opaque roots. |
| |
| * runtime/WeakGCMap.h: |
| (JSC::WeakGCMap::finalize): Renamed to match parent class declaration. |
| |
| 2011-04-05 Balazs Kelemen <kbalazs@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| Build fix for YarrParser.h |
| https://bugs.webkit.org/show_bug.cgi?id=57822 |
| |
| * yarr/YarrParser.h: |
| (JSC::Yarr::Parser::CharacterClassParserDelegate::CharacterClassParserDelegate): |
| |
| 2011-04-05 Steve Falkenburg <sfalken@apple.com> |
| |
| Follow-up Windows build fix. |
| Don't skip react-to-vsprops-changes.py for all production builds, |
| only those initiated via JavaScriptCore.make. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore.make: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: |
| |
| 2011-04-05 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| REGRESSION (r82849): 85,000+ JSC-related leaks seen on SnowLeopard Intel Leaks |
| https://bugs.webkit.org/show_bug.cgi?id=57857 |
| |
| Whoops, accidentally removed a deref(). |
| |
| * bytecode/StructureStubInfo.cpp: |
| (JSC::StructureStubInfo::deref): |
| |
| 2011-04-05 Steve Falkenburg <sfalken@apple.com> |
| |
| Windows build fix. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Add per-configuration vsprops files. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Removed inheritance from common.vsprops. |
| Set production environment variable before calling make. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebug.vsprops: Added. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebugAll.vsprops: Added. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebugCairoCFLite.vsprops: Added. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedProduction.vsprops: Added. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedRelease.vsprops: Added. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedReleaseCairoCFLite.vsprops: Added. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedReleasePGO.vsprops: Added. |
| |
| 2011-04-05 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Make caches window show more info about non-jsobject GC values |
| https://bugs.webkit.org/show_bug.cgi?id=57874 |
| |
| Add ClassInfo to the various internal JS types that currently |
| don't have any, and make the text for caches window show the |
| classname for non-JSObject instances. |
| |
| * runtime/Executable.cpp: |
| * runtime/Executable.h: |
| (JSC::ExecutableBase::createStructure): |
| (JSC::NativeExecutable::createStructure): |
| (JSC::NativeExecutable::NativeExecutable): |
| (JSC::EvalExecutable::createStructure): |
| (JSC::ProgramExecutable::createStructure): |
| (JSC::FunctionExecutable::createStructure): |
| * runtime/Heap.cpp: |
| (JSC::TypeCounter::typeName): |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| * runtime/JSGlobalData.h: |
| * runtime/ScopeChain.cpp: |
| * runtime/ScopeChain.h: |
| (JSC::ScopeChainNode::createStructure): |
| * runtime/StructureChain.cpp: |
| * runtime/StructureChain.h: |
| (JSC::StructureChain::createStructure): |
| |
| 2011-04-05 Nikolas Zimmermann <nzimmermann@rim.com> |
| |
| Reviewed by Andreas Kling. |
| |
| Cleanup StringConcatenate |
| https://bugs.webkit.org/show_bug.cgi?id=57836 |
| |
| Don't use PassRefPtr in local variables, properly store in RefPtrs and release on return. |
| Add a makeString() variant taking 9 arguments, needed by a follow-up patch. |
| |
| * wtf/text/StringConcatenate.h: |
| (WTF::tryMakeString): |
| (WTF::makeString): |
| |
| 2011-04-04 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r82876. |
| http://trac.webkit.org/changeset/82876 |
| https://bugs.webkit.org/show_bug.cgi?id=57816 |
| |
| Caused a lot of test crashes (Requested by tkent on #webkit). |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * wtf/FastMalloc.cpp: |
| (WTF::tryFastMalloc): |
| (WTF::fastMalloc): |
| (WTF::tryFastCalloc): |
| (WTF::fastCalloc): |
| (WTF::fastFree): |
| (WTF::tryFastRealloc): |
| (WTF::fastRealloc): |
| (WTF::fastMallocSize): |
| (WTF::TCMalloc_PageHeap::isScavengerSuspended): |
| (WTF::TCMalloc_PageHeap::scheduleScavenger): |
| (WTF::TCMalloc_PageHeap::suspendScavenger): |
| (WTF::TCMalloc_PageHeap::signalScavenger): |
| (WTF::TCMallocStats::malloc): |
| (WTF::TCMallocStats::free): |
| (WTF::TCMallocStats::fastCalloc): |
| (WTF::TCMallocStats::tryFastCalloc): |
| (WTF::TCMallocStats::calloc): |
| (WTF::TCMallocStats::fastRealloc): |
| (WTF::TCMallocStats::tryFastRealloc): |
| (WTF::TCMallocStats::realloc): |
| (WTF::TCMallocStats::fastMallocSize): |
| * wtf/FastMalloc.h: |
| (WTF::Internal::fastMallocMatchValidationType): |
| (WTF::Internal::fastMallocMatchValidationValue): |
| (WTF::Internal::setFastMallocMatchValidationType): |
| (WTF::fastMallocMatchValidateFree): |
| * wtf/Platform.h: |
| |
| 2011-04-04 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Antti Koivisto. |
| |
| Stop JSCell.h from including Structure.h |
| https://bugs.webkit.org/show_bug.cgi?id=57809 |
| |
| * runtime/GetterSetter.h: |
| * runtime/JSAPIValueWrapper.h: |
| * runtime/JSCell.h: |
| (JSC::JSCell::JSValue::toThisObject): |
| * runtime/JSString.h: |
| * runtime/ScopeChain.h: |
| * runtime/Structure.h: |
| (JSC::JSCell::isObject): |
| (JSC::JSCell::isString): |
| (JSC::JSCell::classInfo): |
| (JSC::JSCell::createDummyStructure): |
| (JSC::JSValue::needsThisConversion): |
| (JSC::MarkStack::internalAppend): |
| * runtime/StructureChain.h: |
| |
| 2011-04-04 Oliver Hunt <oliver@apple.com> |
| |
| Fix clang build. |
| |
| * wtf/FastMalloc.cpp: |
| (WTF::fastMalloc): |
| (WTF::fastCalloc): |
| (WTF::fastRealloc): |
| |
| 2011-04-04 Oliver Hunt <oliver@apple.com> |
| |
| Remove accidental change to Platform.h |
| |
| * wtf/Platform.h: |
| |
| 2011-04-04 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Fixed a weak-handle-related leak in RegisterFile |
| https://bugs.webkit.org/show_bug.cgi?id=57793 |
| |
| * interpreter/RegisterFile.cpp: Nixed leaky GlobalObjectNotifier. |
| * interpreter/RegisterFile.h: |
| (JSC::RegisterFile::GlobalObjectOwner::finalize): |
| (JSC::RegisterFile::RegisterFile): Replaced GlobalObjectNotifier with |
| a per-RegisterFile weak handle owner, which does not leak. |
| |
| * runtime/WeakGCPtr.h: |
| (JSC::WeakGCPtr::set): Allow set() to take a context argument, since |
| RegisterFile now needs this. (Seems like it was an accidental omission |
| all along.) |
| |
| 2011-04-04 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make malloc validation useful |
| https://bugs.webkit.org/show_bug.cgi?id=57502 |
| |
| This patch changes FAST_MALLOC_MATCH_VALIDATION with a general |
| corruption check that tags the beginning and end of all allocations |
| to check for write overflows and overwrites the contents of |
| memory on free in order to (hopefully) show up use-after-free issues |
| sooner. |
| |
| We also turn it on by default for debug builds. |
| |
| * JavaScriptCore.exp: |
| * wtf/FastMalloc.cpp: |
| (WTF::tryFastMalloc): |
| (WTF::fastMalloc): |
| (WTF::tryFastCalloc): |
| (WTF::fastCalloc): |
| (WTF::fastFree): |
| (WTF::tryFastRealloc): |
| (WTF::fastRealloc): |
| (WTF::TCMalloc_PageHeap::isScavengerSuspended): |
| (WTF::TCMalloc_PageHeap::scheduleScavenger): |
| (WTF::TCMalloc_PageHeap::suspendScavenger): |
| (WTF::TCMalloc_PageHeap::signalScavenger): |
| (WTF::TCMallocStats::malloc): |
| (WTF::TCMallocStats::free): |
| (WTF::TCMallocStats::fastCalloc): |
| (WTF::TCMallocStats::tryFastCalloc): |
| (WTF::TCMallocStats::calloc): |
| (WTF::TCMallocStats::fastRealloc): |
| (WTF::TCMallocStats::tryFastRealloc): |
| (WTF::TCMallocStats::realloc): |
| * wtf/FastMalloc.h: |
| (WTF::Internal::fastMallocValidationHeader): |
| (WTF::Internal::fastMallocValidationSuffix): |
| (WTF::Internal::fastMallocMatchValidationType): |
| (WTF::Internal::setFastMallocMatchValidationType): |
| (WTF::fastMallocMatchValidateFree): |
| (WTF::fastMallocValidate): |
| * wtf/Platform.h: |
| |
| 2011-04-04 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Renamed clearWeakPointers => updateWeakHandles and removed misleading comment |
| https://bugs.webkit.org/show_bug.cgi?id=57790 |
| |
| * collector/handles/HandleHeap.cpp: |
| (JSC::HandleHeap::updateWeakHandles): Updated for rename. |
| |
| * collector/handles/HandleHeap.h: Removed comment claiming that this |
| function should only be called during teardown, because it's actually |
| called after every GC pass. |
| |
| * runtime/Heap.cpp: |
| (JSC::Heap::destroy): |
| (JSC::Heap::markRoots): Updated for rename. |
| |
| 2011-04-04 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Standardized handling of handles for immediate values |
| https://bugs.webkit.org/show_bug.cgi?id=57788 |
| |
| * collector/handles/HandleHeap.cpp: |
| (JSC::HandleHeap::clearWeakPointers): Don't check for null or non-cell |
| values here, because our write barrier guarantees that such values are |
| not in the weak list. |
| |
| (JSC::HandleHeap::writeBarrier): Standardized on checking for null before |
| checking for cell, and on using early return instead of if/else. |
| |
| * collector/handles/HandleHeap.h: |
| (JSC::HandleHeap::deallocate): |
| (JSC::HandleHeap::makeWeak): Ditto. |
| |
| 2011-04-04 Geoffrey Garen <ggaren@apple.com> |
| |
| Not reviewed. |
| |
| Removed a redundant variable from HandleHeap |
| https://bugs.webkit.org/show_bug.cgi?id=57786 |
| |
| Forgot to commit the file that actually removes the data member! |
| |
| * collector/handles/HandleHeap.h: |
| |
| 2011-04-04 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Removed a redundant variable from HandleHeap |
| https://bugs.webkit.org/show_bug.cgi?id=57786 |
| |
| We don't need a specific variable to indicate that we're in the middle |
| of the finalization phase, since m_nextToFinalize already does this. |
| |
| * collector/handles/HandleHeap.cpp: |
| (JSC::HandleHeap::HandleHeap): |
| (JSC::HandleHeap::clearWeakPointers): |
| (JSC::HandleHeap::writeBarrier): |
| |
| 2011-04-04 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Renamed Finalizer => WeakHandleOwner (in preparation for adding a reachability callback) |
| https://bugs.webkit.org/show_bug.cgi?id=57775 |
| |
| Also renamed noFinalizer => emptyWeakOwner, since this is really an |
| optimization for a weak owner with empty callbacks. |
| |
| * collector/handles/HandleHeap.cpp: |
| (JSC::HandleHeap::clearWeakPointers): Updated for renames. Removed |
| redundant initialization of m_nextToFinalize. Moved deletion check inside |
| weak owner check, since the weak owner can't delete the node if there is |
| no weak owner! |
| |
| * collector/handles/HandleHeap.h: |
| (JSC::WeakHandleOwner::~WeakHandleOwner): |
| (JSC::HandleHeap::makeWeak): Updated for renames. |
| |
| (JSC::HandleHeap::hasWeakOwner): Changed getFinalizer to hasWeakOwner, |
| to clarify this function's role in assertions. |
| |
| (JSC::HandleHeap::Node::Node): |
| (JSC::HandleHeap::Node::makeWeak): |
| (JSC::HandleHeap::Node::isWeak): |
| (JSC::HandleHeap::Node::weakOwner): |
| (JSC::HandleHeap::Node::weakOwnerContext): |
| (JSC::HandleHeap::Node::emptyWeakOwner): |
| * interpreter/RegisterFile.cpp: |
| (JSC::RegisterFile::globalObjectCollectedNotifier): |
| * interpreter/RegisterFile.h: |
| * runtime/WeakGCMap.h: |
| * runtime/WeakGCPtr.h: |
| (JSC::WeakGCPtr::WeakGCPtr): |
| (JSC::WeakGCPtr::set): Updated for renames. |
| |
| 2011-04-04 Oliver Hunt <oliver@apple.com> |
| |
| Fix WinCE build. |
| |
| * bytecode/Instruction.h: |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::tryCachePutByID): |
| (JSC::Interpreter::tryCacheGetByID): |
| |
| 2011-04-04 Adam Roben <aroben@apple.com> |
| |
| Delete mt.dep files when doing a clean build due to .vsprops file changes |
| |
| Apparently this is yet another file that Visual Studio can't figure out it needs to rebuild. |
| |
| Fixes <http://webkit.org/b/57777> r82850 failed to build on Windows Debug (Build) |
| |
| Reviewed by Brian Weinstein. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: |
| (main): Added dep to the list of extensions we look for when choosing files to delete. |
| |
| 2011-04-01 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make StructureChain GC allocated |
| https://bugs.webkit.org/show_bug.cgi?id=56695 |
| |
| Make StructureChain GC allocated, and make the various owners |
| mark it correctly. |
| |
| * JavaScriptCore.exp: |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::dump): |
| (JSC::CodeBlock::derefStructures): |
| (JSC::CodeBlock::refStructures): |
| (JSC::CodeBlock::markAggregate): |
| * bytecode/Instruction.h: |
| (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set): |
| (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList): |
| (JSC::PolymorphicAccessStructureList::derefStructures): |
| (JSC::PolymorphicAccessStructureList::markAggregate): |
| (JSC::Instruction::Instruction): |
| * bytecode/StructureStubInfo.cpp: |
| (JSC::StructureStubInfo::deref): |
| (JSC::StructureStubInfo::markAggregate): |
| * bytecode/StructureStubInfo.h: |
| (JSC::StructureStubInfo::initGetByIdChain): |
| (JSC::StructureStubInfo::initPutByIdTransition): |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): |
| (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): |
| * collector/handles/Handle.h: |
| (JSC::HandleConverter::operator->): |
| (JSC::HandleConverter::operator*): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_jneq_ptr): |
| * jit/JITOpcodes32_64.cpp: |
| (JSC::JIT::emit_op_jneq_ptr): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::privateCompileGetByIdChainList): |
| * jit/JITPropertyAccess32_64.cpp: |
| (JSC::JIT::privateCompileGetByIdChainList): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::tryCachePutByID): |
| (JSC::JITThunks::tryCacheGetByID): |
| (JSC::getPolymorphicAccessStructureListSlot): |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/JSCell.h: |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| * runtime/JSGlobalData.h: |
| * runtime/JSGlobalObject.cpp: |
| (JSC::markIfNeeded): |
| * runtime/JSGlobalObject.h: |
| (JSC::Structure::prototypeChain): |
| * runtime/JSObject.h: |
| (JSC::JSObject::putDirectInternal): |
| (JSC::JSObject::markChildrenDirect): |
| * runtime/JSPropertyNameIterator.cpp: |
| (JSC::JSPropertyNameIterator::create): |
| (JSC::JSPropertyNameIterator::get): |
| (JSC::JSPropertyNameIterator::markChildren): |
| * runtime/JSPropertyNameIterator.h: |
| (JSC::JSPropertyNameIterator::setCachedPrototypeChain): |
| * runtime/JSZombie.cpp: |
| (JSC::JSZombie::leakedZombieStructure): |
| * runtime/JSZombie.h: |
| * runtime/MarkStack.h: |
| (JSC::MarkStack::append): |
| * runtime/MarkedBlock.cpp: |
| (JSC::MarkedBlock::sweep): |
| * runtime/Structure.cpp: |
| (JSC::Structure::addPropertyTransition): |
| * runtime/Structure.h: |
| (JSC::Structure::markAggregate): |
| * runtime/StructureChain.cpp: |
| (JSC::StructureChain::StructureChain): |
| (JSC::StructureChain::~StructureChain): |
| (JSC::StructureChain::markChildren): |
| * runtime/StructureChain.h: |
| (JSC::StructureChain::create): |
| (JSC::StructureChain::createStructure): |
| * runtime/WriteBarrier.h: |
| (JSC::WriteBarrierBase::get): |
| (JSC::WriteBarrierBase::operator*): |
| (JSC::WriteBarrierBase::operator->): |
| |
| 2011-04-01 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Removed some complexity from HandleHeap |
| https://bugs.webkit.org/show_bug.cgi?id=57650 |
| |
| Eliminated pointer-tagging flags. |
| |
| Tied being weak to having a finalizer (or at least a finalizer sentinel). |
| |
| * collector/handles/HandleHeap.cpp: |
| (JSC::HandleHeap::clearWeakPointers): Removed the special self-destroying |
| flag. It was unused. If we bring it back, we'll probably use a shared |
| autodeallocating finalizer instead. |
| |
| * collector/handles/HandleHeap.h: |
| (JSC::HandleHeap::makeWeak): makeWeak and adding a finalizer are now |
| a single, atomic operation -- this makes the relationship between |
| finalizers and weak pointers clearer, and impossible to get wrong. |
| |
| (JSC::HandleHeap::Node::Node): |
| (JSC::HandleHeap::Node::handleHeap): No more flags. |
| |
| (JSC::HandleHeap::Node::makeWeak): |
| (JSC::HandleHeap::Node::isWeak): Ditto above. We use a special sentienl |
| value in the finalizer slot to indicate that a handle is weak but doesn't |
| require an external function call for finalization. |
| |
| 2011-04-01 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Removed WeakGCMap::deprecatedRemove because it was deprecated and unused |
| https://bugs.webkit.org/show_bug.cgi?id=57648 |
| |
| * runtime/WeakGCMap.h: |
| |
| 2011-04-01 Adam Roben <aroben@apple.com> |
| |
| Maintain the invariant that Lexer::m_current is set to -1 when at the end of the code buffer |
| |
| Covered by existing tests. |
| |
| Fixes <http://webkit.org/b/56699>. |
| |
| Reviewed by Oliver Hunt. |
| |
| * parser/Lexer.h: |
| (JSC::Lexer::setOffset): Copied code from Lexer::shift to update m_current, because |
| supposedly the idiom that function uses is fast. |
| |
| 2011-03-31 Thouraya ANDOLSI <thouraya.andolsi@st.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| SH4 JIT SUPPORT. |
| https://bugs.webkit.org/show_bug.cgi?id=44329 |
| |
| Add YARR support for SH4 platforms (disabled by default). |
| |
| * GNUmakefile.am: |
| * assembler/MacroAssembler.h: |
| * assembler/MacroAssemblerSH4.cpp: Added. |
| * assembler/MacroAssemblerSH4.h: Added. |
| * assembler/SH4Assembler.h: Added. |
| * yarr/YarrJIT.cpp: |
| |
| 2011-03-30 Adam Roben <aroben@apple.com> |
| |
| Clean build fix |
| |
| * JavaScriptCore.vcproj/JavaScriptCore.sln: Serialized project dependencies so projects |
| don't try to build in parallel (which doesn't mesh with our buildfailed mechanism). |
| |
| 2011-03-30 Oliver Hunt <oliver@apple.com> |
| |
| Rollout r82500 |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::dump): |
| (JSC::CodeBlock::derefStructures): |
| (JSC::CodeBlock::refStructures): |
| (JSC::CodeBlock::markAggregate): |
| * bytecode/Instruction.h: |
| (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set): |
| (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList): |
| (JSC::PolymorphicAccessStructureList::derefStructures): |
| (JSC::Instruction::Instruction): |
| * bytecode/StructureStubInfo.cpp: |
| (JSC::StructureStubInfo::deref): |
| * bytecode/StructureStubInfo.h: |
| (JSC::StructureStubInfo::initGetByIdChain): |
| (JSC::StructureStubInfo::initPutByIdTransition): |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): |
| (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_jneq_ptr): |
| * jit/JITOpcodes32_64.cpp: |
| (JSC::JIT::emit_op_jneq_ptr): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::privateCompileGetByIdChainList): |
| * jit/JITPropertyAccess32_64.cpp: |
| (JSC::JIT::privateCompileGetByIdChainList): |
| * jit/JITStubs.cpp: |
| (JSC::getPolymorphicAccessStructureListSlot): |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/JSCell.h: |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| * runtime/JSGlobalData.h: |
| * runtime/JSGlobalObject.cpp: |
| (JSC::markIfNeeded): |
| * runtime/JSGlobalObject.h: |
| (JSC::Structure::prototypeChain): |
| * runtime/JSObject.h: |
| (JSC::JSObject::markChildrenDirect): |
| * runtime/JSPropertyNameIterator.cpp: |
| (JSC::JSPropertyNameIterator::create): |
| (JSC::JSPropertyNameIterator::get): |
| (JSC::JSPropertyNameIterator::markChildren): |
| * runtime/JSPropertyNameIterator.h: |
| (JSC::JSPropertyNameIterator::setCachedPrototypeChain): |
| * runtime/MarkStack.h: |
| (JSC::MarkStack::append): |
| * runtime/Structure.h: |
| * runtime/StructureChain.cpp: |
| (JSC::StructureChain::StructureChain): |
| * runtime/StructureChain.h: |
| (JSC::StructureChain::create): |
| |
| 2011-03-29 Matthew Delaney <mdelaney@apple.com> |
| |
| Reviewed by Simon Fraser. |
| |
| Use the Accelerate vImage vectorized (un)premultiplyImageData functions for ImageBufferCG |
| |
| https://bugs.webkit.org/show_bug.cgi?id=53134 |
| |
| * wtf/Platform.h: Added in WTF flag for using the Accelerate framework |
| |
| 2011-03-30 Steve Falkenburg <sfalken@apple.com> |
| |
| Reviewed by Adam Roben. |
| |
| Share most vsprops between Release and Production builds in releaseproduction.vsprops |
| https://bugs.webkit.org/show_bug.cgi?id=57508 |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreProduction.vsprops: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreRelease.vsprops: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseCairoCFLite.vsprops: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops: |
| * JavaScriptCore.vcproj/WTF/WTFProduction.vsprops: |
| * JavaScriptCore.vcproj/WTF/WTFRelease.vsprops: |
| * JavaScriptCore.vcproj/WTF/WTFReleaseCairoCFLite.vsprops: |
| * JavaScriptCore.vcproj/WTF/WTFReleasePGO.vsprops: |
| * JavaScriptCore.vcproj/jsc/jscProduction.vsprops: |
| * JavaScriptCore.vcproj/jsc/jscRelease.vsprops: |
| * JavaScriptCore.vcproj/jsc/jscReleaseCairoCFLite.vsprops: |
| * JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops: |
| * JavaScriptCore.vcproj/testapi/testapiProduction.vsprops: |
| * JavaScriptCore.vcproj/testapi/testapiRelease.vsprops: |
| * JavaScriptCore.vcproj/testapi/testapiReleaseCairoCFLite.vsprops: |
| |
| 2011-03-30 Mark Rowe <mrowe@apple.com> |
| |
| Reviewed by Adam Roben. |
| |
| Explicitly prevent testapi and minidom from being installed rather than relying |
| on Xcode's current behavior of not installing if INSTALL_PATH is not explicitly |
| set at the target level. |
| |
| <rdar://problem/9206357> |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2011-03-30 Timur Iskhodzhanov <timurrrr@google.com> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Add some dynamic annotations to JavaScriptCore/wtf |
| https://bugs.webkit.org/show_bug.cgi?id=53747 |
| |
| By using these annotations we can improve the precision of finding |
| WebKit errors using dynamic analysis tools like ThreadSanitizer and Valgrind. |
| These annotations don't affect the compiled binaries unless USE(DYNAMIC_ANNOTATIONS) is "1". |
| |
| These files don't add new functionality, so don't need extra tests. |
| |
| * GNUmakefile.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * wtf/CMakeLists.txt: |
| * wtf/DynamicAnnotations.cpp: Added. |
| (WTFAnnotateBenignRaceSized): |
| (WTFAnnotateHappensBefore): |
| (WTFAnnotateHappensAfter): |
| * wtf/DynamicAnnotations.h: Added. |
| * wtf/ThreadSafeRefCounted.h: |
| (WTF::ThreadSafeRefCountedBase::derefBase): |
| * wtf/text/StringStatics.cpp: |
| (WTF::StringImpl::empty): |
| |
| 2011-03-30 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make StructureChain GC allocated |
| https://bugs.webkit.org/show_bug.cgi?id=56695 |
| |
| Make StructureChain GC allocated, and make the various owners |
| mark it correctly. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::dump): |
| (JSC::CodeBlock::derefStructures): |
| (JSC::CodeBlock::refStructures): |
| (JSC::CodeBlock::markAggregate): |
| * bytecode/Instruction.h: |
| (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set): |
| (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList): |
| (JSC::PolymorphicAccessStructureList::derefStructures): |
| (JSC::PolymorphicAccessStructureList::markAggregate): |
| (JSC::Instruction::Instruction): |
| * bytecode/StructureStubInfo.cpp: |
| (JSC::StructureStubInfo::deref): |
| (JSC::StructureStubInfo::markAggregate): |
| * bytecode/StructureStubInfo.h: |
| (JSC::StructureStubInfo::initGetByIdChain): |
| (JSC::StructureStubInfo::initPutByIdTransition): |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): |
| (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_jneq_ptr): |
| * jit/JITOpcodes32_64.cpp: |
| (JSC::JIT::emit_op_jneq_ptr): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::privateCompileGetByIdChainList): |
| * jit/JITPropertyAccess32_64.cpp: |
| (JSC::JIT::privateCompileGetByIdChainList): |
| * jit/JITStubs.cpp: |
| (JSC::getPolymorphicAccessStructureListSlot): |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/JSCell.h: |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| * runtime/JSGlobalData.h: |
| * runtime/JSGlobalObject.cpp: |
| (JSC::markIfNeeded): |
| * runtime/JSGlobalObject.h: |
| (JSC::Structure::prototypeChain): |
| * runtime/JSObject.h: |
| (JSC::JSObject::markChildrenDirect): |
| * runtime/JSPropertyNameIterator.cpp: |
| (JSC::JSPropertyNameIterator::create): |
| (JSC::JSPropertyNameIterator::get): |
| (JSC::JSPropertyNameIterator::markChildren): |
| * runtime/JSPropertyNameIterator.h: |
| (JSC::JSPropertyNameIterator::setCachedPrototypeChain): |
| * runtime/MarkStack.h: |
| (JSC::MarkStack::append): |
| * runtime/Structure.h: |
| (JSC::Structure::cachedPrototypeChainSlot): |
| * runtime/StructureChain.cpp: |
| (JSC::StructureChain::StructureChain): |
| * runtime/StructureChain.h: |
| (JSC::StructureChain::create): |
| (JSC::StructureChain::createStructure): |
| |
| 2011-03-30 Steve Falkenburg <sfalken@apple.com> |
| |
| Reviewed by Adam Roben. |
| |
| Update Windows production build logic for new production configurations |
| https://bugs.webkit.org/show_bug.cgi?id=57494 |
| |
| * JavaScriptCore.vcproj/JavaScriptCore.make: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreProduction.vsprops: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops: |
| * JavaScriptCore.vcproj/WTF/WTFProduction.vsprops: |
| * JavaScriptCore.vcproj/WTF/WTFReleasePGO.vsprops: |
| * JavaScriptCore.vcproj/jsc/jscProduction.vsprops: |
| * JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops: |
| * JavaScriptCore.vcproj/testapi/testapiProduction.vsprops: |
| |
| 2011-03-30 Steve Falkenburg <sfalken@apple.com> |
| |
| Reviewed by Adam Roben. |
| |
| Rename Windows configuration Release_LTCG to Production for clarity |
| https://bugs.webkit.org/show_bug.cgi?id=57465 |
| |
| * JavaScriptCore.vcproj/JavaScriptCore.sln: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreProduction.vsprops: Copied from Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseLTCG.vsprops. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseLTCG.vsprops: Removed. |
| * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| * JavaScriptCore.vcproj/WTF/WTFProduction.vsprops: Copied from Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFReleaseLTCG.vsprops. |
| * JavaScriptCore.vcproj/WTF/WTFReleaseLTCG.vsprops: Removed. |
| * JavaScriptCore.vcproj/jsc/jsc.vcproj: |
| * JavaScriptCore.vcproj/jsc/jscProduction.vsprops: Copied from Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscReleaseLTCG.vsprops. |
| * JavaScriptCore.vcproj/jsc/jscReleaseLTCG.vsprops: Removed. |
| * JavaScriptCore.vcproj/testapi/testapi.vcproj: |
| * JavaScriptCore.vcproj/testapi/testapiProduction.vsprops: Copied from Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiReleaseLTCG.vsprops. |
| * JavaScriptCore.vcproj/testapi/testapiReleaseLTCG.vsprops: Removed. |
| |
| 2011-03-30 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Add the NEXT_OPCODE() macro to the DFG-JIT parser |
| https://bugs.webkit.org/show_bug.cgi?id=57322 |
| |
| In JavaScriptCore we use macros to jump to the next opcode |
| (both in interpreter and JIT). This macro is added to the |
| DFG-JIT parser as well. |
| |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::parse): |
| |
| 2011-03-29 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| ~25% regression on v8-splay in the SunSpider harness |
| https://bugs.webkit.org/show_bug.cgi?id=56128 |
| |
| I'm not sure if this is the root cause of the regression Stephanie |
| measured, but it seems to get us back to previous v8-splay times. |
| |
| SunSpider reports no change. v8-splay says 41% faster. |
| |
| * runtime/Heap.cpp: |
| (JSC::Heap::reset): Make marking proportional to 1X the size of the heap, |
| not .5X the size of the heap. When the heap is large, this makes a big |
| difference. (Our old heap growth policy matched this. You can see by |
| looking at resizeBlocks in revisions prior to r77699.) |
| |
| 2011-03-29 Steve Falkenburg <sfalken@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Use per-configuration vsprops in JavaScriptCore to avoid WebKitVSPropsRedirectionDir removal by MSVC IDE |
| https://bugs.webkit.org/show_bug.cgi?id=57350 |
| |
| Visual Studio's IDE was removing instances of $(WebKitVSPropsRedirectionDir) from |
| InheritedPropertySheet rules in our vcproj files when the vcproj was edited from within |
| the IDE. To avoid this, add a separate vsprops file for each project configuration that |
| contains the required inherited property sheets. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebug.vsprops: Added. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugAll.vsprops: Added. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugCairoCFLite.vsprops: Added. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreRelease.vsprops: Added. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseCairoCFLite.vsprops: Added. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseLTCG.vsprops: Added. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops: Added. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops: Added. |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| * JavaScriptCore.vcproj/WTF/WTFDebug.vsprops: Added. |
| * JavaScriptCore.vcproj/WTF/WTFDebugAll.vsprops: Added. |
| * JavaScriptCore.vcproj/WTF/WTFDebugCairoCFLite.vsprops: Added. |
| * JavaScriptCore.vcproj/WTF/WTFRelease.vsprops: Added. |
| * JavaScriptCore.vcproj/WTF/WTFReleaseCairoCFLite.vsprops: Added. |
| * JavaScriptCore.vcproj/WTF/WTFReleaseLTCG.vsprops: Added. |
| * JavaScriptCore.vcproj/WTF/WTFReleasePGO.vsprops: Added. |
| * JavaScriptCore.vcproj/jsc/jsc.vcproj: |
| * JavaScriptCore.vcproj/jsc/jscDebug.vsprops: Added. |
| * JavaScriptCore.vcproj/jsc/jscDebugAll.vsprops: Added. |
| * JavaScriptCore.vcproj/jsc/jscDebugCairoCFLite.vsprops: Added. |
| * JavaScriptCore.vcproj/jsc/jscRelease.vsprops: Added. |
| * JavaScriptCore.vcproj/jsc/jscReleaseCairoCFLite.vsprops: Added. |
| * JavaScriptCore.vcproj/jsc/jscReleaseLTCG.vsprops: Added. |
| * JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops: Added. |
| * JavaScriptCore.vcproj/testapi/testapi.vcproj: |
| * JavaScriptCore.vcproj/testapi/testapiDebug.vsprops: Added. |
| * JavaScriptCore.vcproj/testapi/testapiDebugAll.vsprops: Added. |
| * JavaScriptCore.vcproj/testapi/testapiDebugCairoCFLite.vsprops: Added. |
| * JavaScriptCore.vcproj/testapi/testapiRelease.vsprops: Added. |
| * JavaScriptCore.vcproj/testapi/testapiReleaseCairoCFLite.vsprops: Added. |
| * JavaScriptCore.vcproj/testapi/testapiReleaseLTCG.vsprops: Added. |
| |
| 2011-03-29 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Eric Seidel. |
| |
| REGRESSION(r82173): Causes assertion and test failures in run-javascriptcore-tests on Windows (Requested by aroben on #webkit). |
| https://bugs.webkit.org/show_bug.cgi?id=57333 |
| |
| constructDate now takes the global object explicitly as it may be called |
| by functions other than the constructor itself. |
| |
| * API/JSObjectRef.cpp: |
| (JSObjectMakeDate): |
| * runtime/DateConstructor.cpp: |
| (JSC::constructDate): |
| (JSC::constructWithDateConstructor): |
| * runtime/DateConstructor.h: |
| |
| 2011-03-29 Ben Taylor <bentaylor.solx86@gmail.com> |
| |
| Reviewed by Benjamin Poulain. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=41953 |
| |
| Fix compile error on Solaris 10/Sun Studio 12 CC emanating from MathExtras.h |
| |
| * wtf/MathExtras.h: |
| |
| 2011-03-29 Ben Taylor <bentaylor.solx86@gmail.com> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=57231 |
| Add conditional for SUNCC supporting alignment macros |
| |
| Compile fix for Solaris 10/Sun Studio 12 CC |
| |
| * wtf/Vector.h: |
| |
| 2011-03-29 Ben Taylor <bentaylor.solx86@gmail.com> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=57256 |
| |
| Fix crash on misaligned reads on Solaris 10/Sparc |
| |
| * wtf/text/AtomicString.cpp: |
| (WTF::equal): |
| |
| 2011-03-28 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| instanceof Array test fails when using iframes |
| https://bugs.webkit.org/show_bug.cgi?id=17250 |
| |
| This is a problem with all built in constructors, the use of |
| lexicalGlobalObject rather than the constructors own |
| global object reference means that a builtin will always use |
| the prototype from the lexical global object rather than that |
| of the constructors origin. |
| |
| * API/JSObjectRef.cpp: |
| (JSObjectMakeFunction): |
| (JSObjectMakeRegExp): |
| * JavaScriptCore.exp: |
| * runtime/ArrayConstructor.cpp: |
| (JSC::constructArrayWithSizeQuirk): |
| * runtime/BooleanConstructor.cpp: |
| (JSC::constructBoolean): |
| (JSC::constructBooleanFromImmediateBoolean): |
| * runtime/BooleanConstructor.h: |
| * runtime/DateConstructor.cpp: |
| (JSC::constructDate): |
| * runtime/DateInstance.cpp: |
| * runtime/DateInstance.h: |
| * runtime/ErrorConstructor.cpp: |
| (JSC::constructWithErrorConstructor): |
| (JSC::callErrorConstructor): |
| * runtime/FunctionConstructor.cpp: |
| (JSC::constructWithFunctionConstructor): |
| (JSC::callFunctionConstructor): |
| (JSC::constructFunction): |
| * runtime/FunctionConstructor.h: |
| * runtime/JSCell.cpp: |
| (JSC::JSCell::getOwnPropertySlot): |
| (JSC::JSCell::put): |
| (JSC::JSCell::deleteProperty): |
| (JSC::JSCell::toThisObject): |
| (JSC::JSCell::toObject): |
| * runtime/JSCell.h: |
| (JSC::JSCell::JSValue::toObject): |
| * runtime/JSNotAnObject.cpp: |
| (JSC::JSNotAnObject::toObject): |
| * runtime/JSNotAnObject.h: |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::toObject): |
| * runtime/JSObject.h: |
| * runtime/JSString.cpp: |
| (JSC::StringObject::create): |
| (JSC::JSString::toObject): |
| (JSC::JSString::toThisObject): |
| * runtime/JSString.h: |
| * runtime/JSValue.cpp: |
| (JSC::JSValue::toObjectSlowCase): |
| (JSC::JSValue::toThisObjectSlowCase): |
| (JSC::JSValue::synthesizeObject): |
| * runtime/JSValue.h: |
| * runtime/NumberConstructor.cpp: |
| (JSC::constructWithNumberConstructor): |
| * runtime/NumberObject.cpp: |
| (JSC::constructNumber): |
| * runtime/NumberObject.h: |
| * runtime/ObjectConstructor.cpp: |
| (JSC::constructObject): |
| (JSC::constructWithObjectConstructor): |
| (JSC::callObjectConstructor): |
| * runtime/RegExpConstructor.cpp: |
| (JSC::constructRegExp): |
| (JSC::constructWithRegExpConstructor): |
| (JSC::callRegExpConstructor): |
| * runtime/RegExpConstructor.h: |
| * runtime/StringConstructor.cpp: |
| (JSC::constructWithStringConstructor): |
| * runtime/StringObject.h: |
| |
| 2011-03-28 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| REGRESSION [r78794-r79249] Allocation of memory is slow when number of active objects is large |
| https://bugs.webkit.org/show_bug.cgi?id=56823 |
| |
| Partial fix for most of the problem. (TOT still shows a regression, though.) |
| |
| * runtime/Heap.cpp: |
| (JSC::Heap::reportExtraMemoryCostSlowCase): Use highWaterMark(), instead of |
| capacity(), since capacity() is O(n) relative to the size of the heap. |
| |
| In limited circumstances, capacity() is also worse than highWaterMark() |
| for measuring extra cost relative to heap size, since capacity() only |
| measures the *current* capacity of the heap, but the heap will grow if |
| necessary to attain highWaterMark(). |
| |
| 2011-03-28 Oliver Hunt <oliver@apple.com> |
| |
| REGRESSION(r82130): It made all tests crash (Requested by Ossy on #webkit). |
| https://bugs.webkit.org/show_bug.cgi?id=57251 |
| |
| Build fix, had remnant of another patch in r82130 |
| |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::privateCompileGetByIdChainList): |
| |
| 2011-03-27 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Add additional immediate types to allow us to distinguish the source of a JIT immediate |
| https://bugs.webkit.org/show_bug.cgi?id=57190 |
| |
| Allow us to distinguish whether a JIT immediate is a value that we |
| control (TrustedImm32 and TrustedImmPtr) vs. ones that can be controlled |
| or influenced by code we are compiling. Currently we do nothing with this |
| information -- this change is large and mechanical but would obscure any |
| logic changes that we would have made. |
| |
| * assembler/AbstractMacroAssembler.h: |
| (JSC::AbstractMacroAssembler::TrustedImmPtr::TrustedImmPtr): |
| (JSC::AbstractMacroAssembler::ImmPtr::ImmPtr): |
| (JSC::AbstractMacroAssembler::TrustedImm32::TrustedImm32): |
| (JSC::AbstractMacroAssembler::Imm32::Imm32): |
| * assembler/MacroAssembler.h: |
| (JSC::MacroAssembler::pop): |
| (JSC::MacroAssembler::poke): |
| (JSC::MacroAssembler::branchPtr): |
| (JSC::MacroAssembler::branch32): |
| (JSC::MacroAssembler::addPtr): |
| (JSC::MacroAssembler::andPtr): |
| (JSC::MacroAssembler::orPtr): |
| (JSC::MacroAssembler::subPtr): |
| (JSC::MacroAssembler::xorPtr): |
| (JSC::MacroAssembler::setPtr): |
| (JSC::MacroAssembler::storePtr): |
| (JSC::MacroAssembler::branchTestPtr): |
| (JSC::MacroAssembler::branchSubPtr): |
| (JSC::MacroAssembler::branchTest8): |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::add32): |
| (JSC::MacroAssemblerARM::and32): |
| (JSC::MacroAssemblerARM::lshift32): |
| (JSC::MacroAssemblerARM::mul32): |
| (JSC::MacroAssemblerARM::or32): |
| (JSC::MacroAssemblerARM::rshift32): |
| (JSC::MacroAssemblerARM::urshift32): |
| (JSC::MacroAssemblerARM::sub32): |
| (JSC::MacroAssemblerARM::xor32): |
| (JSC::MacroAssemblerARM::store32): |
| (JSC::MacroAssemblerARM::push): |
| (JSC::MacroAssemblerARM::move): |
| (JSC::MacroAssemblerARM::branch8): |
| (JSC::MacroAssemblerARM::branch32): |
| (JSC::MacroAssemblerARM::branch32WithUnalignedHalfWords): |
| (JSC::MacroAssemblerARM::branch16): |
| (JSC::MacroAssemblerARM::branchTest8): |
| (JSC::MacroAssemblerARM::branchTest32): |
| (JSC::MacroAssemblerARM::branchAdd32): |
| (JSC::MacroAssemblerARM::branchMul32): |
| (JSC::MacroAssemblerARM::branchSub32): |
| (JSC::MacroAssemblerARM::set32Compare32): |
| (JSC::MacroAssemblerARM::set8Compare32): |
| (JSC::MacroAssemblerARM::set32Test32): |
| (JSC::MacroAssemblerARM::set32Test8): |
| (JSC::MacroAssemblerARM::moveWithPatch): |
| (JSC::MacroAssemblerARM::branchPtrWithPatch): |
| (JSC::MacroAssemblerARM::storePtrWithPatch): |
| * assembler/MacroAssemblerARMv7.h: |
| (JSC::MacroAssemblerARMv7::add32): |
| (JSC::MacroAssemblerARMv7::and32): |
| (JSC::MacroAssemblerARMv7::lshift32): |
| (JSC::MacroAssemblerARMv7::mul32): |
| (JSC::MacroAssemblerARMv7::or32): |
| (JSC::MacroAssemblerARMv7::rshift32): |
| (JSC::MacroAssemblerARMv7::urshift32): |
| (JSC::MacroAssemblerARMv7::sub32): |
| (JSC::MacroAssemblerARMv7::xor32): |
| (JSC::MacroAssemblerARMv7::load32): |
| (JSC::MacroAssemblerARMv7::load32WithAddressOffsetPatch): |
| (JSC::MacroAssemblerARMv7::load16): |
| (JSC::MacroAssemblerARMv7::store32WithAddressOffsetPatch): |
| (JSC::MacroAssemblerARMv7::store32): |
| (JSC::MacroAssemblerARMv7::loadDouble): |
| (JSC::MacroAssemblerARMv7::storeDouble): |
| (JSC::MacroAssemblerARMv7::push): |
| (JSC::MacroAssemblerARMv7::move): |
| (JSC::MacroAssemblerARMv7::compare32): |
| (JSC::MacroAssemblerARMv7::test32): |
| (JSC::MacroAssemblerARMv7::branch32): |
| (JSC::MacroAssemblerARMv7::branch32WithUnalignedHalfWords): |
| (JSC::MacroAssemblerARMv7::branch16): |
| (JSC::MacroAssemblerARMv7::branch8): |
| (JSC::MacroAssemblerARMv7::branchTest32): |
| (JSC::MacroAssemblerARMv7::branchTest8): |
| (JSC::MacroAssemblerARMv7::branchAdd32): |
| (JSC::MacroAssemblerARMv7::branchMul32): |
| (JSC::MacroAssemblerARMv7::branchSub32): |
| (JSC::MacroAssemblerARMv7::nearCall): |
| (JSC::MacroAssemblerARMv7::call): |
| (JSC::MacroAssemblerARMv7::set32Compare32): |
| (JSC::MacroAssemblerARMv7::set8Compare32): |
| (JSC::MacroAssemblerARMv7::set32Test32): |
| (JSC::MacroAssemblerARMv7::set32Test8): |
| (JSC::MacroAssemblerARMv7::moveWithPatch): |
| (JSC::MacroAssemblerARMv7::branchPtrWithPatch): |
| (JSC::MacroAssemblerARMv7::storePtrWithPatch): |
| (JSC::MacroAssemblerARMv7::tailRecursiveCall): |
| (JSC::MacroAssemblerARMv7::makeJump): |
| (JSC::MacroAssemblerARMv7::makeBranch): |
| (JSC::MacroAssemblerARMv7::setupArmAddress): |
| (JSC::MacroAssemblerARMv7::makeBaseIndexBase): |
| (JSC::MacroAssemblerARMv7::moveFixedWidthEncoding): |
| * assembler/MacroAssemblerMIPS.h: |
| (JSC::MacroAssemblerMIPS::add32): |
| (JSC::MacroAssemblerMIPS::and32): |
| (JSC::MacroAssemblerMIPS::lshift32): |
| (JSC::MacroAssemblerMIPS::mul32): |
| (JSC::MacroAssemblerMIPS::or32): |
| (JSC::MacroAssemblerMIPS::rshift32): |
| (JSC::MacroAssemblerMIPS::urshift32): |
| (JSC::MacroAssemblerMIPS::sub32): |
| (JSC::MacroAssemblerMIPS::xor32): |
| (JSC::MacroAssemblerMIPS::load32): |
| (JSC::MacroAssemblerMIPS::load32WithAddressOffsetPatch): |
| (JSC::MacroAssemblerMIPS::store32WithAddressOffsetPatch): |
| (JSC::MacroAssemblerMIPS::store32): |
| (JSC::MacroAssemblerMIPS::push): |
| (JSC::MacroAssemblerMIPS::move): |
| (JSC::MacroAssemblerMIPS::branch8): |
| (JSC::MacroAssemblerMIPS::branch32): |
| (JSC::MacroAssemblerMIPS::branch32WithUnalignedHalfWords): |
| (JSC::MacroAssemblerMIPS::branch16): |
| (JSC::MacroAssemblerMIPS::branchTest32): |
| (JSC::MacroAssemblerMIPS::branchTest8): |
| (JSC::MacroAssemblerMIPS::branchAdd32): |
| (JSC::MacroAssemblerMIPS::branchMul32): |
| (JSC::MacroAssemblerMIPS::branchSub32): |
| (JSC::MacroAssemblerMIPS::set8Compare32): |
| (JSC::MacroAssemblerMIPS::set32Compare32): |
| (JSC::MacroAssemblerMIPS::set32Test8): |
| (JSC::MacroAssemblerMIPS::set32Test32): |
| (JSC::MacroAssemblerMIPS::moveWithPatch): |
| (JSC::MacroAssemblerMIPS::branchPtrWithPatch): |
| (JSC::MacroAssemblerMIPS::storePtrWithPatch): |
| (JSC::MacroAssemblerMIPS::tailRecursiveCall): |
| (JSC::MacroAssemblerMIPS::loadDouble): |
| (JSC::MacroAssemblerMIPS::storeDouble): |
| (JSC::MacroAssemblerMIPS::branchTruncateDoubleToInt32): |
| * assembler/MacroAssemblerX86.h: |
| (JSC::MacroAssemblerX86::add32): |
| (JSC::MacroAssemblerX86::addWithCarry32): |
| (JSC::MacroAssemblerX86::and32): |
| (JSC::MacroAssemblerX86::or32): |
| (JSC::MacroAssemblerX86::sub32): |
| (JSC::MacroAssemblerX86::store32): |
| (JSC::MacroAssemblerX86::branch32): |
| (JSC::MacroAssemblerX86::moveWithPatch): |
| (JSC::MacroAssemblerX86::branchPtrWithPatch): |
| (JSC::MacroAssemblerX86::storePtrWithPatch): |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::add32): |
| (JSC::MacroAssemblerX86Common::and32): |
| (JSC::MacroAssemblerX86Common::lshift32): |
| (JSC::MacroAssemblerX86Common::mul32): |
| (JSC::MacroAssemblerX86Common::or32): |
| (JSC::MacroAssemblerX86Common::rshift32): |
| (JSC::MacroAssemblerX86Common::urshift32): |
| (JSC::MacroAssemblerX86Common::sub32): |
| (JSC::MacroAssemblerX86Common::xor32): |
| (JSC::MacroAssemblerX86Common::store32): |
| (JSC::MacroAssemblerX86Common::branchTruncateDoubleToInt32): |
| (JSC::MacroAssemblerX86Common::push): |
| (JSC::MacroAssemblerX86Common::move): |
| (JSC::MacroAssemblerX86Common::branch8): |
| (JSC::MacroAssemblerX86Common::branch32): |
| (JSC::MacroAssemblerX86Common::branch32WithUnalignedHalfWords): |
| (JSC::MacroAssemblerX86Common::branch16): |
| (JSC::MacroAssemblerX86Common::branchTest32): |
| (JSC::MacroAssemblerX86Common::branchTest8): |
| (JSC::MacroAssemblerX86Common::branchAdd32): |
| (JSC::MacroAssemblerX86Common::branchMul32): |
| (JSC::MacroAssemblerX86Common::branchSub32): |
| (JSC::MacroAssemblerX86Common::set8Compare32): |
| (JSC::MacroAssemblerX86Common::set32Compare32): |
| (JSC::MacroAssemblerX86Common::set32Test8): |
| (JSC::MacroAssemblerX86Common::set32Test32): |
| * assembler/MacroAssemblerX86_64.h: |
| (JSC::MacroAssemblerX86_64::add32): |
| (JSC::MacroAssemblerX86_64::and32): |
| (JSC::MacroAssemblerX86_64::or32): |
| (JSC::MacroAssemblerX86_64::sub32): |
| (JSC::MacroAssemblerX86_64::loadDouble): |
| (JSC::MacroAssemblerX86_64::addDouble): |
| (JSC::MacroAssemblerX86_64::convertInt32ToDouble): |
| (JSC::MacroAssemblerX86_64::store32): |
| (JSC::MacroAssemblerX86_64::call): |
| (JSC::MacroAssemblerX86_64::tailRecursiveCall): |
| (JSC::MacroAssemblerX86_64::makeTailRecursiveCall): |
| (JSC::MacroAssemblerX86_64::addPtr): |
| (JSC::MacroAssemblerX86_64::andPtr): |
| (JSC::MacroAssemblerX86_64::orPtr): |
| (JSC::MacroAssemblerX86_64::subPtr): |
| (JSC::MacroAssemblerX86_64::xorPtr): |
| (JSC::MacroAssemblerX86_64::storePtr): |
| (JSC::MacroAssemblerX86_64::setPtr): |
| (JSC::MacroAssemblerX86_64::branchPtr): |
| (JSC::MacroAssemblerX86_64::branchTestPtr): |
| (JSC::MacroAssemblerX86_64::branchSubPtr): |
| (JSC::MacroAssemblerX86_64::moveWithPatch): |
| (JSC::MacroAssemblerX86_64::branchPtrWithPatch): |
| (JSC::MacroAssemblerX86_64::storePtrWithPatch): |
| (JSC::MacroAssemblerX86_64::branchTest8): |
| * dfg/DFGJITCodeGenerator.h: |
| (JSC::DFG::JITCodeGenerator::callOperation): |
| * dfg/DFGJITCompiler.cpp: |
| (JSC::DFG::JITCompiler::jitAssertIsInt32): |
| (JSC::DFG::JITCompiler::emitCount): |
| * dfg/DFGJITCompiler.h: |
| (JSC::DFG::JITCompiler::emitPutImmediateToCallFrameHeader): |
| * dfg/DFGNonSpeculativeJIT.cpp: |
| (JSC::DFG::NonSpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::fillSpeculateCell): |
| (JSC::DFG::SpeculativeJIT::compile): |
| * jit/JIT.cpp: |
| (JSC::JIT::emitTimeoutCheck): |
| (JSC::JIT::privateCompile): |
| * jit/JIT.h: |
| * jit/JITArithmetic.cpp: |
| (JSC::JIT::emit_op_urshift): |
| (JSC::JIT::emitSlow_op_urshift): |
| (JSC::JIT::emit_op_post_inc): |
| (JSC::JIT::emit_op_post_dec): |
| (JSC::JIT::emit_op_pre_inc): |
| (JSC::JIT::emit_op_pre_dec): |
| (JSC::JIT::emit_op_mod): |
| * jit/JITArithmetic32_64.cpp: |
| (JSC::JIT::emit_op_negate): |
| (JSC::JIT::emit_op_jnless): |
| (JSC::JIT::emit_op_jless): |
| (JSC::JIT::emit_op_jlesseq): |
| (JSC::JIT::emit_op_lshift): |
| (JSC::JIT::emitRightShift): |
| (JSC::JIT::emitRightShiftSlowCase): |
| (JSC::JIT::emit_op_bitand): |
| (JSC::JIT::emit_op_bitor): |
| (JSC::JIT::emit_op_bitxor): |
| (JSC::JIT::emit_op_bitnot): |
| (JSC::JIT::emit_op_post_inc): |
| (JSC::JIT::emit_op_post_dec): |
| (JSC::JIT::emitSlow_op_post_dec): |
| (JSC::JIT::emit_op_pre_inc): |
| (JSC::JIT::emit_op_pre_dec): |
| (JSC::JIT::emit_op_add): |
| (JSC::JIT::emitAdd32Constant): |
| (JSC::JIT::emit_op_sub): |
| (JSC::JIT::emitSub32Constant): |
| (JSC::JIT::emitBinaryDoubleOp): |
| (JSC::JIT::emit_op_mul): |
| (JSC::JIT::emitSlow_op_mul): |
| (JSC::JIT::emit_op_div): |
| (JSC::JIT::emit_op_mod): |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallVarargs): |
| (JSC::JIT::compileOpCall): |
| (JSC::JIT::compileOpCallSlowCase): |
| * jit/JITCall32_64.cpp: |
| (JSC::JIT::compileOpCallVarargs): |
| (JSC::JIT::emit_op_ret_object_or_this): |
| (JSC::JIT::compileOpCall): |
| (JSC::JIT::compileOpCallSlowCase): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitPutCellToCallFrameHeader): |
| (JSC::JIT::emitPutIntToCallFrameHeader): |
| (JSC::JIT::emitPutImmediateToCallFrameHeader): |
| (JSC::JIT::emitLoadCharacterString): |
| (JSC::JIT::restoreArgumentReferenceForTrampoline): |
| (JSC::JIT::checkStructure): |
| (JSC::JIT::setSamplingFlag): |
| (JSC::JIT::clearSamplingFlag): |
| (JSC::JIT::emitCount): |
| (JSC::JIT::sampleInstruction): |
| (JSC::JIT::sampleCodeBlock): |
| (JSC::JIT::emitStoreInt32): |
| (JSC::JIT::emitStoreCell): |
| (JSC::JIT::emitStoreBool): |
| (JSC::JIT::emitJumpSlowCaseIfNotJSCell): |
| (JSC::JIT::emitInitRegister): |
| (JSC::JIT::emitJumpIfJSCell): |
| (JSC::JIT::emitJumpIfNotJSCell): |
| (JSC::JIT::emitJumpIfImmediateInteger): |
| (JSC::JIT::emitJumpIfNotImmediateInteger): |
| (JSC::JIT::emitFastArithDeTagImmediate): |
| (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero): |
| (JSC::JIT::emitFastArithReTagImmediate): |
| (JSC::JIT::emitTagAsBoolImmediate): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| (JSC::JIT::privateCompileCTINativeCall): |
| (JSC::JIT::emit_op_check_has_instance): |
| (JSC::JIT::emit_op_instanceof): |
| (JSC::JIT::emit_op_ret_object_or_this): |
| (JSC::JIT::emit_op_resolve): |
| (JSC::JIT::emit_op_to_primitive): |
| (JSC::JIT::emit_op_resolve_base): |
| (JSC::JIT::emit_op_ensure_property_exists): |
| (JSC::JIT::emit_op_resolve_skip): |
| (JSC::JIT::emit_op_resolve_global): |
| (JSC::JIT::emitSlow_op_resolve_global): |
| (JSC::JIT::emit_op_not): |
| (JSC::JIT::emit_op_jfalse): |
| (JSC::JIT::emit_op_jeq_null): |
| (JSC::JIT::emit_op_jneq_null): |
| (JSC::JIT::emit_op_jneq_ptr): |
| (JSC::JIT::emit_op_jsr): |
| (JSC::JIT::emit_op_resolve_with_base): |
| (JSC::JIT::emit_op_new_func_exp): |
| (JSC::JIT::emit_op_jtrue): |
| (JSC::JIT::emit_op_get_pnames): |
| (JSC::JIT::emit_op_next_pname): |
| (JSC::JIT::emit_op_to_jsnumber): |
| (JSC::JIT::emit_op_push_new_scope): |
| (JSC::JIT::emit_op_catch): |
| (JSC::JIT::emit_op_eq_null): |
| (JSC::JIT::emit_op_neq_null): |
| (JSC::JIT::emit_op_init_lazy_reg): |
| (JSC::JIT::emit_op_convert_this): |
| (JSC::JIT::emit_op_convert_this_strict): |
| (JSC::JIT::emitSlow_op_not): |
| (JSC::JIT::emitSlow_op_neq): |
| (JSC::JIT::emit_op_get_arguments_length): |
| (JSC::JIT::emitSlow_op_get_arguments_length): |
| (JSC::JIT::emit_op_get_argument_by_val): |
| (JSC::JIT::emitSlow_op_resolve_global_dynamic): |
| (JSC::JIT::emit_op_new_regexp): |
| (JSC::JIT::emit_op_load_varargs): |
| (JSC::JIT::emitSlow_op_load_varargs): |
| (JSC::JIT::emit_op_new_func): |
| * jit/JITOpcodes32_64.cpp: |
| (JSC::JIT::privateCompileCTIMachineTrampolines): |
| (JSC::JIT::privateCompileCTINativeCall): |
| (JSC::JIT::emit_op_loop_if_lesseq): |
| (JSC::JIT::emit_op_check_has_instance): |
| (JSC::JIT::emit_op_instanceof): |
| (JSC::JIT::emit_op_get_scoped_var): |
| (JSC::JIT::emit_op_put_scoped_var): |
| (JSC::JIT::emit_op_tear_off_activation): |
| (JSC::JIT::emit_op_tear_off_arguments): |
| (JSC::JIT::emit_op_resolve): |
| (JSC::JIT::emit_op_to_primitive): |
| (JSC::JIT::emit_op_resolve_base): |
| (JSC::JIT::emit_op_ensure_property_exists): |
| (JSC::JIT::emit_op_resolve_skip): |
| (JSC::JIT::emit_op_resolve_global): |
| (JSC::JIT::emitSlow_op_resolve_global): |
| (JSC::JIT::emit_op_not): |
| (JSC::JIT::emit_op_jfalse): |
| (JSC::JIT::emit_op_jtrue): |
| (JSC::JIT::emit_op_jeq_null): |
| (JSC::JIT::emit_op_jneq_null): |
| (JSC::JIT::emit_op_jneq_ptr): |
| (JSC::JIT::emit_op_jsr): |
| (JSC::JIT::emit_op_eq): |
| (JSC::JIT::emitSlow_op_eq): |
| (JSC::JIT::emit_op_neq): |
| (JSC::JIT::emitSlow_op_neq): |
| (JSC::JIT::compileOpStrictEq): |
| (JSC::JIT::emit_op_eq_null): |
| (JSC::JIT::emit_op_neq_null): |
| (JSC::JIT::emit_op_resolve_with_base): |
| (JSC::JIT::emit_op_new_func_exp): |
| (JSC::JIT::emit_op_get_pnames): |
| (JSC::JIT::emit_op_next_pname): |
| (JSC::JIT::emit_op_to_jsnumber): |
| (JSC::JIT::emit_op_push_new_scope): |
| (JSC::JIT::emit_op_catch): |
| (JSC::JIT::emit_op_create_activation): |
| (JSC::JIT::emit_op_create_arguments): |
| (JSC::JIT::emit_op_convert_this): |
| (JSC::JIT::emit_op_convert_this_strict): |
| (JSC::JIT::emit_op_get_arguments_length): |
| (JSC::JIT::emitSlow_op_get_arguments_length): |
| (JSC::JIT::emit_op_get_argument_by_val): |
| (JSC::JIT::softModulo): |
| * jit/JITPropertyAccess.cpp: |
| (JSC::JIT::stringGetByValStubGenerator): |
| (JSC::JIT::emit_op_get_by_val): |
| (JSC::JIT::emitSlow_op_get_by_val): |
| (JSC::JIT::emit_op_get_by_pname): |
| (JSC::JIT::emit_op_put_by_val): |
| (JSC::JIT::emit_op_put_by_index): |
| (JSC::JIT::emit_op_put_getter): |
| (JSC::JIT::emit_op_put_setter): |
| (JSC::JIT::emit_op_del_by_id): |
| (JSC::JIT::emit_op_get_by_id): |
| (JSC::JIT::emit_op_put_by_id): |
| (JSC::JIT::emit_op_method_check): |
| (JSC::JIT::compileGetByIdHotPath): |
| (JSC::JIT::compileGetByIdSlowCase): |
| (JSC::JIT::emitSlow_op_put_by_id): |
| (JSC::JIT::testPrototype): |
| (JSC::JIT::privateCompilePutByIdTransition): |
| (JSC::JIT::privateCompilePatchGetArrayLength): |
| (JSC::JIT::privateCompileGetByIdProto): |
| (JSC::JIT::privateCompileGetByIdSelfList): |
| (JSC::JIT::privateCompileGetByIdProtoList): |
| (JSC::JIT::privateCompileGetByIdChainList): |
| (JSC::JIT::privateCompileGetByIdChain): |
| * jit/JITPropertyAccess32_64.cpp: |
| (JSC::JIT::emit_op_put_getter): |
| (JSC::JIT::emit_op_put_setter): |
| (JSC::JIT::emit_op_del_by_id): |
| (JSC::JIT::emit_op_get_by_id): |
| (JSC::JIT::emit_op_put_by_id): |
| (JSC::JIT::emit_op_method_check): |
| (JSC::JIT::stringGetByValStubGenerator): |
| (JSC::JIT::emit_op_get_by_val): |
| (JSC::JIT::emitSlow_op_get_by_val): |
| (JSC::JIT::emit_op_put_by_val): |
| (JSC::JIT::compileGetByIdHotPath): |
| (JSC::JIT::compileGetByIdSlowCase): |
| (JSC::JIT::emitSlow_op_put_by_id): |
| (JSC::JIT::testPrototype): |
| (JSC::JIT::privateCompilePutByIdTransition): |
| (JSC::JIT::privateCompilePatchGetArrayLength): |
| (JSC::JIT::privateCompileGetByIdProto): |
| (JSC::JIT::privateCompileGetByIdSelfList): |
| (JSC::JIT::privateCompileGetByIdProtoList): |
| (JSC::JIT::privateCompileGetByIdChainList): |
| (JSC::JIT::privateCompileGetByIdChain): |
| (JSC::JIT::emit_op_get_by_pname): |
| * jit/JITStubCall.h: |
| (JSC::JITStubCall::addArgument): |
| * jit/JITStubs.cpp: |
| (JSC::getPolymorphicAccessStructureListSlot): |
| (JSC::DEFINE_STUB_FUNCTION): |
| * jit/JSInterfaceJIT.h: |
| (JSC::JSInterfaceJIT::emitJumpIfNotJSCell): |
| (JSC::JSInterfaceJIT::emitLoadInt32): |
| (JSC::JSInterfaceJIT::emitLoadDouble): |
| * jit/SpecializedThunkJIT.h: |
| (JSC::SpecializedThunkJIT::SpecializedThunkJIT): |
| (JSC::SpecializedThunkJIT::loadJSStringArgument): |
| (JSC::SpecializedThunkJIT::tagReturnAsInt32): |
| (JSC::SpecializedThunkJIT::tagReturnAsJSCell): |
| * jit/ThunkGenerators.cpp: |
| (JSC::charToString): |
| (JSC::powThunkGenerator): |
| * yarr/YarrJIT.cpp: |
| (JSC::Yarr::YarrGenerator::matchCharacterClass): |
| (JSC::Yarr::YarrGenerator::storeToFrame): |
| (JSC::Yarr::YarrGenerator::storeToFrameWithPatch): |
| (JSC::Yarr::YarrGenerator::ParenthesesTail::generateCode): |
| (JSC::Yarr::YarrGenerator::generatePatternCharacterSingle): |
| (JSC::Yarr::YarrGenerator::generatePatternCharacterFixed): |
| (JSC::Yarr::YarrGenerator::generatePatternCharacterGreedy): |
| (JSC::Yarr::YarrGenerator::generatePatternCharacterNonGreedy): |
| (JSC::Yarr::YarrGenerator::generateCharacterClassFixed): |
| (JSC::Yarr::YarrGenerator::generateCharacterClassGreedy): |
| (JSC::Yarr::YarrGenerator::generateCharacterClassNonGreedy): |
| (JSC::Yarr::YarrGenerator::generateParenthesesSingle): |
| (JSC::Yarr::YarrGenerator::generateDisjunction): |
| |
| 2011-03-28 Andras Becsi <abecsi@webkit.org> |
| |
| Reviewed by Csaba Osztrogonác. |
| |
| [Qt] Fix the linking of jsc with MinGW after r81963. |
| |
| * jsc.pro: add -l and remove the lib suffix. |
| |
| 2011-03-27 Ben Taylor <bentaylor.solx86@gmail.com> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=57170 Fix last elements |
| in an enum to remove a trailing comma. Sun Studio 12 CC errors out. |
| |
| Compile fix only, no actual code change. |
| |
| * wtf/MessageQueue.h: |
| |
| 2011-03-25 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Allow defineOwnProperty to work on DOMObjects |
| https://bugs.webkit.org/show_bug.cgi?id=57129 |
| |
| Fix a couple of places where we uses getter()/setter() rather |
| than [gs]etterPresent(). |
| |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::defineOwnProperty): |
| |
| 2011-03-25 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Crash when paused at a breakpoint caused by inaccurate Activation records. |
| https://bugs.webkit.org/show_bug.cgi?id=57120 |
| |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::symbolTableGet): |
| (JSC::JSActivation::symbolTablePut): |
| (JSC::JSActivation::getOwnPropertyNames): |
| (JSC::JSActivation::symbolTablePutWithAttributes): |
| |
| 2011-03-24 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Crash in debugger beneath MarkStack::drain @ me.com, ibm.com |
| https://bugs.webkit.org/show_bug.cgi?id=57080 |
| <rdar://problem/8525907> |
| |
| The crash was caused by changes in the executable after recompilation. |
| |
| The fix is for the activation to copy the data it needs instead of |
| relying on the data in the executable. |
| |
| SunSpider and v8 report no change. |
| |
| * runtime/Arguments.h: |
| (JSC::JSActivation::copyRegisters): Use our own data members instead of |
| reading data out of the executable. |
| |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::JSActivation): Initialize our data members. |
| |
| (JSC::JSActivation::markChildren): |
| (JSC::JSActivation::symbolTableGet): |
| (JSC::JSActivation::symbolTablePut): |
| (JSC::JSActivation::getOwnPropertyNames): |
| (JSC::JSActivation::symbolTablePutWithAttributes): |
| (JSC::JSActivation::isDynamicScope): |
| (JSC::JSActivation::argumentsGetter): Use our own data members instead of |
| reading data out of the executable. |
| |
| * runtime/JSActivation.h: Added new data members to track data previously |
| tracked by the executable. Since I've removed the executable pointer, |
| on a 64bit system, I've only made activations bigger by an int. |
| |
| 2011-03-25 David Kilzer <ddkilzer@apple.com> |
| |
| Remove duplicate entry from JavaScriptCore.exp |
| |
| JSC::createStackOverflowError(JSC::ExecState*) was originally |
| exported in r60057, then duplicated in r60392. |
| |
| * JavaScriptCore.exp: Removed duplicate entry. |
| |
| 2011-03-25 Jarred Nicholls <jarred@sencha.com> |
| |
| Reviewed by Ariya Hidayat. |
| |
| [Qt] MSVC Build Error - need to link advapi32.lib for jsc.exe |
| https://bugs.webkit.org/show_bug.cgi?id=56098 |
| |
| Need to link advapi32.lib for jsc.exe since wtf/OSRandomSource.cpp uses the Win32 Crypto API |
| |
| * jsc.pro: |
| |
| 2011-03-24 Nikolas Zimmermann <nzimmermann@rim.com> |
| |
| Reviewed by Darin Adler. |
| |
| Introduce WTF HexNumber.h |
| https://bugs.webkit.org/show_bug.cgi?id=56099 |
| |
| Introduce a set of functions that ease converting from a bye or a number to a hex string, |
| replacing several of these conversions and String::format("%x") usages all over WebCore. |
| |
| * GNUmakefile.am: Add HexNumber.h to build. |
| * JavaScriptCore.exp: Export StringBuilder::reserveCapacity. |
| * JavaScriptCore.gypi: Add HexNumber.h to build. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export StringBuilder::reserveCapacity. |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add HexNumber.h to build. |
| * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. |
| * wtf/CMakeLists.txt: Ditto. |
| * wtf/HexNumber.h: Added. |
| (WTF::Internal::hexDigitsForMode): Internal helper. |
| (WTF::appendByteAsHex): Free function, that appends a byte as hex string into a destination. |
| (WTF::placeByteAsHex): Ditto, but places the result using *foo++ = '..' or foo[index++] = '..' |
| (WTF::appendUnsignedAsHex): Free function, that appends a number as hex string into a destination. |
| |
| 2011-03-24 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix take 2: Add new symobl. |
| |
| (I should have used the EWS bots for this!) |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2011-03-24 Geoffrey Garen <ggaren@apple.com> |
| |
| Windows build fix take 1: Removed old symobl. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2011-03-24 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Ensure that all compilation takes place within a dynamic global object scope |
| https://bugs.webkit.org/show_bug.cgi?id=57054 |
| <rdar://problem/9083011> |
| |
| Otherwise, entry to the global object scope might throw away the code |
| we just compiled, causing a crash. |
| |
| * JavaScriptCore.exp: Updated for signature change. |
| |
| * debugger/Debugger.cpp: |
| (JSC::evaluateInGlobalCallFrame): |
| * debugger/DebuggerCallFrame.cpp: |
| (JSC::DebuggerCallFrame::evaluate): Removed explicit compilation calls |
| here because (a) they took place outside a dynamic global object scope |
| and (b) they were redundant. |
| |
| * interpreter/CachedCall.h: |
| (JSC::CachedCall::CachedCall): Updated for signature change. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::execute): |
| (JSC::Interpreter::executeCall): |
| (JSC::Interpreter::executeConstruct): Declare our dynamic global object |
| scope earlier, to ensure that compilation takes place within it. |
| |
| * runtime/Completion.cpp: |
| (JSC::evaluate): Removed explicit compilation calls here because (a) |
| they took place outside a dynamic global object scope and (b) they were |
| redundant. |
| |
| * runtime/Executable.h: |
| (JSC::EvalExecutable::compile): |
| (JSC::ProgramExecutable::compile): |
| (JSC::FunctionExecutable::compileForCall): |
| (JSC::FunctionExecutable::compileForConstruct): Added an ASSERT to |
| verify our new invariant that all compilation takes place within a |
| dynamic global object scope. |
| |
| * runtime/JSGlobalObject.cpp: |
| (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): |
| * runtime/JSGlobalObject.h: Changed the signature of DynamicGlobalObjectScope |
| to require a JSGlobalData instead of an ExecState* since it is often |
| easier to provide the former, and the latter was not necessary. |
| |
| 2011-03-24 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| REGRESSION (r79987-r80210): Crash in JSWeakObjectMapClear |
| https://bugs.webkit.org/show_bug.cgi?id=55671 |
| |
| This is no longer necessary, and it seems that with the new weakmap |
| model it's simply unsafe, so this reduces it to a no-op. |
| |
| * API/JSWeakObjectMapRefPrivate.cpp: |
| |
| 2011-03-24 Ben Taylor <bentaylor.solx86@gmail.com> |
| |
| Reviewed by Darin Adler. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=20302 |
| Correct implementation of signbit on Solaris |
| |
| * wtf/MathExtras.h: |
| (signbit): |
| |
| 2011-03-23 Mark Rowe <mrowe@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| <rdar://problem/7959320> Threads that use APIs above the BSD layer must be registered with the Obj-C GC. |
| |
| * wtf/ThreadingPthreads.cpp: |
| (WTF::initializeCurrentThreadInternal): |
| |
| 2011-03-23 Mark Rowe <mrowe@apple.com> |
| |
| Stop setting OTHER_OPTIONS in JavaScriptCore's Makefile. |
| |
| It's not necessary to pass "-target All" as xcodebuild always builds the |
| first target in the project unless otherwise specified. The presence of |
| that option also breaks "make clean" since that results in both the |
| -target and -alltargets options being passed to xcodebuild. |
| |
| * Makefile: |
| |
| 2011-03-23 Pavel Feldman <pfeldman@chromium.org> |
| |
| Not reviewed: bring back Vector::contains that was removed as a part of roll back. |
| |
| * wtf/Vector.h: |
| (WTF::::contains): |
| |
| 2011-03-23 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r81686. |
| http://trac.webkit.org/changeset/81686 |
| https://bugs.webkit.org/show_bug.cgi?id=56914 |
| |
| Breaks webkit_tests in Chromium again. (Requested by pfeldman |
| on #webkit). |
| |
| * wtf/Vector.h: |
| |
| 2011-03-23 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| JavaScriptCore GYP build should work on a case-sensitive file system |
| https://bugs.webkit.org/show_bug.cgi?id=56911 |
| |
| The issue is that there are two UString.h headers, one named UString.h |
| and one named ustring.h. This patch excludes ustring.h from the header |
| map to avoid confusion. While I was editing this part of the GYP file, |
| I cleaned up the exclude rules to be more modern. |
| |
| * gyp/JavaScriptCore.gyp: |
| |
| 2011-03-22 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| REGRESSION (r78382): No scripts appear in the Web Inspector's Scripts |
| panel on Windows, and many inspector regression tests are failing |
| https://bugs.webkit.org/show_bug.cgi?id=54490 |
| |
| The bug was caused by two different classes using the same name (Recompiler). |
| |
| * debugger/Debugger.cpp: |
| * runtime/JSGlobalData.cpp: |
| (WTF::Recompiler::operator()): Put Recompiler in an anonymous namespace, |
| so our two recompilers' inline functions don't stomp each other at |
| link time. |
| |
| 2011-03-22 Sam Weinig <sam@webkit.org> |
| |
| Reviewed by Mark Rowe. |
| |
| Remove USE_WK_SCROLLBAR_PAINTER_AND_CONTROLLER. |
| <rdar://problem/8944718> |
| |
| * DerivedSources.make: |
| Remove generation of USE_WK_SCROLLBAR_PAINTER_AND_CONTROLLER. |
| |
| 2011-03-22 Gabor Loki <loki@webkit.org> |
| |
| Reviewed by Csaba Osztrogonác. |
| |
| [Qt] Add DFG module to build system (disabled by default). |
| https://bugs.webkit.org/show_bug.cgi?id=56845 |
| |
| * JavaScriptCore.pri: |
| * JavaScriptCore.pro: |
| |
| 2011-03-22 Eric Seidel <eric@webkit.org> |
| |
| Reviewed by Adam Barth. |
| |
| Add support to build-webkit for building with gyp-generated project files |
| https://bugs.webkit.org/show_bug.cgi?id=56877 |
| |
| Found a couple missing Private headers while trying to make WebCore build. |
| |
| * JavaScriptCore.gypi: |
| |
| 2011-03-22 Eric Seidel <eric@webkit.org> |
| |
| Reviewed by Adam Barth. |
| |
| Make it possible to build JavaScriptCore and WebCore gyp builds outside of Source |
| https://bugs.webkit.org/show_bug.cgi?id=56867 |
| |
| This should make it possible to build the gyp-generated JavaScriptCore.xcodeproj |
| from a JavaScriptCore directory outside of Source. |
| |
| * gyp/JavaScriptCore.gyp: |
| * gyp/run-if-exists.sh: Added. |
| * gyp/update-info-plist.sh: Added. |
| |
| 2011-03-22 Eric Seidel <eric@webkit.org> |
| |
| Reviewed by Adam Barth. |
| |
| Add Profiling Configuration to JavaScriptCore gyp build |
| https://bugs.webkit.org/show_bug.cgi?id=56862 |
| |
| It appears this is identical to Release, but I suspect |
| there is someone/thing who uses the Profiling target |
| so we're adding it for completeness. |
| |
| * gyp/JavaScriptCore.gyp: |
| |
| 2011-03-22 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Remove os_win32_files variable from the GYP build |
| https://bugs.webkit.org/show_bug.cgi?id=56804 |
| |
| Now that our understanding of GYP is sufficiently advanced, we don't |
| need os_win32_files any more. (Turns out Eric was right, as he always |
| is.) |
| |
| * JavaScriptCore.gypi: |
| |
| 2011-03-22 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| GYP build of JavaScriptCore should be able to link from an empty WebKitBuild directory |
| https://bugs.webkit.org/show_bug.cgi?id=56803 |
| |
| Previously, we thought we should generate the derived source files in |
| the shared intermediate build products directory, but there are |
| assumptions built into other parts of the Mac build system that the |
| derived source files will be generated in a particular subdirectory of |
| the build products directory. |
| |
| This patch is a partial revert of the change that moved the derived |
| source files to the shared intermediate directory. After this patch, |
| the GYP build can build JavaScriptCore without help from the main |
| normal build system. |
| |
| * JavaScriptCore.gypi: |
| * gyp/JavaScriptCore.gyp: |
| * gyp/generate-derived-sources.sh: |
| * gyp/generate-dtrace-header.sh: |
| |
| 2011-03-22 Jay Civelli <jcivelli@chromium.org> |
| |
| Reviewed by David Levin. |
| |
| Adding a contains method to Vector. |
| https://bugs.webkit.org/show_bug.cgi?id=55859 |
| |
| * wtf/Vector.h: |
| (WTF::Vector::contains): |
| |
| 2011-03-22 Gabor Loki <loki@webkit.org> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Fix a bunch of typos in DFG. |
| https://bugs.webkit.org/show_bug.cgi?id=56813 |
| |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::parse): |
| * dfg/DFGGenerationInfo.h: |
| (JSC::DFG::GenerationInfo::setSpilled): |
| * dfg/DFGGraph.cpp: |
| (JSC::DFG::Graph::dump): |
| * dfg/DFGGraph.h: |
| * dfg/DFGJITCodeGenerator.h: |
| (JSC::DFG::JITCodeGenerator::setupStubArguments): |
| * dfg/DFGJITCompiler.cpp: |
| (JSC::DFG::JITCompiler::compileFunction): |
| * dfg/DFGJITCompiler.h: |
| * dfg/DFGNode.h: |
| * dfg/DFGNonSpeculativeJIT.h: |
| * dfg/DFGOperations.h: |
| * dfg/DFGRegisterBank.h: |
| (JSC::DFG::RegisterBank::allocate): |
| * dfg/DFGScoreBoard.h: |
| (JSC::DFG::ScoreBoard::~ScoreBoard): |
| (JSC::DFG::ScoreBoard::allocate): |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.h: |
| |
| 2011-03-22 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Production configuration in GYP isn't set up correctly |
| https://bugs.webkit.org/show_bug.cgi?id=56786 |
| |
| Update JavaScriptCore.gyp with information mined from |
| JavaScriptCore.xcodeproj. |
| |
| * JavaScriptCore.gypi: |
| * gyp/JavaScriptCore.gyp: |
| |
| 2011-03-22 Kent Tamura <tkent@chromium.org> |
| |
| Reviewed by Eric Seidel. |
| |
| REGRESSION(r80096): Number type input unexpectedly rounds fractional values |
| https://bugs.webkit.org/show_bug.cgi?id=56367 |
| |
| Introduce clampToInteger(unsigned). |
| |
| * wtf/MathExtras.h: |
| (clampToInteger): Added. |
| |
| 2011-03-21 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| GYP build should not have include paths that point within the source tree |
| https://bugs.webkit.org/show_bug.cgi?id=56788 |
| |
| Turns out we don't need these include paths anymore now that we have |
| header maps working properly. |
| |
| * gyp/JavaScriptCore.gyp: |
| - Also, remove jsc.cpp from the excluded list because it's not part |
| of the jsc_files variable instead of the javascriptcore_files |
| variable. |
| |
| 2011-03-21 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Solve the Assertions.cpp / -Wno-missing-format-attribute mystery |
| https://bugs.webkit.org/show_bug.cgi?id=56780 |
| |
| The reason we couldn't resolve this warning in the GYP build was that |
| the normal build disables this warning specifically for this file. |
| This patch takes the same approach as the previous patch to |
| WebCoreObjCExtras.mm in that it uses a pragma to suppress the warning |
| (rather than a build system configuration). |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| - Remove the special-case for this file. |
| * gyp/JavaScriptCore.gyp: |
| - Remove the work-around for this issue. |
| * wtf/Assertions.cpp: |
| - Add a pragma disabling this warning for this file. |
| |
| 2011-03-21 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Dimitri Glazkov. |
| |
| WebCore GYP build shouldn't crash on startup |
| https://bugs.webkit.org/show_bug.cgi?id=56776 |
| |
| Debug builds shouldn't define NDEBUG. This same logic exists in the |
| project.pbxproj file. |
| |
| * gyp/JavaScriptCore.gyp: |
| |
| 2011-03-21 Robert Kroeger <rjkroege@chromium.org> |
| |
| Reviewed by Antonio Gomes. |
| |
| Flag to enable/disable a GestureReocognizer framework |
| |
| https://bugs.webkit.org/show_bug.cgi?id=49345 |
| |
| * wtf/Platform.h: |
| |
| 2011-03-21 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Dimitri Glazkov. |
| |
| Add new files to JavaScriptCore.gypi |
| https://bugs.webkit.org/show_bug.cgi?id=56766 |
| |
| * JavaScriptCore.gypi: |
| |
| 2011-03-21 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r81377. |
| http://trac.webkit.org/changeset/81377 |
| https://bugs.webkit.org/show_bug.cgi?id=56765 |
| |
| WebPageSerializerTest.MultipleFrames is broken (Requested by |
| simonjam on #webkit). |
| |
| * wtf/Vector.h: |
| |
| 2011-03-21 Gabor Loki <loki@webkit.org> |
| |
| Reviewed by Csaba Osztrogonác. |
| |
| Extend constant pool to be able to store 16 bit instructions with a constant |
| https://bugs.webkit.org/show_bug.cgi?id=46796 |
| |
| The putShortWithConstantInt function inserts a 16 bit instruction which |
| refers a 32 bits constant or literal. This is a vital function for those |
| target which loads a PC relative value with a 16 bit instruction (like |
| Thumb-2 instruction set and SH4 architecture). |
| |
| * assembler/AssemblerBuffer.h: |
| (JSC::AssemblerBuffer::putIntegral): |
| (JSC::AssemblerBuffer::putIntegralUnchecked): |
| * assembler/AssemblerBufferWithConstantPool.h: |
| |
| 2011-03-21 Philippe Normand <pnormand@igalia.com> |
| |
| Unreviewed, GTK distcheck build fix. |
| |
| * GNUmakefile.am: |
| |
| 2011-03-20 Bill Budge <bbudge@chromium.org> |
| |
| Reviewed by Adam Barth. |
| |
| Rename ThreadSafeShared to ThreadSafeRefCounted |
| https://bugs.webkit.org/show_bug.cgi?id=56714 |
| |
| No new tests. Exposes no new functionality. |
| |
| * API/JSClassRef.h: |
| * API/OpaqueJSString.h: |
| * GNUmakefile.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * wtf/Atomics.h: |
| * wtf/CMakeLists.txt: |
| * wtf/CrossThreadRefCounted.h: |
| (WTF::CrossThreadRefCounted::CrossThreadRefCounted): |
| (WTF::::crossThreadCopy): |
| * wtf/ThreadSafeRefCounted.h: Copied from wtf/ThreadSafeShared.h. |
| (WTF::ThreadSafeRefCountedBase::ThreadSafeRefCountedBase): |
| (WTF::ThreadSafeRefCountedBase::ref): |
| (WTF::ThreadSafeRefCountedBase::refCount): |
| (WTF::ThreadSafeRefCountedBase::derefBase): |
| (WTF::ThreadSafeRefCounted::ThreadSafeRefCounted): |
| * wtf/ThreadSafeShared.h: Removed. |
| * wtf/Threading.h: |
| |
| 2011-03-19 Patrick Gansterer <paroga@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| Remove StringImpl::computeHash() |
| https://bugs.webkit.org/show_bug.cgi?id=49894 |
| |
| Replace remainig StringImpl::computeHash with StringImpl::computeHashStringHasher. |
| |
| * wtf/text/AtomicString.cpp: |
| (WTF::CStringTranslator::hash): |
| (WTF::UCharBufferTranslator::hash): |
| (WTF::HashAndCharactersTranslator::hash): |
| * wtf/text/StringImpl.h: |
| (WTF::StringImpl::setHash): |
| (WTF::StringImpl::hash): |
| |
| 2011-03-19 Patrick Gansterer <paroga@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| Rename WTF::StringHasher methods |
| https://bugs.webkit.org/show_bug.cgi?id=53532 |
| |
| Rename createHash to computeHash and createBlobHash to hashMemory. |
| Also add a using WTF::StringHasher in the header file. |
| |
| * profiler/CallIdentifier.h: |
| (JSC::CallIdentifier::Hash::hash): |
| * runtime/Identifier.cpp: |
| (JSC::IdentifierCStringTranslator::hash): |
| (JSC::IdentifierUCharBufferTranslator::hash): |
| * wtf/StringHasher.h: |
| (WTF::StringHasher::computeHash): |
| (WTF::StringHasher::hashMemory): |
| * wtf/text/StringHash.h: |
| (WTF::CaseFoldingHash::hash): |
| * wtf/text/StringImpl.h: |
| (WTF::StringImpl::computeHash): |
| * wtf/unicode/UTF8.cpp: |
| (WTF::Unicode::calculateStringHashAndLengthFromUTF8Internal): |
| |
| 2011-03-18 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| [GTK] JSC crashes in 32bit Release bots after r80743 |
| https://bugs.webkit.org/show_bug.cgi?id=56180 |
| |
| The crash was caused by referencing GC memory from a GC destructor. This |
| is not safe because destruction time / order is not guaranteed. |
| |
| * profiler/ProfileGenerator.cpp: |
| (JSC::ProfileGenerator::create): |
| (JSC::ProfileGenerator::ProfileGenerator): |
| (JSC::ProfileGenerator::willExecute): |
| (JSC::ProfileGenerator::didExecute): |
| * profiler/ProfileGenerator.h: |
| (JSC::ProfileGenerator::origin): Made ExecState* the first argument, |
| to match the rest of this class and JSC. |
| |
| Use a JSGlobalObject* instead of an ExecState* with an indirect reference |
| to a JSGlobalObject* to track our origin. This is simpler and more |
| efficient, and it removes the destruction order dependency that was causing |
| our crash. |
| |
| * profiler/Profiler.cpp: |
| (JSC::Profiler::startProfiling): Updated for change to JSGlobalObject*. |
| (JSC::Profiler::stopProfiling): New function for stopping all profiles |
| for a given global object. This is more straight-forward than multiplexing |
| through the old function. |
| |
| (JSC::dispatchFunctionToProfiles): Updated for change to JSGlobalObject*. |
| * profiler/Profiler.h: Ditto. |
| |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::~JSGlobalObject): Ditto. |
| |
| 2011-03-17 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| 1 Structure leaked beneath JSGlobalData::storeVPtrs() |
| https://bugs.webkit.org/show_bug.cgi?id=56595 |
| |
| * runtime/Executable.cpp: |
| (JSC::EvalExecutable::EvalExecutable): |
| (JSC::ProgramExecutable::ProgramExecutable): |
| (JSC::FunctionExecutable::FunctionExecutable): |
| * runtime/Executable.h: |
| (JSC::ExecutableBase::ExecutableBase): |
| (JSC::NativeExecutable::NativeExecutable): |
| (JSC::VPtrHackExecutable::VPtrHackExecutable): |
| (JSC::ScriptExecutable::ScriptExecutable): Use a raw pointer instead of |
| PassRefPtr, like JSString does, since JSGlobalData owns the singleton |
| exectuable structure. |
| |
| 2011-03-17 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Mark Rowe. |
| |
| Fixed some string leaks seen on the buildbot |
| https://bugs.webkit.org/show_bug.cgi?id=56619 |
| |
| * runtime/PropertyMapHashTable.h: |
| (JSC::PropertyTable::~PropertyTable): DEref! |
| |
| 2011-03-17 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Crash in JSC::MarkStack::drain Under Stress |
| https://bugs.webkit.org/show_bug.cgi?id=56470 |
| |
| We perform a number of gc allocations while when |
| we are setting up new globals in a piece of global |
| code. We do this by adding new properties to the |
| symbol table, and then expanding the storage to fit |
| at the end. |
| |
| If a GC happens during this time we will report an |
| incorrect size for the global object's symbol table |
| storage. |
| |
| This patch corrects this by growing the storage size |
| before we starting adding entries to the symbol table. |
| |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::BytecodeGenerator): |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::resizeRegisters): |
| |
| 2011-03-17 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| 1 Structure leaked beneath JSGlobalData::storeVPtrs() |
| https://bugs.webkit.org/show_bug.cgi?id=56595 |
| |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::storeVPtrs): Take local ownership of the Structure |
| we're using, since the Executable is not designed to own the Structure. |
| |
| 2011-03-17 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber Stamped by Sam Weinig. |
| |
| Add missing register-register branchTest8 to MacroAssemblerX86Common/X86Assembler. |
| |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::branchTest8): |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::testb_rr): |
| |
| 2011-03-17 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bug 56603 - DFG JIT related cleanup |
| Move node generation out to separate function, move binarySearch algorithm out |
| to StdLibExtras, fix Graph::dump() to print comma between non-node children, |
| even if there are no node children. |
| |
| * bytecode/CodeBlock.h: |
| (JSC::getCallReturnOffset): |
| (JSC::CodeBlock::getStubInfo): |
| (JSC::CodeBlock::getCallLinkInfo): |
| (JSC::CodeBlock::getMethodCallLinkInfo): |
| (JSC::CodeBlock::bytecodeOffset): |
| - Move binaryChop to binarySearch in StdLibExtras |
| * dfg/DFGByteCodeParser.cpp: |
| (JSC::DFG::ByteCodeParser::ByteCodeParser): |
| (JSC::DFG::ByteCodeParser::parse): |
| (JSC::DFG::parse): |
| - Make m_noArithmetic a member, initialize m_currentIndex in the constructor. |
| * dfg/DFGByteCodeParser.h: |
| - Change parse() to not take a start index (always 0). |
| * dfg/DFGGraph.cpp: |
| (JSC::DFG::Graph::dump): |
| - Fix Graph::dump() to print comma between non-node children, even if there are no node children. |
| * dfg/DFGJITCodeGenerator.h: |
| (JSC::DFG::JITCodeGenerator::JITCodeGenerator): |
| - Initialize m_compileIndex in constructor. |
| * dfg/DFGNonSpeculativeJIT.cpp: |
| (JSC::DFG::NonSpeculativeJIT::compile): |
| * dfg/DFGNonSpeculativeJIT.h: |
| - Spilt out compilation of individual node. |
| * dfg/DFGOperations.cpp: |
| (JSC::DFG::operationConvertThis): |
| * dfg/DFGOperations.h: |
| - Cleanup parameter name. |
| * dfg/DFGSpeculativeJIT.cpp: |
| (JSC::DFG::SpeculativeJIT::compile): |
| * dfg/DFGSpeculativeJIT.h: |
| - Spilt out compilation of individual node. |
| * runtime/Executable.cpp: |
| (JSC::tryDFGCompile): |
| - Change parse() to not take a start index (always 0). |
| * wtf/StdLibExtras.h: |
| (WTF::binarySearch): |
| - Move binaryChop to binarySearch in StdLibExtras |
| |
| 2011-03-17 Anders Carlsson <andersca@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Fix clang build. |
| |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::storeVPtrs): |
| |
| 2011-03-17 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| 1 Structure leaked beneath JSGlobalData::storeVPtrs() |
| https://bugs.webkit.org/show_bug.cgi?id=56595 |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::storeVPtrs): Now that we have an executable, we need |
| to explicitly run its destructor. |
| |
| 2011-03-17 Jeff Miller <jeffm@apple.com> |
| |
| Use a consistent set of file patterns in the svn:ignore property for all .xcodeproj directories, specifically: |
| |
| *.mode* |
| *.pbxuser |
| *.perspective* |
| project.xcworkspace |
| xcuserdata |
| |
| * JavaScriptCore.xcodeproj: Modified property svn:ignore. |
| |
| 2011-03-17 Gavin Barraclough <barraclough@apple.com> |
| |
| Reverting r81197, breaks JIT + INTERPRETER build. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset): |
| (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset): |
| * bytecode/CodeBlock.h: |
| (JSC::CodeBlock::addPropertyAccessInstruction): |
| (JSC::CodeBlock::addGlobalResolveInstruction): |
| (JSC::CodeBlock::addStructureStubInfo): |
| * bytecode/Opcode.h: |
| * bytecode/StructureStubInfo.h: |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitResolve): |
| (JSC::BytecodeGenerator::emitResolveWithBase): |
| (JSC::BytecodeGenerator::emitGetById): |
| (JSC::BytecodeGenerator::emitPutById): |
| (JSC::BytecodeGenerator::emitDirectPutById): |
| (JSC::BytecodeGenerator::emitCall): |
| (JSC::BytecodeGenerator::emitConstruct): |
| (JSC::BytecodeGenerator::emitCatch): |
| |
| 2011-03-17 Ben Taylor <bentaylor.solx86@gmail.com> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Add a COMPILER(SUNCC) define for Sun Studio 12. |
| https://bugs.webkit.org/show_bug.cgi?56444 |
| derived from patch 1 of 16 originally from https://bugs.webkit.org/show_bug.cgi?id=24932 |
| |
| * wtf/Platform.h: |
| |
| 2011-03-17 Jay Civelli <jcivelli@chromium.org> |
| |
| Reviewed by David Levin. |
| |
| Adding a contains method to Vector. |
| https://bugs.webkit.org/show_bug.cgi?id=55859 |
| |
| * wtf/Vector.h: |
| (WTF::::operator): |
| (WTF::::contains): |
| |
| 2011-03-17 Patrick Gansterer <paroga@webkit.org> |
| |
| Fix the interpreter build. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): Added globalData to inheritorID(). |
| |
| 2011-03-16 Sam Weinig <sam@webkit.org> |
| |
| Fix the interpreter build. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::resolve): |
| (JSC::Interpreter::resolveSkip): |
| (JSC::Interpreter::resolveGlobal): |
| (JSC::Interpreter::resolveGlobalDynamic): |
| (JSC::Interpreter::resolveBaseAndProperty): |
| (JSC::Interpreter::privateExecute): |
| Remove .get()s. |
| |
| 2011-03-16 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by James Robinson. |
| |
| Remove USE(BUILTIN_UTF8_CODEC) |
| https://bugs.webkit.org/show_bug.cgi?id=56508 |
| |
| We added this recently when we were unsure about the stability of the |
| built-in UTF-8 codec. However, the codec seems to be stable, so we |
| don't need the macro. |
| |
| * wtf/Platform.h: |
| |
| 2011-03-16 Daniel Bates <dbates@rim.com> |
| |
| Reviewed by Darin Adler. |
| |
| Make JIT build for ARM Thumb-2 with RVCT |
| https://bugs.webkit.org/show_bug.cgi?id=56440 |
| |
| Derived from a patch by Dave Tapuska. |
| |
| Also, modify the RVCT stub template to indicate that it preserves 8 byte stack alignment. |
| |
| * jit/JITStubs.cpp: |
| |
| 2011-03-16 Chao-ying Fu <fu@mips.com> |
| |
| Reviewed by Darin Adler. |
| |
| Fix MIPS build with const *void |
| https://bugs.webkit.org/show_bug.cgi?id=56513 |
| |
| * assembler/MacroAssemblerMIPS.h: |
| (JSC::MacroAssemblerMIPS::load32): |
| (JSC::MacroAssemblerMIPS::store32): |
| |
| 2011-03-16 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Remove unnecessary caller tracking shenanigans from CodeBlock |
| https://bugs.webkit.org/show_bug.cgi?id=56483 |
| |
| This removes some leftover cruft from when we made CodeBlock |
| mark its callees. Removing it gives us a 0.7% progression, |
| reducing the overall regression to ~1.3%. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::shrinkToFit): |
| * bytecode/CodeBlock.h: |
| (JSC::CallLinkInfo::CallLinkInfo): |
| * jit/JIT.cpp: |
| (JSC::JIT::linkCall): |
| (JSC::JIT::linkConstruct): |
| |
| 2011-03-15 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make Structure creation require a JSGlobalData |
| https://bugs.webkit.org/show_bug.cgi?id=56438 |
| |
| Mechanical change to make Structure::create require JSGlobalData&, and |
| require all users to provide the globalData. |
| |
| * API/JSCallbackConstructor.h: |
| (JSC::JSCallbackConstructor::createStructure): |
| * API/JSCallbackFunction.h: |
| (JSC::JSCallbackFunction::createStructure): |
| * API/JSCallbackObject.h: |
| (JSC::JSCallbackObject::createStructure): |
| * API/JSContextRef.cpp: |
| * JavaScriptCore.exp: |
| * debugger/DebuggerActivation.cpp: |
| (JSC::DebuggerActivation::DebuggerActivation): |
| * debugger/DebuggerActivation.h: |
| (JSC::DebuggerActivation::createStructure): |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * jsc.cpp: |
| (GlobalObject::GlobalObject): |
| (functionRun): |
| (jscmain): |
| * runtime/Arguments.h: |
| (JSC::Arguments::createStructure): |
| * runtime/ArrayPrototype.h: |
| (JSC::ArrayPrototype::createStructure): |
| * runtime/BooleanObject.h: |
| (JSC::BooleanObject::createStructure): |
| * runtime/DateInstance.h: |
| (JSC::DateInstance::createStructure): |
| * runtime/DatePrototype.h: |
| (JSC::DatePrototype::createStructure): |
| * runtime/ErrorInstance.h: |
| (JSC::ErrorInstance::createStructure): |
| * runtime/Executable.h: |
| (JSC::ExecutableBase::createStructure): |
| (JSC::EvalExecutable::createStructure): |
| (JSC::ProgramExecutable::createStructure): |
| (JSC::FunctionExecutable::createStructure): |
| * runtime/FunctionPrototype.h: |
| (JSC::FunctionPrototype::createStructure): |
| * runtime/GetterSetter.h: |
| (JSC::GetterSetter::createStructure): |
| * runtime/InternalFunction.h: |
| (JSC::InternalFunction::createStructure): |
| * runtime/JSAPIValueWrapper.h: |
| (JSC::JSAPIValueWrapper::createStructure): |
| * runtime/JSActivation.h: |
| (JSC::JSActivation::createStructure): |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::JSArray): |
| * runtime/JSArray.h: |
| (JSC::JSArray::createStructure): |
| * runtime/JSByteArray.cpp: |
| (JSC::JSByteArray::createStructure): |
| * runtime/JSByteArray.h: |
| (JSC::JSByteArray::JSByteArray): |
| * runtime/JSCell.h: |
| (JSC::JSCell::JSCell::createDummyStructure): |
| * runtime/JSFunction.h: |
| (JSC::JSFunction::createStructure): |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::storeVPtrs): |
| (JSC::JSGlobalData::JSGlobalData): |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::reset): |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::JSGlobalObject): |
| (JSC::JSGlobalObject::createStructure): |
| * runtime/JSNotAnObject.h: |
| (JSC::JSNotAnObject::createStructure): |
| * runtime/JSONObject.h: |
| (JSC::JSONObject::createStructure): |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::createInheritorID): |
| * runtime/JSObject.h: |
| (JSC::JSObject::createStructure): |
| (JSC::JSNonFinalObject::createStructure): |
| (JSC::JSFinalObject::createStructure): |
| (JSC::createEmptyObjectStructure): |
| (JSC::JSObject::inheritorID): |
| * runtime/JSObjectWithGlobalObject.h: |
| (JSC::JSObjectWithGlobalObject::createStructure): |
| * runtime/JSPropertyNameIterator.h: |
| (JSC::JSPropertyNameIterator::createStructure): |
| * runtime/JSStaticScopeObject.h: |
| (JSC::JSStaticScopeObject::createStructure): |
| * runtime/JSString.h: |
| (JSC::RopeBuilder::createStructure): |
| * runtime/JSVariableObject.h: |
| (JSC::JSVariableObject::createStructure): |
| * runtime/JSWrapperObject.h: |
| (JSC::JSWrapperObject::createStructure): |
| * runtime/JSZombie.h: |
| (JSC::JSZombie::createStructure): |
| * runtime/MathObject.h: |
| (JSC::MathObject::createStructure): |
| * runtime/NativeErrorConstructor.cpp: |
| (JSC::NativeErrorConstructor::NativeErrorConstructor): |
| * runtime/NativeErrorConstructor.h: |
| (JSC::NativeErrorConstructor::createStructure): |
| * runtime/NumberConstructor.h: |
| (JSC::NumberConstructor::createStructure): |
| * runtime/NumberObject.h: |
| (JSC::NumberObject::createStructure): |
| * runtime/ObjectConstructor.h: |
| (JSC::ObjectConstructor::createStructure): |
| * runtime/RegExpConstructor.h: |
| (JSC::RegExpConstructor::createStructure): |
| * runtime/RegExpObject.h: |
| (JSC::RegExpObject::createStructure): |
| * runtime/ScopeChain.h: |
| (JSC::ScopeChainNode::createStructure): |
| * runtime/StringObject.h: |
| (JSC::StringObject::createStructure): |
| * runtime/StringObjectThatMasqueradesAsUndefined.h: |
| (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): |
| * runtime/StringPrototype.h: |
| (JSC::StringPrototype::createStructure): |
| * runtime/Structure.h: |
| (JSC::Structure::create): |
| |
| 2011-03-16 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Some conservative root gathering cleanup |
| https://bugs.webkit.org/show_bug.cgi?id=56447 |
| |
| SunSpider says 0.5% - 1.8% faster. |
| |
| * interpreter/RegisterFile.cpp: |
| (JSC::RegisterFile::gatherConservativeRoots): |
| * interpreter/RegisterFile.h: New helper function for doing the |
| conservative gathering of the register file. It's still conservative, |
| since the register file may contain uninitialized values, but it's |
| moving-safe, because it only visits values tagged as pointers, so there's |
| no risk of mistaking an integer for a pointer and accidentally changing it. |
| |
| * runtime/ConservativeSet.cpp: |
| (JSC::ConservativeRoots::add): |
| * runtime/ConservativeSet.h: Added a single-value add function, used above. |
| |
| * runtime/Heap.cpp: |
| (JSC::Heap::markRoots): Separated machine stack conservative roots from |
| register file conservative roots because machine stack roots must be |
| pinned, but register file roots need not be pinned. |
| |
| Adopted new interface for passing the current stack extent to the machine |
| stack root gathering routine. This allows us to exclude marking-related |
| data structures on the stack, and thus avoid double-marking the set of |
| machine roots. |
| |
| * runtime/MachineStackMarker.cpp: |
| (JSC::MachineThreads::gatherFromCurrentThread): |
| (JSC::MachineThreads::gatherConservativeRoots): |
| * runtime/MachineStackMarker.h: Added new interface, described above. |
| |
| * runtime/MarkedBlock.h: |
| (JSC::MarkedBlock::firstAtom): |
| * wtf/StdLibExtras.h: |
| (WTF::roundUpToMultipleOf): Moved roundUpToMultipleOf so it could be used |
| by MachineStacks. |
| |
| 2011-03-16 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| A little bit of MarkStack cleanup |
| https://bugs.webkit.org/show_bug.cgi?id=56443 |
| |
| Moved MarkStack functions into MarkStack.h/.cpp. |
| |
| SunSpider reports no change. |
| |
| * runtime/JSArray.h: |
| * runtime/JSCell.h: Moved from here... |
| * runtime/MarkStack.cpp: |
| (JSC::MarkStack::markChildren): |
| (JSC::MarkStack::drain): ...to here. Also, no need to inline drain. It's |
| a huge function, and not called many times. |
| |
| * runtime/MarkStack.h: |
| (JSC::MarkStack::~MarkStack): Moved near constructor, per style guide. |
| (JSC::MarkStack::append): |
| (JSC::MarkStack::deprecatedAppend): |
| (JSC::MarkStack::internalAppend): Moved to here. |
| |
| 2011-03-15 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Removed another deprecatedAppend |
| https://bugs.webkit.org/show_bug.cgi?id=56429 |
| |
| * collector/handles/HandleHeap.cpp: |
| (JSC::HandleHeap::markStrongHandles): |
| * collector/handles/HandleHeap.h: Use HeapRootMarker, since handles are |
| marked directly by the Heap. |
| |
| * runtime/Heap.cpp: |
| (JSC::Heap::markRoots): Ditto. |
| |
| 2011-03-15 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Removed some more deprecated / unsafe append |
| https://bugs.webkit.org/show_bug.cgi?id=56428 |
| |
| * collector/handles/HandleStack.cpp: |
| (JSC::HandleStack::mark): |
| * collector/handles/HandleStack.h: Mark the handle stack using a HeapRoot |
| marker, since it's a heap root. |
| |
| * runtime/ArgList.cpp: |
| (JSC::MarkedArgumentBuffer::markLists): |
| (JSC::MarkedArgumentBuffer::slowAppend): |
| * runtime/ArgList.h: Ditto. |
| |
| * runtime/Heap.cpp: |
| (JSC::Heap::markRoots): Added a mark call for marking the handle stack. |
| It seems like Oliver forgot this in his last patch. (!) |
| |
| * runtime/MarkStack.h: Removed appendSlots, since it would allow an |
| object to embed JSValues directly instead of using WriteBarrier. |
| |
| (JSC::MarkStack::append): Added a private append for a list of values. |
| |
| (JSC::HeapRootMarker::mark): Access to the above. |
| |
| 2011-03-15 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Removed a few more deprecatedAppends, and removed HeapRoot<T> |
| https://bugs.webkit.org/show_bug.cgi?id=56422 |
| |
| Added HeapRootMarker, a privileged class for marking direct heap roots |
| that are iterated during each garbage collection. This is easier to use |
| and more reliable than HeapRoot<T>, so I've removed HeapRoot<T>. |
| |
| * debugger/Debugger.cpp: |
| (JSC::evaluateInGlobalCallFrame): |
| * debugger/DebuggerCallFrame.cpp: |
| (JSC::DebuggerCallFrame::evaluate): |
| * interpreter/CallFrame.h: |
| (JSC::ExecState::exception): |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/Completion.cpp: |
| (JSC::evaluate): exception is no longer a HeapRoot<T>, so no need to |
| call .get() on it. |
| |
| * runtime/Heap.cpp: |
| (JSC::Heap::markProtectedObjects): |
| (JSC::Heap::markTempSortVectors): |
| (JSC::Heap::markRoots): |
| * runtime/Heap.h: Updated to use HeapRootMarker. |
| |
| * runtime/JSCell.h: |
| (JSC::JSCell::MarkStack::append): Added private functions for |
| HeapRootMarker to use. |
| |
| * runtime/JSGlobalData.h: exception is no longer a HeapRoot<T>. |
| |
| * runtime/MarkStack.h: |
| (JSC::HeapRootMarker::HeapRootMarker): |
| (JSC::HeapRootMarker::mark): Added private functions for |
| HeapRootMarker to use. |
| |
| * runtime/SmallStrings.cpp: |
| (JSC::SmallStrings::markChildren): Updated to use HeapRootMarker. |
| |
| * runtime/SmallStrings.h: |
| (JSC::SmallStrings::emptyString): |
| (JSC::SmallStrings::singleCharacterString): |
| (JSC::SmallStrings::singleCharacterStrings): Updated to use HeapRootMarker. |
| |
| * runtime/WriteBarrier.h: Removed HeapRoot<T>. |
| |
| 2011-03-14 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Made the global object moving-GC-safe |
| https://bugs.webkit.org/show_bug.cgi?id=56348 |
| |
| SunSpider reports no change. |
| |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::markChildren): Removed a dubious comment that |
| suggested we do not need to visit all our references during GC, since |
| that is not true in a moving GC. |
| |
| Re-sorted data members by type, removed one duplicate, and added back |
| the one missing mark I found. |
| |
| * runtime/JSGlobalObject.h: Re-sorted data members by type. |
| |
| 2011-03-15 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Introduce Local<T> to allow us to start moving to precise marking of locals |
| https://bugs.webkit.org/show_bug.cgi?id=56394 |
| |
| Introduce a new handle type, Local<T> and a scoping mechanism |
| LocalScope to allow us to start moving towards precise marking |
| of temporaries and local variables. |
| |
| We also start to use the new Local<> type in the JSON stringifier |
| so that we can have some coverage of their behaviour in the initial |
| checkin. |
| |
| * GNUmakefile.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.pro: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * collector/handles/Handle.h: |
| (JSC::::asObject): |
| * collector/handles/HandleStack.cpp: Added. |
| (JSC::HandleStack::HandleStack): |
| (JSC::HandleStack::mark): |
| (JSC::HandleStack::grow): |
| * collector/handles/HandleStack.h: Added. |
| (JSC::HandleStack::enterScope): |
| (JSC::HandleStack::zapTo): |
| (JSC::HandleStack::leaveScope): |
| (JSC::HandleStack::push): |
| * collector/handles/Local.h: Added. |
| (JSC::Local::internalSet): |
| (JSC::::Local): |
| (JSC::::operator): |
| (JSC::LocalStack::LocalStack): |
| (JSC::LocalStack::peek): |
| (JSC::LocalStack::pop): |
| (JSC::LocalStack::push): |
| (JSC::LocalStack::isEmpty): |
| (JSC::LocalStack::size): |
| * collector/handles/LocalScope.h: Added. |
| (JSC::LocalScope::LocalScope): |
| (JSC::LocalScope::~LocalScope): |
| (JSC::LocalScope::release): |
| * runtime/Heap.cpp: |
| (JSC::Heap::markRoots): |
| * runtime/Heap.h: |
| (JSC::Heap::allocateLocalHandle): |
| (JSC::Heap::handleStack): |
| * runtime/JSCell.h: |
| (JSC::JSCell::::getString): |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| * runtime/JSGlobalData.h: |
| (JSC::JSGlobalData::allocateLocalHandle): |
| * runtime/JSONObject.cpp: |
| (JSC::Stringifier::Stringifier): |
| (JSC::Stringifier::stringify): |
| (JSC::Stringifier::appendStringifiedValue): |
| (JSC::Stringifier::Holder::Holder): |
| (JSC::Walker::Walker): |
| (JSC::Walker::walk): |
| (JSC::JSONProtoFuncParse): |
| (JSC::JSONProtoFuncStringify): |
| (JSC::JSONStringify): |
| * runtime/JSONObject.h: |
| * runtime/MarkStack.h: |
| (JSC::MarkStack::appendValues): |
| (JSC::MarkStack::appendSlots): |
| |
| 2011-03-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber Stamped by Sam Weinig. |
| |
| Bug 56420 - Remove ENABLE(JIT) code from ByteCompiler |
| Some methods have unnecessary differences in name/arguments for interpreter/JIT. |
| |
| * bytecode/CodeBlock.cpp: |
| * bytecode/CodeBlock.h: |
| (JSC::HandlerInfo::HandlerInfo): |
| (JSC::CodeBlock::addPropertyAccessInfo): |
| (JSC::CodeBlock::addGlobalResolveInfo): |
| (JSC::CodeBlock::addCallLinkInfo): |
| (JSC::CodeBlock::globalResolveInfo): |
| * bytecode/Opcode.h: |
| * bytecode/StructureStubInfo.h: |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::emitResolve): |
| (JSC::BytecodeGenerator::emitResolveWithBase): |
| (JSC::BytecodeGenerator::emitGetById): |
| (JSC::BytecodeGenerator::emitPutById): |
| (JSC::BytecodeGenerator::emitDirectPutById): |
| (JSC::BytecodeGenerator::emitCall): |
| (JSC::BytecodeGenerator::emitConstruct): |
| (JSC::BytecodeGenerator::emitCatch): |
| |
| 2011-03-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Fix broken assert in new code. |
| |
| * dfg/DFGAliasTracker.h: |
| (JSC::DFG::AliasTracker::recordPutByVal): |
| - recordPutByVal is called for both PutByVal & PutByValAlias. |
| |
| 2011-03-15 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber stamped by Sam Weinig. |
| |
| Removed redundant code from BytecodeGenerator. |
| |
| * bytecompiler/BytecodeGenerator.cpp: |
| * bytecompiler/BytecodeGenerator.h: |
| - delete uncalled code missed when reparsing was removed. |
| |
| 2011-03-15 Kevin Ollivier <kevino@theolliviers.com> |
| |
| Reviewed by Darin Adler. |
| |
| Introduce WTF_USE_EXPORT_MACROS, which will allow us to put shared library import/export |
| info into the headers rather than in export symbol definition files, but disable it on |
| all platforms initially so we can deal with port build issues one port at a time. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=27551 |
| |
| * API/JSBase.h: |
| * config.h: |
| * wtf/Assertions.h: |
| * wtf/ExportMacros.h: Added. |
| * wtf/Platform.h: |
| |
| 2011-03-14 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Unreviewed build fix. |
| |
| Buildfix when JIT is not enabled after r81079 |
| https://bugs.webkit.org/show_bug.cgi?id=56361 |
| |
| * runtime/Executable.cpp: |
| |
| 2011-03-14 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Made the global object moving-GC-safe |
| https://bugs.webkit.org/show_bug.cgi?id=56348 |
| |
| SunSpider reports no change. |
| |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::markChildren): Removed a dubious comment that |
| suggested we do not need to visit all our references during GC, since |
| that is not true in a moving GC. |
| |
| Re-sorted data members by type, removed one duplicate, and added back |
| the one missing mark I found. |
| |
| * runtime/JSGlobalObject.h: Re-sorted data members by type. |
| |
| 2011-03-14 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Made JSWrapperObject and subclasses moving-GC-safe |
| https://bugs.webkit.org/show_bug.cgi?id=56346 |
| |
| SunSpider reports no change. |
| |
| * runtime/BooleanObject.cpp: |
| (JSC::BooleanObject::BooleanObject): |
| * runtime/DateInstance.cpp: |
| (JSC::DateInstance::DateInstance): No more need for JSGlobalData, since |
| we don't initialize the wrapped value in our constructor. |
| |
| * runtime/DateInstance.h: Don't set the OverridesMarkChildren flag because |
| we do not in fact override markChildren. |
| |
| * runtime/DatePrototype.h: Declare an anonymous slot, since wrapper object |
| no longer does so for us. Also added an ASSERT to catch a latent bug, |
| where DatePrototype stomped on its base class's anonymous slot. Hard-coded |
| anonymous slots are a plague on our code. This doesn't cause any problems |
| in our existing code since the base class never reads the anonymous slot |
| it declares, but it caused crashes when I tried to start using the slot |
| in an initial version of this patch. |
| |
| * runtime/JSWrapperObject.h: |
| (JSC::JSWrapperObject::JSWrapperObject): |
| (JSC::JSWrapperObject::internalValue): |
| (JSC::JSWrapperObject::setInternalValue): Resolved a problem where |
| our internal value was stored in two places: an anonymous slot, and a |
| data member which was not always visited during GC. Now, we only use the |
| data member, and we always visit it. (Instead of relying on certain |
| subclasses to set the OverridesMarkChildren bit, we set it ourselves.) |
| |
| * runtime/NumberObject.cpp: |
| (JSC::NumberObject::NumberObject): No more need for JSGlobalData, since |
| we don't initialize the wrapped value in our constructor. |
| |
| * runtime/NumberObject.h: Removed meaningless declaration. |
| |
| * runtime/StringObject.cpp: |
| (JSC::StringObject::StringObject): No more need for JSGlobalData, since |
| we don't initialize the wrapped value in our constructor. |
| |
| * runtime/StringObject.h: Don't set the OverridesMarkChildren flag because |
| we do not in fact override markChildren. |
| |
| * runtime/StringPrototype.h: Declare an anonymous slot, since wrapper object |
| no longer does so for us. Also added an ASSERT to catch a latent bug, |
| where DatePrototype stomped on its base class's anonymous slot. Hard-coded |
| anonymous slots are a plague on our code. |
| |
| 2011-03-14 Michael Saboff <msaboff@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Look-ahead assertions with back references don’t work as expected |
| https://bugs.webkit.org/show_bug.cgi?id=56082 |
| |
| Changed parentheses assertion processing to temporarily back out the |
| number of known characters after the assertion while processing the |
| assertion. This was done so that assertions don't fail due to |
| checking the number of required characters as additional to the |
| rest of the express since assertions don't "consume" input. |
| Added a byte code to uncheck characters to support the change. |
| |
| * yarr/YarrInterpreter.cpp: |
| (JSC::Yarr::Interpreter::matchDisjunction): |
| (JSC::Yarr::ByteCompiler::uncheckInput): |
| (JSC::Yarr::ByteCompiler::emitDisjunction): |
| * yarr/YarrInterpreter.h: |
| (JSC::Yarr::ByteTerm::UncheckInput): |
| |
| 2011-03-14 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com> |
| |
| Reviewed by Laszlo Gombos. |
| |
| [Qt] Warning that round/roundf functions are already defined when compiled with RVCT 4 on symbian. |
| https://bugs.webkit.org/show_bug.cgi?id=56133 |
| |
| Add condition to not compile webkit internal math round functions on RVCT compiler versions |
| from 3.0.0 because they are already defined in compiler math library. |
| |
| * wtf/MathExtras.h: |
| |
| 2011-03-14 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Geoffrey Garen & Oliver Hunt. |
| |
| Bug 56284 - Add a dataflow intermediate representation for use in JIT generation. |
| |
| The JSC JIT presently generates code directly from the bytecode used by the interpreter. |
| This is not an optimal intermediate representation for JIT code generation, since it does |
| not capture liveness information of values, and provides little opportunity to perform |
| any static analysis for even primitive types. The JIT currently generates two code paths, |
| a fast path handling common cases, and a slower path handling less common operand types. |
| However the slow path jumps back into the fast path, meaning that information arising |
| from the earlier type checks cannot be propagated to later operations. |
| |
| This patch adds: |
| * a dataflow intermediate representation capable of describing a single basic block |
| of operations, |
| * a mechanism to convert a simple, single-block bytecode functions to the new IR, |
| * and a JIT code generator capable of generating code from this representation. |
| |
| The JIT generates two code paths, with the slower path not reentering the fast path |
| mid-block, allowing speculative optimizations to be made on the hot path, with type |
| information arising from these speculative decisions able to be propagated through the |
| dataflow. Code generation of both speculative and non-speculative paths exploits the type |
| and liveness information represented in the dataflow graph to attempt to avoid redundant |
| boxing and type-checking of values, and to remove unnecessary spills of temporary values |
| to the RegisterFile. |
| |
| The dataflow JIT currently can only support a subset of bytecode operations, limited to |
| arithmetic, bit-ops, and basic property access. Functions that cannot be compiled by the |
| dataflow JIT will be run using the existing JIT. The coverage of the dataflow JIT will be |
| expanded to include, control-flow, function calls, and then the long-tail of remaining |
| bytecode instructions. The JIT presently only support JSVALUE64, and as a consequence of |
| this only supports x86-64. |
| |
| The status of the dataflow JIT is currently work-in-progress. Limitations of the present |
| JIT code generation may cause performance regressions, particularly: |
| * the policy to only generate arithmetic code on the speculative path using integer |
| instructions, never using floating point. |
| * the policy to only generate arithmetic code on the non-speculative path using |
| floating point instructions, never using integer. |
| * always generating JSValue adds on the non-speculative path as a call out to a |
| C-function, never handling this in JIT code. |
| * always assuming by-Value property accesses on the speculative path to be array |
| accesses. |
| * generating all by-Value property accesses from the non-speculative path as a call |
| out to a C-function. |
| * generating all by-Indentifer property accesses as a call out to a C-function. |
| Due to these regressions, the code is landed in a state where it is disabled in most |
| cases by the ENABLE_DFG_JIT_RESTRICTIONS guard in Platform.h. As these regressions are |
| addressed, the JIT will be allowed to trigger in more cases. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| - Added new files to Xcode project. |
| * dfg: Added. |
| - Added directory for new code. |
| * dfg/DFGByteCodeParser.cpp: Added. |
| * dfg/DFGByteCodeParser.h: Added. |
| - Contruct a DFG::Graph representation from a bytecode CodeBlock. |
| * dfg/DFGGenerationInfo.h: Added. |
| - Track type & register information for VirtualRegisters during JIT code generation. |
| * dfg/DFGGraph.cpp: Added. |
| * dfg/DFGGraph.h: Added. |
| - Dataflow graph intermediate representation for code generation. |
| * dfg/DFGJITCodeGenerator.cpp: Added. |
| * dfg/DFGJITCodeGenerator.h: Added. |
| - Base class for SpeculativeJIT & NonSpeculativeJIT to share common functionality. |
| * dfg/DFGJITCompiler.cpp: Added. |
| * dfg/DFGJITCompiler.h: Added. |
| - Class responsible for driving code generation of speculativeJIT & non-speculative |
| code paths from the dataflow graph. |
| * dfg/DFGNonSpeculativeJIT.cpp: Added. |
| * dfg/DFGNonSpeculativeJIT.h: Added. |
| - Used to generate the non-speculative code path, this make no assumptions |
| about operand types. |
| * dfg/DFGOperations.cpp: Added. |
| * dfg/DFGOperations.h: Added. |
| - Helper functions called from the JIT generated code. |
| * dfg/DFGRegisterBank.h: Added. |
| - Used to track contents of physical registers during JIT code generation. |
| * dfg/DFGSpeculativeJIT.cpp: Added. |
| * dfg/DFGSpeculativeJIT.h: Added. |
| - Used to generate the speculative code path, this make assumptions about |
| operand types to enable optimization. |
| * runtime/Executable.cpp: |
| - Add code to attempt to use the DFG JIT to compile a function, with fallback |
| to the existing JIT. |
| * wtf/Platform.h: |
| - Added compile guards to enable the DFG JIT. |
| |
| 2011-03-14 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Removed more cases of DeprecatedPtr (exception, SmallStrings) |
| https://bugs.webkit.org/show_bug.cgi?id=56332 |
| |
| * runtime/Identifier.cpp: |
| (JSC::Identifier::add): |
| (JSC::Identifier::addSlowCase): Use a variable instead of a hard-coded |
| constant, to make this code less brittle. |
| |
| * runtime/JSGlobalData.h: Use HeapRoot instead of DeprecatedPtr because |
| this reference is owned and managed directly by the heap. |
| |
| * runtime/JSString.cpp: |
| (JSC::JSString::substringFromRope): |
| * runtime/JSString.h: |
| (JSC::jsSingleCharacterString): |
| (JSC::jsSingleCharacterSubstring): |
| (JSC::jsString): |
| (JSC::jsStringWithFinalizer): |
| (JSC::jsSubstring): |
| (JSC::jsOwnedString): Use a variable instead of a hard-coded |
| constant, to make this code less brittle. |
| |
| * runtime/SmallStrings.cpp: |
| (JSC::SmallStringsStorage::rep): |
| (JSC::SmallStringsStorage::SmallStringsStorage): |
| (JSC::SmallStrings::SmallStrings): |
| (JSC::SmallStrings::markChildren): |
| (JSC::SmallStrings::clear): |
| (JSC::SmallStrings::count): Use a variable instead of a hard-coded |
| constant, to make this code less brittle. |
| |
| * runtime/SmallStrings.h: |
| (JSC::SmallStrings::singleCharacterString): Use HeapRoot instead of |
| DeprecatedPtr because these references are owned and managed directly by |
| the heap. |
| |
| Stop using FixedArray because we only want a very limited set |
| of classes to be able to use HeapRoot. (Replaced with manual ASSERTs.) |
| |
| * runtime/WriteBarrier.h: |
| (JSC::operator==): |
| (JSC::WriteBarrier::WriteBarrier): |
| (JSC::HeapRoot::HeapRoot): |
| (JSC::HeapRoot::operator=): Added HeapRoot, which is allowed to set |
| without write barrier because we assume all HeapRoots are scanned during |
| all GC passes. |
| |
| 2011-03-14 Brian Weinstein <bweinstein@apple.com> |
| |
| Reviewed by Adam Roben and Gavin Barraclough. |
| |
| FileSystemWin.cpp needs listDirectory() implementation |
| https://bugs.webkit.org/show_bug.cgi?id=56331 |
| <rdar://problem/9126635> |
| |
| Give StringConcatenate the ability to deal with const UChar*'s as a String type to append. |
| |
| * wtf/text/StringConcatenate.h: |
| |
| 2011-03-14 Mark Rowe <mrowe@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| <http://webkit.org/b/56304> REGRESSION(r80892): 100,000+ leaks seen on the build bot |
| |
| * API/JSClassRef.cpp: |
| (OpaqueJSClass::OpaqueJSClass): Don't leak any existing entry for the given name if |
| the class definition contains duplicates. This also removes what look to be leaks |
| of the StringImpl instances that are used as keys: the HashMap key type is a RefPtr |
| which retains / releases the instances at the appropriate time, so explicitly calling |
| ref is not necessary. |
| |
| 2011-03-14 Oliver Hunt <oliver@apple.com> |
| |
| Fix windows build |
| |
| * jit/JSInterfaceJIT.h: |
| (JSC::JSInterfaceJIT::emitLoadInt32): |
| (JSC::JSInterfaceJIT::tagFor): |
| (JSC::JSInterfaceJIT::payloadFor): |
| (JSC::JSInterfaceJIT::intPayloadFor): |
| (JSC::JSInterfaceJIT::intTagFor): |
| (JSC::JSInterfaceJIT::addressFor): |
| |
| 2011-03-11 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Ensure all values are correctly tagged in the registerfile |
| https://bugs.webkit.org/show_bug.cgi?id=56214 |
| |
| This patch makes sure that all JSCell pointers written to |
| the registerfile are correctly tagged as JSCells, and replaces |
| raw int usage with the immediate representation. |
| |
| For performance, register pressure, and general saneness reasons |
| I've added abstractions for reading and writing the tag |
| and payload of integer registers directly for the JSVALUE64 |
| encoding. |
| |
| * interpreter/Register.h: |
| (JSC::Register::withInt): |
| (JSC::Register::withCallee): |
| (JSC::Register::operator=): |
| (JSC::Register::i): |
| (JSC::Register::activation): |
| (JSC::Register::function): |
| (JSC::Register::propertyNameIterator): |
| (JSC::Register::scopeChain): |
| * jit/JIT.h: |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallInitializeCallFrame): |
| (JSC::JIT::compileOpCallVarargs): |
| (JSC::JIT::compileOpCall): |
| * jit/JITCall32_64.cpp: |
| (JSC::JIT::compileOpCallInitializeCallFrame): |
| (JSC::JIT::compileOpCallVarargs): |
| (JSC::JIT::compileOpCall): |
| (JSC::JIT::compileOpCallSlowCase): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitPutToCallFrameHeader): |
| (JSC::JIT::emitPutCellToCallFrameHeader): |
| (JSC::JIT::emitPutIntToCallFrameHeader): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTINativeCall): |
| (JSC::JIT::emit_op_get_pnames): |
| (JSC::JIT::emit_op_next_pname): |
| (JSC::JIT::emit_op_load_varargs): |
| (JSC::JIT::emitSlow_op_load_varargs): |
| * jit/JITOpcodes32_64.cpp: |
| (JSC::JIT::privateCompileCTINativeCall): |
| (JSC::JIT::emit_op_get_pnames): |
| (JSC::JIT::emit_op_next_pname): |
| * jit/JSInterfaceJIT.h: |
| (JSC::JSInterfaceJIT::intPayloadFor): |
| (JSC::JSInterfaceJIT::intTagFor): |
| * jit/SpecializedThunkJIT.h: |
| (JSC::SpecializedThunkJIT::returnJSValue): |
| (JSC::SpecializedThunkJIT::returnDouble): |
| (JSC::SpecializedThunkJIT::returnInt32): |
| (JSC::SpecializedThunkJIT::returnJSCell): |
| |
| 2011-03-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| A few Heap-related renames (sans file moves, which should come next) |
| https://bugs.webkit.org/show_bug.cgi?id=56283 |
| |
| ConservativeSet => ConservativeRoots. "Set" was misleading, since items |
| are not uniqued. Also, "Roots" is more specific about what's in the set. |
| |
| MachineStackMarker => MachineThreads. "Threads" is more descriptive of |
| the fact that this class maintains a set of all threads using JSC. |
| "Stack" was misleading, since this class traverses stacks and registers. |
| "Mark" was misleading, since this class doesn't mark anything anymore. |
| |
| registerThread => addCurrentThread. "Current" is more specific. |
| unregisterThread => removeCurrentThread. "Current" is more specific. |
| |
| "currentThreadRegistrar" => threadSpecific. The only point of this data |
| structure is to register a thread-specific destructor with a pointer to |
| this. |
| |
| "mark...Conservatively" => "gather". "Mark" is not true, since these |
| functions don't mark anything. "Conservatively" is redundant, since they |
| take "ConservativeRoots" as an argument. |
| |
| * API/APIShims.h: |
| (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): |
| * JavaScriptCore.exp: |
| * runtime/ConservativeSet.cpp: |
| (JSC::ConservativeRoots::grow): |
| (JSC::ConservativeRoots::add): |
| * runtime/ConservativeSet.h: |
| (JSC::ConservativeRoots::ConservativeRoots): |
| (JSC::ConservativeRoots::~ConservativeRoots): |
| (JSC::ConservativeRoots::size): |
| (JSC::ConservativeRoots::roots): |
| * runtime/Heap.cpp: |
| (JSC::Heap::Heap): |
| (JSC::Heap::markRoots): |
| * runtime/Heap.h: |
| (JSC::Heap::machineThreads): |
| * runtime/JSGlobalData.h: |
| (JSC::JSGlobalData::makeUsableFromMultipleThreads): |
| * runtime/MachineStackMarker.cpp: |
| (JSC::MachineThreads::MachineThreads): |
| (JSC::MachineThreads::~MachineThreads): |
| (JSC::MachineThreads::makeUsableFromMultipleThreads): |
| (JSC::MachineThreads::addCurrentThread): |
| (JSC::MachineThreads::removeThread): |
| (JSC::MachineThreads::removeCurrentThread): |
| (JSC::MachineThreads::gatherFromCurrentThreadInternal): |
| (JSC::MachineThreads::gatherFromCurrentThread): |
| (JSC::MachineThreads::gatherFromOtherThread): |
| (JSC::MachineThreads::gatherConservativeRoots): |
| * runtime/MachineStackMarker.h: |
| * runtime/MarkStack.h: |
| (JSC::MarkStack::append): |
| |
| 2011-03-13 David Kilzer <ddkilzer@apple.com> |
| |
| BUILD FIX for armv7 after r80969 |
| |
| Bug 56270 - The JIT 'friend's many classes in JSC; start unwinding this. |
| <https://bugs.webkit.org/show_bug.cgi?id=56270> |
| |
| * assembler/MacroAssemblerARMv7.h: |
| (JSC::MacroAssemblerARMv7::load32): Made void* address argument |
| const. |
| (JSC::MacroAssemblerARMv7::store32): Ditto. |
| |
| 2011-03-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Not reviewed. |
| |
| Try to fix the Mac build. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: Make sure to forward |
| ConervativeSet.h, since it's now visible when compiling other projects. |
| |
| 2011-03-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Removed another case of DeprecatedPtr (ConservativeSet) |
| https://bugs.webkit.org/show_bug.cgi?id=56281 |
| |
| The ConservativeSet is an internal data structure used during marking, |
| so direct pointers are fine. |
| |
| * runtime/ConservativeSet.cpp: |
| (JSC::ConservativeSet::grow): |
| * runtime/ConservativeSet.h: Added some accessors, for use by MarkStack::append. |
| (JSC::ConservativeSet::~ConservativeSet): Fixed a typo where we calculated |
| the size of the set based on sizeof(DeprecatedPtr<T>*) instead of |
| sizeof(DeprecatedPtr<T>). I'm not sure if this had real-world implications or not. |
| (JSC::ConservativeSet::size): |
| (JSC::ConservativeSet::set): Use direct pointers, as stated above. |
| |
| * runtime/Heap.cpp: |
| (JSC::Heap::markRoots): |
| * runtime/MarkStack.h: |
| (JSC::MarkStack::append): Created a special case of append for |
| ConservativeSet. I didn't want to add back a generic "append JSCell*" |
| function, since other class might start using that wrong. (In the end, |
| this function might go away, since the Heap will want to do something |
| slightly more interesting with the conservative set, but this is OK for |
| now.) |
| |
| 2011-03-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Removed another case of DeprecatedPtr (PutPropertySlot) |
| https://bugs.webkit.org/show_bug.cgi?id=56278 |
| |
| * runtime/PutPropertySlot.h: |
| (JSC::PutPropertySlot::setExistingProperty): |
| (JSC::PutPropertySlot::setNewProperty): |
| (JSC::PutPropertySlot::base): Direct pointer is fine for PutPropertySlot, |
| since it's a stack-allocated temporary. |
| |
| 2011-03-13 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Removed one case of DeprecatedPtr (ScopeChainIterator) |
| https://bugs.webkit.org/show_bug.cgi?id=56277 |
| |
| * runtime/ScopeChain.h: Direct pointer is fine for ScopeChainIterator, |
| since it's a stack-allocated temporary. |
| |
| 2011-03-13 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bug 56273 - Add three operand forms to MacroAssember operations. |
| |
| Adding for X86(_64) for now, should be rolled out to other backends as necessary. |
| These may allow more efficient code generation in some cases, avoiding the need |
| for unnecessary register-register move instructions. |
| |
| * assembler/AbstractMacroAssembler.h: |
| (JSC::AbstractMacroAssembler::Jump::link): |
| (JSC::AbstractMacroAssembler::Jump::linkTo): |
| - marked these methods const. |
| (JSC::AbstractMacroAssembler::Jump::isSet): |
| - add a method to check whether a Jump object has been set to |
| reference an instruction, or is in a null, unset state. |
| * assembler/MacroAssemblerCodeRef.h: |
| (JSC::FunctionPtr::FunctionPtr): |
| - add non-explicit constructor, for FunctionPtr's to C/C++ functions. |
| * assembler/MacroAssemblerX86Common.h: |
| (JSC::MacroAssemblerX86Common::and32): |
| (JSC::MacroAssemblerX86Common::lshift32): |
| (JSC::MacroAssemblerX86Common::or32): |
| (JSC::MacroAssemblerX86Common::rshift32): |
| (JSC::MacroAssemblerX86Common::urshift32): |
| (JSC::MacroAssemblerX86Common::xor32): |
| (JSC::MacroAssemblerX86Common::moveDouble): |
| (JSC::MacroAssemblerX86Common::addDouble): |
| (JSC::MacroAssemblerX86Common::divDouble): |
| (JSC::MacroAssemblerX86Common::subDouble): |
| (JSC::MacroAssemblerX86Common::mulDouble): |
| (JSC::MacroAssemblerX86Common::branchTruncateDoubleToInt32): |
| (JSC::MacroAssemblerX86Common::branchTest32): |
| (JSC::MacroAssemblerX86Common::branchTest8): |
| (JSC::MacroAssemblerX86Common::branchAdd32): |
| (JSC::MacroAssemblerX86Common::branchMul32): |
| (JSC::MacroAssemblerX86Common::branchSub32): |
| - add three operand forms of these instructions. |
| * assembler/MacroAssemblerX86_64.h: |
| (JSC::MacroAssemblerX86_64::addDouble): |
| (JSC::MacroAssemblerX86_64::convertInt32ToDouble): |
| (JSC::MacroAssemblerX86_64::loadPtr): |
| (JSC::MacroAssemblerX86_64::branchTestPtr): |
| * assembler/X86Assembler.h: |
| (JSC::X86Assembler::JmpSrc::isSet): |
| - add a method to check whether a JmpSrc object has been set to |
| reference an instruction, or is in a null, unset state. |
| (JSC::X86Assembler::movsd_rr): |
| - added FP register-register move. |
| (JSC::X86Assembler::linkJump): |
| - Add an assert to check jumps aren't linked more than once. |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitLoadInt32ToDouble): |
| - load integers to the FPU via regsiters on x86-64. |
| |
| 2011-03-13 Gavin Barraclough <barraclough@apple.com> |
| |
| ARM build fix. |
| |
| * assembler/MacroAssemblerARM.h: |
| (JSC::MacroAssemblerARM::load32): |
| |
| 2011-03-13 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bug 56270 - The JIT 'friend's many classes in JSC; start unwinding this. |
| |
| The JIT need to 'friend' other classes in order to be able to calculate offsets |
| of various properties, or the absolute addresses of members within specific objects, |
| in order to JIT generate code that will access members within the class when run. |
| |
| Instead of using friends in these cases, switch to providing specific accessor |
| methods to provide this information. In the case of offsets, these can be static |
| functions, and in the case of pointers to members within a specific object these can |
| be const methods returning pointers to const values, to prevent clients from |
| modifying values otherwise encapsulated within classes. |
| |
| * bytecode/SamplingTool.h: |
| * interpreter/Register.h: |
| * interpreter/RegisterFile.h: |
| * runtime/JSArray.h: |
| * runtime/JSCell.h: |
| * runtime/JSTypeInfo.h: |
| * runtime/JSVariableObject.h: |
| * runtime/Structure.h: |
| * wtf/RefCounted.h: |
| - Change these classes to no longer friend the JIT, add accessors for member offsets. |
| * jit/JIT.cpp: |
| * jit/JITCall32_64.cpp: |
| * jit/JITInlineMethods.h: |
| * jit/JITOpcodes.cpp: |
| * jit/JITOpcodes32_64.cpp: |
| * jit/JITPropertyAccess.cpp: |
| * jit/JITPropertyAccess32_64.cpp: |
| - Change the JIT to use class accessors, rather than taking object ofsets directly. |
| * assembler/AbstractMacroAssembler.h: |
| * assembler/MacroAssemblerX86_64.h: |
| * assembler/X86Assembler.h: |
| - Since the accessors for objects members return const pointers to retain encapsulation, |
| methods generating code with absolute addresses must be able to handle const pointers |
| (the JIT doesn't write to these values, do dies treat the pointer to value as const |
| from within the C++ code of the JIT, if not at runtime!). |
| |
| 2011-03-12 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r80919. |
| http://trac.webkit.org/changeset/80919 |
| https://bugs.webkit.org/show_bug.cgi?id=56251 |
| |
| all windows bots failed to compile this change (Requested by |
| loislo on #webkit). |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * bytecode/StructureStubInfo.cpp: |
| * interpreter/Register.h: |
| (JSC::Register::withInt): |
| (JSC::Register::withCallee): |
| (JSC::Register::operator=): |
| (JSC::Register::i): |
| (JSC::Register::activation): |
| (JSC::Register::function): |
| (JSC::Register::propertyNameIterator): |
| (JSC::Register::scopeChain): |
| * jit/JIT.h: |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallInitializeCallFrame): |
| (JSC::JIT::compileOpCallVarargs): |
| (JSC::JIT::compileOpCall): |
| * jit/JITCall32_64.cpp: |
| (JSC::JIT::compileOpCallInitializeCallFrame): |
| (JSC::JIT::compileOpCallVarargs): |
| (JSC::JIT::compileOpCall): |
| (JSC::JIT::compileOpCallSlowCase): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitPutToCallFrameHeader): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTINativeCall): |
| (JSC::JIT::emit_op_get_pnames): |
| (JSC::JIT::emit_op_next_pname): |
| (JSC::JIT::emit_op_load_varargs): |
| (JSC::JIT::emitSlow_op_load_varargs): |
| * jit/JITOpcodes32_64.cpp: |
| (JSC::JIT::privateCompileCTINativeCall): |
| (JSC::JIT::emit_op_get_pnames): |
| (JSC::JIT::emit_op_next_pname): |
| * jit/JSInterfaceJIT.h: |
| (JSC::JSInterfaceJIT::payloadFor): |
| * jit/SpecializedThunkJIT.h: |
| (JSC::SpecializedThunkJIT::returnJSValue): |
| (JSC::SpecializedThunkJIT::returnDouble): |
| (JSC::SpecializedThunkJIT::returnInt32): |
| (JSC::SpecializedThunkJIT::returnJSCell): |
| * runtime/ArgList.cpp: |
| * runtime/DateConversion.cpp: |
| * runtime/GCActivityCallbackCF.cpp: |
| * runtime/Identifier.cpp: |
| * runtime/JSActivation.h: |
| (JSC::asActivation): |
| * runtime/JSLock.cpp: |
| * runtime/JSNumberCell.cpp: |
| * runtime/JSObject.h: |
| * runtime/JSPropertyNameIterator.h: |
| * runtime/JSValue.h: |
| * runtime/JSZombie.cpp: |
| * runtime/MarkedBlock.cpp: |
| * runtime/MarkedSpace.cpp: |
| * runtime/PropertyNameArray.cpp: |
| * runtime/ScopeChain.h: |
| (JSC::ExecState::globalThisValue): |
| * wtf/DateMath.cpp: |
| |
| 2011-03-11 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Ensure all values are correctly tagged in the registerfile |
| https://bugs.webkit.org/show_bug.cgi?id=56214 |
| |
| This patch makes sure that all JSCell pointers written to |
| the registerfile are correctly tagged as JSCells, and replaces |
| raw int usage with the immediate representation. |
| |
| For performance, register pressure, and general saneness reasons |
| I've added abstractions for reading and writing the tag |
| and payload of integer registers directly for the JSVALUE64 |
| encoding. |
| |
| * interpreter/Register.h: |
| (JSC::Register::withInt): |
| (JSC::Register::withCallee): |
| (JSC::Register::operator=): |
| (JSC::Register::i): |
| (JSC::Register::activation): |
| (JSC::Register::function): |
| (JSC::Register::propertyNameIterator): |
| (JSC::Register::scopeChain): |
| * jit/JIT.h: |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallInitializeCallFrame): |
| (JSC::JIT::compileOpCallVarargs): |
| (JSC::JIT::compileOpCall): |
| * jit/JITCall32_64.cpp: |
| (JSC::JIT::compileOpCallInitializeCallFrame): |
| (JSC::JIT::compileOpCallVarargs): |
| (JSC::JIT::compileOpCall): |
| (JSC::JIT::compileOpCallSlowCase): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitPutToCallFrameHeader): |
| (JSC::JIT::emitPutCellToCallFrameHeader): |
| (JSC::JIT::emitPutIntToCallFrameHeader): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::privateCompileCTINativeCall): |
| (JSC::JIT::emit_op_get_pnames): |
| (JSC::JIT::emit_op_next_pname): |
| (JSC::JIT::emit_op_load_varargs): |
| (JSC::JIT::emitSlow_op_load_varargs): |
| * jit/JITOpcodes32_64.cpp: |
| (JSC::JIT::privateCompileCTINativeCall): |
| (JSC::JIT::emit_op_get_pnames): |
| (JSC::JIT::emit_op_next_pname): |
| * jit/JSInterfaceJIT.h: |
| (JSC::JSInterfaceJIT::intPayloadFor): |
| (JSC::JSInterfaceJIT::intTagFor): |
| * jit/SpecializedThunkJIT.h: |
| (JSC::SpecializedThunkJIT::returnJSValue): |
| (JSC::SpecializedThunkJIT::returnDouble): |
| (JSC::SpecializedThunkJIT::returnInt32): |
| (JSC::SpecializedThunkJIT::returnJSCell): |
| |
| 2011-03-11 Dimitri Glazkov <dglazkov@chromium.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Introduce project_dir variable and make paths a whole lot saner. Ok, a little bit saner. |
| https://bugs.webkit.org/show_bug.cgi?id=56231 |
| |
| * JavaScriptCore.gypi: Added project_dir variable. |
| * gyp/JavaScriptCore.gyp: Changed to use project_dir, rather than DEPTH/JavaScriptCore. |
| * gyp/generate-dtrace-header.sh: Changed to use project_dir. |
| |
| 2011-03-11 Dimitri Glazkov <dglazkov@chromium.org> |
| |
| Reviewed by Adam Barth. |
| |
| Start using derived sources correctly and link minidom with JavaScriptCore gyp project. |
| https://bugs.webkit.org/show_bug.cgi?id=56217 |
| |
| * gyp/JavaScriptCore.gyp: Added derived source files and passing of shared directory |
| to the scripts. |
| * gyp/generate-derived-sources.sh: Changed to use passed directory. |
| * gyp/generate-dtrace-header.sh: Ditto. |
| |
| 2011-03-11 Eric Carlson <eric.carlson@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| <rdar://problem/8955589> Adopt AVFoundation media back end on Lion. |
| |
| No new tests, existing media tests cover this. |
| |
| * JavaScriptCore.exp: Export cancelCallOnMainThread |
| * wtf/Platform.h: Define WTF_USE_AVFOUNDATION. |
| |
| 2011-03-11 Dimitri Glazkov <dglazkov@chromium.org> |
| |
| Reviewed by Adam Barth. |
| |
| Tweak dylib paths and add dtrace header generation action to JavaScriptCore gyp project. |
| https://bugs.webkit.org/show_bug.cgi?id=56207 |
| |
| * JavaScriptCore.gypi: Added Tracing.d to the sources. |
| * gyp/generate-dtrace-header.sh: Added. |
| * gyp/JavaScriptCore.gyp: Updated dylib paths (now the project can see them), |
| and added DTrace header generating step. |
| |
| 2011-03-10 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Fix allocation of native function with a cached thunk |
| https://bugs.webkit.org/show_bug.cgi?id=56127 |
| |
| Fix this race condition found while fixing zombies. |
| |
| * collector/handles/HandleHeap.cpp: |
| (JSC::HandleHeap::clearWeakPointers): |
| * runtime/Heap.cpp: |
| (JSC::Heap::reset): |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::JSFunction): |
| (JSC::JSFunction::markChildren): |
| * runtime/JSValue.h: |
| (JSC::JSValue::decode): |
| * runtime/JSZombie.cpp: |
| (JSC::JSZombie::leakedZombieStructure): |
| * runtime/JSZombie.h: |
| (JSC::JSZombie::createStructure): |
| * runtime/MarkedBlock.cpp: |
| |
| 2011-03-10 Luiz Agostini <luiz.agostini@openbossa.org> |
| |
| Reviewed by Andreas Kling. |
| |
| [Qt] fast/workers/stress-js-execution.html is crashing on Qt bot (intermittently) |
| https://bugs.webkit.org/show_bug.cgi?id=33008 |
| |
| Defining WTF_USE_PTHREAD_BASED_QT=1 for platforms where QThread uses pthread internally. |
| Symbian is excluded because pthread_kill does not work on it. Mac is excluded because |
| it has its own ways to do JSC threading. |
| |
| Defining WTF_USE_PTHREADS inside MachineStackMarker.cpp if USE(PTHREAD_BASED_QT) is true. |
| |
| * runtime/MachineStackMarker.cpp: |
| * wtf/Platform.h: |
| |
| 2011-03-10 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Bug 56077 - ES5 conformance issues with RegExp.prototype |
| |
| There are three issues causing test failures in sputnik. |
| |
| (1) lastIndex should be converted at the point it is used, not the point it is set (this is visible if valueOf is overridden). |
| (2) The 'length' property of the test/exec functions should be 1. |
| (3) If no input is specified, the input to test()/exec() is "undefined" (i.e. ToString(undefined)) - not RegExp.input. |
| |
| * runtime/RegExpObject.cpp: |
| (JSC::RegExpObject::markChildren): |
| - Added to mark lastIndex |
| (JSC::regExpObjectLastIndex): |
| (JSC::setRegExpObjectLastIndex): |
| - lastIndex is now stored as a JSValue. |
| (JSC::RegExpObject::match): |
| - Use accessor methods to get/set lastIndex, add fast case for isUInt32 (don't convert to double). |
| * runtime/RegExpObject.h: |
| (JSC::RegExpObject::setLastIndex): |
| (JSC::RegExpObject::setLastIndex): |
| - Set lastIndex, either from a size_t or a JSValue. |
| (JSC::RegExpObject::getLastIndex): |
| - Get lastIndex. |
| (JSC::RegExpObject::RegExpObjectData::RegExpObjectData): |
| - Initialize as a JSValue. |
| * runtime/RegExpPrototype.cpp: |
| (JSC::RegExpPrototype::RegExpPrototype): |
| - Add test/exec properties with length 1. |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncMatch): |
| (JSC::stringProtoFuncSearch): |
| - Do not read RegExp.input if none is provided. |
| * tests/mozilla/js1_2/regexp/RegExp_input.js: |
| * tests/mozilla/js1_2/regexp/RegExp_input_as_array.js: |
| - Update these tests (they relied on non-ES5 behaviour). |
| |
| 2011-03-10 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Rolled back in 80277 and 80280 with event handler layout test failures fixed. |
| https://bugs.webkit.org/show_bug.cgi?id=55653 |
| |
| The failures were caused by a last minute typo: assigning to currentEvent |
| instead of m_currentEvent. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * bytecompiler/BytecodeGenerator.cpp: |
| * jit/JITOpcodes.cpp: |
| * jit/JITOpcodes32_64.cpp: |
| * runtime/Arguments.h: |
| * runtime/JSActivation.cpp: |
| * runtime/JSActivation.h: |
| * runtime/JSCell.h: |
| * runtime/JSGlobalObject.cpp: |
| * runtime/JSGlobalObject.h: |
| * runtime/JSObject.cpp: |
| * runtime/JSStaticScopeObject.cpp: |
| * runtime/JSStaticScopeObject.h: |
| * runtime/JSVariableObject.h: |
| * runtime/MarkedSpace.cpp: |
| * runtime/MarkedSpace.h: |
| |
| 2011-03-09 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| jquery/manipulation.html fails after r80598 |
| https://bugs.webkit.org/show_bug.cgi?id=56019 |
| |
| When linking a call, codeblock now takes ownership of the linked function |
| This removes the need for unlinking, and thus the incorrectness that was |
| showing up in these tests. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::~CodeBlock): |
| (JSC::CodeBlock::markAggregate): |
| * bytecode/CodeBlock.h: |
| (JSC::CallLinkInfo::CallLinkInfo): |
| (JSC::CallLinkInfo::setUnlinked): |
| (JSC::CodeBlock::addCaller): |
| * jit/JIT.cpp: |
| (JSC::JIT::privateCompile): |
| (JSC::JIT::linkCall): |
| (JSC::JIT::linkConstruct): |
| * jit/JIT.h: |
| * runtime/Executable.cpp: |
| * runtime/Executable.h: |
| |
| 2011-03-09 Daniel Bates <dbates@rim.com> |
| |
| Attempt to fix the WinCE build after changeset 80684 <http://trac.webkit.org/changeset/80684> |
| (Bug #56041<https://bugs.webkit.org/show_bug.cgi?id=56041>). |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): Substitute variable callFrame for exec in call to createSyntaxError(). |
| |
| 2011-03-09 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bug 56041 - RexExp constructor should only accept flags "gim" |
| Fix for issues introduced in r80667. |
| |
| Invalid flags to a RegExp literal are a late syntax error! |
| |
| * bytecode/CodeBlock.h: |
| (JSC::CodeBlock::addRegExp): |
| - Pass a PassRefPtr<RegExp> |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::addRegExp): |
| (JSC::BytecodeGenerator::emitNewRegExp): |
| * bytecompiler/BytecodeGenerator.h: |
| - Pass a PassRefPtr<RegExp> |
| * bytecompiler/NodesCodegen.cpp: |
| (JSC::RegExpNode::emitBytecode): |
| - Should not be ASSERTing that the flags are valid - this is a late(er) error. |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| - Need to check for error from RegExp constructor. |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| - Need to check for error from RegExp constructor. |
| * runtime/RegExp.h: |
| (JSC::RegExp::isValid): |
| - Make isValid check that the regexp was created with valid flags. |
| * runtime/RegExpKey.h: |
| - Since we'll not create RegExp objects with invalid flags, separate out the deleted value. |
| |
| 2011-03-09 Gavin Barraclough <barraclough@apple.com> |
| |
| Windows build fix part 2. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2011-03-09 Gavin Barraclough <barraclough@apple.com> |
| |
| Windows build fix part 1. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2011-03-09 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Bug 56041 - RexExp constructor should only accept flags "gim" |
| We also should be passing the flags around as a bitfield rather than a string, |
| and should not have redundant, incompatible code for converting the string to a bitfield! |
| |
| * JavaScriptCore.exp: |
| * bytecompiler/NodesCodegen.cpp: |
| (JSC::RegExpNode::emitBytecode): |
| - Need to parse flags string to enum. |
| * runtime/RegExp.cpp: |
| (JSC::regExpFlags): |
| (JSC::RegExp::RegExp): |
| (JSC::RegExp::create): |
| - Add method to parse flags string to enum, change constructor/create args to take enum. |
| * runtime/RegExp.h: |
| (JSC::RegExp::global): |
| (JSC::RegExp::ignoreCase): |
| (JSC::RegExp::multiline): |
| - Change to use new enum values. |
| * runtime/RegExpCache.cpp: |
| (JSC::RegExpCache::lookupOrCreate): |
| (JSC::RegExpCache::create): |
| * runtime/RegExpCache.h: |
| - Changed to use regExpFlags enum instead of int/const UString&. |
| * runtime/RegExpConstructor.cpp: |
| (JSC::constructRegExp): |
| - Add use new enum parsing, check for error. |
| * runtime/RegExpKey.h: |
| (JSC::RegExpKey::RegExpKey): |
| * runtime/RegExpPrototype.cpp: |
| (JSC::RegExpPrototype::RegExpPrototype): |
| - Pass NoFlags value instead of empty string. |
| (JSC::regExpProtoFuncCompile): |
| - Add use new enum parsing, check for error. |
| * runtime/StringPrototype.cpp: |
| (JSC::stringProtoFuncMatch): |
| (JSC::stringProtoFuncSearch): |
| - Pass NoFlags value instead of empty string. |
| |
| 2011-03-08 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig |
| |
| Bug 55994 - Functions on Array.prototype should check length first. |
| These methods are designed to work on generic objects too, and if 'length' |
| is a getter that throws an exception, ensure this is correctly thrown |
| (even if other exceptions would be thrown, too). |
| |
| Make the length check the first thing we do. |
| This change shows a progression on SunSpider on my machine, but this is likely bogus. |
| |
| * runtime/ArrayPrototype.cpp: |
| (JSC::arrayProtoFuncToString): |
| (JSC::arrayProtoFuncToLocaleString): |
| (JSC::arrayProtoFuncJoin): |
| (JSC::arrayProtoFuncPop): |
| (JSC::arrayProtoFuncPush): |
| (JSC::arrayProtoFuncReverse): |
| (JSC::arrayProtoFuncShift): |
| (JSC::arrayProtoFuncSlice): |
| (JSC::arrayProtoFuncSort): |
| (JSC::arrayProtoFuncSplice): |
| (JSC::arrayProtoFuncUnShift): |
| (JSC::arrayProtoFuncFilter): |
| (JSC::arrayProtoFuncMap): |
| (JSC::arrayProtoFuncEvery): |
| (JSC::arrayProtoFuncForEach): |
| (JSC::arrayProtoFuncSome): |
| (JSC::arrayProtoFuncReduce): |
| (JSC::arrayProtoFuncReduceRight): |
| (JSC::arrayProtoFuncIndexOf): |
| (JSC::arrayProtoFuncLastIndexOf): |
| |
| 2011-03-07 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Make CodeBlock GC write barrier safe |
| https://bugs.webkit.org/show_bug.cgi?id=55910 |
| |
| In order to make CodeBlock WriteBarrier safe it was necessary |
| to make it have a single GC owner, and for that reason I have |
| made ExecutableBase a GC allocated object. This required |
| updating their creation routines as well as all sites that hold |
| a reference to them. GC objects that held Executable's have been |
| converted to WriteBarriers, and all other sites now use Global<>. |
| |
| As an added benefit this gets rid of JSGlobalData's list of |
| GlobalCodeBlocks. |
| |
| Perf testing shows a 0.5% progression on v8, vs. a 0.3% regression |
| on SunSpider. Given none of the tests that show regressions |
| demonstrate a regression on their own, and sampling shows up nothing. |
| I suspect we're just getting one or two additional gc passes at |
| the end of the run. |
| |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::dump): |
| (JSC::CodeBlock::CodeBlock): |
| (JSC::EvalCodeCache::markAggregate): |
| (JSC::CodeBlock::markAggregate): |
| * bytecode/CodeBlock.h: |
| (JSC::CodeBlock::ownerExecutable): |
| (JSC::CodeBlock::addConstant): |
| (JSC::CodeBlock::constantRegister): |
| (JSC::CodeBlock::getConstant): |
| (JSC::CodeBlock::addFunctionDecl): |
| (JSC::CodeBlock::addFunctionExpr): |
| (JSC::GlobalCodeBlock::GlobalCodeBlock): |
| (JSC::ExecState::r): |
| * bytecode/EvalCodeCache.h: |
| (JSC::EvalCodeCache::get): |
| * bytecode/SamplingTool.h: |
| (JSC::ScriptSampleRecord::ScriptSampleRecord): |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::addConstantValue): |
| (JSC::BytecodeGenerator::emitEqualityOp): |
| * bytecompiler/BytecodeGenerator.h: |
| (JSC::BytecodeGenerator::makeFunction): |
| * debugger/Debugger.cpp: |
| (JSC::evaluateInGlobalCallFrame): |
| * debugger/DebuggerCallFrame.cpp: |
| (JSC::DebuggerCallFrame::evaluate): |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::callEval): |
| * jit/JITInlineMethods.h: |
| (JSC::JIT::emitLoadDouble): |
| (JSC::JIT::emitLoadInt32ToDouble): |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::JITThunks): |
| (JSC::JITThunks::hostFunctionStub): |
| (JSC::JITThunks::clearHostFunctionStubs): |
| * jit/JITStubs.h: |
| * runtime/Completion.cpp: |
| (JSC::checkSyntax): |
| (JSC::evaluate): |
| * runtime/Executable.cpp: |
| (JSC::EvalExecutable::EvalExecutable): |
| (JSC::ProgramExecutable::ProgramExecutable): |
| (JSC::FunctionExecutable::FunctionExecutable): |
| (JSC::FunctionExecutable::~FunctionExecutable): |
| (JSC::EvalExecutable::markChildren): |
| (JSC::ProgramExecutable::markChildren): |
| (JSC::FunctionExecutable::markChildren): |
| (JSC::FunctionExecutable::fromGlobalCode): |
| * runtime/Executable.h: |
| (JSC::ExecutableBase::ExecutableBase): |
| (JSC::ExecutableBase::createStructure): |
| (JSC::NativeExecutable::create): |
| (JSC::NativeExecutable::NativeExecutable): |
| (JSC::VPtrHackExecutable::VPtrHackExecutable): |
| (JSC::ScriptExecutable::ScriptExecutable): |
| (JSC::EvalExecutable::create): |
| (JSC::EvalExecutable::createStructure): |
| (JSC::ProgramExecutable::create): |
| (JSC::ProgramExecutable::createStructure): |
| (JSC::FunctionExecutable::create): |
| (JSC::FunctionExecutable::createStructure): |
| * runtime/FunctionConstructor.cpp: |
| (JSC::constructFunction): |
| * runtime/Heap.cpp: |
| (JSC::Heap::destroy): |
| (JSC::Heap::markRoots): |
| * runtime/Heap.h: |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::JSActivation): |
| (JSC::JSActivation::markChildren): |
| * runtime/JSActivation.h: |
| (JSC::JSActivation::JSActivationData::JSActivationData): |
| * runtime/JSCell.h: |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::JSFunction): |
| (JSC::JSFunction::~JSFunction): |
| (JSC::JSFunction::markChildren): |
| * runtime/JSFunction.h: |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::storeVPtrs): |
| (JSC::JSGlobalData::JSGlobalData): |
| (JSC::JSGlobalData::getHostFunction): |
| * runtime/JSGlobalData.h: |
| * runtime/JSGlobalObjectFunctions.cpp: |
| (JSC::globalFuncEval): |
| * runtime/JSObject.cpp: |
| * runtime/JSStaticScopeObject.cpp: |
| (JSC::JSStaticScopeObject::markChildren): |
| * runtime/JSStaticScopeObject.h: |
| (JSC::JSStaticScopeObject::JSStaticScopeObjectData::JSStaticScopeObjectData): |
| (JSC::JSStaticScopeObject::JSStaticScopeObject): |
| * runtime/JSZombie.cpp: |
| (JSC::JSZombie::leakedZombieStructure): |
| * runtime/JSZombie.h: |
| (JSC::JSZombie::createStructure): |
| * runtime/MarkedSpace.h: |
| |
| 2011-03-07 Andy Estes <aestes@apple.com> |
| |
| Reviewed by Dan Bernstein. |
| |
| REGRESSION (r79060): Timestamp is missing from tweets in twitter. |
| https://bugs.webkit.org/show_bug.cgi?id=55228 |
| |
| A change to the date parser to handle the case where the year is |
| specified before the time zone inadvertently started accepting strings |
| such as '+0000' as valid years. Those strings actually represent time |
| zones in an offset of hours and minutes from UTC, not years. |
| |
| * wtf/DateMath.cpp: |
| (WTF::parseDateFromNullTerminatedCharacters): If the current character |
| in dateString is '+' or '-', do not try to parse the next token as a |
| year. |
| |
| 2011-03-06 Yuta Kitamura <yutak@chromium.org> |
| |
| Reviewed by Kent Tamura. |
| |
| Add SHA-1 for new WebSocket protocol |
| https://bugs.webkit.org/show_bug.cgi?id=55039 |
| |
| The code is based on Chromium's portable SHA-1 implementation |
| (src/base/sha1_portable.cc). Modifications were made in order |
| to make the code comply with WebKit coding style. |
| |
| * GNUmakefile.am: |
| * JavaScriptCore.exp: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * wtf/CMakeLists.txt: |
| * wtf/MD5.cpp: |
| (WTF::MD5::MD5): |
| * wtf/SHA1.cpp: Added. |
| (WTF::testSHA1): This function will be run the first time SHA1 |
| constructor is called. This function computes a few hash values |
| and checks the results in debug builds. However, constructor is |
| probably not a good place to run these tests, so we need to find |
| a good place for it (bug 55853). |
| (WTF::expectSHA1): |
| (WTF::f): |
| (WTF::k): |
| (WTF::rotateLeft): |
| (WTF::SHA1::SHA1): |
| (WTF::SHA1::addBytes): |
| (WTF::SHA1::computeHash): |
| (WTF::SHA1::finalize): |
| (WTF::SHA1::processBlock): |
| (WTF::SHA1::reset): |
| * wtf/SHA1.h: Added. |
| (WTF::SHA1::addBytes): |
| * wtf/wtf.pri: |
| |
| 2011-03-05 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Dimitri Glazkov. |
| |
| Add Derived Sources to WebCore GYP build |
| https://bugs.webkit.org/show_bug.cgi?id=55813 |
| |
| Rename the action to be friendlier. |
| |
| * gyp/JavaScriptCore.gyp: |
| |
| 2011-03-04 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com> |
| |
| Reviewed by Laszlo Gombos. |
| |
| [Qt] Need symbian version of cryptographicallyRandomValuesFromOS |
| https://bugs.webkit.org/show_bug.cgi?id=55782 |
| |
| Implement Symbian version of cryptographicallyRandomValuesFromOS |
| |
| * wtf/OSRandomSource.cpp: |
| (WTF::cryptographicallyRandomValuesFromOS): |
| |
| 2011-03-04 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Cameron Zwarich. |
| |
| Bug 55815 - Should throw an exception from JSObject::defineOwnProperty if !isExtensible(). |
| |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::defineOwnProperty): |
| Add missing check. |
| |
| 2011-03-04 Gavin Barraclough <barraclough@apple.com> |
| |
| Rubber stamped by olliej. |
| |
| Bug 54945 - The web page hangs towards the end of page load in Interpreter enabled javascript code in the latest webkit trunk. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::privateExecute): |
| (1) don't infinite loop. |
| (2) goto 1. |
| |
| 2011-03-04 Gavin Barraclough <barraclough@apple.com> |
| |
| cmake build fix. |
| |
| * CMakeLists.txt: |
| |
| 2011-03-04 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Dimitri Glazkov. |
| |
| Add Copy Files step to JavaScriptCore GYP build for apitest and minidom |
| https://bugs.webkit.org/show_bug.cgi?id=55798 |
| |
| * JavaScriptCore.gypi: |
| * gyp/JavaScriptCore.gyp: |
| |
| 2011-03-04 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Dimitri Glazkov. |
| |
| Remove unneeded round-trips through ../Source in the Chromium GYP build |
| https://bugs.webkit.org/show_bug.cgi?id=55795 |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| |
| 2011-03-04 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Dimitri Glazkov. |
| |
| Use target_defaults to reduce boilerplate in GYP build system |
| https://bugs.webkit.org/show_bug.cgi?id=55790 |
| |
| Instead of setting up the configuration in each target, just defer to |
| target_defaults. Also, removed a define that was redundant with the |
| xcconfig. |
| |
| * gyp/JavaScriptCore.gyp: |
| |
| 2011-03-03 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bug 55736 - Implement seal/freeze/preventExtensions for normal object types. |
| Provide basic functionallity from section 15.2.4 of ECMA-262. |
| This support will need expanding to cover arrays, too. |
| |
| Shows a 0.5% progression on SunSpidey, this seems to be due to changing |
| ObjectConstructor to use a static table. |
| |
| * DerivedSources.make: |
| * JavaScriptCore.exp: |
| * interpreter/CallFrame.h: |
| (JSC::ExecState::objectConstructorTable): |
| Add a static table for ObjectConstructor. |
| * runtime/CommonIdentifiers.h: |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| (JSC::JSGlobalData::~JSGlobalData): |
| Add a static table for ObjectConstructor. |
| * runtime/JSGlobalData.h: |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::reset): |
| Add a static table for ObjectConstructor. |
| * runtime/JSObject.cpp: |
| (JSC::JSObject::seal): |
| (JSC::JSObject::freeze): |
| (JSC::JSObject::preventExtensions): |
| Transition the object's structure. |
| (JSC::JSObject::defineOwnProperty): |
| Check isExtensible. |
| * runtime/JSObject.h: |
| (JSC::JSObject::isSealed): |
| (JSC::JSObject::isFrozen): |
| (JSC::JSObject::isExtensible): |
| These wrap method on structure. |
| (JSC::JSObject::putDirectInternal): |
| Check isExtensible. |
| * runtime/ObjectConstructor.cpp: |
| (JSC::ObjectConstructor::ObjectConstructor): |
| (JSC::ObjectConstructor::getOwnPropertySlot): |
| (JSC::ObjectConstructor::getOwnPropertyDescriptor): |
| Change ObjectConstructor to use a static table. |
| (JSC::objectConstructorSeal): |
| (JSC::objectConstructorFreeze): |
| (JSC::objectConstructorPreventExtensions): |
| (JSC::objectConstructorIsSealed): |
| (JSC::objectConstructorIsFrozen): |
| (JSC::objectConstructorIsExtensible): |
| Add new methods on Object. |
| * runtime/ObjectConstructor.h: |
| (JSC::ObjectConstructor::createStructure): |
| * runtime/Structure.cpp: |
| (JSC::Structure::Structure): |
| init/propagate m_preventExtensions |
| (JSC::Structure::sealTransition): |
| (JSC::Structure::freezeTransition): |
| (JSC::Structure::preventExtensionsTransition): |
| transition the structure, materializing the property map, setting m_preventExtensions & changing attributes. |
| (JSC::Structure::isSealed): |
| (JSC::Structure::isFrozen): |
| check attributes to detect if object is sealed/frozen. |
| * runtime/Structure.h: |
| (JSC::Structure::isExtensible): |
| checks the m_preventExtensions flag. |
| |
| 2011-03-04 Steve Falkenburg <sfalken@apple.com> |
| |
| Reviewed by Jon Honeycutt. |
| |
| Adopt VersionStamper tool for Windows WebKit DLLs |
| https://bugs.webkit.org/show_bug.cgi?id=55784 |
| <rdar://problem/9021273> |
| |
| We now use a tool to stamp the version number onto the Apple WebKit DLLs |
| during the post-build step. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: Removed. |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd: |
| |
| 2011-03-04 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Dimitri Glazkov. |
| |
| JavaScriptCore GYP build should use a header map |
| https://bugs.webkit.org/show_bug.cgi?id=55712 |
| |
| This patch moves the os-win32 files into their own variable so that we |
| can use a header map in the Apple Mac Xcode build. The problem is that |
| the header map searches the whole project rather than just the files |
| included in a given target. Another solution to this problem is to |
| make GYP smarter about filtering out what files are added to the |
| project file. |
| |
| * JavaScriptCore.gypi: |
| * gyp/JavaScriptCore.gyp: |
| |
| 2011-03-03 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| Remove LOOSE_PASS_OWN_ARRAY_PTR from PassOwnArrayPtr.h |
| https://bugs.webkit.org/show_bug.cgi?id=55554 |
| |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::copyGlobalsTo): Pass nullptr instead of 0. |
| (JSC::JSGlobalObject::resizeRegisters): Ditto; also use OwnArrayPtr instead of a raw pointer. |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::addStaticGlobals): Ditto. |
| * wtf/PassOwnArrayPtr.h: Removed #define LOOSE_PASS_OWN_ARRAY_PTR |
| (WTF::PassOwnArrayPtr::PassOwnArrayPtr): Added a constructor that takes nullptr_t. |
| |
| 2011-03-03 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Dimitri Glazkov. |
| |
| Add jsc to JavaScriptCore GYP build |
| https://bugs.webkit.org/show_bug.cgi?id=55711 |
| |
| * JavaScriptCore.gypi: |
| - Move jsc.cpp into jsc_files because it's really part of the jsc |
| target. |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| - Remove extraneous files from the normal jsc build. I probably |
| added these by mistake at some point. |
| * gyp/JavaScriptCore.gyp: |
| - Add the jsc target to the GYP file. |
| |
| 2011-03-03 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Dimitri Glazkov. |
| |
| Add testapi to JavaScriptCore GYP build |
| https://bugs.webkit.org/show_bug.cgi?id=55707 |
| |
| The new testapi target is slightly incomplete. There's a resource |
| copying step that we don't quite have yet. |
| |
| This patch also cleans up some of the configuration issues in |
| JavaScriptCore.xcodeproj. It seems kind of wordy to repeat these for |
| each target. I suspect there's a more compact way of defining the |
| configurations, but this removes the "Default" configuration, which is |
| progress. |
| |
| * JavaScriptCore.gypi: |
| * gyp/JavaScriptCore.gyp: |
| |
| 2011-03-03 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Teach JavaScriptCore GYP build about private headers |
| https://bugs.webkit.org/show_bug.cgi?id=55532 |
| |
| This patch distinguishes between public and private framework headers |
| so that public headers are copied into the Headers directory and |
| private headers are copied into the PrivateHeaders directory. |
| |
| * gyp/JavaScriptCore.gyp: |
| |
| 2011-03-03 Geoffrey Garen <ggaren@apple.com> |
| |
| Rolled out 80277 and 80280 because they caused event handler layout test |
| failures. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * bytecompiler/BytecodeGenerator.cpp: |
| * jit/JITOpcodes.cpp: |
| * jit/JITOpcodes32_64.cpp: |
| * runtime/Arguments.h: |
| * runtime/JSActivation.cpp: |
| * runtime/JSActivation.h: |
| * runtime/JSCell.h: |
| * runtime/JSGlobalObject.cpp: |
| * runtime/JSGlobalObject.h: |
| * runtime/JSObject.cpp: |
| * runtime/JSStaticScopeObject.cpp: |
| * runtime/JSStaticScopeObject.h: |
| * runtime/JSVariableObject.h: |
| * runtime/MarkedSpace.cpp: |
| * runtime/MarkedSpace.h: |
| |
| 2011-03-03 Kevin Ollivier <kevino@theolliviers.com> |
| |
| [wx] Build fix. Alter order of headers included to make sure windows.h |
| is configured by wx, and skip Posix implementation file we don't use on Win. |
| |
| * wscript: |
| * wtf/wx/StringWx.cpp: |
| |
| 2011-03-03 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| JSVariableObject needs to use WriteBarrier for symboltable property storage |
| https://bugs.webkit.org/show_bug.cgi?id=55698 |
| |
| Replace the direct usage of Register in JSVariableObject (and descendents) |
| with WriteBarrier. This requires updating the Arguments object to use |
| WriteBarrier as well. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::Interpreter::unwindCallFrame): |
| (JSC::Interpreter::privateExecute): |
| (JSC::Interpreter::retrieveArguments): |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * runtime/ArgList.h: |
| (JSC::MarkedArgumentBuffer::initialize): |
| * runtime/Arguments.cpp: |
| (JSC::Arguments::markChildren): |
| (JSC::Arguments::copyToRegisters): |
| (JSC::Arguments::fillArgList): |
| (JSC::Arguments::getOwnPropertySlot): |
| (JSC::Arguments::getOwnPropertyDescriptor): |
| (JSC::Arguments::put): |
| * runtime/Arguments.h: |
| (JSC::Arguments::setActivation): |
| (JSC::Arguments::Arguments): |
| (JSC::Arguments::copyRegisters): |
| (JSC::JSActivation::copyRegisters): |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::markChildren): |
| (JSC::JSActivation::symbolTableGet): |
| (JSC::JSActivation::symbolTablePut): |
| (JSC::JSActivation::symbolTablePutWithAttributes): |
| (JSC::JSActivation::put): |
| (JSC::JSActivation::putWithAttributes): |
| (JSC::JSActivation::argumentsGetter): |
| * runtime/JSActivation.h: |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::put): |
| (JSC::JSGlobalObject::putWithAttributes): |
| (JSC::JSGlobalObject::markChildren): |
| (JSC::JSGlobalObject::copyGlobalsFrom): |
| (JSC::JSGlobalObject::copyGlobalsTo): |
| (JSC::JSGlobalObject::resizeRegisters): |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::setRegisters): |
| (JSC::JSGlobalObject::addStaticGlobals): |
| * runtime/JSStaticScopeObject.cpp: |
| (JSC::JSStaticScopeObject::put): |
| (JSC::JSStaticScopeObject::putWithAttributes): |
| * runtime/JSVariableObject.cpp: |
| (JSC::JSVariableObject::symbolTableGet): |
| * runtime/JSVariableObject.h: |
| (JSC::JSVariableObject::registerAt): |
| (JSC::JSVariableObject::JSVariableObjectData::JSVariableObjectData): |
| (JSC::JSVariableObject::symbolTableGet): |
| (JSC::JSVariableObject::symbolTablePut): |
| (JSC::JSVariableObject::symbolTablePutWithAttributes): |
| (JSC::JSVariableObject::copyRegisterArray): |
| (JSC::JSVariableObject::setRegisters): |
| |
| 2011-03-03 Geoffrey Garen <ggaren@apple.com> |
| |
| Try to fix Windows build. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Removed obsolete symbol. |
| |
| * runtime/JSStaticScopeObject.cpp: |
| (JSC::JSStaticScopeObject::getOwnPropertySlot): Don't mark this function |
| inline -- it's virtual. |
| |
| 2011-03-02 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Moved all variable object storage inline -- upping the object size limit to 1K |
| https://bugs.webkit.org/show_bug.cgi?id=55653 |
| |
| * JavaScriptCore.exp: |
| * bytecompiler/BytecodeGenerator.cpp: |
| * jit/JITOpcodes.cpp: |
| * runtime/Arguments.h: |
| * runtime/JSActivation.h: Removed out-of-line storage. Changed d-> to m_. |
| |
| * runtime/JSCell.h: |
| (JSC::JSCell::MarkedSpace::sizeClassFor): Added an imprecise size class |
| to accomodate objects up to 1K. |
| |
| * runtime/JSGlobalObject.cpp: |
| * runtime/JSGlobalObject.h: Removed out-of-line storage. Changed d-> to m_. |
| |
| * runtime/JSObject.cpp: Don't ASSERT that JSFinalObject fills the maximum |
| object size, since it doesn't anymore. |
| |
| * runtime/JSStaticScopeObject.cpp: |
| * runtime/JSStaticScopeObject.h: |
| * runtime/JSVariableObject.h: Removed out-of-line storage. Changed d-> to m_. |
| |
| * runtime/MarkedSpace.cpp: |
| (JSC::MarkedSpace::MarkedSpace): |
| (JSC::MarkedSpace::reset): |
| * runtime/MarkedSpace.h: Added an imprecise size class to accomodate objects up to 1K. |
| |
| 2011-03-03 Timothy Hatcher <timothy@apple.com> |
| |
| Make APIShims usable from WebCore. |
| |
| Reviewed by Oliver Hunt. |
| |
| * ForwardingHeaders/JavaScriptCore/APIShims.h: Added. |
| * GNUmakefile.am: |
| * JavaScriptCore.exp: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2011-03-03 Peter Varga <pvarga@webkit.org> |
| |
| Reviewed by Oliver Hunt. |
| |
| Begin Characters Optimization Causes YARR Interpreter Errors |
| https://bugs.webkit.org/show_bug.cgi?id=55479 |
| |
| The addBeginTerm function is removed because it doesn't correctly handle those |
| cases when an "invalid" term has been |
| collected (e.g. CharacterClass). Move the removed function to the |
| setupAlternativeBeginTerms method's switch-case |
| where the non-allowed cases are correctly handled. |
| |
| Reenable the Beginning Character Optimization in the YARR Interpreter again. |
| |
| * yarr/YarrPattern.cpp: |
| (JSC::Yarr::YarrPatternConstructor::setupAlternativeBeginTerms): |
| (JSC::Yarr::YarrPattern::compile): |
| |
| 2011-03-02 Jessie Berlin <jberlin@apple.com> |
| |
| Reviewed by Adam Roben. |
| |
| WebKit2: Use CFNetwork Sessions API. |
| https://bugs.webkit.org/show_bug.cgi?id=55435 |
| |
| Add the ability to create a Private Browsing storage session. |
| |
| * wtf/Platform.h: |
| Add a new #define for using CF Storage Sessions. |
| |
| 2011-03-02 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Remove "register slot" concept from PropertySlot |
| https://bugs.webkit.org/show_bug.cgi?id=55621 |
| |
| PropertySlot had already stopped storing Register "slots" |
| so this patch is simply removing that api entirely. |
| This exposed a problem in the ProgramNode constructor for |
| BytecodeGenerator where it reads from the registerfile |
| before it has initialised it. |
| |
| This bug wasn't a problem before as we were merely testing |
| for property existence rather than the actual value, and |
| used to work because setRegisterSlot didn't check that the |
| provided slot contained an initialised value. |
| |
| To get around this issue we now use symbolTableHasProperty |
| to do the symbol table check without trying to read the |
| RegisterFile. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::BytecodeGenerator): |
| * runtime/Arguments.cpp: |
| (JSC::Arguments::getOwnPropertySlot): |
| * runtime/JSActivation.cpp: |
| (JSC::JSActivation::symbolTableGet): |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::symbolTableHasProperty): |
| * runtime/JSVariableObject.h: |
| (JSC::JSVariableObject::symbolTableGet): |
| * runtime/PropertySlot.h: |
| |
| 2011-03-02 Daniel Cheng <dcheng@chromium.org> |
| |
| Reviewed by David Levin. |
| |
| Add feature define for data transfer items |
| https://bugs.webkit.org/show_bug.cgi?id=55510 |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * wtf/Platform.h: |
| |
| 2011-03-02 Adam Roben <aroben@apple.com> |
| |
| Delete old .res files whenever any .vsprops file changes |
| |
| Prospective fix for <http://webkit.org/b/55599> r80079 caused incremental Windows builds to |
| fail |
| |
| Reviewed by Tony Chang. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: |
| (main): Restructured code to loop over a set of file extensions, deleting any old files that |
| have that extension. Now deletes .res files, too. (We previously deleted any file matching |
| *.manifest*, but that turned out to just be the union of *.manifest and *.res.) |
| |
| 2011-03-02 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Dimitri Glazkov. |
| |
| Teach JavaScriptCore GYP build how to build minidom |
| https://bugs.webkit.org/show_bug.cgi?id=55536 |
| |
| * JavaScriptCore.gypi: |
| * gyp/JavaScriptCore.gyp: |
| |
| 2011-03-01 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| JavaScriptCore GYP build should copy some headers into the target framework |
| https://bugs.webkit.org/show_bug.cgi?id=55524 |
| |
| After this patch, all the framework headers are exported as public |
| headers. We need to teach GYP how to handle private headers. |
| |
| I struggled to determine how to store the information about whether a |
| header was public, private, or project (i.e., not exported). |
| Generally, the GYPI should just list the files, but it seemed siliy to |
| have an almost duplicated list of files in the GYP file itself. If |
| this design doesn't scale, we might have to revisit it in the future. |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| * JavaScriptCore.gypi: |
| * gyp/JavaScriptCore.gyp: |
| |
| 2011-03-01 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r80079. |
| http://trac.webkit.org/changeset/80079 |
| https://bugs.webkit.org/show_bug.cgi?id=55547 |
| |
| "Broke the Win debug build?" (Requested by dcheng on #webkit). |
| |
| * wtf/Platform.h: |
| |
| 2011-03-01 Daniel Cheng <dcheng@chromium.org> |
| |
| Reviewed by David Levin. |
| |
| Add feature define for data transfer items |
| https://bugs.webkit.org/show_bug.cgi?id=55510 |
| |
| * wtf/Platform.h: |
| |
| 2011-03-01 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Misaligned memory access in CloneDeserializer on all ARM arch. |
| https://bugs.webkit.org/show_bug.cgi?id=48742 |
| |
| Add a CPU class for architectures that need aligned addresses |
| for memory access. |
| |
| * wtf/Platform.h: |
| |
| 2011-03-01 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Dimitri Glazkov. |
| |
| Add pre- and post-build actions for JavaScriptCore GYP build |
| https://bugs.webkit.org/show_bug.cgi?id=55507 |
| |
| After this patch, we have all the steps for building the main |
| JavaScriptCore framework except the "copy headers" step, which I'll do |
| next. |
| |
| * gyp/JavaScriptCore.gyp: |
| |
| 2011-03-01 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Rolled back in r79627 now that the underlying cause for it crashing is fixed. |
| https://bugs.webkit.org/show_bug.cgi?id=55159 |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * runtime/Heap.cpp: |
| (JSC::Heap::allocateSlowCase): |
| * runtime/Heap.h: |
| * runtime/JSCell.h: |
| (JSC::JSCell::MarkedSpace::sizeClassFor): |
| (JSC::JSCell::Heap::allocate): |
| (JSC::JSCell::JSCell::operator new): |
| * runtime/MarkedBlock.h: |
| * runtime/MarkedSpace.cpp: |
| (JSC::MarkedSpace::MarkedSpace): |
| (JSC::MarkedSpace::allocateBlock): |
| (JSC::MarkedSpace::reset): |
| * runtime/MarkedSpace.h: |
| (JSC::MarkedSpace::SizeClass::SizeClass): |
| |
| 2011-03-01 Mark Rowe <mrowe@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Replace two script phases that do nothing but copy files with copy files build phases. |
| |
| This speeds up the build by a few seconds on high-end Mac Pros. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| |
| 2011-03-01 David Kilzer <ddkilzer@apple.com> |
| |
| Spring cleaning! |
| |
| Rubber-stamped by Mark Rowe. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| (Copy Into Framework): Remove "set -x" and its comment. |
| |
| 2011-03-01 Michael Saboff <msaboff@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| TinyMCE not working in nightlies |
| https://bugs.webkit.org/show_bug.cgi?id=54978 |
| |
| Disabling setupBeginChars() to temporarily work arround the test |
| failure. Filed https://bugs.webkit.org/show_bug.cgi?id=55479 |
| to track fixing the issue. |
| |
| * yarr/YarrPattern.cpp: |
| (JSC::Yarr::YarrPattern::compile): |
| |
| 2011-02-23 Joseph Pecoraro <joepeck@webkit.org> |
| |
| Reviewed by Kenneth Rohde Christiansen. |
| |
| Viewport parsing no longer accepts "1.0;" value as valid. |
| https://bugs.webkit.org/show_bug.cgi?id=53705 |
| |
| Include a didReadNumber parameter to String -> float / double |
| conversion functions. This way, if the "ok" boolean out |
| parameter is false, you can check to see if there in fact |
| was a valid number parsed with garbage at the end. Examples |
| of that would be parsing "123x456" would have ok = false, |
| but didReadNumber = true. |
| |
| * JavaScriptCore.exp: |
| * wtf/text/StringImpl.cpp: |
| (WTF::StringImpl::toDouble): |
| (WTF::StringImpl::toFloat): |
| * wtf/text/StringImpl.h: |
| * wtf/text/WTFString.cpp: |
| (WTF::String::toDouble): |
| (WTF::String::toFloat): |
| (WTF::charactersToDouble): |
| (WTF::charactersToFloat): |
| * wtf/text/WTFString.h: |
| |
| 2011-02-28 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Past-the-end writes in VM exceptions (caused crashes in r79627) |
| https://bugs.webkit.org/show_bug.cgi?id=55448 |
| |
| Some exceptions had the wrong structures, so they misoverestimated their |
| inline storage sizes. |
| |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): Use the right structure. |
| |
| * runtime/JSObject.h: |
| (JSC::JSNonFinalObject::JSNonFinalObject): |
| (JSC::JSFinalObject::JSFinalObject): ASSERT that our structure capacity |
| is correct to verify this doesn't happen again. |
| |
| 2011-03-01 Andras Becsi <abecsi@webkit.org> |
| |
| Reviewed by Csaba Osztrogonác. |
| |
| [Qt] Clean up the project files and move common options to WebKit.pri. |
| |
| * JavaScriptCore.pri: Move options also needed in WebCore into WebKit.pri. |
| * JavaScriptCore.pro: Deduplicate options. |
| * jsc.pro: Ditto. |
| |
| 2011-03-01 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Teach JavaScriptCore GYP build about DEPTH |
| https://bugs.webkit.org/show_bug.cgi?id=55425 |
| |
| In addition to teaching the JavaScriptCore GYP build about DEPTH, this |
| change overrides the GCC warning configuration to disable a warning |
| that's causing probems in Assertions.cpp. With that warning disabled, |
| JavaScriptCore builds again. |
| |
| * gyp/JavaScriptCore.gyp: |
| |
| 2011-02-28 Gavin Barraclough <barraclough@apple.com> |
| |
| Windows build fix. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2011-02-28 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r79948. |
| http://trac.webkit.org/changeset/79948 |
| https://bugs.webkit.org/show_bug.cgi?id=55439 |
| |
| "caused crashes on the SL release bot" (Requested by ggaren on |
| #webkit). |
| |
| * runtime/JSGlobalData.h: |
| * runtime/WriteBarrier.h: |
| |
| 2011-02-28 Gavin Barraclough <barraclough@apple.com> |
| |
| Windows build fix. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2011-02-28 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig & Darin Adler. |
| |
| Bug 55423 - Clean up property tables in Structure |
| |
| Encapsulate, reduce duplication of table search code, |
| and reduce the size of the tables (remove the index, |
| just maintain the tables in the correct order). |
| |
| Shows a 0.5% - 1% progression on sunspider. |
| |
| * JavaScriptCore.exp: |
| * runtime/PropertyMapHashTable.h: |
| (JSC::isPowerOf2): |
| (JSC::nextPowerOf2): |
| bit ops used to calculate table size. |
| (JSC::PropertyMapEntry::PropertyMapEntry): |
| (JSC::PropertyTable::ordered_iterator::operator++): |
| (JSC::PropertyTable::ordered_iterator::operator==): |
| (JSC::PropertyTable::ordered_iterator::operator!=): |
| (JSC::PropertyTable::ordered_iterator::operator*): |
| (JSC::PropertyTable::ordered_iterator::operator->): |
| (JSC::PropertyTable::ordered_iterator::ordered_iterator): |
| implementation of the iterator types |
| (JSC::PropertyTable::PropertyTable): |
| (JSC::PropertyTable::~PropertyTable): |
| constructors take an initial capacity for the table, |
| a table to copy, or both. |
| (JSC::PropertyTable::begin): |
| (JSC::PropertyTable::end): |
| create in-order iterators. |
| (JSC::PropertyTable::find): |
| search the hash table |
| (JSC::PropertyTable::add): |
| add a value to the hash table |
| (JSC::PropertyTable::remove): |
| remove a value from the hash table |
| (JSC::PropertyTable::size): |
| (JSC::PropertyTable::isEmpty): |
| accessors. |
| (JSC::PropertyTable::propertyStorageSize): |
| (JSC::PropertyTable::clearDeletedOffsets): |
| (JSC::PropertyTable::hasDeletedOffset): |
| (JSC::PropertyTable::getDeletedOffset): |
| (JSC::PropertyTable::addDeletedOffset): |
| cache deleted (available) offsets in the property storage array. |
| (JSC::PropertyTable::copy): |
| take a copy of the PropertyTable, potentially expanding the capacity. |
| (JSC::PropertyTable::sizeInMemory): |
| used for DEBUG build statistics |
| (JSC::PropertyTable::reinsert): |
| (JSC::PropertyTable::rehash): |
| (JSC::PropertyTable::tableCapacity): |
| (JSC::PropertyTable::deletedEntryIndex): |
| (JSC::PropertyTable::skipDeletedEntries): |
| (JSC::PropertyTable::table): |
| (JSC::PropertyTable::usedCount): |
| (JSC::PropertyTable::dataSize): |
| (JSC::PropertyTable::sizeForCapacity): |
| (JSC::PropertyTable::canInsert): |
| these methods provide internal implementation. |
| * runtime/Structure.cpp: |
| (JSC::Structure::dumpStatistics): |
| (JSC::Structure::~Structure): |
| (JSC::Structure::materializePropertyMap): |
| (JSC::Structure::despecifyDictionaryFunction): |
| (JSC::Structure::addPropertyTransition): |
| (JSC::Structure::flattenDictionaryStructure): |
| (JSC::Structure::copyPropertyTable): |
| (JSC::Structure::get): |
| (JSC::Structure::despecifyFunction): |
| (JSC::Structure::despecifyAllFunctions): |
| (JSC::Structure::put): |
| (JSC::Structure::remove): |
| (JSC::Structure::createPropertyMap): |
| (JSC::Structure::getPropertyNames): |
| (JSC::PropertyTable::checkConsistency): |
| (JSC::Structure::checkConsistency): |
| factored out code to PropertyMapHashTable.h |
| * runtime/Structure.h: |
| (JSC::Structure::propertyStorageSize): |
| (JSC::Structure::isEmpty): |
| (JSC::Structure::get): |
| factored out code to PropertyMapHashTable.h |
| |
| 2011-02-28 Xan Lopez <xlopez@igalia.com> |
| |
| Another fix build :( |
| |
| Fix typo. |
| |
| * runtime/MachineStackMarker.cpp: |
| (JSC::freePlatformThreadRegisters): |
| |
| 2011-02-28 Xan Lopez <xlopez@igalia.com> |
| |
| Unreviewed build fix for Snow Leopard. |
| |
| * runtime/MachineStackMarker.cpp: |
| (JSC::freePlatformThreadRegisters): |
| |
| 2011-02-28 Alejandro G. Castro <alex@igalia.com> |
| |
| Unreviewed, fix SnowLeopard compilation after r79952. |
| |
| * runtime/MachineStackMarker.cpp: |
| (JSC::freePlatformThreadRegisters): |
| |
| 2011-02-28 Mark Rowe <mrowe@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| <http://webkit.org/b/55430> OwnArrayPtr.h's LOOSE_OWN_ARRAY_PTR results in link errors. |
| |
| * wtf/OwnArrayPtr.h: |
| (WTF::::set): Implement OwnArrayPtr::set. |
| |
| 2011-02-28 Martin Zoubek <martin.zoubek@acision.com> and Alejandro G. Castro <alex@igalia.com> |
| |
| Reviewed by Martin Robinson. |
| |
| Multithread support for JSC on UNIX |
| https://bugs.webkit.org/show_bug.cgi?id=26838 |
| |
| Implement suspendThread() and resumeThread() for systems with |
| pthread.h using thread signal handler. |
| |
| * runtime/MachineStackMarker.cpp: |
| (JSC::pthreadSignalHandlerSuspendResume): |
| (JSC::MachineStackMarker::Thread::Thread): |
| (JSC::getCurrentPlatformThread): |
| (JSC::suspendThread): |
| (JSC::resumeThread): |
| (JSC::getPlatformThreadRegisters): |
| (JSC::otherThreadStackPointer): |
| (JSC::freePlatformThreadRegisters): |
| (JSC::MachineStackMarker::markOtherThreadConservatively): |
| * wtf/Platform.h: Added Gtk port to use |
| ENABLE_JSC_MULTIPLE_THREADS. |
| |
| 2011-02-28 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Stop using DeprecatedPtr for the global exception slot |
| https://bugs.webkit.org/show_bug.cgi?id=55424 |
| |
| Create GCRootPtr to signify that the exception slot is |
| a gcroot, and so is exempt from the usual writebarrier |
| restrictions. |
| |
| * runtime/JSGlobalData.h: |
| * runtime/WriteBarrier.h: |
| (JSC::GCRootPtr::GCRootPtr): |
| (JSC::GCRootPtr::operator=): |
| |
| 2011-02-28 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Dimitri Glazkov. |
| |
| Use more xcconfig files in JavaScriptCore gyp build |
| https://bugs.webkit.org/show_bug.cgi?id=55391 |
| |
| The GYP experts tell me that we have have a total of two xcconfig |
| files: one for the xcodeproj as a whole and one for each target. This |
| patch uses that technique to re-use the existing xcconfig files and |
| eliminate the duplication. |
| |
| Technically, this patch introduces some build errors because the |
| xcconfig files assume that the xcodeproj file is one level higher in |
| the directory hierarchy. Specifically, the xcodeproj file can no |
| longer find the Info.plist or the prefix header. I plan to fix that in |
| a subsequent patch. |
| |
| Also, this patch introduces the Release and Production configurations, |
| which should work correctly now. |
| |
| * gyp/JavaScriptCore.gyp: |
| |
| 2011-02-28 Jon Honeycutt <jhoneycutt@apple.com> |
| |
| Windows build fix. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| Add symbol to export. |
| |
| 2011-02-28 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Make ScopeChainNode GC allocated |
| https://bugs.webkit.org/show_bug.cgi?id=55283 |
| |
| Simplify lifetime and other issues with the scopechain |
| by making it gc allocated. This allows us to simplify |
| function exit and unwinding, as well as making the |
| current iterative refcounting go away. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * bytecode/CodeBlock.cpp: |
| (JSC::CodeBlock::createActivation): |
| * bytecode/StructureStubInfo.cpp: |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::generate): |
| (JSC::BytecodeGenerator::BytecodeGenerator): |
| (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): |
| (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): |
| * bytecompiler/BytecodeGenerator.h: |
| * debugger/Debugger.cpp: |
| (JSC::Recompiler::operator()): |
| * debugger/DebuggerCallFrame.h: |
| (JSC::DebuggerCallFrame::scopeChain): |
| * interpreter/CachedCall.h: |
| (JSC::CachedCall::CachedCall): |
| * interpreter/CallFrame.h: |
| * interpreter/Interpreter.cpp: |
| (JSC::depth): |
| (JSC::Interpreter::unwindCallFrame): |
| (JSC::Interpreter::throwException): |
| (JSC::Interpreter::execute): |
| (JSC::Interpreter::executeCall): |
| (JSC::Interpreter::executeConstruct): |
| (JSC::Interpreter::privateExecute): |
| * jit/JITCall.cpp: |
| (JSC::JIT::compileOpCallInitializeCallFrame): |
| (JSC::JIT::compileOpCall): |
| * jit/JITCall32_64.cpp: |
| (JSC::JIT::compileOpCallInitializeCallFrame): |
| (JSC::JIT::emit_op_ret): |
| (JSC::JIT::emit_op_ret_object_or_this): |
| (JSC::JIT::compileOpCall): |
| * jit/JITOpcodes.cpp: |
| (JSC::JIT::emit_op_end): |
| (JSC::JIT::emit_op_ret): |
| (JSC::JIT::emit_op_ret_object_or_this): |
| * jit/JITOpcodes32_64.cpp: |
| (JSC::JIT::emit_op_end): |
| * jit/JITStubs.cpp: |
| (JSC::DEFINE_STUB_FUNCTION): |
| * jit/JITStubs.h: |
| * runtime/ArgList.cpp: |
| * runtime/Completion.cpp: |
| (JSC::evaluate): |
| * runtime/Completion.h: |
| * runtime/DateConversion.cpp: |
| * runtime/Executable.cpp: |
| (JSC::EvalExecutable::compileInternal): |
| (JSC::ProgramExecutable::compileInternal): |
| (JSC::FunctionExecutable::compileForCallInternal): |
| (JSC::FunctionExecutable::compileForConstructInternal): |
| * runtime/FunctionConstructor.cpp: |
| (JSC::constructFunction): |
| * runtime/GCActivityCallbackCF.cpp: |
| * runtime/Identifier.cpp: |
| * runtime/JSCell.h: |
| * runtime/JSChunk.cpp: Added. |
| * runtime/JSChunk.h: Added. |
| * runtime/JSFunction.cpp: |
| (JSC::JSFunction::JSFunction): |
| (JSC::JSFunction::markChildren): |
| (JSC::JSFunction::getCallData): |
| (JSC::JSFunction::getOwnPropertySlot): |
| (JSC::JSFunction::getConstructData): |
| * runtime/JSFunction.h: |
| (JSC::JSFunction::scope): |
| (JSC::JSFunction::setScope): |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| * runtime/JSGlobalData.h: |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::init): |
| (JSC::JSGlobalObject::markChildren): |
| * runtime/JSGlobalObject.h: |
| (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): |
| (JSC::JSGlobalObject::globalScopeChain): |
| * runtime/JSGlobalObjectFunctions.cpp: |
| (JSC::globalFuncEval): |
| * runtime/JSLock.cpp: |
| * runtime/JSNumberCell.cpp: |
| * runtime/JSZombie.cpp: |
| * runtime/MarkedBlock.cpp: |
| * runtime/MarkedSpace.cpp: |
| * runtime/PropertyNameArray.cpp: |
| * runtime/ScopeChain.cpp: |
| (JSC::ScopeChainNode::print): |
| (JSC::ScopeChainNode::localDepth): |
| (JSC::ScopeChainNode::markChildren): |
| * runtime/ScopeChain.h: |
| (JSC::ScopeChainNode::ScopeChainNode): |
| (JSC::ScopeChainNode::createStructure): |
| (JSC::ScopeChainNode::push): |
| (JSC::ScopeChainNode::pop): |
| (JSC::ScopeChainIterator::ScopeChainIterator): |
| (JSC::ScopeChainIterator::operator*): |
| (JSC::ScopeChainIterator::operator->): |
| (JSC::ScopeChainIterator::operator++): |
| (JSC::ScopeChainNode::begin): |
| (JSC::ScopeChainNode::end): |
| (JSC::ExecState::globalData): |
| (JSC::ExecState::lexicalGlobalObject): |
| (JSC::ExecState::globalThisValue): |
| * runtime/ScopeChainMark.h: |
| * wtf/DateMath.cpp: |
| |
| 2011-02-27 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Implement WTF::randomNumber in terms of WTF::cryptographicallyRandomNumber when possible |
| https://bugs.webkit.org/show_bug.cgi?id=55326 |
| |
| Currently, randomNumber does a bunch of platform-specific work that to |
| get a cryptographic randomness when available. Instead, we should use |
| cryptographicallyRandomNumber, which abstracts this work. |
| Unfortunately, we can't remove all of the WTF::randomNumber |
| implementation because not every port has access to cryptographically |
| random numbers. |
| |
| * wtf/RandomNumber.cpp: |
| (WTF::randomNumber): |
| |
| 2011-02-27 Benjamin Poulain <ikipou@gmail.com> |
| |
| Reviewed by Darin Adler. |
| |
| Eliminate DeprecatedPtrList from RenderBlock |
| https://bugs.webkit.org/show_bug.cgi?id=54972 |
| |
| Add methods find() and contains() using an adaptor to ListHashSet. |
| Those method are like the one of HashSet, they allow to find objects |
| based on a different key than the one used to define the set. |
| |
| Add convenience methods for direct access to the head and tail of the list. |
| Those methods are providing similar API/behavior as Vector. |
| |
| * wtf/ListHashSet.h: |
| (WTF::::first): |
| (WTF::::last): |
| (WTF::::removeLast): |
| (WTF::ListHashSetTranslatorAdapter::hash): |
| (WTF::ListHashSetTranslatorAdapter::equal): |
| (WTF::::find): |
| (WTF::::contains): |
| |
| 2011-02-26 Patrick Gansterer <paroga@webkit.org> |
| |
| Reviewed by Andreas Kling. |
| |
| Add support for DragonFly BSD |
| https://bugs.webkit.org/show_bug.cgi?id=54407 |
| |
| DragonFly BSD is based on FreeBSD, so handle it like FreeBSD. |
| |
| * wtf/Platform.h: |
| |
| 2011-02-26 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Dimitri Glazkov. |
| |
| JavaScriptCore should use the xcconfig file instead of importing that information into GYP |
| https://bugs.webkit.org/show_bug.cgi?id=55282 |
| |
| Technically, this breaks the build because I had removed one of the |
| warnings in this config file, but this change seems like an |
| improvement. |
| |
| * gyp/JavaScriptCore.gyp: |
| |
| 2011-02-26 Thouraya ANDOLSI <thouraya.andolsi@st.com> |
| |
| Reviewed by Nikolas Zimmermann. |
| |
| SH4 JIT SUPPORT |
| https://bugs.webkit.org/show_bug.cgi?id=44329 |
| |
| Provide an ExecutableAllocater::cacheFlush() implementation for |
| Linux/SH4. |
| |
| * jit/ExecutableAllocator.h: |
| (JSC::ExecutableAllocator::cacheFlush): |
| |
| 2011-02-25 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r79627. |
| http://trac.webkit.org/changeset/79627 |
| https://bugs.webkit.org/show_bug.cgi?id=55274 |
| |
| broke worker tests (Requested by olliej on #webkit). |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| * runtime/Heap.cpp: |
| (JSC::Heap::allocate): |
| * runtime/Heap.h: |
| * runtime/JSCell.h: |
| (JSC::JSCell::JSCell::operator new): |
| (JSC::JSCell::MarkedSpace::sizeClassFor): |
| (JSC::JSCell::MarkedSpace::allocate): |
| * runtime/MarkedBlock.h: |
| * runtime/MarkedSpace.cpp: |
| (JSC::MarkedSpace::MarkedSpace): |
| (JSC::MarkedSpace::allocateBlock): |
| (JSC::MarkedSpace::reset): |
| * runtime/MarkedSpace.h: |
| (JSC::MarkedSpace::SizeClass::SizeClass): |
| |
| 2011-02-25 Michael Saboff <msaboff@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Leak in JSParser::Scope of ScopeLabelInfo Vector |
| https://bugs.webkit.org/show_bug.cgi?id=55249 |
| |
| Changed m_labels to be an OwnPtr<>. Added VectorTraits |
| and Scope copy constructor to support this change. |
| |
| * parser/JSParser.cpp: |
| (JSC::JSParser::Scope::~Scope): |
| |
| 2011-02-25 Fumitoshi Ukai <ukai@chromium.org> |
| |
| Reviewed by Adam Barth. |
| |
| WebSocket uses insecure random numbers |
| https://bugs.webkit.org/show_bug.cgi?id=54714 |
| |
| * JavaScriptCore.exp: Export WTF::cryptographicallyRandomNumber() |
| |
| 2011-02-25 Patrick Gansterer <paroga@webkit.org> |
| |
| Reviewed by Adam Roben. |
| |
| Move timeBeginPeriod into OS(WINDOWS) section |
| https://bugs.webkit.org/show_bug.cgi?id=55247 |
| |
| * jsc.cpp: |
| (main): timeBeginPeriod is available on all Windows versions and not compiler specific. |
| |
| 2011-02-25 Patrick Gansterer <paroga@webkit.org> |
| |
| Unreviewed WinCE build fix for r79695. |
| |
| * jsc.cpp: |
| (main): SetErrorMode isn't available on WinCE. |
| |
| 2011-02-25 Adam Roben <aroben@apple.com> |
| |
| Work around Cygwin's crash-suppression behavior |
| |
| Cygwin calls ::SetErrorMode(SEM_FAILCRITICALERRORS), which any processes it launches will |
| inherit. This is bad for testing/debugging, as it causes the post-mortem debugger not to be |
| invoked. (Cygwin does this because it makes crashes more UNIX-y.) We reset the error mode |
| when our test apps launch to work around Cygwin's behavior. |
| |
| Fixes <http://webkit.org/b/55222> Test apps crash silently (without invoking post-mortem |
| debugger) when launched from Cygwin 1.7 |
| |
| Reviewed by Darin Adler. |
| |
| * API/tests/testapi.c: Added a now-needed #include. |
| (main): |
| * jsc.cpp: |
| (main): |
| Call ::SetErrorMode(0) to undo Cygwin's folly. |
| |
| * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Define NOMINMAX like many of our |
| other projects do so that windows.h won't define min/max macros that interfere with |
| std::numeric_limits<T>::min/max. |
| |
| 2011-02-24 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Add GYP project for JavaScriptCore |
| https://bugs.webkit.org/show_bug.cgi?id=55027 |
| |
| Again, this GYP files is very rough, but it succeeds in building |
| JavaScriptCore. There's a lot more work to do here, especially in the |
| area of sharing with JavaScriptGlue.gyp. This patch is more of a |
| checkpoint so that other folks can help out if they wish. |
| |
| * gyp: Added. |
| * gyp/JavaScriptCore.gyp: Added. |
| * gyp/generate-derived-sources.sh: Added. |
| |
| 2011-02-24 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Add missing files to JavaScriptCore.gypi |
| https://bugs.webkit.org/show_bug.cgi?id=55193 |
| |
| I forgot to add mm files in my previous patch. |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| * JavaScriptCore.gypi: |
| |
| 2011-02-24 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Remove unused parameter name in GCActivityCallback.cpp |
| https://bugs.webkit.org/show_bug.cgi?id=55194 |
| |
| This change is not strictly required for the GYP-based build system, |
| but I noticed this error when working on the new build system. |
| |
| * runtime/GCActivityCallback.cpp: |
| (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback): |
| |
| 2011-02-24 James Robinson <jamesr@chromium.org> |
| |
| Reviewed by Darin Fisher. |
| |
| Add a USE() macro to control use of the built-in UTF8 codec |
| https://bugs.webkit.org/show_bug.cgi?id=55189 |
| |
| Defaults USE(BUILTIN_UTF8_CODEC) to true for all platforms except chromium, which controls the flag via features.gypi. |
| |
| * wtf/Platform.h: |
| |
| 2011-02-24 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Variable-sized allocation (but still capped at 64 bytes) |
| https://bugs.webkit.org/show_bug.cgi?id=55159 |
| |
| SunSpider reports no change. |
| |
| * JavaScriptCore.exp: Some day, I hope not to have to edit this file. |
| |
| * runtime/Heap.cpp: |
| (JSC::Heap::allocateSlowCase): Split allocation into a fast and slow |
| case, so the fast case can inline size class selection and turn it into |
| a compile-time constant. |
| |
| Changed the collect-on-every allocation debugging switch to collect only |
| on every slow allocation, so you can still flip the switch without |
| recompiling the world. This may also be preferable for debugging purposes, |
| since collecting after every single allocation can be unusably slow, |
| and can mask problems by running destructors early. |
| |
| * runtime/Heap.h: Ditto. |
| |
| * runtime/JSCell.h: |
| (JSC::JSCell::MarkedSpace::sizeClassFor): |
| (JSC::JSCell::Heap::allocate): |
| (JSC::JSCell::JSCell::operator new): The inlining mentioned above. |
| |
| * runtime/MarkedBlock.h: Dropped the block size from 256KB to 16KB. With |
| multiple size classes, allocating a full 256KB for the first allocation |
| in a given class can be pathologically wasteful. (8KB, or 4KB Mac and |
| 8KB Windows, would be even better, but that seems to be a peformance |
| regression for now.) |
| |
| * runtime/MarkedSpace.cpp: |
| (JSC::MarkedSpace::MarkedSpace): |
| (JSC::MarkedSpace::allocateBlock): |
| (JSC::MarkedSpace::reset): There's more than one size class now, and its |
| cell size is not constant. |
| |
| * runtime/MarkedSpace.h: |
| (JSC::MarkedSpace::SizeClass::SizeClass): Ditto. |
| |
| 2011-02-23 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make WeakGCMap use new handle infrastructure |
| https://bugs.webkit.org/show_bug.cgi?id=55100 |
| |
| Remove old WeakGCMap implementation and move over to new handle |
| based logic. |
| |
| This has a number of benefits, most notably it makes a WeakGCMap |
| always reflect the true state of the world by as all entries are |
| removed at the first gc cycle that makes them dead. This allows |
| us to get rid of code in a wide variety of objects where the only |
| purpose was to remove themselves from maps. |
| |
| It also means that we no longer need to have special "unchecked" |
| versions of any functions on WeakGCMap. Alas in order to maintain |
| compatibility with the JSWeakObjectMapClear API it is still |
| necessary to have an api that resembles uncheckedRemove, this is |
| now deprecatedRemove and will be dealt with in a later patch. |
| |
| In order to get correct semantics in WeakGCMap we need more |
| contextual information in the finalizer, so we've added an |
| abstract class based finaliser and a context parameter to the |
| calls. |
| |
| The new an improved WeakGCMap also results in sigificantly more |
| churn in the weak handle lists so exposed some potential problems |
| during the post mark phase which have been rectified as well. |
| |
| * API/JSWeakObjectMapRefPrivate.cpp: |
| * API/JSWeakObjectMapRefPrivate.h: |
| * runtime/Heap.cpp: |
| (JSC::Heap::globalObjectCount): |
| (JSC::Heap::protectedGlobalObjectCount): |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| * runtime/JSGlobalData.h: |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::~JSGlobalObject): |
| (JSC::JSGlobalObject::init): |
| * runtime/WeakGCMap.h: |
| (JSC::WeakGCMap::iterator::iterator): |
| (JSC::WeakGCMap::iterator::get): |
| (JSC::WeakGCMap::iterator::getSlot): |
| (JSC::WeakGCMap::iterator::operator++): |
| (JSC::WeakGCMap::iterator::operator==): |
| (JSC::WeakGCMap::iterator::operator!=): |
| (JSC::WeakGCMap::WeakGCMap): |
| (JSC::WeakGCMap::isEmpty): |
| (JSC::WeakGCMap::clear): |
| (JSC::WeakGCMap::get): |
| (JSC::WeakGCMap::getSlot): |
| (JSC::WeakGCMap::set): |
| (JSC::WeakGCMap::take): |
| (JSC::WeakGCMap::size): |
| (JSC::WeakGCMap::deprecatedRemove): |
| (JSC::WeakGCMap::begin): |
| (JSC::WeakGCMap::end): |
| (JSC::WeakGCMap::~WeakGCMap): |
| (JSC::WeakGCMap::finalize): |
| * runtime/WeakGCPtr.h: |
| (JSC::WeakGCPtr::WeakGCPtr): |
| (JSC::WeakGCPtr::set): |
| |
| 2011-02-24 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Make weaklist processing deal with weak handles being removed during the iteration |
| https://bugs.webkit.org/show_bug.cgi?id=55105 |
| |
| It is possible for the handle heap to end up in a broken state if |
| a handle's finalizer removes either the current or next handle |
| to be visited during the post-gc cleanup. This patch removes that |
| problem by allowing the deallocate(Node*) routine to update the |
| iterator if it is called during finalization. |
| |
| * collector/handles/HandleHeap.cpp: |
| (JSC::HandleHeap::HandleHeap): |
| (JSC::HandleHeap::updateAfterMark): |
| (JSC::HandleHeap::clearWeakPointers): |
| (JSC::HandleHeap::writeBarrier): |
| (JSC::HandleHeap::protectedGlobalObjectCount): |
| * collector/handles/HandleHeap.h: |
| (JSC::Finalizer::~Finalizer): |
| (JSC::HandleHeap::getFinalizer): |
| (JSC::HandleHeap::deallocate): |
| (JSC::HandleHeap::makeWeak): |
| (JSC::HandleHeap::makeSelfDestroying): |
| (JSC::HandleHeap::Node::Node): |
| (JSC::HandleHeap::Node::setFinalizer): |
| (JSC::HandleHeap::Node::finalizer): |
| (JSC::HandleHeap::Node::finalizerContext): |
| * interpreter/RegisterFile.cpp: |
| (JSC::RegisterFile::setGlobalObject): |
| (JSC::GlobalObjectNotifier::finalize): |
| (JSC::RegisterFile::globalObjectCollectedNotifier): |
| * interpreter/RegisterFile.h: |
| (JSC::RegisterFile::RegisterFile): |
| * runtime/Heap.cpp: |
| (JSC::Heap::destroy): |
| * runtime/WeakGCPtr.h: |
| (JSC::WeakGCPtr::WeakGCPtr): |
| (JSC::WeakGCPtr::set): |
| |
| 2011-02-24 Michael Saboff <msaboff@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| PatternAlternative leaked in YarrPatternConstructor::atomParenthesesEnd() |
| https://bugs.webkit.org/show_bug.cgi?id=55156 |
| |
| Added code to delete unneeded PatternAlternative after it is removed |
| from m_alternatives Vector. |
| |
| * yarr/YarrPattern.cpp: |
| (JSC::Yarr::YarrPatternConstructor::atomParenthesesEnd): |
| |
| 2011-02-24 Eric Seidel <eric@webkit.org> |
| |
| Reviewed by Anders Carlsson. |
| |
| VectorBuffer should not call malloc(0) |
| https://bugs.webkit.org/show_bug.cgi?id=55091 |
| |
| Turns out the malloc() call which was so hot in: |
| https://bugs.webkit.org/show_bug.cgi?id=55005 |
| was actually just malloc(0). |
| |
| We shouldn't be calling malloc(0) anyway, since there is no need to |
| and it might actually do work on some systems. |
| I believe on Mac it ends up taking the standard spinlocks (expensive) |
| and the code on Brew actually does a malloc(1) instead. Neither is desirable. |
| |
| * wtf/Vector.h: |
| (WTF::VectorBufferBase::allocateBuffer): |
| (WTF::VectorBufferBase::tryAllocateBuffer): |
| |
| 2011-02-24 Patrick Gansterer <paroga@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| Remove obsolete PLATFORM(CI) |
| https://bugs.webkit.org/show_bug.cgi?id=55082 |
| |
| * wtf/Platform.h: |
| |
| 2011-02-24 Martin Robinson <mrobinson@igalia.com> |
| |
| Reviewed by Xan Lopez. |
| |
| [GTK] Remove the GFile GOwnPtr specialization |
| https://bugs.webkit.org/show_bug.cgi?id=55154 |
| |
| Remove the GFile specialization of GOwnPtr. It's sufficient to use GRefPtr |
| to track GFiles since they are just regular reference-counted GObjects. |
| |
| * wtf/gobject/GOwnPtr.cpp: Remove GFile specialization. |
| * wtf/gobject/GOwnPtr.h: Ditto. |
| |
| 2011-02-24 Patrick Gansterer <paroga@webkit.org> |
| |
| Reviewed by Eric Seidel. |
| |
| Rename PLATFORM(SKIA) to USE(SKIA) |
| https://bugs.webkit.org/show_bug.cgi?id=55090 |
| |
| * wtf/Platform.h: |
| |
| 2011-02-24 Patrick Gansterer <paroga@webkit.org> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Remove pthreads dependecy for JSLock |
| https://bugs.webkit.org/show_bug.cgi?id=54832 |
| |
| JSLock is only needed to support an obsolete execution model where JavaScriptCore |
| automatically protected against concurrent access from multiple threads. |
| So it's safe to disable it on non-mac platforms where we don't have native pthreads. |
| |
| * runtime/JSLock.cpp: |
| |
| 2011-02-24 Chao-ying Fu <fu@mips.com> |
| |
| Reviewed by Eric Seidel. |
| |
| Fix MIPS build with new patchOffsetPut/GetByIdPropertyMapOffset1/2 values |
| https://bugs.webkit.org/show_bug.cgi?id=54997 |
| |
| * jit/JIT.h: |
| * jit/JITStubs.cpp: |
| (JSC::JITThunks::JITThunks): |
| |
| 2011-02-24 Andras Becsi <abecsi@webkit.org> |
| |
| Reviewed by Laszlo Gombos. |
| |
| [Qt] MinGW build fails to link |
| https://bugs.webkit.org/show_bug.cgi?id=55050 |
| |
| Prepend the libraries of subcomponents instead of appending them |
| to fix the library order according to the dependency of the libraries |
| |
| * JavaScriptCore.pri: rename addJavaScriptCore to prependJavaScriptCore |
| * jsc.pro: ditto |
| |
| 2011-02-24 Eric Seidel <eric@webkit.org> |
| |
| Reviewed by Adam Barth. |
| |
| Deque<T> should support inline capacity |
| https://bugs.webkit.org/show_bug.cgi?id=55032 |
| |
| The title says it all. There are currently no places |
| which use this code yet, however it's been tested in conjunction |
| with code for bug 55005. |
| |
| This also adds an ASSERT that capacity is never 1. If you were able |
| to set the capacity equal to 1, the Deque would just get confused |
| and happily append your item but still think it had size 0. |
| |
| * wtf/Deque.h: |
| (WTF::DequeIterator::DequeIterator): |
| (WTF::DequeConstIterator::DequeConstIterator): |
| (WTF::DequeReverseIterator::DequeReverseIterator): |
| (WTF::DequeConstReverseIterator::DequeConstReverseIterator): |
| (WTF::::checkValidity): |
| (WTF::::checkIndexValidity): |
| (WTF::::invalidateIterators): |
| (WTF::::Deque): |
| (WTF::deleteAllValues): |
| (WTF::::operator): |
| (WTF::::destroyAll): |
| (WTF::::~Deque): |
| (WTF::::swap): |
| (WTF::::clear): |
| (WTF::::findIf): |
| (WTF::::expandCapacityIfNeeded): |
| (WTF::::expandCapacity): |
| (WTF::::takeFirst): |
| (WTF::::append): |
| (WTF::::prepend): |
| (WTF::::removeFirst): |
| (WTF::::remove): |
| (WTF::::addToIteratorsList): |
| (WTF::::removeFromIteratorsList): |
| (WTF::::DequeIteratorBase): |
| (WTF::::~DequeIteratorBase): |
| (WTF::::isEqual): |
| (WTF::::increment): |
| (WTF::::decrement): |
| (WTF::::after): |
| (WTF::::before): |
| * wtf/Vector.h: |
| |
| 2011-02-22 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Ojan Vafai. |
| |
| Add missing files to JavaScriptCore.gypi |
| https://bugs.webkit.org/show_bug.cgi?id=55020 |
| |
| gypi files are supposed to list every file under the sun. This patch |
| adds some missing files and sorts the rest. |
| |
| * JavaScriptCore.gypi: |
| |
| 2011-02-23 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Refactored MarkedSpace to operate in terms of size classes |
| https://bugs.webkit.org/show_bug.cgi?id=55106 |
| |
| SunSpider reports no change. |
| |
| * runtime/JSCell.h: |
| (JSC::JSCell::MarkedSpace::sizeClassFor): |
| (JSC::JSCell::MarkedSpace::allocate): Delegate allocation based on size |
| class. Since these functions are inline, the compiler can constant fold |
| them. |
| |
| * runtime/MarkedBlock.h: |
| (JSC::MarkedBlock::cellSize): |
| (JSC::MarkedBlock::size): Factored out a cellSize() helper. |
| |
| * runtime/MarkedSpace.cpp: |
| (JSC::MarkedSpace::allocateBlock): |
| (JSC::MarkedSpace::allocateFromSizeClass): |
| (JSC::MarkedSpace::shrink): |
| (JSC::MarkedSpace::reset): |
| * runtime/MarkedSpace.h: |
| (JSC::MarkedSpace::SizeClass::SizeClass): |
| (JSC::MarkedSpace::SizeClass::reset): Changed to operate in terms of |
| abstract SizeClass objects, which are independent linked lists of blocks |
| of a certain size class, instead of a single m_heap object. |
| |
| 2011-02-23 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by James Robinson. |
| |
| [Chromium] Use WebKitClient for OSRandomSource instead of trying to talk to the file system in the sandbox |
| https://bugs.webkit.org/show_bug.cgi?id=55093 |
| |
| Exclude OSRandomSource.cpp from the Chromium build. This function is |
| implemented in WebKit/chromium/src instead. |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| |
| 2011-02-23 Oliver Hunt <oliver@apple.com> |
| |
| Roll out r64156 as it introduces incorrect behaviour. |
| |
| * runtime/JSByteArray.h: |
| (JSC::JSByteArray::setIndex): |
| |
| 2011-02-23 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Moved the "nextAtom" allocation pointer into MarkedBlock for better encapsulation |
| https://bugs.webkit.org/show_bug.cgi?id=55079 |
| |
| SunSpider reports no change. |
| |
| * runtime/Heap.cpp: |
| (JSC::Heap::reset): Moved Zombie sweeping here, up from MarkedSpace, |
| since we want Heap to logically control MarkedSpace. MarkedSpace should |
| never choose to sweep itself. |
| |
| * runtime/JSCell.h: |
| (JSC::JSCell::MarkedBlock::allocate): Updated for nextAtom becoming a |
| member of MarkedBlock. No need to reset nextAtom to firstAtom() when |
| we reach the end of a block, since there's now an explicit reset pass |
| during GC. |
| |
| * runtime/MarkedBlock.cpp: |
| (JSC::MarkedBlock::MarkedBlock): |
| * runtime/MarkedBlock.h: |
| (JSC::MarkedBlock::reset): Added the nextAtom data member, and reordered |
| some data members to improve cache locality. |
| |
| * runtime/MarkedSpace.cpp: |
| (JSC::MarkedSpace::MarkedSpace): |
| (JSC::MarkedSpace::allocate): |
| (JSC::MarkedSpace::reset): |
| * runtime/MarkedSpace.h: |
| (JSC::CollectorHeap::CollectorHeap): Removed nextAtom, and added an |
| explicit reset pass. |
| |
| 2011-02-23 James Robinson <jamesr@chromium.org> |
| |
| Unreviewed, rolling out r79428. |
| http://trac.webkit.org/changeset/79428 |
| https://bugs.webkit.org/show_bug.cgi?id=54714 |
| |
| Does not work in the Chromium sandbox |
| |
| * JavaScriptCore.exp: |
| |
| 2011-02-23 Adam Roben <aroben@apple.com> |
| |
| Fix an off-by-one error in JSC::appendSourceToError |
| |
| Looks like this bug has been around since the code was first added in r35245. |
| |
| Fixes <http://webkit.org/b/55052> <rdar://problem/9043512> Crash in JSC::appendSourceToError |
| when running fast/dom/objc-big-method-name.html on Windows with full page heap enabled |
| |
| Reviewed by Darin Adler. |
| |
| * interpreter/Interpreter.cpp: |
| (JSC::appendSourceToError): When trimming whitespace off the end of the string, examine the |
| character at stop-1 rather than at stop. At this point in the code, stop represents the |
| index just past the end of the characters we care about, and can even be just past the end |
| of the entire data buffer. |
| |
| 2011-02-23 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Darin Adler. |
| |
| Rolled back in r79367 with SnowLeopard Release bot crash fixed. |
| https://bugs.webkit.org/show_bug.cgi?id=54999 |
| |
| The crash was caused by failure to update the "nextBlock" pointer when |
| removing a block from the list while shrinking. The fix is to update the |
| "nextBlock" pointer. |
| |
| This crash was very rare because it only happened in cases where the very |
| first block in the heap contained no marked cells. |
| |
| 2011-02-23 Dan Bernstein <mitz@apple.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Include frame numbers in backtraces. |
| https://bugs.webkit.org/show_bug.cgi?id=55060 |
| |
| * wtf/Assertions.cpp: |
| |
| 2011-02-23 Xan Lopez <xlopez@igalia.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| latest jsc for armv7 crashes in sunspider tests |
| https://bugs.webkit.org/show_bug.cgi?id=54667 |
| |
| Update JIT offset values in ARMv7 after r78732. Fixes crashes in |
| SunSpider and JavaScript tests. |
| |
| * jit/JIT.h: update values. |
| |
| 2011-02-23 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r79418. |
| http://trac.webkit.org/changeset/79418 |
| https://bugs.webkit.org/show_bug.cgi?id=55043 |
| |
| "breaks shlib linux build" (Requested by morrita on #webkit). |
| |
| * JavaScriptCore.gyp/JavaScriptCore.gyp: |
| * JavaScriptCore.gypi: |
| |
| 2011-02-23 Patrick Gansterer <paroga@webkit.org> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Use DEFINE_STATIC_LOCAL for ignoreSetMutex in Structure.cpp |
| https://bugs.webkit.org/show_bug.cgi?id=54831 |
| |
| * runtime/InitializeThreading.cpp: |
| (JSC::initializeThreadingOnce): |
| * runtime/Structure.cpp: |
| (JSC::ignoreSetMutex): |
| (JSC::Structure::Structure): |
| (JSC::Structure::~Structure): |
| (JSC::Structure::initializeThreading): |
| * runtime/Structure.h: |
| |
| 2011-02-23 Patrick Gansterer <paroga@webkit.org> |
| |
| Reviewed by Darin Adler. |
| |
| Rename PLATFORM(CF) to USE(CF) |
| https://bugs.webkit.org/show_bug.cgi?id=53540 |
| |
| * runtime/DatePrototype.cpp: |
| * runtime/GCActivityCallbackCF.cpp: |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::JSGlobalData): |
| * wtf/CurrentTime.cpp: |
| * wtf/Platform.h: |
| * wtf/text/AtomicString.h: |
| * wtf/text/StringImpl.h: |
| (WTF::StringImpl::computeHash): |
| * wtf/text/WTFString.h: |
| * wtf/unicode/icu/CollatorICU.cpp: |
| (WTF::Collator::userDefault): |
| |
| 2011-02-23 Fumitoshi Ukai <ukai@chromium.org> |
| |
| Unreviewed build fix for Windows. |
| |
| WebSocket uses insecure random numbers |
| https://bugs.webkit.org/show_bug.cgi?id=54714 |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export WTF::cryptographicallyRandomNumber() |
| |
| 2011-02-23 Fumitoshi Ukai <ukai@chromium.org> |
| |
| Reviewed by Adam Barth. |
| |
| WebSocket uses insecure random numbers |
| https://bugs.webkit.org/show_bug.cgi?id=54714 |
| |
| * JavaScriptCore.exp: Export WTF::cryptographicallyRandomNumber() |
| |
| 2011-02-22 Adam Barth <abarth@webkit.org> |
| |
| Reviewed by Ojan Vafai. |
| |
| Add missing files to JavaScriptCore.gypi |
| https://bugs.webkit.org/show_bug.cgi?id=55020 |
| |
| gypi files are supposed to list every file under the sun. This patch |
| adds some missing files and sorts the rest. |
| |
| * JavaScriptCore.gypi: |
| |
| 2011-02-22 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r79367. |
| http://trac.webkit.org/changeset/79367 |
| https://bugs.webkit.org/show_bug.cgi?id=55012 |
| |
| all layout tests are crashing on Snow Leopard (Requested by |
| rniwa on #webkit). |
| |
| * GNUmakefile.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * runtime/MarkedBlock.cpp: |
| (JSC::MarkedBlock::MarkedBlock): |
| * runtime/MarkedBlock.h: |
| * runtime/MarkedSpace.cpp: |
| (JSC::MarkedSpace::destroy): |
| (JSC::MarkedSpace::allocateBlock): |
| (JSC::MarkedSpace::freeBlock): |
| (JSC::MarkedSpace::allocate): |
| (JSC::MarkedSpace::shrink): |
| (JSC::MarkedSpace::reset): |
| * runtime/MarkedSpace.h: |
| (JSC::CollectorHeap::collectorBlock): |
| * wtf/CMakeLists.txt: |
| * wtf/DoublyLinkedList.h: Removed. |
| |
| 2011-02-22 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Manage MarkedBlocks in a linked list instead of a vector, so arbitrary removal is O(1) |
| https://bugs.webkit.org/show_bug.cgi?id=54999 |
| |
| SunSpider reports no change. |
| |
| * GNUmakefile.am: |
| * JavaScriptCore.gypi: |
| * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| * JavaScriptCore.xcodeproj/project.pbxproj: So many build systems, so little time. |
| * wtf/CMakeLists.txt: |
| |
| * runtime/MarkedBlock.cpp: |
| (JSC::MarkedBlock::MarkedBlock): |
| * runtime/MarkedBlock.h: |
| (JSC::MarkedBlock::setPrev): |
| (JSC::MarkedBlock::setNext): |
| (JSC::MarkedBlock::prev): |
| (JSC::MarkedBlock::next): Added linked list data members and accessors. |
| |
| * runtime/MarkedSpace.cpp: |
| (JSC::MarkedSpace::destroy): |
| (JSC::MarkedSpace::allocateBlock): Stop using vector, since it doesn't exist anymore. |
| |
| (JSC::MarkedSpace::freeBlocks): New helper function for updating relevant |
| data structures when freeing blocks. |
| |
| (JSC::MarkedSpace::allocate): Updated for nextBlock being a pointer and |
| not a vector index. |
| |
| (JSC::MarkedSpace::shrink): Construct a temporary list of empties and |
| then free them, to avoid modifying our hash table while iterating it. |
| This wasn't a concern before because we were using indirect array |
| indexing, not direct pointer indexing. |
| |
| (JSC::MarkedSpace::reset): Updated for nextBlock being a pointer and |
| not a vector index. |
| |
| * runtime/MarkedSpace.h: |
| (JSC::CollectorHeap::CollectorHeap): Changed data type from vector to linked list. |
| |
| * wtf/DoublyLinkedList.h: Added. New linked list class. |
| (WTF::::DoublyLinkedList): |
| (WTF::::isEmpty): |
| (WTF::::head): |
| (WTF::::append): |
| (WTF::::remove): |
| |
| 2011-02-22 Gavin Barraclough <barraclough@apple.com> |
| |
| Windows build fix. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2011-02-22 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bug 54988 - Re-create StructureTransitionTable class, encapsulate transition table |
| |
| The Structure class keeps a table of transitions to derived Structure types. Since |
| this table commonly contains a single entry we employ an optimization where instead |
| of holding a map, we may hold a pointer directly to a single instance of the mapped |
| type. We use an additional bit of data to flag whether the pointer is currently |
| pointing to a table of transitions, or a singleton transition. Previously we had |
| commonly used a pattern of storing data in the low bits of pointers, but had moved |
| away from this since it causes false leaks to be reported by the leaks tool. However |
| in this case, the entries in the map are weak links - this pointer will never be |
| responsible for keeping an object alive. As such we can use this approach provided |
| that the bit is set when a table is not in use (otherwise the table would appear to |
| be leaked). |
| |
| Additionally, the transition table currently allows two entries to exist for a given |
| key - one specialized to a particular value, and one not specialized. This is |
| unnecessary, wasteful, and a little inconsistent. (If you create an entry for a |
| specialized value, then a non-specialized entry, both will exist. If you create an |
| entry for a non-specialized value, then try to create a specialized entry, only a |
| non-specialized form will be allowed.) |
| |
| This shows a small progression on v8. |
| |
| * JavaScriptCore.exp: |
| * runtime/JSObject.h: |
| (JSC::JSObject::putDirectInternal): |
| * runtime/Structure.cpp: |
| (JSC::StructureTransitionTable::contains): |
| (JSC::StructureTransitionTable::get): |
| (JSC::StructureTransitionTable::remove): |
| (JSC::StructureTransitionTable::add): |
| (JSC::Structure::dumpStatistics): |
| (JSC::Structure::Structure): |
| (JSC::Structure::~Structure): |
| (JSC::Structure::addPropertyTransitionToExistingStructure): |
| (JSC::Structure::addPropertyTransition): |
| * runtime/Structure.h: |
| (JSC::Structure::get): |
| * runtime/StructureTransitionTable.h: |
| (JSC::StructureTransitionTable::Hash::hash): |
| (JSC::StructureTransitionTable::Hash::equal): |
| (JSC::StructureTransitionTable::HashTraits::emptyValue): |
| (JSC::StructureTransitionTable::HashTraits::constructDeletedValue): |
| (JSC::StructureTransitionTable::HashTraits::isDeletedValue): |
| (JSC::StructureTransitionTable::StructureTransitionTable): |
| (JSC::StructureTransitionTable::~StructureTransitionTable): |
| (JSC::StructureTransitionTable::isUsingSingleSlot): |
| (JSC::StructureTransitionTable::map): |
| (JSC::StructureTransitionTable::setMap): |
| (JSC::StructureTransitionTable::singleTransition): |
| (JSC::StructureTransitionTable::setSingleTransition): |
| |
| 2011-02-22 Andras Becsi <abecsi@webkit.org> |
| |
| Reviewed by Laszlo Gombos. |
| |
| [Qt] Redesign the build system |
| https://bugs.webkit.org/show_bug.cgi?id=51339 |
| |
| Part 2. |
| |
| Build WebCore as a static library, compile the WebKit API and WebKit2 API |
| in a final step and link to WebKit2, WebCore and JSC libraries to fix |
| linking issues resulting from stripped away symbols. |
| |
| * JavaScriptCore.pri: Remove the workaround. |
| |
| 2011-02-21 Adam Roben <aroben@apple.com> |
| |
| Fix linker warning on Windows |
| |
| r79135 tried to export JSObject::s_info by adding it to JavaScriptCore.def. This is the |
| obvious way (since it's how we export functions), but unfortunately it doesn't work correct. |
| r79222 made us export it the right way (using the JS_EXPORTDATA macro), but forgot to remove |
| it from JavaScriptCore.def. This caused us to get linker warnings about exporting the symbol |
| multiple times. |
| |
| Rubber-stamped by Anders Carlsson. |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Removed JSObject::s_info. |
| |
| 2011-02-21 Brian Weinstein <bweinstein@apple.com> |
| |
| Reviewed by Adam Roben. |
| |
| WebResourceCacheManager should be responsible for managing the CFURLCache as well |
| as the WebCore memory cache. |
| https://bugs.webkit.org/show_bug.cgi?id=54886 |
| Part of <rdar://problem/8971738> |
| |
| Add a new use flag for using the CFURLCache. |
| |
| * wtf/Platform.h: |
| |
| 2011-02-21 Xan Lopez <xlopez@igalia.com> |
| |
| Reviewed by Gavin Barraclough. |
| |
| Use ASSERT_JIT_OFFSET in JITPropertyAccess32_64.cpp |
| https://bugs.webkit.org/show_bug.cgi?id=54901 |
| |
| * jit/JIT.h: swap actual and expected values in message, they were |
| reversed. |
| * jit/JITCall32_64.cpp: |
| (JSC::JIT::compileOpCall): use ASSERT_JIT_OFFSET instead of |
| a simple ASSERT. |
| * jit/JITPropertyAccess32_64.cpp: |
| (JSC::JIT::emit_op_method_check): ditto. |
| (JSC::JIT::compileGetByIdHotPath): ditto. |
| (JSC::JIT::compileGetByIdSlowCase): ditto. |
| (JSC::JIT::emit_op_put_by_id): ditto. |
| |
| 2011-02-21 Gavin Barraclough <barraclough@apple.com> |
| |
| Ruber stamped by Sam Weinig |
| |
| Bug 54899 - Math.LOG10E should be 0.4342944819032518 |
| This value is quoted in section 15.8.1.5 of the spec. |
| |
| * runtime/MathObject.cpp: |
| (JSC::MathObject::MathObject): |
| |
| 2011-02-21 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bug 54894 - Make inheritance structure described by ClassInfo match C++ class hierarchy. |
| |
| The ClassInfo objects describe an inheritance hierarchy, with each ClassInfo instance |
| containing a pointer to its parent class. These links should reflect the inheritance |
| hierarchy of C++ classes below JSObject. For the large part it does, but in some cases |
| entries in the C++ hierarchy are skipped over. This presently likely doesn't matter, |
| since intervening C++ classes may not have ClassInfo - but would be a potential bug |
| were ClassInfo were to be added. |
| |
| * API/JSCallbackConstructor.cpp: |
| * API/JSCallbackFunction.cpp: |
| * API/JSCallbackObjectFunctions.h: |
| * runtime/Arguments.h: |
| * runtime/ArrayPrototype.cpp: |
| * runtime/BooleanObject.cpp: |
| * runtime/DateInstance.cpp: |
| * runtime/DatePrototype.cpp: |
| * runtime/ErrorInstance.cpp: |
| * runtime/InternalFunction.cpp: |
| * runtime/JSActivation.cpp: |
| * runtime/JSArray.cpp: |
| * runtime/JSFunction.cpp: |
| * runtime/JSONObject.cpp: |
| * runtime/JSObject.h: |
| * runtime/JSZombie.h: |
| * runtime/MathObject.cpp: |
| * runtime/NativeErrorConstructor.cpp: |
| * runtime/NumberConstructor.cpp: |
| * runtime/NumberObject.cpp: |
| * runtime/RegExpConstructor.cpp: |
| * runtime/RegExpObject.cpp: |
| * runtime/StringObject.cpp: |
| * runtime/StringPrototype.cpp: |
| |
| 2011-02-21 Adam Roben <aroben@apple.com> |
| |
| Export JSObject::s_info from JavaScriptCore.dll |
| |
| This matches what we do for all other ClassInfo objects that WebCore needs access to. |
| |
| Fixes <http://webkit.org/b/54881> REGRESSION (r79132): Lots of tests crashing in |
| JSCell::inherits on Windows |
| |
| Reviewed by Sam Weinig. |
| |
| * runtime/JSObject.h: Added JS_EXPORTDATA to s_info. |
| |
| 2011-02-21 Kristian Amlie <kristian.amlie@nokia.com> |
| |
| Reviewed by Andreas Kling. |
| |
| Switched to compiler based detection, where the error actually is. |
| |
| It is not the platform that needs the workaround, it is the compiler. |
| |
| QtWebKit fails to compile on Windows XP with msvc-2008 |
| https://bugs.webkit.org/show_bug.cgi?id=54746 |
| |
| * bytecode/CodeBlock.h: |
| * runtime/RegExpObject.h: |
| |
| 2011-02-20 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=54839 |
| Remove PrototypeFunction, NativeFunctionWrapper, and GlobalEvalFunction. |
| |
| Historically, Native functions used to be represented by PrototypeFunctions, however |
| since introducing call optimizations to the JIT this has used JSFunctions for host |
| calls too. At the point this change was made, the interpreter continued to use |
| PrototypeFunctions, however since fallback from the JIT to interpreter was introduced |
| the interpreter has had to be able to run using host functions represented using |
| JSFunctions - leading to an unnecessary and redundant divergence in behaviour between |
| interpreter only builds, and situations where the JIT has fallen back to interpreting. |
| |
| NativeFunctionWrapper only existed to select between PrototypeFunction and JSFunction |
| for wrappers for host functions, and as such can also be removed. |
| |
| GlobalEvalFunction is a redundant wrapper that happens to be derived from |
| PrototypeFunction. It existed to hold a reference to the global object - but since all |
| functions how derive from JSObjectWithGlobalObject, this no longer requires an |
| additional class to provide this functionality. |
| |
| * JavaScriptCore.JSVALUE32_64only.exp: |
| * JavaScriptCore.JSVALUE64only.exp: |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| Removed symbols / references to files. |
| |
| * runtime/GlobalEvalFunction.cpp: Removed. |
| * runtime/GlobalEvalFunction.h: Removed. |
| * runtime/NativeFunctionWrapper.h: Removed. |
| * runtime/PrototypeFunction.cpp: Removed. |
| * runtime/PrototypeFunction.h: Removed. |
| Removed. |
| |
| * runtime/Executable.cpp: |
| (JSC::NativeExecutable::~NativeExecutable): |
| * runtime/Executable.h: |
| (JSC::NativeExecutable::create): |
| (JSC::NativeExecutable::NativeExecutable): |
| (JSC::JSFunction::nativeFunction): |
| * runtime/JSFunction.cpp: |
| (JSC::callHostFunctionAsConstructor): |
| (JSC::JSFunction::JSFunction): |
| (JSC::JSFunction::getCallData): |
| * runtime/JSFunction.h: |
| * runtime/JSGlobalData.cpp: |
| (JSC::JSGlobalData::getHostFunction): |
| * runtime/JSGlobalData.h: |
| (JSC::JSGlobalData::getCTIStub): |
| Added interpreter-friendly constructors for NativeExecutables. |
| |
| * bytecompiler/BytecodeGenerator.cpp: |
| * interpreter/Interpreter.cpp: |
| * jit/JITStubs.cpp: |
| * jsc.cpp: |
| * runtime/ArrayConstructor.cpp: |
| * runtime/BooleanPrototype.cpp: |
| * runtime/BooleanPrototype.h: |
| * runtime/CallData.h: |
| * runtime/DateConstructor.cpp: |
| * runtime/DateConstructor.h: |
| * runtime/ErrorPrototype.cpp: |
| * runtime/ErrorPrototype.h: |
| * runtime/FunctionPrototype.cpp: |
| * runtime/FunctionPrototype.h: |
| * runtime/JSGlobalObject.cpp: |
| * runtime/JSGlobalObject.h: |
| * runtime/JSGlobalObjectFunctions.cpp: |
| * runtime/Lookup.cpp: |
| * runtime/NumberPrototype.cpp: |
| * runtime/NumberPrototype.h: |
| * runtime/ObjectConstructor.cpp: |
| * runtime/ObjectConstructor.h: |
| * runtime/ObjectPrototype.cpp: |
| * runtime/ObjectPrototype.h: |
| * runtime/RegExpPrototype.cpp: |
| * runtime/RegExpPrototype.h: |
| * runtime/SmallStrings.h: |
| * runtime/StringConstructor.cpp: |
| * runtime/StringConstructor.h: |
| Removed use of redundant classes. |
| |
| 2011-02-19 Laszlo Gombos <laszlo.1.gombos@nokia.com> |
| |
| Unreviewed build fix for Symbian. |
| |
| [Symbian] Revert the removal of linking |
| against hal after r79126. |
| |
| Dependency on the hal library can not be removed |
| as it is still used (e.g. in MarkStackSymbian.cpp). |
| |
| * JavaScriptCore.pri: |
| |
| 2011-02-19 Gavin Barraclough <barraclough@apple.com> |
| |
| Interpreter build fix. |
| |
| * runtime/ArrayConstructor.cpp: |
| * runtime/BooleanPrototype.cpp: |
| * runtime/DateConstructor.cpp: |
| * runtime/ErrorPrototype.cpp: |
| * runtime/FunctionPrototype.cpp: |
| * runtime/Lookup.cpp: |
| * runtime/NumberPrototype.cpp: |
| * runtime/ObjectConstructor.cpp: |
| * runtime/ObjectPrototype.cpp: |
| * runtime/RegExpPrototype.cpp: |
| * runtime/StringConstructor.cpp: |
| |
| 2011-02-19 Gavin Barraclough <barraclough@apple.com> |
| |
| Build fix!! |
| |
| * JavaScriptCore.exp: |
| |
| 2011-02-19 Gavin Barraclough <barraclough@apple.com> |
| |
| Windows build fix!! |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2011-02-19 Gavin Barraclough <barraclough@apple.com> |
| |
| Windows build fix! |
| |
| * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: |
| |
| 2011-02-19 Gavin Barraclough <barraclough@apple.com> |
| |
| Build fix! |
| |
| * JavaScriptCore.exp: |
| |
| 2011-02-18 Gavin Barraclough <barraclough@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Bug 54786 - Devirtualize JSCell::classInfo() |
| |
| Instead of making a virtual function call, add a pointer to the ClassInfo |
| onto Structure. |
| |
| This removes a virtual function call, and paves the way towards removing all |
| the createStructure methods, and StructureFlags/AnonymousSlotCount properties |
| (these should be able to move onto ClassInfo). |
| |
| Calls to Structure::create must now pass a pointer to the ClassInfo for the |
| structure. All objects now have a ClassInfo pointer, non-object cell types |
| still do not. |
| |
| Changes are most mechanical, involving three steps: |
| * Remove virtual classInfo() methods. |
| * Add &s_info parameter to calls to Structure::create. |
| * Rename ClassInfo static members on classes from 'info' to 's_info', |
| for consistency. |
| |
| * API/JSCallbackConstructor.cpp: |
| * API/JSCallbackConstructor.h: |
| * API/JSCallbackFunction.cpp: |
| * API/JSCallbackFunction.h: |
| * API/JSCallbackObject.cpp: |
| * API/JSCallbackObject.h: |
| * API/JSCallbackObjectFunctions.h: |
| * API/JSObjectRef.cpp: |
| * API/JSValueRef.cpp: |
| * API/JSWeakObjectMapRefPrivate.cpp: |
| * JavaScriptCore.exp: |
| * debugger/Debugger.cpp: |
| * debugger/DebuggerActivation.h: |
| * debugger/DebuggerCallFrame.cpp: |
| * interpreter/Interpreter.cpp: |
| * jit/JITCall32_64.cpp: |
| * jit/JITOpcodes.cpp: |
| * jit/JITStubs.cpp: |
| * profiler/Profiler.cpp: |
| * runtime/Arguments.cpp: |
| * runtime/Arguments.h: |
| * runtime/ArrayConstructor.cpp: |
| * runtime/ArrayPrototype.cpp: |
| * runtime/ArrayPrototype.h: |
| * runtime/BooleanObject.cpp: |
| * runtime/BooleanObject.h: |
| * runtime/BooleanPrototype.cpp: |
| * runtime/DateConstructor.cpp: |
| * runtime/DateInstance.cpp: |
| * runtime/DateInstance.h: |
| * runtime/DatePrototype.cpp: |
| * runtime/DatePrototype.h: |
| * runtime/ErrorInstance.cpp: |
| * runtime/ErrorInstance.h: |
| * runtime/ErrorPrototype.cpp: |
| * runtime/FunctionPrototype.cpp: |
| * runtime/FunctionPrototype.h: |
| * runtime/GetterSetter.h: |
| * runtime/GlobalEvalFunction.h: |
| * runtime/InternalFunction.cpp: |
| * runtime/InternalFunction.h: |
| * runtime/JSAPIValueWrapper.h: |
| * runtime/JSActivation.cpp: |
| * runtime/JSActivation.h: |
| * runtime/JSArray.cpp: |
| * runtime/JSArray.h: |
| * runtime/JSByteArray.cpp: |
| * runtime/JSByteArray.h: |
| * runtime/JSCell.cpp: |
| * runtime/JSCell.h: |
| * runtime/JSFunction.cpp: |
| * runtime/JSFunction.h: |
| * runtime/JSGlobalData.cpp: |
| * runtime/JSGlobalObject.cpp: |
| * runtime/JSGlobalObject.h: |
| * runtime/JSNotAnObject.h: |
| * runtime/JSONObject.cpp: |
| * runtime/JSONObject.h: |
| * runtime/JSObject.cpp: |
| * runtime/JSObject.h: |
| * runtime/JSObjectWithGlobalObject.h: |
| * runtime/JSPropertyNameIterator.h: |
| * runtime/JSStaticScopeObject.h: |
| * runtime/JSString.h: |
| * runtime/JSVariableObject.h: |
| * runtime/JSWrapperObject.h: |
| * runtime/JSZombie.cpp: |
| * runtime/JSZombie.h: |
| * runtime/Lookup.cpp: |
| * runtime/MathObject.cpp: |
| * runtime/MathObject.h: |
| * runtime/NativeErrorConstructor.cpp: |
| * runtime/NativeErrorConstructor.h: |
| * runtime/NumberConstructor.cpp: |
| * runtime/NumberConstructor.h: |
| * runtime/NumberObject.cpp: |
| * runtime/NumberObject.h: |
| * runtime/NumberPrototype.cpp: |
| * runtime/ObjectConstructor.cpp: |
| * runtime/ObjectPrototype.cpp: |
| * runtime/RegExpConstructor.cpp: |
| * runtime/RegExpConstructor.h: |
| * runtime/RegExpObject.cpp: |
| * runtime/RegExpObject.h: |
| * runtime/RegExpPrototype.cpp: |
| * runtime/ScopeChain.cpp: |
| * runtime/StringConstructor.cpp: |
| * runtime/StringObject.cpp: |
| * runtime/StringObject.h: |
| * runtime/StringObjectThatMasqueradesAsUndefined.h: |
| * runtime/StringPrototype.cpp: |
| * runtime/StringPrototype.h: |
| * runtime/Structure.cpp: |
| * runtime/Structure.h: |
| |
| 2011-02-19 David Kilzer <ddkilzer@apple.com> |
| |
| <http://webkit.org/b/54808> Change jsc target to build directly into JavaScriptCore.framework/Resources/jsc |
| |
| Reviewed by Dan Bernstein. |
| |
| * Configurations/Base.xcconfig: Added |
| JAVASCRIPTCORE_FRAMEWORKS_DIR variable. |
| * Configurations/JavaScriptCore.xcconfig: Used |
| JAVASCRIPTCORE_FRAMEWORKS_DIR to define INSTALL_PATH. |
| * JavaScriptCore.xcodeproj/project.pbxproj: Set the INSTALL_PATH |
| for Production configuration of jsc target. |
| (Copy Into Framework): Removed old build phase. |
| (Fix Framework Reference): Renamed build phase to "Copy Into |
| Framework". Added "set -x" call to make the script print the |
| commands it is running. Added code to exit early for Production |
| builds since this was never intended for them. Added code to |
| copy jsc into the JavaScriptCore.framework/Resources directory. |
| |
| 2011-02-19 Siddharth Mathur <siddharth.mathur@nokia.com> |
| |
| Reviewed by Laszlo Gombos. |
| |
| [Symbian] OSAllocator implementation for Symbian OS. |
| Manages both data and code region requests. V8 and Sunspider tested |
| OK with interpreter. Not tested with JSC JIT yet as it has unrelated |
| failures. Also no thread safety yet. |
| https://bugs.webkit.org/show_bug.cgi?id=51128 |
| |
| * JavaScriptCore.pri: removed HAL linkage |
| * wtf/Bitmap.h: |
| (WTF::::findRunOfZeros): find run of zeros in a bitmap. quick n dirty |
| * wtf/OSAllocator.h: |
| (WTF::OSAllocator::decommitAndRelease): decommit explicitly |
| * wtf/OSAllocatorSymbian.cpp: Impl. of OSAllocator interface |
| (WTF::allocateCodeChunk): utility for code chunks |
| (WTF::deallocateCodeChunk): utility for code chunks |
| (WTF::dataAllocatorInstance): getter for data allocator instance |
| (WTF::OSAllocator::reserveUncommitted): |
| (WTF::OSAllocator::releaseDecommitted): |
| (WTF::OSAllocator::commit): |
| (WTF::OSAllocator::decommit): |
| (WTF::OSAllocator::reserveAndCommit): |
| (WTF::PageAllocatorSymbian::PageAllocatorSymbian): maps requests |
| to one underlying Symbian chunk |
| (WTF::PageAllocatorSymbian::~PageAllocatorSymbian): |
| (WTF::PageAllocatorSymbian::reserve): |
| (WTF::PageAllocatorSymbian::release): |
| (WTF::PageAllocatorSymbian::commit): |
| (WTF::PageAllocatorSymbian::decommit): |
| (WTF::PageAllocatorSymbian::contains): |
| * wtf/PageAllocatorSymbian.h: Added. |
| (WTF::SymbianChunk::SymbianChunk): wrapper around RChunk |
| (WTF::SymbianChunk::~SymbianChunk): |
| (WTF::SymbianChunk::contains): |
| |
| 2011-02-19 Yong Li <yoli@rim.com> |
| |
| Reviewed by Eric Seidel. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=54687 |
| When being built with armcc, "int" bit fields are treated as |
| unsigned integers, which will fail the comparisons like "m_offset == -1". |
| Using "signed" fixes the problem. |
| |
| * assembler/ARMAssembler.h: |
| * assembler/ARMv7Assembler.h: |
| |
| 2011-02-18 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Made MarkedSpace block iteration size-class agnostic |
| https://bugs.webkit.org/show_bug.cgi?id=54792 |
| |
| SunSpider reports no change. |
| |
| * runtime/MarkedSpace.cpp: |
| (JSC::MarkedSpace::clearMarks): |
| (JSC::MarkedSpace::sweep): |
| (JSC::MarkedSpace::objectCount): |
| (JSC::MarkedSpace::size): |
| (JSC::MarkedSpace::capacity): |
| * runtime/MarkedSpace.h: |
| (JSC::MarkedSpace::forEach): Iterate blocks in hashing order instead of |
| size class list order. This is a much simpler convention in a world |
| of many different size classes. |
| |
| 2011-02-18 Kristian Amlie <kristian.amlie@nokia.com> |
| |
| Reviewed by Andreas Kling. |
| |
| Added friend exception to Qt platform, which also compiles Windows. |
| |
| QtWebKit fails to compile on Windows XP with msvc-2008 |
| https://bugs.webkit.org/show_bug.cgi?id=54746 |
| |
| * bytecode/CodeBlock.h: |
| * runtime/RegExpObject.h: |
| |
| 2011-02-18 Geoffrey Garen <ggaren@apple.com> |
| |
| (Rolled back in r79022 with crash fixed.) |
| |
| Reviewed by Sam Weinig. |
| |
| Use hashing instead of linear search in the conservative pointer test |
| https://bugs.webkit.org/show_bug.cgi?id=54767 |
| |
| SunSpider reports no change. |
| |
| * runtime/MarkedSpace.cpp: |
| (JSC::MarkedSpace::destroy): No need to explicitly clear the blocks array, |
| since freeBlock removes items for us. |
| |
| (JSC::MarkedSpace::freeBlock): Fixed a typo that always removed the last |
| block from the block set instead of the block being freed. Changed to |
| remove a block from our data structures before deallocating it, since |
| this is slightly cleaner. |
| |
| * runtime/MarkedSpace.h: |
| (JSC::MarkedSpace::contains): Variable-sized objects will use more, |
| smaller blocks, so it's important for the contains check not to be O(n) |
| in the number of blocks. |
| |
| 2011-02-18 chris reiss <christopher.reiss@nokia.com> |
| |
| Reviewed by Andreas Kling. |
| |
| REGRESSION: Date.parse("Tue Nov 23 20:40:05 2010 GMT") returns NaN |
| https://bugs.webkit.org/show_bug.cgi?id=49989 |
| |
| updated test fast/js/script-tests/date-parse-test.js |
| |
| * wtf/DateMath.cpp: |
| (WTF::parseDateFromNullTerminatedCharacters): |
| |
| 2011-02-18 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r79022. |
| http://trac.webkit.org/changeset/79022 |
| https://bugs.webkit.org/show_bug.cgi?id=54775 |
| |
| It broke the whole world (Requested by Ossy on #webkit). |
| |
| * runtime/MarkedSpace.h: |
| (JSC::MarkedSpace::contains): |
| |
| 2011-02-18 Yael Aharon <yael.aharon@nokia.com> |
| |
| Reviewed by Dave Hyatt. |
| |
| Add support for dir=auto |
| https://bugs.webkit.org/show_bug.cgi?id=50916 |
| |
| Change defaultWritingDirection() to return if the writing direction |
| was determined from a letter with strong directionality or not. |
| |
| * JavaScriptCore.exp: |
| * JavaScriptCore.order: |
| * wtf/text/StringImpl.cpp: |
| (WTF::StringImpl::defaultWritingDirection): |
| * wtf/text/StringImpl.h: |
| * wtf/text/WTFString.h: |
| (WTF::String::defaultWritingDirection): |
| |
| 2011-02-18 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Use hashing instead of linear search in the conservative pointer test |
| https://bugs.webkit.org/show_bug.cgi?id=54767 |
| |
| SunSpider reports no change. |
| |
| * runtime/MarkedSpace.h: |
| (JSC::MarkedSpace::contains): Variable-sized objects will use more, |
| smaller blocks, so it's important for the contains check not to be O(n) |
| in the number of blocks. |
| |
| 2011-02-18 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Tightened some usage accounting code in MarkedSpace |
| https://bugs.webkit.org/show_bug.cgi?id=54761 |
| |
| SunSpider reports no change. |
| |
| * runtime/Heap.cpp: |
| (JSC::Heap::Heap): Initialize the marked space high water mark on |
| construction, instead of relying on some implicit subtleties to make |
| not initializing it work out OK. |
| |
| * runtime/Heap.h: Fixed up includes. |
| |
| * runtime/MarkedBlock.h: Made firstAtom() static so clients can call it |
| even without having allocated a block. |
| |
| * runtime/MarkedSpace.cpp: |
| (JSC::MarkedSpace::MarkedSpace): Don't pre-allocate a block, since this |
| would be prohibitively expensive with multiple size classes. |
| |
| (JSC::MarkedSpace::allocateBlock): |
| (JSC::MarkedSpace::freeBlock): Track allocated blocks in a hash set, |
| since linear search in the contains check will be prohibitively |
| expensive once we're using lots of smaller blocks. |
| |
| (JSC::MarkedSpace::allocate): Don't assume that we always have a block |
| allocated, since we don't anymore. (See above.) |
| |
| (JSC::MarkedSpace::reset): |
| * runtime/MarkedSpace.h: Updated for changes mentioned above. |
| |
| 2011-02-17 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Made object allocation secretly variable-sized (Shhhh!) |
| https://bugs.webkit.org/show_bug.cgi?id=54721 |
| |
| SunSpider reports no change. |
| |
| Internally, MarkedBlock now makes variable-sized allocations, even |
| though MarkedSpace doesn't take advantage of this yet. |
| |
| * runtime/MarkedBlock.cpp: |
| (JSC::MarkedBlock::MarkedBlock): No need to ASSERT that allocations are |
| fixed-sized. |
| |
| * runtime/MarkedBlock.h: Shrunk the atom size so we can allocate things |
| that are not multiples of 64 bytes. |
| |
| 2011-02-17 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Fixed some math errors when when using variable-sized cells |
| https://bugs.webkit.org/show_bug.cgi?id=54717 |
| |
| SunSpider reports no change. |
| |
| Computer Science Barbie says, "Math is not so hard afterall!" |
| |
| * runtime/JSCell.h: |
| (JSC::JSCell::MarkedBlock::allocate): Round up when calculating the |
| minimum number of atoms required for a cell, since rounding down |
| will get you splinched. |
| |
| * runtime/MarkedBlock.cpp: |
| (JSC::MarkedBlock::MarkedBlock): |
| (JSC::MarkedBlock::sweep): |
| * runtime/MarkedBlock.h: |
| (JSC::MarkedBlock::forEach): Changed a bunch of != tests to < tests |
| because m_endAtom is actually a fuzzy end -- iterating from firstAtom() |
| may not hit m_endAtom exactly. |
| |
| 2011-02-17 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| A little more abstraction for MarkedSpace::contains |
| https://bugs.webkit.org/show_bug.cgi?id=54715 |
| |
| * runtime/MarkedBlock.h: |
| (JSC::MarkedBlock::contains): Added a contains function, so MarkedSpace |
| doesn't have to know how MarkedBlock tracks containment internally. |
| |
| * runtime/MarkedSpace.h: |
| (JSC::MarkedSpace::contains): Call through to MarkedBlock to figure out |
| if a cell that seems to be in a block is valid. |
| |
| 2011-02-17 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Sam Weinig. |
| |
| Removed the invariant that the last cell in a block is always marked |
| https://bugs.webkit.org/show_bug.cgi?id=54713 |
| |
| SunSpider reports no change. |
| |
| This adds one branch to allocation, but simplifies the mark invariant, |
| especially in a world of variable-sized cells. Now, it really is true |
| that any cell whose mark bit is set is a valid, live cell whose |
| constructor has run and whose destructor has not run. |
| |
| * runtime/JSCell.h: |
| (JSC::JSCell::MarkedBlock::allocate): Changed this do-while into a while |
| since we can no longer rely on a set mark bit to break out of this loop |
| before it reaches the end of the block. |
| |
| * runtime/MarkedBlock.cpp: |
| (JSC::MarkedBlock::MarkedBlock): |
| (JSC::MarkedBlock::sweep): |
| * runtime/MarkedBlock.h: |
| (JSC::MarkedBlock::isEmpty): |
| (JSC::MarkedBlock::clearMarks): |
| (JSC::MarkedBlock::markCount): |
| (JSC::MarkedBlock::forEach): No need to set a special last mark bit. |
| |
| 2011-02-17 Sheriff Bot <webkit.review.bot@gmail.com> |
| |
| Unreviewed, rolling out r78856 and r78907. |
| http://trac.webkit.org/changeset/78856 |
| http://trac.webkit.org/changeset/78907 |
| https://bugs.webkit.org/show_bug.cgi?id=54705 |
| |
| These seem to break tests on 32-bit builds. (Requested by |
| aroben on #webkit). |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * collector/handles/Global.h: |
| (JSC::Global::internalSet): |
| * collector/handles/Handle.h: |
| (JSC::HandleTypes::getFromSlot): |
| (JSC::HandleTypes::toJSValue): |
| (JSC::HandleTypes::validateUpcast): |
| (JSC::HandleConverter::operator->): |
| (JSC::HandleConverter::operator*): |
| (JSC::Handle::Handle): |
| (JSC::Handle::get): |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::sortNumeric): |
| * runtime/JSObject.h: |
| (JSC::JSObject::inlineGetOwnPropertySlot): |
| * runtime/SlotAccessor.h: Removed. |
| * runtime/WeakGCPtr.h: |
| (JSC::WeakGCPtr::get): |
| (JSC::WeakGCPtr::internalSet): |
| * runtime/WriteBarrier.h: |
| (JSC::DeprecatedPtr::DeprecatedPtr): |
| (JSC::DeprecatedPtr::get): |
| (JSC::DeprecatedPtr::operator*): |
| (JSC::DeprecatedPtr::operator->): |
| (JSC::DeprecatedPtr::slot): |
| (JSC::DeprecatedPtr::operator UnspecifiedBoolType*): |
| (JSC::DeprecatedPtr::operator!): |
| (JSC::WriteBarrierBase::set): |
| (JSC::WriteBarrierBase::get): |
| (JSC::WriteBarrierBase::operator*): |
| (JSC::WriteBarrierBase::operator->): |
| (JSC::WriteBarrierBase::clear): |
| (JSC::WriteBarrierBase::slot): |
| (JSC::WriteBarrierBase::operator UnspecifiedBoolType*): |
| (JSC::WriteBarrierBase::operator!): |
| (JSC::WriteBarrierBase::setWithoutWriteBarrier): |
| (JSC::WriteBarrier::WriteBarrier): |
| |
| 2011-02-17 Csaba Osztrogonác <ossy@webkit.org> |
| |
| Unreviewed. |
| |
| [Qt] Buildfix. |
| |
| * wtf/RetainPtr.h: Add missing PLATFORM(CF) guard. |
| |
| 2011-02-17 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Oliver Hunt. |
| |
| Made MarkedBlock variable-sized |
| https://bugs.webkit.org/show_bug.cgi?id=54692 |
| |
| SunSpider reports no change. |
| |
| Each MarkedBlock is now composed of a set of fixed-sized atoms, with one |
| mark bit per atom. A given cell may be composed of one or more atoms. |
| |
| * runtime/Heap.cpp: |
| (JSC::Heap::allocate): Made fixed-sizedness a property of MarkedSpace, |
| bubbling it up from MarkedBlock, since MarkedBlock now supports variable- |
| sizedness. |
| |
| * runtime/JSCell.h: |
| (JSC::JSCell::MarkedBlock::allocate): Removed use of CELLS_PER_BLOCK and |
| (implicit) one constants -- these quantities are not constant anymore. |
| Updated for switch from cell to atom. |
| |
| * runtime/MarkedBlock.cpp: |
| (JSC::MarkedBlock::create): |
| (JSC::MarkedBlock::destroy): |
| (JSC::MarkedBlock::MarkedBlock): |
| (JSC::MarkedBlock::sweep): |
| * runtime/MarkedBlock.h: |
| (JSC::MarkedBlock::firstAtom): |
| (JSC::MarkedBlock::atoms): |
| (JSC::MarkedBlock::isAtomAligned): |
| (JSC::MarkedBlock::blockFor): |
| (JSC::MarkedBlock::isEmpty): |
| (JSC::MarkedBlock::clearMarks): |
| (JSC::MarkedBlock::size): |
| (JSC::MarkedBlock::capacity): |
| (JSC::MarkedBlock::atomNumber): |
| (JSC::MarkedBlock::isMarked): |
| (JSC::MarkedBlock::testAndSetMarked): |
| (JSC::MarkedBlock::setMarked): |
| (JSC::MarkedBlock::forEach): Same as above. Also removed use of CELL_SIZE |
| and BLOCK_SIZE, and switched away from calling arbitrary pointers cells. |
| |
| * runtime/MarkedSpace.cpp: |
| (JSC::MarkedSpace::MarkedSpace): |
| (JSC::MarkedSpace::allocateBlock): |
| (JSC::MarkedSpace::allocate): |
| (JSC::MarkedSpace::reset): |
| * runtime/MarkedSpace.h: |
| (JSC::CollectorHeap::CollectorHeap): |
| (JSC::MarkedSpace::contains): Updated for renames. Made fixed-sizedness |
| a property of MarkedSpace. |
| |
| 2011-02-17 Oliver Hunt <oliver@apple.com> |
| |
| Attempt to fix windows build |
| |
| * runtime/WriteBarrier.h: |
| |
| 2011-02-17 Oliver Hunt <oliver@apple.com> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Refactor WriteBarrier and DeprecatedPtr to have less code duplication. |
| https://bugs.webkit.org/show_bug.cgi?id=54608 |
| |
| Make use of the tricks used for Handle, et al to avoid duplicating all |
| of the logic for DeprecatedPtr and WriteBarrier simply to support known |
| vs. unknown types. |
| |
| * JavaScriptCore.xcodeproj/project.pbxproj: |
| * collector/handles/Global.h: |
| (JSC::Global::internalSet): |
| * collector/handles/Handle.h: |
| (JSC::Handle::Handle): |
| (JSC::Handle::get): |
| * runtime/JSArray.cpp: |
| (JSC::JSArray::sortNumeric): |
| * runtime/JSObject.h: |
| (JSC::JSObject::inlineGetOwnPropertySlot): |
| * runtime/SlotAccessor.h: Added. |
| (JSC::SlotTypes::getFromBaseType): |
| (JSC::SlotTypes::convertToBaseType): |
| (JSC::SlotTypes::getFromSlot): |
| (JSC::SlotTypes::toJSValue): |
| (JSC::SlotTypes::validateUpcast): |
| (JSC::SlotAccessor::operator->): |
| (JSC::SlotAccessor::operator*): |
| * runtime/WeakGCPtr.h: |
| (JSC::WeakGCPtr::get): |
| (JSC::WeakGCPtr::internalSet): |
| * runtime/WriteBarrier.h: |
| (JSC::DeprecatedPtr::DeprecatedPtr): |
| (JSC::DeprecatedPtr::get): |
| (JSC::DeprecatedPtr::slot): |
| (JSC::DeprecatedPtr::operator=): |
| (JSC::WriteBarrierTranslator::convertToStorage): |
| (JSC::WriteBarrierTranslator::convertFromStorage): |
| (JSC::WriteBarrierBase::set): |
| (JSC::WriteBarrierBase::get): |
| (JSC::WriteBarrierBase::clear): |
| (JSC::WriteBarrierBase::slot): |
| (JSC::WriteBarrierBase::operator UnspecifiedBoolType*): |
| (JSC::WriteBarrierBase::operator!): |
| (JSC::WriteBarrierBase::setWithoutWriteBarrier): |
| (JSC::WriteBarrier::WriteBarrier): |
| |
| 2011-02-17 Kevin Ollivier <kevino@theolliviers.com> |
| |
| [wx] Revert incorrect blind fix and restore previous working code. |
| |
| * wtf/wx/StringWx.cpp: |
| (WTF::String::String): |
| |
| 2011-02-16 Geoffrey Garen <ggaren@apple.com> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Intermittent crashes beneath MarkStack::drain |
| https://bugs.webkit.org/show_bug.cgi?id=54614 |
| <rdar://problem/8971070> |
| |
| The crashes were caused by a GC happening after the global object's |
| property table had grown (due to compilation), but before the properties |
| had been fully initialized by program execution. |
| |
| * bytecompiler/BytecodeGenerator.cpp: |
| (JSC::BytecodeGenerator::BytecodeGenerator): Explicitly resize the global |
| object's register storage immediately, without waiting for program |
| execution to do it for us. This ensures that the global object's count |
| of global variables is consistent with the size of its global variable |
| storage at all times, and it ensures that all global variables are |
| properly initialized from the get-go. |
| |
| * runtime/JSGlobalObject.cpp: |
| (JSC::JSGlobalObject::resizeRegisters): |
| * runtime/JSGlobalObject.h: Added a helper function for growing the |
| global object's register storage, and initializing new registers. |
| |
| == Rolled over to ChangeLog-2011-02-16 == |