--- /dev/null
+2013-07-18 Andreas Kling <akling@apple.com>
+
+ CodeBlock DFG entry list isn't getting shrunk-to-fit after linking.
+ <http://webkit.org/b/118875>
+ <rdar://problem/14488577>
+
+ Reviewed by Geoffrey Garen.
+
+ Move the CodeBlock::shrinkToFit() call out of JITCompiler::link() and to the call sites
+ so SpeculativeJIT::linkOSREntries() can fill in CodeBlock::m_dfgData->osrEntry first.
+
+ 886 kB progression on <http://twitter.com/awesomekling>
+
+ * dfg/DFGJITCompiler.cpp:
+ (JSC::DFG::JITCompiler::link):
+ (JSC::DFG::JITCompiler::compile):
+ (JSC::DFG::JITCompiler::compileFunction):
+
+2013-07-18 Andreas Kling <akling@apple.com>
+
+ CodeBlock::m_argumentValueProfiles wastes a lot of memory.
+ <http://webkit.org/b/118852>
+ <rdar://problem/14481659>
+
+ Reviewed by Anders Carlsson.
+
+ Use Vector::resizeToFit() for CodeBlock::m_argumentValueProfiles. We don't need any padding
+ for growth, since we won't be appending to it anyway.
+
+ 921 KB progression on <http://twitter.com/awesomekling>
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::setNumParameters):
+
+2013-07-16 Mark Hahnenberg <mhahnenberg@apple.com>
+
+ Remove reference to JSValueStructSupport.h from JSExport.h
+ https://bugs.webkit.org/show_bug.cgi?id=118746
+
+ Reviewed by Filip Pizlo.
+
+ * API/JSExport.h: No such header exists, so it doesn't make sense to reference it.
+
+2013-07-17 Lucas Forschler <lforschler@apple.com>
+
+ Rollout r152600
+
+2013-07-17 Lucas Forschler <lforschler@apple.com>
+
+ Merge r152600
+
+ 2013-07-12 Brent Fulgham <bfulgham@apple.com>
+
+ [Windows] Build correction after r152573/r152577.
+ https://bugs.webkit.org/show_bug.cgi?id=118610
+
+ Reviewed by Oliver Hunt.
+
+ * jit/JITThunks.cpp:
+ (JSC::JITThunks::hostFunctionStub): Hand-feed MSVC++ the fact that we want the second
+ argument of the make_pair to be a function pointer.
+
+2013-07-17 Lucas Forschler <lforschler@apple.com>
+
+ Merge r152742
+
+ 2013-07-16 Filip Pizlo <fpizlo@apple.com>
+
+ MakeRope fixup shouldn't lead to an Identity without kids
+ https://bugs.webkit.org/show_bug.cgi?id=118745
+
+ Reviewed by Mark Hahnenberg.
+
+ Make the empty string pruning part of fixupMakeRope() stop if it's on the last child.
+
+ Make Node::convertToIdentity release-assert that it has exactly one kid.
+
+ * dfg/DFGFixupPhase.cpp:
+ (JSC::DFG::FixupPhase::fixupMakeRope):
+ * dfg/DFGNode.h:
+ (JSC::DFG::Node::convertToIdentity):
+
+2013-07-15 Lucas Forschler <lforschler@apple.com>
+
+ Merge r152613
+
+ 2013-07-13 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed, rolling out r151978.
+ http://trac.webkit.org/changeset/151978
+ https://bugs.webkit.org/show_bug.cgi?id=118651
+
+ Caused regressions at least 3 websites (Requested by rniwa on
+ #webkit).
+
+ * runtime/JSCJSValue.h:
+ * runtime/JSString.h:
+
+2013-07-15 Lucas Forschler <lforschler@apple.com>
+
+ Merge r152577
+
+ 2013-07-11 Oliver Hunt <oliver@apple.com>
+
+ Attempt to fix the windows build.
+
+ * jit/JITThunks.cpp:
+ (JSC::JITThunks::hostFunctionStub):
+ * jit/JITThunks.h:
+
+2013-07-15 Lucas Forschler <lforschler@apple.com>
+
+ Merge r152573
+
+ 2013-07-10 Oliver Hunt <oliver@apple.com>
+
+ NativeExecutable cache needs to use both call and construct functions for key
+ https://bugs.webkit.org/show_bug.cgi?id=118545
+
+ Reviewed by Geoffrey Garen.
+
+ Make the native executable cache make use a key pair so we don't decide to
+ treat all subsequent functions as not being constructors.
+
+ * jit/JITThunks.cpp:
+ (JSC::JITThunks::hostFunctionStub):
+ * jit/JITThunks.h:
+ * runtime/JSBoundFunction.cpp:
+ (JSC::JSBoundFunction::create):
+ * runtime/JSCell.cpp:
+ (JSC::JSCell::getCallData):
+ (JSC::JSCell::getConstructData):
+
+2013-07-09 Lucas Forschler <lforschler@apple.com>
+
+ Merge r152497
+
+ 2013-07-09 Mark Lam <mark.lam@apple.com>
+
+ Gardening to unbreak builds on the Windows bot.
+
+ Not reviewed.
+
+ * parser/ParserTokens.h:
+
+2013-07-09 Lucas Forschler <lforschler@apple.com>
+
+ Merge r152494
+
+ 2013-07-09 Mark Lam <mark.lam@apple.com>
+
+ Fix 30% JSBench regression (caused by adding column numbers to stack traces).
+ https://bugs.webkit.org/show_bug.cgi?id=118481.
+
+ Reviewed by Mark Hahnenberg and Geoffrey Garen.
+
+ Previously, we already capture ExpressionRangeInfo that provides a divot for
+ each bytecode that can potentially throw an exception (and therefore generate
+ a stack trace). On first attempt to compute column numbers, we then do a walk
+ of the source string to record all line start positions in a table associated
+ with the SourceProvider. The column number can then be computed as
+ divot - lineStartFor(bytecodeOffset).
+
+ The computation of this lineStarts table is the source of the 30% JSBench
+ performance regression.
+
+ The new code now records lineStarts as the lexer and parser scans the source
+ code. These lineStarts are then used to compute the column number for the
+ given divot, and stored in the ExpressionRangeInfo. Similarly, we also capture
+ the line number at the divot point and store that in the ExpressionRangeInfo.
+ Hence, to look up line and column numbers, we now lookup the ExpressionRangeInfo
+ for the bytecodeOffset, and then compute the line and column from the values
+ stored in the expression info.
+
+ The strategy:
+ 1. We want to minimize perturbations to the lexer and parser. Specifically,
+ the changes added should not change how it scans code, and generate bytecode.
+ 2. We regard the divot as the source character position we are interested
+ in. As such, we'll capture line and lineStart (for column) at the point
+ when we capture the divot information. This ensures that the 3 values are
+ consistent.
+
+ How the change is done:
+ 1. Change the lexer to track lineStarts.
+ 2. Change the parser to capture line and lineStarts at the point of capturing
+ divots.
+ 3. Change the parser and associated code to plumb these values all the way to
+ the point that the correspoinding ExpressionRangeInfo is emitted.
+ 4. Propagate and record SourceCode firstLine and firstLineColumnOffset to the
+ the necessary places so that we can add them as needed when reifying
+ UnlinkedCodeBlocks into CodeBlocks.
+ 5. Compress the line and column number values in the ExpressionRangeInfo. In
+ practice, we seldom have both large line and column numbers. Hence, we can
+ encode both in an uint32_t most of the time. For the times when we encounter
+ both large line and column numbers, we have a fallback to store the "fat"
+ position info.
+ 6. Emit an ExpressionRangeInfo for UnaryOp nodes to get more line and column
+ number coverage.
+ 7. Change the interpreter to use the new way of computing line and column.
+ 8. Delete old line and column computation code that is now unused.
+
+ Misc details:
+ - the old lexer was tracking both a startOffset and charPosition where
+ charPosition equals startOffset - SourceCode.startOffset. We now use
+ startOffset exclusively throughout the system for consistency.
+ All offset values (including lineStart) are relative to the start of the
+ SourceProvider string. These values will only be converted to be relative
+ to the SourceCode.startOffset at the very last minute i.e. when the divot
+ is stored into the ExpressionRangeInfo.
+
+ This change to use the same offset system everywhere reduces confusion
+ from having to convert back and forth between the 2 systems. It also
+ enables a lot of assertions to be used.
+
+ - Also fixed some bugs in the choice of divot positions to use. For example,
+ both Eval and Function expressions previously used column numbers from
+ the start of the expression but used the line number at the end of the
+ expression. This is now fixed to use either the start or end positions
+ as appropriate, but not a mix of line and columns from both.
+
+ - Why use ints instead of unsigneds for offsets and lineStarts inside the
+ lexer and parser?
+ Some tests (e.g. fast/js/call-base-resolution.html and
+ fast/js/eval-cross-window.html) has shown that lineStart offsets can be
+ prior to the SourceCode.startOffset. Keeping the lexer offsets as ints
+ simplifies computations and makes it easier to maintain the assertions
+ that (startOffset >= lineStartOffset).
+
+ However, column and line numbers are always unsigned when we publish
+ them to the ExpressionRangeInfo. The ints are only used inside the
+ lexer and parser ... well, and bytecode generator.
+
+ - For all cases, lineStart is always captured where the divot is captured.
+ However, some sputnik conformance tests have shown that we cannot honor
+ line breaks for assignment statements like the following:
+
+ eval("x\u000A*=\u000A-1;");
+
+ In this case, the lineStart is expected to be captured at the start of
+ the assignment expression instead of at the divot point in the middle.
+ The assignment expression is the only special case for this.
+
+ This patch has been tested against the full layout tests both with release
+ and debug builds with no regression.
+
+ * API/JSContextRef.cpp:
+ (JSContextCreateBacktrace):
+ - Updated to use the new StackFrame::computeLineAndColumn().
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::CodeBlock):
+ - Added m_firstLineColumnOffset initialization.
+ - Plumbed the firstLineColumnOffset into the SourceCode.
+ - Initialized column for op_debug using the new way.
+ (JSC::CodeBlock::lineNumberForBytecodeOffset):
+ - Changed to compute line number using the ExpressionRangeInfo.
+ (JSC::CodeBlock::columnNumberForBytecodeOffset): Added
+ - Changed to compute column number using the ExpressionRangeInfo.
+ (JSC::CodeBlock::expressionRangeForBytecodeOffset):
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::firstLineColumnOffset):
+ (JSC::GlobalCodeBlock::GlobalCodeBlock):
+ - Plumbed firstLineColumnOffset through to the super class.
+ (JSC::ProgramCodeBlock::ProgramCodeBlock):
+ - Plumbed firstLineColumnOffset through to the super class.
+ (JSC::EvalCodeBlock::EvalCodeBlock):
+ - Plumbed firstLineColumnOffset through to the super class.
+ But for EvalCodeBlocks, the firstLineColumnOffset is always 1
+ because we're starting with a new source string with no start
+ offset.
+ (JSC::FunctionCodeBlock::FunctionCodeBlock):
+ - Plumbed firstLineColumnOffset through to the super class.
+
+ * bytecode/ExpressionRangeInfo.h:
+ - Added modes for encoding line and column into a single 30-bit
+ unsigned. The encoding is in 1 of 3 modes:
+ 1. FatLineMode: 22-bit line, 8-bit column
+ 2. FatColumnMode: 8-bit line, 22-bit column
+ 3. FatLineAndColumnMode: 32-bit line, 32-bit column
+ (JSC::ExpressionRangeInfo::encodeFatLineMode): Added.
+ - Encodes line and column into the 30-bit position using FatLine mode.
+ (JSC::ExpressionRangeInfo::encodeFatColumnMode): Added.
+ - Encodes line and column into the 30-bit position using FatColumn mode.
+ (JSC::ExpressionRangeInfo::decodeFatLineMode): Added.
+ - Decodes the FatLine mode 30-bit position into line and column.
+ (JSC::ExpressionRangeInfo::decodeFatColumnMode): Added.
+ - Decodes the FatColumn mode 30-bit position into line and column.
+
+ * bytecode/UnlinkedCodeBlock.cpp:
+ (JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):
+ - Plumbed startColumn through.
+ (JSC::UnlinkedFunctionExecutable::link):
+ - Plumbed startColumn through.
+ (JSC::UnlinkedCodeBlock::lineNumberForBytecodeOffset):
+ - Computes a line number using the new way.
+ (JSC::UnlinkedCodeBlock::expressionRangeForBytecodeOffset):
+ - Added decoding of line and column.
+ - Added handling of the case when we do not find a fitting expression
+ range info for a specified bytecodeOffset. This only happens if the
+ bytecodeOffset is below the first expression range info. In that
+ case, we'll use the first expression range info entry.
+ (JSC::UnlinkedCodeBlock::addExpressionInfo):
+ - Added encoding of line and column.
+
+ * bytecode/UnlinkedCodeBlock.h:
+ - Added m_expressionInfoFatPositions in RareData.
+ (JSC::UnlinkedFunctionExecutable::functionStartColumn):
+ (JSC::UnlinkedCodeBlock::shrinkToFit):
+ - Removed obsoleted m_lineInfo.
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitCall): Plumbed line and lineStart through.
+ (JSC::BytecodeGenerator::emitCallEval): Plumbed line and lineStart through.
+ (JSC::BytecodeGenerator::emitCallVarargs): Plumbed line and lineStart through.
+ (JSC::BytecodeGenerator::emitConstruct): Plumbed line and lineStart through.
+ (JSC::BytecodeGenerator::emitDebugHook): Plumbed lineStart through.
+ * bytecompiler/BytecodeGenerator.h:
+ (JSC::BytecodeGenerator::emitNode):
+ (JSC::BytecodeGenerator::emitNodeInConditionContext):
+ - Removed obsoleted m_lineInfo.
+ (JSC::BytecodeGenerator::emitExpressionInfo):
+ - Plumbed line and lineStart through.
+ - Compute the line and column to be added to the expression range info.
+ * bytecompiler/NodesCodegen.cpp:
+ (JSC::ThrowableExpressionData::emitThrowReferenceError):
+ (JSC::ResolveNode::emitBytecode):
+ (JSC::ArrayNode::toArgumentList):
+ (JSC::BracketAccessorNode::emitBytecode):
+ (JSC::DotAccessorNode::emitBytecode):
+ (JSC::NewExprNode::emitBytecode):
+ (JSC::EvalFunctionCallNode::emitBytecode):
+ (JSC::FunctionCallValueNode::emitBytecode):
+ (JSC::FunctionCallResolveNode::emitBytecode):
+ (JSC::FunctionCallBracketNode::emitBytecode):
+ (JSC::FunctionCallDotNode::emitBytecode):
+ (JSC::CallFunctionCallDotNode::emitBytecode):
+ (JSC::ApplyFunctionCallDotNode::emitBytecode):
+ (JSC::PostfixNode::emitResolve):
+ (JSC::PostfixNode::emitBracket):
+ (JSC::PostfixNode::emitDot):
+ (JSC::DeleteResolveNode::emitBytecode):
+ (JSC::DeleteBracketNode::emitBytecode):
+ (JSC::DeleteDotNode::emitBytecode):
+ (JSC::PrefixNode::emitResolve):
+ (JSC::PrefixNode::emitBracket):
+ (JSC::PrefixNode::emitDot):
+ - Plumbed line and lineStart through the above as needed.
+
+ (JSC::UnaryOpNode::emitBytecode):
+ - Added emission of an ExpressionRangeInfo for the UnaryOp node.
+
+ (JSC::BinaryOpNode::emitStrcat):
+ (JSC::ThrowableBinaryOpNode::emitBytecode):
+ (JSC::InstanceOfNode::emitBytecode):
+ (JSC::emitReadModifyAssignment):
+ (JSC::ReadModifyResolveNode::emitBytecode):
+ (JSC::AssignResolveNode::emitBytecode):
+ (JSC::AssignDotNode::emitBytecode):
+ (JSC::ReadModifyDotNode::emitBytecode):
+ (JSC::AssignBracketNode::emitBytecode):
+ (JSC::ReadModifyBracketNode::emitBytecode):
+ - Plumbed line and lineStart through the above as needed.
+
+ (JSC::ConstStatementNode::emitBytecode):
+ (JSC::EmptyStatementNode::emitBytecode):
+ (JSC::DebuggerStatementNode::emitBytecode):
+ (JSC::ExprStatementNode::emitBytecode):
+ (JSC::VarStatementNode::emitBytecode):
+ (JSC::IfElseNode::emitBytecode):
+ (JSC::DoWhileNode::emitBytecode):
+ (JSC::WhileNode::emitBytecode):
+ (JSC::ForNode::emitBytecode):
+ (JSC::ForInNode::emitBytecode):
+ (JSC::ContinueNode::emitBytecode):
+ (JSC::BreakNode::emitBytecode):
+ (JSC::ReturnNode::emitBytecode):
+ (JSC::WithNode::emitBytecode):
+ (JSC::SwitchNode::emitBytecode):
+ (JSC::LabelNode::emitBytecode):
+ (JSC::ThrowNode::emitBytecode):
+ (JSC::TryNode::emitBytecode):
+ (JSC::ProgramNode::emitBytecode):
+ (JSC::EvalNode::emitBytecode):
+ (JSC::FunctionBodyNode::emitBytecode):
+ - Plumbed line and lineStart through the above as needed.
+
+ * interpreter/Interpreter.cpp:
+ (JSC::appendSourceToError):
+ - Added line and column arguments for expressionRangeForBytecodeOffset().
+ (JSC::StackFrame::computeLineAndColumn):
+ - Replaces StackFrame::line() and StackFrame::column().
+ (JSC::StackFrame::expressionInfo):
+ - Added line and column arguments.
+ (JSC::StackFrame::toString):
+ - Changed to use the new StackFrame::computeLineAndColumn().
+ (JSC::Interpreter::getStackTrace):
+ - Added the needed firstLineColumnOffset arg for the StackFrame.
+
+ * interpreter/Interpreter.h:
+ * parser/ASTBuilder.h:
+ (JSC::ASTBuilder::BinaryOpInfo::BinaryOpInfo):
+ (JSC::ASTBuilder::AssignmentInfo::AssignmentInfo):
+ (JSC::ASTBuilder::createResolve):
+ (JSC::ASTBuilder::createBracketAccess):
+ (JSC::ASTBuilder::createDotAccess):
+ (JSC::ASTBuilder::createRegExp):
+ (JSC::ASTBuilder::createNewExpr):
+ (JSC::ASTBuilder::createAssignResolve):
+ (JSC::ASTBuilder::createFunctionExpr):
+ (JSC::ASTBuilder::createFunctionBody):
+ (JSC::ASTBuilder::createGetterOrSetterProperty):
+ (JSC::ASTBuilder::createFuncDeclStatement):
+ (JSC::ASTBuilder::createBlockStatement):
+ (JSC::ASTBuilder::createExprStatement):
+ (JSC::ASTBuilder::createIfStatement):
+ (JSC::ASTBuilder::createForLoop):
+ (JSC::ASTBuilder::createForInLoop):
+ (JSC::ASTBuilder::createVarStatement):
+ (JSC::ASTBuilder::createReturnStatement):
+ (JSC::ASTBuilder::createBreakStatement):
+ (JSC::ASTBuilder::createContinueStatement):
+ (JSC::ASTBuilder::createTryStatement):
+ (JSC::ASTBuilder::createSwitchStatement):
+ (JSC::ASTBuilder::createWhileStatement):
+ (JSC::ASTBuilder::createDoWhileStatement):
+ (JSC::ASTBuilder::createLabelStatement):
+ (JSC::ASTBuilder::createWithStatement):
+ (JSC::ASTBuilder::createThrowStatement):
+ (JSC::ASTBuilder::createDebugger):
+ (JSC::ASTBuilder::createConstStatement):
+ (JSC::ASTBuilder::appendBinaryExpressionInfo):
+ (JSC::ASTBuilder::appendUnaryToken):
+ (JSC::ASTBuilder::unaryTokenStackLastStart):
+ (JSC::ASTBuilder::unaryTokenStackLastLineStartPosition): Added.
+ (JSC::ASTBuilder::assignmentStackAppend):
+ (JSC::ASTBuilder::createAssignment):
+ (JSC::ASTBuilder::setExceptionLocation):
+ (JSC::ASTBuilder::makeDeleteNode):
+ (JSC::ASTBuilder::makeFunctionCallNode):
+ (JSC::ASTBuilder::makeBinaryNode):
+ (JSC::ASTBuilder::makeAssignNode):
+ (JSC::ASTBuilder::makePrefixNode):
+ (JSC::ASTBuilder::makePostfixNode):.
+ - Plumbed line, lineStart, and startColumn through the above as needed.
+
+ * parser/Lexer.cpp:
+ (JSC::::currentSourcePtr):
+ (JSC::::setCode):
+ - Added tracking for sourceoffset and lineStart.
+ (JSC::::internalShift):
+ (JSC::::parseIdentifier):
+ - Added tracking for lineStart.
+ (JSC::::parseIdentifierSlowCase):
+ (JSC::::parseString):
+ - Added tracking for lineStart.
+ (JSC::::parseStringSlowCase):
+ (JSC::::lex):
+ - Added tracking for sourceoffset.
+ (JSC::::sourceCode):
+ * parser/Lexer.h:
+ (JSC::Lexer::currentOffset):
+ (JSC::Lexer::currentLineStartOffset):
+ (JSC::Lexer::setOffset):
+ - Added tracking for lineStart.
+ (JSC::Lexer::offsetFromSourcePtr): Added. conversion function.
+ (JSC::Lexer::sourcePtrFromOffset): Added. conversion function.
+ (JSC::Lexer::setOffsetFromSourcePtr):
+ (JSC::::lexExpectIdentifier):
+ - Added tracking for sourceoffset and lineStart.
+
+ * parser/NodeConstructors.h:
+ (JSC::Node::Node):
+ (JSC::ResolveNode::ResolveNode):
+ (JSC::EvalFunctionCallNode::EvalFunctionCallNode):
+ (JSC::FunctionCallValueNode::FunctionCallValueNode):
+ (JSC::FunctionCallResolveNode::FunctionCallResolveNode):
+ (JSC::FunctionCallBracketNode::FunctionCallBracketNode):
+ (JSC::FunctionCallDotNode::FunctionCallDotNode):
+ (JSC::CallFunctionCallDotNode::CallFunctionCallDotNode):
+ (JSC::ApplyFunctionCallDotNode::ApplyFunctionCallDotNode):
+ (JSC::PostfixNode::PostfixNode):
+ (JSC::DeleteResolveNode::DeleteResolveNode):
+ (JSC::DeleteBracketNode::DeleteBracketNode):
+ (JSC::DeleteDotNode::DeleteDotNode):
+ (JSC::PrefixNode::PrefixNode):
+ (JSC::ReadModifyResolveNode::ReadModifyResolveNode):
+ (JSC::ReadModifyBracketNode::ReadModifyBracketNode):
+ (JSC::AssignBracketNode::AssignBracketNode):
+ (JSC::AssignDotNode::AssignDotNode):
+ (JSC::ReadModifyDotNode::ReadModifyDotNode):
+ (JSC::AssignErrorNode::AssignErrorNode):
+ (JSC::WithNode::WithNode):
+ (JSC::ForInNode::ForInNode):
+ - Plumbed line and lineStart through the above as needed.
+ * parser/Nodes.cpp:
+ (JSC::StatementNode::setLoc): Plumbed lineStart.
+ (JSC::ScopeNode::ScopeNode): Plumbed lineStart.
+ (JSC::ProgramNode::ProgramNode): Plumbed startColumn.
+ (JSC::ProgramNode::create): Plumbed startColumn.
+ (JSC::EvalNode::create):
+ (JSC::FunctionBodyNode::FunctionBodyNode): Plumbed startColumn.
+ (JSC::FunctionBodyNode::create): Plumbed startColumn.
+ * parser/Nodes.h:
+ (JSC::Node::startOffset):
+ (JSC::Node::lineStartOffset): Added.
+ (JSC::StatementNode::firstLine):
+ (JSC::StatementNode::lastLine):
+ (JSC::ThrowableExpressionData::ThrowableExpressionData):
+ (JSC::ThrowableExpressionData::setExceptionSourceCode):
+ (JSC::ThrowableExpressionData::divotStartOffset):
+ (JSC::ThrowableExpressionData::divotEndOffset):
+ (JSC::ThrowableExpressionData::divotLine):
+ (JSC::ThrowableExpressionData::divotLineStart):
+ (JSC::ThrowableSubExpressionData::ThrowableSubExpressionData):
+ (JSC::ThrowableSubExpressionData::setSubexpressionInfo):
+ (JSC::ThrowableSubExpressionData::subexpressionDivot):
+ (JSC::ThrowableSubExpressionData::subexpressionStartOffset):
+ (JSC::ThrowableSubExpressionData::subexpressionEndOffset):
+ (JSC::ThrowableSubExpressionData::subexpressionLine):
+ (JSC::ThrowableSubExpressionData::subexpressionLineStart):
+ (JSC::ThrowablePrefixedSubExpressionData::ThrowablePrefixedSubExpressionData):
+ (JSC::ThrowablePrefixedSubExpressionData::setSubexpressionInfo):
+ (JSC::ThrowablePrefixedSubExpressionData::subexpressionDivot):
+ (JSC::ThrowablePrefixedSubExpressionData::subexpressionStartOffset):
+ (JSC::ThrowablePrefixedSubExpressionData::subexpressionEndOffset):
+ (JSC::ThrowablePrefixedSubExpressionData::subexpressionLine):
+ (JSC::ThrowablePrefixedSubExpressionData::subexpressionLineStart):
+ (JSC::ScopeNode::startStartOffset):
+ (JSC::ScopeNode::startLineStartOffset):
+ (JSC::ProgramNode::startColumn):
+ (JSC::EvalNode::startColumn):
+ (JSC::FunctionBodyNode::startColumn):
+ - Plumbed line and lineStart through the above as needed.
+ * parser/Parser.cpp:
+ (JSC::::Parser):
+ (JSC::::parseSourceElements):
+ (JSC::::parseVarDeclarationList):
+ (JSC::::parseConstDeclarationList):
+ (JSC::::parseForStatement):
+ (JSC::::parseBreakStatement):
+ (JSC::::parseContinueStatement):
+ (JSC::::parseReturnStatement):
+ (JSC::::parseThrowStatement):
+ (JSC::::parseWithStatement):
+ - Plumbed line and lineStart through the above as needed.
+ (JSC::::parseFunctionBody):
+ - Plumbed startColumn.
+ (JSC::::parseFunctionInfo):
+ (JSC::::parseFunctionDeclaration):
+ (JSC::LabelInfo::LabelInfo):
+ (JSC::::parseExpressionOrLabelStatement):
+ (JSC::::parseAssignmentExpression):
+ (JSC::::parseBinaryExpression):
+ (JSC::::parseProperty):
+ (JSC::::parseObjectLiteral):
+ (JSC::::parsePrimaryExpression):
+ (JSC::::parseMemberExpression):
+ (JSC::::parseUnaryExpression):
+ - Plumbed line, lineStart, startColumn through the above as needed.
+ * parser/Parser.h:
+ (JSC::Parser::next):
+ (JSC::Parser::nextExpectIdentifier):
+ (JSC::Parser::tokenStart):
+ (JSC::Parser::tokenColumn):
+ (JSC::Parser::tokenEnd):
+ (JSC::Parser::tokenLineStart):
+ (JSC::Parser::lastTokenLine):
+ (JSC::Parser::lastTokenLineStart):
+ (JSC::::parse):
+ * parser/ParserTokens.h:
+ (JSC::JSTokenLocation::JSTokenLocation):
+ - Plumbed lineStart.
+ (JSC::JSTokenLocation::lineStartPosition):
+ (JSC::JSTokenLocation::startPosition):
+ (JSC::JSTokenLocation::endPosition):
+ * parser/SourceCode.h:
+ (JSC::SourceCode::SourceCode):
+ (JSC::SourceCode::startColumn):
+ (JSC::makeSource):
+ (JSC::SourceCode::subExpression):
+ * parser/SourceProvider.cpp: delete old code.
+ * parser/SourceProvider.h: delete old code.
+ * parser/SourceProviderCacheItem.h:
+ (JSC::SourceProviderCacheItem::closeBraceToken):
+ (JSC::SourceProviderCacheItem::SourceProviderCacheItem):
+ - Plumbed lineStart.
+ * parser/SyntaxChecker.h:
+ (JSC::SyntaxChecker::makeFunctionCallNode):
+ (JSC::SyntaxChecker::makeAssignNode):
+ (JSC::SyntaxChecker::makePrefixNode):
+ (JSC::SyntaxChecker::makePostfixNode):
+ (JSC::SyntaxChecker::makeDeleteNode):
+ (JSC::SyntaxChecker::createResolve):
+ (JSC::SyntaxChecker::createBracketAccess):
+ (JSC::SyntaxChecker::createDotAccess):
+ (JSC::SyntaxChecker::createRegExp):
+ (JSC::SyntaxChecker::createNewExpr):
+ (JSC::SyntaxChecker::createAssignResolve):
+ (JSC::SyntaxChecker::createFunctionExpr):
+ (JSC::SyntaxChecker::createFunctionBody):
+ (JSC::SyntaxChecker::createFuncDeclStatement):
+ (JSC::SyntaxChecker::createForInLoop):
+ (JSC::SyntaxChecker::createReturnStatement):
+ (JSC::SyntaxChecker::createBreakStatement):
+ (JSC::SyntaxChecker::createContinueStatement):
+ (JSC::SyntaxChecker::createWithStatement):
+ (JSC::SyntaxChecker::createLabelStatement):
+ (JSC::SyntaxChecker::createThrowStatement):
+ (JSC::SyntaxChecker::createGetterOrSetterProperty):
+ (JSC::SyntaxChecker::appendBinaryExpressionInfo):
+ (JSC::SyntaxChecker::operatorStackPop):
+ - Made SyntaxChecker prototype changes to match ASTBuilder due to new
+ args added for plumbing line, lineStart, and startColumn.
+ * runtime/CodeCache.cpp:
+ (JSC::CodeCache::generateBytecode):
+ (JSC::CodeCache::getCodeBlock):
+ - Plumbed startColumn.
+ * runtime/Executable.cpp:
+ (JSC::FunctionExecutable::FunctionExecutable):
+ (JSC::ProgramExecutable::compileInternal):
+ (JSC::FunctionExecutable::produceCodeBlockFor):
+ (JSC::FunctionExecutable::fromGlobalCode):
+ - Plumbed startColumn.
+ * runtime/Executable.h:
+ (JSC::ScriptExecutable::startColumn):
+ (JSC::ScriptExecutable::recordParse):
+ (JSC::FunctionExecutable::create):
+ - Plumbed startColumn.
+
+2013-07-08 Lucas Forschler <lforschler@apple.com>
+
+ Merge r152052
+
+ 2013-06-26 Anders Carlsson <andersca@apple.com>
+
+ Add JSStringCreateWithCharactersNoCopy SPI
+ https://bugs.webkit.org/show_bug.cgi?id=118074
+ <rdar://problem/14279905>
+
+ Reviewed by Geoffrey Garen.
+
+ * API/JSStringRef.cpp:
+ (JSStringCreateWithCharactersNoCopy):
+ Create a new OpaqueJSString, using the newly added StringImpl::createWithoutCopying function.
+
+ * API/JSStringRefPrivate.h: Added.
+ Add a home for the JSStringCreateWithCharactersNoCopy function.
+
+ * API/OpaqueJSString.h:
+ (OpaqueJSString::OpaqueJSString):
+ Just call isolatedCopy on the passed in string.
+
+ * API/tests/testapi.c:
+ Add an API test for JSStringCreateWithCharactersNoCopy.
+
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ Add new files.
+
+2013-07-08 Lucas Forschler <lforschler@apple.com>
+
+ Merge r152314
+
+ 2013-07-02 Mark Hahnenberg <mhahnenberg@apple.com>
+
+ Replace RELEASE_ASSERT with ASSERT in CodeBlock:: bytecodeOffsetForCallAtIndex
+ https://bugs.webkit.org/show_bug.cgi?id=118316
+
+ Reviewed by Geoffrey Garen.
+
+ This is causing some crashiness in release builds. We should replace it with an ASSERT
+ until we track down all the places that need fixing in bug 118315.
+
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::bytecodeOffsetForCallAtIndex):
+
+2013-07-01 Lucas Forschler <lforschler@apple.com>
+
+ Merge r152091
+
+ 2013-06-27 Timothy Hatcher <timothy@apple.com>
+
+ Notify the debugger about functions created from source code via new Function() or WebCore::JSLazyEventListener.
+
+ https://bugs.webkit.org/show_bug.cgi?id=118063
+
+ Reviewed by Geoffrey Garen.
+
+ * bytecode/UnlinkedCodeBlock.cpp:
+ (JSC::UnlinkedFunctionExecutable::fromGlobalCode): Call Debugger::sourceParsed.
+
+2013-07-01 Lucas Forschler <lforschler@apple.com>
+
+ Merge r151978
+
+ 2013-06-25 Ryosuke Niwa <rniwa@webkit.org>
+
+ JSString should remember AtomicString
+ https://bugs.webkit.org/show_bug.cgi?id=117386
+
+ Reviewed by Geoffrey Garen.
+
+ Added JSValue::toAtomicString and JSString::atomicString. These two functions allow WebCore to update
+ JSString's m_value to set isAtomic flag and avoid the AtomicStringTable lookups in subsequent attempts
+ to obtain the AtomicString of the same value.
+
+ * runtime/JSCJSValue.h:
+ * runtime/JSString.h:
+ (JSC::JSString::atomicString):
+ (JSC::JSValue::toAtomicString):
+
+2013-06-25 Lucas Forschler <lforschler@apple.com>
+
+ Merge r151786
+
+ 2013-06-20 Mark Hahnenberg <mhahnenberg@apple.com>
+
+ Improper deallocation of JSManagedValue causes crashes during autorelease pool draining
+ https://bugs.webkit.org/show_bug.cgi?id=117840
+
+ Reviewed by Geoffrey Garen.
+
+ Improperly managing a JSManagedValue can cause a crash when the JSC::Weak inside the
+ JSManagedValue is destroyed upon deallocation. We would rather have improperly maintained
+ JSManagedValues cause memory leaks than take down the whole app.
+
+ The fix is to use the callback to the JSC::Weak on the destruction of the VM so that we
+ can safely null it out. This will prevent ~Weak from crashing.
+
+ * API/JSManagedValue.mm:
+ (-[JSManagedValue JSC::JSC::]):
+ (JSManagedValueHandleOwner::finalize):
+ * API/tests/testapi.mm: Added a test that crashed prior to this fix due to a leaked
+ managed reference. Also fixed a small style nit I noticed in another test.
+
+2013-06-25 Lucas Forschler <lforschler@apple.com>
+
+ Merge r151923
+
+ 2013-06-24 Roger Fong <roger_fong@apple.com>
+
+ Unreviewed. Makefile build fix for AppleWindows.
+
+ * JavaScriptCore.vcxproj/JavaScriptCore.make:
+
+2013-06-21 Lucas Forschler <lforschler@apple.com>
+
+ Merge r151787
+
+ 2013-06-20 Roger Fong <roger_fong@apple.com>
+
+ Make Windows makefile copy build output to a different folder.
+ <rdar://problem/14219184>.
+
+ * JavaScriptCore.vcxproj/JavaScriptCore.make:
+
+2013-06-18 Roger Fong <roger_fong@apple.com>
+
+ Disable some feature flags.
+ <rdar://problem/14171207>.
+
+ Rubberstamped by Jon Lee.
+
+ * Configurations/FeatureDefines.xcconfig:
+
+2013-06-18 Oliver Hunt <oliver@apple.com>
+
+ Going to google.com/trends causes a crash
+ https://bugs.webkit.org/show_bug.cgi?id=117602
+
+ Reviewed by Geoffrey Garen.
+
+ When handling op_throw, etc we need to flush the variables and arguments
+ for the entire inline stack, not just the top frame.
+
+ * dfg/DFGByteCodeParser.cpp:
+ (JSC::DFG::ByteCodeParser::flushAllArgumentsAndCapturedVariablesInInlineStack):
+ (JSC::DFG::ByteCodeParser::parseBlock):
+
+2013-06-18 Roger Fong <roger_fong@apple.com>
+
+ Replace tools32 folder with tools and update WebKit Windows solution accordingly.
+ <rdar://problem/14118143>.
+
+ Rubberstamped by Brent Fulgham.
+
+ * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
+ * JavaScriptCore.vcxproj/JavaScriptCoreDebug.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreDebugCFLite.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj:
+ * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedDebug.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedProduction.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedRelease.props:
+ * JavaScriptCore.vcxproj/JavaScriptCorePostBuild.cmd:
+ * JavaScriptCore.vcxproj/JavaScriptCoreProduction.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreRelease.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreReleaseCFLite.props:
+ * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj:
+ * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.vcxproj:
+ * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj:
+ * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.props:
+ * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.props:
+ * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.props:
+ * JavaScriptCore.vcxproj/jsc/jsc.vcxproj:
+ * JavaScriptCore.vcxproj/jsc/jscDebug.props:
+ * JavaScriptCore.vcxproj/jsc/jscProduction.props:
+ * JavaScriptCore.vcxproj/jsc/jscRelease.props:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExpDebug.props:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExpProduction.props:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExpRelease.props:
+ * JavaScriptCore.vcxproj/testapi/testapi.vcxproj:
+ * JavaScriptCore.vcxproj/testapi/testapiDebug.props:
+ * JavaScriptCore.vcxproj/testapi/testapiDebugCFLite.props:
+ * JavaScriptCore.vcxproj/testapi/testapiProduction.props:
+ * JavaScriptCore.vcxproj/testapi/testapiRelease.props:
+ * JavaScriptCore.vcxproj/testapi/testapiReleaseCFLite.props:
+
+2013-06-17 Roger Fong <roger_fong@apple.com>
+
+ Modify Windows makefiles to copy some bin output into Program Files.
+ https://bugs.webkit.org/show_bug.cgi?id=117714.
+ <rdar://problem/14179054>
+
+ Reviewed by Brent Fulgham.
+
+ * JavaScriptCore.vcxproj/JavaScriptCore.make:
+
+2013-06-14 Ryosuke Niwa <rniwa@webkit.org>
+
+ Function names on Object.prototype should be common identifiers
+ https://bugs.webkit.org/show_bug.cgi?id=117614
+
+ Reviewed by Darin Adler.
+
+ Patch written by Sam Weinig. Make Object's prototype function names common identififers since they're used frequently.
+
+ * runtime/CommonIdentifiers.h:
+ * runtime/FunctionConstructor.cpp:
+ (JSC::constructFunction):
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::reset):
+ * runtime/JSObject.h:
+ * runtime/ObjectPrototype.cpp:
+ (JSC::ObjectPrototype::finishCreation):
+ * runtime/StringPrototype.cpp:
+ (JSC::StringPrototype::finishCreation):
+
+2013-06-13 Ryosuke Niwa <rniwa@webkit.org>
+
+ Remove LiteralIdentifierTable
+ https://bugs.webkit.org/show_bug.cgi?id=117613
+
+ Reviewed by Geoffrey Garen.
+
+ Removed LiteralIdentifierTable since it doesn't seem to have any perf. impact now.
+
+ * runtime/Identifier.cpp:
+ (JSC::Identifier::add):
+
+2013-06-12 Conrad Shultz <conrad_shultz@apple.com>
+
+ JSExport header documentation substitutes "semicolon" for "colon"
+ https://bugs.webkit.org/show_bug.cgi?id=117552
+
+ Reviewed by Mark Hahnenberg.
+
+ * API/JSExport.h:
+ Fix a couple typos.
+
+2013-06-10 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+
+ [JSC] Remove a vestige of wxWidgets support.
+ https://bugs.webkit.org/show_bug.cgi?id=117419
+
+ Reviewed by Benjamin Poulain.
+
+ * runtime/JSExportMacros.h: Remove a check for BUILDING_WX__ that
+ seems to have gone unnoticed when the wxWidgets port was removed.
+
+2013-06-06 Roger Fong <roger_fong@apple.com>
+
+ Stop copying AAS binaries into build folder.
+ https://bugs.webkit.org/show_bug.cgi?id=117319.
+
+ Rubberstamped by Darin Adler.
+
+ * JavaScriptCore.vcxproj/JavaScriptCorePreLink.cmd:
+ * JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd:
+ * JavaScriptCore.vcxproj/jsc/jscPreLink.cmd:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExpPreLink.cmd:
+ * JavaScriptCore.vcxproj/testapi/testapiPreLink.cmd:
+
+2013-06-05 Filip Pizlo <fpizlo@apple.com>
+
+ DFG CFA shouldn't filter ArrayModes with ALL_NON_ARRAY_ARRAY_MODES if the speculated type is not SpecArray
+ https://bugs.webkit.org/show_bug.cgi?id=117279
+ <rdar://problem/14078025>
+
+ Reviewed by Mark Hahnenberg.
+
+ * dfg/DFGAbstractValue.h:
+ (JSC::DFG::AbstractValue::filterArrayModesByType):
+
+2013-06-05 Michael Saboff <msaboff@apple.com>
+
+ JSC: Crash beneath cti_op_div @ http://gmailblog.blogspot.com
+ https://bugs.webkit.org/show_bug.cgi?id=117280
+
+ Reviewed by Filip Pizlo.
+
+ Updated the merging of VariableAccessData nodes in ArgumentPosition lists
+ to find the unified VariableAccessData node that is the root of the
+ current node instead of using the current node directly when merging
+ attributes.
+ Added new dump code to dump the ArgumentPosition list.
+
+ * dfg/DFGArgumentPosition.h:
+ (JSC::DFG::rgumentPosition::mergeArgumentPredictionAwareness):
+ (JSC::DFG::ArgumentPosition::mergeArgumentUnboxingAwareness):
+ (JSC::DFG::ArgumentPosition::dump):
+ * dfg/DFGGraph.cpp:
+ (JSC::DFG::Graph::dump):
+
+2013-06-05 Bear Travis <betravis@adobe.com>
+
+ [CSS Exclusions][CSS Shapes] Split CSS Exclusions & Shapes compile & runtime flags
+ https://bugs.webkit.org/show_bug.cgi?id=117172
+
+ Reviewed by Alexandru Chiculita.
+
+ Adding the CSS_SHAPES compile flag.
+
+ * Configurations/FeatureDefines.xcconfig:
+
+2013-06-05 Balazs Kilvady <kilvadyb@homejinni.com>
+
+ JSC Assertion tests failures on MIPS.
+ https://bugs.webkit.org/show_bug.cgi?id=116552
+
+ Reviewed by Geoffrey Garen.
+
+ Fix condition handlig in branchAdd32 implemetations.
+
+ * assembler/MacroAssemblerMIPS.h:
+ (JSC::MacroAssemblerMIPS::branchAdd32):
+
+2013-06-04 Julien Brianceau <jbrianceau@nds.com>
+
+ [sh4] Add floating point absolute function support in baseline JIT.
+ https://bugs.webkit.org/show_bug.cgi?id=117147
+
+ Reviewed by Geoffrey Garen.
+
+ * assembler/MacroAssemblerSH4.h:
+ (JSC::MacroAssemblerSH4::supportsFloatingPointAbs):
+ (JSC::MacroAssemblerSH4::absDouble):
+ * assembler/SH4Assembler.h:
+ (JSC::SH4Assembler::dabs):
+ (JSC::SH4Assembler::printInstr):
+
+2013-06-04 Zan Dobersek <zdobersek@igalia.com>
+
+ [JSC] Test262 15.5.4.9_3 test is failing
+ https://bugs.webkit.org/show_bug.cgi?id=116789
+
+ Reviewed by Geoffrey Garen.
+
+ Bring the String.prototype.localeCompare behavior in line wit ES5 15.9.4.9.
+ If method is not given enough arguments, the minimal amount of arguments must be assumed, with their value being undefined.
+ The first argument to localeCompare, in its string form, is used as the 'that' string that's used in the comparison.
+ Therefor, when calling str.localeCompare() or str.localeCompare(undefined), the first argument is `undefined` and the
+ string "undefined" is used as the string to which value of str is compared.
+
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncLocaleCompare): Remove the early return in case of no given arguments to achieve the desired behavior.
+
+2013-06-03 Hojong Han <hojong.han@samsung.com>
+
+ [EFL] Implement GCActivityCallback
+ https://bugs.webkit.org/show_bug.cgi?id=95923
+
+ Reviewed by Geoffrey Garen.
+
+ Implements the activity triggered garbage collector.
+ Additional GCs can be triggered by platfrom timer.
+ It has sort of compaction effect not to make JSC heap grow fast
+ so that memory usage becomes lower than usual.
+
+ * PlatformEfl.cmake: Added.
+ * heap/HeapTimer.cpp:
+ (JSC):
+ (JSC::HeapTimer::HeapTimer):
+ (JSC::HeapTimer::~HeapTimer):
+ (JSC::HeapTimer::add):
+ (JSC::HeapTimer::stop):
+ (JSC::HeapTimer::timerEvent):
+ * heap/HeapTimer.h:
+ (HeapTimer):
+ * jsc.cpp:
+ (main):
+ * runtime/GCActivityCallback.cpp:
+ (JSC):
+ (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
+ (JSC::DefaultGCActivityCallback::scheduleTimer):
+ (JSC::DefaultGCActivityCallback::cancelTimer):
+ (JSC::DefaultGCActivityCallback::didAllocate):
+ * runtime/GCActivityCallback.h:
+ (GCActivityCallback):
+ (JSC::GCActivityCallback::GCActivityCallback):
+ (DefaultGCActivityCallback):
+
+2013-06-03 Roger Fong <roger_fong@apple.com>
+
+ Nuke VS2005 files from the tree.
+ <rdar://problem/14042021>.
+
+ Rubberstamped by Brent Fulgham.
+
+ * JavaScriptCore.vcproj: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore.make: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore.resources: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore.resources/Info.plist: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore.sln: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCF.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebug.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugAll.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugCairoCFLite.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebug.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebugAll.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebugCairoCFLite.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedProduction.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedRelease.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedReleaseCairoCFLite.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedReleasePGO.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePGOOptimize.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreProduction.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreRelease.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseCairoCFLite.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: Removed.
+ * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Removed.
+ * JavaScriptCore.vcproj/LLIntAssembly: Removed.
+ * JavaScriptCore.vcproj/LLIntAssembly/LLIntAssembly.make: Removed.
+ * JavaScriptCore.vcproj/LLIntAssembly/LLIntAssembly.vcproj: Removed.
+ * JavaScriptCore.vcproj/LLIntAssembly/build-LLIntAssembly.sh: Removed.
+ * JavaScriptCore.vcproj/LLIntDesiredOffsets: Removed.
+ * JavaScriptCore.vcproj/LLIntDesiredOffsets/LLIntDesiredOffsets.make: Removed.
+ * JavaScriptCore.vcproj/LLIntDesiredOffsets/LLIntDesiredOffsets.vcproj: Removed.
+ * JavaScriptCore.vcproj/LLIntDesiredOffsets/build-LLIntDesiredOffsets.sh: Removed.
+ * JavaScriptCore.vcproj/LLIntOffsetsExtractor: Removed.
+ * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcproj: Removed.
+ * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.vsprops: Removed.
+ * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.vsprops: Removed.
+ * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebugAll.vsprops: Removed.
+ * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebugCairoCFLite.vsprops: Removed.
+ * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.vsprops: Removed.
+ * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.vsprops: Removed.
+ * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorReleaseCairoCFLite.vsprops: Removed.
+ * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorReleasePGO.vsprops: Removed.
+ * JavaScriptCore.vcproj/jsc: Removed.
+ * JavaScriptCore.vcproj/jsc/jsc.vcproj: Removed.
+ * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Removed.
+ * JavaScriptCore.vcproj/jsc/jscDebug.vsprops: Removed.
+ * JavaScriptCore.vcproj/jsc/jscDebugAll.vsprops: Removed.
+ * JavaScriptCore.vcproj/jsc/jscDebugCairoCFLite.vsprops: Removed.
+ * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd: Removed.
+ * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd: Removed.
+ * JavaScriptCore.vcproj/jsc/jscPreLink.cmd: Removed.
+ * JavaScriptCore.vcproj/jsc/jscProduction.vsprops: Removed.
+ * JavaScriptCore.vcproj/jsc/jscRelease.vsprops: Removed.
+ * JavaScriptCore.vcproj/jsc/jscReleaseCairoCFLite.vsprops: Removed.
+ * JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops: Removed.
+ * JavaScriptCore.vcproj/testRegExp: Removed.
+ * JavaScriptCore.vcproj/testRegExp/testRegExp.vcproj: Removed.
+ * JavaScriptCore.vcproj/testRegExp/testRegExpCommon.vsprops: Removed.
+ * JavaScriptCore.vcproj/testRegExp/testRegExpDebug.vsprops: Removed.
+ * JavaScriptCore.vcproj/testRegExp/testRegExpDebugAll.vsprops: Removed.
+ * JavaScriptCore.vcproj/testRegExp/testRegExpDebugCairoCFLite.vsprops: Removed.
+ * JavaScriptCore.vcproj/testRegExp/testRegExpPostBuild.cmd: Removed.
+ * JavaScriptCore.vcproj/testRegExp/testRegExpPreBuild.cmd: Removed.
+ * JavaScriptCore.vcproj/testRegExp/testRegExpPreLink.cmd: Removed.
+ * JavaScriptCore.vcproj/testRegExp/testRegExpProduction.vsprops: Removed.
+ * JavaScriptCore.vcproj/testRegExp/testRegExpRelease.vsprops: Removed.
+ * JavaScriptCore.vcproj/testRegExp/testRegExpReleaseCairoCFLite.vsprops: Removed.
+ * JavaScriptCore.vcproj/testRegExp/testRegExpReleasePGO.vsprops: Removed.
+ * JavaScriptCore.vcproj/testapi: Removed.
+ * JavaScriptCore.vcproj/testapi/testapi.vcproj: Removed.
+ * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Removed.
+ * JavaScriptCore.vcproj/testapi/testapiDebug.vsprops: Removed.
+ * JavaScriptCore.vcproj/testapi/testapiDebugAll.vsprops: Removed.
+ * JavaScriptCore.vcproj/testapi/testapiDebugCairoCFLite.vsprops: Removed.
+ * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd: Removed.
+ * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd: Removed.
+ * JavaScriptCore.vcproj/testapi/testapiPreLink.cmd: Removed.
+ * JavaScriptCore.vcproj/testapi/testapiProduction.vsprops: Removed.
+ * JavaScriptCore.vcproj/testapi/testapiRelease.vsprops: Removed.
+ * JavaScriptCore.vcproj/testapi/testapiReleaseCairoCFLite.vsprops: Removed.
+
+2013-05-31 Filip Pizlo <fpizlo@apple.com>
+
+ Incorrect assertion in DFG::Graph::uncheckedActivationRegisterFor()
+ <rdar://problem/13989324>
+
+ Rubber stamped by Mark Hahnenberg.
+
+ This has a bogus assertion that checks that the passed CodeOrigin doesn't have
+ an inline call frame. This was well intentioned in the sense that it is true
+ that inlined call frames wouldn't have an activation register. But that doesn't
+ mean that people won't ask. Removing the assertion fixes a debug-only crash and
+ has no impact on production code. This change adds a comment to that effect.
+
+ * dfg/DFGGraph.h:
+ (JSC::DFG::Graph::uncheckedActivationRegisterFor):
+
+2013-05-31 Julien Brianceau <jbrianceau@nds.com>
+
+ [sh4] Fix Overflow case of branchMul32 in baseline JIT.
+ https://bugs.webkit.org/show_bug.cgi?id=117057
+
+ Reviewed by Oliver Hunt.
+
+ Current implementation of Overflow case in branchMul32 performs an
+ unsigned multiplication whereas a signed multiplication is expected.
+
+ * assembler/MacroAssemblerSH4.h:
+ (JSC::MacroAssemblerSH4::branchMul32):
+
+2013-05-31 Julien Brianceau <jbrianceau@nds.com>
+
+ [sh4] Fix floating point comparisons in baseline JIT.
+ https://bugs.webkit.org/show_bug.cgi?id=117066.
+
+ Reviewed by Oliver Hunt.
+
+ Current implementation of branchDouble function in baseline JIT is wrong
+ for some conditions and overkill for others. For instance:
+ - With DoubleGreaterThanOrEqual condition, branch will be taken if either
+ operand is NaN with current implementation whereras it should not.
+ - With DoubleNotEqualOrUnordered condition, performed NaN checks are
+ useless (because comparison result is false if either operand is NaN).
+
+ * assembler/MacroAssemblerSH4.h:
+ (JSC::MacroAssemblerSH4::branchDouble):
+
+2013-05-31 Julien Brianceau <jbrianceau@nds.com>
+
+ [sh4] Fix double floating point transfer in baseline JIT.
+ https://bugs.webkit.org/show_bug.cgi?id=117054
+
+ Reviewed by Oliver Hunt.
+
+ In current implementation, dmovRegReg function transfers only one single
+ FPRegister as PR=1 and SZ=0 in floating point status/control register.
+ Double transfers must be performed with two fmov.s opcodes.
+
+ * assembler/MacroAssemblerSH4.h:
+ (JSC::MacroAssemblerSH4::moveDouble):
+ (JSC::MacroAssemblerSH4::addDouble): Handle (op2==dest) case properly.
+ (JSC::MacroAssemblerSH4::sqrtDouble):
+ * assembler/SH4Assembler.h:
+ (JSC::SH4Assembler::fmovsRegReg):
+
+2013-05-31 Julien Brianceau <jbrianceau@nds.com>
+
+ [sh4] Handle branchType properly in branchTruncateDoubleToInt32.
+ https://bugs.webkit.org/show_bug.cgi?id=117062
+
+ Reviewed by Oliver Hunt.
+
+ Current implementation of branchTruncateDoubleToInt32 is incorrect
+ when branchType == BranchIfTruncateSuccessful in sh4 baseline JIT.
+
+ * assembler/MacroAssemblerSH4.h:
+ (JSC::MacroAssemblerSH4::branchTruncateDoubleToInt32):
+
+2013-05-31 Brent Fulgham <bfulgham@apple.com>
+
+ [Windows] Unreviewed build fix for VS2005 builders.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def: Add
+ missing export for WTF::SHA1::computeHexDigest
+
+2013-05-30 David Farler <dfarler@apple.com>
+
+ Fix jscore-test when not using --sdk option with jsDriver.pl
+ https://bugs.webkit.org/show_bug.cgi?id=116339
+
+ Reviewed by Joe Pecoraro.
+
+ * tests/mozilla/jsDriver.pl:
+ (execute_tests):
+ With each test, the shell_command needs to be started from scratch.
+
+ This fix will clear the shell_command and start over as before with
+ the opt_arch option when not using --sdk with jsDriver.pl.
+
+2013-05-30 Roger Fong <roger_fong@apple.com>
+
+ Get rid of JavaScript exports file on AppleWin port.
+ https://bugs.webkit.org/show_bug.cgi?id=117050.
+
+ Reviewed by Darin Adler.
+
+ Delete the JavaScriptCoreExportGenerator folder and remove dependencies.
+ Start linking in WTF.lib now that it's a shared library.
+
+ * JavaScriptCore.vcxproj/JavaScriptCore.submit.sln:
+ * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
+ * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator: Removed.
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj: Removed.
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj.filters: Removed.
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorBuildCmd.cmd: Removed.
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorCommon.props: Removed.
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorDebug.props: Removed.
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPostBuild.cmd: Removed.
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPreBuild.cmd: Removed.
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorProduction.props: Removed.
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorRelease.props: Removed.
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in: Removed.
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/make-export-file-generator: Removed.
+ * JavaScriptCore.vcxproj/jsc/jscCommon.props:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
+ * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
+
+2013-05-22 David Farler <dfarler@apple.com>
+
+ Add --sdk option to jsDriver.pl to run with iOS Simulator
+ https://bugs.webkit.org/show_bug.cgi?id=116339
+
+ Reviewed by David Kilzer.
+
+ * tests/mozilla/jsDriver.pl:
+ (execute_tests):
+ Prefix shell command with the path to the "sim" tool.
+ (parse_args):
+ Add -d / --sdk option.
+ (usage):
+ Help message for -d / --sdk option.
+
+2013-05-30 Julien Brianceau <jbrianceau@nds.com>
+
+ [sh4] Optimize NaN checks in LLINT for floating point comparisons.
+ https://bugs.webkit.org/show_bug.cgi?id=117049
+
+ Reviewed by Oliver Hunt.
+
+ Use the fcmp/eq opcode in sh4 LLINT to test if a double is NaN.
+ This is more efficient, doesn't require two tmp registers and requires
+ less code than current implementation (which converts double to float,
+ then checks 'E = Emax + 1' and 'f != 0').
+
+ * offlineasm/sh4.rb:
+
+2013-05-30 Oliver Hunt <oliver@apple.com>
+
+ JSCallbackObject does not correctly initialise the PropertySlot for getOwnPropertyDescriptor
+ https://bugs.webkit.org/show_bug.cgi?id=117053
+
+ Reviewed by Mark Hahnenberg.
+
+ Set appropriate thisValue on the PropertySlot
+
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::::getOwnPropertyDescriptor):
+ * API/tests/testapi.mm:
+
+2013-05-29 Jeffrey Pfau <jpfau@apple.com>
+
+ [Mac] Enable cache partitioning and the public suffix list on 10.8
+ <rdar://problem/13679019>
+
+ Rubber-stamped by David Kilzer.
+
+ * Configurations/FeatureDefines.xcconfig:
+
+2013-05-28 Brent Fulgham <bfulgham@apple.com>
+
+ [Windows] Put correct byteCompile symbol in file. Previous version
+ had an extra 'i' appended to the end.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
+
+2013-05-28 Brent Fulgham <bfulgham@apple.com>
+
+ [Windows] Unreviewed build fix. Remove ?byteCompile symbol that
+ is no longer accessible during link.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
+
+2013-05-28 Gavin Barraclough <barraclough@apple.com>
+
+ String(new Date(2010,10,1)) is wrong in KRAT, YAKT
+ https://bugs.webkit.org/show_bug.cgi?id=106750
+
+ Reviewed by Darin Adler.
+
+ * runtime/JSDateMath.cpp:
+ (JSC::msToGregorianDateTime):
+ - Additional review comment fix.
+
+2013-05-28 Brent Fulgham <bfulgham@apple.com>
+
+ [Windows] Unreviewed build fix after r150833
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
+ A CR/LF combination was lost in the file, combining two symbols.
+
+2013-05-27 Gavin Barraclough <barraclough@apple.com>
+
+ String(new Date(2010,10,1)) is wrong in KRAT, YAKT
+ https://bugs.webkit.org/show_bug.cgi?id=106750
+
+ Reviewed by Darin Adler.
+
+ First part of a fix, simplfy date handling code, instead of operating separately
+ on the UTC-standard and standard-DST offsets, just generate a combined UTC-local
+ offset (this is what we actually need, and what the OS gives us).
+
+ * runtime/JSDateMath.cpp:
+ (JSC::getLocalTimeOffset):
+ - removed getUTCOffset, converted getDSTOffset -> getLocalTimeOffset
+ (JSC::gregorianDateTimeToMS):
+ (JSC::msToGregorianDateTime):
+ (JSC::parseDateFromNullTerminatedCharacters):
+ - call getLocalTimeOffset instead of getUTCOffset/getDSTOffset
+ * runtime/VM.cpp:
+ (JSC::VM::resetDateCache):
+ - removed cachedUTCOffset, converted DSTOffsetCache -> LocalTimeOffsetCache
+ * runtime/VM.h:
+ (JSC::LocalTimeOffsetCache::LocalTimeOffsetCache):
+ (JSC::LocalTimeOffsetCache::reset):
+ (LocalTimeOffsetCache):
+ - removed cachedUTCOffset, converted DSTOffsetCache -> LocalTimeOffsetCache
+
+2013-05-28 Mark Hahnenberg <mhahnenberg@apple.com>
+
+ r150199 is very wrong
+ https://bugs.webkit.org/show_bug.cgi?id=116876
+
+ JSValue needs to protect its internal JSValueRef.
+
+ Reviewed by Darin Adler.
+
+ * API/JSValue.mm:
+ (-[JSValue initWithValue:inContext:]):
+ (-[JSValue dealloc]):
+ * API/tests/testapi.mm: Added a simple test to make sure that we protect the
+ underlying JavaScript value across garbage collections.
+
+2013-05-27 Patrick Gansterer <paroga@webkit.org>
+
+ Use ICU_INCLUDE_DIRS in BlackBerry CMake files
+ https://bugs.webkit.org/show_bug.cgi?id=116210
+
+ Reviewed by Rob Buis.
+
+ Set and use the ICU_INCLUDE_DIRS variable to avoid
+ duplicated adding of the ICU include directory.
+
+ * PlatformBlackBerry.cmake:
+
+2013-05-27 Gabor Rapcsanyi <rgabor@webkit.org>
+
+ MacroAssemblerARM should use xor to swap registers instead of move
+ https://bugs.webkit.org/show_bug.cgi?id=116306
+
+ Reviewed by Zoltan Herczeg.
+
+ Change register swapping to xor from move and this way we don't need
+ temporary register anymore.
+
+ * assembler/MacroAssemblerARM.h:
+ (JSC::MacroAssemblerARM::swap):
+
+2013-05-25 Filip Pizlo <fpizlo@apple.com>
+
+ We broke (-2^31/-1)|0 in the DFG
+ https://bugs.webkit.org/show_bug.cgi?id=116767
+
+ Reviewed by Andreas Kling.
+
+ The bug is that we were assuming that in the -2^31 case, we already had -2^31
+ in the result register. This was a wrong assumption.
+
+ * dfg/DFGSpeculativeJIT.cpp:
+ (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForX86):
+
+2013-05-24 Filip Pizlo <fpizlo@apple.com>
+
+ We broke !(0/0)
+ https://bugs.webkit.org/show_bug.cgi?id=116736
+
+ Reviewed by Gavin Barraclough.
+
+ * parser/ASTBuilder.h:
+ (JSC::ASTBuilder::createLogicalNot):
+ * runtime/JSCJSValueInlines.h:
+ (JSC::JSValue::pureToBoolean):
+
+2013-05-24 Julien Brianceau <jbrianceau@nds.com>
+
+ [sh4] Optimize LLINT generated code and fix few bugs in baseline JIT.
+ https://bugs.webkit.org/show_bug.cgi?id=116716
+
+ Reviewed by Geoffrey Garen.
+
+ * assembler/MacroAssemblerSH4.h:
+ (JSC::MacroAssemblerSH4::mul32): Cosmetic changes.
+ (JSC::MacroAssemblerSH4::convertInt32ToDouble): Absolute address was not dereferenced.
+ (JSC::MacroAssemblerSH4::branch32): Absolute address was not dereferenced.
+ (JSC::MacroAssemblerSH4::revertJumpReplacementToBranchPtrWithPatch): Use all 32 bits of pointer for revertJump call.
+ * assembler/SH4Assembler.h:
+ (JSC::SH4Assembler::revertJump): Use changePCrelativeAddress to patch the whole pointer.
+ (JSC::SH4Assembler::linkJump): Cosmetic change.
+ * offlineasm/sh4.rb: Optimize LLINT generated code.
+
+2013-05-23 Peter Wang <peter.wang@torchmobile.com.cn>
+
+ CLoop llint backend should not use the d8 register as scratch register
+ https://bugs.webkit.org/show_bug.cgi?id=116019
+
+ Reviewed by Csaba Osztrogonác.
+
+ * offlineasm/cloop.rb:
+
+2013-05-22 Peter Wang <peter.wang@torchmobile.com.cn>
+
+ Use uninitialized register in "JIT::emit_op_neq_null" and "emit_op_eq_null"
+ https://bugs.webkit.org/show_bug.cgi?id=116593
+
+ Reviewed by Filip Pizlo.
+
+ Generated instructions using uninitialized register. It's caused by a mistake of r126494.
+
+ * jit/JITOpcodes32_64.cpp:
+ (JSC::JIT::emit_op_eq_null):
+ (JSC::JIT::emit_op_neq_null):
+
+2013-05-22 Filip Pizlo <fpizlo@apple.com>
+
+ Fix indentation of CodeBlock.h
+
+ Rubber stampted by Mark Hahnenberg.
+
+ * bytecode/CodeBlock.h:
+
+2013-05-22 Julien Brianceau <jbrianceau@nds.com>
+
+ [sh4] Remove MacroAssemblerSH4.cpp file.
+ https://bugs.webkit.org/show_bug.cgi?id=116596.
+
+ Reviewed by Geoffrey Garen.
+
+ Move linkCall and repatchCall implementations from MacroAssemblerSH4.cpp
+ to MacroAssemblerSH4.h and remove MacroAssemblerSH4.cpp, as it is done
+ for other architectures.
+
+ * GNUmakefile.list.am:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * Target.pri:
+ * assembler/MacroAssemblerSH4.cpp: Removed.
+ * assembler/MacroAssemblerSH4.h:
+ (JSC::MacroAssemblerSH4::linkCall):
+ (MacroAssemblerSH4):
+ (JSC::MacroAssemblerSH4::repatchCall):
+
+2013-05-21 Brent Fulgham <bfulgham@apple.com>
+
+ [Windows] Unreviewed speculative fix for test-bots.
+
+ Add export declaration for WTFInvokeCrashHook to avoid runtime
+ load error on test bots.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
+
+2013-05-21 Mark Lam <mark.lam@apple.com>
+
+ Added missing assert condition for PositiveOrZero in ARM branch32().
+ https://bugs.webkit.org/show_bug.cgi?id=116538.
+
+ Reviewed by Geoffrey Garen.
+
+ * assembler/MacroAssemblerARM.h:
+ (JSC::MacroAssemblerARM::branchAdd32):
+
+2013-05-20 Mark Hahnenberg <mhahnenberg@apple.com>
+
+ Disable SuperRegion
+ https://bugs.webkit.org/show_bug.cgi?id=116362
+
+ Rubber stamped by Geoff Garen.
+
+ * heap/Region.h:
+
+2013-05-20 Oliver Hunt <oliver@apple.com>
+
+ Make C API more robust against null contexts
+ https://bugs.webkit.org/show_bug.cgi?id=116462
+
+ Reviewed by Anders Carlsson.
+
+ Handle null contexts in a non-crashy way. It's a bug to ever call the
+ API with a null context, and the absence of a context means we can't
+ produce a meaningful result, so we still assert in debug builds.
+
+ Now where possible we detect and early return, returning null for any
+ pointer type, NaN for doubles, and false for any boolean result.
+
+ * API/JSBase.cpp:
+ (JSEvaluateScript):
+ (JSCheckScriptSyntax):
+ (JSReportExtraMemoryCost):
+ * API/JSContextRef.cpp:
+ (JSContextGetGlobalObject):
+ (JSContextGetGroup):
+ (JSContextGetGlobalContext):
+ (JSContextCreateBacktrace):
+ * API/JSObjectRef.cpp:
+ (JSObjectMake):
+ (JSObjectMakeFunctionWithCallback):
+ (JSObjectMakeConstructor):
+ (JSObjectMakeFunction):
+ (JSObjectMakeArray):
+ (JSObjectMakeDate):
+ (JSObjectMakeError):
+ (JSObjectMakeRegExp):
+ (JSObjectGetPrototype):
+ (JSObjectSetPrototype):
+ (JSObjectHasProperty):
+ (JSObjectGetProperty):
+ (JSObjectSetProperty):
+ (JSObjectGetPropertyAtIndex):
+ (JSObjectSetPropertyAtIndex):
+ (JSObjectDeleteProperty):
+ (JSObjectCopyPropertyNames):
+ * API/JSValueRef.cpp:
+ (JSValueGetType):
+ (JSValueIsUndefined):
+ (JSValueIsNull):
+ (JSValueIsBoolean):
+ (JSValueIsNumber):
+ (JSValueIsString):
+ (JSValueIsObject):
+ (JSValueIsObjectOfClass):
+ (JSValueIsEqual):
+ (JSValueIsStrictEqual):
+ (JSValueIsInstanceOfConstructor):
+ (JSValueMakeUndefined):
+ (JSValueMakeNull):
+ (JSValueMakeBoolean):
+ (JSValueMakeNumber):
+ (JSValueMakeString):
+ (JSValueMakeFromJSONString):
+ (JSValueCreateJSONString):
+ (JSValueToBoolean):
+ (JSValueToNumber):
+ (JSValueToStringCopy):
+ (JSValueToObject):
+ (JSValueProtect):
+ * API/JSWeakObjectMapRefPrivate.cpp:
+
+2013-05-20 David Kilzer <ddkilzer@apple.com>
+
+ Synchronize FeatureDefines.xcconfig
+
+ * Configurations/FeatureDefines.xcconfig: Remove
+ ENABLE_LINK_PRERENDER. This was missed in r150356.
+
+2013-05-19 Anders Carlsson <andersca@apple.com>
+
+ Remove link prerendering code
+ https://bugs.webkit.org/show_bug.cgi?id=116415
+
+ Reviewed by Darin Adler.
+
+ This code was only used by Chromium and is dead now.
+
+ * Configurations/FeatureDefines.xcconfig:
+
+2013-05-18 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Replace *_LIBRARY_NAME with *_OUTPUT_NAME
+ https://bugs.webkit.org/show_bug.cgi?id=114554
+
+ Reviewed by Gyuyoung Kim.
+
+ Using variables as target names is very uncommon in CMake.
+ The usual way to specify the name of the resulting binary
+ is to set the OUTPUT_NAME target property.
+
+ * CMakeLists.txt:
+ * shell/CMakeLists.txt:
+
+2013-05-17 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Remove invalid include paths
+ https://bugs.webkit.org/show_bug.cgi?id=116213
+
+ Reviewed by Gyuyoung Kim.
+
+ Since "${JAVASCRIPTCORE_DIR}/wtf" does not exist, it is safe
+ to remove them from the list of include directories.
+
+ * PlatformEfl.cmake: Removed.
+ * PlatformGTK.cmake: Removed.
+
+2013-05-16 Patrick Gansterer <paroga@webkit.org>
+
+ Consolidate lists in JavaScriptCore CMake files
+ https://bugs.webkit.org/show_bug.cgi?id=115992
+
+ Reviewed by Gyuyoung Kim.
+
+ Move common files into the CMakeLists.txt to avoid duplicating the list of files.
+ Also rebase the recently added GTK files to match the other CMake ports, since
+ the submitted patch was based on an older version of the source tree.
+
+ * CMakeLists.txt:
+ * PlatformEfl.cmake:
+ * PlatformGTK.cmake:
+ * shell/CMakeLists.txt:
+ * shell/PlatformEfl.cmake:
+ * shell/PlatformGTK.cmake:
+
+2013-05-16 Geoffrey Garen <ggaren@apple.com>
+
+ JSValue shouldn't protect/unprotect its context
+ https://bugs.webkit.org/show_bug.cgi?id=116234
+
+ Reviewed by Mark Hahnenberg.
+
+ Our retain on _context is sufficient.
+
+ * API/JSValue.mm:
+ (-[JSValue initWithValue:inContext:]):
+ (-[JSValue dealloc]):
+
+2013-05-15 Ryosuke Niwa <rniwa@webkit.org>
+
+ Another Windows build fix attempt after r150160.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
+
+2013-05-15 Oliver Hunt <oliver@apple.com>
+
+ RefCountedArray needs to use vector initialisers for its backing store
+ https://bugs.webkit.org/show_bug.cgi?id=116194
+
+ Reviewed by Gavin Barraclough.
+
+ Use an out of line function to clear the exception stack to avoid
+ needing to include otherwise unnecessary headers all over the place.
+
+ Everything else is just being updated to use that.
+
+ * bytecompiler/BytecodeGenerator.cpp:
+ * interpreter/CallFrame.h:
+ (JSC::ExecState::clearSupplementaryExceptionInfo):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::addStackTraceIfNecessary):
+ (JSC::Interpreter::throwException):
+ * runtime/JSGlobalObject.cpp:
+ (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope):
+ * runtime/VM.cpp:
+ (JSC):
+ (JSC::VM::clearExceptionStack):
+ * runtime/VM.h:
+ (VM):
+ (JSC::VM::exceptionStack):
+
+2013-05-15 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed, rolling out r150051.
+ http://trac.webkit.org/changeset/150051
+ https://bugs.webkit.org/show_bug.cgi?id=116186
+
+ Broke all JSC tests on Mac and the author is unresponsive
+ (Requested by rniwa on #webkit).
+
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+
+2013-05-15 Julien Brianceau <jbrianceau@nds.com>
+
+ Remove savedTimeoutReg from JITStackFrame for sh4 base JIT.
+ https://bugs.webkit.org/show_bug.cgi?id=116143
+
+ Reviewed by Geoffrey Garen.
+
+ Since r148119, timeoutCheckRegister is removed from baseline JIT.
+ So we don't need to save r8 register in JITStackFrame anymore for sh4.
+
+ * jit/JITStubs.cpp:
+ * jit/JITStubs.h:
+ (JITStackFrame):
+
+2013-05-15 Nico Weber <thakis@chromium.org>
+
+ WebKit doesn't support MSVS2003 any more, remove preprocessor checks for older versions.
+ https://bugs.webkit.org/show_bug.cgi?id=116157
+
+ Reviewed by Anders Carlsson.
+
+ Also remove a gcc3.2 workaround.
+
+ Merges parts of these two commits by the talented Nico Weber:
+ https://chromium.googlesource.com/chromium/blink/+/3677e2f47348daeff405a40b6f90fbdf0654c2f5
+ https://chromium.googlesource.com/chromium/blink/+/0fcd96c448dc30be1416dcc15713c53710c1a312
+
+ * os-win32/inttypes.h:
+
+2013-05-13 Alvaro Lopez Ortega <alvaro@alobbs.com>
+
+ Nightly build's jsc doesn't work without DYLD_FRAMEWORK...
+ https://bugs.webkit.org/show_bug.cgi?id=79065
+
+ Reviewed by Darin Adler.
+
+ Fixes the build process so the depencencies of the jsc binary are
+ modified before its copied to its target directory. In this way
+ jsc should always use relative reference to the JavaScriptCore
+ libraries.
+
+ * JavaScriptCore.xcodeproj/project.pbxproj: Fixes the commands in
+ the "Copy Into Framework" target.
+
+2013-05-13 Mark Hahnenberg <mhahnenberg@apple.com>
+
+ Objective-C API: scanExternalObjectGraph should not create new JSVirtualMachine wrappers
+ https://bugs.webkit.org/show_bug.cgi?id=116074
+
+ If scanExternalObjectGraph creates a new JSVirtualMachine wrapper during collection, when the
+ scanExternalObjectGraph call finishes and the autorelease pool is drained we will dealloc the
+ JSVirtualMachine which will cause us to try to take the API lock for the corresponding VM.
+ If this happens on a GC thread other than the "main" thread, we will deadlock. The solution
+ is to just check the VM cache, and if there is no JSVirtualMachine wrapper, return early.
+
+ Reviewed by Darin Adler.
+
+ * API/JSVirtualMachine.mm:
+ (scanExternalObjectGraph):
+
+2013-05-13 Benjamin Poulain <benjamin@webkit.org>
+
+ Improve stringProtoFuncLastIndexOf for the prefix case
+ https://bugs.webkit.org/show_bug.cgi?id=115952
+
+ Reviewed by Geoffrey Garen.
+
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncLastIndexOf):
+ Use the optimized string search when possible.
+
+ On Joseph Pecoraro's tests, this gives a ~30% speed improvement.
+
+2013-05-13 Zalan Bujtas <zalan@apple.com>
+
+ WebProcess consuming very high CPU on linkedin.com
+ https://bugs.webkit.org/show_bug.cgi?id=115601
+
+ Reviewed by Andreas Kling.
+
+ Disable WEB_TIMING_MINIMAL.
+ Turn off window.performance and performance.now(). Some JS frameworks expect
+ additional Web Timing APIs, when performance.now() is available.
+
+ * Configurations/FeatureDefines.xcconfig:
+
+2013-05-12 Anders Carlsson <andersca@apple.com>
+
+ Stop including UnusedParam.h
+ https://bugs.webkit.org/show_bug.cgi?id=116003
+
+ Reviewed by Sam Weinig.
+
+ UnusedParam.h is empty now so there's no need to include it anymore.
+
+ * API/APICast.h:
+ * API/tests/JSNode.c:
+ * API/tests/JSNodeList.c:
+ * API/tests/minidom.c:
+ * API/tests/testapi.c:
+ * assembler/AbstractMacroAssembler.h:
+ * assembler/MacroAssemblerCodeRef.h:
+ * bytecode/CodeBlock.cpp:
+ * heap/HandleStack.h:
+ * interpreter/JSStackInlines.h:
+ * jit/CompactJITCodeMap.h:
+ * jit/ExecutableAllocator.h:
+ * parser/SourceProvider.h:
+ * runtime/DatePrototype.cpp:
+ * runtime/JSNotAnObject.cpp:
+ * runtime/JSSegmentedVariableObject.h:
+ * runtime/JSVariableObject.h:
+ * runtime/Options.cpp:
+ * runtime/PropertyOffset.h:
+
+2013-05-11 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] Add a basic cmake build for WTF and JavaScriptCore
+ https://bugs.webkit.org/show_bug.cgi?id=115967
+
+ Reviewed by Laszlo Gombos.
+
+ * PlatformGTK.cmake: Added.
+ * shell/PlatformGTK.cmake: Added.
+
+2013-05-10 Laszlo Gombos <l.gombos@samsung.com>
+
+ Remove USE(OS_RANDOMNESS)
+ https://bugs.webkit.org/show_bug.cgi?id=108095
+
+ Reviewed by Darin Adler.
+
+ Remove the USE(OS_RANDOMNESS) guard as it is turned on for all
+ ports.
+
+ * jit/JIT.cpp:
+ (JSC::JIT::JIT):
+
+2013-05-10 Mark Hahnenberg <mhahnenberg@apple.com>
+
+ Rename StructureCheckHoistingPhase to TypeCheckHoistingPhase
+ https://bugs.webkit.org/show_bug.cgi?id=115938
+
+ We're going to add some more types of check hoisting soon, so let's have the right name here.
+
+ Rubber stamped by Filip Pizlo.
+
+ * CMakeLists.txt:
+ * GNUmakefile.list.am:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * Target.pri:
+ * dfg/DFGDriver.cpp:
+ (JSC::DFG::compile):
+ * dfg/DFGStructureCheckHoistingPhase.cpp: Removed.
+ * dfg/DFGStructureCheckHoistingPhase.h: Removed.
+ * dfg/DFGTypeCheckHoistingPhase.cpp: Copied from Source/JavaScriptCore/dfg/DFGStructureCheckHoistingPhase.cpp.
+ (JSC::DFG::TypeCheckHoistingPhase::TypeCheckHoistingPhase):
+ (JSC::DFG::performTypeCheckHoisting):
+ * dfg/DFGTypeCheckHoistingPhase.h: Copied from Source/JavaScriptCore/dfg/DFGStructureCheckHoistingPhase.h.
+
+2013-05-09 Christophe Dumez <ch.dumez@sisa.samsung.com>
+
+ Unreviewed build fix after r149836.
+
+ It broke at least EFL and GTK builds. Move new static members initialization
+ outside the class. Those need to have a definition outside the class because
+ their address is used (e.g. CodeCacheMap::nonGlobalWorkingSetMaxEntries).
+
+ * runtime/CodeCache.cpp:
+ (JSC):
+ * runtime/CodeCache.h:
+ (CodeCacheMap):
+
+2013-05-08 Oliver Hunt <oliver@apple.com>
+
+ Code cache stores bogus var references for functions in eval code
+ https://bugs.webkit.org/show_bug.cgi?id=115747
+
+ Reviewed by Mark Hahnenberg.
+
+ Non-global eval now uses a per-CodeBlock cache, and only use it
+ when we're at the top of a function's scope. This means that we
+ will no longer cache the parsing of a single string across
+ multiple functions, and we won't cache when we're nested inside
+ constructs like |with| and |catch| where previously we would, which
+ is good because caching in those cases is unsound.
+
+ * bytecode/EvalCodeCache.h:
+ (JSC):
+ (JSC::EvalCodeCache::getSlow):
+ (JSC::EvalCodeCache::get):
+ * bytecode/UnlinkedCodeBlock.h:
+ (JSC::UnlinkedCodeBlock::codeCacheForEval):
+ (UnlinkedCodeBlock):
+ (RareData):
+ * debugger/Debugger.cpp:
+ (JSC::evaluateInGlobalCallFrame):
+ * debugger/DebuggerCallFrame.cpp:
+ (JSC::DebuggerCallFrame::evaluate):
+ * interpreter/Interpreter.cpp:
+ (JSC::eval):
+ * runtime/CodeCache.cpp:
+ (JSC::CodeCache::CodeCache):
+ (JSC::CodeCache::generateBytecode):
+ (JSC):
+ (JSC::CodeCache::getCodeBlock):
+ * runtime/CodeCache.h:
+ (JSC::CodeCacheMap::CodeCacheMap):
+ (CodeCacheMap):
+ (JSC::CodeCacheMap::canPruneQuickly):
+ (JSC::CodeCacheMap::prune):
+ (JSC::CodeCache::create):
+ (CodeCache):
+ * runtime/Executable.cpp:
+ (JSC::EvalExecutable::EvalExecutable):
+ (JSC::EvalExecutable::compileInternal):
+ * runtime/Executable.h:
+ (JSC::EvalExecutable::create):
+ (EvalExecutable):
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::createEvalCodeBlock):
+ * runtime/JSGlobalObject.h:
+ (JSGlobalObject):
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::globalFuncEval):
+ * runtime/VM.cpp:
+ (JSC::VM::VM):
+ * runtime/VM.h:
+ (VM):
+
+2013-05-08 Mark Hahnenberg <mhahnenberg@apple.com>
+
+ DFGArrayMode::fromObserved is too liberal when it sees different Array and NonArray shapes
+ https://bugs.webkit.org/show_bug.cgi?id=115805
+
+ Reviewed by Geoffrey Garen.
+
+ It checks the observed ArrayModes to see if we have seen any ArrayWith* first. If so, it assumes it's
+ an Array::Array, even if we've also observed any NonArrayWith* in the ArrayProfile. This leads to the
+ code generated by jumpSlowForUnwantedArrayMode to check the indexing type against (shape | IsArray)
+ instead of just shape, which can cause us to exit a lot in the case that we saw a NonArray.
+
+ To fix this we need to add a case that checks for both ArrayWith* and NonArrayWith* cases first, which
+ should then use Array::PossiblyArray, then do the checks we were already doing.
+
+ * bytecode/ArrayProfile.h:
+ (JSC::hasSeenArray):
+ (JSC::hasSeenNonArray):
+ * dfg/DFGArrayMode.cpp:
+ (JSC::DFG::ArrayMode::fromObserved):
+
+2013-05-09 Joe Mason <jmason@blackberry.com>
+
+ [BlackBerry] Set up logging buffer on start of jsc executable
+ https://bugs.webkit.org/show_bug.cgi?id=114688
+
+ Reviewed by Rob Buis.
+
+ Internal PR: 322715
+ Internally Reviewed By: Jeff Rogers
+
+ * jsc.cpp:
+ (main): call BB::Platform::setupApplicationLogging
+
+2013-05-08 Michael Saboff <msaboff@apple.com>
+
+ JSC: There should be a disassembler for ARM Thumb 2
+ https://bugs.webkit.org/show_bug.cgi?id=115827
+
+ Reviewed by Filip Pizlo.
+
+ Added a new disassembler for ARMv7 Thumb2 instructions for use by the JSC debugging
+ and profiling code. The opcode coverage is currently not complete. It covers all
+ of the integer instructions JSC currently emits, but only a limited number of
+ floating point opcodes. Currently that is just the 64 bit vmov and vmsr instructions.
+
+ The disassembler is structured as a base opcode class ARMv7DOpcode with sub-classes
+ for each instruction group. There is a public format method that does the bulk of
+ the disassembly work. There are two broad sub-classes, ARMv7D16BitOpcode and
+ ARMv7D32BitOpcode, for the 16 bit and 32 bit opcodes. There are sub-classes under
+ those two classes for individual and related groups of opcodes. Instructions are
+ "dispatched" to the right subclass via two arrays of linked lists in the inner classes
+ OpcodeGroup. There is one such inner class for each ARMv7D16BitOpcode and ARMv7D32BitOpcode.
+ Each OpcodeGroup has a mask and a pattern that it applies to the instruction to determine
+ that it matches a particular group. OpcodeGroup uses a static method to reinterpret_cast
+ the Opcode object to the right base class for the instruction group for formatting.
+ The cast eliminates the need of allocating an object for each decoded instruction.
+ Unknown instructions are formatted as ".word 1234" or ".long 12345678" depending whether
+ the instruction is 16 or 32 bit.
+
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * disassembler/ARMv7: Added.
+ * disassembler/ARMv7/ARMv7DOpcode.cpp: Added.
+ (ARMv7Disassembler):
+ (OpcodeGroupInitializer):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::init):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::startITBlock):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::saveITConditionAt):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::fetchOpcode):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::disassemble):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::bufferPrintf):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::appendInstructionName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::appendRegisterName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::appendRegisterList):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::appendFPRegisterName):
+ (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::init):
+ (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::doDisassemble):
+ (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::defaultFormat):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchT2::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT1::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscBreakpointT1::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::format):
+ (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::init):
+ (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::doDisassemble):
+ (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::defaultFormat):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::appendModifiedImmediate):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::appendImmShift):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::appendFPRegister):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegShift::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegParallel::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegMisc::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadRegister::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadUnsignedImmediate::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate12::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleRegister::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::format):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::format):
+ * disassembler/ARMv7/ARMv7DOpcode.h: Added.
+ (ARMv7Disassembler):
+ (ARMv7DOpcode):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::ARMv7DOpcode):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::is32BitInstruction):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::isFPInstruction):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::conditionName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::shiftName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::inITBlock):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::startingITBlock):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::endITBlock):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::appendInstructionNameNoITBlock):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::appendSeparator):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::appendCharacter):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::appendString):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::appendShiftType):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::appendSignedImmediate):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::appendUnsignedImmediate):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::appendPCRelativeOffset):
+ (JSC::ARMv7Disassembler::ARMv7DOpcode::appendShiftAmount):
+ (ARMv7D16BitOpcode):
+ (OpcodeGroup):
+ (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::OpcodeGroup):
+ (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::setNext):
+ (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::next):
+ (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::matches):
+ (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::format):
+ (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::rm):
+ (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::rd):
+ (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::opcodeGroupNumber):
+ (ARMv7DOpcodeAddRegisterT2):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::rdn):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::rm):
+ (ARMv7DOpcodeAddSPPlusImmediate):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::rd):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::immediate8):
+ (ARMv7DOpcodeAddSubtract):
+ (ARMv7DOpcodeAddSubtractT1):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::op):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::rm):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::rn):
+ (ARMv7DOpcodeAddSubtractImmediate3):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::op):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::immediate3):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::rn):
+ (ARMv7DOpcodeAddSubtractImmediate8):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::op):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::rdn):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::immediate8):
+ (ARMv7DOpcodeBranchConditionalT1):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::condition):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::offset):
+ (ARMv7DOpcodeBranchExchangeT1):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::rm):
+ (ARMv7DOpcodeBranchT2):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchT2::immediate11):
+ (ARMv7DOpcodeCompareImmediateT1):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::rn):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::immediate8):
+ (ARMv7DOpcodeCompareRegisterT1):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT1::rn):
+ (ARMv7DOpcodeCompareRegisterT2):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::rn):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::rm):
+ (ARMv7DOpcodeDataProcessingRegisterT1):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::op):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::rm):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::rdn):
+ (ARMv7DOpcodeGeneratePCRelativeAddress):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::rd):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::immediate8):
+ (ARMv7DOpcodeLoadFromLiteralPool):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::rt):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::immediate8):
+ (ARMv7DOpcodeLoadStoreRegisterImmediate):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::op):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::immediate5):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::rn):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::rt):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::scale):
+ (ARMv7DOpcodeLoadStoreRegisterImmediateWordAndByte):
+ (ARMv7DOpcodeLoadStoreRegisterImmediateHalfWord):
+ (ARMv7DOpcodeLoadStoreRegisterOffsetT1):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::opB):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rm):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rn):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rt):
+ (ARMv7DOpcodeLoadStoreRegisterSPRelative):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::op):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::rt):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::immediate8):
+ (ARMv7DOpcodeLogicalImmediateT1):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::op):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::immediate5):
+ (ARMv7DOpcodeMiscAddSubSP):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::op):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::immediate7):
+ (ARMv7DOpcodeMiscByteHalfwordOps):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::op):
+ (ARMv7DOpcodeMiscBreakpointT1):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscBreakpointT1::immediate8):
+ (ARMv7DOpcodeMiscCompareAndBranch):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::op):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::immediate6):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::rn):
+ (ARMv7DOpcodeMiscHint16):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::opA):
+ (ARMv7DOpcodeMiscIfThenT1):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::firstCondition):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::mask):
+ (ARMv7DOpcodeMiscPushPop):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::op):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::registerMask):
+ (ARMv7DOpcodeMoveImmediateT1):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::rd):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::immediate8):
+ (ARMv7DOpcodeMoveRegisterT1):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::rd):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::rm):
+ (ARMv7D32BitOpcode):
+ (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::OpcodeGroup):
+ (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::setNext):
+ (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::next):
+ (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::matches):
+ (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::format):
+ (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rd):
+ (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rm):
+ (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rn):
+ (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rt):
+ (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::opcodeGroupNumber):
+ (ARMv7DOpcodeBranchRelative):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::sBit):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::j1):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::j2):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::immediate11):
+ (ARMv7DOpcodeConditionalBranchT3):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::offset):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::condition):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::immediate6):
+ (ARMv7DOpcodeBranchOrBranchLink):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::offset):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::immediate10):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::isBL):
+ (ARMv7DOpcodeDataProcessingLogicalAndRithmetic):
+ (ARMv7DOpcodeDataProcessingModifiedImmediate):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::op):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::sBit):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::immediate12):
+ (ARMv7DOpcodeDataProcessingShiftedReg):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::sBit):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::op):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::immediate5):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::type):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::tbBit):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::tBit):
+ (ARMv7DOpcodeDataProcessingReg):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingReg::op1):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingReg::op2):
+ (ARMv7DOpcodeDataProcessingRegShift):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegShift::opName):
+ (ARMv7DOpcodeDataProcessingRegExtend):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::opExtendName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::opExtendAndAddName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::rotate):
+ (ARMv7DOpcodeDataProcessingRegParallel):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegParallel::opName):
+ (ARMv7DOpcodeDataProcessingRegMisc):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegMisc::opName):
+ (ARMv7DOpcodeHint32):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::isDebugHint):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::debugOption):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::op):
+ (ARMv7DOpcodeFPTransfer):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opH):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opL):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::rt):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opC):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opB):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::vd):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::vn):
+ (ARMv7DOpcodeDataLoad):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataLoad::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataLoad::op):
+ (ARMv7DOpcodeLoadRegister):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadRegister::immediate2):
+ (ARMv7DOpcodeLoadSignedImmediate):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::pBit):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::uBit):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::wBit):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::immediate8):
+ (ARMv7DOpcodeLoadUnsignedImmediate):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadUnsignedImmediate::immediate12):
+ (ARMv7DOpcodeLongMultipleDivide):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlalOpName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlaldOpName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlsldOpName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::rdLo):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::rdHi):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::op1):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::op2):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::nBit):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::mBit):
+ (ARMv7DOpcodeDataPushPopSingle):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::op):
+ (ARMv7DOpcodeDataStoreSingle):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataStoreSingle::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeDataStoreSingle::op):
+ (ARMv7DOpcodeStoreSingleImmediate12):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate12::immediate12):
+ (ARMv7DOpcodeStoreSingleImmediate8):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::pBit):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::uBit):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::wBit):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::immediate8):
+ (ARMv7DOpcodeStoreSingleRegister):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleRegister::immediate2):
+ (ARMv7DOpcodeUnmodifiedImmediate):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::opName):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::op):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::shBit):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::bitNumOrSatImmediate):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate5):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate12):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate16):
+ (ARMv7DOpcodeVMOVDoublePrecision):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::op):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::rt2):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::rt):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::vm):
+ (ARMv7DOpcodeVMOVSinglePrecision):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::op):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::rt2):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::rt):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::vm):
+ (ARMv7DOpcodeVMSR):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::opL):
+ (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::rt):
+ * disassembler/ARMv7Disassembler.cpp: Added.
+ (JSC::tryToDisassemble):
+
+2013-05-07 Julien Brianceau <jbrianceau@nds.com>
+
+ Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT.
+ https://bugs.webkit.org/show_bug.cgi?id=115722
+
+ Reviewed by Oliver Hunt.
+
+ * assembler/MacroAssemblerSH4.h:
+ (JSC::MacroAssemblerSH4::load8PostInc):
+ (MacroAssemblerSH4):
+ (JSC::MacroAssemblerSH4::load16Unaligned):
+ (JSC::MacroAssemblerSH4::load16PostInc):
+ (JSC::MacroAssemblerSH4::storeDouble):
+ (JSC::MacroAssemblerSH4::load32WithUnalignedHalfWords):
+ * assembler/SH4Assembler.h:
+ (JSC::SH4Assembler::movwMemRegIn):
+ (SH4Assembler):
+ (JSC::SH4Assembler::movbMemRegIn):
+ (JSC::SH4Assembler::printInstr):
+
+2013-05-07 Anders Carlsson <andersca@apple.com>
+
+ Remove AlwaysInline.h from WTF
+ https://bugs.webkit.org/show_bug.cgi?id=115727
+
+ Reviewed by Brent Fulgham.
+
+ The macro that used to be in AlwaysInline.h is now in Compiler.h so there's no reason
+ to keep AlwaysInline.h around anymore.
+
+ * jit/JSInterfaceJIT.h:
+ * parser/Lexer.h:
+ * runtime/JSCJSValue.h:
+ * runtime/SymbolTable.h:
+
+2013-05-07 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
+
+ HashTraits<RefPtr<P> >::PeekType should be raw pointer for better performance
+ https://bugs.webkit.org/show_bug.cgi?id=115646
+
+ Reviewed by Darin Adler.
+
+ * bytecompiler/StaticPropertyAnalyzer.h:
+ (JSC::StaticPropertyAnalyzer::putById):
+ Updated accordingly to new HashMap<.., RefPtr>::get() semantics.
+
+2013-05-06 Julien Brianceau <jbrianceau@nds.com>
+
+ Misc bugfix and cleaning in sh4 base JIT.
+ https://bugs.webkit.org/show_bug.cgi?id=115627
+
+ Reviewed by Oliver Hunt.
+
+ Get rid of loadX(RegisterID r0, RegisterID src, RegisterID dest) functions.
+ Remove misplaced extuw() implementation from MacroAssemblerSH4.
+ Add movbRegMemr0 and movwRegMemr0 functions in SH4Assembler.
+
+ * assembler/MacroAssemblerSH4.h:
+ (JSC::MacroAssemblerSH4::add32): Skip operation when first operand is a zero immediate.
+ (JSC::MacroAssemblerSH4::sub32): Skip operation when first operand is a zero immediate.
+ (JSC::MacroAssemblerSH4::load32): Fix wrong usage of r0 register.
+ (JSC::MacroAssemblerSH4::load8Signed): Handle "base == r0" case.
+ (MacroAssemblerSH4):
+ (JSC::MacroAssemblerSH4::load16): Handle "base == r0" case.
+ (JSC::MacroAssemblerSH4::load16Unaligned): Use extuw() implementation from SH4Assembler.
+ (JSC::MacroAssemblerSH4::load16Signed): Cosmetic change.
+ (JSC::MacroAssemblerSH4::store8): Fix unhandled BaseIndex offset and handle (base == r0) case.
+ (JSC::MacroAssemblerSH4::store16): Fix unhandled BaseIndex offset and handle (base == r0) case.
+ (JSC::MacroAssemblerSH4::store32):
+ * assembler/SH4Assembler.h:
+ (JSC::SH4Assembler::movwRegMemr0):
+ (SH4Assembler):
+ (JSC::SH4Assembler::movbRegMemr0):
+ (JSC::SH4Assembler::placeConstantPoolBarrier): Cosmetic change.
+ (JSC::SH4Assembler::maxJumpReplacementSize):
+ (JSC::SH4Assembler::replaceWithJump): Correct branch range and save an opcode.
+ (JSC::SH4Assembler::printInstr):
+
+2013-05-06 Anders Carlsson <andersca@apple.com>
+
+ Stop using WTF::deleteAllValues in JavaScriptCore
+ https://bugs.webkit.org/show_bug.cgi?id=115670
+
+ Reviewed by Oliver Hunt.
+
+ Change the Vectors used to Vectors of OwnPtrs instead.
+
+ * heap/DFGCodeBlocks.cpp:
+ (JSC::DFGCodeBlocks::~DFGCodeBlocks):
+ (JSC::DFGCodeBlocks::deleteUnmarkedJettisonedCodeBlocks):
+
+2013-05-06 Andras Becsi <andras.becsi@digia.com>
+
+ Build with GCC 4.8 fails because of -Wmaybe-uninitialized
+ https://bugs.webkit.org/show_bug.cgi?id=115648
+
+ Reviewed by Michael Saboff.
+
+ Initialize values in Options::setOption since from
+ there we end up calling OptionRange::init with
+ uninitialized members.
+
+ * runtime/Options.cpp:
+
+2013-05-06 Gabor Rapcsanyi <rgabor@webkit.org>
+
+ JSC ARM traditional failing on Octane NavierStokes test
+ https://bugs.webkit.org/show_bug.cgi?id=115626
+
+ Reviewed by Zoltan Herczeg.
+
+ Change the ARM traditional assembler to use double precision on value
+ conversions.
+
+ * assembler/ARMAssembler.h:
+
+2013-05-03 Michael Saboff <msaboff@apple.com>
+
+ There should be a runtime option to constrain what functions get DFG compiled
+ https://bugs.webkit.org/show_bug.cgi?id=115576
+
+ Reviewed by Mark Hahnenberg.
+
+ Added OptionRange to Options to allow checking that something is within an option
+ or not. The new OptionClass supports range strings in the form of [!]<low>[:<high>].
+ If only one value is given, then it will be used for both low and high. A leading
+ '!' inverts the check. If no range is given, then checking for a value within a range
+ will always return true. Added the option "bytecodeRangeToDFGCompile" that takes an
+ OptionRange string to select the bytecode range of code blocks to DFG compile.
+
+ * dfg/DFGDriver.cpp:
+ (JSC::DFG::compile): Added new check for bytecode count within bytecodeRangeToDFGCompile
+ range.
+ * runtime/Options.cpp:
+ (JSC::parse): Added overloaded parse() for OptionRange.
+ (JSC::OptionRange::init): Parse range string and then initialize the range.
+ (JSC::OptionRange::isInRange): Function used by consumer to check if a value is within
+ the specified range.
+ (JSC::Options::dumpOption): Added code to dump OptionRange options.
+ * runtime/Options.h:
+ (OptionRange): New class.
+ (JSC::OptionRange::operator= ): This is really used as a default ctor for use within
+ the Option static array initialization.
+ (JSC::OptionRange::rangeString): This is used for debug. It assumes that the char*
+ passed into OptionRange::init is valid when this function is called.
+
+2013-05-02 Oliver Hunt <oliver@apple.com>
+
+ Fix potential bug in lookup logic
+ https://bugs.webkit.org/show_bug.cgi?id=115522
+
+ Reviewed by Mark Hahnenberg.
+
+ Though not a problem in practise, it is technically possible
+ to inject an un-proxied global object into the scope chain
+ via the C API. This change makes sure that the scope walk
+ in BytecodeGenerator actually limits itself to scopes that
+ are statically bindable.
+
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::resolve):
+ * runtime/JSObject.h:
+ (JSObject):
+ (JSC):
+ (JSC::JSObject::isStaticScopeObject):
+
+2013-05-01 Roger Fong <roger_fong@apple.com>
+
+ Set Path in makefile for AppleWin.
+
+ * JavaScriptCore.vcxproj/JavaScriptCore.make:
+
+2013-05-01 Benjamin Poulain <benjamin@webkit.org>
+
+ Remove the remaining wscript
+ https://bugs.webkit.org/show_bug.cgi?id=115459
+
+ Reviewed by Andreas Kling.
+
+ * wscript: Removed.
+
+2013-04-30 Mark Lam <mark.lam@apple.com>
+
+ JSContextGroupSetExecutionTimeLimit() should not pass a callback to the
+ VM watchdog if its client did not pass one in.
+ https://bugs.webkit.org/show_bug.cgi?id=115461.
+
+ Reviewed by Geoffrey Garen.
+
+ * API/JSContextRef.cpp:
+ (internalScriptTimeoutCallback):
+ (JSContextGroupSetExecutionTimeLimit):
+ * API/tests/testapi.c:
+ (main):
+ - Added test case when the time limit callback is 0.
+ - Also updated a check to verify that a TerminatedExecutionException is
+ thrown when the time out is cancelled.
+ - Also fixed some cosmetic typos.
+
+2013-04-30 Geoffrey Garen <ggaren@apple.com>
+
+ Removed op_ensure_property_exists
+ https://bugs.webkit.org/show_bug.cgi?id=115460
+
+ Reviewed by Mark Hahnenberg.
+
+ It was unused, and whatever it was once used for was not optimized.
+
+ * JavaScriptCore.order:
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::dumpBytecode):
+ * bytecode/Opcode.h:
+ (JSC::padOpcodeName):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ * jit/JIT.h:
+ * jit/JITOpcodes.cpp:
+ * jit/JITOpcodes32_64.cpp:
+ * jit/JITStubs.cpp:
+ * jit/JITStubs.h:
+ * llint/LLIntSlowPaths.cpp:
+ * llint/LLIntSlowPaths.h:
+ * llint/LowLevelInterpreter.asm:
+
+2013-04-30 Oliver Hunt <oliver@apple.com>
+
+ JSC Stack walking logic craches in the face of inlined functions triggering VM re-entry
+ https://bugs.webkit.org/show_bug.cgi?id=115449
+
+ Reviewed by Geoffrey Garen.
+
+ Rename callframeishost to something that makes sense, and fix
+ getCallerInfo to correctly handle inline functions calling into
+ the VM.
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::codeOriginForReturn):
+ Make this more robust in the face of incorrect stack walking
+ * interpreter/CallFrame.cpp:
+ (JSC::CallFrame::trueCallerFrame):
+ Everyone has to perform a codeblock() check before calling this
+ so we might as well just do it here.
+ * interpreter/Interpreter.cpp:
+ (JSC::getCallerInfo):
+
+2013-04-30 Julien Brianceau <jbrianceau@nds.com>
+
+ Bug fixing in sh4 base JIT and LLINT.
+ https://bugs.webkit.org/show_bug.cgi?id=115420
+
+ Reviewed by Oliver Hunt.
+
+ * assembler/MacroAssemblerSH4.h:
+ (JSC::MacroAssemblerSH4::lshift32):
+ (JSC::MacroAssemblerSH4::rshift32):
+ (JSC::MacroAssemblerSH4::branchMul32):
+ (JSC::MacroAssemblerSH4::urshift32):
+ (JSC::MacroAssemblerSH4::replaceWithJump):
+ (JSC::MacroAssemblerSH4::maxJumpReplacementSize):
+ * assembler/SH4Assembler.h:
+ (JSC::SH4Assembler::shldRegReg):
+ (JSC::SH4Assembler::shadRegReg):
+ (JSC::SH4Assembler::shalImm8r):
+ (SH4Assembler):
+ (JSC::SH4Assembler::sharImm8r):
+ (JSC::SH4Assembler::maxJumpReplacementSize):
+ (JSC::SH4Assembler::replaceWithJump):
+ * offlineasm/sh4.rb:
+
+2013-04-30 Geoffrey Garen <ggaren@apple.com>
+
+ Objective-C JavaScriptCore API should publicly support bridging to C
+ https://bugs.webkit.org/show_bug.cgi?id=115447
+
+ Reviewed by Mark Hahnenberg.
+
+ For consistency, I renamed
+
+ +[JSValue valueWithValue:] => +[JSValue valueWithJSValueRef]
+ +[JSContext contextWithGlobalContextRef] => +[JSContext contextWithJSGlobalContextRef]
+ -[JSContext globalContext] => -[JSContext JSGlobalContextRef]
+
+ I searched svn to verify that these functions don't have clients yet,
+ so we won't break anything.
+
+ I also exported as public API
+
+ +[JSValue valueWithJSValueRef:]
+ +[JSContext contextWithJSGlobalContextRef:]
+
+ It's hard to integrate with the C API without these.
+
+2013-04-30 Commit Queue <rniwa@webkit.org>
+
+ Unreviewed, rolling out r149349 and r149354.
+ http://trac.webkit.org/changeset/149349
+ http://trac.webkit.org/changeset/149354
+ https://bugs.webkit.org/show_bug.cgi?id=115444
+
+ The Thumb version of compileSoftModulo make invalid use of
+ registers (Requested by benjaminp on #webkit).
+
+ * CMakeLists.txt:
+ * GNUmakefile.list.am:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * assembler/ARMv7Assembler.h:
+ (ARMv7Assembler):
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::isARMv7s):
+ (JSC):
+ * assembler/MacroAssemblerARMv7.cpp: Removed.
+ * assembler/MacroAssemblerARMv7.h:
+ (MacroAssemblerARMv7):
+ * dfg/DFGFixupPhase.cpp:
+ (JSC::DFG::FixupPhase::fixupNode):
+ * dfg/DFGOperations.cpp:
+ * dfg/DFGOperations.h:
+ * dfg/DFGSpeculativeJIT.cpp:
+ (JSC::DFG::SpeculativeJIT::compileSoftModulo):
+ (DFG):
+ (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForARMv7s):
+ * dfg/DFGSpeculativeJIT.h:
+ (JSC::DFG::SpeculativeJIT::callOperation):
+ (SpeculativeJIT):
+ * dfg/DFGSpeculativeJIT32_64.cpp:
+ (JSC::DFG::SpeculativeJIT::compile):
+
+2013-04-30 Zalan Bujtas <zalan@apple.com>
+
+ Animations fail to start on http://www.google.com/insidesearch/howsearchworks/thestory/
+ https://bugs.webkit.org/show_bug.cgi?id=111244
+
+ Reviewed by David Kilzer.
+
+ Enable performance.now() as a minimal subset of Web Timing API.
+ It returns DOMHighResTimeStamp, a monotonically increasing value representing the
+ number of milliseconds from the start of the navigation of the current document.
+ JS libraries use this API to check against the requestAnimationFrame() timestamp.
+
+ * Configurations/FeatureDefines.xcconfig:
+
+2013-04-30 Zoltan Arvai <zarvai@inf.u-szeged.hu>
+
+ Unreviewed. Speculative build fix on Qt Arm and Mips after r149349.
+
+ * dfg/DFGSpeculativeJIT.cpp:
+ (JSC::DFG::SpeculativeJIT::compileSoftModulo):
+
+2013-04-29 Cosmin Truta <ctruta@blackberry.com>
+
+ [ARM] Expand the use of integer division
+ https://bugs.webkit.org/show_bug.cgi?id=115138
+
+ Reviewed by Benjamin Poulain.
+
+ If availability of hardware integer division isn't known at compile
+ time, check the CPU flags and decide at runtime whether to fall back
+ to software. Currently, this OS-specific check is implemented on QNX.
+
+ Moreover, use operator % instead of fmod() in the calculation of the
+ software modulo. Even when it's software-emulated, operator % is faster
+ than fmod(): on ARM v7 QNX, without hardware division, we noticed
+ >3% speedup on SunSpider.
+
+ * CMakeLists.txt:
+ * GNUmakefile.list.am:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * assembler/ARMv7Assembler.h:
+ (JSC::ARMv7Assembler::sdiv): Did not compile conditionally.
+ (JSC::ARMv7Assembler::udiv): Ditto.
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::isARMv7s): Removed.
+ * assembler/MacroAssemblerARMv7.cpp: Added.
+ (JSC::isIntegerDivSupported): Added.
+ * assembler/MacroAssemblerARMv7.h:
+ (JSC::MacroAssemblerARMv7::supportsIntegerDiv): Added.
+ * dfg/DFGFixupPhase.cpp:
+ (JSC::DFG::FixupPhase::fixupNode): Checked MacroAssembler::supportsIntegerDiv() in ArithDiv case.
+ * dfg/DFGOperations.cpp:
+ (JSC::DFG::operationModOnInts): Added.
+ * dfg/DFGOperations.h:
+ (JSC::DFG::Z_DFGOperation_ZZ): Added.
+ * dfg/DFGSpeculativeJIT.cpp:
+ (JSC::DFG::SpeculativeJIT::compileSoftModulo): Separated the X86-specific and ARM-specific codegen
+ from the common implementation; used operationModOnInts on ARM.
+ (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForARM): Renamed from compileIntegerArithDivForARMv7.
+ (JSC::DFG::SpeculativeJIT::compileArithMod): Allowed run-time detection of integer div on ARM.
+ * dfg/DFGSpeculativeJIT.h:
+ (JSC::DFG::SpeculativeJIT::callOperation): Added overloads with Z_DFGOperation_ZZ arguments.
+ * dfg/DFGSpeculativeJIT32_64.cpp:
+ (JSC::DFG::SpeculativeJIT::compile): Used compileIntegerArithDivForARM.
+
+2013-04-29 Benjamin Poulain <benjamin@webkit.org>
+
+ Unify the data access of StringImpl members from JavaScriptCore
+ https://bugs.webkit.org/show_bug.cgi?id=115320
+
+ Reviewed by Andreas Kling.
+
+ DFG accesses the member infos by directly calling the methods on StringImpl,
+ while the baseline JIT was using helper methods on ThunkHelpers.
+
+ Cut the middle man, and use StringImpl directly everywhere.
+
+ * jit/JITInlines.h:
+ (JSC::JIT::emitLoadCharacterString):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::stringGetByValStubGenerator):
+ * jit/JITPropertyAccess32_64.cpp:
+ (JSC::JIT::stringGetByValStubGenerator):
+ * jit/JSInterfaceJIT.h:
+ * jit/ThunkGenerators.cpp:
+ (JSC::stringCharLoad):
+
+2013-04-29 Benjamin Poulain <bpoulain@apple.com>
+
+ Use push and pop for iOS math function thunks
+ https://bugs.webkit.org/show_bug.cgi?id=115215
+
+ Reviewed by Filip Pizlo.
+
+ The iOS ABI is a little different than regular ARM ABI regarding stack alignment.
+ The requirement is 4 bytes:
+ "The ARM environment uses a stack that—at the point of function calls—is 4-byte aligned,
+ grows downward, and contains local variables and a function’s parameters."
+
+ Subsequently, we can just use push and pop to preserve the link register.
+
+ * jit/ThunkGenerators.cpp:
+
+2013-04-29 Brent Fulgham <bfulgham@webkit.org>
+
+ [Windows, WinCairo] Get rid of last few pthread include/link references.
+ https://bugs.webkit.org/show_bug.cgi?id=115375
+
+ Reviewed by Tim Horton.
+
+ * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd:
+ * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
+ * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props:
+ * JavaScriptCore.vcxproj/jsc/jscCommon.props:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
+ * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
+
+2013-04-29 Roger Fong <roger_fong@apple.com>
+
+ Unreviewed. AppleWin VS2010 build fix.
+
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
+
+2013-04-26 Mark Hahnenberg <mhahnenberg@apple.com>
+
+ ~BlockAllocator should ASSERT that it has no more Regions left
+ https://bugs.webkit.org/show_bug.cgi?id=115287
+
+ Reviewed by Andreas Kling.
+
+ * heap/BlockAllocator.cpp:
+ (JSC::BlockAllocator::~BlockAllocator):
+ (JSC::BlockAllocator::allRegionSetsAreEmpty):
+ * heap/BlockAllocator.h:
+ (RegionSet):
+ (JSC::BlockAllocator::RegionSet::isEmpty):
+ (BlockAllocator):
+
+2013-04-29 Mark Hahnenberg <mhahnenberg@apple.com>
+
+ IndexingTypes should use hex
+ https://bugs.webkit.org/show_bug.cgi?id=115286
+
+ Decimal is kind of confusing/hard to read because they're used as bit masks. Hex seems more appropriate.
+
+ Reviewed by Geoffrey Garen.
+
+ * runtime/IndexingType.h:
+
+2013-04-29 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Fix make distcheck.
+
+ * GNUmakefile.list.am: Add missing headers files to compilation
+ and offlineasm/sh4.rb script.
+
+2013-04-28 Dean Jackson <dino@apple.com>
+
+ [Mac] Disable canvas backing store scaling (HIGH_DPI_CANVAS)
+ https://bugs.webkit.org/show_bug.cgi?id=115310
+
+ Reviewed by Simon Fraser.
+
+ Remove ENABLE_HIGH_DPI_CANVAS_macosx.
+
+ * Configurations/FeatureDefines.xcconfig:
+
+2013-04-27 Darin Adler <darin@apple.com>
+
+ Move from constructor and member function adoptCF/NS to free function adoptCF/NS.
+ https://bugs.webkit.org/show_bug.cgi?id=115307
+
+ Reviewed by Geoffrey Garen.
+
+ * heap/HeapTimer.cpp:
+ (JSC::HeapTimer::HeapTimer):
+ * runtime/VM.cpp:
+ (JSC::enableAssembler):
+ Use adoptCF free function.
+
+2013-04-27 Anders Carlsson <andersca@apple.com>
+
+ Try to fix the Windows build.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
+
+2013-04-25 Geoffrey Garen <ggaren@apple.com>
+
+ Cleaned up pre/post inc/dec in bytecode
+ https://bugs.webkit.org/show_bug.cgi?id=115222
+
+ Reviewed by Filip Pizlo.
+
+ A few related changes here:
+
+ (*) Removed post_inc and post_dec. The two-result form was awkward to
+ reason about. Being explicit about the intermediate mov and to_number
+ reduces DFG overhead, removes some fragile ASSERTs from the DFG, and
+ fixes a const bug. Plus, we get to blow away 262 lines of code.
+
+ (*) Renamed pre_inc and pre_dec to inc and dec, since there's only one
+ version now.
+
+ (*) Renamed to_jsnumber to to_number, to match the ECMA name.
+
+ (*) Tightened up the codegen and runtime support for to_number.
+
+
+ * JavaScriptCore.order: Order!
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::dumpBytecode):
+ * bytecode/Opcode.h:
+ (JSC::padOpcodeName):
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitInc):
+ (JSC::BytecodeGenerator::emitDec):
+ * bytecompiler/BytecodeGenerator.h:
+ (JSC::BytecodeGenerator::emitToNumber):
+ (BytecodeGenerator): Removed post_inc and post_dec.
+
+ * bytecompiler/NodesCodegen.cpp:
+ (JSC::emitPreIncOrDec): Updated for rename.
+
+ (JSC::emitPostIncOrDec): Issue an explicit mov and to_number when needed.
+ These are rare, and they boil away in the DFG.
+
+ (JSC::PostfixNode::emitResolve):
+ (JSC::PrefixNode::emitResolve): For const, use an explicit mov instead
+ of any special forms. This fixes a bug where we would do string
+ add/subtract instead of number.
+
+ * dfg/DFGByteCodeParser.cpp:
+ (JSC::DFG::ByteCodeParser::parseBlock):
+ * dfg/DFGCapabilities.h:
+ (JSC::DFG::canCompileOpcode):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileSlowCases):
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_inc):
+ (JSC::JIT::emitSlow_op_inc):
+ (JSC::JIT::emit_op_dec):
+ (JSC::JIT::emitSlow_op_dec):
+ * jit/JITArithmetic32_64.cpp:
+ (JSC::JIT::emit_op_inc):
+ (JSC::JIT::emitSlow_op_inc):
+ (JSC::JIT::emit_op_dec):
+ (JSC::JIT::emitSlow_op_dec): Removed post_inc/dec, and updated for renames.
+
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_to_number):
+ (JSC::JIT::emitSlow_op_to_number): Removed a test for number cells. There's
+ no such thing!
+
+ * jit/JITOpcodes32_64.cpp:
+ (JSC::JIT::emit_op_to_number): Use LowestTag to avoid making assumptions
+ about the lowest valued tag.
+
+ (JSC::JIT::emitSlow_op_to_number): Updated for renames.
+
+ * jit/JITStubs.cpp:
+ (JSC::DEFINE_STUB_FUNCTION):
+ * jit/JITStubs.h:
+ * llint/LLIntSlowPaths.cpp:
+ (JSC::LLInt::LLINT_SLOW_PATH_DECL):
+ * llint/LLIntSlowPaths.h:
+ * llint/LowLevelInterpreter32_64.asm:
+ * llint/LowLevelInterpreter64.asm:
+ * parser/NodeConstructors.h:
+ (JSC::UnaryPlusNode::UnaryPlusNode): Removed post_inc/dec, and updated for renames.
+
+ * runtime/Operations.cpp:
+ (JSC::jsIsObjectType): Removed a test for number cells. There's
+ no such thing!
+
+2013-04-27 Julien Brianceau <jbrianceau@nds.com>
+
+ REGRESSION(r149114): cache flush for SH4 arch may flush an extra page.
+ https://bugs.webkit.org/show_bug.cgi?id=115305
+
+ Reviewed by Andreas Kling.
+
+ * assembler/SH4Assembler.h:
+ (JSC::SH4Assembler::cacheFlush):
+
+2013-04-26 Geoffrey Garen <ggaren@apple.com>
+
+ Re-landing <http://trac.webkit.org/changeset/148999>
+
+ Filled out more cases of branch folding in bytecode when emitting
+ expressions into a branching context
+ https://bugs.webkit.org/show_bug.cgi?id=115057
+
+ Reviewed by Phil Pizlo.
+
+ We can't fold the number == 1 case to boolean because all non-zero numbers
+ down-cast to true, but only 1 is == to true.
+
+2013-04-26 Filip Pizlo <fpizlo@apple.com>
+
+ Correct indentation of SymbolTable.h
+
+ Rubber stamped by Mark Hahnenberg.
+
+ * runtime/SymbolTable.h:
+
+2013-04-26 Roger Fong <roger_fong@apple.com>
+
+ Make Apple Windows VS2010 build results into and get dependencies from __32 suffixed folders.
+ Make the DebugSuffix configuration use _debug dependencies.
+
+ * JavaScriptCore.vcxproj/JavaScriptCore.make:
+ * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
+ * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
+ * JavaScriptCore.vcxproj/JavaScriptCoreCF.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreDebug.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreDebugCFLite.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj:
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj.filters:
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorBuildCmd.cmd:
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorCommon.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorDebug.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPostBuild.cmd:
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPreBuild.cmd:
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorProduction.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorRelease.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.make:
+ * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj:
+ * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedCommon.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedDebug.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedProduction.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedRelease.props:
+ * JavaScriptCore.vcxproj/JavaScriptCorePostBuild.cmd:
+ * JavaScriptCore.vcxproj/JavaScriptCorePreLink.cmd:
+ * JavaScriptCore.vcxproj/JavaScriptCoreProduction.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreRelease.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreReleaseCFLite.props:
+ * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.make:
+ * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj:
+ * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/build-LLIntAssembly.sh:
+ * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.make:
+ * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.vcxproj:
+ * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/build-LLIntDesiredOffsets.sh:
+ * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj:
+ * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props:
+ * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.props:
+ * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.props:
+ * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.props:
+ * JavaScriptCore.vcxproj/build-generated-files.sh:
+ * JavaScriptCore.vcxproj/copy-files.cmd:
+ * JavaScriptCore.vcxproj/jsc/jsc.vcxproj:
+ * JavaScriptCore.vcxproj/jsc/jscCommon.props:
+ * JavaScriptCore.vcxproj/jsc/jscDebug.props:
+ * JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd:
+ * JavaScriptCore.vcxproj/jsc/jscPreLink.cmd:
+ * JavaScriptCore.vcxproj/jsc/jscProduction.props:
+ * JavaScriptCore.vcxproj/jsc/jscRelease.props:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExpDebug.props:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExpPreLink.cmd:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExpProduction.props:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExpRelease.props:
+ * JavaScriptCore.vcxproj/testapi/testapi.vcxproj:
+ * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
+ * JavaScriptCore.vcxproj/testapi/testapiCommonCFLite.props:
+ * JavaScriptCore.vcxproj/testapi/testapiDebug.props:
+ * JavaScriptCore.vcxproj/testapi/testapiDebugCFLite.props:
+ * JavaScriptCore.vcxproj/testapi/testapiPreLink.cmd:
+ * JavaScriptCore.vcxproj/testapi/testapiProduction.props:
+ * JavaScriptCore.vcxproj/testapi/testapiRelease.props:
+ * JavaScriptCore.vcxproj/testapi/testapiReleaseCFLite.props:
+
+2013-04-26 Roger Fong <roger_fong@apple.com>
+
+ Disable sub-pixel layout on mac.
+ https://bugs.webkit.org/show_bug.cgi?id=114999.
+
+ Reviewed by Simon Fraser.
+
+ * Configurations/FeatureDefines.xcconfig:
+
+2013-04-26 Oliver Hunt <oliver@apple.com>
+
+ Make stack tracing more robust
+ https://bugs.webkit.org/show_bug.cgi?id=115272
+
+ Reviewed by Geoffrey Garen.
+
+ CallFrame already handles stack walking confusion robustly,
+ so we should make sure that the actual walk handles that as well.
+
+ * interpreter/Interpreter.cpp:
+ (JSC::getCallerInfo):
+
+2013-04-26 Mark Hahnenberg <mhahnenberg@apple.com>
+
+ REGRESSION(r149165): It made many tests crash on 32 bit
+ https://bugs.webkit.org/show_bug.cgi?id=115227
+
+ Reviewed by Csaba Osztrogonác.
+
+ m_reservation is uninitialized when ENABLE(SUPER_REGION) is false.
+
+ * heap/SuperRegion.cpp:
+ (JSC::SuperRegion::~SuperRegion):
+
+2013-04-26 Julien Brianceau <jbrianceau@nds.com>
+
+ Fix SH4 build broken since r149159.
+ https://bugs.webkit.org/show_bug.cgi?id=115229
+
+ Add BranchTruncateType enum in SH4 port and handle it in branchTruncateDoubleToInt32.
+
+ Reviewed by Allan Sandfeld Jensen.
+
+ * assembler/MacroAssemblerSH4.h:
+ (JSC::MacroAssemblerSH4::branchTruncateDoubleToInt32):
+
+2013-04-25 Mark Hahnenberg <mhahnenberg@apple.com>
+
+ SuperRegion doesn't call deallocate() on its PageReservation
+ https://bugs.webkit.org/show_bug.cgi?id=115208
+
+ Reviewed by Geoffrey Garen.
+
+ It should. This doesn't cause us to leak physical memory, but it does cause us to leak virtual
+ address space (and probably mach ports), which is also bad :-( FixedVMPoolExecutableAllocator
+ also has this bug, but it doesn't matter much because there's only one instance of that class
+ throughout the entire lifetime of the process, whereas each VM has its own SuperRegion.
+
+ * heap/SuperRegion.cpp:
+ (JSC::SuperRegion::~SuperRegion):
+ * heap/SuperRegion.h:
+ (SuperRegion):
+ * jit/ExecutableAllocatorFixedVMPool.cpp:
+ (FixedVMPoolExecutableAllocator):
+ (JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator):
+
+2013-04-25 Filip Pizlo <fpizlo@apple.com>
+
+ DFG doesn't support to_jsnumber
+ https://bugs.webkit.org/show_bug.cgi?id=115129
+
+ Reviewed by Geoffrey Garen.
+
+ Based on Oliver's patch. Implements to_jsnumber as Identity(Number:@thingy), and then does
+ an optimization in Fixup to turn Identity(Number:) into Identity(Int32:) if the predictions
+ tell us to. Identity is later turned into Phantom.
+
+ Also fixed BackPropMask, which appeared to have NodeDoesNotExit included in it. That's
+ wrong; NodeDoesNotExit is not a backward propagation property.
+
+ Also fixed Identity to be marked as CanExit (i.e. not NodeDoesNotExit).
+
+ This more than doubles the FPS on ammo.
+
+ * dfg/DFGByteCodeParser.cpp:
+ (JSC::DFG::ByteCodeParser::parseBlock):
+ * dfg/DFGCapabilities.h:
+ (JSC::DFG::canCompileOpcode):
+ * dfg/DFGFixupPhase.cpp:
+ (JSC::DFG::FixupPhase::fixupNode):
+ (FixupPhase):
+ (JSC::DFG::FixupPhase::observeUseKindOnNode):
+ (JSC::DFG::FixupPhase::observeUseKindOnEdge):
+ * dfg/DFGNodeFlags.h:
+ (DFG):
+ * dfg/DFGNodeType.h:
+ (DFG):
+ * dfg/DFGPredictionPropagationPhase.cpp:
+ (JSC::DFG::PredictionPropagationPhase::propagate):
+
+2013-04-24 Oliver Hunt <oliver@apple.com>
+
+ Add support for Math.imul
+ https://bugs.webkit.org/show_bug.cgi?id=115143
+
+ Reviewed by Filip Pizlo.
+
+ Add support for Math.imul, a thunk generator for Math.imul,
+ and an intrinsic.
+
+ Fairly self explanatory set of changes, DFG intrinsics simply
+ leverages the existing ValueToInt32 nodes.
+
+ * create_hash_table:
+ * dfg/DFGAbstractState.cpp:
+ (JSC::DFG::AbstractState::executeEffects):
+ * dfg/DFGBackwardsPropagationPhase.cpp:
+ (JSC::DFG::BackwardsPropagationPhase::propagate):
+ * dfg/DFGByteCodeParser.cpp:
+ (JSC::DFG::ByteCodeParser::handleIntrinsic):
+ * dfg/DFGCSEPhase.cpp:
+ (JSC::DFG::CSEPhase::performNodeCSE):
+ * dfg/DFGFixupPhase.cpp:
+ (JSC::DFG::FixupPhase::fixupNode):
+ * dfg/DFGNodeType.h:
+ (DFG):
+ * dfg/DFGPredictionPropagationPhase.cpp:
+ (JSC::DFG::PredictionPropagationPhase::propagate):
+ * dfg/DFGSpeculativeJIT.cpp:
+ (JSC::DFG::SpeculativeJIT::compileArithIMul):
+ * dfg/DFGSpeculativeJIT.h:
+ (SpeculativeJIT):
+ * dfg/DFGSpeculativeJIT32_64.cpp:
+ (JSC::DFG::SpeculativeJIT::compile):
+ * dfg/DFGSpeculativeJIT64.cpp:
+ (JSC::DFG::SpeculativeJIT::compile):
+ * jit/ThunkGenerators.cpp:
+ (JSC::imulThunkGenerator):
+ (JSC):
+ * jit/ThunkGenerators.h:
+ (JSC):
+ * runtime/Intrinsic.h:
+ * runtime/MathObject.cpp:
+ (JSC):
+ (JSC::mathProtoFuncIMul):
+ * runtime/VM.cpp:
+ (JSC::thunkGeneratorForIntrinsic):
+
+2013-04-25 Filip Pizlo <fpizlo@apple.com>
+
+ Unreviewed, roll out http://trac.webkit.org/changeset/148999
+ It broke http://kripken.github.io/ammo.js/examples/new/ammo.html
+
+ * JavaScriptCore.order:
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitNewArray):
+ (JSC::BytecodeGenerator::emitThrowReferenceError):
+ (JSC::BytecodeGenerator::emitReadOnlyExceptionIfNeeded):
+ * bytecompiler/BytecodeGenerator.h:
+ (JSC::BytecodeGenerator::shouldEmitProfileHooks):
+ (BytecodeGenerator):
+ * bytecompiler/NodesCodegen.cpp:
+ (JSC):
+ (JSC::NullNode::emitBytecode):
+ (JSC::BooleanNode::emitBytecode):
+ (JSC::NumberNode::emitBytecode):
+ (JSC::StringNode::emitBytecode):
+ (JSC::IfNode::emitBytecode):
+ (JSC::IfElseNode::emitBytecode):
+ * parser/ASTBuilder.h:
+ (JSC::ASTBuilder::createIfStatement):
+ (ASTBuilder):
+ * parser/NodeConstructors.h:
+ (JSC):
+ (JSC::NullNode::NullNode):
+ (JSC::BooleanNode::BooleanNode):
+ (JSC::NumberNode::NumberNode):
+ (JSC::StringNode::StringNode):
+ (JSC::IfNode::IfNode):
+ (JSC::IfElseNode::IfElseNode):
+ * parser/Nodes.h:
+ (JSC::ExpressionNode::isPure):
+ (JSC::ExpressionNode::isSubtract):
+ (StatementNode):
+ (NullNode):
+ (JSC::NullNode::isNull):
+ (BooleanNode):
+ (JSC::BooleanNode::isPure):
+ (NumberNode):
+ (JSC::NumberNode::value):
+ (JSC::NumberNode::isPure):
+ (StringNode):
+ (JSC::StringNode::isPure):
+ (JSC::StringNode::isString):
+ (BinaryOpNode):
+ (IfNode):
+ (JSC):
+ (IfElseNode):
+ (ContinueNode):
+ (BreakNode):
+ * parser/Parser.cpp:
+ (JSC::::parseIfStatement):
+ * parser/ResultType.h:
+ (ResultType):
+ * runtime/JSCJSValueInlines.h:
+ (JSC::JSValue::pureToBoolean):
+ * runtime/JSCell.h:
+ (JSCell):
+ * runtime/JSCellInlines.h:
+ (JSC):
+
+2013-04-25 Filip Pizlo <fpizlo@apple.com>
+
+ PreciseJumpTargets should treat loop_hint as a jump target
+ https://bugs.webkit.org/show_bug.cgi?id=115209
+
+ Reviewed by Mark Hahnenberg.
+
+ I didn't add a test but I turned this into a release assertion. Running Octane is enough
+ to trigger it.
+
+ * bytecode/PreciseJumpTargets.cpp:
+ (JSC::computePreciseJumpTargets):
+ * dfg/DFGByteCodeParser.cpp:
+ (JSC::DFG::ByteCodeParser::parseBlock):
+
+2013-04-25 Roman Zhuykov <zhroma@ispras.ru>
+
+ Fix problems with processing negative zero on DFG.
+ https://bugs.webkit.org/show_bug.cgi?id=113862
+
+ Reviewed by Filip Pizlo.
+
+ Fix NodeNeedsNegZero flag propagation in BackwardPropagationPhase.
+ Function arithNodeFlags should not mask NodeNeedsNegZero flag for ArithNegate and DoubleAsInt32
+ nodes and this flag should be always used to decide where we need to generate nezative-zero checks.
+ Remove unnecessary negative-zero checks from integer ArithDiv on ARM.
+ Also remove such checks from integer ArithMod on ARM and X86, and make them always to
+ check not only "modulo_result == 0" but also "dividend < 0".
+ Generate faster code for case when ArithMod operation divisor is constant power of 2 on ARMv7
+ in the same way as on ARMv7s, and add negative-zero checks into this code when needed.
+ Change speculationCheck ExitKind from Overflow to NegativeZero where applicable.
+
+ This shows 30% speedup of math-spectral-norm, and 5% speedup
+ on SunSpider overall on ARMv7 Linux.
+
+ * assembler/MacroAssemblerARM.h:
+ (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
+ * assembler/MacroAssemblerARMv7.h:
+ (JSC::MacroAssemblerARMv7::branchConvertDoubleToInt32):
+ * assembler/MacroAssemblerMIPS.h:
+ (JSC::MacroAssemblerMIPS::branchConvertDoubleToInt32):
+ * assembler/MacroAssemblerSH4.h:
+ (JSC::MacroAssemblerSH4::branchConvertDoubleToInt32):
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32):
+ * dfg/DFGBackwardsPropagationPhase.cpp:
+ (JSC::DFG::BackwardsPropagationPhase::isNotNegZero):
+ (JSC::DFG::BackwardsPropagationPhase::isNotPosZero):
+ (JSC::DFG::BackwardsPropagationPhase::propagate):
+ * dfg/DFGNode.h:
+ (JSC::DFG::Node::arithNodeFlags):
+ * dfg/DFGSpeculativeJIT.cpp:
+ (JSC::DFG::SpeculativeJIT::compileDoubleAsInt32):
+ (JSC::DFG::SpeculativeJIT::compileSoftModulo):
+ (JSC::DFG::SpeculativeJIT::compileArithNegate):
+
+2013-04-25 Oliver Hunt <oliver@apple.com>
+
+ Stack guards are too conservative
+ https://bugs.webkit.org/show_bug.cgi?id=115147
+
+ Reviewed by Mark Hahnenberg.
+
+ Increase stack guard to closer to old size.
+
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::StackPolicy::StackPolicy):
+
+2013-04-25 Oliver Hunt <oliver@apple.com>
+
+ Stack guards are too conservative
+ https://bugs.webkit.org/show_bug.cgi?id=115147
+
+ Reviewed by Geoffrey Garen.
+
+ Reduce the limits and simplify the decision making.
+
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::StackPolicy::StackPolicy):
+
+2013-04-25 Nick Diego Yamane <nick.yamane@openbossa.org>
+
+ JSC: Fix interpreter misbehavior in builds with JIT disabled
+ https://bugs.webkit.org/show_bug.cgi?id=115190
+
+ Reviewed by Oliver Hunt.
+
+ Commit http://trac.webkit.org/changeset/147858 modified
+ some details on how JS stack traces are built. The method
+ "getLineNumberForCallFrame", renamed in that changeset to
+ "getBytecodeOffsetForCallFrame" is always returning `0' when
+ JIT is disabled
+
+ How to reproduce:
+ - Build webkit with JIT disabled
+ - Open MiniBrowser, for example, with http://google.com
+ - In a debug build, WebProcess will hit the following ASSERT:
+ Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:279 ASSERT(low);
+
+ * interpreter/Interpreter.cpp:
+ (JSC::getBytecodeOffsetForCallFrame):
+
+2013-04-25 Oliver Hunt <oliver@apple.com>
+
+ Make checkSyntax take a VM instead of an ExecState
+
+ RS=Tim
+
+ * jsc.cpp:
+ (runInteractive):
+ * runtime/Completion.cpp:
+ (JSC::checkSyntax):
+ * runtime/Completion.h:
+ (JSC):
+
+2013-04-25 Michael Saboff <msaboff@apple.com>
+
+ 32 Bit: Crash due to RegExpTest nodes not setting result type to Boolean
+ https://bugs.webkit.org/show_bug.cgi?id=115188
+
+ Reviewed by Geoffrey Garen.
+
+ Changed the RegExpTest node to set the AbstractValue to boolean, since that
+ what it is.
+
+ * dfg/DFGAbstractState.cpp:
+ (JSC::DFG::AbstractState::executeEffects):
+
+2013-04-25 Julien Brianceau <jbrianceau@nds.com>
+
+ REGRESSION(r137994): Random crashes occur with SH4 JSC.
+ https://bugs.webkit.org/show_bug.cgi?id=115167.
+
+ Reviewed by Oliver Hunt.
+
+ Since r137994, uncommited pages could be inside the area of memory in
+ parameter of the cacheFlush function. That's why we have to flush each
+ page separately to avoid a fail of the whole flush, if an uncommited page
+ is in the area.
+
+ This patch is very similar to changeset 145194 made for ARMv7 architecture,
+ see https://bugs.webkit.org/show_bug.cgi?id=111441 for further information.
+
+ * assembler/SH4Assembler.h:
+ (JSC::SH4Assembler::cacheFlush):
+
+2013-04-24 Mark Lam <mark.lam@apple.com>
+
+ Add watchdog timer polling for the DFG.
+ https://bugs.webkit.org/show_bug.cgi?id=115134.
+
+ Reviewed by Geoffrey Garen.
+
+ The strategy is to add a speculation check to the DFG generated code to
+ test if the watchdog timer has fired or not. If the watchdog timer has
+ fired, the generated code will do an OSR exit to the baseline JIT, and
+ let it handle servicing the watchdog timer.
+
+ If the watchdog is not enabled, this speculation check will not be
+ emitted.
+
+ * API/tests/testapi.c:
+ (currentCPUTime_callAsFunction):
+ (extendTerminateCallback):
+ (main):
+ - removed try/catch statements so that we can test the watchdog on the DFG.
+ - added JS bindings to a native currentCPUTime() function so that the timeout
+ tests can be more accurate.
+ - also shortened the time values so that the tests can complete sooner.
+
+ * bytecode/ExitKind.h:
+ * dfg/DFGAbstractState.cpp:
+ (JSC::DFG::AbstractState::executeEffects):
+ * dfg/DFGByteCodeParser.cpp:
+ (JSC::DFG::ByteCodeParser::parseBlock):
+ * dfg/DFGFixupPhase.cpp:
+ (JSC::DFG::FixupPhase::fixupNode):
+ * dfg/DFGNodeType.h:
+ * dfg/DFGPredictionPropagationPhase.cpp:
+ (JSC::DFG::PredictionPropagationPhase::propagate):
+ * dfg/DFGSpeculativeJIT32_64.cpp:
+ (JSC::DFG::SpeculativeJIT::compile):
+ * dfg/DFGSpeculativeJIT64.cpp:
+ (JSC::DFG::SpeculativeJIT::compile):
+ * runtime/Watchdog.cpp:
+ (JSC::Watchdog::setTimeLimit):
+
+2013-04-24 Filip Pizlo <fpizlo@apple.com>
+
+ Special thunks for math functions should work on ARMv7
+ https://bugs.webkit.org/show_bug.cgi?id=115144
+
+ Reviewed by Gavin Barraclough and Oliver Hunt.
+
+ The only hard bit here was ensuring that we implemented the very special
+ "cheap C call" convention on ARMv7.
+
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::isARMv7s):
+ (JSC):
+ (JSC::isX86):
+ * dfg/DFGCommon.h:
+ * jit/SpecializedThunkJIT.h:
+ (SpecializedThunkJIT):
+ (JSC::SpecializedThunkJIT::callDoubleToDoublePreservingReturn):
+ * jit/ThunkGenerators.cpp:
+ (JSC::floorThunkGenerator):
+ (JSC::ceilThunkGenerator):
+ (JSC::roundThunkGenerator):
+ (JSC::expThunkGenerator):
+ (JSC::logThunkGenerator):
+
+2013-04-24 Julien Brianceau <jbrianceau@nds.com>
+
+ Misc bugfix and cleaning in sh4 base JIT.
+ https://bugs.webkit.org/show_bug.cgi?id=115022.
+
+ Reviewed by Oliver Hunt.
+
+ Remove unused add32() and sub32() with scratchreg parameter to avoid
+ confusion as this function prototype means another behaviour.
+ Remove unused "void push(Address)" function which seems quite buggy.
+
+ * assembler/MacroAssemblerSH4.h:
+ (JSC::MacroAssemblerSH4::and32): Cosmetic change.
+ (JSC::MacroAssemblerSH4::lshift32): Cosmetic change.
+ (JSC::MacroAssemblerSH4::or32): Cosmetic change.
+ (JSC::MacroAssemblerSH4::xor32): Cosmetic change.
+ (MacroAssemblerSH4):
+ (JSC::MacroAssemblerSH4::load32): Cosmetic change.
+ (JSC::MacroAssemblerSH4::load8Signed): Fix invalid offset upper limit
+ when using r0 register and cosmetic changes.
+ (JSC::MacroAssemblerSH4::load8): Reuse load8Signed to avoid duplication.
+ (JSC::MacroAssemblerSH4::load16): Fix invalid offset upper limit when
+ using r0 register, fix missing offset shift and cosmetic changes.
+ (JSC::MacroAssemblerSH4::store32): Cosmetic change.
+ (JSC::MacroAssemblerSH4::branchAdd32): Store result value before branch.
+
+2013-04-24 Patrick Gansterer <paroga@webkit.org>
+
+ [WIN] Remove pthread from Visual Studio files in JavaScriptCore
+ https://bugs.webkit.org/show_bug.cgi?id=114864
+
+ Reviewed by Brent Fulgham.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
+ * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.vsprops:
+ * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
+ * JavaScriptCore.vcproj/testRegExp/testRegExpCommon.vsprops:
+ * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
+ * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorCommon.props:
+ * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props:
+ * JavaScriptCore.vcxproj/jsc/jscCommon.props:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
+ * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
+ * JavaScriptCore.vcxproj/testapi/testapiCommonCFLite.props:
+
+2013-04-24 Filip Pizlo <fpizlo@apple.com>
+
+ DFG should keep the operand to create_this alive if it's emitting code for create_this
+ https://bugs.webkit.org/show_bug.cgi?id=115133
+
+ Reviewed by Mark Hahnenberg.
+
+ The DFG must model bytecode liveness, or else OSR exit is going to have a really bad time.
+
+ * dfg/DFGByteCodeParser.cpp:
+ (JSC::DFG::ByteCodeParser::parseBlock):
+
+2013-04-24 Roger Fong <roger_fong@apple.com>
+
+ Have VS2010 WebKit solution look in WebKit_Libraries/lib32 for dependencies.
+
+ * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPostBuild.cmd:
+ * JavaScriptCore.vcxproj/JavaScriptCorePreLink.cmd:
+ * JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd:
+ * JavaScriptCore.vcxproj/jsc/jscPreLink.cmd:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd:
+ * JavaScriptCore.vcxproj/testRegExp/testRegExpPreLink.cmd:
+ * JavaScriptCore.vcxproj/testapi/testapiPreLink.cmd:
+
+2013-04-24 Geoffrey Garen <ggaren@apple.com>
+
+ 32-bit build fix.
+
+ Unreviewed.
+
+ * dfg/DFGSpeculativeJIT.cpp:
+ (JSC::DFG::SpeculativeJIT::compilePeepHoleBooleanBranch): Explicitly
+ truncate to 32-bit to avoid compiler warnings. It's safe to truncate
+ because the payload of a boolean is the low bits on both 64-bit and 32-bit.
+
+2013-04-23 Geoffrey Garen <ggaren@apple.com>
+
+ Filled out more cases of branch folding in the DFG
+ https://bugs.webkit.org/show_bug.cgi?id=115088
+
+ Reviewed by Oliver Hunt.
+
+ No change on the benchmarks we track, but a 3X speedup on a
+ microbenchmark that uses these techniques.
+
+ * dfg/DFGByteCodeParser.cpp:
+ (JSC::DFG::ByteCodeParser::parseBlock): (!/=)= and (!/=)== can constant
+ fold all types, not just numbers, because true constants have no
+ side effects when type-converted at runtime.
+
+ * dfg/DFGFixupPhase.cpp:
+ (JSC::DFG::FixupPhase::fixupNode):
+ * dfg/DFGNode.h:
+ (JSC::DFG::Node::shouldSpeculateBoolean): Added support for fixing up
+ boolean uses, like we do for other types like number.
+
+ * dfg/DFGSpeculativeJIT.cpp:
+ (JSC::DFG::SpeculativeJIT::compilePeepHoleBooleanBranch):
+ (JSC::DFG::SpeculativeJIT::compilePeepHoleBranch):
+ (JSC::DFG::SpeculativeJIT::compare):
+ (JSC::DFG::SpeculativeJIT::compileStrictEq):
+ (JSC::DFG::SpeculativeJIT::compileBooleanCompare): Peephole fuse
+ boolean compare and/or compare-branch, now that we have the types for
+ them.
+
+ * dfg/DFGSpeculativeJIT.h: Updated declarations.
+
+== Rolled over to ChangeLog-2013-04-24 ==