]> git.saurik.com Git - apple/javascriptcore.git/blob - ChangeLog
JavaScriptCore-1218.tar.gz
[apple/javascriptcore.git] / ChangeLog
1 2013-07-18 Andreas Kling <akling@apple.com>
2
3 CodeBlock DFG entry list isn't getting shrunk-to-fit after linking.
4 <http://webkit.org/b/118875>
5 <rdar://problem/14488577>
6
7 Reviewed by Geoffrey Garen.
8
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.
11
12 886 kB progression on <http://twitter.com/awesomekling>
13
14 * dfg/DFGJITCompiler.cpp:
15 (JSC::DFG::JITCompiler::link):
16 (JSC::DFG::JITCompiler::compile):
17 (JSC::DFG::JITCompiler::compileFunction):
18
19 2013-07-18 Andreas Kling <akling@apple.com>
20
21 CodeBlock::m_argumentValueProfiles wastes a lot of memory.
22 <http://webkit.org/b/118852>
23 <rdar://problem/14481659>
24
25 Reviewed by Anders Carlsson.
26
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.
29
30 921 KB progression on <http://twitter.com/awesomekling>
31
32 * bytecode/CodeBlock.cpp:
33 (JSC::CodeBlock::setNumParameters):
34
35 2013-07-16 Mark Hahnenberg <mhahnenberg@apple.com>
36
37 Remove reference to JSValueStructSupport.h from JSExport.h
38 https://bugs.webkit.org/show_bug.cgi?id=118746
39
40 Reviewed by Filip Pizlo.
41
42 * API/JSExport.h: No such header exists, so it doesn't make sense to reference it.
43
44 2013-07-17 Lucas Forschler <lforschler@apple.com>
45
46 Rollout r152600
47
48 2013-07-17 Lucas Forschler <lforschler@apple.com>
49
50 Merge r152600
51
52 2013-07-12 Brent Fulgham <bfulgham@apple.com>
53
54 [Windows] Build correction after r152573/r152577.
55 https://bugs.webkit.org/show_bug.cgi?id=118610
56
57 Reviewed by Oliver Hunt.
58
59 * jit/JITThunks.cpp:
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.
62
63 2013-07-17 Lucas Forschler <lforschler@apple.com>
64
65 Merge r152742
66
67 2013-07-16 Filip Pizlo <fpizlo@apple.com>
68
69 MakeRope fixup shouldn't lead to an Identity without kids
70 https://bugs.webkit.org/show_bug.cgi?id=118745
71
72 Reviewed by Mark Hahnenberg.
73
74 Make the empty string pruning part of fixupMakeRope() stop if it's on the last child.
75
76 Make Node::convertToIdentity release-assert that it has exactly one kid.
77
78 * dfg/DFGFixupPhase.cpp:
79 (JSC::DFG::FixupPhase::fixupMakeRope):
80 * dfg/DFGNode.h:
81 (JSC::DFG::Node::convertToIdentity):
82
83 2013-07-15 Lucas Forschler <lforschler@apple.com>
84
85 Merge r152613
86
87 2013-07-13 Commit Queue <commit-queue@webkit.org>
88
89 Unreviewed, rolling out r151978.
90 http://trac.webkit.org/changeset/151978
91 https://bugs.webkit.org/show_bug.cgi?id=118651
92
93 Caused regressions at least 3 websites (Requested by rniwa on
94 #webkit).
95
96 * runtime/JSCJSValue.h:
97 * runtime/JSString.h:
98
99 2013-07-15 Lucas Forschler <lforschler@apple.com>
100
101 Merge r152577
102
103 2013-07-11 Oliver Hunt <oliver@apple.com>
104
105 Attempt to fix the windows build.
106
107 * jit/JITThunks.cpp:
108 (JSC::JITThunks::hostFunctionStub):
109 * jit/JITThunks.h:
110
111 2013-07-15 Lucas Forschler <lforschler@apple.com>
112
113 Merge r152573
114
115 2013-07-10 Oliver Hunt <oliver@apple.com>
116
117 NativeExecutable cache needs to use both call and construct functions for key
118 https://bugs.webkit.org/show_bug.cgi?id=118545
119
120 Reviewed by Geoffrey Garen.
121
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.
124
125 * jit/JITThunks.cpp:
126 (JSC::JITThunks::hostFunctionStub):
127 * jit/JITThunks.h:
128 * runtime/JSBoundFunction.cpp:
129 (JSC::JSBoundFunction::create):
130 * runtime/JSCell.cpp:
131 (JSC::JSCell::getCallData):
132 (JSC::JSCell::getConstructData):
133
134 2013-07-09 Lucas Forschler <lforschler@apple.com>
135
136 Merge r152497
137
138 2013-07-09 Mark Lam <mark.lam@apple.com>
139
140 Gardening to unbreak builds on the Windows bot.
141
142 Not reviewed.
143
144 * parser/ParserTokens.h:
145
146 2013-07-09 Lucas Forschler <lforschler@apple.com>
147
148 Merge r152494
149
150 2013-07-09 Mark Lam <mark.lam@apple.com>
151
152 Fix 30% JSBench regression (caused by adding column numbers to stack traces).
153 https://bugs.webkit.org/show_bug.cgi?id=118481.
154
155 Reviewed by Mark Hahnenberg and Geoffrey Garen.
156
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).
163
164 The computation of this lineStarts table is the source of the 30% JSBench
165 performance regression.
166
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.
174
175 The strategy:
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
181 consistent.
182
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
186 divots.
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"
196 position info.
197 6. Emit an ExpressionRangeInfo for UnaryOp nodes to get more line and column
198 number coverage.
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.
201
202 Misc details:
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.
210
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.
214
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.
220
221 - Why use ints instead of unsigneds for offsets and lineStarts inside the
222 lexer and parser?
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).
228
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.
232
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:
236
237 eval("x\u000A*=\u000A-1;");
238
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.
242
243 This patch has been tested against the full layout tests both with release
244 and debug builds with no regression.
245
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
269 offset.
270 (JSC::FunctionCodeBlock::FunctionCodeBlock):
271 - Plumbed firstLineColumnOffset through to the super class.
272
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.
287
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.
303
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.
346
347 (JSC::UnaryOpNode::emitBytecode):
348 - Added emission of an ExpressionRangeInfo for the UnaryOp node.
349
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.
361
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.
384
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.
396
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.
443
444 * parser/Lexer.cpp:
445 (JSC::::currentSourcePtr):
446 (JSC::::setCode):
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):
455 (JSC::::lex):
456 - Added tracking for sourceoffset.
457 (JSC::::sourceCode):
458 * parser/Lexer.h:
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.
468
469 * parser/NodeConstructors.h:
470 (JSC::Node::Node):
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.
493 * parser/Nodes.cpp:
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.
501 * parser/Nodes.h:
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.
532 * parser/Parser.cpp:
533 (JSC::::Parser):
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.
558 * parser/Parser.h:
559 (JSC::Parser::next):
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):
567 (JSC::::parse):
568 * parser/ParserTokens.h:
569 (JSC::JSTokenLocation::JSTokenLocation):
570 - Plumbed lineStart.
571 (JSC::JSTokenLocation::lineStartPosition):
572 (JSC::JSTokenLocation::startPosition):
573 (JSC::JSTokenLocation::endPosition):
574 * parser/SourceCode.h:
575 (JSC::SourceCode::SourceCode):
576 (JSC::SourceCode::startColumn):
577 (JSC::makeSource):
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):
584 - Plumbed lineStart.
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.
627
628 2013-07-08 Lucas Forschler <lforschler@apple.com>
629
630 Merge r152052
631
632 2013-06-26 Anders Carlsson <andersca@apple.com>
633
634 Add JSStringCreateWithCharactersNoCopy SPI
635 https://bugs.webkit.org/show_bug.cgi?id=118074
636 <rdar://problem/14279905>
637
638 Reviewed by Geoffrey Garen.
639
640 * API/JSStringRef.cpp:
641 (JSStringCreateWithCharactersNoCopy):
642 Create a new OpaqueJSString, using the newly added StringImpl::createWithoutCopying function.
643
644 * API/JSStringRefPrivate.h: Added.
645 Add a home for the JSStringCreateWithCharactersNoCopy function.
646
647 * API/OpaqueJSString.h:
648 (OpaqueJSString::OpaqueJSString):
649 Just call isolatedCopy on the passed in string.
650
651 * API/tests/testapi.c:
652 Add an API test for JSStringCreateWithCharactersNoCopy.
653
654 * JavaScriptCore.xcodeproj/project.pbxproj:
655 Add new files.
656
657 2013-07-08 Lucas Forschler <lforschler@apple.com>
658
659 Merge r152314
660
661 2013-07-02 Mark Hahnenberg <mhahnenberg@apple.com>
662
663 Replace RELEASE_ASSERT with ASSERT in CodeBlock:: bytecodeOffsetForCallAtIndex
664 https://bugs.webkit.org/show_bug.cgi?id=118316
665
666 Reviewed by Geoffrey Garen.
667
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.
670
671 * bytecode/CodeBlock.h:
672 (JSC::CodeBlock::bytecodeOffsetForCallAtIndex):
673
674 2013-07-01 Lucas Forschler <lforschler@apple.com>
675
676 Merge r152091
677
678 2013-06-27 Timothy Hatcher <timothy@apple.com>
679
680 Notify the debugger about functions created from source code via new Function() or WebCore::JSLazyEventListener.
681
682 https://bugs.webkit.org/show_bug.cgi?id=118063
683
684 Reviewed by Geoffrey Garen.
685
686 * bytecode/UnlinkedCodeBlock.cpp:
687 (JSC::UnlinkedFunctionExecutable::fromGlobalCode): Call Debugger::sourceParsed.
688
689 2013-07-01 Lucas Forschler <lforschler@apple.com>
690
691 Merge r151978
692
693 2013-06-25 Ryosuke Niwa <rniwa@webkit.org>
694
695 JSString should remember AtomicString
696 https://bugs.webkit.org/show_bug.cgi?id=117386
697
698 Reviewed by Geoffrey Garen.
699
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.
703
704 * runtime/JSCJSValue.h:
705 * runtime/JSString.h:
706 (JSC::JSString::atomicString):
707 (JSC::JSValue::toAtomicString):
708
709 2013-06-25 Lucas Forschler <lforschler@apple.com>
710
711 Merge r151786
712
713 2013-06-20 Mark Hahnenberg <mhahnenberg@apple.com>
714
715 Improper deallocation of JSManagedValue causes crashes during autorelease pool draining
716 https://bugs.webkit.org/show_bug.cgi?id=117840
717
718 Reviewed by Geoffrey Garen.
719
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.
723
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.
726
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.
732
733 2013-06-25 Lucas Forschler <lforschler@apple.com>
734
735 Merge r151923
736
737 2013-06-24 Roger Fong <roger_fong@apple.com>
738
739 Unreviewed. Makefile build fix for AppleWindows.
740
741 * JavaScriptCore.vcxproj/JavaScriptCore.make:
742
743 2013-06-21 Lucas Forschler <lforschler@apple.com>
744
745 Merge r151787
746
747 2013-06-20 Roger Fong <roger_fong@apple.com>
748
749 Make Windows makefile copy build output to a different folder.
750 <rdar://problem/14219184>.
751
752 * JavaScriptCore.vcxproj/JavaScriptCore.make:
753
754 2013-06-18 Roger Fong <roger_fong@apple.com>
755
756 Disable some feature flags.
757 <rdar://problem/14171207>.
758
759 Rubberstamped by Jon Lee.
760
761 * Configurations/FeatureDefines.xcconfig:
762
763 2013-06-18 Oliver Hunt <oliver@apple.com>
764
765 Going to google.com/trends causes a crash
766 https://bugs.webkit.org/show_bug.cgi?id=117602
767
768 Reviewed by Geoffrey Garen.
769
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.
772
773 * dfg/DFGByteCodeParser.cpp:
774 (JSC::DFG::ByteCodeParser::flushAllArgumentsAndCapturedVariablesInInlineStack):
775 (JSC::DFG::ByteCodeParser::parseBlock):
776
777 2013-06-18 Roger Fong <roger_fong@apple.com>
778
779 Replace tools32 folder with tools and update WebKit Windows solution accordingly.
780 <rdar://problem/14118143>.
781
782 Rubberstamped by Brent Fulgham.
783
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:
815
816 2013-06-17 Roger Fong <roger_fong@apple.com>
817
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>
821
822 Reviewed by Brent Fulgham.
823
824 * JavaScriptCore.vcxproj/JavaScriptCore.make:
825
826 2013-06-14 Ryosuke Niwa <rniwa@webkit.org>
827
828 Function names on Object.prototype should be common identifiers
829 https://bugs.webkit.org/show_bug.cgi?id=117614
830
831 Reviewed by Darin Adler.
832
833 Patch written by Sam Weinig. Make Object's prototype function names common identififers since they're used frequently.
834
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):
845
846 2013-06-13 Ryosuke Niwa <rniwa@webkit.org>
847
848 Remove LiteralIdentifierTable
849 https://bugs.webkit.org/show_bug.cgi?id=117613
850
851 Reviewed by Geoffrey Garen.
852
853 Removed LiteralIdentifierTable since it doesn't seem to have any perf. impact now.
854
855 * runtime/Identifier.cpp:
856 (JSC::Identifier::add):
857
858 2013-06-12 Conrad Shultz <conrad_shultz@apple.com>
859
860 JSExport header documentation substitutes "semicolon" for "colon"
861 https://bugs.webkit.org/show_bug.cgi?id=117552
862
863 Reviewed by Mark Hahnenberg.
864
865 * API/JSExport.h:
866 Fix a couple typos.
867
868 2013-06-10 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
869
870 [JSC] Remove a vestige of wxWidgets support.
871 https://bugs.webkit.org/show_bug.cgi?id=117419
872
873 Reviewed by Benjamin Poulain.
874
875 * runtime/JSExportMacros.h: Remove a check for BUILDING_WX__ that
876 seems to have gone unnoticed when the wxWidgets port was removed.
877
878 2013-06-06 Roger Fong <roger_fong@apple.com>
879
880 Stop copying AAS binaries into build folder.
881 https://bugs.webkit.org/show_bug.cgi?id=117319.
882
883 Rubberstamped by Darin Adler.
884
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:
891
892 2013-06-05 Filip Pizlo <fpizlo@apple.com>
893
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>
897
898 Reviewed by Mark Hahnenberg.
899
900 * dfg/DFGAbstractValue.h:
901 (JSC::DFG::AbstractValue::filterArrayModesByType):
902
903 2013-06-05 Michael Saboff <msaboff@apple.com>
904
905 JSC: Crash beneath cti_op_div @ http://gmailblog.blogspot.com
906 https://bugs.webkit.org/show_bug.cgi?id=117280
907
908 Reviewed by Filip Pizlo.
909
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
913 attributes.
914 Added new dump code to dump the ArgumentPosition list.
915
916 * dfg/DFGArgumentPosition.h:
917 (JSC::DFG::rgumentPosition::mergeArgumentPredictionAwareness):
918 (JSC::DFG::ArgumentPosition::mergeArgumentUnboxingAwareness):
919 (JSC::DFG::ArgumentPosition::dump):
920 * dfg/DFGGraph.cpp:
921 (JSC::DFG::Graph::dump):
922
923 2013-06-05 Bear Travis <betravis@adobe.com>
924
925 [CSS Exclusions][CSS Shapes] Split CSS Exclusions & Shapes compile & runtime flags
926 https://bugs.webkit.org/show_bug.cgi?id=117172
927
928 Reviewed by Alexandru Chiculita.
929
930 Adding the CSS_SHAPES compile flag.
931
932 * Configurations/FeatureDefines.xcconfig:
933
934 2013-06-05 Balazs Kilvady <kilvadyb@homejinni.com>
935
936 JSC Assertion tests failures on MIPS.
937 https://bugs.webkit.org/show_bug.cgi?id=116552
938
939 Reviewed by Geoffrey Garen.
940
941 Fix condition handlig in branchAdd32 implemetations.
942
943 * assembler/MacroAssemblerMIPS.h:
944 (JSC::MacroAssemblerMIPS::branchAdd32):
945
946 2013-06-04 Julien Brianceau <jbrianceau@nds.com>
947
948 [sh4] Add floating point absolute function support in baseline JIT.
949 https://bugs.webkit.org/show_bug.cgi?id=117147
950
951 Reviewed by Geoffrey Garen.
952
953 * assembler/MacroAssemblerSH4.h:
954 (JSC::MacroAssemblerSH4::supportsFloatingPointAbs):
955 (JSC::MacroAssemblerSH4::absDouble):
956 * assembler/SH4Assembler.h:
957 (JSC::SH4Assembler::dabs):
958 (JSC::SH4Assembler::printInstr):
959
960 2013-06-04 Zan Dobersek <zdobersek@igalia.com>
961
962 [JSC] Test262 15.5.4.9_3 test is failing
963 https://bugs.webkit.org/show_bug.cgi?id=116789
964
965 Reviewed by Geoffrey Garen.
966
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.
972
973 * runtime/StringPrototype.cpp:
974 (JSC::stringProtoFuncLocaleCompare): Remove the early return in case of no given arguments to achieve the desired behavior.
975
976 2013-06-03 Hojong Han <hojong.han@samsung.com>
977
978 [EFL] Implement GCActivityCallback
979 https://bugs.webkit.org/show_bug.cgi?id=95923
980
981 Reviewed by Geoffrey Garen.
982
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.
987
988 * PlatformEfl.cmake: Added.
989 * heap/HeapTimer.cpp:
990 (JSC):
991 (JSC::HeapTimer::HeapTimer):
992 (JSC::HeapTimer::~HeapTimer):
993 (JSC::HeapTimer::add):
994 (JSC::HeapTimer::stop):
995 (JSC::HeapTimer::timerEvent):
996 * heap/HeapTimer.h:
997 (HeapTimer):
998 * jsc.cpp:
999 (main):
1000 * runtime/GCActivityCallback.cpp:
1001 (JSC):
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):
1010
1011 2013-06-03 Roger Fong <roger_fong@apple.com>
1012
1013 Nuke VS2005 files from the tree.
1014 <rdar://problem/14042021>.
1015
1016 Rubberstamped by Brent Fulgham.
1017
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.
1110
1111 2013-05-31 Filip Pizlo <fpizlo@apple.com>
1112
1113 Incorrect assertion in DFG::Graph::uncheckedActivationRegisterFor()
1114 <rdar://problem/13989324>
1115
1116 Rubber stamped by Mark Hahnenberg.
1117
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.
1123
1124 * dfg/DFGGraph.h:
1125 (JSC::DFG::Graph::uncheckedActivationRegisterFor):
1126
1127 2013-05-31 Julien Brianceau <jbrianceau@nds.com>
1128
1129 [sh4] Fix Overflow case of branchMul32 in baseline JIT.
1130 https://bugs.webkit.org/show_bug.cgi?id=117057
1131
1132 Reviewed by Oliver Hunt.
1133
1134 Current implementation of Overflow case in branchMul32 performs an
1135 unsigned multiplication whereas a signed multiplication is expected.
1136
1137 * assembler/MacroAssemblerSH4.h:
1138 (JSC::MacroAssemblerSH4::branchMul32):
1139
1140 2013-05-31 Julien Brianceau <jbrianceau@nds.com>
1141
1142 [sh4] Fix floating point comparisons in baseline JIT.
1143 https://bugs.webkit.org/show_bug.cgi?id=117066.
1144
1145 Reviewed by Oliver Hunt.
1146
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).
1153
1154 * assembler/MacroAssemblerSH4.h:
1155 (JSC::MacroAssemblerSH4::branchDouble):
1156
1157 2013-05-31 Julien Brianceau <jbrianceau@nds.com>
1158
1159 [sh4] Fix double floating point transfer in baseline JIT.
1160 https://bugs.webkit.org/show_bug.cgi?id=117054
1161
1162 Reviewed by Oliver Hunt.
1163
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.
1167
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):
1174
1175 2013-05-31 Julien Brianceau <jbrianceau@nds.com>
1176
1177 [sh4] Handle branchType properly in branchTruncateDoubleToInt32.
1178 https://bugs.webkit.org/show_bug.cgi?id=117062
1179
1180 Reviewed by Oliver Hunt.
1181
1182 Current implementation of branchTruncateDoubleToInt32 is incorrect
1183 when branchType == BranchIfTruncateSuccessful in sh4 baseline JIT.
1184
1185 * assembler/MacroAssemblerSH4.h:
1186 (JSC::MacroAssemblerSH4::branchTruncateDoubleToInt32):
1187
1188 2013-05-31 Brent Fulgham <bfulgham@apple.com>
1189
1190 [Windows] Unreviewed build fix for VS2005 builders.
1191
1192 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def: Add
1193 missing export for WTF::SHA1::computeHexDigest
1194
1195 2013-05-30 David Farler <dfarler@apple.com>
1196
1197 Fix jscore-test when not using --sdk option with jsDriver.pl
1198 https://bugs.webkit.org/show_bug.cgi?id=116339
1199
1200 Reviewed by Joe Pecoraro.
1201
1202 * tests/mozilla/jsDriver.pl:
1203 (execute_tests):
1204 With each test, the shell_command needs to be started from scratch.
1205
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.
1208
1209 2013-05-30 Roger Fong <roger_fong@apple.com>
1210
1211 Get rid of JavaScript exports file on AppleWin port.
1212 https://bugs.webkit.org/show_bug.cgi?id=117050.
1213
1214 Reviewed by Darin Adler.
1215
1216 Delete the JavaScriptCoreExportGenerator folder and remove dependencies.
1217 Start linking in WTF.lib now that it's a shared library.
1218
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:
1239
1240 2013-05-22 David Farler <dfarler@apple.com>
1241
1242 Add --sdk option to jsDriver.pl to run with iOS Simulator
1243 https://bugs.webkit.org/show_bug.cgi?id=116339
1244
1245 Reviewed by David Kilzer.
1246
1247 * tests/mozilla/jsDriver.pl:
1248 (execute_tests):
1249 Prefix shell command with the path to the "sim" tool.
1250 (parse_args):
1251 Add -d / --sdk option.
1252 (usage):
1253 Help message for -d / --sdk option.
1254
1255 2013-05-30 Julien Brianceau <jbrianceau@nds.com>
1256
1257 [sh4] Optimize NaN checks in LLINT for floating point comparisons.
1258 https://bugs.webkit.org/show_bug.cgi?id=117049
1259
1260 Reviewed by Oliver Hunt.
1261
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').
1266
1267 * offlineasm/sh4.rb:
1268
1269 2013-05-30 Oliver Hunt <oliver@apple.com>
1270
1271 JSCallbackObject does not correctly initialise the PropertySlot for getOwnPropertyDescriptor
1272 https://bugs.webkit.org/show_bug.cgi?id=117053
1273
1274 Reviewed by Mark Hahnenberg.
1275
1276 Set appropriate thisValue on the PropertySlot
1277
1278 * API/JSCallbackObjectFunctions.h:
1279 (JSC::::getOwnPropertyDescriptor):
1280 * API/tests/testapi.mm:
1281
1282 2013-05-29 Jeffrey Pfau <jpfau@apple.com>
1283
1284 [Mac] Enable cache partitioning and the public suffix list on 10.8
1285 <rdar://problem/13679019>
1286
1287 Rubber-stamped by David Kilzer.
1288
1289 * Configurations/FeatureDefines.xcconfig:
1290
1291 2013-05-28 Brent Fulgham <bfulgham@apple.com>
1292
1293 [Windows] Put correct byteCompile symbol in file. Previous version
1294 had an extra 'i' appended to the end.
1295
1296 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
1297 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
1298
1299 2013-05-28 Brent Fulgham <bfulgham@apple.com>
1300
1301 [Windows] Unreviewed build fix. Remove ?byteCompile symbol that
1302 is no longer accessible during link.
1303
1304 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
1305 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
1306
1307 2013-05-28 Gavin Barraclough <barraclough@apple.com>
1308
1309 String(new Date(2010,10,1)) is wrong in KRAT, YAKT
1310 https://bugs.webkit.org/show_bug.cgi?id=106750
1311
1312 Reviewed by Darin Adler.
1313
1314 * runtime/JSDateMath.cpp:
1315 (JSC::msToGregorianDateTime):
1316 - Additional review comment fix.
1317
1318 2013-05-28 Brent Fulgham <bfulgham@apple.com>
1319
1320 [Windows] Unreviewed build fix after r150833
1321
1322 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
1323 A CR/LF combination was lost in the file, combining two symbols.
1324
1325 2013-05-27 Gavin Barraclough <barraclough@apple.com>
1326
1327 String(new Date(2010,10,1)) is wrong in KRAT, YAKT
1328 https://bugs.webkit.org/show_bug.cgi?id=106750
1329
1330 Reviewed by Darin Adler.
1331
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).
1335
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
1343 * runtime/VM.cpp:
1344 (JSC::VM::resetDateCache):
1345 - removed cachedUTCOffset, converted DSTOffsetCache -> LocalTimeOffsetCache
1346 * runtime/VM.h:
1347 (JSC::LocalTimeOffsetCache::LocalTimeOffsetCache):
1348 (JSC::LocalTimeOffsetCache::reset):
1349 (LocalTimeOffsetCache):
1350 - removed cachedUTCOffset, converted DSTOffsetCache -> LocalTimeOffsetCache
1351
1352 2013-05-28 Mark Hahnenberg <mhahnenberg@apple.com>
1353
1354 r150199 is very wrong
1355 https://bugs.webkit.org/show_bug.cgi?id=116876
1356
1357 JSValue needs to protect its internal JSValueRef.
1358
1359 Reviewed by Darin Adler.
1360
1361 * API/JSValue.mm:
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.
1366
1367 2013-05-27 Patrick Gansterer <paroga@webkit.org>
1368
1369 Use ICU_INCLUDE_DIRS in BlackBerry CMake files
1370 https://bugs.webkit.org/show_bug.cgi?id=116210
1371
1372 Reviewed by Rob Buis.
1373
1374 Set and use the ICU_INCLUDE_DIRS variable to avoid
1375 duplicated adding of the ICU include directory.
1376
1377 * PlatformBlackBerry.cmake:
1378
1379 2013-05-27 Gabor Rapcsanyi <rgabor@webkit.org>
1380
1381 MacroAssemblerARM should use xor to swap registers instead of move
1382 https://bugs.webkit.org/show_bug.cgi?id=116306
1383
1384 Reviewed by Zoltan Herczeg.
1385
1386 Change register swapping to xor from move and this way we don't need
1387 temporary register anymore.
1388
1389 * assembler/MacroAssemblerARM.h:
1390 (JSC::MacroAssemblerARM::swap):
1391
1392 2013-05-25 Filip Pizlo <fpizlo@apple.com>
1393
1394 We broke (-2^31/-1)|0 in the DFG
1395 https://bugs.webkit.org/show_bug.cgi?id=116767
1396
1397 Reviewed by Andreas Kling.
1398
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.
1401
1402 * dfg/DFGSpeculativeJIT.cpp:
1403 (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForX86):
1404
1405 2013-05-24 Filip Pizlo <fpizlo@apple.com>
1406
1407 We broke !(0/0)
1408 https://bugs.webkit.org/show_bug.cgi?id=116736
1409
1410 Reviewed by Gavin Barraclough.
1411
1412 * parser/ASTBuilder.h:
1413 (JSC::ASTBuilder::createLogicalNot):
1414 * runtime/JSCJSValueInlines.h:
1415 (JSC::JSValue::pureToBoolean):
1416
1417 2013-05-24 Julien Brianceau <jbrianceau@nds.com>
1418
1419 [sh4] Optimize LLINT generated code and fix few bugs in baseline JIT.
1420 https://bugs.webkit.org/show_bug.cgi?id=116716
1421
1422 Reviewed by Geoffrey Garen.
1423
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.
1433
1434 2013-05-23 Peter Wang <peter.wang@torchmobile.com.cn>
1435
1436 CLoop llint backend should not use the d8 register as scratch register
1437 https://bugs.webkit.org/show_bug.cgi?id=116019
1438
1439 Reviewed by Csaba Osztrogonác.
1440
1441 * offlineasm/cloop.rb:
1442
1443 2013-05-22 Peter Wang <peter.wang@torchmobile.com.cn>
1444
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
1447
1448 Reviewed by Filip Pizlo.
1449
1450 Generated instructions using uninitialized register. It's caused by a mistake of r126494.
1451
1452 * jit/JITOpcodes32_64.cpp:
1453 (JSC::JIT::emit_op_eq_null):
1454 (JSC::JIT::emit_op_neq_null):
1455
1456 2013-05-22 Filip Pizlo <fpizlo@apple.com>
1457
1458 Fix indentation of CodeBlock.h
1459
1460 Rubber stampted by Mark Hahnenberg.
1461
1462 * bytecode/CodeBlock.h:
1463
1464 2013-05-22 Julien Brianceau <jbrianceau@nds.com>
1465
1466 [sh4] Remove MacroAssemblerSH4.cpp file.
1467 https://bugs.webkit.org/show_bug.cgi?id=116596.
1468
1469 Reviewed by Geoffrey Garen.
1470
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.
1474
1475 * GNUmakefile.list.am:
1476 * JavaScriptCore.xcodeproj/project.pbxproj:
1477 * Target.pri:
1478 * assembler/MacroAssemblerSH4.cpp: Removed.
1479 * assembler/MacroAssemblerSH4.h:
1480 (JSC::MacroAssemblerSH4::linkCall):
1481 (MacroAssemblerSH4):
1482 (JSC::MacroAssemblerSH4::repatchCall):
1483
1484 2013-05-21 Brent Fulgham <bfulgham@apple.com>
1485
1486 [Windows] Unreviewed speculative fix for test-bots.
1487
1488 Add export declaration for WTFInvokeCrashHook to avoid runtime
1489 load error on test bots.
1490
1491 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
1492 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
1493
1494 2013-05-21 Mark Lam <mark.lam@apple.com>
1495
1496 Added missing assert condition for PositiveOrZero in ARM branch32().
1497 https://bugs.webkit.org/show_bug.cgi?id=116538.
1498
1499 Reviewed by Geoffrey Garen.
1500
1501 * assembler/MacroAssemblerARM.h:
1502 (JSC::MacroAssemblerARM::branchAdd32):
1503
1504 2013-05-20 Mark Hahnenberg <mhahnenberg@apple.com>
1505
1506 Disable SuperRegion
1507 https://bugs.webkit.org/show_bug.cgi?id=116362
1508
1509 Rubber stamped by Geoff Garen.
1510
1511 * heap/Region.h:
1512
1513 2013-05-20 Oliver Hunt <oliver@apple.com>
1514
1515 Make C API more robust against null contexts
1516 https://bugs.webkit.org/show_bug.cgi?id=116462
1517
1518 Reviewed by Anders Carlsson.
1519
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.
1523
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.
1526
1527 * API/JSBase.cpp:
1528 (JSEvaluateScript):
1529 (JSCheckScriptSyntax):
1530 (JSReportExtraMemoryCost):
1531 * API/JSContextRef.cpp:
1532 (JSContextGetGlobalObject):
1533 (JSContextGetGroup):
1534 (JSContextGetGlobalContext):
1535 (JSContextCreateBacktrace):
1536 * API/JSObjectRef.cpp:
1537 (JSObjectMake):
1538 (JSObjectMakeFunctionWithCallback):
1539 (JSObjectMakeConstructor):
1540 (JSObjectMakeFunction):
1541 (JSObjectMakeArray):
1542 (JSObjectMakeDate):
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:
1555 (JSValueGetType):
1556 (JSValueIsUndefined):
1557 (JSValueIsNull):
1558 (JSValueIsBoolean):
1559 (JSValueIsNumber):
1560 (JSValueIsString):
1561 (JSValueIsObject):
1562 (JSValueIsObjectOfClass):
1563 (JSValueIsEqual):
1564 (JSValueIsStrictEqual):
1565 (JSValueIsInstanceOfConstructor):
1566 (JSValueMakeUndefined):
1567 (JSValueMakeNull):
1568 (JSValueMakeBoolean):
1569 (JSValueMakeNumber):
1570 (JSValueMakeString):
1571 (JSValueMakeFromJSONString):
1572 (JSValueCreateJSONString):
1573 (JSValueToBoolean):
1574 (JSValueToNumber):
1575 (JSValueToStringCopy):
1576 (JSValueToObject):
1577 (JSValueProtect):
1578 * API/JSWeakObjectMapRefPrivate.cpp:
1579
1580 2013-05-20 David Kilzer <ddkilzer@apple.com>
1581
1582 Synchronize FeatureDefines.xcconfig
1583
1584 * Configurations/FeatureDefines.xcconfig: Remove
1585 ENABLE_LINK_PRERENDER. This was missed in r150356.
1586
1587 2013-05-19 Anders Carlsson <andersca@apple.com>
1588
1589 Remove link prerendering code
1590 https://bugs.webkit.org/show_bug.cgi?id=116415
1591
1592 Reviewed by Darin Adler.
1593
1594 This code was only used by Chromium and is dead now.
1595
1596 * Configurations/FeatureDefines.xcconfig:
1597
1598 2013-05-18 Patrick Gansterer <paroga@webkit.org>
1599
1600 [CMake] Replace *_LIBRARY_NAME with *_OUTPUT_NAME
1601 https://bugs.webkit.org/show_bug.cgi?id=114554
1602
1603 Reviewed by Gyuyoung Kim.
1604
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.
1608
1609 * CMakeLists.txt:
1610 * shell/CMakeLists.txt:
1611
1612 2013-05-17 Patrick Gansterer <paroga@webkit.org>
1613
1614 [CMake] Remove invalid include paths
1615 https://bugs.webkit.org/show_bug.cgi?id=116213
1616
1617 Reviewed by Gyuyoung Kim.
1618
1619 Since "${JAVASCRIPTCORE_DIR}/wtf" does not exist, it is safe
1620 to remove them from the list of include directories.
1621
1622 * PlatformEfl.cmake: Removed.
1623 * PlatformGTK.cmake: Removed.
1624
1625 2013-05-16 Patrick Gansterer <paroga@webkit.org>
1626
1627 Consolidate lists in JavaScriptCore CMake files
1628 https://bugs.webkit.org/show_bug.cgi?id=115992
1629
1630 Reviewed by Gyuyoung Kim.
1631
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.
1635
1636 * CMakeLists.txt:
1637 * PlatformEfl.cmake:
1638 * PlatformGTK.cmake:
1639 * shell/CMakeLists.txt:
1640 * shell/PlatformEfl.cmake:
1641 * shell/PlatformGTK.cmake:
1642
1643 2013-05-16 Geoffrey Garen <ggaren@apple.com>
1644
1645 JSValue shouldn't protect/unprotect its context
1646 https://bugs.webkit.org/show_bug.cgi?id=116234
1647
1648 Reviewed by Mark Hahnenberg.
1649
1650 Our retain on _context is sufficient.
1651
1652 * API/JSValue.mm:
1653 (-[JSValue initWithValue:inContext:]):
1654 (-[JSValue dealloc]):
1655
1656 2013-05-15 Ryosuke Niwa <rniwa@webkit.org>
1657
1658 Another Windows build fix attempt after r150160.
1659
1660 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
1661 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
1662
1663 2013-05-15 Oliver Hunt <oliver@apple.com>
1664
1665 RefCountedArray needs to use vector initialisers for its backing store
1666 https://bugs.webkit.org/show_bug.cgi?id=116194
1667
1668 Reviewed by Gavin Barraclough.
1669
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.
1672
1673 Everything else is just being updated to use that.
1674
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):
1683 * runtime/VM.cpp:
1684 (JSC):
1685 (JSC::VM::clearExceptionStack):
1686 * runtime/VM.h:
1687 (VM):
1688 (JSC::VM::exceptionStack):
1689
1690 2013-05-15 Commit Queue <commit-queue@webkit.org>
1691
1692 Unreviewed, rolling out r150051.
1693 http://trac.webkit.org/changeset/150051
1694 https://bugs.webkit.org/show_bug.cgi?id=116186
1695
1696 Broke all JSC tests on Mac and the author is unresponsive
1697 (Requested by rniwa on #webkit).
1698
1699 * JavaScriptCore.xcodeproj/project.pbxproj:
1700
1701 2013-05-15 Julien Brianceau <jbrianceau@nds.com>
1702
1703 Remove savedTimeoutReg from JITStackFrame for sh4 base JIT.
1704 https://bugs.webkit.org/show_bug.cgi?id=116143
1705
1706 Reviewed by Geoffrey Garen.
1707
1708 Since r148119, timeoutCheckRegister is removed from baseline JIT.
1709 So we don't need to save r8 register in JITStackFrame anymore for sh4.
1710
1711 * jit/JITStubs.cpp:
1712 * jit/JITStubs.h:
1713 (JITStackFrame):
1714
1715 2013-05-15 Nico Weber <thakis@chromium.org>
1716
1717 WebKit doesn't support MSVS2003 any more, remove preprocessor checks for older versions.
1718 https://bugs.webkit.org/show_bug.cgi?id=116157
1719
1720 Reviewed by Anders Carlsson.
1721
1722 Also remove a gcc3.2 workaround.
1723
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
1727
1728 * os-win32/inttypes.h:
1729
1730 2013-05-13 Alvaro Lopez Ortega <alvaro@alobbs.com>
1731
1732 Nightly build's jsc doesn't work without DYLD_FRAMEWORK...
1733 https://bugs.webkit.org/show_bug.cgi?id=79065
1734
1735 Reviewed by Darin Adler.
1736
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
1740 libraries.
1741
1742 * JavaScriptCore.xcodeproj/project.pbxproj: Fixes the commands in
1743 the "Copy Into Framework" target.
1744
1745 2013-05-13 Mark Hahnenberg <mhahnenberg@apple.com>
1746
1747 Objective-C API: scanExternalObjectGraph should not create new JSVirtualMachine wrappers
1748 https://bugs.webkit.org/show_bug.cgi?id=116074
1749
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.
1755
1756 Reviewed by Darin Adler.
1757
1758 * API/JSVirtualMachine.mm:
1759 (scanExternalObjectGraph):
1760
1761 2013-05-13 Benjamin Poulain <benjamin@webkit.org>
1762
1763 Improve stringProtoFuncLastIndexOf for the prefix case
1764 https://bugs.webkit.org/show_bug.cgi?id=115952
1765
1766 Reviewed by Geoffrey Garen.
1767
1768 * runtime/StringPrototype.cpp:
1769 (JSC::stringProtoFuncLastIndexOf):
1770 Use the optimized string search when possible.
1771
1772 On Joseph Pecoraro's tests, this gives a ~30% speed improvement.
1773
1774 2013-05-13 Zalan Bujtas <zalan@apple.com>
1775
1776 WebProcess consuming very high CPU on linkedin.com
1777 https://bugs.webkit.org/show_bug.cgi?id=115601
1778
1779 Reviewed by Andreas Kling.
1780
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.
1784
1785 * Configurations/FeatureDefines.xcconfig:
1786
1787 2013-05-12 Anders Carlsson <andersca@apple.com>
1788
1789 Stop including UnusedParam.h
1790 https://bugs.webkit.org/show_bug.cgi?id=116003
1791
1792 Reviewed by Sam Weinig.
1793
1794 UnusedParam.h is empty now so there's no need to include it anymore.
1795
1796 * API/APICast.h:
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:
1815
1816 2013-05-11 Martin Robinson <mrobinson@igalia.com>
1817
1818 [GTK] Add a basic cmake build for WTF and JavaScriptCore
1819 https://bugs.webkit.org/show_bug.cgi?id=115967
1820
1821 Reviewed by Laszlo Gombos.
1822
1823 * PlatformGTK.cmake: Added.
1824 * shell/PlatformGTK.cmake: Added.
1825
1826 2013-05-10 Laszlo Gombos <l.gombos@samsung.com>
1827
1828 Remove USE(OS_RANDOMNESS)
1829 https://bugs.webkit.org/show_bug.cgi?id=108095
1830
1831 Reviewed by Darin Adler.
1832
1833 Remove the USE(OS_RANDOMNESS) guard as it is turned on for all
1834 ports.
1835
1836 * jit/JIT.cpp:
1837 (JSC::JIT::JIT):
1838
1839 2013-05-10 Mark Hahnenberg <mhahnenberg@apple.com>
1840
1841 Rename StructureCheckHoistingPhase to TypeCheckHoistingPhase
1842 https://bugs.webkit.org/show_bug.cgi?id=115938
1843
1844 We're going to add some more types of check hoisting soon, so let's have the right name here.
1845
1846 Rubber stamped by Filip Pizlo.
1847
1848 * CMakeLists.txt:
1849 * GNUmakefile.list.am:
1850 * JavaScriptCore.xcodeproj/project.pbxproj:
1851 * Target.pri:
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.
1860
1861 2013-05-09 Christophe Dumez <ch.dumez@sisa.samsung.com>
1862
1863 Unreviewed build fix after r149836.
1864
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).
1868
1869 * runtime/CodeCache.cpp:
1870 (JSC):
1871 * runtime/CodeCache.h:
1872 (CodeCacheMap):
1873
1874 2013-05-08 Oliver Hunt <oliver@apple.com>
1875
1876 Code cache stores bogus var references for functions in eval code
1877 https://bugs.webkit.org/show_bug.cgi?id=115747
1878
1879 Reviewed by Mark Hahnenberg.
1880
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.
1887
1888 * bytecode/EvalCodeCache.h:
1889 (JSC):
1890 (JSC::EvalCodeCache::getSlow):
1891 (JSC::EvalCodeCache::get):
1892 * bytecode/UnlinkedCodeBlock.h:
1893 (JSC::UnlinkedCodeBlock::codeCacheForEval):
1894 (UnlinkedCodeBlock):
1895 (RareData):
1896 * debugger/Debugger.cpp:
1897 (JSC::evaluateInGlobalCallFrame):
1898 * debugger/DebuggerCallFrame.cpp:
1899 (JSC::DebuggerCallFrame::evaluate):
1900 * interpreter/Interpreter.cpp:
1901 (JSC::eval):
1902 * runtime/CodeCache.cpp:
1903 (JSC::CodeCache::CodeCache):
1904 (JSC::CodeCache::generateBytecode):
1905 (JSC):
1906 (JSC::CodeCache::getCodeBlock):
1907 * runtime/CodeCache.h:
1908 (JSC::CodeCacheMap::CodeCacheMap):
1909 (CodeCacheMap):
1910 (JSC::CodeCacheMap::canPruneQuickly):
1911 (JSC::CodeCacheMap::prune):
1912 (JSC::CodeCache::create):
1913 (CodeCache):
1914 * runtime/Executable.cpp:
1915 (JSC::EvalExecutable::EvalExecutable):
1916 (JSC::EvalExecutable::compileInternal):
1917 * runtime/Executable.h:
1918 (JSC::EvalExecutable::create):
1919 (EvalExecutable):
1920 * runtime/JSGlobalObject.cpp:
1921 (JSC::JSGlobalObject::createEvalCodeBlock):
1922 * runtime/JSGlobalObject.h:
1923 (JSGlobalObject):
1924 * runtime/JSGlobalObjectFunctions.cpp:
1925 (JSC::globalFuncEval):
1926 * runtime/VM.cpp:
1927 (JSC::VM::VM):
1928 * runtime/VM.h:
1929 (VM):
1930
1931 2013-05-08 Mark Hahnenberg <mhahnenberg@apple.com>
1932
1933 DFGArrayMode::fromObserved is too liberal when it sees different Array and NonArray shapes
1934 https://bugs.webkit.org/show_bug.cgi?id=115805
1935
1936 Reviewed by Geoffrey Garen.
1937
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.
1942
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.
1945
1946 * bytecode/ArrayProfile.h:
1947 (JSC::hasSeenArray):
1948 (JSC::hasSeenNonArray):
1949 * dfg/DFGArrayMode.cpp:
1950 (JSC::DFG::ArrayMode::fromObserved):
1951
1952 2013-05-09 Joe Mason <jmason@blackberry.com>
1953
1954 [BlackBerry] Set up logging buffer on start of jsc executable
1955 https://bugs.webkit.org/show_bug.cgi?id=114688
1956
1957 Reviewed by Rob Buis.
1958
1959 Internal PR: 322715
1960 Internally Reviewed By: Jeff Rogers
1961
1962 * jsc.cpp:
1963 (main): call BB::Platform::setupApplicationLogging
1964
1965 2013-05-08 Michael Saboff <msaboff@apple.com>
1966
1967 JSC: There should be a disassembler for ARM Thumb 2
1968 https://bugs.webkit.org/show_bug.cgi?id=115827
1969
1970 Reviewed by Filip Pizlo.
1971
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.
1976
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.
1990
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):
2066 (ARMv7DOpcode):
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):
2085 (OpcodeGroup):
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):
2317 (ARMv7DOpcodeVMSR):
2318 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::opL):
2319 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::rt):
2320 * disassembler/ARMv7Disassembler.cpp: Added.
2321 (JSC::tryToDisassemble):
2322
2323 2013-05-07 Julien Brianceau <jbrianceau@nds.com>
2324
2325 Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT.
2326 https://bugs.webkit.org/show_bug.cgi?id=115722
2327
2328 Reviewed by Oliver Hunt.
2329
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):
2339 (SH4Assembler):
2340 (JSC::SH4Assembler::movbMemRegIn):
2341 (JSC::SH4Assembler::printInstr):
2342
2343 2013-05-07 Anders Carlsson <andersca@apple.com>
2344
2345 Remove AlwaysInline.h from WTF
2346 https://bugs.webkit.org/show_bug.cgi?id=115727
2347
2348 Reviewed by Brent Fulgham.
2349
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.
2352
2353 * jit/JSInterfaceJIT.h:
2354 * parser/Lexer.h:
2355 * runtime/JSCJSValue.h:
2356 * runtime/SymbolTable.h:
2357
2358 2013-05-07 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
2359
2360 HashTraits<RefPtr<P> >::PeekType should be raw pointer for better performance
2361 https://bugs.webkit.org/show_bug.cgi?id=115646
2362
2363 Reviewed by Darin Adler.
2364
2365 * bytecompiler/StaticPropertyAnalyzer.h:
2366 (JSC::StaticPropertyAnalyzer::putById):
2367 Updated accordingly to new HashMap<.., RefPtr>::get() semantics.
2368
2369 2013-05-06 Julien Brianceau <jbrianceau@nds.com>
2370
2371 Misc bugfix and cleaning in sh4 base JIT.
2372 https://bugs.webkit.org/show_bug.cgi?id=115627
2373
2374 Reviewed by Oliver Hunt.
2375
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.
2379
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):
2394 (SH4Assembler):
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):
2400
2401 2013-05-06 Anders Carlsson <andersca@apple.com>
2402
2403 Stop using WTF::deleteAllValues in JavaScriptCore
2404 https://bugs.webkit.org/show_bug.cgi?id=115670
2405
2406 Reviewed by Oliver Hunt.
2407
2408 Change the Vectors used to Vectors of OwnPtrs instead.
2409
2410 * heap/DFGCodeBlocks.cpp:
2411 (JSC::DFGCodeBlocks::~DFGCodeBlocks):
2412 (JSC::DFGCodeBlocks::deleteUnmarkedJettisonedCodeBlocks):
2413
2414 2013-05-06 Andras Becsi <andras.becsi@digia.com>
2415
2416 Build with GCC 4.8 fails because of -Wmaybe-uninitialized
2417 https://bugs.webkit.org/show_bug.cgi?id=115648
2418
2419 Reviewed by Michael Saboff.
2420
2421 Initialize values in Options::setOption since from
2422 there we end up calling OptionRange::init with
2423 uninitialized members.
2424
2425 * runtime/Options.cpp:
2426
2427 2013-05-06 Gabor Rapcsanyi <rgabor@webkit.org>
2428
2429 JSC ARM traditional failing on Octane NavierStokes test
2430 https://bugs.webkit.org/show_bug.cgi?id=115626
2431
2432 Reviewed by Zoltan Herczeg.
2433
2434 Change the ARM traditional assembler to use double precision on value
2435 conversions.
2436
2437 * assembler/ARMAssembler.h:
2438
2439 2013-05-03 Michael Saboff <msaboff@apple.com>
2440
2441 There should be a runtime option to constrain what functions get DFG compiled
2442 https://bugs.webkit.org/show_bug.cgi?id=115576
2443
2444 Reviewed by Mark Hahnenberg.
2445
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.
2452
2453 * dfg/DFGDriver.cpp:
2454 (JSC::DFG::compile): Added new check for bytecode count within bytecodeRangeToDFGCompile
2455 range.
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.
2468
2469 2013-05-02 Oliver Hunt <oliver@apple.com>
2470
2471 Fix potential bug in lookup logic
2472 https://bugs.webkit.org/show_bug.cgi?id=115522
2473
2474 Reviewed by Mark Hahnenberg.
2475
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.
2481
2482 * bytecompiler/BytecodeGenerator.cpp:
2483 (JSC::BytecodeGenerator::resolve):
2484 * runtime/JSObject.h:
2485 (JSObject):
2486 (JSC):
2487 (JSC::JSObject::isStaticScopeObject):
2488
2489 2013-05-01 Roger Fong <roger_fong@apple.com>
2490
2491 Set Path in makefile for AppleWin.
2492
2493 * JavaScriptCore.vcxproj/JavaScriptCore.make:
2494
2495 2013-05-01 Benjamin Poulain <benjamin@webkit.org>
2496
2497 Remove the remaining wscript
2498 https://bugs.webkit.org/show_bug.cgi?id=115459
2499
2500 Reviewed by Andreas Kling.
2501
2502 * wscript: Removed.
2503
2504 2013-04-30 Mark Lam <mark.lam@apple.com>
2505
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.
2509
2510 Reviewed by Geoffrey Garen.
2511
2512 * API/JSContextRef.cpp:
2513 (internalScriptTimeoutCallback):
2514 (JSContextGroupSetExecutionTimeLimit):
2515 * API/tests/testapi.c:
2516 (main):
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.
2521
2522 2013-04-30 Geoffrey Garen <ggaren@apple.com>
2523
2524 Removed op_ensure_property_exists
2525 https://bugs.webkit.org/show_bug.cgi?id=115460
2526
2527 Reviewed by Mark Hahnenberg.
2528
2529 It was unused, and whatever it was once used for was not optimized.
2530
2531 * JavaScriptCore.order:
2532 * bytecode/CodeBlock.cpp:
2533 (JSC::CodeBlock::dumpBytecode):
2534 * bytecode/Opcode.h:
2535 (JSC::padOpcodeName):
2536 * jit/JIT.cpp:
2537 (JSC::JIT::privateCompileMainPass):
2538 * jit/JIT.h:
2539 * jit/JITOpcodes.cpp:
2540 * jit/JITOpcodes32_64.cpp:
2541 * jit/JITStubs.cpp:
2542 * jit/JITStubs.h:
2543 * llint/LLIntSlowPaths.cpp:
2544 * llint/LLIntSlowPaths.h:
2545 * llint/LowLevelInterpreter.asm:
2546
2547 2013-04-30 Oliver Hunt <oliver@apple.com>
2548
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
2551
2552 Reviewed by Geoffrey Garen.
2553
2554 Rename callframeishost to something that makes sense, and fix
2555 getCallerInfo to correctly handle inline functions calling into
2556 the VM.
2557
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):
2567
2568 2013-04-30 Julien Brianceau <jbrianceau@nds.com>
2569
2570 Bug fixing in sh4 base JIT and LLINT.
2571 https://bugs.webkit.org/show_bug.cgi?id=115420
2572
2573 Reviewed by Oliver Hunt.
2574
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):
2586 (SH4Assembler):
2587 (JSC::SH4Assembler::sharImm8r):
2588 (JSC::SH4Assembler::maxJumpReplacementSize):
2589 (JSC::SH4Assembler::replaceWithJump):
2590 * offlineasm/sh4.rb:
2591
2592 2013-04-30 Geoffrey Garen <ggaren@apple.com>
2593
2594 Objective-C JavaScriptCore API should publicly support bridging to C
2595 https://bugs.webkit.org/show_bug.cgi?id=115447
2596
2597 Reviewed by Mark Hahnenberg.
2598
2599 For consistency, I renamed
2600
2601 +[JSValue valueWithValue:] => +[JSValue valueWithJSValueRef]
2602 +[JSContext contextWithGlobalContextRef] => +[JSContext contextWithJSGlobalContextRef]
2603 -[JSContext globalContext] => -[JSContext JSGlobalContextRef]
2604
2605 I searched svn to verify that these functions don't have clients yet,
2606 so we won't break anything.
2607
2608 I also exported as public API
2609
2610 +[JSValue valueWithJSValueRef:]
2611 +[JSContext contextWithJSGlobalContextRef:]
2612
2613 It's hard to integrate with the C API without these.
2614
2615 2013-04-30 Commit Queue <rniwa@webkit.org>
2616
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
2621
2622 The Thumb version of compileSoftModulo make invalid use of
2623 registers (Requested by benjaminp on #webkit).
2624
2625 * CMakeLists.txt:
2626 * GNUmakefile.list.am:
2627 * JavaScriptCore.xcodeproj/project.pbxproj:
2628 * assembler/ARMv7Assembler.h:
2629 (ARMv7Assembler):
2630 * assembler/AbstractMacroAssembler.h:
2631 (JSC::isARMv7s):
2632 (JSC):
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):
2642 (DFG):
2643 (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForARMv7s):
2644 * dfg/DFGSpeculativeJIT.h:
2645 (JSC::DFG::SpeculativeJIT::callOperation):
2646 (SpeculativeJIT):
2647 * dfg/DFGSpeculativeJIT32_64.cpp:
2648 (JSC::DFG::SpeculativeJIT::compile):
2649
2650 2013-04-30 Zalan Bujtas <zalan@apple.com>
2651
2652 Animations fail to start on http://www.google.com/insidesearch/howsearchworks/thestory/
2653 https://bugs.webkit.org/show_bug.cgi?id=111244
2654
2655 Reviewed by David Kilzer.
2656
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.
2661
2662 * Configurations/FeatureDefines.xcconfig:
2663
2664 2013-04-30 Zoltan Arvai <zarvai@inf.u-szeged.hu>
2665
2666 Unreviewed. Speculative build fix on Qt Arm and Mips after r149349.
2667
2668 * dfg/DFGSpeculativeJIT.cpp:
2669 (JSC::DFG::SpeculativeJIT::compileSoftModulo):
2670
2671 2013-04-29 Cosmin Truta <ctruta@blackberry.com>
2672
2673 [ARM] Expand the use of integer division
2674 https://bugs.webkit.org/show_bug.cgi?id=115138
2675
2676 Reviewed by Benjamin Poulain.
2677
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.
2681
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.
2686
2687 * CMakeLists.txt:
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.
2714
2715 2013-04-29 Benjamin Poulain <benjamin@webkit.org>
2716
2717 Unify the data access of StringImpl members from JavaScriptCore
2718 https://bugs.webkit.org/show_bug.cgi?id=115320
2719
2720 Reviewed by Andreas Kling.
2721
2722 DFG accesses the member infos by directly calling the methods on StringImpl,
2723 while the baseline JIT was using helper methods on ThunkHelpers.
2724
2725 Cut the middle man, and use StringImpl directly everywhere.
2726
2727 * jit/JITInlines.h:
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):
2736
2737 2013-04-29 Benjamin Poulain <bpoulain@apple.com>
2738
2739 Use push and pop for iOS math function thunks
2740 https://bugs.webkit.org/show_bug.cgi?id=115215
2741
2742 Reviewed by Filip Pizlo.
2743
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."
2748
2749 Subsequently, we can just use push and pop to preserve the link register.
2750
2751 * jit/ThunkGenerators.cpp:
2752
2753 2013-04-29 Brent Fulgham <bfulgham@webkit.org>
2754
2755 [Windows, WinCairo] Get rid of last few pthread include/link references.
2756 https://bugs.webkit.org/show_bug.cgi?id=115375
2757
2758 Reviewed by Tim Horton.
2759
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:
2766
2767 2013-04-29 Roger Fong <roger_fong@apple.com>
2768
2769 Unreviewed. AppleWin VS2010 build fix.
2770
2771 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
2772
2773 2013-04-26 Mark Hahnenberg <mhahnenberg@apple.com>
2774
2775 ~BlockAllocator should ASSERT that it has no more Regions left
2776 https://bugs.webkit.org/show_bug.cgi?id=115287
2777
2778 Reviewed by Andreas Kling.
2779
2780 * heap/BlockAllocator.cpp:
2781 (JSC::BlockAllocator::~BlockAllocator):
2782 (JSC::BlockAllocator::allRegionSetsAreEmpty):
2783 * heap/BlockAllocator.h:
2784 (RegionSet):
2785 (JSC::BlockAllocator::RegionSet::isEmpty):
2786 (BlockAllocator):
2787
2788 2013-04-29 Mark Hahnenberg <mhahnenberg@apple.com>
2789
2790 IndexingTypes should use hex
2791 https://bugs.webkit.org/show_bug.cgi?id=115286
2792
2793 Decimal is kind of confusing/hard to read because they're used as bit masks. Hex seems more appropriate.
2794
2795 Reviewed by Geoffrey Garen.
2796
2797 * runtime/IndexingType.h:
2798
2799 2013-04-29 Carlos Garcia Campos <cgarcia@igalia.com>
2800
2801 Unreviewed. Fix make distcheck.
2802
2803 * GNUmakefile.list.am: Add missing headers files to compilation
2804 and offlineasm/sh4.rb script.
2805
2806 2013-04-28 Dean Jackson <dino@apple.com>
2807
2808 [Mac] Disable canvas backing store scaling (HIGH_DPI_CANVAS)
2809 https://bugs.webkit.org/show_bug.cgi?id=115310
2810
2811 Reviewed by Simon Fraser.
2812
2813 Remove ENABLE_HIGH_DPI_CANVAS_macosx.
2814
2815 * Configurations/FeatureDefines.xcconfig:
2816
2817 2013-04-27 Darin Adler <darin@apple.com>
2818
2819 Move from constructor and member function adoptCF/NS to free function adoptCF/NS.
2820 https://bugs.webkit.org/show_bug.cgi?id=115307
2821
2822 Reviewed by Geoffrey Garen.
2823
2824 * heap/HeapTimer.cpp:
2825 (JSC::HeapTimer::HeapTimer):
2826 * runtime/VM.cpp:
2827 (JSC::enableAssembler):
2828 Use adoptCF free function.
2829
2830 2013-04-27 Anders Carlsson <andersca@apple.com>
2831
2832 Try to fix the Windows build.
2833
2834 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
2835
2836 2013-04-25 Geoffrey Garen <ggaren@apple.com>
2837
2838 Cleaned up pre/post inc/dec in bytecode
2839 https://bugs.webkit.org/show_bug.cgi?id=115222
2840
2841 Reviewed by Filip Pizlo.
2842
2843 A few related changes here:
2844
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.
2849
2850 (*) Renamed pre_inc and pre_dec to inc and dec, since there's only one
2851 version now.
2852
2853 (*) Renamed to_jsnumber to to_number, to match the ECMA name.
2854
2855 (*) Tightened up the codegen and runtime support for to_number.
2856
2857
2858 * JavaScriptCore.order: Order!
2859
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.
2870
2871 * bytecompiler/NodesCodegen.cpp:
2872 (JSC::emitPreIncOrDec): Updated for rename.
2873
2874 (JSC::emitPostIncOrDec): Issue an explicit mov and to_number when needed.
2875 These are rare, and they boil away in the DFG.
2876
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.
2881
2882 * dfg/DFGByteCodeParser.cpp:
2883 (JSC::DFG::ByteCodeParser::parseBlock):
2884 * dfg/DFGCapabilities.h:
2885 (JSC::DFG::canCompileOpcode):
2886 * jit/JIT.cpp:
2887 (JSC::JIT::privateCompileMainPass):
2888 (JSC::JIT::privateCompileSlowCases):
2889 * jit/JIT.h:
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.
2900
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
2904 no such thing!
2905
2906 * jit/JITOpcodes32_64.cpp:
2907 (JSC::JIT::emit_op_to_number): Use LowestTag to avoid making assumptions
2908 about the lowest valued tag.
2909
2910 (JSC::JIT::emitSlow_op_to_number): Updated for renames.
2911
2912 * jit/JITStubs.cpp:
2913 (JSC::DEFINE_STUB_FUNCTION):
2914 * jit/JITStubs.h:
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.
2922
2923 * runtime/Operations.cpp:
2924 (JSC::jsIsObjectType): Removed a test for number cells. There's
2925 no such thing!
2926
2927 2013-04-27 Julien Brianceau <jbrianceau@nds.com>
2928
2929 REGRESSION(r149114): cache flush for SH4 arch may flush an extra page.
2930 https://bugs.webkit.org/show_bug.cgi?id=115305
2931
2932 Reviewed by Andreas Kling.
2933
2934 * assembler/SH4Assembler.h:
2935 (JSC::SH4Assembler::cacheFlush):
2936
2937 2013-04-26 Geoffrey Garen <ggaren@apple.com>
2938
2939 Re-landing <http://trac.webkit.org/changeset/148999>
2940
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
2944
2945 Reviewed by Phil Pizlo.
2946
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.
2949
2950 2013-04-26 Filip Pizlo <fpizlo@apple.com>
2951
2952 Correct indentation of SymbolTable.h
2953
2954 Rubber stamped by Mark Hahnenberg.
2955
2956 * runtime/SymbolTable.h:
2957
2958 2013-04-26 Roger Fong <roger_fong@apple.com>
2959
2960 Make Apple Windows VS2010 build results into and get dependencies from __32 suffixed folders.
2961 Make the DebugSuffix configuration use _debug dependencies.
2962
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:
3027
3028 2013-04-26 Roger Fong <roger_fong@apple.com>
3029
3030 Disable sub-pixel layout on mac.
3031 https://bugs.webkit.org/show_bug.cgi?id=114999.
3032
3033 Reviewed by Simon Fraser.
3034
3035 * Configurations/FeatureDefines.xcconfig:
3036
3037 2013-04-26 Oliver Hunt <oliver@apple.com>
3038
3039 Make stack tracing more robust
3040 https://bugs.webkit.org/show_bug.cgi?id=115272
3041
3042 Reviewed by Geoffrey Garen.
3043
3044 CallFrame already handles stack walking confusion robustly,
3045 so we should make sure that the actual walk handles that as well.
3046
3047 * interpreter/Interpreter.cpp:
3048 (JSC::getCallerInfo):
3049
3050 2013-04-26 Mark Hahnenberg <mhahnenberg@apple.com>
3051
3052 REGRESSION(r149165): It made many tests crash on 32 bit
3053 https://bugs.webkit.org/show_bug.cgi?id=115227
3054
3055 Reviewed by Csaba Osztrogonác.
3056
3057 m_reservation is uninitialized when ENABLE(SUPER_REGION) is false.
3058
3059 * heap/SuperRegion.cpp:
3060 (JSC::SuperRegion::~SuperRegion):
3061
3062 2013-04-26 Julien Brianceau <jbrianceau@nds.com>
3063
3064 Fix SH4 build broken since r149159.
3065 https://bugs.webkit.org/show_bug.cgi?id=115229
3066
3067 Add BranchTruncateType enum in SH4 port and handle it in branchTruncateDoubleToInt32.
3068
3069 Reviewed by Allan Sandfeld Jensen.
3070
3071 * assembler/MacroAssemblerSH4.h:
3072 (JSC::MacroAssemblerSH4::branchTruncateDoubleToInt32):
3073
3074 2013-04-25 Mark Hahnenberg <mhahnenberg@apple.com>
3075
3076 SuperRegion doesn't call deallocate() on its PageReservation
3077 https://bugs.webkit.org/show_bug.cgi?id=115208
3078
3079 Reviewed by Geoffrey Garen.
3080
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.
3085
3086 * heap/SuperRegion.cpp:
3087 (JSC::SuperRegion::~SuperRegion):
3088 * heap/SuperRegion.h:
3089 (SuperRegion):
3090 * jit/ExecutableAllocatorFixedVMPool.cpp:
3091 (FixedVMPoolExecutableAllocator):
3092 (JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator):
3093
3094 2013-04-25 Filip Pizlo <fpizlo@apple.com>
3095
3096 DFG doesn't support to_jsnumber
3097 https://bugs.webkit.org/show_bug.cgi?id=115129
3098
3099 Reviewed by Geoffrey Garen.
3100
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.
3104
3105 Also fixed BackPropMask, which appeared to have NodeDoesNotExit included in it. That's
3106 wrong; NodeDoesNotExit is not a backward propagation property.
3107
3108 Also fixed Identity to be marked as CanExit (i.e. not NodeDoesNotExit).
3109
3110 This more than doubles the FPS on ammo.
3111
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):
3118 (FixupPhase):
3119 (JSC::DFG::FixupPhase::observeUseKindOnNode):
3120 (JSC::DFG::FixupPhase::observeUseKindOnEdge):
3121 * dfg/DFGNodeFlags.h:
3122 (DFG):
3123 * dfg/DFGNodeType.h:
3124 (DFG):
3125 * dfg/DFGPredictionPropagationPhase.cpp:
3126 (JSC::DFG::PredictionPropagationPhase::propagate):
3127
3128 2013-04-24 Oliver Hunt <oliver@apple.com>
3129
3130 Add support for Math.imul
3131 https://bugs.webkit.org/show_bug.cgi?id=115143
3132
3133 Reviewed by Filip Pizlo.
3134
3135 Add support for Math.imul, a thunk generator for Math.imul,
3136 and an intrinsic.
3137
3138 Fairly self explanatory set of changes, DFG intrinsics simply
3139 leverages the existing ValueToInt32 nodes.
3140
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:
3153 (DFG):
3154 * dfg/DFGPredictionPropagationPhase.cpp:
3155 (JSC::DFG::PredictionPropagationPhase::propagate):
3156 * dfg/DFGSpeculativeJIT.cpp:
3157 (JSC::DFG::SpeculativeJIT::compileArithIMul):
3158 * dfg/DFGSpeculativeJIT.h:
3159 (SpeculativeJIT):
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):
3166 (JSC):
3167 * jit/ThunkGenerators.h:
3168 (JSC):
3169 * runtime/Intrinsic.h:
3170 * runtime/MathObject.cpp:
3171 (JSC):
3172 (JSC::mathProtoFuncIMul):
3173 * runtime/VM.cpp:
3174 (JSC::thunkGeneratorForIntrinsic):
3175
3176 2013-04-25 Filip Pizlo <fpizlo@apple.com>
3177
3178 Unreviewed, roll out http://trac.webkit.org/changeset/148999
3179 It broke http://kripken.github.io/ammo.js/examples/new/ammo.html
3180
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:
3190 (JSC):
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):
3199 (ASTBuilder):
3200 * parser/NodeConstructors.h:
3201 (JSC):
3202 (JSC::NullNode::NullNode):
3203 (JSC::BooleanNode::BooleanNode):
3204 (JSC::NumberNode::NumberNode):
3205 (JSC::StringNode::StringNode):
3206 (JSC::IfNode::IfNode):
3207 (JSC::IfElseNode::IfElseNode):
3208 * parser/Nodes.h:
3209 (JSC::ExpressionNode::isPure):
3210 (JSC::ExpressionNode::isSubtract):
3211 (StatementNode):
3212 (NullNode):
3213 (JSC::NullNode::isNull):
3214 (BooleanNode):
3215 (JSC::BooleanNode::isPure):
3216 (NumberNode):
3217 (JSC::NumberNode::value):
3218 (JSC::NumberNode::isPure):
3219 (StringNode):
3220 (JSC::StringNode::isPure):
3221 (JSC::StringNode::isString):
3222 (BinaryOpNode):
3223 (IfNode):
3224 (JSC):
3225 (IfElseNode):
3226 (ContinueNode):
3227 (BreakNode):
3228 * parser/Parser.cpp:
3229 (JSC::::parseIfStatement):
3230 * parser/ResultType.h:
3231 (ResultType):
3232 * runtime/JSCJSValueInlines.h:
3233 (JSC::JSValue::pureToBoolean):
3234 * runtime/JSCell.h:
3235 (JSCell):
3236 * runtime/JSCellInlines.h:
3237 (JSC):
3238
3239 2013-04-25 Filip Pizlo <fpizlo@apple.com>
3240
3241 PreciseJumpTargets should treat loop_hint as a jump target
3242 https://bugs.webkit.org/show_bug.cgi?id=115209
3243
3244 Reviewed by Mark Hahnenberg.
3245
3246 I didn't add a test but I turned this into a release assertion. Running Octane is enough
3247 to trigger it.
3248
3249 * bytecode/PreciseJumpTargets.cpp:
3250 (JSC::computePreciseJumpTargets):
3251 * dfg/DFGByteCodeParser.cpp:
3252 (JSC::DFG::ByteCodeParser::parseBlock):
3253
3254 2013-04-25 Roman Zhuykov <zhroma@ispras.ru>
3255
3256 Fix problems with processing negative zero on DFG.
3257 https://bugs.webkit.org/show_bug.cgi?id=113862
3258
3259 Reviewed by Filip Pizlo.
3260
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.
3270
3271 This shows 30% speedup of math-spectral-norm, and 5% speedup
3272 on SunSpider overall on ARMv7 Linux.
3273
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):
3288 * dfg/DFGNode.h:
3289 (JSC::DFG::Node::arithNodeFlags):
3290 * dfg/DFGSpeculativeJIT.cpp:
3291 (JSC::DFG::SpeculativeJIT::compileDoubleAsInt32):
3292 (JSC::DFG::SpeculativeJIT::compileSoftModulo):
3293 (JSC::DFG::SpeculativeJIT::compileArithNegate):
3294
3295 2013-04-25 Oliver Hunt <oliver@apple.com>
3296
3297 Stack guards are too conservative
3298 https://bugs.webkit.org/show_bug.cgi?id=115147
3299
3300 Reviewed by Mark Hahnenberg.
3301
3302 Increase stack guard to closer to old size.
3303
3304 * interpreter/Interpreter.cpp:
3305 (JSC::Interpreter::StackPolicy::StackPolicy):
3306
3307 2013-04-25 Oliver Hunt <oliver@apple.com>
3308
3309 Stack guards are too conservative
3310 https://bugs.webkit.org/show_bug.cgi?id=115147
3311
3312 Reviewed by Geoffrey Garen.
3313
3314 Reduce the limits and simplify the decision making.
3315
3316 * interpreter/Interpreter.cpp:
3317 (JSC::Interpreter::StackPolicy::StackPolicy):
3318
3319 2013-04-25 Nick Diego Yamane <nick.yamane@openbossa.org>
3320
3321 JSC: Fix interpreter misbehavior in builds with JIT disabled
3322 https://bugs.webkit.org/show_bug.cgi?id=115190
3323
3324 Reviewed by Oliver Hunt.
3325
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
3330 JIT is disabled
3331
3332 How to reproduce:
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);
3337
3338 * interpreter/Interpreter.cpp:
3339 (JSC::getBytecodeOffsetForCallFrame):
3340
3341 2013-04-25 Oliver Hunt <oliver@apple.com>
3342
3343 Make checkSyntax take a VM instead of an ExecState
3344
3345 RS=Tim
3346
3347 * jsc.cpp:
3348 (runInteractive):
3349 * runtime/Completion.cpp:
3350 (JSC::checkSyntax):
3351 * runtime/Completion.h:
3352 (JSC):
3353
3354 2013-04-25 Michael Saboff <msaboff@apple.com>
3355
3356 32 Bit: Crash due to RegExpTest nodes not setting result type to Boolean
3357 https://bugs.webkit.org/show_bug.cgi?id=115188
3358
3359 Reviewed by Geoffrey Garen.
3360
3361 Changed the RegExpTest node to set the AbstractValue to boolean, since that
3362 what it is.
3363
3364 * dfg/DFGAbstractState.cpp:
3365 (JSC::DFG::AbstractState::executeEffects):
3366
3367 2013-04-25 Julien Brianceau <jbrianceau@nds.com>
3368
3369 REGRESSION(r137994): Random crashes occur with SH4 JSC.
3370 https://bugs.webkit.org/show_bug.cgi?id=115167.
3371
3372 Reviewed by Oliver Hunt.
3373
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
3377 is in the area.
3378
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.
3381
3382 * assembler/SH4Assembler.h:
3383 (JSC::SH4Assembler::cacheFlush):
3384
3385 2013-04-24 Mark Lam <mark.lam@apple.com>
3386
3387 Add watchdog timer polling for the DFG.
3388 https://bugs.webkit.org/show_bug.cgi?id=115134.
3389
3390 Reviewed by Geoffrey Garen.
3391
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.
3396
3397 If the watchdog is not enabled, this speculation check will not be
3398 emitted.
3399
3400 * API/tests/testapi.c:
3401 (currentCPUTime_callAsFunction):
3402 (extendTerminateCallback):
3403 (main):
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.
3408
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):
3425
3426 2013-04-24 Filip Pizlo <fpizlo@apple.com>
3427
3428 Special thunks for math functions should work on ARMv7
3429 https://bugs.webkit.org/show_bug.cgi?id=115144
3430
3431 Reviewed by Gavin Barraclough and Oliver Hunt.
3432
3433 The only hard bit here was ensuring that we implemented the very special
3434 "cheap C call" convention on ARMv7.
3435
3436 * assembler/AbstractMacroAssembler.h:
3437 (JSC::isARMv7s):
3438 (JSC):
3439 (JSC::isX86):
3440 * dfg/DFGCommon.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):
3450
3451 2013-04-24 Julien Brianceau <jbrianceau@nds.com>
3452
3453 Misc bugfix and cleaning in sh4 base JIT.
3454 https://bugs.webkit.org/show_bug.cgi?id=115022.
3455
3456 Reviewed by Oliver Hunt.
3457
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.
3461
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.
3476
3477 2013-04-24 Patrick Gansterer <paroga@webkit.org>
3478
3479 [WIN] Remove pthread from Visual Studio files in JavaScriptCore
3480 https://bugs.webkit.org/show_bug.cgi?id=114864
3481
3482 Reviewed by Brent Fulgham.
3483
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:
3496
3497 2013-04-24 Filip Pizlo <fpizlo@apple.com>
3498
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
3501
3502 Reviewed by Mark Hahnenberg.
3503
3504 The DFG must model bytecode liveness, or else OSR exit is going to have a really bad time.
3505
3506 * dfg/DFGByteCodeParser.cpp:
3507 (JSC::DFG::ByteCodeParser::parseBlock):
3508
3509 2013-04-24 Roger Fong <roger_fong@apple.com>
3510
3511 Have VS2010 WebKit solution look in WebKit_Libraries/lib32 for dependencies.
3512
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:
3521
3522 2013-04-24 Geoffrey Garen <ggaren@apple.com>
3523
3524 32-bit build fix.
3525
3526 Unreviewed.
3527
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.
3532
3533 2013-04-23 Geoffrey Garen <ggaren@apple.com>
3534
3535 Filled out more cases of branch folding in the DFG
3536 https://bugs.webkit.org/show_bug.cgi?id=115088
3537
3538 Reviewed by Oliver Hunt.
3539
3540 No change on the benchmarks we track, but a 3X speedup on a
3541 microbenchmark that uses these techniques.
3542
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.
3547
3548 * dfg/DFGFixupPhase.cpp:
3549 (JSC::DFG::FixupPhase::fixupNode):
3550 * dfg/DFGNode.h:
3551 (JSC::DFG::Node::shouldSpeculateBoolean): Added support for fixing up
3552 boolean uses, like we do for other types like number.
3553
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
3561 them.
3562
3563 * dfg/DFGSpeculativeJIT.h: Updated declarations.
3564
3565 == Rolled over to ChangeLog-2013-04-24 ==