1 2013-07-18 Andreas Kling <akling@apple.com>
3 CodeBlock DFG entry list isn't getting shrunk-to-fit after linking.
4 <http://webkit.org/b/118875>
5 <rdar://problem/14488577>
7 Reviewed by Geoffrey Garen.
9 Move the CodeBlock::shrinkToFit() call out of JITCompiler::link() and to the call sites
10 so SpeculativeJIT::linkOSREntries() can fill in CodeBlock::m_dfgData->osrEntry first.
12 886 kB progression on <http://twitter.com/awesomekling>
14 * dfg/DFGJITCompiler.cpp:
15 (JSC::DFG::JITCompiler::link):
16 (JSC::DFG::JITCompiler::compile):
17 (JSC::DFG::JITCompiler::compileFunction):
19 2013-07-18 Andreas Kling <akling@apple.com>
21 CodeBlock::m_argumentValueProfiles wastes a lot of memory.
22 <http://webkit.org/b/118852>
23 <rdar://problem/14481659>
25 Reviewed by Anders Carlsson.
27 Use Vector::resizeToFit() for CodeBlock::m_argumentValueProfiles. We don't need any padding
28 for growth, since we won't be appending to it anyway.
30 921 KB progression on <http://twitter.com/awesomekling>
32 * bytecode/CodeBlock.cpp:
33 (JSC::CodeBlock::setNumParameters):
35 2013-07-16 Mark Hahnenberg <mhahnenberg@apple.com>
37 Remove reference to JSValueStructSupport.h from JSExport.h
38 https://bugs.webkit.org/show_bug.cgi?id=118746
40 Reviewed by Filip Pizlo.
42 * API/JSExport.h: No such header exists, so it doesn't make sense to reference it.
44 2013-07-17 Lucas Forschler <lforschler@apple.com>
48 2013-07-17 Lucas Forschler <lforschler@apple.com>
52 2013-07-12 Brent Fulgham <bfulgham@apple.com>
54 [Windows] Build correction after r152573/r152577.
55 https://bugs.webkit.org/show_bug.cgi?id=118610
57 Reviewed by Oliver Hunt.
60 (JSC::JITThunks::hostFunctionStub): Hand-feed MSVC++ the fact that we want the second
61 argument of the make_pair to be a function pointer.
63 2013-07-17 Lucas Forschler <lforschler@apple.com>
67 2013-07-16 Filip Pizlo <fpizlo@apple.com>
69 MakeRope fixup shouldn't lead to an Identity without kids
70 https://bugs.webkit.org/show_bug.cgi?id=118745
72 Reviewed by Mark Hahnenberg.
74 Make the empty string pruning part of fixupMakeRope() stop if it's on the last child.
76 Make Node::convertToIdentity release-assert that it has exactly one kid.
78 * dfg/DFGFixupPhase.cpp:
79 (JSC::DFG::FixupPhase::fixupMakeRope):
81 (JSC::DFG::Node::convertToIdentity):
83 2013-07-15 Lucas Forschler <lforschler@apple.com>
87 2013-07-13 Commit Queue <commit-queue@webkit.org>
89 Unreviewed, rolling out r151978.
90 http://trac.webkit.org/changeset/151978
91 https://bugs.webkit.org/show_bug.cgi?id=118651
93 Caused regressions at least 3 websites (Requested by rniwa on
96 * runtime/JSCJSValue.h:
99 2013-07-15 Lucas Forschler <lforschler@apple.com>
103 2013-07-11 Oliver Hunt <oliver@apple.com>
105 Attempt to fix the windows build.
108 (JSC::JITThunks::hostFunctionStub):
111 2013-07-15 Lucas Forschler <lforschler@apple.com>
115 2013-07-10 Oliver Hunt <oliver@apple.com>
117 NativeExecutable cache needs to use both call and construct functions for key
118 https://bugs.webkit.org/show_bug.cgi?id=118545
120 Reviewed by Geoffrey Garen.
122 Make the native executable cache make use a key pair so we don't decide to
123 treat all subsequent functions as not being constructors.
126 (JSC::JITThunks::hostFunctionStub):
128 * runtime/JSBoundFunction.cpp:
129 (JSC::JSBoundFunction::create):
130 * runtime/JSCell.cpp:
131 (JSC::JSCell::getCallData):
132 (JSC::JSCell::getConstructData):
134 2013-07-09 Lucas Forschler <lforschler@apple.com>
138 2013-07-09 Mark Lam <mark.lam@apple.com>
140 Gardening to unbreak builds on the Windows bot.
144 * parser/ParserTokens.h:
146 2013-07-09 Lucas Forschler <lforschler@apple.com>
150 2013-07-09 Mark Lam <mark.lam@apple.com>
152 Fix 30% JSBench regression (caused by adding column numbers to stack traces).
153 https://bugs.webkit.org/show_bug.cgi?id=118481.
155 Reviewed by Mark Hahnenberg and Geoffrey Garen.
157 Previously, we already capture ExpressionRangeInfo that provides a divot for
158 each bytecode that can potentially throw an exception (and therefore generate
159 a stack trace). On first attempt to compute column numbers, we then do a walk
160 of the source string to record all line start positions in a table associated
161 with the SourceProvider. The column number can then be computed as
162 divot - lineStartFor(bytecodeOffset).
164 The computation of this lineStarts table is the source of the 30% JSBench
165 performance regression.
167 The new code now records lineStarts as the lexer and parser scans the source
168 code. These lineStarts are then used to compute the column number for the
169 given divot, and stored in the ExpressionRangeInfo. Similarly, we also capture
170 the line number at the divot point and store that in the ExpressionRangeInfo.
171 Hence, to look up line and column numbers, we now lookup the ExpressionRangeInfo
172 for the bytecodeOffset, and then compute the line and column from the values
173 stored in the expression info.
176 1. We want to minimize perturbations to the lexer and parser. Specifically,
177 the changes added should not change how it scans code, and generate bytecode.
178 2. We regard the divot as the source character position we are interested
179 in. As such, we'll capture line and lineStart (for column) at the point
180 when we capture the divot information. This ensures that the 3 values are
183 How the change is done:
184 1. Change the lexer to track lineStarts.
185 2. Change the parser to capture line and lineStarts at the point of capturing
187 3. Change the parser and associated code to plumb these values all the way to
188 the point that the correspoinding ExpressionRangeInfo is emitted.
189 4. Propagate and record SourceCode firstLine and firstLineColumnOffset to the
190 the necessary places so that we can add them as needed when reifying
191 UnlinkedCodeBlocks into CodeBlocks.
192 5. Compress the line and column number values in the ExpressionRangeInfo. In
193 practice, we seldom have both large line and column numbers. Hence, we can
194 encode both in an uint32_t most of the time. For the times when we encounter
195 both large line and column numbers, we have a fallback to store the "fat"
197 6. Emit an ExpressionRangeInfo for UnaryOp nodes to get more line and column
199 7. Change the interpreter to use the new way of computing line and column.
200 8. Delete old line and column computation code that is now unused.
203 - the old lexer was tracking both a startOffset and charPosition where
204 charPosition equals startOffset - SourceCode.startOffset. We now use
205 startOffset exclusively throughout the system for consistency.
206 All offset values (including lineStart) are relative to the start of the
207 SourceProvider string. These values will only be converted to be relative
208 to the SourceCode.startOffset at the very last minute i.e. when the divot
209 is stored into the ExpressionRangeInfo.
211 This change to use the same offset system everywhere reduces confusion
212 from having to convert back and forth between the 2 systems. It also
213 enables a lot of assertions to be used.
215 - Also fixed some bugs in the choice of divot positions to use. For example,
216 both Eval and Function expressions previously used column numbers from
217 the start of the expression but used the line number at the end of the
218 expression. This is now fixed to use either the start or end positions
219 as appropriate, but not a mix of line and columns from both.
221 - Why use ints instead of unsigneds for offsets and lineStarts inside the
223 Some tests (e.g. fast/js/call-base-resolution.html and
224 fast/js/eval-cross-window.html) has shown that lineStart offsets can be
225 prior to the SourceCode.startOffset. Keeping the lexer offsets as ints
226 simplifies computations and makes it easier to maintain the assertions
227 that (startOffset >= lineStartOffset).
229 However, column and line numbers are always unsigned when we publish
230 them to the ExpressionRangeInfo. The ints are only used inside the
231 lexer and parser ... well, and bytecode generator.
233 - For all cases, lineStart is always captured where the divot is captured.
234 However, some sputnik conformance tests have shown that we cannot honor
235 line breaks for assignment statements like the following:
237 eval("x\u000A*=\u000A-1;");
239 In this case, the lineStart is expected to be captured at the start of
240 the assignment expression instead of at the divot point in the middle.
241 The assignment expression is the only special case for this.
243 This patch has been tested against the full layout tests both with release
244 and debug builds with no regression.
246 * API/JSContextRef.cpp:
247 (JSContextCreateBacktrace):
248 - Updated to use the new StackFrame::computeLineAndColumn().
249 * bytecode/CodeBlock.cpp:
250 (JSC::CodeBlock::CodeBlock):
251 - Added m_firstLineColumnOffset initialization.
252 - Plumbed the firstLineColumnOffset into the SourceCode.
253 - Initialized column for op_debug using the new way.
254 (JSC::CodeBlock::lineNumberForBytecodeOffset):
255 - Changed to compute line number using the ExpressionRangeInfo.
256 (JSC::CodeBlock::columnNumberForBytecodeOffset): Added
257 - Changed to compute column number using the ExpressionRangeInfo.
258 (JSC::CodeBlock::expressionRangeForBytecodeOffset):
259 * bytecode/CodeBlock.h:
260 (JSC::CodeBlock::firstLineColumnOffset):
261 (JSC::GlobalCodeBlock::GlobalCodeBlock):
262 - Plumbed firstLineColumnOffset through to the super class.
263 (JSC::ProgramCodeBlock::ProgramCodeBlock):
264 - Plumbed firstLineColumnOffset through to the super class.
265 (JSC::EvalCodeBlock::EvalCodeBlock):
266 - Plumbed firstLineColumnOffset through to the super class.
267 But for EvalCodeBlocks, the firstLineColumnOffset is always 1
268 because we're starting with a new source string with no start
270 (JSC::FunctionCodeBlock::FunctionCodeBlock):
271 - Plumbed firstLineColumnOffset through to the super class.
273 * bytecode/ExpressionRangeInfo.h:
274 - Added modes for encoding line and column into a single 30-bit
275 unsigned. The encoding is in 1 of 3 modes:
276 1. FatLineMode: 22-bit line, 8-bit column
277 2. FatColumnMode: 8-bit line, 22-bit column
278 3. FatLineAndColumnMode: 32-bit line, 32-bit column
279 (JSC::ExpressionRangeInfo::encodeFatLineMode): Added.
280 - Encodes line and column into the 30-bit position using FatLine mode.
281 (JSC::ExpressionRangeInfo::encodeFatColumnMode): Added.
282 - Encodes line and column into the 30-bit position using FatColumn mode.
283 (JSC::ExpressionRangeInfo::decodeFatLineMode): Added.
284 - Decodes the FatLine mode 30-bit position into line and column.
285 (JSC::ExpressionRangeInfo::decodeFatColumnMode): Added.
286 - Decodes the FatColumn mode 30-bit position into line and column.
288 * bytecode/UnlinkedCodeBlock.cpp:
289 (JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):
290 - Plumbed startColumn through.
291 (JSC::UnlinkedFunctionExecutable::link):
292 - Plumbed startColumn through.
293 (JSC::UnlinkedCodeBlock::lineNumberForBytecodeOffset):
294 - Computes a line number using the new way.
295 (JSC::UnlinkedCodeBlock::expressionRangeForBytecodeOffset):
296 - Added decoding of line and column.
297 - Added handling of the case when we do not find a fitting expression
298 range info for a specified bytecodeOffset. This only happens if the
299 bytecodeOffset is below the first expression range info. In that
300 case, we'll use the first expression range info entry.
301 (JSC::UnlinkedCodeBlock::addExpressionInfo):
302 - Added encoding of line and column.
304 * bytecode/UnlinkedCodeBlock.h:
305 - Added m_expressionInfoFatPositions in RareData.
306 (JSC::UnlinkedFunctionExecutable::functionStartColumn):
307 (JSC::UnlinkedCodeBlock::shrinkToFit):
308 - Removed obsoleted m_lineInfo.
309 * bytecompiler/BytecodeGenerator.cpp:
310 (JSC::BytecodeGenerator::emitCall): Plumbed line and lineStart through.
311 (JSC::BytecodeGenerator::emitCallEval): Plumbed line and lineStart through.
312 (JSC::BytecodeGenerator::emitCallVarargs): Plumbed line and lineStart through.
313 (JSC::BytecodeGenerator::emitConstruct): Plumbed line and lineStart through.
314 (JSC::BytecodeGenerator::emitDebugHook): Plumbed lineStart through.
315 * bytecompiler/BytecodeGenerator.h:
316 (JSC::BytecodeGenerator::emitNode):
317 (JSC::BytecodeGenerator::emitNodeInConditionContext):
318 - Removed obsoleted m_lineInfo.
319 (JSC::BytecodeGenerator::emitExpressionInfo):
320 - Plumbed line and lineStart through.
321 - Compute the line and column to be added to the expression range info.
322 * bytecompiler/NodesCodegen.cpp:
323 (JSC::ThrowableExpressionData::emitThrowReferenceError):
324 (JSC::ResolveNode::emitBytecode):
325 (JSC::ArrayNode::toArgumentList):
326 (JSC::BracketAccessorNode::emitBytecode):
327 (JSC::DotAccessorNode::emitBytecode):
328 (JSC::NewExprNode::emitBytecode):
329 (JSC::EvalFunctionCallNode::emitBytecode):
330 (JSC::FunctionCallValueNode::emitBytecode):
331 (JSC::FunctionCallResolveNode::emitBytecode):
332 (JSC::FunctionCallBracketNode::emitBytecode):
333 (JSC::FunctionCallDotNode::emitBytecode):
334 (JSC::CallFunctionCallDotNode::emitBytecode):
335 (JSC::ApplyFunctionCallDotNode::emitBytecode):
336 (JSC::PostfixNode::emitResolve):
337 (JSC::PostfixNode::emitBracket):
338 (JSC::PostfixNode::emitDot):
339 (JSC::DeleteResolveNode::emitBytecode):
340 (JSC::DeleteBracketNode::emitBytecode):
341 (JSC::DeleteDotNode::emitBytecode):
342 (JSC::PrefixNode::emitResolve):
343 (JSC::PrefixNode::emitBracket):
344 (JSC::PrefixNode::emitDot):
345 - Plumbed line and lineStart through the above as needed.
347 (JSC::UnaryOpNode::emitBytecode):
348 - Added emission of an ExpressionRangeInfo for the UnaryOp node.
350 (JSC::BinaryOpNode::emitStrcat):
351 (JSC::ThrowableBinaryOpNode::emitBytecode):
352 (JSC::InstanceOfNode::emitBytecode):
353 (JSC::emitReadModifyAssignment):
354 (JSC::ReadModifyResolveNode::emitBytecode):
355 (JSC::AssignResolveNode::emitBytecode):
356 (JSC::AssignDotNode::emitBytecode):
357 (JSC::ReadModifyDotNode::emitBytecode):
358 (JSC::AssignBracketNode::emitBytecode):
359 (JSC::ReadModifyBracketNode::emitBytecode):
360 - Plumbed line and lineStart through the above as needed.
362 (JSC::ConstStatementNode::emitBytecode):
363 (JSC::EmptyStatementNode::emitBytecode):
364 (JSC::DebuggerStatementNode::emitBytecode):
365 (JSC::ExprStatementNode::emitBytecode):
366 (JSC::VarStatementNode::emitBytecode):
367 (JSC::IfElseNode::emitBytecode):
368 (JSC::DoWhileNode::emitBytecode):
369 (JSC::WhileNode::emitBytecode):
370 (JSC::ForNode::emitBytecode):
371 (JSC::ForInNode::emitBytecode):
372 (JSC::ContinueNode::emitBytecode):
373 (JSC::BreakNode::emitBytecode):
374 (JSC::ReturnNode::emitBytecode):
375 (JSC::WithNode::emitBytecode):
376 (JSC::SwitchNode::emitBytecode):
377 (JSC::LabelNode::emitBytecode):
378 (JSC::ThrowNode::emitBytecode):
379 (JSC::TryNode::emitBytecode):
380 (JSC::ProgramNode::emitBytecode):
381 (JSC::EvalNode::emitBytecode):
382 (JSC::FunctionBodyNode::emitBytecode):
383 - Plumbed line and lineStart through the above as needed.
385 * interpreter/Interpreter.cpp:
386 (JSC::appendSourceToError):
387 - Added line and column arguments for expressionRangeForBytecodeOffset().
388 (JSC::StackFrame::computeLineAndColumn):
389 - Replaces StackFrame::line() and StackFrame::column().
390 (JSC::StackFrame::expressionInfo):
391 - Added line and column arguments.
392 (JSC::StackFrame::toString):
393 - Changed to use the new StackFrame::computeLineAndColumn().
394 (JSC::Interpreter::getStackTrace):
395 - Added the needed firstLineColumnOffset arg for the StackFrame.
397 * interpreter/Interpreter.h:
398 * parser/ASTBuilder.h:
399 (JSC::ASTBuilder::BinaryOpInfo::BinaryOpInfo):
400 (JSC::ASTBuilder::AssignmentInfo::AssignmentInfo):
401 (JSC::ASTBuilder::createResolve):
402 (JSC::ASTBuilder::createBracketAccess):
403 (JSC::ASTBuilder::createDotAccess):
404 (JSC::ASTBuilder::createRegExp):
405 (JSC::ASTBuilder::createNewExpr):
406 (JSC::ASTBuilder::createAssignResolve):
407 (JSC::ASTBuilder::createFunctionExpr):
408 (JSC::ASTBuilder::createFunctionBody):
409 (JSC::ASTBuilder::createGetterOrSetterProperty):
410 (JSC::ASTBuilder::createFuncDeclStatement):
411 (JSC::ASTBuilder::createBlockStatement):
412 (JSC::ASTBuilder::createExprStatement):
413 (JSC::ASTBuilder::createIfStatement):
414 (JSC::ASTBuilder::createForLoop):
415 (JSC::ASTBuilder::createForInLoop):
416 (JSC::ASTBuilder::createVarStatement):
417 (JSC::ASTBuilder::createReturnStatement):
418 (JSC::ASTBuilder::createBreakStatement):
419 (JSC::ASTBuilder::createContinueStatement):
420 (JSC::ASTBuilder::createTryStatement):
421 (JSC::ASTBuilder::createSwitchStatement):
422 (JSC::ASTBuilder::createWhileStatement):
423 (JSC::ASTBuilder::createDoWhileStatement):
424 (JSC::ASTBuilder::createLabelStatement):
425 (JSC::ASTBuilder::createWithStatement):
426 (JSC::ASTBuilder::createThrowStatement):
427 (JSC::ASTBuilder::createDebugger):
428 (JSC::ASTBuilder::createConstStatement):
429 (JSC::ASTBuilder::appendBinaryExpressionInfo):
430 (JSC::ASTBuilder::appendUnaryToken):
431 (JSC::ASTBuilder::unaryTokenStackLastStart):
432 (JSC::ASTBuilder::unaryTokenStackLastLineStartPosition): Added.
433 (JSC::ASTBuilder::assignmentStackAppend):
434 (JSC::ASTBuilder::createAssignment):
435 (JSC::ASTBuilder::setExceptionLocation):
436 (JSC::ASTBuilder::makeDeleteNode):
437 (JSC::ASTBuilder::makeFunctionCallNode):
438 (JSC::ASTBuilder::makeBinaryNode):
439 (JSC::ASTBuilder::makeAssignNode):
440 (JSC::ASTBuilder::makePrefixNode):
441 (JSC::ASTBuilder::makePostfixNode):.
442 - Plumbed line, lineStart, and startColumn through the above as needed.
445 (JSC::::currentSourcePtr):
447 - Added tracking for sourceoffset and lineStart.
448 (JSC::::internalShift):
449 (JSC::::parseIdentifier):
450 - Added tracking for lineStart.
451 (JSC::::parseIdentifierSlowCase):
452 (JSC::::parseString):
453 - Added tracking for lineStart.
454 (JSC::::parseStringSlowCase):
456 - Added tracking for sourceoffset.
459 (JSC::Lexer::currentOffset):
460 (JSC::Lexer::currentLineStartOffset):
461 (JSC::Lexer::setOffset):
462 - Added tracking for lineStart.
463 (JSC::Lexer::offsetFromSourcePtr): Added. conversion function.
464 (JSC::Lexer::sourcePtrFromOffset): Added. conversion function.
465 (JSC::Lexer::setOffsetFromSourcePtr):
466 (JSC::::lexExpectIdentifier):
467 - Added tracking for sourceoffset and lineStart.
469 * parser/NodeConstructors.h:
471 (JSC::ResolveNode::ResolveNode):
472 (JSC::EvalFunctionCallNode::EvalFunctionCallNode):
473 (JSC::FunctionCallValueNode::FunctionCallValueNode):
474 (JSC::FunctionCallResolveNode::FunctionCallResolveNode):
475 (JSC::FunctionCallBracketNode::FunctionCallBracketNode):
476 (JSC::FunctionCallDotNode::FunctionCallDotNode):
477 (JSC::CallFunctionCallDotNode::CallFunctionCallDotNode):
478 (JSC::ApplyFunctionCallDotNode::ApplyFunctionCallDotNode):
479 (JSC::PostfixNode::PostfixNode):
480 (JSC::DeleteResolveNode::DeleteResolveNode):
481 (JSC::DeleteBracketNode::DeleteBracketNode):
482 (JSC::DeleteDotNode::DeleteDotNode):
483 (JSC::PrefixNode::PrefixNode):
484 (JSC::ReadModifyResolveNode::ReadModifyResolveNode):
485 (JSC::ReadModifyBracketNode::ReadModifyBracketNode):
486 (JSC::AssignBracketNode::AssignBracketNode):
487 (JSC::AssignDotNode::AssignDotNode):
488 (JSC::ReadModifyDotNode::ReadModifyDotNode):
489 (JSC::AssignErrorNode::AssignErrorNode):
490 (JSC::WithNode::WithNode):
491 (JSC::ForInNode::ForInNode):
492 - Plumbed line and lineStart through the above as needed.
494 (JSC::StatementNode::setLoc): Plumbed lineStart.
495 (JSC::ScopeNode::ScopeNode): Plumbed lineStart.
496 (JSC::ProgramNode::ProgramNode): Plumbed startColumn.
497 (JSC::ProgramNode::create): Plumbed startColumn.
498 (JSC::EvalNode::create):
499 (JSC::FunctionBodyNode::FunctionBodyNode): Plumbed startColumn.
500 (JSC::FunctionBodyNode::create): Plumbed startColumn.
502 (JSC::Node::startOffset):
503 (JSC::Node::lineStartOffset): Added.
504 (JSC::StatementNode::firstLine):
505 (JSC::StatementNode::lastLine):
506 (JSC::ThrowableExpressionData::ThrowableExpressionData):
507 (JSC::ThrowableExpressionData::setExceptionSourceCode):
508 (JSC::ThrowableExpressionData::divotStartOffset):
509 (JSC::ThrowableExpressionData::divotEndOffset):
510 (JSC::ThrowableExpressionData::divotLine):
511 (JSC::ThrowableExpressionData::divotLineStart):
512 (JSC::ThrowableSubExpressionData::ThrowableSubExpressionData):
513 (JSC::ThrowableSubExpressionData::setSubexpressionInfo):
514 (JSC::ThrowableSubExpressionData::subexpressionDivot):
515 (JSC::ThrowableSubExpressionData::subexpressionStartOffset):
516 (JSC::ThrowableSubExpressionData::subexpressionEndOffset):
517 (JSC::ThrowableSubExpressionData::subexpressionLine):
518 (JSC::ThrowableSubExpressionData::subexpressionLineStart):
519 (JSC::ThrowablePrefixedSubExpressionData::ThrowablePrefixedSubExpressionData):
520 (JSC::ThrowablePrefixedSubExpressionData::setSubexpressionInfo):
521 (JSC::ThrowablePrefixedSubExpressionData::subexpressionDivot):
522 (JSC::ThrowablePrefixedSubExpressionData::subexpressionStartOffset):
523 (JSC::ThrowablePrefixedSubExpressionData::subexpressionEndOffset):
524 (JSC::ThrowablePrefixedSubExpressionData::subexpressionLine):
525 (JSC::ThrowablePrefixedSubExpressionData::subexpressionLineStart):
526 (JSC::ScopeNode::startStartOffset):
527 (JSC::ScopeNode::startLineStartOffset):
528 (JSC::ProgramNode::startColumn):
529 (JSC::EvalNode::startColumn):
530 (JSC::FunctionBodyNode::startColumn):
531 - Plumbed line and lineStart through the above as needed.
534 (JSC::::parseSourceElements):
535 (JSC::::parseVarDeclarationList):
536 (JSC::::parseConstDeclarationList):
537 (JSC::::parseForStatement):
538 (JSC::::parseBreakStatement):
539 (JSC::::parseContinueStatement):
540 (JSC::::parseReturnStatement):
541 (JSC::::parseThrowStatement):
542 (JSC::::parseWithStatement):
543 - Plumbed line and lineStart through the above as needed.
544 (JSC::::parseFunctionBody):
545 - Plumbed startColumn.
546 (JSC::::parseFunctionInfo):
547 (JSC::::parseFunctionDeclaration):
548 (JSC::LabelInfo::LabelInfo):
549 (JSC::::parseExpressionOrLabelStatement):
550 (JSC::::parseAssignmentExpression):
551 (JSC::::parseBinaryExpression):
552 (JSC::::parseProperty):
553 (JSC::::parseObjectLiteral):
554 (JSC::::parsePrimaryExpression):
555 (JSC::::parseMemberExpression):
556 (JSC::::parseUnaryExpression):
557 - Plumbed line, lineStart, startColumn through the above as needed.
560 (JSC::Parser::nextExpectIdentifier):
561 (JSC::Parser::tokenStart):
562 (JSC::Parser::tokenColumn):
563 (JSC::Parser::tokenEnd):
564 (JSC::Parser::tokenLineStart):
565 (JSC::Parser::lastTokenLine):
566 (JSC::Parser::lastTokenLineStart):
568 * parser/ParserTokens.h:
569 (JSC::JSTokenLocation::JSTokenLocation):
571 (JSC::JSTokenLocation::lineStartPosition):
572 (JSC::JSTokenLocation::startPosition):
573 (JSC::JSTokenLocation::endPosition):
574 * parser/SourceCode.h:
575 (JSC::SourceCode::SourceCode):
576 (JSC::SourceCode::startColumn):
578 (JSC::SourceCode::subExpression):
579 * parser/SourceProvider.cpp: delete old code.
580 * parser/SourceProvider.h: delete old code.
581 * parser/SourceProviderCacheItem.h:
582 (JSC::SourceProviderCacheItem::closeBraceToken):
583 (JSC::SourceProviderCacheItem::SourceProviderCacheItem):
585 * parser/SyntaxChecker.h:
586 (JSC::SyntaxChecker::makeFunctionCallNode):
587 (JSC::SyntaxChecker::makeAssignNode):
588 (JSC::SyntaxChecker::makePrefixNode):
589 (JSC::SyntaxChecker::makePostfixNode):
590 (JSC::SyntaxChecker::makeDeleteNode):
591 (JSC::SyntaxChecker::createResolve):
592 (JSC::SyntaxChecker::createBracketAccess):
593 (JSC::SyntaxChecker::createDotAccess):
594 (JSC::SyntaxChecker::createRegExp):
595 (JSC::SyntaxChecker::createNewExpr):
596 (JSC::SyntaxChecker::createAssignResolve):
597 (JSC::SyntaxChecker::createFunctionExpr):
598 (JSC::SyntaxChecker::createFunctionBody):
599 (JSC::SyntaxChecker::createFuncDeclStatement):
600 (JSC::SyntaxChecker::createForInLoop):
601 (JSC::SyntaxChecker::createReturnStatement):
602 (JSC::SyntaxChecker::createBreakStatement):
603 (JSC::SyntaxChecker::createContinueStatement):
604 (JSC::SyntaxChecker::createWithStatement):
605 (JSC::SyntaxChecker::createLabelStatement):
606 (JSC::SyntaxChecker::createThrowStatement):
607 (JSC::SyntaxChecker::createGetterOrSetterProperty):
608 (JSC::SyntaxChecker::appendBinaryExpressionInfo):
609 (JSC::SyntaxChecker::operatorStackPop):
610 - Made SyntaxChecker prototype changes to match ASTBuilder due to new
611 args added for plumbing line, lineStart, and startColumn.
612 * runtime/CodeCache.cpp:
613 (JSC::CodeCache::generateBytecode):
614 (JSC::CodeCache::getCodeBlock):
615 - Plumbed startColumn.
616 * runtime/Executable.cpp:
617 (JSC::FunctionExecutable::FunctionExecutable):
618 (JSC::ProgramExecutable::compileInternal):
619 (JSC::FunctionExecutable::produceCodeBlockFor):
620 (JSC::FunctionExecutable::fromGlobalCode):
621 - Plumbed startColumn.
622 * runtime/Executable.h:
623 (JSC::ScriptExecutable::startColumn):
624 (JSC::ScriptExecutable::recordParse):
625 (JSC::FunctionExecutable::create):
626 - Plumbed startColumn.
628 2013-07-08 Lucas Forschler <lforschler@apple.com>
632 2013-06-26 Anders Carlsson <andersca@apple.com>
634 Add JSStringCreateWithCharactersNoCopy SPI
635 https://bugs.webkit.org/show_bug.cgi?id=118074
636 <rdar://problem/14279905>
638 Reviewed by Geoffrey Garen.
640 * API/JSStringRef.cpp:
641 (JSStringCreateWithCharactersNoCopy):
642 Create a new OpaqueJSString, using the newly added StringImpl::createWithoutCopying function.
644 * API/JSStringRefPrivate.h: Added.
645 Add a home for the JSStringCreateWithCharactersNoCopy function.
647 * API/OpaqueJSString.h:
648 (OpaqueJSString::OpaqueJSString):
649 Just call isolatedCopy on the passed in string.
651 * API/tests/testapi.c:
652 Add an API test for JSStringCreateWithCharactersNoCopy.
654 * JavaScriptCore.xcodeproj/project.pbxproj:
657 2013-07-08 Lucas Forschler <lforschler@apple.com>
661 2013-07-02 Mark Hahnenberg <mhahnenberg@apple.com>
663 Replace RELEASE_ASSERT with ASSERT in CodeBlock:: bytecodeOffsetForCallAtIndex
664 https://bugs.webkit.org/show_bug.cgi?id=118316
666 Reviewed by Geoffrey Garen.
668 This is causing some crashiness in release builds. We should replace it with an ASSERT
669 until we track down all the places that need fixing in bug 118315.
671 * bytecode/CodeBlock.h:
672 (JSC::CodeBlock::bytecodeOffsetForCallAtIndex):
674 2013-07-01 Lucas Forschler <lforschler@apple.com>
678 2013-06-27 Timothy Hatcher <timothy@apple.com>
680 Notify the debugger about functions created from source code via new Function() or WebCore::JSLazyEventListener.
682 https://bugs.webkit.org/show_bug.cgi?id=118063
684 Reviewed by Geoffrey Garen.
686 * bytecode/UnlinkedCodeBlock.cpp:
687 (JSC::UnlinkedFunctionExecutable::fromGlobalCode): Call Debugger::sourceParsed.
689 2013-07-01 Lucas Forschler <lforschler@apple.com>
693 2013-06-25 Ryosuke Niwa <rniwa@webkit.org>
695 JSString should remember AtomicString
696 https://bugs.webkit.org/show_bug.cgi?id=117386
698 Reviewed by Geoffrey Garen.
700 Added JSValue::toAtomicString and JSString::atomicString. These two functions allow WebCore to update
701 JSString's m_value to set isAtomic flag and avoid the AtomicStringTable lookups in subsequent attempts
702 to obtain the AtomicString of the same value.
704 * runtime/JSCJSValue.h:
705 * runtime/JSString.h:
706 (JSC::JSString::atomicString):
707 (JSC::JSValue::toAtomicString):
709 2013-06-25 Lucas Forschler <lforschler@apple.com>
713 2013-06-20 Mark Hahnenberg <mhahnenberg@apple.com>
715 Improper deallocation of JSManagedValue causes crashes during autorelease pool draining
716 https://bugs.webkit.org/show_bug.cgi?id=117840
718 Reviewed by Geoffrey Garen.
720 Improperly managing a JSManagedValue can cause a crash when the JSC::Weak inside the
721 JSManagedValue is destroyed upon deallocation. We would rather have improperly maintained
722 JSManagedValues cause memory leaks than take down the whole app.
724 The fix is to use the callback to the JSC::Weak on the destruction of the VM so that we
725 can safely null it out. This will prevent ~Weak from crashing.
727 * API/JSManagedValue.mm:
728 (-[JSManagedValue JSC::JSC::]):
729 (JSManagedValueHandleOwner::finalize):
730 * API/tests/testapi.mm: Added a test that crashed prior to this fix due to a leaked
731 managed reference. Also fixed a small style nit I noticed in another test.
733 2013-06-25 Lucas Forschler <lforschler@apple.com>
737 2013-06-24 Roger Fong <roger_fong@apple.com>
739 Unreviewed. Makefile build fix for AppleWindows.
741 * JavaScriptCore.vcxproj/JavaScriptCore.make:
743 2013-06-21 Lucas Forschler <lforschler@apple.com>
747 2013-06-20 Roger Fong <roger_fong@apple.com>
749 Make Windows makefile copy build output to a different folder.
750 <rdar://problem/14219184>.
752 * JavaScriptCore.vcxproj/JavaScriptCore.make:
754 2013-06-18 Roger Fong <roger_fong@apple.com>
756 Disable some feature flags.
757 <rdar://problem/14171207>.
759 Rubberstamped by Jon Lee.
761 * Configurations/FeatureDefines.xcconfig:
763 2013-06-18 Oliver Hunt <oliver@apple.com>
765 Going to google.com/trends causes a crash
766 https://bugs.webkit.org/show_bug.cgi?id=117602
768 Reviewed by Geoffrey Garen.
770 When handling op_throw, etc we need to flush the variables and arguments
771 for the entire inline stack, not just the top frame.
773 * dfg/DFGByteCodeParser.cpp:
774 (JSC::DFG::ByteCodeParser::flushAllArgumentsAndCapturedVariablesInInlineStack):
775 (JSC::DFG::ByteCodeParser::parseBlock):
777 2013-06-18 Roger Fong <roger_fong@apple.com>
779 Replace tools32 folder with tools and update WebKit Windows solution accordingly.
780 <rdar://problem/14118143>.
782 Rubberstamped by Brent Fulgham.
784 * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
785 * JavaScriptCore.vcxproj/JavaScriptCoreDebug.props:
786 * JavaScriptCore.vcxproj/JavaScriptCoreDebugCFLite.props:
787 * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj:
788 * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedDebug.props:
789 * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedProduction.props:
790 * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedRelease.props:
791 * JavaScriptCore.vcxproj/JavaScriptCorePostBuild.cmd:
792 * JavaScriptCore.vcxproj/JavaScriptCoreProduction.props:
793 * JavaScriptCore.vcxproj/JavaScriptCoreRelease.props:
794 * JavaScriptCore.vcxproj/JavaScriptCoreReleaseCFLite.props:
795 * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj:
796 * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.vcxproj:
797 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj:
798 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.props:
799 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.props:
800 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.props:
801 * JavaScriptCore.vcxproj/jsc/jsc.vcxproj:
802 * JavaScriptCore.vcxproj/jsc/jscDebug.props:
803 * JavaScriptCore.vcxproj/jsc/jscProduction.props:
804 * JavaScriptCore.vcxproj/jsc/jscRelease.props:
805 * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
806 * JavaScriptCore.vcxproj/testRegExp/testRegExpDebug.props:
807 * JavaScriptCore.vcxproj/testRegExp/testRegExpProduction.props:
808 * JavaScriptCore.vcxproj/testRegExp/testRegExpRelease.props:
809 * JavaScriptCore.vcxproj/testapi/testapi.vcxproj:
810 * JavaScriptCore.vcxproj/testapi/testapiDebug.props:
811 * JavaScriptCore.vcxproj/testapi/testapiDebugCFLite.props:
812 * JavaScriptCore.vcxproj/testapi/testapiProduction.props:
813 * JavaScriptCore.vcxproj/testapi/testapiRelease.props:
814 * JavaScriptCore.vcxproj/testapi/testapiReleaseCFLite.props:
816 2013-06-17 Roger Fong <roger_fong@apple.com>
818 Modify Windows makefiles to copy some bin output into Program Files.
819 https://bugs.webkit.org/show_bug.cgi?id=117714.
820 <rdar://problem/14179054>
822 Reviewed by Brent Fulgham.
824 * JavaScriptCore.vcxproj/JavaScriptCore.make:
826 2013-06-14 Ryosuke Niwa <rniwa@webkit.org>
828 Function names on Object.prototype should be common identifiers
829 https://bugs.webkit.org/show_bug.cgi?id=117614
831 Reviewed by Darin Adler.
833 Patch written by Sam Weinig. Make Object's prototype function names common identififers since they're used frequently.
835 * runtime/CommonIdentifiers.h:
836 * runtime/FunctionConstructor.cpp:
837 (JSC::constructFunction):
838 * runtime/JSGlobalObject.cpp:
839 (JSC::JSGlobalObject::reset):
840 * runtime/JSObject.h:
841 * runtime/ObjectPrototype.cpp:
842 (JSC::ObjectPrototype::finishCreation):
843 * runtime/StringPrototype.cpp:
844 (JSC::StringPrototype::finishCreation):
846 2013-06-13 Ryosuke Niwa <rniwa@webkit.org>
848 Remove LiteralIdentifierTable
849 https://bugs.webkit.org/show_bug.cgi?id=117613
851 Reviewed by Geoffrey Garen.
853 Removed LiteralIdentifierTable since it doesn't seem to have any perf. impact now.
855 * runtime/Identifier.cpp:
856 (JSC::Identifier::add):
858 2013-06-12 Conrad Shultz <conrad_shultz@apple.com>
860 JSExport header documentation substitutes "semicolon" for "colon"
861 https://bugs.webkit.org/show_bug.cgi?id=117552
863 Reviewed by Mark Hahnenberg.
868 2013-06-10 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
870 [JSC] Remove a vestige of wxWidgets support.
871 https://bugs.webkit.org/show_bug.cgi?id=117419
873 Reviewed by Benjamin Poulain.
875 * runtime/JSExportMacros.h: Remove a check for BUILDING_WX__ that
876 seems to have gone unnoticed when the wxWidgets port was removed.
878 2013-06-06 Roger Fong <roger_fong@apple.com>
880 Stop copying AAS binaries into build folder.
881 https://bugs.webkit.org/show_bug.cgi?id=117319.
883 Rubberstamped by Darin Adler.
885 * JavaScriptCore.vcxproj/JavaScriptCorePreLink.cmd:
886 * JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd:
887 * JavaScriptCore.vcxproj/jsc/jscPreLink.cmd:
888 * JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd:
889 * JavaScriptCore.vcxproj/testRegExp/testRegExpPreLink.cmd:
890 * JavaScriptCore.vcxproj/testapi/testapiPreLink.cmd:
892 2013-06-05 Filip Pizlo <fpizlo@apple.com>
894 DFG CFA shouldn't filter ArrayModes with ALL_NON_ARRAY_ARRAY_MODES if the speculated type is not SpecArray
895 https://bugs.webkit.org/show_bug.cgi?id=117279
896 <rdar://problem/14078025>
898 Reviewed by Mark Hahnenberg.
900 * dfg/DFGAbstractValue.h:
901 (JSC::DFG::AbstractValue::filterArrayModesByType):
903 2013-06-05 Michael Saboff <msaboff@apple.com>
905 JSC: Crash beneath cti_op_div @ http://gmailblog.blogspot.com
906 https://bugs.webkit.org/show_bug.cgi?id=117280
908 Reviewed by Filip Pizlo.
910 Updated the merging of VariableAccessData nodes in ArgumentPosition lists
911 to find the unified VariableAccessData node that is the root of the
912 current node instead of using the current node directly when merging
914 Added new dump code to dump the ArgumentPosition list.
916 * dfg/DFGArgumentPosition.h:
917 (JSC::DFG::rgumentPosition::mergeArgumentPredictionAwareness):
918 (JSC::DFG::ArgumentPosition::mergeArgumentUnboxingAwareness):
919 (JSC::DFG::ArgumentPosition::dump):
921 (JSC::DFG::Graph::dump):
923 2013-06-05 Bear Travis <betravis@adobe.com>
925 [CSS Exclusions][CSS Shapes] Split CSS Exclusions & Shapes compile & runtime flags
926 https://bugs.webkit.org/show_bug.cgi?id=117172
928 Reviewed by Alexandru Chiculita.
930 Adding the CSS_SHAPES compile flag.
932 * Configurations/FeatureDefines.xcconfig:
934 2013-06-05 Balazs Kilvady <kilvadyb@homejinni.com>
936 JSC Assertion tests failures on MIPS.
937 https://bugs.webkit.org/show_bug.cgi?id=116552
939 Reviewed by Geoffrey Garen.
941 Fix condition handlig in branchAdd32 implemetations.
943 * assembler/MacroAssemblerMIPS.h:
944 (JSC::MacroAssemblerMIPS::branchAdd32):
946 2013-06-04 Julien Brianceau <jbrianceau@nds.com>
948 [sh4] Add floating point absolute function support in baseline JIT.
949 https://bugs.webkit.org/show_bug.cgi?id=117147
951 Reviewed by Geoffrey Garen.
953 * assembler/MacroAssemblerSH4.h:
954 (JSC::MacroAssemblerSH4::supportsFloatingPointAbs):
955 (JSC::MacroAssemblerSH4::absDouble):
956 * assembler/SH4Assembler.h:
957 (JSC::SH4Assembler::dabs):
958 (JSC::SH4Assembler::printInstr):
960 2013-06-04 Zan Dobersek <zdobersek@igalia.com>
962 [JSC] Test262 15.5.4.9_3 test is failing
963 https://bugs.webkit.org/show_bug.cgi?id=116789
965 Reviewed by Geoffrey Garen.
967 Bring the String.prototype.localeCompare behavior in line wit ES5 15.9.4.9.
968 If method is not given enough arguments, the minimal amount of arguments must be assumed, with their value being undefined.
969 The first argument to localeCompare, in its string form, is used as the 'that' string that's used in the comparison.
970 Therefor, when calling str.localeCompare() or str.localeCompare(undefined), the first argument is `undefined` and the
971 string "undefined" is used as the string to which value of str is compared.
973 * runtime/StringPrototype.cpp:
974 (JSC::stringProtoFuncLocaleCompare): Remove the early return in case of no given arguments to achieve the desired behavior.
976 2013-06-03 Hojong Han <hojong.han@samsung.com>
978 [EFL] Implement GCActivityCallback
979 https://bugs.webkit.org/show_bug.cgi?id=95923
981 Reviewed by Geoffrey Garen.
983 Implements the activity triggered garbage collector.
984 Additional GCs can be triggered by platfrom timer.
985 It has sort of compaction effect not to make JSC heap grow fast
986 so that memory usage becomes lower than usual.
988 * PlatformEfl.cmake: Added.
989 * heap/HeapTimer.cpp:
991 (JSC::HeapTimer::HeapTimer):
992 (JSC::HeapTimer::~HeapTimer):
993 (JSC::HeapTimer::add):
994 (JSC::HeapTimer::stop):
995 (JSC::HeapTimer::timerEvent):
1000 * runtime/GCActivityCallback.cpp:
1002 (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
1003 (JSC::DefaultGCActivityCallback::scheduleTimer):
1004 (JSC::DefaultGCActivityCallback::cancelTimer):
1005 (JSC::DefaultGCActivityCallback::didAllocate):
1006 * runtime/GCActivityCallback.h:
1007 (GCActivityCallback):
1008 (JSC::GCActivityCallback::GCActivityCallback):
1009 (DefaultGCActivityCallback):
1011 2013-06-03 Roger Fong <roger_fong@apple.com>
1013 Nuke VS2005 files from the tree.
1014 <rdar://problem/14042021>.
1016 Rubberstamped by Brent Fulgham.
1018 * JavaScriptCore.vcproj: Removed.
1019 * JavaScriptCore.vcproj/JavaScriptCore: Removed.
1020 * JavaScriptCore.vcproj/JavaScriptCore.make: Removed.
1021 * JavaScriptCore.vcproj/JavaScriptCore.resources: Removed.
1022 * JavaScriptCore.vcproj/JavaScriptCore.resources/Info.plist: Removed.
1023 * JavaScriptCore.vcproj/JavaScriptCore.sln: Removed.
1024 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Removed.
1025 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCF.vsprops: Removed.
1026 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops: Removed.
1027 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Removed.
1028 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebug.vsprops: Removed.
1029 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugAll.vsprops: Removed.
1030 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugCairoCFLite.vsprops: Removed.
1031 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def: Removed.
1032 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Removed.
1033 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Removed.
1034 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Removed.
1035 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebug.vsprops: Removed.
1036 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebugAll.vsprops: Removed.
1037 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebugCairoCFLite.vsprops: Removed.
1038 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedProduction.vsprops: Removed.
1039 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedRelease.vsprops: Removed.
1040 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedReleaseCairoCFLite.vsprops: Removed.
1041 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedReleasePGO.vsprops: Removed.
1042 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePGOOptimize.vsprops: Removed.
1043 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd: Removed.
1044 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd: Removed.
1045 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd: Removed.
1046 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreProduction.vsprops: Removed.
1047 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreRelease.vsprops: Removed.
1048 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseCairoCFLite.vsprops: Removed.
1049 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops: Removed.
1050 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops: Removed.
1051 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Removed.
1052 * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: Removed.
1053 * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Removed.
1054 * JavaScriptCore.vcproj/LLIntAssembly: Removed.
1055 * JavaScriptCore.vcproj/LLIntAssembly/LLIntAssembly.make: Removed.
1056 * JavaScriptCore.vcproj/LLIntAssembly/LLIntAssembly.vcproj: Removed.
1057 * JavaScriptCore.vcproj/LLIntAssembly/build-LLIntAssembly.sh: Removed.
1058 * JavaScriptCore.vcproj/LLIntDesiredOffsets: Removed.
1059 * JavaScriptCore.vcproj/LLIntDesiredOffsets/LLIntDesiredOffsets.make: Removed.
1060 * JavaScriptCore.vcproj/LLIntDesiredOffsets/LLIntDesiredOffsets.vcproj: Removed.
1061 * JavaScriptCore.vcproj/LLIntDesiredOffsets/build-LLIntDesiredOffsets.sh: Removed.
1062 * JavaScriptCore.vcproj/LLIntOffsetsExtractor: Removed.
1063 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcproj: Removed.
1064 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.vsprops: Removed.
1065 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.vsprops: Removed.
1066 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebugAll.vsprops: Removed.
1067 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebugCairoCFLite.vsprops: Removed.
1068 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.vsprops: Removed.
1069 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.vsprops: Removed.
1070 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorReleaseCairoCFLite.vsprops: Removed.
1071 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorReleasePGO.vsprops: Removed.
1072 * JavaScriptCore.vcproj/jsc: Removed.
1073 * JavaScriptCore.vcproj/jsc/jsc.vcproj: Removed.
1074 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Removed.
1075 * JavaScriptCore.vcproj/jsc/jscDebug.vsprops: Removed.
1076 * JavaScriptCore.vcproj/jsc/jscDebugAll.vsprops: Removed.
1077 * JavaScriptCore.vcproj/jsc/jscDebugCairoCFLite.vsprops: Removed.
1078 * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd: Removed.
1079 * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd: Removed.
1080 * JavaScriptCore.vcproj/jsc/jscPreLink.cmd: Removed.
1081 * JavaScriptCore.vcproj/jsc/jscProduction.vsprops: Removed.
1082 * JavaScriptCore.vcproj/jsc/jscRelease.vsprops: Removed.
1083 * JavaScriptCore.vcproj/jsc/jscReleaseCairoCFLite.vsprops: Removed.
1084 * JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops: Removed.
1085 * JavaScriptCore.vcproj/testRegExp: Removed.
1086 * JavaScriptCore.vcproj/testRegExp/testRegExp.vcproj: Removed.
1087 * JavaScriptCore.vcproj/testRegExp/testRegExpCommon.vsprops: Removed.
1088 * JavaScriptCore.vcproj/testRegExp/testRegExpDebug.vsprops: Removed.
1089 * JavaScriptCore.vcproj/testRegExp/testRegExpDebugAll.vsprops: Removed.
1090 * JavaScriptCore.vcproj/testRegExp/testRegExpDebugCairoCFLite.vsprops: Removed.
1091 * JavaScriptCore.vcproj/testRegExp/testRegExpPostBuild.cmd: Removed.
1092 * JavaScriptCore.vcproj/testRegExp/testRegExpPreBuild.cmd: Removed.
1093 * JavaScriptCore.vcproj/testRegExp/testRegExpPreLink.cmd: Removed.
1094 * JavaScriptCore.vcproj/testRegExp/testRegExpProduction.vsprops: Removed.
1095 * JavaScriptCore.vcproj/testRegExp/testRegExpRelease.vsprops: Removed.
1096 * JavaScriptCore.vcproj/testRegExp/testRegExpReleaseCairoCFLite.vsprops: Removed.
1097 * JavaScriptCore.vcproj/testRegExp/testRegExpReleasePGO.vsprops: Removed.
1098 * JavaScriptCore.vcproj/testapi: Removed.
1099 * JavaScriptCore.vcproj/testapi/testapi.vcproj: Removed.
1100 * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Removed.
1101 * JavaScriptCore.vcproj/testapi/testapiDebug.vsprops: Removed.
1102 * JavaScriptCore.vcproj/testapi/testapiDebugAll.vsprops: Removed.
1103 * JavaScriptCore.vcproj/testapi/testapiDebugCairoCFLite.vsprops: Removed.
1104 * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd: Removed.
1105 * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd: Removed.
1106 * JavaScriptCore.vcproj/testapi/testapiPreLink.cmd: Removed.
1107 * JavaScriptCore.vcproj/testapi/testapiProduction.vsprops: Removed.
1108 * JavaScriptCore.vcproj/testapi/testapiRelease.vsprops: Removed.
1109 * JavaScriptCore.vcproj/testapi/testapiReleaseCairoCFLite.vsprops: Removed.
1111 2013-05-31 Filip Pizlo <fpizlo@apple.com>
1113 Incorrect assertion in DFG::Graph::uncheckedActivationRegisterFor()
1114 <rdar://problem/13989324>
1116 Rubber stamped by Mark Hahnenberg.
1118 This has a bogus assertion that checks that the passed CodeOrigin doesn't have
1119 an inline call frame. This was well intentioned in the sense that it is true
1120 that inlined call frames wouldn't have an activation register. But that doesn't
1121 mean that people won't ask. Removing the assertion fixes a debug-only crash and
1122 has no impact on production code. This change adds a comment to that effect.
1125 (JSC::DFG::Graph::uncheckedActivationRegisterFor):
1127 2013-05-31 Julien Brianceau <jbrianceau@nds.com>
1129 [sh4] Fix Overflow case of branchMul32 in baseline JIT.
1130 https://bugs.webkit.org/show_bug.cgi?id=117057
1132 Reviewed by Oliver Hunt.
1134 Current implementation of Overflow case in branchMul32 performs an
1135 unsigned multiplication whereas a signed multiplication is expected.
1137 * assembler/MacroAssemblerSH4.h:
1138 (JSC::MacroAssemblerSH4::branchMul32):
1140 2013-05-31 Julien Brianceau <jbrianceau@nds.com>
1142 [sh4] Fix floating point comparisons in baseline JIT.
1143 https://bugs.webkit.org/show_bug.cgi?id=117066.
1145 Reviewed by Oliver Hunt.
1147 Current implementation of branchDouble function in baseline JIT is wrong
1148 for some conditions and overkill for others. For instance:
1149 - With DoubleGreaterThanOrEqual condition, branch will be taken if either
1150 operand is NaN with current implementation whereras it should not.
1151 - With DoubleNotEqualOrUnordered condition, performed NaN checks are
1152 useless (because comparison result is false if either operand is NaN).
1154 * assembler/MacroAssemblerSH4.h:
1155 (JSC::MacroAssemblerSH4::branchDouble):
1157 2013-05-31 Julien Brianceau <jbrianceau@nds.com>
1159 [sh4] Fix double floating point transfer in baseline JIT.
1160 https://bugs.webkit.org/show_bug.cgi?id=117054
1162 Reviewed by Oliver Hunt.
1164 In current implementation, dmovRegReg function transfers only one single
1165 FPRegister as PR=1 and SZ=0 in floating point status/control register.
1166 Double transfers must be performed with two fmov.s opcodes.
1168 * assembler/MacroAssemblerSH4.h:
1169 (JSC::MacroAssemblerSH4::moveDouble):
1170 (JSC::MacroAssemblerSH4::addDouble): Handle (op2==dest) case properly.
1171 (JSC::MacroAssemblerSH4::sqrtDouble):
1172 * assembler/SH4Assembler.h:
1173 (JSC::SH4Assembler::fmovsRegReg):
1175 2013-05-31 Julien Brianceau <jbrianceau@nds.com>
1177 [sh4] Handle branchType properly in branchTruncateDoubleToInt32.
1178 https://bugs.webkit.org/show_bug.cgi?id=117062
1180 Reviewed by Oliver Hunt.
1182 Current implementation of branchTruncateDoubleToInt32 is incorrect
1183 when branchType == BranchIfTruncateSuccessful in sh4 baseline JIT.
1185 * assembler/MacroAssemblerSH4.h:
1186 (JSC::MacroAssemblerSH4::branchTruncateDoubleToInt32):
1188 2013-05-31 Brent Fulgham <bfulgham@apple.com>
1190 [Windows] Unreviewed build fix for VS2005 builders.
1192 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def: Add
1193 missing export for WTF::SHA1::computeHexDigest
1195 2013-05-30 David Farler <dfarler@apple.com>
1197 Fix jscore-test when not using --sdk option with jsDriver.pl
1198 https://bugs.webkit.org/show_bug.cgi?id=116339
1200 Reviewed by Joe Pecoraro.
1202 * tests/mozilla/jsDriver.pl:
1204 With each test, the shell_command needs to be started from scratch.
1206 This fix will clear the shell_command and start over as before with
1207 the opt_arch option when not using --sdk with jsDriver.pl.
1209 2013-05-30 Roger Fong <roger_fong@apple.com>
1211 Get rid of JavaScript exports file on AppleWin port.
1212 https://bugs.webkit.org/show_bug.cgi?id=117050.
1214 Reviewed by Darin Adler.
1216 Delete the JavaScriptCoreExportGenerator folder and remove dependencies.
1217 Start linking in WTF.lib now that it's a shared library.
1219 * JavaScriptCore.vcxproj/JavaScriptCore.submit.sln:
1220 * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
1221 * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
1222 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator: Removed.
1223 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj: Removed.
1224 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj.filters: Removed.
1225 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorBuildCmd.cmd: Removed.
1226 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorCommon.props: Removed.
1227 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorDebug.props: Removed.
1228 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPostBuild.cmd: Removed.
1229 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPreBuild.cmd: Removed.
1230 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorProduction.props: Removed.
1231 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorRelease.props: Removed.
1232 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in: Removed.
1233 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/make-export-file-generator: Removed.
1234 * JavaScriptCore.vcxproj/jsc/jscCommon.props:
1235 * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
1236 * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters:
1237 * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
1238 * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
1240 2013-05-22 David Farler <dfarler@apple.com>
1242 Add --sdk option to jsDriver.pl to run with iOS Simulator
1243 https://bugs.webkit.org/show_bug.cgi?id=116339
1245 Reviewed by David Kilzer.
1247 * tests/mozilla/jsDriver.pl:
1249 Prefix shell command with the path to the "sim" tool.
1251 Add -d / --sdk option.
1253 Help message for -d / --sdk option.
1255 2013-05-30 Julien Brianceau <jbrianceau@nds.com>
1257 [sh4] Optimize NaN checks in LLINT for floating point comparisons.
1258 https://bugs.webkit.org/show_bug.cgi?id=117049
1260 Reviewed by Oliver Hunt.
1262 Use the fcmp/eq opcode in sh4 LLINT to test if a double is NaN.
1263 This is more efficient, doesn't require two tmp registers and requires
1264 less code than current implementation (which converts double to float,
1265 then checks 'E = Emax + 1' and 'f != 0').
1267 * offlineasm/sh4.rb:
1269 2013-05-30 Oliver Hunt <oliver@apple.com>
1271 JSCallbackObject does not correctly initialise the PropertySlot for getOwnPropertyDescriptor
1272 https://bugs.webkit.org/show_bug.cgi?id=117053
1274 Reviewed by Mark Hahnenberg.
1276 Set appropriate thisValue on the PropertySlot
1278 * API/JSCallbackObjectFunctions.h:
1279 (JSC::::getOwnPropertyDescriptor):
1280 * API/tests/testapi.mm:
1282 2013-05-29 Jeffrey Pfau <jpfau@apple.com>
1284 [Mac] Enable cache partitioning and the public suffix list on 10.8
1285 <rdar://problem/13679019>
1287 Rubber-stamped by David Kilzer.
1289 * Configurations/FeatureDefines.xcconfig:
1291 2013-05-28 Brent Fulgham <bfulgham@apple.com>
1293 [Windows] Put correct byteCompile symbol in file. Previous version
1294 had an extra 'i' appended to the end.
1296 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
1297 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
1299 2013-05-28 Brent Fulgham <bfulgham@apple.com>
1301 [Windows] Unreviewed build fix. Remove ?byteCompile symbol that
1302 is no longer accessible during link.
1304 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
1305 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
1307 2013-05-28 Gavin Barraclough <barraclough@apple.com>
1309 String(new Date(2010,10,1)) is wrong in KRAT, YAKT
1310 https://bugs.webkit.org/show_bug.cgi?id=106750
1312 Reviewed by Darin Adler.
1314 * runtime/JSDateMath.cpp:
1315 (JSC::msToGregorianDateTime):
1316 - Additional review comment fix.
1318 2013-05-28 Brent Fulgham <bfulgham@apple.com>
1320 [Windows] Unreviewed build fix after r150833
1322 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
1323 A CR/LF combination was lost in the file, combining two symbols.
1325 2013-05-27 Gavin Barraclough <barraclough@apple.com>
1327 String(new Date(2010,10,1)) is wrong in KRAT, YAKT
1328 https://bugs.webkit.org/show_bug.cgi?id=106750
1330 Reviewed by Darin Adler.
1332 First part of a fix, simplfy date handling code, instead of operating separately
1333 on the UTC-standard and standard-DST offsets, just generate a combined UTC-local
1334 offset (this is what we actually need, and what the OS gives us).
1336 * runtime/JSDateMath.cpp:
1337 (JSC::getLocalTimeOffset):
1338 - removed getUTCOffset, converted getDSTOffset -> getLocalTimeOffset
1339 (JSC::gregorianDateTimeToMS):
1340 (JSC::msToGregorianDateTime):
1341 (JSC::parseDateFromNullTerminatedCharacters):
1342 - call getLocalTimeOffset instead of getUTCOffset/getDSTOffset
1344 (JSC::VM::resetDateCache):
1345 - removed cachedUTCOffset, converted DSTOffsetCache -> LocalTimeOffsetCache
1347 (JSC::LocalTimeOffsetCache::LocalTimeOffsetCache):
1348 (JSC::LocalTimeOffsetCache::reset):
1349 (LocalTimeOffsetCache):
1350 - removed cachedUTCOffset, converted DSTOffsetCache -> LocalTimeOffsetCache
1352 2013-05-28 Mark Hahnenberg <mhahnenberg@apple.com>
1354 r150199 is very wrong
1355 https://bugs.webkit.org/show_bug.cgi?id=116876
1357 JSValue needs to protect its internal JSValueRef.
1359 Reviewed by Darin Adler.
1362 (-[JSValue initWithValue:inContext:]):
1363 (-[JSValue dealloc]):
1364 * API/tests/testapi.mm: Added a simple test to make sure that we protect the
1365 underlying JavaScript value across garbage collections.
1367 2013-05-27 Patrick Gansterer <paroga@webkit.org>
1369 Use ICU_INCLUDE_DIRS in BlackBerry CMake files
1370 https://bugs.webkit.org/show_bug.cgi?id=116210
1372 Reviewed by Rob Buis.
1374 Set and use the ICU_INCLUDE_DIRS variable to avoid
1375 duplicated adding of the ICU include directory.
1377 * PlatformBlackBerry.cmake:
1379 2013-05-27 Gabor Rapcsanyi <rgabor@webkit.org>
1381 MacroAssemblerARM should use xor to swap registers instead of move
1382 https://bugs.webkit.org/show_bug.cgi?id=116306
1384 Reviewed by Zoltan Herczeg.
1386 Change register swapping to xor from move and this way we don't need
1387 temporary register anymore.
1389 * assembler/MacroAssemblerARM.h:
1390 (JSC::MacroAssemblerARM::swap):
1392 2013-05-25 Filip Pizlo <fpizlo@apple.com>
1394 We broke (-2^31/-1)|0 in the DFG
1395 https://bugs.webkit.org/show_bug.cgi?id=116767
1397 Reviewed by Andreas Kling.
1399 The bug is that we were assuming that in the -2^31 case, we already had -2^31
1400 in the result register. This was a wrong assumption.
1402 * dfg/DFGSpeculativeJIT.cpp:
1403 (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForX86):
1405 2013-05-24 Filip Pizlo <fpizlo@apple.com>
1408 https://bugs.webkit.org/show_bug.cgi?id=116736
1410 Reviewed by Gavin Barraclough.
1412 * parser/ASTBuilder.h:
1413 (JSC::ASTBuilder::createLogicalNot):
1414 * runtime/JSCJSValueInlines.h:
1415 (JSC::JSValue::pureToBoolean):
1417 2013-05-24 Julien Brianceau <jbrianceau@nds.com>
1419 [sh4] Optimize LLINT generated code and fix few bugs in baseline JIT.
1420 https://bugs.webkit.org/show_bug.cgi?id=116716
1422 Reviewed by Geoffrey Garen.
1424 * assembler/MacroAssemblerSH4.h:
1425 (JSC::MacroAssemblerSH4::mul32): Cosmetic changes.
1426 (JSC::MacroAssemblerSH4::convertInt32ToDouble): Absolute address was not dereferenced.
1427 (JSC::MacroAssemblerSH4::branch32): Absolute address was not dereferenced.
1428 (JSC::MacroAssemblerSH4::revertJumpReplacementToBranchPtrWithPatch): Use all 32 bits of pointer for revertJump call.
1429 * assembler/SH4Assembler.h:
1430 (JSC::SH4Assembler::revertJump): Use changePCrelativeAddress to patch the whole pointer.
1431 (JSC::SH4Assembler::linkJump): Cosmetic change.
1432 * offlineasm/sh4.rb: Optimize LLINT generated code.
1434 2013-05-23 Peter Wang <peter.wang@torchmobile.com.cn>
1436 CLoop llint backend should not use the d8 register as scratch register
1437 https://bugs.webkit.org/show_bug.cgi?id=116019
1439 Reviewed by Csaba Osztrogonác.
1441 * offlineasm/cloop.rb:
1443 2013-05-22 Peter Wang <peter.wang@torchmobile.com.cn>
1445 Use uninitialized register in "JIT::emit_op_neq_null" and "emit_op_eq_null"
1446 https://bugs.webkit.org/show_bug.cgi?id=116593
1448 Reviewed by Filip Pizlo.
1450 Generated instructions using uninitialized register. It's caused by a mistake of r126494.
1452 * jit/JITOpcodes32_64.cpp:
1453 (JSC::JIT::emit_op_eq_null):
1454 (JSC::JIT::emit_op_neq_null):
1456 2013-05-22 Filip Pizlo <fpizlo@apple.com>
1458 Fix indentation of CodeBlock.h
1460 Rubber stampted by Mark Hahnenberg.
1462 * bytecode/CodeBlock.h:
1464 2013-05-22 Julien Brianceau <jbrianceau@nds.com>
1466 [sh4] Remove MacroAssemblerSH4.cpp file.
1467 https://bugs.webkit.org/show_bug.cgi?id=116596.
1469 Reviewed by Geoffrey Garen.
1471 Move linkCall and repatchCall implementations from MacroAssemblerSH4.cpp
1472 to MacroAssemblerSH4.h and remove MacroAssemblerSH4.cpp, as it is done
1473 for other architectures.
1475 * GNUmakefile.list.am:
1476 * JavaScriptCore.xcodeproj/project.pbxproj:
1478 * assembler/MacroAssemblerSH4.cpp: Removed.
1479 * assembler/MacroAssemblerSH4.h:
1480 (JSC::MacroAssemblerSH4::linkCall):
1481 (MacroAssemblerSH4):
1482 (JSC::MacroAssemblerSH4::repatchCall):
1484 2013-05-21 Brent Fulgham <bfulgham@apple.com>
1486 [Windows] Unreviewed speculative fix for test-bots.
1488 Add export declaration for WTFInvokeCrashHook to avoid runtime
1489 load error on test bots.
1491 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
1492 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
1494 2013-05-21 Mark Lam <mark.lam@apple.com>
1496 Added missing assert condition for PositiveOrZero in ARM branch32().
1497 https://bugs.webkit.org/show_bug.cgi?id=116538.
1499 Reviewed by Geoffrey Garen.
1501 * assembler/MacroAssemblerARM.h:
1502 (JSC::MacroAssemblerARM::branchAdd32):
1504 2013-05-20 Mark Hahnenberg <mhahnenberg@apple.com>
1507 https://bugs.webkit.org/show_bug.cgi?id=116362
1509 Rubber stamped by Geoff Garen.
1513 2013-05-20 Oliver Hunt <oliver@apple.com>
1515 Make C API more robust against null contexts
1516 https://bugs.webkit.org/show_bug.cgi?id=116462
1518 Reviewed by Anders Carlsson.
1520 Handle null contexts in a non-crashy way. It's a bug to ever call the
1521 API with a null context, and the absence of a context means we can't
1522 produce a meaningful result, so we still assert in debug builds.
1524 Now where possible we detect and early return, returning null for any
1525 pointer type, NaN for doubles, and false for any boolean result.
1529 (JSCheckScriptSyntax):
1530 (JSReportExtraMemoryCost):
1531 * API/JSContextRef.cpp:
1532 (JSContextGetGlobalObject):
1533 (JSContextGetGroup):
1534 (JSContextGetGlobalContext):
1535 (JSContextCreateBacktrace):
1536 * API/JSObjectRef.cpp:
1538 (JSObjectMakeFunctionWithCallback):
1539 (JSObjectMakeConstructor):
1540 (JSObjectMakeFunction):
1541 (JSObjectMakeArray):
1543 (JSObjectMakeError):
1544 (JSObjectMakeRegExp):
1545 (JSObjectGetPrototype):
1546 (JSObjectSetPrototype):
1547 (JSObjectHasProperty):
1548 (JSObjectGetProperty):
1549 (JSObjectSetProperty):
1550 (JSObjectGetPropertyAtIndex):
1551 (JSObjectSetPropertyAtIndex):
1552 (JSObjectDeleteProperty):
1553 (JSObjectCopyPropertyNames):
1554 * API/JSValueRef.cpp:
1556 (JSValueIsUndefined):
1562 (JSValueIsObjectOfClass):
1564 (JSValueIsStrictEqual):
1565 (JSValueIsInstanceOfConstructor):
1566 (JSValueMakeUndefined):
1568 (JSValueMakeBoolean):
1569 (JSValueMakeNumber):
1570 (JSValueMakeString):
1571 (JSValueMakeFromJSONString):
1572 (JSValueCreateJSONString):
1575 (JSValueToStringCopy):
1578 * API/JSWeakObjectMapRefPrivate.cpp:
1580 2013-05-20 David Kilzer <ddkilzer@apple.com>
1582 Synchronize FeatureDefines.xcconfig
1584 * Configurations/FeatureDefines.xcconfig: Remove
1585 ENABLE_LINK_PRERENDER. This was missed in r150356.
1587 2013-05-19 Anders Carlsson <andersca@apple.com>
1589 Remove link prerendering code
1590 https://bugs.webkit.org/show_bug.cgi?id=116415
1592 Reviewed by Darin Adler.
1594 This code was only used by Chromium and is dead now.
1596 * Configurations/FeatureDefines.xcconfig:
1598 2013-05-18 Patrick Gansterer <paroga@webkit.org>
1600 [CMake] Replace *_LIBRARY_NAME with *_OUTPUT_NAME
1601 https://bugs.webkit.org/show_bug.cgi?id=114554
1603 Reviewed by Gyuyoung Kim.
1605 Using variables as target names is very uncommon in CMake.
1606 The usual way to specify the name of the resulting binary
1607 is to set the OUTPUT_NAME target property.
1610 * shell/CMakeLists.txt:
1612 2013-05-17 Patrick Gansterer <paroga@webkit.org>
1614 [CMake] Remove invalid include paths
1615 https://bugs.webkit.org/show_bug.cgi?id=116213
1617 Reviewed by Gyuyoung Kim.
1619 Since "${JAVASCRIPTCORE_DIR}/wtf" does not exist, it is safe
1620 to remove them from the list of include directories.
1622 * PlatformEfl.cmake: Removed.
1623 * PlatformGTK.cmake: Removed.
1625 2013-05-16 Patrick Gansterer <paroga@webkit.org>
1627 Consolidate lists in JavaScriptCore CMake files
1628 https://bugs.webkit.org/show_bug.cgi?id=115992
1630 Reviewed by Gyuyoung Kim.
1632 Move common files into the CMakeLists.txt to avoid duplicating the list of files.
1633 Also rebase the recently added GTK files to match the other CMake ports, since
1634 the submitted patch was based on an older version of the source tree.
1637 * PlatformEfl.cmake:
1638 * PlatformGTK.cmake:
1639 * shell/CMakeLists.txt:
1640 * shell/PlatformEfl.cmake:
1641 * shell/PlatformGTK.cmake:
1643 2013-05-16 Geoffrey Garen <ggaren@apple.com>
1645 JSValue shouldn't protect/unprotect its context
1646 https://bugs.webkit.org/show_bug.cgi?id=116234
1648 Reviewed by Mark Hahnenberg.
1650 Our retain on _context is sufficient.
1653 (-[JSValue initWithValue:inContext:]):
1654 (-[JSValue dealloc]):
1656 2013-05-15 Ryosuke Niwa <rniwa@webkit.org>
1658 Another Windows build fix attempt after r150160.
1660 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
1661 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
1663 2013-05-15 Oliver Hunt <oliver@apple.com>
1665 RefCountedArray needs to use vector initialisers for its backing store
1666 https://bugs.webkit.org/show_bug.cgi?id=116194
1668 Reviewed by Gavin Barraclough.
1670 Use an out of line function to clear the exception stack to avoid
1671 needing to include otherwise unnecessary headers all over the place.
1673 Everything else is just being updated to use that.
1675 * bytecompiler/BytecodeGenerator.cpp:
1676 * interpreter/CallFrame.h:
1677 (JSC::ExecState::clearSupplementaryExceptionInfo):
1678 * interpreter/Interpreter.cpp:
1679 (JSC::Interpreter::addStackTraceIfNecessary):
1680 (JSC::Interpreter::throwException):
1681 * runtime/JSGlobalObject.cpp:
1682 (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope):
1685 (JSC::VM::clearExceptionStack):
1688 (JSC::VM::exceptionStack):
1690 2013-05-15 Commit Queue <commit-queue@webkit.org>
1692 Unreviewed, rolling out r150051.
1693 http://trac.webkit.org/changeset/150051
1694 https://bugs.webkit.org/show_bug.cgi?id=116186
1696 Broke all JSC tests on Mac and the author is unresponsive
1697 (Requested by rniwa on #webkit).
1699 * JavaScriptCore.xcodeproj/project.pbxproj:
1701 2013-05-15 Julien Brianceau <jbrianceau@nds.com>
1703 Remove savedTimeoutReg from JITStackFrame for sh4 base JIT.
1704 https://bugs.webkit.org/show_bug.cgi?id=116143
1706 Reviewed by Geoffrey Garen.
1708 Since r148119, timeoutCheckRegister is removed from baseline JIT.
1709 So we don't need to save r8 register in JITStackFrame anymore for sh4.
1715 2013-05-15 Nico Weber <thakis@chromium.org>
1717 WebKit doesn't support MSVS2003 any more, remove preprocessor checks for older versions.
1718 https://bugs.webkit.org/show_bug.cgi?id=116157
1720 Reviewed by Anders Carlsson.
1722 Also remove a gcc3.2 workaround.
1724 Merges parts of these two commits by the talented Nico Weber:
1725 https://chromium.googlesource.com/chromium/blink/+/3677e2f47348daeff405a40b6f90fbdf0654c2f5
1726 https://chromium.googlesource.com/chromium/blink/+/0fcd96c448dc30be1416dcc15713c53710c1a312
1728 * os-win32/inttypes.h:
1730 2013-05-13 Alvaro Lopez Ortega <alvaro@alobbs.com>
1732 Nightly build's jsc doesn't work without DYLD_FRAMEWORK...
1733 https://bugs.webkit.org/show_bug.cgi?id=79065
1735 Reviewed by Darin Adler.
1737 Fixes the build process so the depencencies of the jsc binary are
1738 modified before its copied to its target directory. In this way
1739 jsc should always use relative reference to the JavaScriptCore
1742 * JavaScriptCore.xcodeproj/project.pbxproj: Fixes the commands in
1743 the "Copy Into Framework" target.
1745 2013-05-13 Mark Hahnenberg <mhahnenberg@apple.com>
1747 Objective-C API: scanExternalObjectGraph should not create new JSVirtualMachine wrappers
1748 https://bugs.webkit.org/show_bug.cgi?id=116074
1750 If scanExternalObjectGraph creates a new JSVirtualMachine wrapper during collection, when the
1751 scanExternalObjectGraph call finishes and the autorelease pool is drained we will dealloc the
1752 JSVirtualMachine which will cause us to try to take the API lock for the corresponding VM.
1753 If this happens on a GC thread other than the "main" thread, we will deadlock. The solution
1754 is to just check the VM cache, and if there is no JSVirtualMachine wrapper, return early.
1756 Reviewed by Darin Adler.
1758 * API/JSVirtualMachine.mm:
1759 (scanExternalObjectGraph):
1761 2013-05-13 Benjamin Poulain <benjamin@webkit.org>
1763 Improve stringProtoFuncLastIndexOf for the prefix case
1764 https://bugs.webkit.org/show_bug.cgi?id=115952
1766 Reviewed by Geoffrey Garen.
1768 * runtime/StringPrototype.cpp:
1769 (JSC::stringProtoFuncLastIndexOf):
1770 Use the optimized string search when possible.
1772 On Joseph Pecoraro's tests, this gives a ~30% speed improvement.
1774 2013-05-13 Zalan Bujtas <zalan@apple.com>
1776 WebProcess consuming very high CPU on linkedin.com
1777 https://bugs.webkit.org/show_bug.cgi?id=115601
1779 Reviewed by Andreas Kling.
1781 Disable WEB_TIMING_MINIMAL.
1782 Turn off window.performance and performance.now(). Some JS frameworks expect
1783 additional Web Timing APIs, when performance.now() is available.
1785 * Configurations/FeatureDefines.xcconfig:
1787 2013-05-12 Anders Carlsson <andersca@apple.com>
1789 Stop including UnusedParam.h
1790 https://bugs.webkit.org/show_bug.cgi?id=116003
1792 Reviewed by Sam Weinig.
1794 UnusedParam.h is empty now so there's no need to include it anymore.
1797 * API/tests/JSNode.c:
1798 * API/tests/JSNodeList.c:
1799 * API/tests/minidom.c:
1800 * API/tests/testapi.c:
1801 * assembler/AbstractMacroAssembler.h:
1802 * assembler/MacroAssemblerCodeRef.h:
1803 * bytecode/CodeBlock.cpp:
1804 * heap/HandleStack.h:
1805 * interpreter/JSStackInlines.h:
1806 * jit/CompactJITCodeMap.h:
1807 * jit/ExecutableAllocator.h:
1808 * parser/SourceProvider.h:
1809 * runtime/DatePrototype.cpp:
1810 * runtime/JSNotAnObject.cpp:
1811 * runtime/JSSegmentedVariableObject.h:
1812 * runtime/JSVariableObject.h:
1813 * runtime/Options.cpp:
1814 * runtime/PropertyOffset.h:
1816 2013-05-11 Martin Robinson <mrobinson@igalia.com>
1818 [GTK] Add a basic cmake build for WTF and JavaScriptCore
1819 https://bugs.webkit.org/show_bug.cgi?id=115967
1821 Reviewed by Laszlo Gombos.
1823 * PlatformGTK.cmake: Added.
1824 * shell/PlatformGTK.cmake: Added.
1826 2013-05-10 Laszlo Gombos <l.gombos@samsung.com>
1828 Remove USE(OS_RANDOMNESS)
1829 https://bugs.webkit.org/show_bug.cgi?id=108095
1831 Reviewed by Darin Adler.
1833 Remove the USE(OS_RANDOMNESS) guard as it is turned on for all
1839 2013-05-10 Mark Hahnenberg <mhahnenberg@apple.com>
1841 Rename StructureCheckHoistingPhase to TypeCheckHoistingPhase
1842 https://bugs.webkit.org/show_bug.cgi?id=115938
1844 We're going to add some more types of check hoisting soon, so let's have the right name here.
1846 Rubber stamped by Filip Pizlo.
1849 * GNUmakefile.list.am:
1850 * JavaScriptCore.xcodeproj/project.pbxproj:
1852 * dfg/DFGDriver.cpp:
1853 (JSC::DFG::compile):
1854 * dfg/DFGStructureCheckHoistingPhase.cpp: Removed.
1855 * dfg/DFGStructureCheckHoistingPhase.h: Removed.
1856 * dfg/DFGTypeCheckHoistingPhase.cpp: Copied from Source/JavaScriptCore/dfg/DFGStructureCheckHoistingPhase.cpp.
1857 (JSC::DFG::TypeCheckHoistingPhase::TypeCheckHoistingPhase):
1858 (JSC::DFG::performTypeCheckHoisting):
1859 * dfg/DFGTypeCheckHoistingPhase.h: Copied from Source/JavaScriptCore/dfg/DFGStructureCheckHoistingPhase.h.
1861 2013-05-09 Christophe Dumez <ch.dumez@sisa.samsung.com>
1863 Unreviewed build fix after r149836.
1865 It broke at least EFL and GTK builds. Move new static members initialization
1866 outside the class. Those need to have a definition outside the class because
1867 their address is used (e.g. CodeCacheMap::nonGlobalWorkingSetMaxEntries).
1869 * runtime/CodeCache.cpp:
1871 * runtime/CodeCache.h:
1874 2013-05-08 Oliver Hunt <oliver@apple.com>
1876 Code cache stores bogus var references for functions in eval code
1877 https://bugs.webkit.org/show_bug.cgi?id=115747
1879 Reviewed by Mark Hahnenberg.
1881 Non-global eval now uses a per-CodeBlock cache, and only use it
1882 when we're at the top of a function's scope. This means that we
1883 will no longer cache the parsing of a single string across
1884 multiple functions, and we won't cache when we're nested inside
1885 constructs like |with| and |catch| where previously we would, which
1886 is good because caching in those cases is unsound.
1888 * bytecode/EvalCodeCache.h:
1890 (JSC::EvalCodeCache::getSlow):
1891 (JSC::EvalCodeCache::get):
1892 * bytecode/UnlinkedCodeBlock.h:
1893 (JSC::UnlinkedCodeBlock::codeCacheForEval):
1894 (UnlinkedCodeBlock):
1896 * debugger/Debugger.cpp:
1897 (JSC::evaluateInGlobalCallFrame):
1898 * debugger/DebuggerCallFrame.cpp:
1899 (JSC::DebuggerCallFrame::evaluate):
1900 * interpreter/Interpreter.cpp:
1902 * runtime/CodeCache.cpp:
1903 (JSC::CodeCache::CodeCache):
1904 (JSC::CodeCache::generateBytecode):
1906 (JSC::CodeCache::getCodeBlock):
1907 * runtime/CodeCache.h:
1908 (JSC::CodeCacheMap::CodeCacheMap):
1910 (JSC::CodeCacheMap::canPruneQuickly):
1911 (JSC::CodeCacheMap::prune):
1912 (JSC::CodeCache::create):
1914 * runtime/Executable.cpp:
1915 (JSC::EvalExecutable::EvalExecutable):
1916 (JSC::EvalExecutable::compileInternal):
1917 * runtime/Executable.h:
1918 (JSC::EvalExecutable::create):
1920 * runtime/JSGlobalObject.cpp:
1921 (JSC::JSGlobalObject::createEvalCodeBlock):
1922 * runtime/JSGlobalObject.h:
1924 * runtime/JSGlobalObjectFunctions.cpp:
1925 (JSC::globalFuncEval):
1931 2013-05-08 Mark Hahnenberg <mhahnenberg@apple.com>
1933 DFGArrayMode::fromObserved is too liberal when it sees different Array and NonArray shapes
1934 https://bugs.webkit.org/show_bug.cgi?id=115805
1936 Reviewed by Geoffrey Garen.
1938 It checks the observed ArrayModes to see if we have seen any ArrayWith* first. If so, it assumes it's
1939 an Array::Array, even if we've also observed any NonArrayWith* in the ArrayProfile. This leads to the
1940 code generated by jumpSlowForUnwantedArrayMode to check the indexing type against (shape | IsArray)
1941 instead of just shape, which can cause us to exit a lot in the case that we saw a NonArray.
1943 To fix this we need to add a case that checks for both ArrayWith* and NonArrayWith* cases first, which
1944 should then use Array::PossiblyArray, then do the checks we were already doing.
1946 * bytecode/ArrayProfile.h:
1947 (JSC::hasSeenArray):
1948 (JSC::hasSeenNonArray):
1949 * dfg/DFGArrayMode.cpp:
1950 (JSC::DFG::ArrayMode::fromObserved):
1952 2013-05-09 Joe Mason <jmason@blackberry.com>
1954 [BlackBerry] Set up logging buffer on start of jsc executable
1955 https://bugs.webkit.org/show_bug.cgi?id=114688
1957 Reviewed by Rob Buis.
1960 Internally Reviewed By: Jeff Rogers
1963 (main): call BB::Platform::setupApplicationLogging
1965 2013-05-08 Michael Saboff <msaboff@apple.com>
1967 JSC: There should be a disassembler for ARM Thumb 2
1968 https://bugs.webkit.org/show_bug.cgi?id=115827
1970 Reviewed by Filip Pizlo.
1972 Added a new disassembler for ARMv7 Thumb2 instructions for use by the JSC debugging
1973 and profiling code. The opcode coverage is currently not complete. It covers all
1974 of the integer instructions JSC currently emits, but only a limited number of
1975 floating point opcodes. Currently that is just the 64 bit vmov and vmsr instructions.
1977 The disassembler is structured as a base opcode class ARMv7DOpcode with sub-classes
1978 for each instruction group. There is a public format method that does the bulk of
1979 the disassembly work. There are two broad sub-classes, ARMv7D16BitOpcode and
1980 ARMv7D32BitOpcode, for the 16 bit and 32 bit opcodes. There are sub-classes under
1981 those two classes for individual and related groups of opcodes. Instructions are
1982 "dispatched" to the right subclass via two arrays of linked lists in the inner classes
1983 OpcodeGroup. There is one such inner class for each ARMv7D16BitOpcode and ARMv7D32BitOpcode.
1984 Each OpcodeGroup has a mask and a pattern that it applies to the instruction to determine
1985 that it matches a particular group. OpcodeGroup uses a static method to reinterpret_cast
1986 the Opcode object to the right base class for the instruction group for formatting.
1987 The cast eliminates the need of allocating an object for each decoded instruction.
1988 Unknown instructions are formatted as ".word 1234" or ".long 12345678" depending whether
1989 the instruction is 16 or 32 bit.
1991 * JavaScriptCore.xcodeproj/project.pbxproj:
1992 * disassembler/ARMv7: Added.
1993 * disassembler/ARMv7/ARMv7DOpcode.cpp: Added.
1994 (ARMv7Disassembler):
1995 (OpcodeGroupInitializer):
1996 (JSC::ARMv7Disassembler::ARMv7DOpcode::init):
1997 (JSC::ARMv7Disassembler::ARMv7DOpcode::startITBlock):
1998 (JSC::ARMv7Disassembler::ARMv7DOpcode::saveITConditionAt):
1999 (JSC::ARMv7Disassembler::ARMv7DOpcode::fetchOpcode):
2000 (JSC::ARMv7Disassembler::ARMv7DOpcode::disassemble):
2001 (JSC::ARMv7Disassembler::ARMv7DOpcode::bufferPrintf):
2002 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendInstructionName):
2003 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendRegisterName):
2004 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendRegisterList):
2005 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendFPRegisterName):
2006 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::init):
2007 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::doDisassemble):
2008 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::defaultFormat):
2009 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::format):
2010 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::format):
2011 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::format):
2012 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::format):
2013 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::format):
2014 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::format):
2015 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::format):
2016 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchT2::format):
2017 (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::format):
2018 (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT1::format):
2019 (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::format):
2020 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::format):
2021 (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::format):
2022 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::format):
2023 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::format):
2024 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::format):
2025 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::format):
2026 (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::format):
2027 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::format):
2028 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscBreakpointT1::format):
2029 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::format):
2030 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::format):
2031 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::format):
2032 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::format):
2033 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::format):
2034 (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::format):
2035 (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::format):
2036 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::init):
2037 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::doDisassemble):
2038 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::defaultFormat):
2039 (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::format):
2040 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::format):
2041 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::appendModifiedImmediate):
2042 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::format):
2043 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::appendImmShift):
2044 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::format):
2045 (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::format):
2046 (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::appendFPRegister):
2047 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegShift::format):
2048 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::format):
2049 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegParallel::format):
2050 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegMisc::format):
2051 (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::format):
2052 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadRegister::format):
2053 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::format):
2054 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadUnsignedImmediate::format):
2055 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::format):
2056 (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::format):
2057 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::format):
2058 (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate12::format):
2059 (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::format):
2060 (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleRegister::format):
2061 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::format):
2062 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::format):
2063 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::format):
2064 * disassembler/ARMv7/ARMv7DOpcode.h: Added.
2065 (ARMv7Disassembler):
2067 (JSC::ARMv7Disassembler::ARMv7DOpcode::ARMv7DOpcode):
2068 (JSC::ARMv7Disassembler::ARMv7DOpcode::is32BitInstruction):
2069 (JSC::ARMv7Disassembler::ARMv7DOpcode::isFPInstruction):
2070 (JSC::ARMv7Disassembler::ARMv7DOpcode::conditionName):
2071 (JSC::ARMv7Disassembler::ARMv7DOpcode::shiftName):
2072 (JSC::ARMv7Disassembler::ARMv7DOpcode::inITBlock):
2073 (JSC::ARMv7Disassembler::ARMv7DOpcode::startingITBlock):
2074 (JSC::ARMv7Disassembler::ARMv7DOpcode::endITBlock):
2075 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendInstructionNameNoITBlock):
2076 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendSeparator):
2077 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendCharacter):
2078 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendString):
2079 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendShiftType):
2080 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendSignedImmediate):
2081 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendUnsignedImmediate):
2082 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendPCRelativeOffset):
2083 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendShiftAmount):
2084 (ARMv7D16BitOpcode):
2086 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::OpcodeGroup):
2087 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::setNext):
2088 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::next):
2089 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::matches):
2090 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::format):
2091 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::rm):
2092 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::rd):
2093 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::opcodeGroupNumber):
2094 (ARMv7DOpcodeAddRegisterT2):
2095 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::rdn):
2096 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::rm):
2097 (ARMv7DOpcodeAddSPPlusImmediate):
2098 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::rd):
2099 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::immediate8):
2100 (ARMv7DOpcodeAddSubtract):
2101 (ARMv7DOpcodeAddSubtractT1):
2102 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::opName):
2103 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::op):
2104 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::rm):
2105 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::rn):
2106 (ARMv7DOpcodeAddSubtractImmediate3):
2107 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::opName):
2108 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::op):
2109 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::immediate3):
2110 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::rn):
2111 (ARMv7DOpcodeAddSubtractImmediate8):
2112 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::opName):
2113 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::op):
2114 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::rdn):
2115 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::immediate8):
2116 (ARMv7DOpcodeBranchConditionalT1):
2117 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::condition):
2118 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::offset):
2119 (ARMv7DOpcodeBranchExchangeT1):
2120 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::opName):
2121 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::rm):
2122 (ARMv7DOpcodeBranchT2):
2123 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchT2::immediate11):
2124 (ARMv7DOpcodeCompareImmediateT1):
2125 (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::rn):
2126 (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::immediate8):
2127 (ARMv7DOpcodeCompareRegisterT1):
2128 (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT1::rn):
2129 (ARMv7DOpcodeCompareRegisterT2):
2130 (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::rn):
2131 (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::rm):
2132 (ARMv7DOpcodeDataProcessingRegisterT1):
2133 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::opName):
2134 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::op):
2135 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::rm):
2136 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::rdn):
2137 (ARMv7DOpcodeGeneratePCRelativeAddress):
2138 (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::rd):
2139 (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::immediate8):
2140 (ARMv7DOpcodeLoadFromLiteralPool):
2141 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::rt):
2142 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::immediate8):
2143 (ARMv7DOpcodeLoadStoreRegisterImmediate):
2144 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::opName):
2145 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::op):
2146 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::immediate5):
2147 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::rn):
2148 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::rt):
2149 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::scale):
2150 (ARMv7DOpcodeLoadStoreRegisterImmediateWordAndByte):
2151 (ARMv7DOpcodeLoadStoreRegisterImmediateHalfWord):
2152 (ARMv7DOpcodeLoadStoreRegisterOffsetT1):
2153 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::opName):
2154 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::opB):
2155 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rm):
2156 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rn):
2157 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rt):
2158 (ARMv7DOpcodeLoadStoreRegisterSPRelative):
2159 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::opName):
2160 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::op):
2161 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::rt):
2162 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::immediate8):
2163 (ARMv7DOpcodeLogicalImmediateT1):
2164 (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::opName):
2165 (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::op):
2166 (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::immediate5):
2167 (ARMv7DOpcodeMiscAddSubSP):
2168 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::opName):
2169 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::op):
2170 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::immediate7):
2171 (ARMv7DOpcodeMiscByteHalfwordOps):
2172 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::opName):
2173 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::op):
2174 (ARMv7DOpcodeMiscBreakpointT1):
2175 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscBreakpointT1::immediate8):
2176 (ARMv7DOpcodeMiscCompareAndBranch):
2177 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::opName):
2178 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::op):
2179 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::immediate6):
2180 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::rn):
2181 (ARMv7DOpcodeMiscHint16):
2182 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::opName):
2183 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::opA):
2184 (ARMv7DOpcodeMiscIfThenT1):
2185 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::firstCondition):
2186 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::mask):
2187 (ARMv7DOpcodeMiscPushPop):
2188 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::opName):
2189 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::op):
2190 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::registerMask):
2191 (ARMv7DOpcodeMoveImmediateT1):
2192 (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::rd):
2193 (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::immediate8):
2194 (ARMv7DOpcodeMoveRegisterT1):
2195 (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::rd):
2196 (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::rm):
2197 (ARMv7D32BitOpcode):
2198 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::OpcodeGroup):
2199 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::setNext):
2200 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::next):
2201 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::matches):
2202 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::format):
2203 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rd):
2204 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rm):
2205 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rn):
2206 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rt):
2207 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::opcodeGroupNumber):
2208 (ARMv7DOpcodeBranchRelative):
2209 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::sBit):
2210 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::j1):
2211 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::j2):
2212 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::immediate11):
2213 (ARMv7DOpcodeConditionalBranchT3):
2214 (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::offset):
2215 (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::condition):
2216 (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::immediate6):
2217 (ARMv7DOpcodeBranchOrBranchLink):
2218 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::offset):
2219 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::immediate10):
2220 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::isBL):
2221 (ARMv7DOpcodeDataProcessingLogicalAndRithmetic):
2222 (ARMv7DOpcodeDataProcessingModifiedImmediate):
2223 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::opName):
2224 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::op):
2225 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::sBit):
2226 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::immediate12):
2227 (ARMv7DOpcodeDataProcessingShiftedReg):
2228 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::opName):
2229 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::sBit):
2230 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::op):
2231 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::immediate5):
2232 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::type):
2233 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::tbBit):
2234 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::tBit):
2235 (ARMv7DOpcodeDataProcessingReg):
2236 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingReg::op1):
2237 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingReg::op2):
2238 (ARMv7DOpcodeDataProcessingRegShift):
2239 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegShift::opName):
2240 (ARMv7DOpcodeDataProcessingRegExtend):
2241 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::opExtendName):
2242 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::opExtendAndAddName):
2243 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::rotate):
2244 (ARMv7DOpcodeDataProcessingRegParallel):
2245 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegParallel::opName):
2246 (ARMv7DOpcodeDataProcessingRegMisc):
2247 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegMisc::opName):
2248 (ARMv7DOpcodeHint32):
2249 (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::opName):
2250 (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::isDebugHint):
2251 (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::debugOption):
2252 (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::op):
2253 (ARMv7DOpcodeFPTransfer):
2254 (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opH):
2255 (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opL):
2256 (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::rt):
2257 (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opC):
2258 (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opB):
2259 (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::vd):
2260 (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::vn):
2261 (ARMv7DOpcodeDataLoad):
2262 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataLoad::opName):
2263 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataLoad::op):
2264 (ARMv7DOpcodeLoadRegister):
2265 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadRegister::immediate2):
2266 (ARMv7DOpcodeLoadSignedImmediate):
2267 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::pBit):
2268 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::uBit):
2269 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::wBit):
2270 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::immediate8):
2271 (ARMv7DOpcodeLoadUnsignedImmediate):
2272 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadUnsignedImmediate::immediate12):
2273 (ARMv7DOpcodeLongMultipleDivide):
2274 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::opName):
2275 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlalOpName):
2276 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlaldOpName):
2277 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlsldOpName):
2278 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::rdLo):
2279 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::rdHi):
2280 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::op1):
2281 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::op2):
2282 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::nBit):
2283 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::mBit):
2284 (ARMv7DOpcodeDataPushPopSingle):
2285 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::opName):
2286 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::op):
2287 (ARMv7DOpcodeDataStoreSingle):
2288 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataStoreSingle::opName):
2289 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataStoreSingle::op):
2290 (ARMv7DOpcodeStoreSingleImmediate12):
2291 (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate12::immediate12):
2292 (ARMv7DOpcodeStoreSingleImmediate8):
2293 (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::pBit):
2294 (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::uBit):
2295 (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::wBit):
2296 (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::immediate8):
2297 (ARMv7DOpcodeStoreSingleRegister):
2298 (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleRegister::immediate2):
2299 (ARMv7DOpcodeUnmodifiedImmediate):
2300 (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::opName):
2301 (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::op):
2302 (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::shBit):
2303 (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::bitNumOrSatImmediate):
2304 (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate5):
2305 (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate12):
2306 (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate16):
2307 (ARMv7DOpcodeVMOVDoublePrecision):
2308 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::op):
2309 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::rt2):
2310 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::rt):
2311 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::vm):
2312 (ARMv7DOpcodeVMOVSinglePrecision):
2313 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::op):
2314 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::rt2):
2315 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::rt):
2316 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::vm):
2318 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::opL):
2319 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::rt):
2320 * disassembler/ARMv7Disassembler.cpp: Added.
2321 (JSC::tryToDisassemble):
2323 2013-05-07 Julien Brianceau <jbrianceau@nds.com>
2325 Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT.
2326 https://bugs.webkit.org/show_bug.cgi?id=115722
2328 Reviewed by Oliver Hunt.
2330 * assembler/MacroAssemblerSH4.h:
2331 (JSC::MacroAssemblerSH4::load8PostInc):
2332 (MacroAssemblerSH4):
2333 (JSC::MacroAssemblerSH4::load16Unaligned):
2334 (JSC::MacroAssemblerSH4::load16PostInc):
2335 (JSC::MacroAssemblerSH4::storeDouble):
2336 (JSC::MacroAssemblerSH4::load32WithUnalignedHalfWords):
2337 * assembler/SH4Assembler.h:
2338 (JSC::SH4Assembler::movwMemRegIn):
2340 (JSC::SH4Assembler::movbMemRegIn):
2341 (JSC::SH4Assembler::printInstr):
2343 2013-05-07 Anders Carlsson <andersca@apple.com>
2345 Remove AlwaysInline.h from WTF
2346 https://bugs.webkit.org/show_bug.cgi?id=115727
2348 Reviewed by Brent Fulgham.
2350 The macro that used to be in AlwaysInline.h is now in Compiler.h so there's no reason
2351 to keep AlwaysInline.h around anymore.
2353 * jit/JSInterfaceJIT.h:
2355 * runtime/JSCJSValue.h:
2356 * runtime/SymbolTable.h:
2358 2013-05-07 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
2360 HashTraits<RefPtr<P> >::PeekType should be raw pointer for better performance
2361 https://bugs.webkit.org/show_bug.cgi?id=115646
2363 Reviewed by Darin Adler.
2365 * bytecompiler/StaticPropertyAnalyzer.h:
2366 (JSC::StaticPropertyAnalyzer::putById):
2367 Updated accordingly to new HashMap<.., RefPtr>::get() semantics.
2369 2013-05-06 Julien Brianceau <jbrianceau@nds.com>
2371 Misc bugfix and cleaning in sh4 base JIT.
2372 https://bugs.webkit.org/show_bug.cgi?id=115627
2374 Reviewed by Oliver Hunt.
2376 Get rid of loadX(RegisterID r0, RegisterID src, RegisterID dest) functions.
2377 Remove misplaced extuw() implementation from MacroAssemblerSH4.
2378 Add movbRegMemr0 and movwRegMemr0 functions in SH4Assembler.
2380 * assembler/MacroAssemblerSH4.h:
2381 (JSC::MacroAssemblerSH4::add32): Skip operation when first operand is a zero immediate.
2382 (JSC::MacroAssemblerSH4::sub32): Skip operation when first operand is a zero immediate.
2383 (JSC::MacroAssemblerSH4::load32): Fix wrong usage of r0 register.
2384 (JSC::MacroAssemblerSH4::load8Signed): Handle "base == r0" case.
2385 (MacroAssemblerSH4):
2386 (JSC::MacroAssemblerSH4::load16): Handle "base == r0" case.
2387 (JSC::MacroAssemblerSH4::load16Unaligned): Use extuw() implementation from SH4Assembler.
2388 (JSC::MacroAssemblerSH4::load16Signed): Cosmetic change.
2389 (JSC::MacroAssemblerSH4::store8): Fix unhandled BaseIndex offset and handle (base == r0) case.
2390 (JSC::MacroAssemblerSH4::store16): Fix unhandled BaseIndex offset and handle (base == r0) case.
2391 (JSC::MacroAssemblerSH4::store32):
2392 * assembler/SH4Assembler.h:
2393 (JSC::SH4Assembler::movwRegMemr0):
2395 (JSC::SH4Assembler::movbRegMemr0):
2396 (JSC::SH4Assembler::placeConstantPoolBarrier): Cosmetic change.
2397 (JSC::SH4Assembler::maxJumpReplacementSize):
2398 (JSC::SH4Assembler::replaceWithJump): Correct branch range and save an opcode.
2399 (JSC::SH4Assembler::printInstr):
2401 2013-05-06 Anders Carlsson <andersca@apple.com>
2403 Stop using WTF::deleteAllValues in JavaScriptCore
2404 https://bugs.webkit.org/show_bug.cgi?id=115670
2406 Reviewed by Oliver Hunt.
2408 Change the Vectors used to Vectors of OwnPtrs instead.
2410 * heap/DFGCodeBlocks.cpp:
2411 (JSC::DFGCodeBlocks::~DFGCodeBlocks):
2412 (JSC::DFGCodeBlocks::deleteUnmarkedJettisonedCodeBlocks):
2414 2013-05-06 Andras Becsi <andras.becsi@digia.com>
2416 Build with GCC 4.8 fails because of -Wmaybe-uninitialized
2417 https://bugs.webkit.org/show_bug.cgi?id=115648
2419 Reviewed by Michael Saboff.
2421 Initialize values in Options::setOption since from
2422 there we end up calling OptionRange::init with
2423 uninitialized members.
2425 * runtime/Options.cpp:
2427 2013-05-06 Gabor Rapcsanyi <rgabor@webkit.org>
2429 JSC ARM traditional failing on Octane NavierStokes test
2430 https://bugs.webkit.org/show_bug.cgi?id=115626
2432 Reviewed by Zoltan Herczeg.
2434 Change the ARM traditional assembler to use double precision on value
2437 * assembler/ARMAssembler.h:
2439 2013-05-03 Michael Saboff <msaboff@apple.com>
2441 There should be a runtime option to constrain what functions get DFG compiled
2442 https://bugs.webkit.org/show_bug.cgi?id=115576
2444 Reviewed by Mark Hahnenberg.
2446 Added OptionRange to Options to allow checking that something is within an option
2447 or not. The new OptionClass supports range strings in the form of [!]<low>[:<high>].
2448 If only one value is given, then it will be used for both low and high. A leading
2449 '!' inverts the check. If no range is given, then checking for a value within a range
2450 will always return true. Added the option "bytecodeRangeToDFGCompile" that takes an
2451 OptionRange string to select the bytecode range of code blocks to DFG compile.
2453 * dfg/DFGDriver.cpp:
2454 (JSC::DFG::compile): Added new check for bytecode count within bytecodeRangeToDFGCompile
2456 * runtime/Options.cpp:
2457 (JSC::parse): Added overloaded parse() for OptionRange.
2458 (JSC::OptionRange::init): Parse range string and then initialize the range.
2459 (JSC::OptionRange::isInRange): Function used by consumer to check if a value is within
2460 the specified range.
2461 (JSC::Options::dumpOption): Added code to dump OptionRange options.
2462 * runtime/Options.h:
2463 (OptionRange): New class.
2464 (JSC::OptionRange::operator= ): This is really used as a default ctor for use within
2465 the Option static array initialization.
2466 (JSC::OptionRange::rangeString): This is used for debug. It assumes that the char*
2467 passed into OptionRange::init is valid when this function is called.
2469 2013-05-02 Oliver Hunt <oliver@apple.com>
2471 Fix potential bug in lookup logic
2472 https://bugs.webkit.org/show_bug.cgi?id=115522
2474 Reviewed by Mark Hahnenberg.
2476 Though not a problem in practise, it is technically possible
2477 to inject an un-proxied global object into the scope chain
2478 via the C API. This change makes sure that the scope walk
2479 in BytecodeGenerator actually limits itself to scopes that
2480 are statically bindable.
2482 * bytecompiler/BytecodeGenerator.cpp:
2483 (JSC::BytecodeGenerator::resolve):
2484 * runtime/JSObject.h:
2487 (JSC::JSObject::isStaticScopeObject):
2489 2013-05-01 Roger Fong <roger_fong@apple.com>
2491 Set Path in makefile for AppleWin.
2493 * JavaScriptCore.vcxproj/JavaScriptCore.make:
2495 2013-05-01 Benjamin Poulain <benjamin@webkit.org>
2497 Remove the remaining wscript
2498 https://bugs.webkit.org/show_bug.cgi?id=115459
2500 Reviewed by Andreas Kling.
2504 2013-04-30 Mark Lam <mark.lam@apple.com>
2506 JSContextGroupSetExecutionTimeLimit() should not pass a callback to the
2507 VM watchdog if its client did not pass one in.
2508 https://bugs.webkit.org/show_bug.cgi?id=115461.
2510 Reviewed by Geoffrey Garen.
2512 * API/JSContextRef.cpp:
2513 (internalScriptTimeoutCallback):
2514 (JSContextGroupSetExecutionTimeLimit):
2515 * API/tests/testapi.c:
2517 - Added test case when the time limit callback is 0.
2518 - Also updated a check to verify that a TerminatedExecutionException is
2519 thrown when the time out is cancelled.
2520 - Also fixed some cosmetic typos.
2522 2013-04-30 Geoffrey Garen <ggaren@apple.com>
2524 Removed op_ensure_property_exists
2525 https://bugs.webkit.org/show_bug.cgi?id=115460
2527 Reviewed by Mark Hahnenberg.
2529 It was unused, and whatever it was once used for was not optimized.
2531 * JavaScriptCore.order:
2532 * bytecode/CodeBlock.cpp:
2533 (JSC::CodeBlock::dumpBytecode):
2534 * bytecode/Opcode.h:
2535 (JSC::padOpcodeName):
2537 (JSC::JIT::privateCompileMainPass):
2539 * jit/JITOpcodes.cpp:
2540 * jit/JITOpcodes32_64.cpp:
2543 * llint/LLIntSlowPaths.cpp:
2544 * llint/LLIntSlowPaths.h:
2545 * llint/LowLevelInterpreter.asm:
2547 2013-04-30 Oliver Hunt <oliver@apple.com>
2549 JSC Stack walking logic craches in the face of inlined functions triggering VM re-entry
2550 https://bugs.webkit.org/show_bug.cgi?id=115449
2552 Reviewed by Geoffrey Garen.
2554 Rename callframeishost to something that makes sense, and fix
2555 getCallerInfo to correctly handle inline functions calling into
2558 * bytecode/CodeBlock.cpp:
2559 (JSC::CodeBlock::codeOriginForReturn):
2560 Make this more robust in the face of incorrect stack walking
2561 * interpreter/CallFrame.cpp:
2562 (JSC::CallFrame::trueCallerFrame):
2563 Everyone has to perform a codeblock() check before calling this
2564 so we might as well just do it here.
2565 * interpreter/Interpreter.cpp:
2566 (JSC::getCallerInfo):
2568 2013-04-30 Julien Brianceau <jbrianceau@nds.com>
2570 Bug fixing in sh4 base JIT and LLINT.
2571 https://bugs.webkit.org/show_bug.cgi?id=115420
2573 Reviewed by Oliver Hunt.
2575 * assembler/MacroAssemblerSH4.h:
2576 (JSC::MacroAssemblerSH4::lshift32):
2577 (JSC::MacroAssemblerSH4::rshift32):
2578 (JSC::MacroAssemblerSH4::branchMul32):
2579 (JSC::MacroAssemblerSH4::urshift32):
2580 (JSC::MacroAssemblerSH4::replaceWithJump):
2581 (JSC::MacroAssemblerSH4::maxJumpReplacementSize):
2582 * assembler/SH4Assembler.h:
2583 (JSC::SH4Assembler::shldRegReg):
2584 (JSC::SH4Assembler::shadRegReg):
2585 (JSC::SH4Assembler::shalImm8r):
2587 (JSC::SH4Assembler::sharImm8r):
2588 (JSC::SH4Assembler::maxJumpReplacementSize):
2589 (JSC::SH4Assembler::replaceWithJump):
2590 * offlineasm/sh4.rb:
2592 2013-04-30 Geoffrey Garen <ggaren@apple.com>
2594 Objective-C JavaScriptCore API should publicly support bridging to C
2595 https://bugs.webkit.org/show_bug.cgi?id=115447
2597 Reviewed by Mark Hahnenberg.
2599 For consistency, I renamed
2601 +[JSValue valueWithValue:] => +[JSValue valueWithJSValueRef]
2602 +[JSContext contextWithGlobalContextRef] => +[JSContext contextWithJSGlobalContextRef]
2603 -[JSContext globalContext] => -[JSContext JSGlobalContextRef]
2605 I searched svn to verify that these functions don't have clients yet,
2606 so we won't break anything.
2608 I also exported as public API
2610 +[JSValue valueWithJSValueRef:]
2611 +[JSContext contextWithJSGlobalContextRef:]
2613 It's hard to integrate with the C API without these.
2615 2013-04-30 Commit Queue <rniwa@webkit.org>
2617 Unreviewed, rolling out r149349 and r149354.
2618 http://trac.webkit.org/changeset/149349
2619 http://trac.webkit.org/changeset/149354
2620 https://bugs.webkit.org/show_bug.cgi?id=115444
2622 The Thumb version of compileSoftModulo make invalid use of
2623 registers (Requested by benjaminp on #webkit).
2626 * GNUmakefile.list.am:
2627 * JavaScriptCore.xcodeproj/project.pbxproj:
2628 * assembler/ARMv7Assembler.h:
2630 * assembler/AbstractMacroAssembler.h:
2633 * assembler/MacroAssemblerARMv7.cpp: Removed.
2634 * assembler/MacroAssemblerARMv7.h:
2635 (MacroAssemblerARMv7):
2636 * dfg/DFGFixupPhase.cpp:
2637 (JSC::DFG::FixupPhase::fixupNode):
2638 * dfg/DFGOperations.cpp:
2639 * dfg/DFGOperations.h:
2640 * dfg/DFGSpeculativeJIT.cpp:
2641 (JSC::DFG::SpeculativeJIT::compileSoftModulo):
2643 (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForARMv7s):
2644 * dfg/DFGSpeculativeJIT.h:
2645 (JSC::DFG::SpeculativeJIT::callOperation):
2647 * dfg/DFGSpeculativeJIT32_64.cpp:
2648 (JSC::DFG::SpeculativeJIT::compile):
2650 2013-04-30 Zalan Bujtas <zalan@apple.com>
2652 Animations fail to start on http://www.google.com/insidesearch/howsearchworks/thestory/
2653 https://bugs.webkit.org/show_bug.cgi?id=111244
2655 Reviewed by David Kilzer.
2657 Enable performance.now() as a minimal subset of Web Timing API.
2658 It returns DOMHighResTimeStamp, a monotonically increasing value representing the
2659 number of milliseconds from the start of the navigation of the current document.
2660 JS libraries use this API to check against the requestAnimationFrame() timestamp.
2662 * Configurations/FeatureDefines.xcconfig:
2664 2013-04-30 Zoltan Arvai <zarvai@inf.u-szeged.hu>
2666 Unreviewed. Speculative build fix on Qt Arm and Mips after r149349.
2668 * dfg/DFGSpeculativeJIT.cpp:
2669 (JSC::DFG::SpeculativeJIT::compileSoftModulo):
2671 2013-04-29 Cosmin Truta <ctruta@blackberry.com>
2673 [ARM] Expand the use of integer division
2674 https://bugs.webkit.org/show_bug.cgi?id=115138
2676 Reviewed by Benjamin Poulain.
2678 If availability of hardware integer division isn't known at compile
2679 time, check the CPU flags and decide at runtime whether to fall back
2680 to software. Currently, this OS-specific check is implemented on QNX.
2682 Moreover, use operator % instead of fmod() in the calculation of the
2683 software modulo. Even when it's software-emulated, operator % is faster
2684 than fmod(): on ARM v7 QNX, without hardware division, we noticed
2685 >3% speedup on SunSpider.
2688 * GNUmakefile.list.am:
2689 * JavaScriptCore.xcodeproj/project.pbxproj:
2690 * assembler/ARMv7Assembler.h:
2691 (JSC::ARMv7Assembler::sdiv): Did not compile conditionally.
2692 (JSC::ARMv7Assembler::udiv): Ditto.
2693 * assembler/AbstractMacroAssembler.h:
2694 (JSC::isARMv7s): Removed.
2695 * assembler/MacroAssemblerARMv7.cpp: Added.
2696 (JSC::isIntegerDivSupported): Added.
2697 * assembler/MacroAssemblerARMv7.h:
2698 (JSC::MacroAssemblerARMv7::supportsIntegerDiv): Added.
2699 * dfg/DFGFixupPhase.cpp:
2700 (JSC::DFG::FixupPhase::fixupNode): Checked MacroAssembler::supportsIntegerDiv() in ArithDiv case.
2701 * dfg/DFGOperations.cpp:
2702 (JSC::DFG::operationModOnInts): Added.
2703 * dfg/DFGOperations.h:
2704 (JSC::DFG::Z_DFGOperation_ZZ): Added.
2705 * dfg/DFGSpeculativeJIT.cpp:
2706 (JSC::DFG::SpeculativeJIT::compileSoftModulo): Separated the X86-specific and ARM-specific codegen
2707 from the common implementation; used operationModOnInts on ARM.
2708 (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForARM): Renamed from compileIntegerArithDivForARMv7.
2709 (JSC::DFG::SpeculativeJIT::compileArithMod): Allowed run-time detection of integer div on ARM.
2710 * dfg/DFGSpeculativeJIT.h:
2711 (JSC::DFG::SpeculativeJIT::callOperation): Added overloads with Z_DFGOperation_ZZ arguments.
2712 * dfg/DFGSpeculativeJIT32_64.cpp:
2713 (JSC::DFG::SpeculativeJIT::compile): Used compileIntegerArithDivForARM.
2715 2013-04-29 Benjamin Poulain <benjamin@webkit.org>
2717 Unify the data access of StringImpl members from JavaScriptCore
2718 https://bugs.webkit.org/show_bug.cgi?id=115320
2720 Reviewed by Andreas Kling.
2722 DFG accesses the member infos by directly calling the methods on StringImpl,
2723 while the baseline JIT was using helper methods on ThunkHelpers.
2725 Cut the middle man, and use StringImpl directly everywhere.
2728 (JSC::JIT::emitLoadCharacterString):
2729 * jit/JITPropertyAccess.cpp:
2730 (JSC::JIT::stringGetByValStubGenerator):
2731 * jit/JITPropertyAccess32_64.cpp:
2732 (JSC::JIT::stringGetByValStubGenerator):
2733 * jit/JSInterfaceJIT.h:
2734 * jit/ThunkGenerators.cpp:
2735 (JSC::stringCharLoad):
2737 2013-04-29 Benjamin Poulain <bpoulain@apple.com>
2739 Use push and pop for iOS math function thunks
2740 https://bugs.webkit.org/show_bug.cgi?id=115215
2742 Reviewed by Filip Pizlo.
2744 The iOS ABI is a little different than regular ARM ABI regarding stack alignment.
2745 The requirement is 4 bytes:
2746 "The ARM environment uses a stack that—at the point of function calls—is 4-byte aligned,
2747 grows downward, and contains local variables and a function’s parameters."
2749 Subsequently, we can just use push and pop to preserve the link register.
2751 * jit/ThunkGenerators.cpp:
2753 2013-04-29 Brent Fulgham <bfulgham@webkit.org>
2755 [Windows, WinCairo] Get rid of last few pthread include/link references.
2756 https://bugs.webkit.org/show_bug.cgi?id=115375
2758 Reviewed by Tim Horton.
2760 * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd:
2761 * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
2762 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props:
2763 * JavaScriptCore.vcxproj/jsc/jscCommon.props:
2764 * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
2765 * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
2767 2013-04-29 Roger Fong <roger_fong@apple.com>
2769 Unreviewed. AppleWin VS2010 build fix.
2771 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
2773 2013-04-26 Mark Hahnenberg <mhahnenberg@apple.com>
2775 ~BlockAllocator should ASSERT that it has no more Regions left
2776 https://bugs.webkit.org/show_bug.cgi?id=115287
2778 Reviewed by Andreas Kling.
2780 * heap/BlockAllocator.cpp:
2781 (JSC::BlockAllocator::~BlockAllocator):
2782 (JSC::BlockAllocator::allRegionSetsAreEmpty):
2783 * heap/BlockAllocator.h:
2785 (JSC::BlockAllocator::RegionSet::isEmpty):
2788 2013-04-29 Mark Hahnenberg <mhahnenberg@apple.com>
2790 IndexingTypes should use hex
2791 https://bugs.webkit.org/show_bug.cgi?id=115286
2793 Decimal is kind of confusing/hard to read because they're used as bit masks. Hex seems more appropriate.
2795 Reviewed by Geoffrey Garen.
2797 * runtime/IndexingType.h:
2799 2013-04-29 Carlos Garcia Campos <cgarcia@igalia.com>
2801 Unreviewed. Fix make distcheck.
2803 * GNUmakefile.list.am: Add missing headers files to compilation
2804 and offlineasm/sh4.rb script.
2806 2013-04-28 Dean Jackson <dino@apple.com>
2808 [Mac] Disable canvas backing store scaling (HIGH_DPI_CANVAS)
2809 https://bugs.webkit.org/show_bug.cgi?id=115310
2811 Reviewed by Simon Fraser.
2813 Remove ENABLE_HIGH_DPI_CANVAS_macosx.
2815 * Configurations/FeatureDefines.xcconfig:
2817 2013-04-27 Darin Adler <darin@apple.com>
2819 Move from constructor and member function adoptCF/NS to free function adoptCF/NS.
2820 https://bugs.webkit.org/show_bug.cgi?id=115307
2822 Reviewed by Geoffrey Garen.
2824 * heap/HeapTimer.cpp:
2825 (JSC::HeapTimer::HeapTimer):
2827 (JSC::enableAssembler):
2828 Use adoptCF free function.
2830 2013-04-27 Anders Carlsson <andersca@apple.com>
2832 Try to fix the Windows build.
2834 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
2836 2013-04-25 Geoffrey Garen <ggaren@apple.com>
2838 Cleaned up pre/post inc/dec in bytecode
2839 https://bugs.webkit.org/show_bug.cgi?id=115222
2841 Reviewed by Filip Pizlo.
2843 A few related changes here:
2845 (*) Removed post_inc and post_dec. The two-result form was awkward to
2846 reason about. Being explicit about the intermediate mov and to_number
2847 reduces DFG overhead, removes some fragile ASSERTs from the DFG, and
2848 fixes a const bug. Plus, we get to blow away 262 lines of code.
2850 (*) Renamed pre_inc and pre_dec to inc and dec, since there's only one
2853 (*) Renamed to_jsnumber to to_number, to match the ECMA name.
2855 (*) Tightened up the codegen and runtime support for to_number.
2858 * JavaScriptCore.order: Order!
2860 * bytecode/CodeBlock.cpp:
2861 (JSC::CodeBlock::dumpBytecode):
2862 * bytecode/Opcode.h:
2863 (JSC::padOpcodeName):
2864 * bytecompiler/BytecodeGenerator.cpp:
2865 (JSC::BytecodeGenerator::emitInc):
2866 (JSC::BytecodeGenerator::emitDec):
2867 * bytecompiler/BytecodeGenerator.h:
2868 (JSC::BytecodeGenerator::emitToNumber):
2869 (BytecodeGenerator): Removed post_inc and post_dec.
2871 * bytecompiler/NodesCodegen.cpp:
2872 (JSC::emitPreIncOrDec): Updated for rename.
2874 (JSC::emitPostIncOrDec): Issue an explicit mov and to_number when needed.
2875 These are rare, and they boil away in the DFG.
2877 (JSC::PostfixNode::emitResolve):
2878 (JSC::PrefixNode::emitResolve): For const, use an explicit mov instead
2879 of any special forms. This fixes a bug where we would do string
2880 add/subtract instead of number.
2882 * dfg/DFGByteCodeParser.cpp:
2883 (JSC::DFG::ByteCodeParser::parseBlock):
2884 * dfg/DFGCapabilities.h:
2885 (JSC::DFG::canCompileOpcode):
2887 (JSC::JIT::privateCompileMainPass):
2888 (JSC::JIT::privateCompileSlowCases):
2890 * jit/JITArithmetic.cpp:
2891 (JSC::JIT::emit_op_inc):
2892 (JSC::JIT::emitSlow_op_inc):
2893 (JSC::JIT::emit_op_dec):
2894 (JSC::JIT::emitSlow_op_dec):
2895 * jit/JITArithmetic32_64.cpp:
2896 (JSC::JIT::emit_op_inc):
2897 (JSC::JIT::emitSlow_op_inc):
2898 (JSC::JIT::emit_op_dec):
2899 (JSC::JIT::emitSlow_op_dec): Removed post_inc/dec, and updated for renames.
2901 * jit/JITOpcodes.cpp:
2902 (JSC::JIT::emit_op_to_number):
2903 (JSC::JIT::emitSlow_op_to_number): Removed a test for number cells. There's
2906 * jit/JITOpcodes32_64.cpp:
2907 (JSC::JIT::emit_op_to_number): Use LowestTag to avoid making assumptions
2908 about the lowest valued tag.
2910 (JSC::JIT::emitSlow_op_to_number): Updated for renames.
2913 (JSC::DEFINE_STUB_FUNCTION):
2915 * llint/LLIntSlowPaths.cpp:
2916 (JSC::LLInt::LLINT_SLOW_PATH_DECL):
2917 * llint/LLIntSlowPaths.h:
2918 * llint/LowLevelInterpreter32_64.asm:
2919 * llint/LowLevelInterpreter64.asm:
2920 * parser/NodeConstructors.h:
2921 (JSC::UnaryPlusNode::UnaryPlusNode): Removed post_inc/dec, and updated for renames.
2923 * runtime/Operations.cpp:
2924 (JSC::jsIsObjectType): Removed a test for number cells. There's
2927 2013-04-27 Julien Brianceau <jbrianceau@nds.com>
2929 REGRESSION(r149114): cache flush for SH4 arch may flush an extra page.
2930 https://bugs.webkit.org/show_bug.cgi?id=115305
2932 Reviewed by Andreas Kling.
2934 * assembler/SH4Assembler.h:
2935 (JSC::SH4Assembler::cacheFlush):
2937 2013-04-26 Geoffrey Garen <ggaren@apple.com>
2939 Re-landing <http://trac.webkit.org/changeset/148999>
2941 Filled out more cases of branch folding in bytecode when emitting
2942 expressions into a branching context
2943 https://bugs.webkit.org/show_bug.cgi?id=115057
2945 Reviewed by Phil Pizlo.
2947 We can't fold the number == 1 case to boolean because all non-zero numbers
2948 down-cast to true, but only 1 is == to true.
2950 2013-04-26 Filip Pizlo <fpizlo@apple.com>
2952 Correct indentation of SymbolTable.h
2954 Rubber stamped by Mark Hahnenberg.
2956 * runtime/SymbolTable.h:
2958 2013-04-26 Roger Fong <roger_fong@apple.com>
2960 Make Apple Windows VS2010 build results into and get dependencies from __32 suffixed folders.
2961 Make the DebugSuffix configuration use _debug dependencies.
2963 * JavaScriptCore.vcxproj/JavaScriptCore.make:
2964 * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
2965 * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
2966 * JavaScriptCore.vcxproj/JavaScriptCoreCF.props:
2967 * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
2968 * JavaScriptCore.vcxproj/JavaScriptCoreDebug.props:
2969 * JavaScriptCore.vcxproj/JavaScriptCoreDebugCFLite.props:
2970 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj:
2971 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj.filters:
2972 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorBuildCmd.cmd:
2973 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorCommon.props:
2974 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorDebug.props:
2975 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPostBuild.cmd:
2976 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPreBuild.cmd:
2977 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorProduction.props:
2978 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorRelease.props:
2979 * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.make:
2980 * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj:
2981 * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedCommon.props:
2982 * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedDebug.props:
2983 * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedProduction.props:
2984 * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedRelease.props:
2985 * JavaScriptCore.vcxproj/JavaScriptCorePostBuild.cmd:
2986 * JavaScriptCore.vcxproj/JavaScriptCorePreLink.cmd:
2987 * JavaScriptCore.vcxproj/JavaScriptCoreProduction.props:
2988 * JavaScriptCore.vcxproj/JavaScriptCoreRelease.props:
2989 * JavaScriptCore.vcxproj/JavaScriptCoreReleaseCFLite.props:
2990 * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.make:
2991 * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj:
2992 * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/build-LLIntAssembly.sh:
2993 * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.make:
2994 * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.vcxproj:
2995 * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/build-LLIntDesiredOffsets.sh:
2996 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj:
2997 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props:
2998 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.props:
2999 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.props:
3000 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.props:
3001 * JavaScriptCore.vcxproj/build-generated-files.sh:
3002 * JavaScriptCore.vcxproj/copy-files.cmd:
3003 * JavaScriptCore.vcxproj/jsc/jsc.vcxproj:
3004 * JavaScriptCore.vcxproj/jsc/jscCommon.props:
3005 * JavaScriptCore.vcxproj/jsc/jscDebug.props:
3006 * JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd:
3007 * JavaScriptCore.vcxproj/jsc/jscPreLink.cmd:
3008 * JavaScriptCore.vcxproj/jsc/jscProduction.props:
3009 * JavaScriptCore.vcxproj/jsc/jscRelease.props:
3010 * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
3011 * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters:
3012 * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
3013 * JavaScriptCore.vcxproj/testRegExp/testRegExpDebug.props:
3014 * JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd:
3015 * JavaScriptCore.vcxproj/testRegExp/testRegExpPreLink.cmd:
3016 * JavaScriptCore.vcxproj/testRegExp/testRegExpProduction.props:
3017 * JavaScriptCore.vcxproj/testRegExp/testRegExpRelease.props:
3018 * JavaScriptCore.vcxproj/testapi/testapi.vcxproj:
3019 * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
3020 * JavaScriptCore.vcxproj/testapi/testapiCommonCFLite.props:
3021 * JavaScriptCore.vcxproj/testapi/testapiDebug.props:
3022 * JavaScriptCore.vcxproj/testapi/testapiDebugCFLite.props:
3023 * JavaScriptCore.vcxproj/testapi/testapiPreLink.cmd:
3024 * JavaScriptCore.vcxproj/testapi/testapiProduction.props:
3025 * JavaScriptCore.vcxproj/testapi/testapiRelease.props:
3026 * JavaScriptCore.vcxproj/testapi/testapiReleaseCFLite.props:
3028 2013-04-26 Roger Fong <roger_fong@apple.com>
3030 Disable sub-pixel layout on mac.
3031 https://bugs.webkit.org/show_bug.cgi?id=114999.
3033 Reviewed by Simon Fraser.
3035 * Configurations/FeatureDefines.xcconfig:
3037 2013-04-26 Oliver Hunt <oliver@apple.com>
3039 Make stack tracing more robust
3040 https://bugs.webkit.org/show_bug.cgi?id=115272
3042 Reviewed by Geoffrey Garen.
3044 CallFrame already handles stack walking confusion robustly,
3045 so we should make sure that the actual walk handles that as well.
3047 * interpreter/Interpreter.cpp:
3048 (JSC::getCallerInfo):
3050 2013-04-26 Mark Hahnenberg <mhahnenberg@apple.com>
3052 REGRESSION(r149165): It made many tests crash on 32 bit
3053 https://bugs.webkit.org/show_bug.cgi?id=115227
3055 Reviewed by Csaba Osztrogonác.
3057 m_reservation is uninitialized when ENABLE(SUPER_REGION) is false.
3059 * heap/SuperRegion.cpp:
3060 (JSC::SuperRegion::~SuperRegion):
3062 2013-04-26 Julien Brianceau <jbrianceau@nds.com>
3064 Fix SH4 build broken since r149159.
3065 https://bugs.webkit.org/show_bug.cgi?id=115229
3067 Add BranchTruncateType enum in SH4 port and handle it in branchTruncateDoubleToInt32.
3069 Reviewed by Allan Sandfeld Jensen.
3071 * assembler/MacroAssemblerSH4.h:
3072 (JSC::MacroAssemblerSH4::branchTruncateDoubleToInt32):
3074 2013-04-25 Mark Hahnenberg <mhahnenberg@apple.com>
3076 SuperRegion doesn't call deallocate() on its PageReservation
3077 https://bugs.webkit.org/show_bug.cgi?id=115208
3079 Reviewed by Geoffrey Garen.
3081 It should. This doesn't cause us to leak physical memory, but it does cause us to leak virtual
3082 address space (and probably mach ports), which is also bad :-( FixedVMPoolExecutableAllocator
3083 also has this bug, but it doesn't matter much because there's only one instance of that class
3084 throughout the entire lifetime of the process, whereas each VM has its own SuperRegion.
3086 * heap/SuperRegion.cpp:
3087 (JSC::SuperRegion::~SuperRegion):
3088 * heap/SuperRegion.h:
3090 * jit/ExecutableAllocatorFixedVMPool.cpp:
3091 (FixedVMPoolExecutableAllocator):
3092 (JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator):
3094 2013-04-25 Filip Pizlo <fpizlo@apple.com>
3096 DFG doesn't support to_jsnumber
3097 https://bugs.webkit.org/show_bug.cgi?id=115129
3099 Reviewed by Geoffrey Garen.
3101 Based on Oliver's patch. Implements to_jsnumber as Identity(Number:@thingy), and then does
3102 an optimization in Fixup to turn Identity(Number:) into Identity(Int32:) if the predictions
3103 tell us to. Identity is later turned into Phantom.
3105 Also fixed BackPropMask, which appeared to have NodeDoesNotExit included in it. That's
3106 wrong; NodeDoesNotExit is not a backward propagation property.
3108 Also fixed Identity to be marked as CanExit (i.e. not NodeDoesNotExit).
3110 This more than doubles the FPS on ammo.
3112 * dfg/DFGByteCodeParser.cpp:
3113 (JSC::DFG::ByteCodeParser::parseBlock):
3114 * dfg/DFGCapabilities.h:
3115 (JSC::DFG::canCompileOpcode):
3116 * dfg/DFGFixupPhase.cpp:
3117 (JSC::DFG::FixupPhase::fixupNode):
3119 (JSC::DFG::FixupPhase::observeUseKindOnNode):
3120 (JSC::DFG::FixupPhase::observeUseKindOnEdge):
3121 * dfg/DFGNodeFlags.h:
3123 * dfg/DFGNodeType.h:
3125 * dfg/DFGPredictionPropagationPhase.cpp:
3126 (JSC::DFG::PredictionPropagationPhase::propagate):
3128 2013-04-24 Oliver Hunt <oliver@apple.com>
3130 Add support for Math.imul
3131 https://bugs.webkit.org/show_bug.cgi?id=115143
3133 Reviewed by Filip Pizlo.
3135 Add support for Math.imul, a thunk generator for Math.imul,
3138 Fairly self explanatory set of changes, DFG intrinsics simply
3139 leverages the existing ValueToInt32 nodes.
3141 * create_hash_table:
3142 * dfg/DFGAbstractState.cpp:
3143 (JSC::DFG::AbstractState::executeEffects):
3144 * dfg/DFGBackwardsPropagationPhase.cpp:
3145 (JSC::DFG::BackwardsPropagationPhase::propagate):
3146 * dfg/DFGByteCodeParser.cpp:
3147 (JSC::DFG::ByteCodeParser::handleIntrinsic):
3148 * dfg/DFGCSEPhase.cpp:
3149 (JSC::DFG::CSEPhase::performNodeCSE):
3150 * dfg/DFGFixupPhase.cpp:
3151 (JSC::DFG::FixupPhase::fixupNode):
3152 * dfg/DFGNodeType.h:
3154 * dfg/DFGPredictionPropagationPhase.cpp:
3155 (JSC::DFG::PredictionPropagationPhase::propagate):
3156 * dfg/DFGSpeculativeJIT.cpp:
3157 (JSC::DFG::SpeculativeJIT::compileArithIMul):
3158 * dfg/DFGSpeculativeJIT.h:
3160 * dfg/DFGSpeculativeJIT32_64.cpp:
3161 (JSC::DFG::SpeculativeJIT::compile):
3162 * dfg/DFGSpeculativeJIT64.cpp:
3163 (JSC::DFG::SpeculativeJIT::compile):
3164 * jit/ThunkGenerators.cpp:
3165 (JSC::imulThunkGenerator):
3167 * jit/ThunkGenerators.h:
3169 * runtime/Intrinsic.h:
3170 * runtime/MathObject.cpp:
3172 (JSC::mathProtoFuncIMul):
3174 (JSC::thunkGeneratorForIntrinsic):
3176 2013-04-25 Filip Pizlo <fpizlo@apple.com>
3178 Unreviewed, roll out http://trac.webkit.org/changeset/148999
3179 It broke http://kripken.github.io/ammo.js/examples/new/ammo.html
3181 * JavaScriptCore.order:
3182 * bytecompiler/BytecodeGenerator.cpp:
3183 (JSC::BytecodeGenerator::emitNewArray):
3184 (JSC::BytecodeGenerator::emitThrowReferenceError):
3185 (JSC::BytecodeGenerator::emitReadOnlyExceptionIfNeeded):
3186 * bytecompiler/BytecodeGenerator.h:
3187 (JSC::BytecodeGenerator::shouldEmitProfileHooks):
3188 (BytecodeGenerator):
3189 * bytecompiler/NodesCodegen.cpp:
3191 (JSC::NullNode::emitBytecode):
3192 (JSC::BooleanNode::emitBytecode):
3193 (JSC::NumberNode::emitBytecode):
3194 (JSC::StringNode::emitBytecode):
3195 (JSC::IfNode::emitBytecode):
3196 (JSC::IfElseNode::emitBytecode):
3197 * parser/ASTBuilder.h:
3198 (JSC::ASTBuilder::createIfStatement):
3200 * parser/NodeConstructors.h:
3202 (JSC::NullNode::NullNode):
3203 (JSC::BooleanNode::BooleanNode):
3204 (JSC::NumberNode::NumberNode):
3205 (JSC::StringNode::StringNode):
3206 (JSC::IfNode::IfNode):
3207 (JSC::IfElseNode::IfElseNode):
3209 (JSC::ExpressionNode::isPure):
3210 (JSC::ExpressionNode::isSubtract):
3213 (JSC::NullNode::isNull):
3215 (JSC::BooleanNode::isPure):
3217 (JSC::NumberNode::value):
3218 (JSC::NumberNode::isPure):
3220 (JSC::StringNode::isPure):
3221 (JSC::StringNode::isString):
3228 * parser/Parser.cpp:
3229 (JSC::::parseIfStatement):
3230 * parser/ResultType.h:
3232 * runtime/JSCJSValueInlines.h:
3233 (JSC::JSValue::pureToBoolean):
3236 * runtime/JSCellInlines.h:
3239 2013-04-25 Filip Pizlo <fpizlo@apple.com>
3241 PreciseJumpTargets should treat loop_hint as a jump target
3242 https://bugs.webkit.org/show_bug.cgi?id=115209
3244 Reviewed by Mark Hahnenberg.
3246 I didn't add a test but I turned this into a release assertion. Running Octane is enough
3249 * bytecode/PreciseJumpTargets.cpp:
3250 (JSC::computePreciseJumpTargets):
3251 * dfg/DFGByteCodeParser.cpp:
3252 (JSC::DFG::ByteCodeParser::parseBlock):
3254 2013-04-25 Roman Zhuykov <zhroma@ispras.ru>
3256 Fix problems with processing negative zero on DFG.
3257 https://bugs.webkit.org/show_bug.cgi?id=113862
3259 Reviewed by Filip Pizlo.
3261 Fix NodeNeedsNegZero flag propagation in BackwardPropagationPhase.
3262 Function arithNodeFlags should not mask NodeNeedsNegZero flag for ArithNegate and DoubleAsInt32
3263 nodes and this flag should be always used to decide where we need to generate nezative-zero checks.
3264 Remove unnecessary negative-zero checks from integer ArithDiv on ARM.
3265 Also remove such checks from integer ArithMod on ARM and X86, and make them always to
3266 check not only "modulo_result == 0" but also "dividend < 0".
3267 Generate faster code for case when ArithMod operation divisor is constant power of 2 on ARMv7
3268 in the same way as on ARMv7s, and add negative-zero checks into this code when needed.
3269 Change speculationCheck ExitKind from Overflow to NegativeZero where applicable.
3271 This shows 30% speedup of math-spectral-norm, and 5% speedup
3272 on SunSpider overall on ARMv7 Linux.
3274 * assembler/MacroAssemblerARM.h:
3275 (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
3276 * assembler/MacroAssemblerARMv7.h:
3277 (JSC::MacroAssemblerARMv7::branchConvertDoubleToInt32):
3278 * assembler/MacroAssemblerMIPS.h:
3279 (JSC::MacroAssemblerMIPS::branchConvertDoubleToInt32):
3280 * assembler/MacroAssemblerSH4.h:
3281 (JSC::MacroAssemblerSH4::branchConvertDoubleToInt32):
3282 * assembler/MacroAssemblerX86Common.h:
3283 (JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32):
3284 * dfg/DFGBackwardsPropagationPhase.cpp:
3285 (JSC::DFG::BackwardsPropagationPhase::isNotNegZero):
3286 (JSC::DFG::BackwardsPropagationPhase::isNotPosZero):
3287 (JSC::DFG::BackwardsPropagationPhase::propagate):
3289 (JSC::DFG::Node::arithNodeFlags):
3290 * dfg/DFGSpeculativeJIT.cpp:
3291 (JSC::DFG::SpeculativeJIT::compileDoubleAsInt32):
3292 (JSC::DFG::SpeculativeJIT::compileSoftModulo):
3293 (JSC::DFG::SpeculativeJIT::compileArithNegate):
3295 2013-04-25 Oliver Hunt <oliver@apple.com>
3297 Stack guards are too conservative
3298 https://bugs.webkit.org/show_bug.cgi?id=115147
3300 Reviewed by Mark Hahnenberg.
3302 Increase stack guard to closer to old size.
3304 * interpreter/Interpreter.cpp:
3305 (JSC::Interpreter::StackPolicy::StackPolicy):
3307 2013-04-25 Oliver Hunt <oliver@apple.com>
3309 Stack guards are too conservative
3310 https://bugs.webkit.org/show_bug.cgi?id=115147
3312 Reviewed by Geoffrey Garen.
3314 Reduce the limits and simplify the decision making.
3316 * interpreter/Interpreter.cpp:
3317 (JSC::Interpreter::StackPolicy::StackPolicy):
3319 2013-04-25 Nick Diego Yamane <nick.yamane@openbossa.org>
3321 JSC: Fix interpreter misbehavior in builds with JIT disabled
3322 https://bugs.webkit.org/show_bug.cgi?id=115190
3324 Reviewed by Oliver Hunt.
3326 Commit http://trac.webkit.org/changeset/147858 modified
3327 some details on how JS stack traces are built. The method
3328 "getLineNumberForCallFrame", renamed in that changeset to
3329 "getBytecodeOffsetForCallFrame" is always returning `0' when
3333 - Build webkit with JIT disabled
3334 - Open MiniBrowser, for example, with http://google.com
3335 - In a debug build, WebProcess will hit the following ASSERT:
3336 Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:279 ASSERT(low);
3338 * interpreter/Interpreter.cpp:
3339 (JSC::getBytecodeOffsetForCallFrame):
3341 2013-04-25 Oliver Hunt <oliver@apple.com>
3343 Make checkSyntax take a VM instead of an ExecState
3349 * runtime/Completion.cpp:
3351 * runtime/Completion.h:
3354 2013-04-25 Michael Saboff <msaboff@apple.com>
3356 32 Bit: Crash due to RegExpTest nodes not setting result type to Boolean
3357 https://bugs.webkit.org/show_bug.cgi?id=115188
3359 Reviewed by Geoffrey Garen.
3361 Changed the RegExpTest node to set the AbstractValue to boolean, since that
3364 * dfg/DFGAbstractState.cpp:
3365 (JSC::DFG::AbstractState::executeEffects):
3367 2013-04-25 Julien Brianceau <jbrianceau@nds.com>
3369 REGRESSION(r137994): Random crashes occur with SH4 JSC.
3370 https://bugs.webkit.org/show_bug.cgi?id=115167.
3372 Reviewed by Oliver Hunt.
3374 Since r137994, uncommited pages could be inside the area of memory in
3375 parameter of the cacheFlush function. That's why we have to flush each
3376 page separately to avoid a fail of the whole flush, if an uncommited page
3379 This patch is very similar to changeset 145194 made for ARMv7 architecture,
3380 see https://bugs.webkit.org/show_bug.cgi?id=111441 for further information.
3382 * assembler/SH4Assembler.h:
3383 (JSC::SH4Assembler::cacheFlush):
3385 2013-04-24 Mark Lam <mark.lam@apple.com>
3387 Add watchdog timer polling for the DFG.
3388 https://bugs.webkit.org/show_bug.cgi?id=115134.
3390 Reviewed by Geoffrey Garen.
3392 The strategy is to add a speculation check to the DFG generated code to
3393 test if the watchdog timer has fired or not. If the watchdog timer has
3394 fired, the generated code will do an OSR exit to the baseline JIT, and
3395 let it handle servicing the watchdog timer.
3397 If the watchdog is not enabled, this speculation check will not be
3400 * API/tests/testapi.c:
3401 (currentCPUTime_callAsFunction):
3402 (extendTerminateCallback):
3404 - removed try/catch statements so that we can test the watchdog on the DFG.
3405 - added JS bindings to a native currentCPUTime() function so that the timeout
3406 tests can be more accurate.
3407 - also shortened the time values so that the tests can complete sooner.
3409 * bytecode/ExitKind.h:
3410 * dfg/DFGAbstractState.cpp:
3411 (JSC::DFG::AbstractState::executeEffects):
3412 * dfg/DFGByteCodeParser.cpp:
3413 (JSC::DFG::ByteCodeParser::parseBlock):
3414 * dfg/DFGFixupPhase.cpp:
3415 (JSC::DFG::FixupPhase::fixupNode):
3416 * dfg/DFGNodeType.h:
3417 * dfg/DFGPredictionPropagationPhase.cpp:
3418 (JSC::DFG::PredictionPropagationPhase::propagate):
3419 * dfg/DFGSpeculativeJIT32_64.cpp:
3420 (JSC::DFG::SpeculativeJIT::compile):
3421 * dfg/DFGSpeculativeJIT64.cpp:
3422 (JSC::DFG::SpeculativeJIT::compile):
3423 * runtime/Watchdog.cpp:
3424 (JSC::Watchdog::setTimeLimit):
3426 2013-04-24 Filip Pizlo <fpizlo@apple.com>
3428 Special thunks for math functions should work on ARMv7
3429 https://bugs.webkit.org/show_bug.cgi?id=115144
3431 Reviewed by Gavin Barraclough and Oliver Hunt.
3433 The only hard bit here was ensuring that we implemented the very special
3434 "cheap C call" convention on ARMv7.
3436 * assembler/AbstractMacroAssembler.h:
3441 * jit/SpecializedThunkJIT.h:
3442 (SpecializedThunkJIT):
3443 (JSC::SpecializedThunkJIT::callDoubleToDoublePreservingReturn):
3444 * jit/ThunkGenerators.cpp:
3445 (JSC::floorThunkGenerator):
3446 (JSC::ceilThunkGenerator):
3447 (JSC::roundThunkGenerator):
3448 (JSC::expThunkGenerator):
3449 (JSC::logThunkGenerator):
3451 2013-04-24 Julien Brianceau <jbrianceau@nds.com>
3453 Misc bugfix and cleaning in sh4 base JIT.
3454 https://bugs.webkit.org/show_bug.cgi?id=115022.
3456 Reviewed by Oliver Hunt.
3458 Remove unused add32() and sub32() with scratchreg parameter to avoid
3459 confusion as this function prototype means another behaviour.
3460 Remove unused "void push(Address)" function which seems quite buggy.
3462 * assembler/MacroAssemblerSH4.h:
3463 (JSC::MacroAssemblerSH4::and32): Cosmetic change.
3464 (JSC::MacroAssemblerSH4::lshift32): Cosmetic change.
3465 (JSC::MacroAssemblerSH4::or32): Cosmetic change.
3466 (JSC::MacroAssemblerSH4::xor32): Cosmetic change.
3467 (MacroAssemblerSH4):
3468 (JSC::MacroAssemblerSH4::load32): Cosmetic change.
3469 (JSC::MacroAssemblerSH4::load8Signed): Fix invalid offset upper limit
3470 when using r0 register and cosmetic changes.
3471 (JSC::MacroAssemblerSH4::load8): Reuse load8Signed to avoid duplication.
3472 (JSC::MacroAssemblerSH4::load16): Fix invalid offset upper limit when
3473 using r0 register, fix missing offset shift and cosmetic changes.
3474 (JSC::MacroAssemblerSH4::store32): Cosmetic change.
3475 (JSC::MacroAssemblerSH4::branchAdd32): Store result value before branch.
3477 2013-04-24 Patrick Gansterer <paroga@webkit.org>
3479 [WIN] Remove pthread from Visual Studio files in JavaScriptCore
3480 https://bugs.webkit.org/show_bug.cgi?id=114864
3482 Reviewed by Brent Fulgham.
3484 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
3485 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.vsprops:
3486 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
3487 * JavaScriptCore.vcproj/testRegExp/testRegExpCommon.vsprops:
3488 * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
3489 * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
3490 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorCommon.props:
3491 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props:
3492 * JavaScriptCore.vcxproj/jsc/jscCommon.props:
3493 * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
3494 * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
3495 * JavaScriptCore.vcxproj/testapi/testapiCommonCFLite.props:
3497 2013-04-24 Filip Pizlo <fpizlo@apple.com>
3499 DFG should keep the operand to create_this alive if it's emitting code for create_this
3500 https://bugs.webkit.org/show_bug.cgi?id=115133
3502 Reviewed by Mark Hahnenberg.
3504 The DFG must model bytecode liveness, or else OSR exit is going to have a really bad time.
3506 * dfg/DFGByteCodeParser.cpp:
3507 (JSC::DFG::ByteCodeParser::parseBlock):
3509 2013-04-24 Roger Fong <roger_fong@apple.com>
3511 Have VS2010 WebKit solution look in WebKit_Libraries/lib32 for dependencies.
3513 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPostBuild.cmd:
3514 * JavaScriptCore.vcxproj/JavaScriptCorePreLink.cmd:
3515 * JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd:
3516 * JavaScriptCore.vcxproj/jsc/jscPreLink.cmd:
3517 * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters:
3518 * JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd:
3519 * JavaScriptCore.vcxproj/testRegExp/testRegExpPreLink.cmd:
3520 * JavaScriptCore.vcxproj/testapi/testapiPreLink.cmd:
3522 2013-04-24 Geoffrey Garen <ggaren@apple.com>
3528 * dfg/DFGSpeculativeJIT.cpp:
3529 (JSC::DFG::SpeculativeJIT::compilePeepHoleBooleanBranch): Explicitly
3530 truncate to 32-bit to avoid compiler warnings. It's safe to truncate
3531 because the payload of a boolean is the low bits on both 64-bit and 32-bit.
3533 2013-04-23 Geoffrey Garen <ggaren@apple.com>
3535 Filled out more cases of branch folding in the DFG
3536 https://bugs.webkit.org/show_bug.cgi?id=115088
3538 Reviewed by Oliver Hunt.
3540 No change on the benchmarks we track, but a 3X speedup on a
3541 microbenchmark that uses these techniques.
3543 * dfg/DFGByteCodeParser.cpp:
3544 (JSC::DFG::ByteCodeParser::parseBlock): (!/=)= and (!/=)== can constant
3545 fold all types, not just numbers, because true constants have no
3546 side effects when type-converted at runtime.
3548 * dfg/DFGFixupPhase.cpp:
3549 (JSC::DFG::FixupPhase::fixupNode):
3551 (JSC::DFG::Node::shouldSpeculateBoolean): Added support for fixing up
3552 boolean uses, like we do for other types like number.
3554 * dfg/DFGSpeculativeJIT.cpp:
3555 (JSC::DFG::SpeculativeJIT::compilePeepHoleBooleanBranch):
3556 (JSC::DFG::SpeculativeJIT::compilePeepHoleBranch):
3557 (JSC::DFG::SpeculativeJIT::compare):
3558 (JSC::DFG::SpeculativeJIT::compileStrictEq):
3559 (JSC::DFG::SpeculativeJIT::compileBooleanCompare): Peephole fuse
3560 boolean compare and/or compare-branch, now that we have the types for
3563 * dfg/DFGSpeculativeJIT.h: Updated declarations.
3565 == Rolled over to ChangeLog-2013-04-24 ==