1 2013-07-16 Oliver Hunt <oliver@apple.com>
3 Merged dfgFourthTier r148570
5 2013-04-16 Filip Pizlo <fpizlo@apple.com>
7 fourthTier: DFG should be able to query Structure without modifying it
8 https://bugs.webkit.org/show_bug.cgi?id=114708
10 Reviewed by Oliver Hunt.
12 This is work towards allowing the DFG, and FTL, to run on a separate thread.
13 The idea is that the most evil thing that the DFG does that has thread-safety
14 issues is fiddling with Structures by calling Structure::get(). This can lead
15 to rematerialization of property tables, which is definitely not thread-safe
16 due to how StringImpl works. So, this patch completely side-steps the problem
17 by creating a new version of Structure::get, called
18 Structure::getWithoutMaterializing, which may choose to do an O(n) search if
19 necessary to avoid materialization. I believe this should be fine - the DFG
20 does't call into these code path often enough for this to matter, and most of
21 the time, the Structure that we call this on will already have a property
22 table because some inline cache would have already called ::get() on that
25 Also cleaned up the materialization logic: we can stop the search as soon as
26 we find any Structure with a property table rather than searching all the way
29 * bytecode/GetByIdStatus.cpp:
30 (JSC::GetByIdStatus::computeFor):
31 * bytecode/PutByIdStatus.cpp:
32 (JSC::PutByIdStatus::computeFromLLInt):
33 (JSC::PutByIdStatus::computeFor):
34 * runtime/Structure.cpp:
35 (JSC::Structure::findStructuresAndMapForMaterialization):
36 (JSC::Structure::materializePropertyMap):
37 (JSC::Structure::getWithoutMaterializing):
39 * runtime/Structure.h:
41 * runtime/StructureInlines.h:
42 (JSC::Structure::getWithoutMaterializing):
45 2013-07-15 Oliver Hunt <oliver@apple.com>
47 Merged dfgFourthTier r148047
49 2013-04-09 Filip Pizlo <fpizlo@apple.com>
51 fourthTier: DFG should provide utilities for common OSR exit tasks
52 https://bugs.webkit.org/show_bug.cgi?id=114306
54 Reviewed by Mark Hahnenberg.
56 Just abstract out some things that the FTL will want to use as well.
59 * GNUmakefile.list.am:
60 * JavaScriptCore.xcodeproj/project.pbxproj:
64 * dfg/DFGOSRExitCompiler.cpp:
65 * dfg/DFGOSRExitCompiler.h:
67 * dfg/DFGOSRExitCompiler32_64.cpp:
68 (JSC::DFG::OSRExitCompiler::compileExit):
69 * dfg/DFGOSRExitCompiler64.cpp:
70 (JSC::DFG::OSRExitCompiler::compileExit):
71 * dfg/DFGOSRExitCompilerCommon.cpp: Added.
73 (JSC::DFG::handleExitCounts):
74 (JSC::DFG::reifyInlinedCallFrames):
75 (JSC::DFG::adjustAndJumpToTarget):
76 * dfg/DFGOSRExitCompilerCommon.h: Added.
79 2013-07-15 Oliver Hunt <oliver@apple.com>
81 Merged dfgFourthTier r148037
83 2013-04-09 Filip Pizlo <fpizlo@apple.com>
85 fourthTier: DFG should better abstract floating point arguments
86 https://bugs.webkit.org/show_bug.cgi?id=114300
88 Reviewed by Mark Hahnenberg.
92 (JSC::DFG::FPRInfo::toArgumentRegister):
94 2013-07-15 Oliver Hunt <oliver@apple.com>
96 Merged dfgFourthTier r147821
98 2013-04-05 Filip Pizlo <fpizlo@apple.com>
100 fourthTier: DFG should better abstract arguments
101 https://bugs.webkit.org/show_bug.cgi?id=114073
103 Reviewed by Mark Hahnenberg.
107 (JSC::DFG::GPRInfo::toArgumentRegister):
109 2013-07-15 Oliver Hunt <oliver@apple.com>
111 Merged dfgFourthTier r147609
113 2013-04-03 Filip Pizlo <fpizlo@apple.com>
115 fourthTier: put DFG data into a DFG::JITCode, and put common DFG and FTL data into something accessible from both DFG::JITCode and FTL::JITCode
116 https://bugs.webkit.org/show_bug.cgi?id=113905
118 Reviewed by Geoffrey Garen.
120 This removes one pointer from CodeBlock.
122 It also gives us a framework for having JITType-specific data in CodeBlock, by
123 putting it into the appropriate JITCode class (either DFG::JITCode or
124 FTL::JITCode). And it allows us to have DFG and FTL share some common data,
125 via DFG::CommonData, which is stored in both DFG::JITCode and FTL::JITCode and
126 always accessible via JITCode::dfgCommon().
129 * GNUmakefile.list.am:
130 * JavaScriptCore.xcodeproj/project.pbxproj:
132 * bytecode/CodeBlock.cpp:
134 (JSC::CodeBlock::dumpBytecode):
135 (JSC::CodeBlock::visitAggregate):
136 (JSC::CodeBlock::performTracingFixpointIteration):
137 (JSC::CodeBlock::finalizeUnconditionally):
138 (JSC::CodeBlock::stronglyVisitWeakReferences):
139 (JSC::CodeBlock::shrinkToFit):
140 (JSC::CodeBlock::tallyFrequentExitSites):
141 * bytecode/CodeBlock.h:
143 (JSC::CodeBlock::setJITCode):
144 (JSC::CodeBlock::shouldImmediatelyAssumeLivenessDuringScan):
145 (JSC::DFGCodeBlocks::mark):
146 * dfg/DFGAssemblyHelpers.h:
147 * dfg/DFGCommonData.cpp: Added.
149 (JSC::DFG::CommonData::notifyCompilingStructureTransition):
150 (JSC::DFG::CommonData::shrinkToFit):
151 * dfg/DFGCommonData.h: Added.
154 (JSC::DFG::WeakReferenceTransition::WeakReferenceTransition):
155 (WeakReferenceTransition):
157 (JSC::DFG::CommonData::CommonData):
160 (JSC::DFG::tryCompile):
161 (JSC::DFG::tryCompileFunction):
164 (JSC::DFG::tryCompile):
165 (JSC::DFG::tryCompileFunction):
168 * dfg/DFGJITCode.cpp: Added.
170 (JSC::DFG::JITCode::JITCode):
171 (JSC::DFG::JITCode::~JITCode):
172 (JSC::DFG::JITCode::dfgCommon):
173 (JSC::DFG::JITCode::dfg):
174 (JSC::DFG::JITCode::shrinkToFit):
175 * dfg/DFGJITCode.h: Added.
178 (JSC::DFG::JITCode::appendOSREntryData):
179 (JSC::DFG::JITCode::osrEntryDataForBytecodeIndex):
180 (JSC::DFG::JITCode::appendOSRExit):
181 (JSC::DFG::JITCode::lastOSRExit):
182 (JSC::DFG::JITCode::appendSpeculationRecovery):
183 (JSC::DFG::JITCode::appendWatchpoint):
184 * dfg/DFGJITCompiler.cpp:
185 (JSC::DFG::JITCompiler::JITCompiler):
186 (JSC::DFG::JITCompiler::linkOSRExits):
187 (JSC::DFG::JITCompiler::link):
188 (JSC::DFG::JITCompiler::compile):
189 (JSC::DFG::JITCompiler::compileFunction):
190 * dfg/DFGJITCompiler.h:
192 (JSC::DFG::JITCompiler::addWeakReference):
193 (JSC::DFG::JITCompiler::noticeOSREntry):
194 (JSC::DFG::JITCompiler::jitCode):
195 * dfg/DFGOSREntry.cpp:
196 (JSC::DFG::prepareOSREntry):
199 * dfg/DFGOSRExitCompiler.cpp:
200 * dfg/DFGSpeculativeJIT.cpp:
201 (JSC::DFG::SpeculativeJIT::SpeculativeJIT):
202 (JSC::DFG::SpeculativeJIT::backwardSpeculationCheck):
203 (JSC::DFG::SpeculativeJIT::speculationWatchpoint):
204 (JSC::DFG::SpeculativeJIT::convertLastOSRExitToForward):
205 * dfg/DFGSpeculativeJIT32_64.cpp:
206 (JSC::DFG::SpeculativeJIT::compile):
207 * dfg/DFGSpeculativeJIT64.cpp:
208 (JSC::DFG::SpeculativeJIT::compile):
209 * dfg/DFGVariableEventStream.cpp:
210 * heap/DFGCodeBlocks.cpp:
211 (JSC::DFGCodeBlocks::~DFGCodeBlocks):
212 (JSC::DFGCodeBlocks::jettison):
213 (JSC::DFGCodeBlocks::clearMarks):
214 (JSC::DFGCodeBlocks::deleteUnmarkedJettisonedCodeBlocks):
215 (JSC::DFGCodeBlocks::traceMarkedCodeBlocks):
217 (JSC::JITCode::dfgCommon):
221 (JSC::DirectJITCode::DirectJITCode):
222 (JSC::DirectJITCode::initializeCodeRef):
223 (JSC::DirectJITCode::addressForCall):
224 (JSC::DirectJITCode::executableAddressAtOffset):
225 (JSC::DirectJITCode::dataAddressAtOffset):
226 (JSC::DirectJITCode::offsetOf):
227 (JSC::DirectJITCode::size):
228 (JSC::DirectJITCode::contains):
236 2013-07-15 Oliver Hunt <oliver@apple.com>
238 Merge dfgFourthTier r147587
240 2013-04-03 Filip Pizlo <fpizlo@apple.com>
242 fourthTier: Everyone should know about the FTL
243 https://bugs.webkit.org/show_bug.cgi?id=113897
245 Reviewed by Mark Hahnenberg.
247 In order to get OSR exit to work right, we need the distinction between DFG and
248 FTL to be clear even after compilation finishes, since they will have subtly
249 different OSR stories and likely use different data structures.
251 * bytecode/CodeBlock.cpp:
252 (JSC::CodeBlock::resetStubInternal):
253 (JSC::ProgramCodeBlock::compileOptimized):
254 (JSC::EvalCodeBlock::compileOptimized):
255 (JSC::FunctionCodeBlock::compileOptimized):
256 (JSC::CodeBlock::adjustedExitCountThreshold):
257 (JSC::CodeBlock::tallyFrequentExitSites):
258 * bytecode/CodeBlock.h:
259 (JSC::CodeBlock::setJITCode):
260 (JSC::CodeBlock::hasOptimizedReplacement):
261 (JSC::ExecState::isInlineCallFrame):
262 * ftl/FTLCompile.cpp:
264 * ftl/FTLJITCode.cpp:
265 (JSC::FTL::JITCode::JITCode):
267 (JSC::FTL::State::dumpState):
268 * heap/DFGCodeBlocks.cpp:
269 (JSC::DFGCodeBlocks::jettison):
270 * interpreter/Interpreter.cpp:
271 (JSC::getLineNumberForCallFrame):
272 (JSC::getCallerInfo):
274 (WTF::printInternal):
276 (JSC::JITCode::topTierJIT):
277 (JSC::JITCode::nextTierJIT):
279 (JSC::JITCode::isJIT):
280 (JSC::JITCode::isLowerTier):
281 (JSC::JITCode::isHigherTier):
282 (JSC::JITCode::isLowerOrSameTier):
283 (JSC::JITCode::isHigherOrSameTier):
284 (JSC::JITCode::isOptimizingJIT):
286 (JSC::jitCompileIfAppropriate):
287 (JSC::jitCompileFunctionIfAppropriate):
289 (JSC::DEFINE_STUB_FUNCTION):
290 * runtime/Executable.cpp:
291 (JSC::EvalExecutable::compileOptimized):
292 (JSC::samplingDescription):
293 (JSC::ProgramExecutable::compileOptimized):
294 (JSC::FunctionExecutable::compileOptimizedForCall):
295 (JSC::FunctionExecutable::compileOptimizedForConstruct):
297 2013-04-03 Filip Pizlo <fpizlo@apple.com>
299 fourthTier: DFG should abstract out how it does forward exits, and that code should be simplified
300 https://bugs.webkit.org/show_bug.cgi?id=113894
302 Reviewed by Mark Hahnenberg.
304 1) We previously had two different ways of convertingToForward, one path for
305 where we had a ValueRecovery for the current node and one where we didn't.
306 But the paths were doing exactly the same thing except that if you have a
307 ValueRecovery, you also find the last applicable mov hint and do some
308 extra things. This patch combines the two paths and bases both of them on
309 the previous no-ValueRecovery path, which was simpler to begin with.
311 2) This moves the logic into DFG::OSRExit, which further simplifies the code
312 and makes the logic available to the FTL.
314 * dfg/DFGOSRExit.cpp:
315 (JSC::DFG::OSRExit::convertToForward):
320 * dfg/DFGSpeculativeJIT.cpp:
321 (JSC::DFG::SpeculativeJIT::convertLastOSRExitToForward):
323 2013-07-15 Oliver Hunt <oliver@apple.com>
325 Merge dfgFourthTier r147582
327 2013-07-15 Oliver Hunt <oliver@apple.com>
329 Merge dfgFourthTier r147014
331 2013-03-27 Filip Pizlo <fpizlo@apple.com>
333 fourthTier: JITCode should abstract exactly how the JIT code is structured and where it was allocated
334 https://bugs.webkit.org/show_bug.cgi?id=113437
336 Reviewed by Mark Hahnenberg.
338 JITCode is now a virtual base class, which will allow different JITs to have radically
339 different memory allocation and management conventions in the future. It will also
340 make it easier to store JIT-specific meta-data in CodeBlock just by putting it into
341 an appropriate JITCode subclass.
343 For now there is one subclass, DirectJITCode, which just behaves like JITCode used to
346 * assembler/RepatchBuffer.h:
347 (JSC::RepatchBuffer::RepatchBuffer):
348 * bytecode/CodeBlock.cpp:
349 (JSC::CodeBlock::resetStubInternal):
350 (JSC::CodeBlock::bytecodeOffset):
351 (JSC::CodeBlock::codeOriginForReturn):
352 * bytecode/CodeBlock.h:
353 (JSC::CodeBlock::setJITCode):
354 (JSC::CodeBlock::getJITCode):
355 (JSC::CodeBlock::getJITType):
359 (JSC::DFG::tryCompile):
360 (JSC::DFG::tryCompileFunction):
363 (JSC::DFG::tryCompile):
364 (JSC::DFG::tryCompileFunction):
365 * dfg/DFGJITCompiler.cpp:
366 (JSC::DFG::JITCompiler::compile):
367 (JSC::DFG::JITCompiler::compileFunction):
368 * dfg/DFGJITCompiler.h:
370 * dfg/DFGOSREntry.cpp:
371 (JSC::DFG::prepareOSREntry):
372 * dfg/DFGOSRExit.cpp:
373 (JSC::DFG::OSRExit::codeLocationForRepatch):
374 * dfg/DFGOSRExitCompiler32_64.cpp:
375 (JSC::DFG::OSRExitCompiler::compileExit):
376 * dfg/DFGOSRExitCompiler64.cpp:
377 (JSC::DFG::OSRExitCompiler::compileExit):
378 * dfg/DFGOperations.cpp:
379 * interpreter/Interpreter.cpp:
380 (JSC::Interpreter::execute):
381 (JSC::Interpreter::executeCall):
382 (JSC::Interpreter::executeConstruct):
384 (JSC::JIT::privateCompile):
390 (JSC::JITCode::JITCode):
391 (JSC::JITCode::~JITCode):
392 (JSC::JITCode::execute):
393 (JSC::JITCode::hostFunction):
394 (JSC::DirectJITCode::DirectJITCode):
395 (JSC::DirectJITCode::~DirectJITCode):
396 (JSC::DirectJITCode::addressForCall):
397 (JSC::DirectJITCode::executableAddressAtOffset):
398 (JSC::DirectJITCode::dataAddressAtOffset):
399 (JSC::DirectJITCode::offsetOf):
400 (JSC::DirectJITCode::size):
401 (JSC::DirectJITCode::contains):
405 (JSC::JITCode::bottomTierJIT):
406 (JSC::JITCode::topTierJIT):
407 (JSC::JITCode::nextTierJIT):
408 (JSC::JITCode::isOptimizingJIT):
409 (JSC::JITCode::isBaselineCode):
410 (JSC::JITCode::jitType):
411 (JSC::JITCode::jitTypeFor):
412 (JSC::JITCode::executableAddress):
413 (JSC::JITCode::start):
417 (JSC::jitCompileIfAppropriate):
418 (JSC::jitCompileFunctionIfAppropriate):
421 (JSC::DEFINE_STUB_FUNCTION):
422 * jit/ThunkGenerators.cpp:
423 (JSC::virtualForGenerator):
424 * llint/LLIntEntrypoints.cpp:
425 (JSC::LLInt::getFunctionEntrypoint):
426 (JSC::LLInt::getEvalEntrypoint):
427 (JSC::LLInt::getProgramEntrypoint):
428 * llint/LLIntEntrypoints.h:
431 (JSC::LLInt::getEntrypoint):
432 * llint/LLIntSlowPaths.cpp:
433 (JSC::LLInt::jitCompileAndSetHeuristics):
434 (JSC::LLInt::entryOSR):
435 (JSC::LLInt::LLINT_SLOW_PATH_DECL):
436 * runtime/Executable.cpp:
437 (JSC::EvalExecutable::compileInternal):
438 (JSC::ProgramExecutable::compileInternal):
439 (JSC::FunctionExecutable::compileForCallInternal):
440 (JSC::FunctionExecutable::compileForConstructInternal):
441 * runtime/Executable.h:
442 (JSC::ExecutableBase::generatedJITCodeForCall):
443 (JSC::ExecutableBase::generatedJITCodeForConstruct):
444 (JSC::ExecutableBase::generatedJITCodeFor):
446 (JSC::ExecutableBase::hostCodeEntryFor):
447 (JSC::ExecutableBase::jsCodeEntryFor):
448 (JSC::ExecutableBase::jsCodeWithArityCheckEntryFor):
449 (JSC::NativeExecutable::create):
450 (JSC::NativeExecutable::finishCreation):
451 (JSC::EvalExecutable::generatedJITCode):
452 (JSC::ProgramExecutable::generatedJITCode):
453 * runtime/ExecutionHarness.h:
454 (JSC::prepareForExecution):
455 (JSC::prepareFunctionForExecution):
457 2013-07-24 Filip Pizlo <fpizlo@apple.com>
459 It should be possible to hijack IndexingHeader for things other than lengths
460 https://bugs.webkit.org/show_bug.cgi?id=119065
462 Reviewed by Mark Hahnenberg.
464 Made the body of IndexingHeader be a union.
466 Modified the offlineasm so that you can say IndexingHeader::u.lengths.publicLength.
467 Previously those dots would cause parse errors. Now an identifier in offlineasm can
468 have a dot anywhere except the first character.
470 * llint/LowLevelInterpreter32_64.asm:
471 * llint/LowLevelInterpreter64.asm:
472 * offlineasm/parser.rb:
473 * runtime/IndexingHeader.h:
474 (JSC::IndexingHeader::offsetOfPublicLength):
475 (JSC::IndexingHeader::offsetOfVectorLength):
476 (JSC::IndexingHeader::IndexingHeader):
477 (JSC::IndexingHeader::vectorLength):
478 (JSC::IndexingHeader::setVectorLength):
479 (JSC::IndexingHeader::publicLength):
480 (JSC::IndexingHeader::setPublicLength):
482 2013-07-24 Mark Hahnenberg <mhahnenberg@apple.com>
484 JIT::updateTopCallFrame doesn't update the CallFrame's bytecodeOffset if bytecodeOffset == 0
485 https://bugs.webkit.org/show_bug.cgi?id=118923
487 Reviewed by Filip Pizlo.
489 This bug causes the CallFrame's bytecodeOffset to not be properly set when we
490 enter, e.g., cti_optimize from an op_enter.
493 (JSC::JIT::updateTopCallFrame):
495 2013-07-23 Filip Pizlo <fpizlo@apple.com>
497 DFG string concatenation optimizations might emit speculative nodes after emitting nodes that kill the original inputs
498 https://bugs.webkit.org/show_bug.cgi?id=119032
500 Reviewed by Oliver Hunt.
502 It just needs some Phantom action.
504 * dfg/DFGFixupPhase.cpp:
505 (JSC::DFG::FixupPhase::attemptToMakeFastStringAdd):
507 2013-07-10 Mark Lam <mark.lam@apple.com>
509 Need ExpressionRangeInfo before ResolveForPuts in strict mode.
510 https://bugs.webkit.org/show_bug.cgi?id=118997.
512 Reviewed by Oliver Hunt.
514 If we add an assertion in UnlinkedCodeBlock::expressionRangeForBytecodeOffset()
515 to ensure that we are able to find an ExpressionRangeInfo for any given bytecode
516 offset, the following tests will fails:
517 fast/js/basic-strict-mode.html
518 fast/js/mozilla/strict/8.7.2.html
519 With this fix, those tests will no longer fail.
521 * bytecompiler/NodesCodegen.cpp:
522 (JSC::AssignResolveNode::emitBytecode):
523 (JSC::ForInNode::emitBytecode):
524 - Emit expression info before calls to emitResolveBaseForPut() when in strict mode.
526 2013-07-23 Mark Lam <mark.lam@apple.com>
528 Added ExpressionRangeInfo for BinaryOpNodes that can throw exceptions
529 due to type coersion.
530 https://bugs.webkit.org/show_bug.cgi?id=116853.
532 Reviewed by Geoffrey Garen.
534 * bytecompiler/NodesCodegen.cpp:
535 (JSC::BinaryOpNode::emitBytecode):
536 - Added expression info for the strcat and the general binary op cases.
537 I did not add expression info for the "compare with null" case because
538 that comparison cannot trigger type coersion, and hence it won't throw
539 any exceptions and doesn't need the expression info.
541 2013-07-23 Mark Lam <mark.lam@apple.com>
543 Removed unused sourceOffset from JSTokenLocation.
544 https://bugs.webkit.org/show_bug.cgi?id=118996.
546 Reviewed by Geoffrey Garen.
548 This also removes the assertion reported in the bug because it is now
549 moot, thereby resolving the assertion failure issue on Windows.
551 * bytecompiler/NodesCodegen.cpp:
552 (JSC::ArrayNode::toArgumentList):
553 (JSC::ApplyFunctionCallDotNode::emitBytecode):
557 (JSC::::lexExpectIdentifier):
561 (JSC::::parseFunctionInfo):
562 (JSC::::parseExpressionOrLabelStatement):
563 (JSC::::parseMemberExpression):
566 * parser/ParserTokens.h:
567 (JSC::JSTokenLocation::JSTokenLocation):
569 2013-07-22 Alex Christensen <achristensen@apple.com>
571 Added assembly files to Windows 64-bit builds.
572 https://bugs.webkit.org/show_bug.cgi?id=118931
574 Reviewed by Brent Fulgham.
576 * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: Added JITStubsMSVC64.asm for x64 and enabled MASM.
577 * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters: Added JITStubsMSVC64.asm.
579 2013-07-20 Brent Fulgham <bfulgham@apple.com>
581 [Windows] Remove unneeded custom stdint.h now that we build on VS2010.
582 https://bugs.webkit.org/show_bug.cgi?id=118868.
584 Reviewed by Anders Carlsson.
586 * os-win32/stdint.h: Removed.
587 * GNUmakefile.list.am: Removed reference to os-win32/stdint.h
589 2013-07-19 Alex Christensen <achristensen@apple.com>
591 Added x64 configuration to Visual Studio build.
592 https://bugs.webkit.org/show_bug.cgi?id=118888
594 Reviewed by Brent Fulgham.
596 * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
597 * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj:
598 * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj:
599 * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.vcxproj:
600 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj:
601 * JavaScriptCore.vcxproj/jsc/jsc.vcxproj:
602 * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
603 * JavaScriptCore.vcxproj/testapi/testapi.vcxproj:
605 2013-07-18 Andreas Kling <akling@apple.com>
607 CodeBlock DFG entry list isn't getting shrunk-to-fit after linking.
608 <http://webkit.org/b/118875>
609 <rdar://problem/14488577>
611 Reviewed by Geoffrey Garen.
613 Move the CodeBlock::shrinkToFit() call out of JITCompiler::link() and to the call sites
614 so SpeculativeJIT::linkOSREntries() can fill in CodeBlock::m_dfgData->osrEntry first.
616 886 kB progression on <http://twitter.com/awesomekling>
618 * dfg/DFGJITCompiler.cpp:
619 (JSC::DFG::JITCompiler::link):
620 (JSC::DFG::JITCompiler::compile):
621 (JSC::DFG::JITCompiler::compileFunction):
623 2013-07-18 Chris Curtis <chris_curtis@apple.com>
625 Fixed ASSERTION FAILED: callFrame == vm->topCallFrame in JSC::Interpreter::addStackTraceIfNecessary
626 https://bugs.webkit.org/show_bug.cgi?id=118498
628 Reviewed by Geoffrey Garen.
631 (throwExceptionFromOpCall):
632 Created new throwExceptionFromOpCall that takes in a functor that contains
633 a function pointer (to create the errorObject) instead of a JSValue. Inside
634 of throwExceptionFromOpCall the topCallFrame is being rolled back in order
635 to handle the error throw. By passing the function pointer in, we can defer
636 the creation of the error object until after topCallFrame has been rolled
637 back. This allows the error object to be created with the appropriate top
640 DEFINE_STUB_FUNCTION(void*, stack_check):
641 DEFINE_STUB_FUNCTION(void*, op_call_arityCheck):
642 DEFINE_STUB_FUNCTION(void*, op_construct_arityCheck):
643 DEFINE_STUB_FUNCTION(EncodedJSValue, op_call_NotJSFunction):
644 DEFINE_STUB_FUNCTION(EncodedJSValue, op_construct_NotJSConstruct):
646 (JSC::ErrorFunctor::~ErrorFunctor):
647 (JSC::ErrorWithExecFunctor::ErrorWithExecFunctor):
648 (JSC::ErrorWithExecFunctor::operator()):
649 (JSC::ErrorWithExecAndCalleeFunctor::ErrorWithExecAndCalleeFunctor):
650 (JSC::ErrorWithExecAndCalleeFunctor::operator()):
651 (JSC::ErrorWithExceptionFunctor::ErrorWithExceptionFunctor):
652 (JSC::ErrorWithExceptionFunctor::operator()):
653 (JSC::throwExceptionFromOpCall):
655 In order to eliminate the need to duplicate code, an error functor was
656 created for the 3 different throwExceptionFromOpCall handles.
657 1. The exception needs to be created, and the function pointer takes 1
658 parameter(callFrame->callerFrame()).
659 2. The exception needs to be created, and the function pointer takes 2
660 parameters (callFrame->callerFrame(), callFrame.calleeAsValue()).
661 3. The exception is already created. In this case, At the time when
662 the error functor is called, vm.exception is returned.
664 * llint/LLIntSlowPaths.cpp:
665 (JSC::LLInt::LLINT_SLOW_PATH_DECL):
666 * runtime/ExceptionHelpers.cpp:
667 (JSC::errorDescriptionForValue):
669 (JSC::createInvalidParameterError):
670 (JSC::createNotAConstructorError):
671 (JSC::createNotAFunctionError):
672 (JSC::createNotAnObjectError):
673 * runtime/ExceptionHelpers.h:
675 The function toString() was being used to stringify an object for an exception
676 message. If the user wrote a toString() for that object, then the system would
677 continue to evaluate that code. A new helper function was created to prevent
678 the system to continue execution and exception creation from that execution.
680 2013-07-18 Filip Pizlo <fpizlo@apple.com>
682 LLInt get_argument_by_val for JSVALUE64 stores into the array profile when it meant to store into the value profile
683 https://bugs.webkit.org/show_bug.cgi?id=118865
685 Reviewed by Mark Hahnenberg.
687 * llint/LowLevelInterpreter64.asm:
689 2013-07-18 Andreas Kling <akling@apple.com>
691 CodeBlock::m_argumentValueProfiles wastes a lot of memory.
692 <http://webkit.org/b/118852>
693 <rdar://problem/14481659>
695 Reviewed by Anders Carlsson.
697 Use Vector::resizeToFit() for CodeBlock::m_argumentValueProfiles. We don't need any padding
698 for growth, since we won't be appending to it anyway.
700 921 KB progression on <http://twitter.com/awesomekling>
702 * bytecode/CodeBlock.cpp:
703 (JSC::CodeBlock::setNumParameters):
705 2013-07-17 Filip Pizlo <fpizlo@apple.com>
707 Unreviewed, fix 32-bit after http://trac.webkit.org/changeset/152813
709 * dfg/DFGSpeculativeJIT.cpp:
710 (JSC::DFG::SpeculativeJIT::compileNewFunctionNoCheck):
711 * dfg/DFGSpeculativeJIT32_64.cpp:
712 (JSC::DFG::SpeculativeJIT::compile):
714 2013-07-17 Geoffrey Garen <ggaren@apple.com>
716 API tests should test for JSStringCreateWithCFString with empty string
717 https://bugs.webkit.org/show_bug.cgi?id=118819
719 Reviewed by Mark Hahnenberg.
721 * API/tests/testapi.c:
724 2013-07-17 Filip Pizlo <fpizlo@apple.com>
726 DFG assumes that NewFunction will never pass its input through
727 https://bugs.webkit.org/show_bug.cgi?id=118798
729 Reviewed by Sam Weinig.
731 Previously the DFG was assuming that NewFunction always returns a function. That's not
732 the case. It may return whatever was passed to it, if it wasn't passed SpecEmpty.
734 This fact needed to be wired through the compiler.
736 * dfg/DFGAbstractState.cpp:
737 (JSC::DFG::AbstractState::executeEffects):
738 * dfg/DFGAbstractValue.h:
739 (JSC::DFG::AbstractValue::makeTop):
741 (JSC::DFG::Graph::dump):
742 * dfg/DFGOperations.cpp:
743 * dfg/DFGOperations.h:
744 * dfg/DFGPredictionPropagationPhase.cpp:
745 (JSC::DFG::PredictionPropagationPhase::propagate):
746 * dfg/DFGSpeculativeJIT.h:
747 (JSC::DFG::SpeculativeJIT::callOperation):
748 * dfg/DFGSpeculativeJIT32_64.cpp:
749 (JSC::DFG::SpeculativeJIT::compile):
750 * dfg/DFGSpeculativeJIT64.cpp:
751 (JSC::DFG::SpeculativeJIT::compile):
753 2013-07-17 Geoffrey Garen <ggaren@apple.com>
755 JSStringCreateWithCFString should not convert the empty string into the NULL string
756 https://bugs.webkit.org/show_bug.cgi?id=118816
758 Reviewed by Sam Weinig.
760 * API/JSStringRef.cpp:
761 (JSStringCreateWithUTF8CString): Removed an extraneous comment, which
762 a previous version of the patch made incorrect.
764 * API/JSStringRefCF.cpp:
765 (JSStringCreateWithCFString): Don't convert the empty string into the
768 2013-07-17 Chris Curtis <chris_curtis@apple.com>
770 Naming convention on createInvalidParamError is incorrect.
771 https://bugs.webkit.org/show_bug.cgi?id=118756
773 Reviewed by Geoffrey Garen.
775 Changed the naming of createInvalidParamError to createInvalidParameterError.
776 This corrects the naming convention for the function listed in the WebKit code styling.
778 * interpreter/Interpreter.cpp:
781 (JSC::DEFINE_STUB_FUNCTION):
782 * llint/LLIntSlowPaths.cpp:
783 (JSC::LLInt::LLINT_SLOW_PATH_DECL):
784 * runtime/CommonSlowPaths.h:
785 (JSC::CommonSlowPaths::opIn):
786 * runtime/ExceptionHelpers.cpp:
787 (JSC::createInvalidParameterError):
788 * runtime/ExceptionHelpers.h:
789 * runtime/JSObject.cpp:
790 (JSC::JSObject::hasInstance):
792 2013-07-16 David Farler <dfarler@apple.com>
794 Typo in DFGInsertionSet.h header guard: "DFGInsectionSet_h" -> "DFGInsertionSet_h"
795 https://bugs.webkit.org/show_bug.cgi?id=118753
797 Reviewed by Geoffrey Garen.
799 * dfg/DFGInsertionSet.h:
800 "DFGInsectionSet_h" -> "DFGInsertionSet_h"
802 2013-07-16 Filip Pizlo <fpizlo@apple.com>
804 MakeRope fixup shouldn't lead to an Identity without kids
805 https://bugs.webkit.org/show_bug.cgi?id=118745
807 Reviewed by Mark Hahnenberg.
809 Make the empty string pruning part of fixupMakeRope() stop if it's on the last child.
811 Make Node::convertToIdentity release-assert that it has exactly one kid.
813 * dfg/DFGFixupPhase.cpp:
814 (JSC::DFG::FixupPhase::fixupMakeRope):
816 (JSC::DFG::Node::convertToIdentity):
818 2013-07-16 Mark Hahnenberg <mhahnenberg@apple.com>
820 Remove reference to JSValueStructSupport.h from JSExport.h
821 https://bugs.webkit.org/show_bug.cgi?id=118746
823 Reviewed by Filip Pizlo.
825 * API/JSExport.h: No such header exists, so it doesn't make sense to reference it.
827 2013-07-13 Commit Queue <commit-queue@webkit.org>
829 Unreviewed, rolling out r151978.
830 http://trac.webkit.org/changeset/151978
831 https://bugs.webkit.org/show_bug.cgi?id=118651
833 Caused regressions at least 3 websites (Requested by rniwa on
836 * runtime/JSCJSValue.h:
837 * runtime/JSString.h:
839 2013-07-12 Chris Curtis <chris_curtis@apple.com>
841 Optimize addStrackTraceIfNecessary to be faster in the case when it's not necessary
842 https://bugs.webkit.org/show_bug.cgi?id=118328
844 Reviewed by Geoffrey Garen.
846 Retrieving the stack is costly. We want to get it only once. By moving the check
847 for the .stack property above the code to retrieve the stack, we ensure this.
849 * interpreter/Interpreter.cpp:
850 (JSC::Interpreter::addStackTraceIfNecessary):
852 2013-07-12 Brent Fulgham <bfulgham@apple.com>
854 [Windows] Build correction after r152573/r152577.
855 https://bugs.webkit.org/show_bug.cgi?id=118610
857 Reviewed by Oliver Hunt.
860 (JSC::JITThunks::hostFunctionStub): Hand-feed MSVC++ the fact that we want the second
861 argument of the make_pair to be a function pointer.
863 2013-07-11 Oliver Hunt <oliver@apple.com>
865 Attempt to fix the windows build.
868 (JSC::JITThunks::hostFunctionStub):
871 2013-07-10 Oliver Hunt <oliver@apple.com>
873 NativeExecutable cache needs to use both call and construct functions for key
874 https://bugs.webkit.org/show_bug.cgi?id=118545
876 Reviewed by Geoffrey Garen.
878 Make the native executable cache make use a key pair so we don't decide to
879 treat all subsequent functions as not being constructors.
882 (JSC::JITThunks::hostFunctionStub):
884 * runtime/JSBoundFunction.cpp:
885 (JSC::JSBoundFunction::create):
886 * runtime/JSCell.cpp:
887 (JSC::JSCell::getCallData):
888 (JSC::JSCell::getConstructData):
890 2013-07-09 Mark Lam <mark.lam@apple.com>
892 Gardening to unbreak builds on the Windows bot.
896 * parser/ParserTokens.h:
898 2013-07-09 Mark Lam <mark.lam@apple.com>
900 Fix 30% JSBench regression (caused by adding column numbers to stack traces).
901 https://bugs.webkit.org/show_bug.cgi?id=118481.
903 Reviewed by Mark Hahnenberg and Geoffrey Garen.
905 Previously, we already capture ExpressionRangeInfo that provides a divot for
906 each bytecode that can potentially throw an exception (and therefore generate
907 a stack trace). On first attempt to compute column numbers, we then do a walk
908 of the source string to record all line start positions in a table associated
909 with the SourceProvider. The column number can then be computed as
910 divot - lineStartFor(bytecodeOffset).
912 The computation of this lineStarts table is the source of the 30% JSBench
913 performance regression.
915 The new code now records lineStarts as the lexer and parser scans the source
916 code. These lineStarts are then used to compute the column number for the
917 given divot, and stored in the ExpressionRangeInfo. Similarly, we also capture
918 the line number at the divot point and store that in the ExpressionRangeInfo.
919 Hence, to look up line and column numbers, we now lookup the ExpressionRangeInfo
920 for the bytecodeOffset, and then compute the line and column from the values
921 stored in the expression info.
924 1. We want to minimize perturbations to the lexer and parser. Specifically,
925 the changes added should not change how it scans code, and generate bytecode.
926 2. We regard the divot as the source character position we are interested
927 in. As such, we'll capture line and lineStart (for column) at the point
928 when we capture the divot information. This ensures that the 3 values are
931 How the change is done:
932 1. Change the lexer to track lineStarts.
933 2. Change the parser to capture line and lineStarts at the point of capturing
935 3. Change the parser and associated code to plumb these values all the way to
936 the point that the correspoinding ExpressionRangeInfo is emitted.
937 4. Propagate and record SourceCode firstLine and firstLineColumnOffset to the
938 the necessary places so that we can add them as needed when reifying
939 UnlinkedCodeBlocks into CodeBlocks.
940 5. Compress the line and column number values in the ExpressionRangeInfo. In
941 practice, we seldom have both large line and column numbers. Hence, we can
942 encode both in an uint32_t most of the time. For the times when we encounter
943 both large line and column numbers, we have a fallback to store the "fat"
945 6. Emit an ExpressionRangeInfo for UnaryOp nodes to get more line and column
947 7. Change the interpreter to use the new way of computing line and column.
948 8. Delete old line and column computation code that is now unused.
951 - the old lexer was tracking both a startOffset and charPosition where
952 charPosition equals startOffset - SourceCode.startOffset. We now use
953 startOffset exclusively throughout the system for consistency.
954 All offset values (including lineStart) are relative to the start of the
955 SourceProvider string. These values will only be converted to be relative
956 to the SourceCode.startOffset at the very last minute i.e. when the divot
957 is stored into the ExpressionRangeInfo.
959 This change to use the same offset system everywhere reduces confusion
960 from having to convert back and forth between the 2 systems. It also
961 enables a lot of assertions to be used.
963 - Also fixed some bugs in the choice of divot positions to use. For example,
964 both Eval and Function expressions previously used column numbers from
965 the start of the expression but used the line number at the end of the
966 expression. This is now fixed to use either the start or end positions
967 as appropriate, but not a mix of line and columns from both.
969 - Why use ints instead of unsigneds for offsets and lineStarts inside the
971 Some tests (e.g. fast/js/call-base-resolution.html and
972 fast/js/eval-cross-window.html) has shown that lineStart offsets can be
973 prior to the SourceCode.startOffset. Keeping the lexer offsets as ints
974 simplifies computations and makes it easier to maintain the assertions
975 that (startOffset >= lineStartOffset).
977 However, column and line numbers are always unsigned when we publish
978 them to the ExpressionRangeInfo. The ints are only used inside the
979 lexer and parser ... well, and bytecode generator.
981 - For all cases, lineStart is always captured where the divot is captured.
982 However, some sputnik conformance tests have shown that we cannot honor
983 line breaks for assignment statements like the following:
985 eval("x\u000A*=\u000A-1;");
987 In this case, the lineStart is expected to be captured at the start of
988 the assignment expression instead of at the divot point in the middle.
989 The assignment expression is the only special case for this.
991 This patch has been tested against the full layout tests both with release
992 and debug builds with no regression.
994 * API/JSContextRef.cpp:
995 (JSContextCreateBacktrace):
996 - Updated to use the new StackFrame::computeLineAndColumn().
997 * bytecode/CodeBlock.cpp:
998 (JSC::CodeBlock::CodeBlock):
999 - Added m_firstLineColumnOffset initialization.
1000 - Plumbed the firstLineColumnOffset into the SourceCode.
1001 - Initialized column for op_debug using the new way.
1002 (JSC::CodeBlock::lineNumberForBytecodeOffset):
1003 - Changed to compute line number using the ExpressionRangeInfo.
1004 (JSC::CodeBlock::columnNumberForBytecodeOffset): Added
1005 - Changed to compute column number using the ExpressionRangeInfo.
1006 (JSC::CodeBlock::expressionRangeForBytecodeOffset):
1007 * bytecode/CodeBlock.h:
1008 (JSC::CodeBlock::firstLineColumnOffset):
1009 (JSC::GlobalCodeBlock::GlobalCodeBlock):
1010 - Plumbed firstLineColumnOffset through to the super class.
1011 (JSC::ProgramCodeBlock::ProgramCodeBlock):
1012 - Plumbed firstLineColumnOffset through to the super class.
1013 (JSC::EvalCodeBlock::EvalCodeBlock):
1014 - Plumbed firstLineColumnOffset through to the super class.
1015 But for EvalCodeBlocks, the firstLineColumnOffset is always 1
1016 because we're starting with a new source string with no start
1018 (JSC::FunctionCodeBlock::FunctionCodeBlock):
1019 - Plumbed firstLineColumnOffset through to the super class.
1021 * bytecode/ExpressionRangeInfo.h:
1022 - Added modes for encoding line and column into a single 30-bit
1023 unsigned. The encoding is in 1 of 3 modes:
1024 1. FatLineMode: 22-bit line, 8-bit column
1025 2. FatColumnMode: 8-bit line, 22-bit column
1026 3. FatLineAndColumnMode: 32-bit line, 32-bit column
1027 (JSC::ExpressionRangeInfo::encodeFatLineMode): Added.
1028 - Encodes line and column into the 30-bit position using FatLine mode.
1029 (JSC::ExpressionRangeInfo::encodeFatColumnMode): Added.
1030 - Encodes line and column into the 30-bit position using FatColumn mode.
1031 (JSC::ExpressionRangeInfo::decodeFatLineMode): Added.
1032 - Decodes the FatLine mode 30-bit position into line and column.
1033 (JSC::ExpressionRangeInfo::decodeFatColumnMode): Added.
1034 - Decodes the FatColumn mode 30-bit position into line and column.
1036 * bytecode/UnlinkedCodeBlock.cpp:
1037 (JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):
1038 - Plumbed startColumn through.
1039 (JSC::UnlinkedFunctionExecutable::link):
1040 - Plumbed startColumn through.
1041 (JSC::UnlinkedCodeBlock::lineNumberForBytecodeOffset):
1042 - Computes a line number using the new way.
1043 (JSC::UnlinkedCodeBlock::expressionRangeForBytecodeOffset):
1044 - Added decoding of line and column.
1045 - Added handling of the case when we do not find a fitting expression
1046 range info for a specified bytecodeOffset. This only happens if the
1047 bytecodeOffset is below the first expression range info. In that
1048 case, we'll use the first expression range info entry.
1049 (JSC::UnlinkedCodeBlock::addExpressionInfo):
1050 - Added encoding of line and column.
1052 * bytecode/UnlinkedCodeBlock.h:
1053 - Added m_expressionInfoFatPositions in RareData.
1054 (JSC::UnlinkedFunctionExecutable::functionStartColumn):
1055 (JSC::UnlinkedCodeBlock::shrinkToFit):
1056 - Removed obsoleted m_lineInfo.
1057 * bytecompiler/BytecodeGenerator.cpp:
1058 (JSC::BytecodeGenerator::emitCall): Plumbed line and lineStart through.
1059 (JSC::BytecodeGenerator::emitCallEval): Plumbed line and lineStart through.
1060 (JSC::BytecodeGenerator::emitCallVarargs): Plumbed line and lineStart through.
1061 (JSC::BytecodeGenerator::emitConstruct): Plumbed line and lineStart through.
1062 (JSC::BytecodeGenerator::emitDebugHook): Plumbed lineStart through.
1063 * bytecompiler/BytecodeGenerator.h:
1064 (JSC::BytecodeGenerator::emitNode):
1065 (JSC::BytecodeGenerator::emitNodeInConditionContext):
1066 - Removed obsoleted m_lineInfo.
1067 (JSC::BytecodeGenerator::emitExpressionInfo):
1068 - Plumbed line and lineStart through.
1069 - Compute the line and column to be added to the expression range info.
1070 * bytecompiler/NodesCodegen.cpp:
1071 (JSC::ThrowableExpressionData::emitThrowReferenceError):
1072 (JSC::ResolveNode::emitBytecode):
1073 (JSC::ArrayNode::toArgumentList):
1074 (JSC::BracketAccessorNode::emitBytecode):
1075 (JSC::DotAccessorNode::emitBytecode):
1076 (JSC::NewExprNode::emitBytecode):
1077 (JSC::EvalFunctionCallNode::emitBytecode):
1078 (JSC::FunctionCallValueNode::emitBytecode):
1079 (JSC::FunctionCallResolveNode::emitBytecode):
1080 (JSC::FunctionCallBracketNode::emitBytecode):
1081 (JSC::FunctionCallDotNode::emitBytecode):
1082 (JSC::CallFunctionCallDotNode::emitBytecode):
1083 (JSC::ApplyFunctionCallDotNode::emitBytecode):
1084 (JSC::PostfixNode::emitResolve):
1085 (JSC::PostfixNode::emitBracket):
1086 (JSC::PostfixNode::emitDot):
1087 (JSC::DeleteResolveNode::emitBytecode):
1088 (JSC::DeleteBracketNode::emitBytecode):
1089 (JSC::DeleteDotNode::emitBytecode):
1090 (JSC::PrefixNode::emitResolve):
1091 (JSC::PrefixNode::emitBracket):
1092 (JSC::PrefixNode::emitDot):
1093 - Plumbed line and lineStart through the above as needed.
1095 (JSC::UnaryOpNode::emitBytecode):
1096 - Added emission of an ExpressionRangeInfo for the UnaryOp node.
1098 (JSC::BinaryOpNode::emitStrcat):
1099 (JSC::ThrowableBinaryOpNode::emitBytecode):
1100 (JSC::InstanceOfNode::emitBytecode):
1101 (JSC::emitReadModifyAssignment):
1102 (JSC::ReadModifyResolveNode::emitBytecode):
1103 (JSC::AssignResolveNode::emitBytecode):
1104 (JSC::AssignDotNode::emitBytecode):
1105 (JSC::ReadModifyDotNode::emitBytecode):
1106 (JSC::AssignBracketNode::emitBytecode):
1107 (JSC::ReadModifyBracketNode::emitBytecode):
1108 - Plumbed line and lineStart through the above as needed.
1110 (JSC::ConstStatementNode::emitBytecode):
1111 (JSC::EmptyStatementNode::emitBytecode):
1112 (JSC::DebuggerStatementNode::emitBytecode):
1113 (JSC::ExprStatementNode::emitBytecode):
1114 (JSC::VarStatementNode::emitBytecode):
1115 (JSC::IfElseNode::emitBytecode):
1116 (JSC::DoWhileNode::emitBytecode):
1117 (JSC::WhileNode::emitBytecode):
1118 (JSC::ForNode::emitBytecode):
1119 (JSC::ForInNode::emitBytecode):
1120 (JSC::ContinueNode::emitBytecode):
1121 (JSC::BreakNode::emitBytecode):
1122 (JSC::ReturnNode::emitBytecode):
1123 (JSC::WithNode::emitBytecode):
1124 (JSC::SwitchNode::emitBytecode):
1125 (JSC::LabelNode::emitBytecode):
1126 (JSC::ThrowNode::emitBytecode):
1127 (JSC::TryNode::emitBytecode):
1128 (JSC::ProgramNode::emitBytecode):
1129 (JSC::EvalNode::emitBytecode):
1130 (JSC::FunctionBodyNode::emitBytecode):
1131 - Plumbed line and lineStart through the above as needed.
1133 * interpreter/Interpreter.cpp:
1134 (JSC::appendSourceToError):
1135 - Added line and column arguments for expressionRangeForBytecodeOffset().
1136 (JSC::StackFrame::computeLineAndColumn):
1137 - Replaces StackFrame::line() and StackFrame::column().
1138 (JSC::StackFrame::expressionInfo):
1139 - Added line and column arguments.
1140 (JSC::StackFrame::toString):
1141 - Changed to use the new StackFrame::computeLineAndColumn().
1142 (JSC::Interpreter::getStackTrace):
1143 - Added the needed firstLineColumnOffset arg for the StackFrame.
1145 * interpreter/Interpreter.h:
1146 * parser/ASTBuilder.h:
1147 (JSC::ASTBuilder::BinaryOpInfo::BinaryOpInfo):
1148 (JSC::ASTBuilder::AssignmentInfo::AssignmentInfo):
1149 (JSC::ASTBuilder::createResolve):
1150 (JSC::ASTBuilder::createBracketAccess):
1151 (JSC::ASTBuilder::createDotAccess):
1152 (JSC::ASTBuilder::createRegExp):
1153 (JSC::ASTBuilder::createNewExpr):
1154 (JSC::ASTBuilder::createAssignResolve):
1155 (JSC::ASTBuilder::createFunctionExpr):
1156 (JSC::ASTBuilder::createFunctionBody):
1157 (JSC::ASTBuilder::createGetterOrSetterProperty):
1158 (JSC::ASTBuilder::createFuncDeclStatement):
1159 (JSC::ASTBuilder::createBlockStatement):
1160 (JSC::ASTBuilder::createExprStatement):
1161 (JSC::ASTBuilder::createIfStatement):
1162 (JSC::ASTBuilder::createForLoop):
1163 (JSC::ASTBuilder::createForInLoop):
1164 (JSC::ASTBuilder::createVarStatement):
1165 (JSC::ASTBuilder::createReturnStatement):
1166 (JSC::ASTBuilder::createBreakStatement):
1167 (JSC::ASTBuilder::createContinueStatement):
1168 (JSC::ASTBuilder::createTryStatement):
1169 (JSC::ASTBuilder::createSwitchStatement):
1170 (JSC::ASTBuilder::createWhileStatement):
1171 (JSC::ASTBuilder::createDoWhileStatement):
1172 (JSC::ASTBuilder::createLabelStatement):
1173 (JSC::ASTBuilder::createWithStatement):
1174 (JSC::ASTBuilder::createThrowStatement):
1175 (JSC::ASTBuilder::createDebugger):
1176 (JSC::ASTBuilder::createConstStatement):
1177 (JSC::ASTBuilder::appendBinaryExpressionInfo):
1178 (JSC::ASTBuilder::appendUnaryToken):
1179 (JSC::ASTBuilder::unaryTokenStackLastStart):
1180 (JSC::ASTBuilder::unaryTokenStackLastLineStartPosition): Added.
1181 (JSC::ASTBuilder::assignmentStackAppend):
1182 (JSC::ASTBuilder::createAssignment):
1183 (JSC::ASTBuilder::setExceptionLocation):
1184 (JSC::ASTBuilder::makeDeleteNode):
1185 (JSC::ASTBuilder::makeFunctionCallNode):
1186 (JSC::ASTBuilder::makeBinaryNode):
1187 (JSC::ASTBuilder::makeAssignNode):
1188 (JSC::ASTBuilder::makePrefixNode):
1189 (JSC::ASTBuilder::makePostfixNode):.
1190 - Plumbed line, lineStart, and startColumn through the above as needed.
1193 (JSC::::currentSourcePtr):
1195 - Added tracking for sourceoffset and lineStart.
1196 (JSC::::internalShift):
1197 (JSC::::parseIdentifier):
1198 - Added tracking for lineStart.
1199 (JSC::::parseIdentifierSlowCase):
1200 (JSC::::parseString):
1201 - Added tracking for lineStart.
1202 (JSC::::parseStringSlowCase):
1204 - Added tracking for sourceoffset.
1205 (JSC::::sourceCode):
1207 (JSC::Lexer::currentOffset):
1208 (JSC::Lexer::currentLineStartOffset):
1209 (JSC::Lexer::setOffset):
1210 - Added tracking for lineStart.
1211 (JSC::Lexer::offsetFromSourcePtr): Added. conversion function.
1212 (JSC::Lexer::sourcePtrFromOffset): Added. conversion function.
1213 (JSC::Lexer::setOffsetFromSourcePtr):
1214 (JSC::::lexExpectIdentifier):
1215 - Added tracking for sourceoffset and lineStart.
1217 * parser/NodeConstructors.h:
1219 (JSC::ResolveNode::ResolveNode):
1220 (JSC::EvalFunctionCallNode::EvalFunctionCallNode):
1221 (JSC::FunctionCallValueNode::FunctionCallValueNode):
1222 (JSC::FunctionCallResolveNode::FunctionCallResolveNode):
1223 (JSC::FunctionCallBracketNode::FunctionCallBracketNode):
1224 (JSC::FunctionCallDotNode::FunctionCallDotNode):
1225 (JSC::CallFunctionCallDotNode::CallFunctionCallDotNode):
1226 (JSC::ApplyFunctionCallDotNode::ApplyFunctionCallDotNode):
1227 (JSC::PostfixNode::PostfixNode):
1228 (JSC::DeleteResolveNode::DeleteResolveNode):
1229 (JSC::DeleteBracketNode::DeleteBracketNode):
1230 (JSC::DeleteDotNode::DeleteDotNode):
1231 (JSC::PrefixNode::PrefixNode):
1232 (JSC::ReadModifyResolveNode::ReadModifyResolveNode):
1233 (JSC::ReadModifyBracketNode::ReadModifyBracketNode):
1234 (JSC::AssignBracketNode::AssignBracketNode):
1235 (JSC::AssignDotNode::AssignDotNode):
1236 (JSC::ReadModifyDotNode::ReadModifyDotNode):
1237 (JSC::AssignErrorNode::AssignErrorNode):
1238 (JSC::WithNode::WithNode):
1239 (JSC::ForInNode::ForInNode):
1240 - Plumbed line and lineStart through the above as needed.
1242 (JSC::StatementNode::setLoc): Plumbed lineStart.
1243 (JSC::ScopeNode::ScopeNode): Plumbed lineStart.
1244 (JSC::ProgramNode::ProgramNode): Plumbed startColumn.
1245 (JSC::ProgramNode::create): Plumbed startColumn.
1246 (JSC::EvalNode::create):
1247 (JSC::FunctionBodyNode::FunctionBodyNode): Plumbed startColumn.
1248 (JSC::FunctionBodyNode::create): Plumbed startColumn.
1250 (JSC::Node::startOffset):
1251 (JSC::Node::lineStartOffset): Added.
1252 (JSC::StatementNode::firstLine):
1253 (JSC::StatementNode::lastLine):
1254 (JSC::ThrowableExpressionData::ThrowableExpressionData):
1255 (JSC::ThrowableExpressionData::setExceptionSourceCode):
1256 (JSC::ThrowableExpressionData::divotStartOffset):
1257 (JSC::ThrowableExpressionData::divotEndOffset):
1258 (JSC::ThrowableExpressionData::divotLine):
1259 (JSC::ThrowableExpressionData::divotLineStart):
1260 (JSC::ThrowableSubExpressionData::ThrowableSubExpressionData):
1261 (JSC::ThrowableSubExpressionData::setSubexpressionInfo):
1262 (JSC::ThrowableSubExpressionData::subexpressionDivot):
1263 (JSC::ThrowableSubExpressionData::subexpressionStartOffset):
1264 (JSC::ThrowableSubExpressionData::subexpressionEndOffset):
1265 (JSC::ThrowableSubExpressionData::subexpressionLine):
1266 (JSC::ThrowableSubExpressionData::subexpressionLineStart):
1267 (JSC::ThrowablePrefixedSubExpressionData::ThrowablePrefixedSubExpressionData):
1268 (JSC::ThrowablePrefixedSubExpressionData::setSubexpressionInfo):
1269 (JSC::ThrowablePrefixedSubExpressionData::subexpressionDivot):
1270 (JSC::ThrowablePrefixedSubExpressionData::subexpressionStartOffset):
1271 (JSC::ThrowablePrefixedSubExpressionData::subexpressionEndOffset):
1272 (JSC::ThrowablePrefixedSubExpressionData::subexpressionLine):
1273 (JSC::ThrowablePrefixedSubExpressionData::subexpressionLineStart):
1274 (JSC::ScopeNode::startStartOffset):
1275 (JSC::ScopeNode::startLineStartOffset):
1276 (JSC::ProgramNode::startColumn):
1277 (JSC::EvalNode::startColumn):
1278 (JSC::FunctionBodyNode::startColumn):
1279 - Plumbed line and lineStart through the above as needed.
1280 * parser/Parser.cpp:
1282 (JSC::::parseSourceElements):
1283 (JSC::::parseVarDeclarationList):
1284 (JSC::::parseConstDeclarationList):
1285 (JSC::::parseForStatement):
1286 (JSC::::parseBreakStatement):
1287 (JSC::::parseContinueStatement):
1288 (JSC::::parseReturnStatement):
1289 (JSC::::parseThrowStatement):
1290 (JSC::::parseWithStatement):
1291 - Plumbed line and lineStart through the above as needed.
1292 (JSC::::parseFunctionBody):
1293 - Plumbed startColumn.
1294 (JSC::::parseFunctionInfo):
1295 (JSC::::parseFunctionDeclaration):
1296 (JSC::LabelInfo::LabelInfo):
1297 (JSC::::parseExpressionOrLabelStatement):
1298 (JSC::::parseAssignmentExpression):
1299 (JSC::::parseBinaryExpression):
1300 (JSC::::parseProperty):
1301 (JSC::::parseObjectLiteral):
1302 (JSC::::parsePrimaryExpression):
1303 (JSC::::parseMemberExpression):
1304 (JSC::::parseUnaryExpression):
1305 - Plumbed line, lineStart, startColumn through the above as needed.
1307 (JSC::Parser::next):
1308 (JSC::Parser::nextExpectIdentifier):
1309 (JSC::Parser::tokenStart):
1310 (JSC::Parser::tokenColumn):
1311 (JSC::Parser::tokenEnd):
1312 (JSC::Parser::tokenLineStart):
1313 (JSC::Parser::lastTokenLine):
1314 (JSC::Parser::lastTokenLineStart):
1316 * parser/ParserTokens.h:
1317 (JSC::JSTokenLocation::JSTokenLocation):
1318 - Plumbed lineStart.
1319 (JSC::JSTokenLocation::lineStartPosition):
1320 (JSC::JSTokenLocation::startPosition):
1321 (JSC::JSTokenLocation::endPosition):
1322 * parser/SourceCode.h:
1323 (JSC::SourceCode::SourceCode):
1324 (JSC::SourceCode::startColumn):
1326 (JSC::SourceCode::subExpression):
1327 * parser/SourceProvider.cpp: delete old code.
1328 * parser/SourceProvider.h: delete old code.
1329 * parser/SourceProviderCacheItem.h:
1330 (JSC::SourceProviderCacheItem::closeBraceToken):
1331 (JSC::SourceProviderCacheItem::SourceProviderCacheItem):
1332 - Plumbed lineStart.
1333 * parser/SyntaxChecker.h:
1334 (JSC::SyntaxChecker::makeFunctionCallNode):
1335 (JSC::SyntaxChecker::makeAssignNode):
1336 (JSC::SyntaxChecker::makePrefixNode):
1337 (JSC::SyntaxChecker::makePostfixNode):
1338 (JSC::SyntaxChecker::makeDeleteNode):
1339 (JSC::SyntaxChecker::createResolve):
1340 (JSC::SyntaxChecker::createBracketAccess):
1341 (JSC::SyntaxChecker::createDotAccess):
1342 (JSC::SyntaxChecker::createRegExp):
1343 (JSC::SyntaxChecker::createNewExpr):
1344 (JSC::SyntaxChecker::createAssignResolve):
1345 (JSC::SyntaxChecker::createFunctionExpr):
1346 (JSC::SyntaxChecker::createFunctionBody):
1347 (JSC::SyntaxChecker::createFuncDeclStatement):
1348 (JSC::SyntaxChecker::createForInLoop):
1349 (JSC::SyntaxChecker::createReturnStatement):
1350 (JSC::SyntaxChecker::createBreakStatement):
1351 (JSC::SyntaxChecker::createContinueStatement):
1352 (JSC::SyntaxChecker::createWithStatement):
1353 (JSC::SyntaxChecker::createLabelStatement):
1354 (JSC::SyntaxChecker::createThrowStatement):
1355 (JSC::SyntaxChecker::createGetterOrSetterProperty):
1356 (JSC::SyntaxChecker::appendBinaryExpressionInfo):
1357 (JSC::SyntaxChecker::operatorStackPop):
1358 - Made SyntaxChecker prototype changes to match ASTBuilder due to new
1359 args added for plumbing line, lineStart, and startColumn.
1360 * runtime/CodeCache.cpp:
1361 (JSC::CodeCache::generateBytecode):
1362 (JSC::CodeCache::getCodeBlock):
1363 - Plumbed startColumn.
1364 * runtime/Executable.cpp:
1365 (JSC::FunctionExecutable::FunctionExecutable):
1366 (JSC::ProgramExecutable::compileInternal):
1367 (JSC::FunctionExecutable::produceCodeBlockFor):
1368 (JSC::FunctionExecutable::fromGlobalCode):
1369 - Plumbed startColumn.
1370 * runtime/Executable.h:
1371 (JSC::ScriptExecutable::startColumn):
1372 (JSC::ScriptExecutable::recordParse):
1373 (JSC::FunctionExecutable::create):
1374 - Plumbed startColumn.
1376 2013-07-08 Carlos Garcia Campos <cgarcia@igalia.com>
1378 Unreviewed. Fix make distcheck.
1380 * GNUmakefile.list.am: Add missing header files.
1382 2013-07-04 Patrick Gansterer <paroga@webkit.org>
1384 [CMake] Add generation of JITStubs for x86_64 MSVC
1385 https://bugs.webkit.org/show_bug.cgi?id=116666
1387 Reviewed by Laszlo Gombos.
1389 Also move the generation for ARM CPU into the CMakeLists.txt,
1390 since it's compiler specific and not dedicated to Windows CE.
1393 * PlatformWinCE.cmake: Removed.
1395 2013-07-04 Patrick Gansterer <paroga@webkit.org>
1397 [CMake] Add STATICALLY_LINKED_WITH_WTF to JavaScriptCore project
1398 https://bugs.webkit.org/show_bug.cgi?id=118120
1400 Reviewed by Gyuyoung Kim.
1402 Since WTF is a static library linked to JavaScriptCore on all CMake ports
1403 we need to define STATICALLY_LINKED_WITH_WTF for all of them.
1404 This makes only a difference for Windows, since WTF_EXPORT and WTF_IMPORT
1405 are the same on all other platforms.
1409 2013-07-02 Mark Hahnenberg <mhahnenberg@apple.com>
1411 Replace RELEASE_ASSERT with ASSERT in CodeBlock:: bytecodeOffsetForCallAtIndex
1412 https://bugs.webkit.org/show_bug.cgi?id=118316
1414 Reviewed by Geoffrey Garen.
1416 This is causing some crashiness in release builds. We should replace it with an ASSERT
1417 until we track down all the places that need fixing in bug 118315.
1419 * bytecode/CodeBlock.h:
1420 (JSC::CodeBlock::bytecodeOffsetForCallAtIndex):
1422 2013-07-02 Brent Fulgham <bfulgham@apple.com>
1424 [Windows] Unreviewed build correction for 'DebugSuffix' target.
1426 * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj: Must pass the
1427 DEBUGSUFFIX definition to the nmake instance to be available during script processing.
1429 2013-07-01 Sergio Correia <sergio.correia@openbossa.org>
1431 [JSC]: Fix maybe-uninitialized gcc 4.8 warning in DFGSpeculativeJIT.cpp
1432 https://bugs.webkit.org/show_bug.cgi?id=118278
1434 Reviewed by Filip Pizlo.
1436 * dfg/DFGSpeculativeJIT.cpp:
1437 (JSC::DFG::SpeculativeJIT::compilePutByValForIntTypedArray):
1438 Initialize valueGPR with InvalidGPRReg.
1440 2013-07-01 Csaba Osztrogonác <ossy@webkit.org>
1442 Fix cast-align warnings in JavaScriptCore/heap/HandleBlockInlines.h
1443 https://bugs.webkit.org/show_bug.cgi?id=118242
1445 Reviewed by Mark Hahnenberg.
1447 * heap/HandleBlockInlines.h:
1448 (JSC::HandleBlock::nodes):
1450 2013-06-29 Andreas Kling <akling@apple.com>
1452 Follow-up to r152206: also update HashFlags8BitBuffer in the LLInt.
1454 * llint/LowLevelInterpreter.asm:
1456 2013-06-28 Andreas Kling <akling@apple.com>
1458 Un-crashify JSC tests on debug bots after Anders had his way with StringImpl.
1460 * llint/LLIntData.cpp:
1461 (JSC::LLInt::Data::performAssertions):
1463 2013-06-28 Anders Carlsson <andersca@apple.com>
1465 Remove String::deprecatedCharactersWithNullTermination() and related code
1466 https://bugs.webkit.org/show_bug.cgi?id=118211
1468 Reviewed by Benjamin Poulain.
1470 * API/JSStringRef.cpp:
1471 (JSStringCreateWithCharactersNoCopy):
1472 Update call to StringImpl::createWithoutCopying.
1474 2013-06-27 Timothy Hatcher <timothy@apple.com>
1476 Notify the debugger about functions created from source code via new Function() or WebCore::JSLazyEventListener.
1478 https://bugs.webkit.org/show_bug.cgi?id=118063
1480 Reviewed by Geoffrey Garen.
1482 * bytecode/UnlinkedCodeBlock.cpp:
1483 (JSC::UnlinkedFunctionExecutable::fromGlobalCode): Call Debugger::sourceParsed.
1485 2013-06-26 Anders Carlsson <andersca@apple.com>
1487 Add JSStringCreateWithCharactersNoCopy SPI
1488 https://bugs.webkit.org/show_bug.cgi?id=118074
1489 <rdar://problem/14279905>
1491 Reviewed by Geoffrey Garen.
1493 * API/JSStringRef.cpp:
1494 (JSStringCreateWithCharactersNoCopy):
1495 Create a new OpaqueJSString, using the newly added StringImpl::createWithoutCopying function.
1497 * API/JSStringRefPrivate.h: Added.
1498 Add a home for the JSStringCreateWithCharactersNoCopy function.
1500 * API/OpaqueJSString.h:
1501 (OpaqueJSString::OpaqueJSString):
1502 Just call isolatedCopy on the passed in string.
1504 * API/tests/testapi.c:
1505 Add an API test for JSStringCreateWithCharactersNoCopy.
1507 * JavaScriptCore.xcodeproj/project.pbxproj:
1510 2013-06-25 Ryosuke Niwa <rniwa@webkit.org>
1512 JSString should remember AtomicString
1513 https://bugs.webkit.org/show_bug.cgi?id=117386
1515 Reviewed by Geoffrey Garen.
1517 Added JSValue::toAtomicString and JSString::atomicString. These two functions allow WebCore to update
1518 JSString's m_value to set isAtomic flag and avoid the AtomicStringTable lookups in subsequent attempts
1519 to obtain the AtomicString of the same value.
1521 * runtime/JSCJSValue.h:
1522 * runtime/JSString.h:
1523 (JSC::JSString::atomicString):
1524 (JSC::JSValue::toAtomicString):
1526 2013-06-24 Roger Fong <roger_fong@apple.com>
1528 Unreviewed. Makefile build fix for AppleWindows.
1530 * JavaScriptCore.vcxproj/JavaScriptCore.make:
1532 2013-06-17 Darin Adler <darin@apple.com>
1534 Sort all the Xcode project files
1535 https://bugs.webkit.org/show_bug.cgi?id=117696
1537 Reviewed by Anders Carlsson.
1539 * JavaScriptCore.xcodeproj/project.pbxproj: Ran the sort-Xcode-project-file script.
1541 2013-06-21 Mark Lam <mark.lam@apple.com>
1543 Introducing the VMStackBounds class.
1544 https://bugs.webkit.org/show_bug.cgi?id=117862.
1546 Reviewed by Geoffrey Garen.
1548 - Removed Interpreter::StackPolicy.
1549 - The new VMStackBounds will take over choosing the appropriate stack
1550 size requirements, and invoking the underlying WTF::StackBounds to
1551 to the real bounds check.
1552 - VMStackBounds will now be used universally throughout JSC instead of
1555 * JavaScriptCore.xcodeproj/project.pbxproj:
1556 * bytecompiler/BytecodeGenerator.cpp:
1557 (JSC::BytecodeGenerator::BytecodeGenerator):
1558 * bytecompiler/BytecodeGenerator.h:
1559 * interpreter/Interpreter.cpp:
1560 (JSC::Interpreter::execute):
1561 (JSC::Interpreter::executeCall):
1562 (JSC::Interpreter::executeConstruct):
1563 (JSC::Interpreter::prepareForRepeatCall):
1564 * interpreter/Interpreter.h:
1565 (JSC::Interpreter::isInErrorHandlingMode):
1566 * parser/Parser.cpp:
1569 * runtime/StringRecursionChecker.h:
1570 (JSC::StringRecursionChecker::performCheck):
1571 * runtime/VMStackBounds.h: Added.
1572 (JSC::VMStackBounds::VMStackBounds):
1573 (JSC::VMStackBounds::isSafeToRecurse):
1574 (JSC::VMStackBounds::requiredCapacity):
1576 2013-06-20 Mark Lam <mark.lam@apple.com>
1578 Change stack capacity requirement to be more reasonable.
1579 https://bugs.webkit.org/show_bug.cgi?id=117801.
1581 Reviewed by Geoffrey Garen.
1583 Previously, the requiredStack in StackPolicy::StackPolicy() was set to
1584 to a high value like 256K to reduce the chances of encountering an
1585 undetected stack overflow in a scenario where we have a combination of
1586 deeply nested divs and a large amount recursive re-entries into the VM.
1588 However, this high value of requiredStack still does not completely
1589 ensure that we will never encounter an undetected stack overflow. It
1590 only lessens the probability of encountering it.
1592 Secondly, on some platforms, the total stack size can be less than 256K
1593 to start with. Hence, this high value requiredStack renders the VM
1594 unuseable on those platforms.
1596 This patch will fix the requiredStack to be more reasonable based on
1597 real world stack usage by the VM. We won't (and cannot) try to prevent
1598 undetected stack overflows outside of JSC as well. External code that
1599 do deep recursion (e.g. Documnet::updateLayout()) should do their own
1602 From a previous experiment, we measured the following:
1604 On a debug build on OSX:
1605 1. Stack usage different between recursive calls to interpreter entry:
1607 On a release build on OSX:
1608 2. Stack usage difference between recursive calls to interpreter entry:
1611 Using these as a guide, we'll pick the following values for the
1614 errorModeRequiredStack: 16K
1616 The requiredStack is chosen to be 4x the measured usage above. The
1617 additional 3x is a conservative estimate to account for stack space
1618 that may be needed by other native functions called while in the
1621 The errorModeRequiredStack has to be less than the requiredStack or we
1622 won't be able to reenter the interpreter to do error handling work when
1623 an imminent stack overflow is detected. It is assumed that the error
1624 handling code will only do minimal work to allocate an exception and its
1625 stack trace, and not run any arbitrary JS code. As such, it is safe to
1626 allow re-entry into the interpreter with only 2x the measured usage in
1629 * interpreter/Interpreter.cpp:
1630 (JSC::Interpreter::StackPolicy::StackPolicy):
1632 2013-06-20 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
1634 HashSet: reverse the order of the template arguments at alternate 'find', 'contains' and 'add' methods
1635 https://bugs.webkit.org/show_bug.cgi?id=117830
1637 Reviewed by Anders Carlsson.
1639 The order of the template arguments at HashSet alternate 'find', 'contains' and
1640 'add' methods is reversed so that callers can just pass the translator
1641 and let the compiler deduce input argument type.
1643 * runtime/Identifier.h:
1644 (JSC::IdentifierTable::add):
1646 2013-06-20 Roger Fong <roger_fong@apple.com>
1648 Make Windows makefile copy build output to a different folder.
1649 <rdar://problem/14219184>.
1651 * JavaScriptCore.vcxproj/JavaScriptCore.make:
1653 2013-06-20 Mark Hahnenberg <mhahnenberg@apple.com>
1655 Improper deallocation of JSManagedValue causes crashes during autorelease pool draining
1656 https://bugs.webkit.org/show_bug.cgi?id=117840
1658 Reviewed by Geoffrey Garen.
1660 Improperly managing a JSManagedValue can cause a crash when the JSC::Weak inside the
1661 JSManagedValue is destroyed upon deallocation. We would rather have improperly maintained
1662 JSManagedValues cause memory leaks than take down the whole app.
1664 The fix is to use the callback to the JSC::Weak on the destruction of the VM so that we
1665 can safely null it out. This will prevent ~Weak from crashing.
1667 * API/JSManagedValue.mm:
1668 (-[JSManagedValue JSC::JSC::]):
1669 (JSManagedValueHandleOwner::finalize):
1670 * API/tests/testapi.mm: Added a test that crashed prior to this fix due to a leaked
1671 managed reference. Also fixed a small style nit I noticed in another test.
1673 2013-06-18 Oliver Hunt <oliver@apple.com>
1675 Going to google.com/trends causes a crash
1676 https://bugs.webkit.org/show_bug.cgi?id=117602
1678 Reviewed by Geoffrey Garen.
1680 When handling op_throw, etc we need to flush the variables and arguments
1681 for the entire inline stack, not just the top frame.
1683 * dfg/DFGByteCodeParser.cpp:
1684 (JSC::DFG::ByteCodeParser::flushAllArgumentsAndCapturedVariablesInInlineStack):
1685 (JSC::DFG::ByteCodeParser::parseBlock):
1687 2013-06-18 Roger Fong <roger_fong@apple.com>
1689 Replace tools32 folder with tools and update WebKit Windows solution accordingly.
1690 <rdar://problem/14118143>.
1692 Rubberstamped by Brent Fulgham.
1694 * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
1695 * JavaScriptCore.vcxproj/JavaScriptCoreDebug.props:
1696 * JavaScriptCore.vcxproj/JavaScriptCoreDebugCFLite.props:
1697 * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj:
1698 * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedDebug.props:
1699 * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedProduction.props:
1700 * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedRelease.props:
1701 * JavaScriptCore.vcxproj/JavaScriptCorePostBuild.cmd:
1702 * JavaScriptCore.vcxproj/JavaScriptCoreProduction.props:
1703 * JavaScriptCore.vcxproj/JavaScriptCoreRelease.props:
1704 * JavaScriptCore.vcxproj/JavaScriptCoreReleaseCFLite.props:
1705 * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj:
1706 * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.vcxproj:
1707 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj:
1708 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.props:
1709 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.props:
1710 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.props:
1711 * JavaScriptCore.vcxproj/jsc/jsc.vcxproj:
1712 * JavaScriptCore.vcxproj/jsc/jscDebug.props:
1713 * JavaScriptCore.vcxproj/jsc/jscProduction.props:
1714 * JavaScriptCore.vcxproj/jsc/jscRelease.props:
1715 * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
1716 * JavaScriptCore.vcxproj/testRegExp/testRegExpDebug.props:
1717 * JavaScriptCore.vcxproj/testRegExp/testRegExpProduction.props:
1718 * JavaScriptCore.vcxproj/testRegExp/testRegExpRelease.props:
1719 * JavaScriptCore.vcxproj/testapi/testapi.vcxproj:
1720 * JavaScriptCore.vcxproj/testapi/testapiDebug.props:
1721 * JavaScriptCore.vcxproj/testapi/testapiDebugCFLite.props:
1722 * JavaScriptCore.vcxproj/testapi/testapiProduction.props:
1723 * JavaScriptCore.vcxproj/testapi/testapiRelease.props:
1724 * JavaScriptCore.vcxproj/testapi/testapiReleaseCFLite.props:
1726 2013-06-17 Roger Fong <roger_fong@apple.com>
1728 Modify Windows makefiles to copy some bin output into Program Files.
1729 https://bugs.webkit.org/show_bug.cgi?id=117714.
1730 <rdar://problem/14179054>
1732 Reviewed by Brent Fulgham.
1734 * JavaScriptCore.vcxproj/JavaScriptCore.make:
1736 2013-06-14 Ryosuke Niwa <rniwa@webkit.org>
1738 Function names on Object.prototype should be common identifiers
1739 https://bugs.webkit.org/show_bug.cgi?id=117614
1741 Reviewed by Darin Adler.
1743 Patch written by Sam Weinig. Make Object's prototype function names common identififers since they're used frequently.
1745 * runtime/CommonIdentifiers.h:
1746 * runtime/FunctionConstructor.cpp:
1747 (JSC::constructFunction):
1748 * runtime/JSGlobalObject.cpp:
1749 (JSC::JSGlobalObject::reset):
1750 * runtime/JSObject.h:
1751 * runtime/ObjectPrototype.cpp:
1752 (JSC::ObjectPrototype::finishCreation):
1753 * runtime/StringPrototype.cpp:
1754 (JSC::StringPrototype::finishCreation):
1756 2013-06-13 Ryosuke Niwa <rniwa@webkit.org>
1758 Remove LiteralIdentifierTable
1759 https://bugs.webkit.org/show_bug.cgi?id=117613
1761 Reviewed by Geoffrey Garen.
1763 Removed LiteralIdentifierTable since it doesn't seem to have any perf. impact now.
1765 * runtime/Identifier.cpp:
1766 (JSC::Identifier::add):
1768 2013-06-12 Conrad Shultz <conrad_shultz@apple.com>
1770 JSExport header documentation substitutes "semicolon" for "colon"
1771 https://bugs.webkit.org/show_bug.cgi?id=117552
1773 Reviewed by Mark Hahnenberg.
1778 2013-06-10 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
1780 [JSC] Remove a vestige of wxWidgets support.
1781 https://bugs.webkit.org/show_bug.cgi?id=117419
1783 Reviewed by Benjamin Poulain.
1785 * runtime/JSExportMacros.h: Remove a check for BUILDING_WX__ that
1786 seems to have gone unnoticed when the wxWidgets port was removed.
1788 2013-06-06 Roger Fong <roger_fong@apple.com>
1790 Stop copying AAS binaries into build folder.
1791 https://bugs.webkit.org/show_bug.cgi?id=117319.
1793 Rubberstamped by Darin Adler.
1795 * JavaScriptCore.vcxproj/JavaScriptCorePreLink.cmd:
1796 * JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd:
1797 * JavaScriptCore.vcxproj/jsc/jscPreLink.cmd:
1798 * JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd:
1799 * JavaScriptCore.vcxproj/testRegExp/testRegExpPreLink.cmd:
1800 * JavaScriptCore.vcxproj/testapi/testapiPreLink.cmd:
1802 2013-06-05 Filip Pizlo <fpizlo@apple.com>
1804 DFG CFA shouldn't filter ArrayModes with ALL_NON_ARRAY_ARRAY_MODES if the speculated type is not SpecArray
1805 https://bugs.webkit.org/show_bug.cgi?id=117279
1806 <rdar://problem/14078025>
1808 Reviewed by Mark Hahnenberg.
1810 * dfg/DFGAbstractValue.h:
1811 (JSC::DFG::AbstractValue::filterArrayModesByType):
1813 2013-06-05 Michael Saboff <msaboff@apple.com>
1815 JSC: Crash beneath cti_op_div @ http://gmailblog.blogspot.com
1816 https://bugs.webkit.org/show_bug.cgi?id=117280
1818 Reviewed by Filip Pizlo.
1820 Updated the merging of VariableAccessData nodes in ArgumentPosition lists
1821 to find the unified VariableAccessData node that is the root of the
1822 current node instead of using the current node directly when merging
1824 Added new dump code to dump the ArgumentPosition list.
1826 * dfg/DFGArgumentPosition.h:
1827 (JSC::DFG::rgumentPosition::mergeArgumentPredictionAwareness):
1828 (JSC::DFG::ArgumentPosition::mergeArgumentUnboxingAwareness):
1829 (JSC::DFG::ArgumentPosition::dump):
1831 (JSC::DFG::Graph::dump):
1833 2013-06-05 Bear Travis <betravis@adobe.com>
1835 [CSS Exclusions][CSS Shapes] Split CSS Exclusions & Shapes compile & runtime flags
1836 https://bugs.webkit.org/show_bug.cgi?id=117172
1838 Reviewed by Alexandru Chiculita.
1840 Adding the CSS_SHAPES compile flag.
1842 * Configurations/FeatureDefines.xcconfig:
1844 2013-06-05 Balazs Kilvady <kilvadyb@homejinni.com>
1846 JSC Assertion tests failures on MIPS.
1847 https://bugs.webkit.org/show_bug.cgi?id=116552
1849 Reviewed by Geoffrey Garen.
1851 Fix condition handlig in branchAdd32 implemetations.
1853 * assembler/MacroAssemblerMIPS.h:
1854 (JSC::MacroAssemblerMIPS::branchAdd32):
1856 2013-06-04 Julien Brianceau <jbrianceau@nds.com>
1858 [sh4] Add floating point absolute function support in baseline JIT.
1859 https://bugs.webkit.org/show_bug.cgi?id=117147
1861 Reviewed by Geoffrey Garen.
1863 * assembler/MacroAssemblerSH4.h:
1864 (JSC::MacroAssemblerSH4::supportsFloatingPointAbs):
1865 (JSC::MacroAssemblerSH4::absDouble):
1866 * assembler/SH4Assembler.h:
1867 (JSC::SH4Assembler::dabs):
1868 (JSC::SH4Assembler::printInstr):
1870 2013-06-04 Zan Dobersek <zdobersek@igalia.com>
1872 [JSC] Test262 15.5.4.9_3 test is failing
1873 https://bugs.webkit.org/show_bug.cgi?id=116789
1875 Reviewed by Geoffrey Garen.
1877 Bring the String.prototype.localeCompare behavior in line wit ES5 15.9.4.9.
1878 If method is not given enough arguments, the minimal amount of arguments must be assumed, with their value being undefined.
1879 The first argument to localeCompare, in its string form, is used as the 'that' string that's used in the comparison.
1880 Therefor, when calling str.localeCompare() or str.localeCompare(undefined), the first argument is `undefined` and the
1881 string "undefined" is used as the string to which value of str is compared.
1883 * runtime/StringPrototype.cpp:
1884 (JSC::stringProtoFuncLocaleCompare): Remove the early return in case of no given arguments to achieve the desired behavior.
1886 2013-06-03 Hojong Han <hojong.han@samsung.com>
1888 [EFL] Implement GCActivityCallback
1889 https://bugs.webkit.org/show_bug.cgi?id=95923
1891 Reviewed by Geoffrey Garen.
1893 Implements the activity triggered garbage collector.
1894 Additional GCs can be triggered by platfrom timer.
1895 It has sort of compaction effect not to make JSC heap grow fast
1896 so that memory usage becomes lower than usual.
1898 * PlatformEfl.cmake: Added.
1899 * heap/HeapTimer.cpp:
1901 (JSC::HeapTimer::HeapTimer):
1902 (JSC::HeapTimer::~HeapTimer):
1903 (JSC::HeapTimer::add):
1904 (JSC::HeapTimer::stop):
1905 (JSC::HeapTimer::timerEvent):
1910 * runtime/GCActivityCallback.cpp:
1912 (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
1913 (JSC::DefaultGCActivityCallback::scheduleTimer):
1914 (JSC::DefaultGCActivityCallback::cancelTimer):
1915 (JSC::DefaultGCActivityCallback::didAllocate):
1916 * runtime/GCActivityCallback.h:
1917 (GCActivityCallback):
1918 (JSC::GCActivityCallback::GCActivityCallback):
1919 (DefaultGCActivityCallback):
1921 2013-06-03 Roger Fong <roger_fong@apple.com>
1923 Nuke VS2005 files from the tree.
1924 <rdar://problem/14042021>.
1926 Rubberstamped by Brent Fulgham.
1928 * JavaScriptCore.vcproj: Removed.
1929 * JavaScriptCore.vcproj/JavaScriptCore: Removed.
1930 * JavaScriptCore.vcproj/JavaScriptCore.make: Removed.
1931 * JavaScriptCore.vcproj/JavaScriptCore.resources: Removed.
1932 * JavaScriptCore.vcproj/JavaScriptCore.resources/Info.plist: Removed.
1933 * JavaScriptCore.vcproj/JavaScriptCore.sln: Removed.
1934 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Removed.
1935 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCF.vsprops: Removed.
1936 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops: Removed.
1937 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Removed.
1938 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebug.vsprops: Removed.
1939 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugAll.vsprops: Removed.
1940 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugCairoCFLite.vsprops: Removed.
1941 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def: Removed.
1942 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Removed.
1943 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Removed.
1944 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Removed.
1945 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebug.vsprops: Removed.
1946 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebugAll.vsprops: Removed.
1947 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebugCairoCFLite.vsprops: Removed.
1948 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedProduction.vsprops: Removed.
1949 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedRelease.vsprops: Removed.
1950 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedReleaseCairoCFLite.vsprops: Removed.
1951 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedReleasePGO.vsprops: Removed.
1952 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePGOOptimize.vsprops: Removed.
1953 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd: Removed.
1954 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd: Removed.
1955 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd: Removed.
1956 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreProduction.vsprops: Removed.
1957 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreRelease.vsprops: Removed.
1958 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseCairoCFLite.vsprops: Removed.
1959 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops: Removed.
1960 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops: Removed.
1961 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Removed.
1962 * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: Removed.
1963 * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Removed.
1964 * JavaScriptCore.vcproj/LLIntAssembly: Removed.
1965 * JavaScriptCore.vcproj/LLIntAssembly/LLIntAssembly.make: Removed.
1966 * JavaScriptCore.vcproj/LLIntAssembly/LLIntAssembly.vcproj: Removed.
1967 * JavaScriptCore.vcproj/LLIntAssembly/build-LLIntAssembly.sh: Removed.
1968 * JavaScriptCore.vcproj/LLIntDesiredOffsets: Removed.
1969 * JavaScriptCore.vcproj/LLIntDesiredOffsets/LLIntDesiredOffsets.make: Removed.
1970 * JavaScriptCore.vcproj/LLIntDesiredOffsets/LLIntDesiredOffsets.vcproj: Removed.
1971 * JavaScriptCore.vcproj/LLIntDesiredOffsets/build-LLIntDesiredOffsets.sh: Removed.
1972 * JavaScriptCore.vcproj/LLIntOffsetsExtractor: Removed.
1973 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcproj: Removed.
1974 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.vsprops: Removed.
1975 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.vsprops: Removed.
1976 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebugAll.vsprops: Removed.
1977 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebugCairoCFLite.vsprops: Removed.
1978 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.vsprops: Removed.
1979 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.vsprops: Removed.
1980 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorReleaseCairoCFLite.vsprops: Removed.
1981 * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorReleasePGO.vsprops: Removed.
1982 * JavaScriptCore.vcproj/jsc: Removed.
1983 * JavaScriptCore.vcproj/jsc/jsc.vcproj: Removed.
1984 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Removed.
1985 * JavaScriptCore.vcproj/jsc/jscDebug.vsprops: Removed.
1986 * JavaScriptCore.vcproj/jsc/jscDebugAll.vsprops: Removed.
1987 * JavaScriptCore.vcproj/jsc/jscDebugCairoCFLite.vsprops: Removed.
1988 * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd: Removed.
1989 * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd: Removed.
1990 * JavaScriptCore.vcproj/jsc/jscPreLink.cmd: Removed.
1991 * JavaScriptCore.vcproj/jsc/jscProduction.vsprops: Removed.
1992 * JavaScriptCore.vcproj/jsc/jscRelease.vsprops: Removed.
1993 * JavaScriptCore.vcproj/jsc/jscReleaseCairoCFLite.vsprops: Removed.
1994 * JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops: Removed.
1995 * JavaScriptCore.vcproj/testRegExp: Removed.
1996 * JavaScriptCore.vcproj/testRegExp/testRegExp.vcproj: Removed.
1997 * JavaScriptCore.vcproj/testRegExp/testRegExpCommon.vsprops: Removed.
1998 * JavaScriptCore.vcproj/testRegExp/testRegExpDebug.vsprops: Removed.
1999 * JavaScriptCore.vcproj/testRegExp/testRegExpDebugAll.vsprops: Removed.
2000 * JavaScriptCore.vcproj/testRegExp/testRegExpDebugCairoCFLite.vsprops: Removed.
2001 * JavaScriptCore.vcproj/testRegExp/testRegExpPostBuild.cmd: Removed.
2002 * JavaScriptCore.vcproj/testRegExp/testRegExpPreBuild.cmd: Removed.
2003 * JavaScriptCore.vcproj/testRegExp/testRegExpPreLink.cmd: Removed.
2004 * JavaScriptCore.vcproj/testRegExp/testRegExpProduction.vsprops: Removed.
2005 * JavaScriptCore.vcproj/testRegExp/testRegExpRelease.vsprops: Removed.
2006 * JavaScriptCore.vcproj/testRegExp/testRegExpReleaseCairoCFLite.vsprops: Removed.
2007 * JavaScriptCore.vcproj/testRegExp/testRegExpReleasePGO.vsprops: Removed.
2008 * JavaScriptCore.vcproj/testapi: Removed.
2009 * JavaScriptCore.vcproj/testapi/testapi.vcproj: Removed.
2010 * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Removed.
2011 * JavaScriptCore.vcproj/testapi/testapiDebug.vsprops: Removed.
2012 * JavaScriptCore.vcproj/testapi/testapiDebugAll.vsprops: Removed.
2013 * JavaScriptCore.vcproj/testapi/testapiDebugCairoCFLite.vsprops: Removed.
2014 * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd: Removed.
2015 * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd: Removed.
2016 * JavaScriptCore.vcproj/testapi/testapiPreLink.cmd: Removed.
2017 * JavaScriptCore.vcproj/testapi/testapiProduction.vsprops: Removed.
2018 * JavaScriptCore.vcproj/testapi/testapiRelease.vsprops: Removed.
2019 * JavaScriptCore.vcproj/testapi/testapiReleaseCairoCFLite.vsprops: Removed.
2021 2013-05-31 Filip Pizlo <fpizlo@apple.com>
2023 Incorrect assertion in DFG::Graph::uncheckedActivationRegisterFor()
2024 <rdar://problem/13989324>
2026 Rubber stamped by Mark Hahnenberg.
2028 This has a bogus assertion that checks that the passed CodeOrigin doesn't have
2029 an inline call frame. This was well intentioned in the sense that it is true
2030 that inlined call frames wouldn't have an activation register. But that doesn't
2031 mean that people won't ask. Removing the assertion fixes a debug-only crash and
2032 has no impact on production code. This change adds a comment to that effect.
2035 (JSC::DFG::Graph::uncheckedActivationRegisterFor):
2037 2013-05-31 Julien Brianceau <jbrianceau@nds.com>
2039 [sh4] Fix Overflow case of branchMul32 in baseline JIT.
2040 https://bugs.webkit.org/show_bug.cgi?id=117057
2042 Reviewed by Oliver Hunt.
2044 Current implementation of Overflow case in branchMul32 performs an
2045 unsigned multiplication whereas a signed multiplication is expected.
2047 * assembler/MacroAssemblerSH4.h:
2048 (JSC::MacroAssemblerSH4::branchMul32):
2050 2013-05-31 Julien Brianceau <jbrianceau@nds.com>
2052 [sh4] Fix floating point comparisons in baseline JIT.
2053 https://bugs.webkit.org/show_bug.cgi?id=117066.
2055 Reviewed by Oliver Hunt.
2057 Current implementation of branchDouble function in baseline JIT is wrong
2058 for some conditions and overkill for others. For instance:
2059 - With DoubleGreaterThanOrEqual condition, branch will be taken if either
2060 operand is NaN with current implementation whereras it should not.
2061 - With DoubleNotEqualOrUnordered condition, performed NaN checks are
2062 useless (because comparison result is false if either operand is NaN).
2064 * assembler/MacroAssemblerSH4.h:
2065 (JSC::MacroAssemblerSH4::branchDouble):
2067 2013-05-31 Julien Brianceau <jbrianceau@nds.com>
2069 [sh4] Fix double floating point transfer in baseline JIT.
2070 https://bugs.webkit.org/show_bug.cgi?id=117054
2072 Reviewed by Oliver Hunt.
2074 In current implementation, dmovRegReg function transfers only one single
2075 FPRegister as PR=1 and SZ=0 in floating point status/control register.
2076 Double transfers must be performed with two fmov.s opcodes.
2078 * assembler/MacroAssemblerSH4.h:
2079 (JSC::MacroAssemblerSH4::moveDouble):
2080 (JSC::MacroAssemblerSH4::addDouble): Handle (op2==dest) case properly.
2081 (JSC::MacroAssemblerSH4::sqrtDouble):
2082 * assembler/SH4Assembler.h:
2083 (JSC::SH4Assembler::fmovsRegReg):
2085 2013-05-31 Julien Brianceau <jbrianceau@nds.com>
2087 [sh4] Handle branchType properly in branchTruncateDoubleToInt32.
2088 https://bugs.webkit.org/show_bug.cgi?id=117062
2090 Reviewed by Oliver Hunt.
2092 Current implementation of branchTruncateDoubleToInt32 is incorrect
2093 when branchType == BranchIfTruncateSuccessful in sh4 baseline JIT.
2095 * assembler/MacroAssemblerSH4.h:
2096 (JSC::MacroAssemblerSH4::branchTruncateDoubleToInt32):
2098 2013-05-31 Brent Fulgham <bfulgham@apple.com>
2100 [Windows] Unreviewed build fix for VS2005 builders.
2102 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def: Add
2103 missing export for WTF::SHA1::computeHexDigest
2105 2013-05-30 David Farler <dfarler@apple.com>
2107 Fix jscore-test when not using --sdk option with jsDriver.pl
2108 https://bugs.webkit.org/show_bug.cgi?id=116339
2110 Reviewed by Joe Pecoraro.
2112 * tests/mozilla/jsDriver.pl:
2114 With each test, the shell_command needs to be started from scratch.
2116 This fix will clear the shell_command and start over as before with
2117 the opt_arch option when not using --sdk with jsDriver.pl.
2119 2013-05-30 Roger Fong <roger_fong@apple.com>
2121 Get rid of JavaScript exports file on AppleWin port.
2122 https://bugs.webkit.org/show_bug.cgi?id=117050.
2124 Reviewed by Darin Adler.
2126 Delete the JavaScriptCoreExportGenerator folder and remove dependencies.
2127 Start linking in WTF.lib now that it's a shared library.
2129 * JavaScriptCore.vcxproj/JavaScriptCore.submit.sln:
2130 * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
2131 * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
2132 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator: Removed.
2133 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj: Removed.
2134 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj.filters: Removed.
2135 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorBuildCmd.cmd: Removed.
2136 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorCommon.props: Removed.
2137 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorDebug.props: Removed.
2138 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPostBuild.cmd: Removed.
2139 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPreBuild.cmd: Removed.
2140 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorProduction.props: Removed.
2141 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorRelease.props: Removed.
2142 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in: Removed.
2143 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/make-export-file-generator: Removed.
2144 * JavaScriptCore.vcxproj/jsc/jscCommon.props:
2145 * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
2146 * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters:
2147 * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
2148 * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
2150 2013-05-22 David Farler <dfarler@apple.com>
2152 Add --sdk option to jsDriver.pl to run with iOS Simulator
2153 https://bugs.webkit.org/show_bug.cgi?id=116339
2155 Reviewed by David Kilzer.
2157 * tests/mozilla/jsDriver.pl:
2159 Prefix shell command with the path to the "sim" tool.
2161 Add -d / --sdk option.
2163 Help message for -d / --sdk option.
2165 2013-05-30 Julien Brianceau <jbrianceau@nds.com>
2167 [sh4] Optimize NaN checks in LLINT for floating point comparisons.
2168 https://bugs.webkit.org/show_bug.cgi?id=117049
2170 Reviewed by Oliver Hunt.
2172 Use the fcmp/eq opcode in sh4 LLINT to test if a double is NaN.
2173 This is more efficient, doesn't require two tmp registers and requires
2174 less code than current implementation (which converts double to float,
2175 then checks 'E = Emax + 1' and 'f != 0').
2177 * offlineasm/sh4.rb:
2179 2013-05-30 Oliver Hunt <oliver@apple.com>
2181 JSCallbackObject does not correctly initialise the PropertySlot for getOwnPropertyDescriptor
2182 https://bugs.webkit.org/show_bug.cgi?id=117053
2184 Reviewed by Mark Hahnenberg.
2186 Set appropriate thisValue on the PropertySlot
2188 * API/JSCallbackObjectFunctions.h:
2189 (JSC::::getOwnPropertyDescriptor):
2190 * API/tests/testapi.mm:
2192 2013-05-29 Jeffrey Pfau <jpfau@apple.com>
2194 [Mac] Enable cache partitioning and the public suffix list on 10.8
2195 <rdar://problem/13679019>
2197 Rubber-stamped by David Kilzer.
2199 * Configurations/FeatureDefines.xcconfig:
2201 2013-05-28 Brent Fulgham <bfulgham@apple.com>
2203 [Windows] Put correct byteCompile symbol in file. Previous version
2204 had an extra 'i' appended to the end.
2206 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
2207 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
2209 2013-05-28 Brent Fulgham <bfulgham@apple.com>
2211 [Windows] Unreviewed build fix. Remove ?byteCompile symbol that
2212 is no longer accessible during link.
2214 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
2215 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
2217 2013-05-28 Gavin Barraclough <barraclough@apple.com>
2219 String(new Date(2010,10,1)) is wrong in KRAT, YAKT
2220 https://bugs.webkit.org/show_bug.cgi?id=106750
2222 Reviewed by Darin Adler.
2224 * runtime/JSDateMath.cpp:
2225 (JSC::msToGregorianDateTime):
2226 - Additional review comment fix.
2228 2013-05-28 Brent Fulgham <bfulgham@apple.com>
2230 [Windows] Unreviewed build fix after r150833
2232 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
2233 A CR/LF combination was lost in the file, combining two symbols.
2235 2013-05-27 Gavin Barraclough <barraclough@apple.com>
2237 String(new Date(2010,10,1)) is wrong in KRAT, YAKT
2238 https://bugs.webkit.org/show_bug.cgi?id=106750
2240 Reviewed by Darin Adler.
2242 First part of a fix, simplfy date handling code, instead of operating separately
2243 on the UTC-standard and standard-DST offsets, just generate a combined UTC-local
2244 offset (this is what we actually need, and what the OS gives us).
2246 * runtime/JSDateMath.cpp:
2247 (JSC::getLocalTimeOffset):
2248 - removed getUTCOffset, converted getDSTOffset -> getLocalTimeOffset
2249 (JSC::gregorianDateTimeToMS):
2250 (JSC::msToGregorianDateTime):
2251 (JSC::parseDateFromNullTerminatedCharacters):
2252 - call getLocalTimeOffset instead of getUTCOffset/getDSTOffset
2254 (JSC::VM::resetDateCache):
2255 - removed cachedUTCOffset, converted DSTOffsetCache -> LocalTimeOffsetCache
2257 (JSC::LocalTimeOffsetCache::LocalTimeOffsetCache):
2258 (JSC::LocalTimeOffsetCache::reset):
2259 (LocalTimeOffsetCache):
2260 - removed cachedUTCOffset, converted DSTOffsetCache -> LocalTimeOffsetCache
2262 2013-05-28 Mark Hahnenberg <mhahnenberg@apple.com>
2264 r150199 is very wrong
2265 https://bugs.webkit.org/show_bug.cgi?id=116876
2267 JSValue needs to protect its internal JSValueRef.
2269 Reviewed by Darin Adler.
2272 (-[JSValue initWithValue:inContext:]):
2273 (-[JSValue dealloc]):
2274 * API/tests/testapi.mm: Added a simple test to make sure that we protect the
2275 underlying JavaScript value across garbage collections.
2277 2013-05-27 Patrick Gansterer <paroga@webkit.org>
2279 Use ICU_INCLUDE_DIRS in BlackBerry CMake files
2280 https://bugs.webkit.org/show_bug.cgi?id=116210
2282 Reviewed by Rob Buis.
2284 Set and use the ICU_INCLUDE_DIRS variable to avoid
2285 duplicated adding of the ICU include directory.
2287 * PlatformBlackBerry.cmake:
2289 2013-05-27 Gabor Rapcsanyi <rgabor@webkit.org>
2291 MacroAssemblerARM should use xor to swap registers instead of move
2292 https://bugs.webkit.org/show_bug.cgi?id=116306
2294 Reviewed by Zoltan Herczeg.
2296 Change register swapping to xor from move and this way we don't need
2297 temporary register anymore.
2299 * assembler/MacroAssemblerARM.h:
2300 (JSC::MacroAssemblerARM::swap):
2302 2013-05-25 Filip Pizlo <fpizlo@apple.com>
2304 We broke (-2^31/-1)|0 in the DFG
2305 https://bugs.webkit.org/show_bug.cgi?id=116767
2307 Reviewed by Andreas Kling.
2309 The bug is that we were assuming that in the -2^31 case, we already had -2^31
2310 in the result register. This was a wrong assumption.
2312 * dfg/DFGSpeculativeJIT.cpp:
2313 (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForX86):
2315 2013-05-24 Filip Pizlo <fpizlo@apple.com>
2318 https://bugs.webkit.org/show_bug.cgi?id=116736
2320 Reviewed by Gavin Barraclough.
2322 * parser/ASTBuilder.h:
2323 (JSC::ASTBuilder::createLogicalNot):
2324 * runtime/JSCJSValueInlines.h:
2325 (JSC::JSValue::pureToBoolean):
2327 2013-05-24 Julien Brianceau <jbrianceau@nds.com>
2329 [sh4] Optimize LLINT generated code and fix few bugs in baseline JIT.
2330 https://bugs.webkit.org/show_bug.cgi?id=116716
2332 Reviewed by Geoffrey Garen.
2334 * assembler/MacroAssemblerSH4.h:
2335 (JSC::MacroAssemblerSH4::mul32): Cosmetic changes.
2336 (JSC::MacroAssemblerSH4::convertInt32ToDouble): Absolute address was not dereferenced.
2337 (JSC::MacroAssemblerSH4::branch32): Absolute address was not dereferenced.
2338 (JSC::MacroAssemblerSH4::revertJumpReplacementToBranchPtrWithPatch): Use all 32 bits of pointer for revertJump call.
2339 * assembler/SH4Assembler.h:
2340 (JSC::SH4Assembler::revertJump): Use changePCrelativeAddress to patch the whole pointer.
2341 (JSC::SH4Assembler::linkJump): Cosmetic change.
2342 * offlineasm/sh4.rb: Optimize LLINT generated code.
2344 2013-05-23 Peter Wang <peter.wang@torchmobile.com.cn>
2346 CLoop llint backend should not use the d8 register as scratch register
2347 https://bugs.webkit.org/show_bug.cgi?id=116019
2349 Reviewed by Csaba Osztrogonác.
2351 * offlineasm/cloop.rb:
2353 2013-05-22 Peter Wang <peter.wang@torchmobile.com.cn>
2355 Use uninitialized register in "JIT::emit_op_neq_null" and "emit_op_eq_null"
2356 https://bugs.webkit.org/show_bug.cgi?id=116593
2358 Reviewed by Filip Pizlo.
2360 Generated instructions using uninitialized register. It's caused by a mistake of r126494.
2362 * jit/JITOpcodes32_64.cpp:
2363 (JSC::JIT::emit_op_eq_null):
2364 (JSC::JIT::emit_op_neq_null):
2366 2013-05-22 Filip Pizlo <fpizlo@apple.com>
2368 Fix indentation of CodeBlock.h
2370 Rubber stampted by Mark Hahnenberg.
2372 * bytecode/CodeBlock.h:
2374 2013-05-22 Julien Brianceau <jbrianceau@nds.com>
2376 [sh4] Remove MacroAssemblerSH4.cpp file.
2377 https://bugs.webkit.org/show_bug.cgi?id=116596.
2379 Reviewed by Geoffrey Garen.
2381 Move linkCall and repatchCall implementations from MacroAssemblerSH4.cpp
2382 to MacroAssemblerSH4.h and remove MacroAssemblerSH4.cpp, as it is done
2383 for other architectures.
2385 * GNUmakefile.list.am:
2386 * JavaScriptCore.xcodeproj/project.pbxproj:
2388 * assembler/MacroAssemblerSH4.cpp: Removed.
2389 * assembler/MacroAssemblerSH4.h:
2390 (JSC::MacroAssemblerSH4::linkCall):
2391 (MacroAssemblerSH4):
2392 (JSC::MacroAssemblerSH4::repatchCall):
2394 2013-05-21 Brent Fulgham <bfulgham@apple.com>
2396 [Windows] Unreviewed speculative fix for test-bots.
2398 Add export declaration for WTFInvokeCrashHook to avoid runtime
2399 load error on test bots.
2401 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
2402 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
2404 2013-05-21 Mark Lam <mark.lam@apple.com>
2406 Added missing assert condition for PositiveOrZero in ARM branch32().
2407 https://bugs.webkit.org/show_bug.cgi?id=116538.
2409 Reviewed by Geoffrey Garen.
2411 * assembler/MacroAssemblerARM.h:
2412 (JSC::MacroAssemblerARM::branchAdd32):
2414 2013-05-20 Mark Hahnenberg <mhahnenberg@apple.com>
2417 https://bugs.webkit.org/show_bug.cgi?id=116362
2419 Rubber stamped by Geoff Garen.
2423 2013-05-20 Oliver Hunt <oliver@apple.com>
2425 Make C API more robust against null contexts
2426 https://bugs.webkit.org/show_bug.cgi?id=116462
2428 Reviewed by Anders Carlsson.
2430 Handle null contexts in a non-crashy way. It's a bug to ever call the
2431 API with a null context, and the absence of a context means we can't
2432 produce a meaningful result, so we still assert in debug builds.
2434 Now where possible we detect and early return, returning null for any
2435 pointer type, NaN for doubles, and false for any boolean result.
2439 (JSCheckScriptSyntax):
2440 (JSReportExtraMemoryCost):
2441 * API/JSContextRef.cpp:
2442 (JSContextGetGlobalObject):
2443 (JSContextGetGroup):
2444 (JSContextGetGlobalContext):
2445 (JSContextCreateBacktrace):
2446 * API/JSObjectRef.cpp:
2448 (JSObjectMakeFunctionWithCallback):
2449 (JSObjectMakeConstructor):
2450 (JSObjectMakeFunction):
2451 (JSObjectMakeArray):
2453 (JSObjectMakeError):
2454 (JSObjectMakeRegExp):
2455 (JSObjectGetPrototype):
2456 (JSObjectSetPrototype):
2457 (JSObjectHasProperty):
2458 (JSObjectGetProperty):
2459 (JSObjectSetProperty):
2460 (JSObjectGetPropertyAtIndex):
2461 (JSObjectSetPropertyAtIndex):
2462 (JSObjectDeleteProperty):
2463 (JSObjectCopyPropertyNames):
2464 * API/JSValueRef.cpp:
2466 (JSValueIsUndefined):
2472 (JSValueIsObjectOfClass):
2474 (JSValueIsStrictEqual):
2475 (JSValueIsInstanceOfConstructor):
2476 (JSValueMakeUndefined):
2478 (JSValueMakeBoolean):
2479 (JSValueMakeNumber):
2480 (JSValueMakeString):
2481 (JSValueMakeFromJSONString):
2482 (JSValueCreateJSONString):
2485 (JSValueToStringCopy):
2488 * API/JSWeakObjectMapRefPrivate.cpp:
2490 2013-05-20 David Kilzer <ddkilzer@apple.com>
2492 Synchronize FeatureDefines.xcconfig
2494 * Configurations/FeatureDefines.xcconfig: Remove
2495 ENABLE_LINK_PRERENDER. This was missed in r150356.
2497 2013-05-19 Anders Carlsson <andersca@apple.com>
2499 Remove link prerendering code
2500 https://bugs.webkit.org/show_bug.cgi?id=116415
2502 Reviewed by Darin Adler.
2504 This code was only used by Chromium and is dead now.
2506 * Configurations/FeatureDefines.xcconfig:
2508 2013-05-18 Patrick Gansterer <paroga@webkit.org>
2510 [CMake] Replace *_LIBRARY_NAME with *_OUTPUT_NAME
2511 https://bugs.webkit.org/show_bug.cgi?id=114554
2513 Reviewed by Gyuyoung Kim.
2515 Using variables as target names is very uncommon in CMake.
2516 The usual way to specify the name of the resulting binary
2517 is to set the OUTPUT_NAME target property.
2520 * shell/CMakeLists.txt:
2522 2013-05-17 Patrick Gansterer <paroga@webkit.org>
2524 [CMake] Remove invalid include paths
2525 https://bugs.webkit.org/show_bug.cgi?id=116213
2527 Reviewed by Gyuyoung Kim.
2529 Since "${JAVASCRIPTCORE_DIR}/wtf" does not exist, it is safe
2530 to remove them from the list of include directories.
2532 * PlatformEfl.cmake: Removed.
2533 * PlatformGTK.cmake: Removed.
2535 2013-05-16 Patrick Gansterer <paroga@webkit.org>
2537 Consolidate lists in JavaScriptCore CMake files
2538 https://bugs.webkit.org/show_bug.cgi?id=115992
2540 Reviewed by Gyuyoung Kim.
2542 Move common files into the CMakeLists.txt to avoid duplicating the list of files.
2543 Also rebase the recently added GTK files to match the other CMake ports, since
2544 the submitted patch was based on an older version of the source tree.
2547 * PlatformEfl.cmake:
2548 * PlatformGTK.cmake:
2549 * shell/CMakeLists.txt:
2550 * shell/PlatformEfl.cmake:
2551 * shell/PlatformGTK.cmake:
2553 2013-05-16 Geoffrey Garen <ggaren@apple.com>
2555 JSValue shouldn't protect/unprotect its context
2556 https://bugs.webkit.org/show_bug.cgi?id=116234
2558 Reviewed by Mark Hahnenberg.
2560 Our retain on _context is sufficient.
2563 (-[JSValue initWithValue:inContext:]):
2564 (-[JSValue dealloc]):
2566 2013-05-15 Ryosuke Niwa <rniwa@webkit.org>
2568 Another Windows build fix attempt after r150160.
2570 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
2571 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
2573 2013-05-15 Oliver Hunt <oliver@apple.com>
2575 RefCountedArray needs to use vector initialisers for its backing store
2576 https://bugs.webkit.org/show_bug.cgi?id=116194
2578 Reviewed by Gavin Barraclough.
2580 Use an out of line function to clear the exception stack to avoid
2581 needing to include otherwise unnecessary headers all over the place.
2583 Everything else is just being updated to use that.
2585 * bytecompiler/BytecodeGenerator.cpp:
2586 * interpreter/CallFrame.h:
2587 (JSC::ExecState::clearSupplementaryExceptionInfo):
2588 * interpreter/Interpreter.cpp:
2589 (JSC::Interpreter::addStackTraceIfNecessary):
2590 (JSC::Interpreter::throwException):
2591 * runtime/JSGlobalObject.cpp:
2592 (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope):
2595 (JSC::VM::clearExceptionStack):
2598 (JSC::VM::exceptionStack):
2600 2013-05-15 Commit Queue <commit-queue@webkit.org>
2602 Unreviewed, rolling out r150051.
2603 http://trac.webkit.org/changeset/150051
2604 https://bugs.webkit.org/show_bug.cgi?id=116186
2606 Broke all JSC tests on Mac and the author is unresponsive
2607 (Requested by rniwa on #webkit).
2609 * JavaScriptCore.xcodeproj/project.pbxproj:
2611 2013-05-15 Julien Brianceau <jbrianceau@nds.com>
2613 Remove savedTimeoutReg from JITStackFrame for sh4 base JIT.
2614 https://bugs.webkit.org/show_bug.cgi?id=116143
2616 Reviewed by Geoffrey Garen.
2618 Since r148119, timeoutCheckRegister is removed from baseline JIT.
2619 So we don't need to save r8 register in JITStackFrame anymore for sh4.
2625 2013-05-15 Nico Weber <thakis@chromium.org>
2627 WebKit doesn't support MSVS2003 any more, remove preprocessor checks for older versions.
2628 https://bugs.webkit.org/show_bug.cgi?id=116157
2630 Reviewed by Anders Carlsson.
2632 Also remove a gcc3.2 workaround.
2634 Merges parts of these two commits by the talented Nico Weber:
2635 https://chromium.googlesource.com/chromium/blink/+/3677e2f47348daeff405a40b6f90fbdf0654c2f5
2636 https://chromium.googlesource.com/chromium/blink/+/0fcd96c448dc30be1416dcc15713c53710c1a312
2638 * os-win32/inttypes.h:
2640 2013-05-13 Alvaro Lopez Ortega <alvaro@alobbs.com>
2642 Nightly build's jsc doesn't work without DYLD_FRAMEWORK...
2643 https://bugs.webkit.org/show_bug.cgi?id=79065
2645 Reviewed by Darin Adler.
2647 Fixes the build process so the depencencies of the jsc binary are
2648 modified before its copied to its target directory. In this way
2649 jsc should always use relative reference to the JavaScriptCore
2652 * JavaScriptCore.xcodeproj/project.pbxproj: Fixes the commands in
2653 the "Copy Into Framework" target.
2655 2013-05-13 Mark Hahnenberg <mhahnenberg@apple.com>
2657 Objective-C API: scanExternalObjectGraph should not create new JSVirtualMachine wrappers
2658 https://bugs.webkit.org/show_bug.cgi?id=116074
2660 If scanExternalObjectGraph creates a new JSVirtualMachine wrapper during collection, when the
2661 scanExternalObjectGraph call finishes and the autorelease pool is drained we will dealloc the
2662 JSVirtualMachine which will cause us to try to take the API lock for the corresponding VM.
2663 If this happens on a GC thread other than the "main" thread, we will deadlock. The solution
2664 is to just check the VM cache, and if there is no JSVirtualMachine wrapper, return early.
2666 Reviewed by Darin Adler.
2668 * API/JSVirtualMachine.mm:
2669 (scanExternalObjectGraph):
2671 2013-05-13 Benjamin Poulain <benjamin@webkit.org>
2673 Improve stringProtoFuncLastIndexOf for the prefix case
2674 https://bugs.webkit.org/show_bug.cgi?id=115952
2676 Reviewed by Geoffrey Garen.
2678 * runtime/StringPrototype.cpp:
2679 (JSC::stringProtoFuncLastIndexOf):
2680 Use the optimized string search when possible.
2682 On Joseph Pecoraro's tests, this gives a ~30% speed improvement.
2684 2013-05-13 Zalan Bujtas <zalan@apple.com>
2686 WebProcess consuming very high CPU on linkedin.com
2687 https://bugs.webkit.org/show_bug.cgi?id=115601
2689 Reviewed by Andreas Kling.
2691 Disable WEB_TIMING_MINIMAL.
2692 Turn off window.performance and performance.now(). Some JS frameworks expect
2693 additional Web Timing APIs, when performance.now() is available.
2695 * Configurations/FeatureDefines.xcconfig:
2697 2013-05-12 Anders Carlsson <andersca@apple.com>
2699 Stop including UnusedParam.h
2700 https://bugs.webkit.org/show_bug.cgi?id=116003
2702 Reviewed by Sam Weinig.
2704 UnusedParam.h is empty now so there's no need to include it anymore.
2707 * API/tests/JSNode.c:
2708 * API/tests/JSNodeList.c:
2709 * API/tests/minidom.c:
2710 * API/tests/testapi.c:
2711 * assembler/AbstractMacroAssembler.h:
2712 * assembler/MacroAssemblerCodeRef.h:
2713 * bytecode/CodeBlock.cpp:
2714 * heap/HandleStack.h:
2715 * interpreter/JSStackInlines.h:
2716 * jit/CompactJITCodeMap.h:
2717 * jit/ExecutableAllocator.h:
2718 * parser/SourceProvider.h:
2719 * runtime/DatePrototype.cpp:
2720 * runtime/JSNotAnObject.cpp:
2721 * runtime/JSSegmentedVariableObject.h:
2722 * runtime/JSVariableObject.h:
2723 * runtime/Options.cpp:
2724 * runtime/PropertyOffset.h:
2726 2013-05-11 Martin Robinson <mrobinson@igalia.com>
2728 [GTK] Add a basic cmake build for WTF and JavaScriptCore
2729 https://bugs.webkit.org/show_bug.cgi?id=115967
2731 Reviewed by Laszlo Gombos.
2733 * PlatformGTK.cmake: Added.
2734 * shell/PlatformGTK.cmake: Added.
2736 2013-05-10 Laszlo Gombos <l.gombos@samsung.com>
2738 Remove USE(OS_RANDOMNESS)
2739 https://bugs.webkit.org/show_bug.cgi?id=108095
2741 Reviewed by Darin Adler.
2743 Remove the USE(OS_RANDOMNESS) guard as it is turned on for all
2749 2013-05-10 Mark Hahnenberg <mhahnenberg@apple.com>
2751 Rename StructureCheckHoistingPhase to TypeCheckHoistingPhase
2752 https://bugs.webkit.org/show_bug.cgi?id=115938
2754 We're going to add some more types of check hoisting soon, so let's have the right name here.
2756 Rubber stamped by Filip Pizlo.
2759 * GNUmakefile.list.am:
2760 * JavaScriptCore.xcodeproj/project.pbxproj:
2762 * dfg/DFGDriver.cpp:
2763 (JSC::DFG::compile):
2764 * dfg/DFGStructureCheckHoistingPhase.cpp: Removed.
2765 * dfg/DFGStructureCheckHoistingPhase.h: Removed.
2766 * dfg/DFGTypeCheckHoistingPhase.cpp: Copied from Source/JavaScriptCore/dfg/DFGStructureCheckHoistingPhase.cpp.
2767 (JSC::DFG::TypeCheckHoistingPhase::TypeCheckHoistingPhase):
2768 (JSC::DFG::performTypeCheckHoisting):
2769 * dfg/DFGTypeCheckHoistingPhase.h: Copied from Source/JavaScriptCore/dfg/DFGStructureCheckHoistingPhase.h.
2771 2013-05-09 Christophe Dumez <ch.dumez@sisa.samsung.com>
2773 Unreviewed build fix after r149836.
2775 It broke at least EFL and GTK builds. Move new static members initialization
2776 outside the class. Those need to have a definition outside the class because
2777 their address is used (e.g. CodeCacheMap::nonGlobalWorkingSetMaxEntries).
2779 * runtime/CodeCache.cpp:
2781 * runtime/CodeCache.h:
2784 2013-05-08 Oliver Hunt <oliver@apple.com>
2786 Code cache stores bogus var references for functions in eval code
2787 https://bugs.webkit.org/show_bug.cgi?id=115747
2789 Reviewed by Mark Hahnenberg.
2791 Non-global eval now uses a per-CodeBlock cache, and only use it
2792 when we're at the top of a function's scope. This means that we
2793 will no longer cache the parsing of a single string across
2794 multiple functions, and we won't cache when we're nested inside
2795 constructs like |with| and |catch| where previously we would, which
2796 is good because caching in those cases is unsound.
2798 * bytecode/EvalCodeCache.h:
2800 (JSC::EvalCodeCache::getSlow):
2801 (JSC::EvalCodeCache::get):
2802 * bytecode/UnlinkedCodeBlock.h:
2803 (JSC::UnlinkedCodeBlock::codeCacheForEval):
2804 (UnlinkedCodeBlock):
2806 * debugger/Debugger.cpp:
2807 (JSC::evaluateInGlobalCallFrame):
2808 * debugger/DebuggerCallFrame.cpp:
2809 (JSC::DebuggerCallFrame::evaluate):
2810 * interpreter/Interpreter.cpp:
2812 * runtime/CodeCache.cpp:
2813 (JSC::CodeCache::CodeCache):
2814 (JSC::CodeCache::generateBytecode):
2816 (JSC::CodeCache::getCodeBlock):
2817 * runtime/CodeCache.h:
2818 (JSC::CodeCacheMap::CodeCacheMap):
2820 (JSC::CodeCacheMap::canPruneQuickly):
2821 (JSC::CodeCacheMap::prune):
2822 (JSC::CodeCache::create):
2824 * runtime/Executable.cpp:
2825 (JSC::EvalExecutable::EvalExecutable):
2826 (JSC::EvalExecutable::compileInternal):
2827 * runtime/Executable.h:
2828 (JSC::EvalExecutable::create):
2830 * runtime/JSGlobalObject.cpp:
2831 (JSC::JSGlobalObject::createEvalCodeBlock):
2832 * runtime/JSGlobalObject.h:
2834 * runtime/JSGlobalObjectFunctions.cpp:
2835 (JSC::globalFuncEval):
2841 2013-05-08 Mark Hahnenberg <mhahnenberg@apple.com>
2843 DFGArrayMode::fromObserved is too liberal when it sees different Array and NonArray shapes
2844 https://bugs.webkit.org/show_bug.cgi?id=115805
2846 Reviewed by Geoffrey Garen.
2848 It checks the observed ArrayModes to see if we have seen any ArrayWith* first. If so, it assumes it's
2849 an Array::Array, even if we've also observed any NonArrayWith* in the ArrayProfile. This leads to the
2850 code generated by jumpSlowForUnwantedArrayMode to check the indexing type against (shape | IsArray)
2851 instead of just shape, which can cause us to exit a lot in the case that we saw a NonArray.
2853 To fix this we need to add a case that checks for both ArrayWith* and NonArrayWith* cases first, which
2854 should then use Array::PossiblyArray, then do the checks we were already doing.
2856 * bytecode/ArrayProfile.h:
2857 (JSC::hasSeenArray):
2858 (JSC::hasSeenNonArray):
2859 * dfg/DFGArrayMode.cpp:
2860 (JSC::DFG::ArrayMode::fromObserved):
2862 2013-05-09 Joe Mason <jmason@blackberry.com>
2864 [BlackBerry] Set up logging buffer on start of jsc executable
2865 https://bugs.webkit.org/show_bug.cgi?id=114688
2867 Reviewed by Rob Buis.
2870 Internally Reviewed By: Jeff Rogers
2873 (main): call BB::Platform::setupApplicationLogging
2875 2013-05-08 Michael Saboff <msaboff@apple.com>
2877 JSC: There should be a disassembler for ARM Thumb 2
2878 https://bugs.webkit.org/show_bug.cgi?id=115827
2880 Reviewed by Filip Pizlo.
2882 Added a new disassembler for ARMv7 Thumb2 instructions for use by the JSC debugging
2883 and profiling code. The opcode coverage is currently not complete. It covers all
2884 of the integer instructions JSC currently emits, but only a limited number of
2885 floating point opcodes. Currently that is just the 64 bit vmov and vmsr instructions.
2887 The disassembler is structured as a base opcode class ARMv7DOpcode with sub-classes
2888 for each instruction group. There is a public format method that does the bulk of
2889 the disassembly work. There are two broad sub-classes, ARMv7D16BitOpcode and
2890 ARMv7D32BitOpcode, for the 16 bit and 32 bit opcodes. There are sub-classes under
2891 those two classes for individual and related groups of opcodes. Instructions are
2892 "dispatched" to the right subclass via two arrays of linked lists in the inner classes
2893 OpcodeGroup. There is one such inner class for each ARMv7D16BitOpcode and ARMv7D32BitOpcode.
2894 Each OpcodeGroup has a mask and a pattern that it applies to the instruction to determine
2895 that it matches a particular group. OpcodeGroup uses a static method to reinterpret_cast
2896 the Opcode object to the right base class for the instruction group for formatting.
2897 The cast eliminates the need of allocating an object for each decoded instruction.
2898 Unknown instructions are formatted as ".word 1234" or ".long 12345678" depending whether
2899 the instruction is 16 or 32 bit.
2901 * JavaScriptCore.xcodeproj/project.pbxproj:
2902 * disassembler/ARMv7: Added.
2903 * disassembler/ARMv7/ARMv7DOpcode.cpp: Added.
2904 (ARMv7Disassembler):
2905 (OpcodeGroupInitializer):
2906 (JSC::ARMv7Disassembler::ARMv7DOpcode::init):
2907 (JSC::ARMv7Disassembler::ARMv7DOpcode::startITBlock):
2908 (JSC::ARMv7Disassembler::ARMv7DOpcode::saveITConditionAt):
2909 (JSC::ARMv7Disassembler::ARMv7DOpcode::fetchOpcode):
2910 (JSC::ARMv7Disassembler::ARMv7DOpcode::disassemble):
2911 (JSC::ARMv7Disassembler::ARMv7DOpcode::bufferPrintf):
2912 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendInstructionName):
2913 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendRegisterName):
2914 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendRegisterList):
2915 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendFPRegisterName):
2916 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::init):
2917 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::doDisassemble):
2918 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::defaultFormat):
2919 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::format):
2920 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::format):
2921 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::format):
2922 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::format):
2923 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::format):
2924 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::format):
2925 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::format):
2926 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchT2::format):
2927 (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::format):
2928 (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT1::format):
2929 (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::format):
2930 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::format):
2931 (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::format):
2932 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::format):
2933 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::format):
2934 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::format):
2935 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::format):
2936 (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::format):
2937 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::format):
2938 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscBreakpointT1::format):
2939 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::format):
2940 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::format):
2941 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::format):
2942 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::format):
2943 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::format):
2944 (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::format):
2945 (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::format):
2946 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::init):
2947 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::doDisassemble):
2948 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::defaultFormat):
2949 (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::format):
2950 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::format):
2951 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::appendModifiedImmediate):
2952 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::format):
2953 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::appendImmShift):
2954 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::format):
2955 (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::format):
2956 (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::appendFPRegister):
2957 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegShift::format):
2958 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::format):
2959 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegParallel::format):
2960 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegMisc::format):
2961 (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::format):
2962 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadRegister::format):
2963 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::format):
2964 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadUnsignedImmediate::format):
2965 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::format):
2966 (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::format):
2967 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::format):
2968 (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate12::format):
2969 (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::format):
2970 (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleRegister::format):
2971 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::format):
2972 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::format):
2973 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::format):
2974 * disassembler/ARMv7/ARMv7DOpcode.h: Added.
2975 (ARMv7Disassembler):
2977 (JSC::ARMv7Disassembler::ARMv7DOpcode::ARMv7DOpcode):
2978 (JSC::ARMv7Disassembler::ARMv7DOpcode::is32BitInstruction):
2979 (JSC::ARMv7Disassembler::ARMv7DOpcode::isFPInstruction):
2980 (JSC::ARMv7Disassembler::ARMv7DOpcode::conditionName):
2981 (JSC::ARMv7Disassembler::ARMv7DOpcode::shiftName):
2982 (JSC::ARMv7Disassembler::ARMv7DOpcode::inITBlock):
2983 (JSC::ARMv7Disassembler::ARMv7DOpcode::startingITBlock):
2984 (JSC::ARMv7Disassembler::ARMv7DOpcode::endITBlock):
2985 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendInstructionNameNoITBlock):
2986 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendSeparator):
2987 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendCharacter):
2988 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendString):
2989 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendShiftType):
2990 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendSignedImmediate):
2991 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendUnsignedImmediate):
2992 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendPCRelativeOffset):
2993 (JSC::ARMv7Disassembler::ARMv7DOpcode::appendShiftAmount):
2994 (ARMv7D16BitOpcode):
2996 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::OpcodeGroup):
2997 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::setNext):
2998 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::next):
2999 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::matches):
3000 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::format):
3001 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::rm):
3002 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::rd):
3003 (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::opcodeGroupNumber):
3004 (ARMv7DOpcodeAddRegisterT2):
3005 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::rdn):
3006 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::rm):
3007 (ARMv7DOpcodeAddSPPlusImmediate):
3008 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::rd):
3009 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::immediate8):
3010 (ARMv7DOpcodeAddSubtract):
3011 (ARMv7DOpcodeAddSubtractT1):
3012 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::opName):
3013 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::op):
3014 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::rm):
3015 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::rn):
3016 (ARMv7DOpcodeAddSubtractImmediate3):
3017 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::opName):
3018 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::op):
3019 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::immediate3):
3020 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::rn):
3021 (ARMv7DOpcodeAddSubtractImmediate8):
3022 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::opName):
3023 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::op):
3024 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::rdn):
3025 (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::immediate8):
3026 (ARMv7DOpcodeBranchConditionalT1):
3027 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::condition):
3028 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::offset):
3029 (ARMv7DOpcodeBranchExchangeT1):
3030 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::opName):
3031 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::rm):
3032 (ARMv7DOpcodeBranchT2):
3033 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchT2::immediate11):
3034 (ARMv7DOpcodeCompareImmediateT1):
3035 (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::rn):
3036 (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::immediate8):
3037 (ARMv7DOpcodeCompareRegisterT1):
3038 (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT1::rn):
3039 (ARMv7DOpcodeCompareRegisterT2):
3040 (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::rn):
3041 (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::rm):
3042 (ARMv7DOpcodeDataProcessingRegisterT1):
3043 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::opName):
3044 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::op):
3045 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::rm):
3046 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::rdn):
3047 (ARMv7DOpcodeGeneratePCRelativeAddress):
3048 (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::rd):
3049 (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::immediate8):
3050 (ARMv7DOpcodeLoadFromLiteralPool):
3051 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::rt):
3052 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::immediate8):
3053 (ARMv7DOpcodeLoadStoreRegisterImmediate):
3054 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::opName):
3055 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::op):
3056 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::immediate5):
3057 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::rn):
3058 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::rt):
3059 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::scale):
3060 (ARMv7DOpcodeLoadStoreRegisterImmediateWordAndByte):
3061 (ARMv7DOpcodeLoadStoreRegisterImmediateHalfWord):
3062 (ARMv7DOpcodeLoadStoreRegisterOffsetT1):
3063 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::opName):
3064 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::opB):
3065 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rm):
3066 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rn):
3067 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rt):
3068 (ARMv7DOpcodeLoadStoreRegisterSPRelative):
3069 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::opName):
3070 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::op):
3071 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::rt):
3072 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::immediate8):
3073 (ARMv7DOpcodeLogicalImmediateT1):
3074 (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::opName):
3075 (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::op):
3076 (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::immediate5):
3077 (ARMv7DOpcodeMiscAddSubSP):
3078 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::opName):
3079 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::op):
3080 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::immediate7):
3081 (ARMv7DOpcodeMiscByteHalfwordOps):
3082 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::opName):
3083 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::op):
3084 (ARMv7DOpcodeMiscBreakpointT1):
3085 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscBreakpointT1::immediate8):
3086 (ARMv7DOpcodeMiscCompareAndBranch):
3087 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::opName):
3088 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::op):
3089 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::immediate6):
3090 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::rn):
3091 (ARMv7DOpcodeMiscHint16):
3092 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::opName):
3093 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::opA):
3094 (ARMv7DOpcodeMiscIfThenT1):
3095 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::firstCondition):
3096 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::mask):
3097 (ARMv7DOpcodeMiscPushPop):
3098 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::opName):
3099 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::op):
3100 (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::registerMask):
3101 (ARMv7DOpcodeMoveImmediateT1):
3102 (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::rd):
3103 (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::immediate8):
3104 (ARMv7DOpcodeMoveRegisterT1):
3105 (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::rd):
3106 (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::rm):
3107 (ARMv7D32BitOpcode):
3108 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::OpcodeGroup):
3109 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::setNext):
3110 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::next):
3111 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::matches):
3112 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::format):
3113 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rd):
3114 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rm):
3115 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rn):
3116 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rt):
3117 (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::opcodeGroupNumber):
3118 (ARMv7DOpcodeBranchRelative):
3119 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::sBit):
3120 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::j1):
3121 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::j2):
3122 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::immediate11):
3123 (ARMv7DOpcodeConditionalBranchT3):
3124 (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::offset):
3125 (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::condition):
3126 (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::immediate6):
3127 (ARMv7DOpcodeBranchOrBranchLink):
3128 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::offset):
3129 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::immediate10):
3130 (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::isBL):
3131 (ARMv7DOpcodeDataProcessingLogicalAndRithmetic):
3132 (ARMv7DOpcodeDataProcessingModifiedImmediate):
3133 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::opName):
3134 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::op):
3135 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::sBit):
3136 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::immediate12):
3137 (ARMv7DOpcodeDataProcessingShiftedReg):
3138 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::opName):
3139 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::sBit):
3140 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::op):
3141 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::immediate5):
3142 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::type):
3143 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::tbBit):
3144 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::tBit):
3145 (ARMv7DOpcodeDataProcessingReg):
3146 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingReg::op1):
3147 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingReg::op2):
3148 (ARMv7DOpcodeDataProcessingRegShift):
3149 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegShift::opName):
3150 (ARMv7DOpcodeDataProcessingRegExtend):
3151 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::opExtendName):
3152 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::opExtendAndAddName):
3153 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::rotate):
3154 (ARMv7DOpcodeDataProcessingRegParallel):
3155 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegParallel::opName):
3156 (ARMv7DOpcodeDataProcessingRegMisc):
3157 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegMisc::opName):
3158 (ARMv7DOpcodeHint32):
3159 (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::opName):
3160 (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::isDebugHint):
3161 (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::debugOption):
3162 (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::op):
3163 (ARMv7DOpcodeFPTransfer):
3164 (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opH):
3165 (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opL):
3166 (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::rt):
3167 (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opC):
3168 (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opB):
3169 (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::vd):
3170 (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::vn):
3171 (ARMv7DOpcodeDataLoad):
3172 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataLoad::opName):
3173 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataLoad::op):
3174 (ARMv7DOpcodeLoadRegister):
3175 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadRegister::immediate2):
3176 (ARMv7DOpcodeLoadSignedImmediate):
3177 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::pBit):
3178 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::uBit):
3179 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::wBit):
3180 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::immediate8):
3181 (ARMv7DOpcodeLoadUnsignedImmediate):
3182 (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadUnsignedImmediate::immediate12):
3183 (ARMv7DOpcodeLongMultipleDivide):
3184 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::opName):
3185 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlalOpName):
3186 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlaldOpName):
3187 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlsldOpName):
3188 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::rdLo):
3189 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::rdHi):
3190 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::op1):
3191 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::op2):
3192 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::nBit):
3193 (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::mBit):
3194 (ARMv7DOpcodeDataPushPopSingle):
3195 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::opName):
3196 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::op):
3197 (ARMv7DOpcodeDataStoreSingle):
3198 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataStoreSingle::opName):
3199 (JSC::ARMv7Disassembler::ARMv7DOpcodeDataStoreSingle::op):
3200 (ARMv7DOpcodeStoreSingleImmediate12):
3201 (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate12::immediate12):
3202 (ARMv7DOpcodeStoreSingleImmediate8):
3203 (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::pBit):
3204 (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::uBit):
3205 (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::wBit):
3206 (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::immediate8):
3207 (ARMv7DOpcodeStoreSingleRegister):
3208 (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleRegister::immediate2):
3209 (ARMv7DOpcodeUnmodifiedImmediate):
3210 (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::opName):
3211 (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::op):
3212 (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::shBit):
3213 (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::bitNumOrSatImmediate):
3214 (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate5):
3215 (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate12):
3216 (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate16):
3217 (ARMv7DOpcodeVMOVDoublePrecision):
3218 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::op):
3219 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::rt2):
3220 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::rt):
3221 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::vm):
3222 (ARMv7DOpcodeVMOVSinglePrecision):
3223 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::op):
3224 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::rt2):
3225 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::rt):
3226 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::vm):
3228 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::opL):
3229 (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::rt):
3230 * disassembler/ARMv7Disassembler.cpp: Added.
3231 (JSC::tryToDisassemble):
3233 2013-05-07 Julien Brianceau <jbrianceau@nds.com>
3235 Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT.
3236 https://bugs.webkit.org/show_bug.cgi?id=115722
3238 Reviewed by Oliver Hunt.
3240 * assembler/MacroAssemblerSH4.h:
3241 (JSC::MacroAssemblerSH4::load8PostInc):
3242 (MacroAssemblerSH4):
3243 (JSC::MacroAssemblerSH4::load16Unaligned):
3244 (JSC::MacroAssemblerSH4::load16PostInc):
3245 (JSC::MacroAssemblerSH4::storeDouble):
3246 (JSC::MacroAssemblerSH4::load32WithUnalignedHalfWords):
3247 * assembler/SH4Assembler.h:
3248 (JSC::SH4Assembler::movwMemRegIn):
3250 (JSC::SH4Assembler::movbMemRegIn):
3251 (JSC::SH4Assembler::printInstr):
3253 2013-05-07 Anders Carlsson <andersca@apple.com>
3255 Remove AlwaysInline.h from WTF
3256 https://bugs.webkit.org/show_bug.cgi?id=115727
3258 Reviewed by Brent Fulgham.
3260 The macro that used to be in AlwaysInline.h is now in Compiler.h so there's no reason
3261 to keep AlwaysInline.h around anymore.
3263 * jit/JSInterfaceJIT.h:
3265 * runtime/JSCJSValue.h:
3266 * runtime/SymbolTable.h:
3268 2013-05-07 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
3270 HashTraits<RefPtr<P> >::PeekType should be raw pointer for better performance
3271 https://bugs.webkit.org/show_bug.cgi?id=115646
3273 Reviewed by Darin Adler.
3275 * bytecompiler/StaticPropertyAnalyzer.h:
3276 (JSC::StaticPropertyAnalyzer::putById):
3277 Updated accordingly to new HashMap<.., RefPtr>::get() semantics.
3279 2013-05-06 Julien Brianceau <jbrianceau@nds.com>
3281 Misc bugfix and cleaning in sh4 base JIT.
3282 https://bugs.webkit.org/show_bug.cgi?id=115627
3284 Reviewed by Oliver Hunt.
3286 Get rid of loadX(RegisterID r0, RegisterID src, RegisterID dest) functions.
3287 Remove misplaced extuw() implementation from MacroAssemblerSH4.
3288 Add movbRegMemr0 and movwRegMemr0 functions in SH4Assembler.
3290 * assembler/MacroAssemblerSH4.h:
3291 (JSC::MacroAssemblerSH4::add32): Skip operation when first operand is a zero immediate.
3292 (JSC::MacroAssemblerSH4::sub32): Skip operation when first operand is a zero immediate.
3293 (JSC::MacroAssemblerSH4::load32): Fix wrong usage of r0 register.
3294 (JSC::MacroAssemblerSH4::load8Signed): Handle "base == r0" case.
3295 (MacroAssemblerSH4):
3296 (JSC::MacroAssemblerSH4::load16): Handle "base == r0" case.
3297 (JSC::MacroAssemblerSH4::load16Unaligned): Use extuw() implementation from SH4Assembler.
3298 (JSC::MacroAssemblerSH4::load16Signed): Cosmetic change.
3299 (JSC::MacroAssemblerSH4::store8): Fix unhandled BaseIndex offset and handle (base == r0) case.
3300 (JSC::MacroAssemblerSH4::store16): Fix unhandled BaseIndex offset and handle (base == r0) case.
3301 (JSC::MacroAssemblerSH4::store32):
3302 * assembler/SH4Assembler.h:
3303 (JSC::SH4Assembler::movwRegMemr0):
3305 (JSC::SH4Assembler::movbRegMemr0):
3306 (JSC::SH4Assembler::placeConstantPoolBarrier): Cosmetic change.
3307 (JSC::SH4Assembler::maxJumpReplacementSize):
3308 (JSC::SH4Assembler::replaceWithJump): Correct branch range and save an opcode.
3309 (JSC::SH4Assembler::printInstr):
3311 2013-05-06 Anders Carlsson <andersca@apple.com>
3313 Stop using WTF::deleteAllValues in JavaScriptCore
3314 https://bugs.webkit.org/show_bug.cgi?id=115670
3316 Reviewed by Oliver Hunt.
3318 Change the Vectors used to Vectors of OwnPtrs instead.
3320 * heap/DFGCodeBlocks.cpp:
3321 (JSC::DFGCodeBlocks::~DFGCodeBlocks):
3322 (JSC::DFGCodeBlocks::deleteUnmarkedJettisonedCodeBlocks):
3324 2013-05-06 Andras Becsi <andras.becsi@digia.com>
3326 Build with GCC 4.8 fails because of -Wmaybe-uninitialized
3327 https://bugs.webkit.org/show_bug.cgi?id=115648
3329 Reviewed by Michael Saboff.
3331 Initialize values in Options::setOption since from
3332 there we end up calling OptionRange::init with
3333 uninitialized members.
3335 * runtime/Options.cpp:
3337 2013-05-06 Gabor Rapcsanyi <rgabor@webkit.org>
3339 JSC ARM traditional failing on Octane NavierStokes test
3340 https://bugs.webkit.org/show_bug.cgi?id=115626
3342 Reviewed by Zoltan Herczeg.
3344 Change the ARM traditional assembler to use double precision on value
3347 * assembler/ARMAssembler.h:
3349 2013-05-03 Michael Saboff <msaboff@apple.com>
3351 There should be a runtime option to constrain what functions get DFG compiled
3352 https://bugs.webkit.org/show_bug.cgi?id=115576
3354 Reviewed by Mark Hahnenberg.
3356 Added OptionRange to Options to allow checking that something is within an option
3357 or not. The new OptionClass supports range strings in the form of [!]<low>[:<high>].
3358 If only one value is given, then it will be used for both low and high. A leading
3359 '!' inverts the check. If no range is given, then checking for a value within a range
3360 will always return true. Added the option "bytecodeRangeToDFGCompile" that takes an
3361 OptionRange string to select the bytecode range of code blocks to DFG compile.
3363 * dfg/DFGDriver.cpp:
3364 (JSC::DFG::compile): Added new check for bytecode count within bytecodeRangeToDFGCompile
3366 * runtime/Options.cpp:
3367 (JSC::parse): Added overloaded parse() for OptionRange.
3368 (JSC::OptionRange::init): Parse range string and then initialize the range.
3369 (JSC::OptionRange::isInRange): Function used by consumer to check if a value is within
3370 the specified range.
3371 (JSC::Options::dumpOption): Added code to dump OptionRange options.
3372 * runtime/Options.h:
3373 (OptionRange): New class.
3374 (JSC::OptionRange::operator= ): This is really used as a default ctor for use within
3375 the Option static array initialization.
3376 (JSC::OptionRange::rangeString): This is used for debug. It assumes that the char*
3377 passed into OptionRange::init is valid when this function is called.
3379 2013-05-02 Oliver Hunt <oliver@apple.com>
3381 Fix potential bug in lookup logic
3382 https://bugs.webkit.org/show_bug.cgi?id=115522
3384 Reviewed by Mark Hahnenberg.
3386 Though not a problem in practise, it is technically possible
3387 to inject an un-proxied global object into the scope chain
3388 via the C API. This change makes sure that the scope walk
3389 in BytecodeGenerator actually limits itself to scopes that
3390 are statically bindable.
3392 * bytecompiler/BytecodeGenerator.cpp:
3393 (JSC::BytecodeGenerator::resolve):
3394 * runtime/JSObject.h:
3397 (JSC::JSObject::isStaticScopeObject):
3399 2013-05-01 Roger Fong <roger_fong@apple.com>
3401 Set Path in makefile for AppleWin.
3403 * JavaScriptCore.vcxproj/JavaScriptCore.make:
3405 2013-05-01 Benjamin Poulain <benjamin@webkit.org>
3407 Remove the remaining wscript
3408 https://bugs.webkit.org/show_bug.cgi?id=115459
3410 Reviewed by Andreas Kling.
3414 2013-04-30 Mark Lam <mark.lam@apple.com>
3416 JSContextGroupSetExecutionTimeLimit() should not pass a callback to the
3417 VM watchdog if its client did not pass one in.
3418 https://bugs.webkit.org/show_bug.cgi?id=115461.
3420 Reviewed by Geoffrey Garen.
3422 * API/JSContextRef.cpp:
3423 (internalScriptTimeoutCallback):
3424 (JSContextGroupSetExecutionTimeLimit):
3425 * API/tests/testapi.c:
3427 - Added test case when the time limit callback is 0.
3428 - Also updated a check to verify that a TerminatedExecutionException is
3429 thrown when the time out is cancelled.
3430 - Also fixed some cosmetic typos.
3432 2013-04-30 Geoffrey Garen <ggaren@apple.com>
3434 Removed op_ensure_property_exists
3435 https://bugs.webkit.org/show_bug.cgi?id=115460
3437 Reviewed by Mark Hahnenberg.
3439 It was unused, and whatever it was once used for was not optimized.
3441 * JavaScriptCore.order:
3442 * bytecode/CodeBlock.cpp:
3443 (JSC::CodeBlock::dumpBytecode):
3444 * bytecode/Opcode.h:
3445 (JSC::padOpcodeName):
3447 (JSC::JIT::privateCompileMainPass):
3449 * jit/JITOpcodes.cpp:
3450 * jit/JITOpcodes32_64.cpp:
3453 * llint/LLIntSlowPaths.cpp:
3454 * llint/LLIntSlowPaths.h:
3455 * llint/LowLevelInterpreter.asm:
3457 2013-04-30 Oliver Hunt <oliver@apple.com>
3459 JSC Stack walking logic craches in the face of inlined functions triggering VM re-entry
3460 https://bugs.webkit.org/show_bug.cgi?id=115449
3462 Reviewed by Geoffrey Garen.
3464 Rename callframeishost to something that makes sense, and fix
3465 getCallerInfo to correctly handle inline functions calling into
3468 * bytecode/CodeBlock.cpp:
3469 (JSC::CodeBlock::codeOriginForReturn):
3470 Make this more robust in the face of incorrect stack walking
3471 * interpreter/CallFrame.cpp:
3472 (JSC::CallFrame::trueCallerFrame):
3473 Everyone has to perform a codeblock() check before calling this
3474 so we might as well just do it here.
3475 * interpreter/Interpreter.cpp:
3476 (JSC::getCallerInfo):
3478 2013-04-30 Julien Brianceau <jbrianceau@nds.com>
3480 Bug fixing in sh4 base JIT and LLINT.
3481 https://bugs.webkit.org/show_bug.cgi?id=115420
3483 Reviewed by Oliver Hunt.
3485 * assembler/MacroAssemblerSH4.h:
3486 (JSC::MacroAssemblerSH4::lshift32):
3487 (JSC::MacroAssemblerSH4::rshift32):
3488 (JSC::MacroAssemblerSH4::branchMul32):
3489 (JSC::MacroAssemblerSH4::urshift32):
3490 (JSC::MacroAssemblerSH4::replaceWithJump):
3491 (JSC::MacroAssemblerSH4::maxJumpReplacementSize):
3492 * assembler/SH4Assembler.h:
3493 (JSC::SH4Assembler::shldRegReg):
3494 (JSC::SH4Assembler::shadRegReg):
3495 (JSC::SH4Assembler::shalImm8r):
3497 (JSC::SH4Assembler::sharImm8r):
3498 (JSC::SH4Assembler::maxJumpReplacementSize):
3499 (JSC::SH4Assembler::replaceWithJump):
3500 * offlineasm/sh4.rb:
3502 2013-04-30 Geoffrey Garen <ggaren@apple.com>
3504 Objective-C JavaScriptCore API should publicly support bridging to C
3505 https://bugs.webkit.org/show_bug.cgi?id=115447
3507 Reviewed by Mark Hahnenberg.
3509 For consistency, I renamed
3511 +[JSValue valueWithValue:] => +[JSValue valueWithJSValueRef]
3512 +[JSContext contextWithGlobalContextRef] => +[JSContext contextWithJSGlobalContextRef]
3513 -[JSContext globalContext] => -[JSContext JSGlobalContextRef]
3515 I searched svn to verify that these functions don't have clients yet,
3516 so we won't break anything.
3518 I also exported as public API
3520 +[JSValue valueWithJSValueRef:]
3521 +[JSContext contextWithJSGlobalContextRef:]
3523 It's hard to integrate with the C API without these.
3525 2013-04-30 Commit Queue <rniwa@webkit.org>
3527 Unreviewed, rolling out r149349 and r149354.
3528 http://trac.webkit.org/changeset/149349
3529 http://trac.webkit.org/changeset/149354
3530 https://bugs.webkit.org/show_bug.cgi?id=115444
3532 The Thumb version of compileSoftModulo make invalid use of
3533 registers (Requested by benjaminp on #webkit).
3536 * GNUmakefile.list.am:
3537 * JavaScriptCore.xcodeproj/project.pbxproj:
3538 * assembler/ARMv7Assembler.h:
3540 * assembler/AbstractMacroAssembler.h:
3543 * assembler/MacroAssemblerARMv7.cpp: Removed.
3544 * assembler/MacroAssemblerARMv7.h:
3545 (MacroAssemblerARMv7):
3546 * dfg/DFGFixupPhase.cpp:
3547 (JSC::DFG::FixupPhase::fixupNode):
3548 * dfg/DFGOperations.cpp:
3549 * dfg/DFGOperations.h:
3550 * dfg/DFGSpeculativeJIT.cpp:
3551 (JSC::DFG::SpeculativeJIT::compileSoftModulo):
3553 (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForARMv7s):
3554 * dfg/DFGSpeculativeJIT.h:
3555 (JSC::DFG::SpeculativeJIT::callOperation):
3557 * dfg/DFGSpeculativeJIT32_64.cpp:
3558 (JSC::DFG::SpeculativeJIT::compile):
3560 2013-04-30 Zalan Bujtas <zalan@apple.com>
3562 Animations fail to start on http://www.google.com/insidesearch/howsearchworks/thestory/
3563 https://bugs.webkit.org/show_bug.cgi?id=111244
3565 Reviewed by David Kilzer.
3567 Enable performance.now() as a minimal subset of Web Timing API.
3568 It returns DOMHighResTimeStamp, a monotonically increasing value representing the
3569 number of milliseconds from the start of the navigation of the current document.
3570 JS libraries use this API to check against the requestAnimationFrame() timestamp.
3572 * Configurations/FeatureDefines.xcconfig:
3574 2013-04-30 Zoltan Arvai <zarvai@inf.u-szeged.hu>
3576 Unreviewed. Speculative build fix on Qt Arm and Mips after r149349.
3578 * dfg/DFGSpeculativeJIT.cpp:
3579 (JSC::DFG::SpeculativeJIT::compileSoftModulo):
3581 2013-04-29 Cosmin Truta <ctruta@blackberry.com>
3583 [ARM] Expand the use of integer division
3584 https://bugs.webkit.org/show_bug.cgi?id=115138
3586 Reviewed by Benjamin Poulain.
3588 If availability of hardware integer division isn't known at compile
3589 time, check the CPU flags and decide at runtime whether to fall back
3590 to software. Currently, this OS-specific check is implemented on QNX.
3592 Moreover, use operator % instead of fmod() in the calculation of the
3593 software modulo. Even when it's software-emulated, operator % is faster
3594 than fmod(): on ARM v7 QNX, without hardware division, we noticed
3595 >3% speedup on SunSpider.
3598 * GNUmakefile.list.am:
3599 * JavaScriptCore.xcodeproj/project.pbxproj:
3600 * assembler/ARMv7Assembler.h:
3601 (JSC::ARMv7Assembler::sdiv): Did not compile conditionally.
3602 (JSC::ARMv7Assembler::udiv): Ditto.
3603 * assembler/AbstractMacroAssembler.h:
3604 (JSC::isARMv7s): Removed.
3605 * assembler/MacroAssemblerARMv7.cpp: Added.
3606 (JSC::isIntegerDivSupported): Added.
3607 * assembler/MacroAssemblerARMv7.h:
3608 (JSC::MacroAssemblerARMv7::supportsIntegerDiv): Added.
3609 * dfg/DFGFixupPhase.cpp:
3610 (JSC::DFG::FixupPhase::fixupNode): Checked MacroAssembler::supportsIntegerDiv() in ArithDiv case.
3611 * dfg/DFGOperations.cpp:
3612 (JSC::DFG::operationModOnInts): Added.
3613 * dfg/DFGOperations.h:
3614 (JSC::DFG::Z_DFGOperation_ZZ): Added.
3615 * dfg/DFGSpeculativeJIT.cpp:
3616 (JSC::DFG::SpeculativeJIT::compileSoftModulo): Separated the X86-specific and ARM-specific codegen
3617 from the common implementation; used operationModOnInts on ARM.
3618 (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForARM): Renamed from compileIntegerArithDivForARMv7.
3619 (JSC::DFG::SpeculativeJIT::compileArithMod): Allowed run-time detection of integer div on ARM.
3620 * dfg/DFGSpeculativeJIT.h:
3621 (JSC::DFG::SpeculativeJIT::callOperation): Added overloads with Z_DFGOperation_ZZ arguments.
3622 * dfg/DFGSpeculativeJIT32_64.cpp:
3623 (JSC::DFG::SpeculativeJIT::compile): Used compileIntegerArithDivForARM.
3625 2013-04-29 Benjamin Poulain <benjamin@webkit.org>
3627 Unify the data access of StringImpl members from JavaScriptCore
3628 https://bugs.webkit.org/show_bug.cgi?id=115320
3630 Reviewed by Andreas Kling.
3632 DFG accesses the member infos by directly calling the methods on StringImpl,
3633 while the baseline JIT was using helper methods on ThunkHelpers.
3635 Cut the middle man, and use StringImpl directly everywhere.
3638 (JSC::JIT::emitLoadCharacterString):
3639 * jit/JITPropertyAccess.cpp:
3640 (JSC::JIT::stringGetByValStubGenerator):
3641 * jit/JITPropertyAccess32_64.cpp:
3642 (JSC::JIT::stringGetByValStubGenerator):
3643 * jit/JSInterfaceJIT.h:
3644 * jit/ThunkGenerators.cpp:
3645 (JSC::stringCharLoad):
3647 2013-04-29 Benjamin Poulain <bpoulain@apple.com>
3649 Use push and pop for iOS math function thunks
3650 https://bugs.webkit.org/show_bug.cgi?id=115215
3652 Reviewed by Filip Pizlo.
3654 The iOS ABI is a little different than regular ARM ABI regarding stack alignment.
3655 The requirement is 4 bytes:
3656 "The ARM environment uses a stack that—at the point of function calls—is 4-byte aligned,
3657 grows downward, and contains local variables and a function’s parameters."
3659 Subsequently, we can just use push and pop to preserve the link register.
3661 * jit/ThunkGenerators.cpp:
3663 2013-04-29 Brent Fulgham <bfulgham@webkit.org>
3665 [Windows, WinCairo] Get rid of last few pthread include/link references.
3666 https://bugs.webkit.org/show_bug.cgi?id=115375
3668 Reviewed by Tim Horton.
3670 * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd:
3671 * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
3672 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props:
3673 * JavaScriptCore.vcxproj/jsc/jscCommon.props:
3674 * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
3675 * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
3677 2013-04-29 Roger Fong <roger_fong@apple.com>
3679 Unreviewed. AppleWin VS2010 build fix.
3681 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
3683 2013-04-26 Mark Hahnenberg <mhahnenberg@apple.com>
3685 ~BlockAllocator should ASSERT that it has no more Regions left
3686 https://bugs.webkit.org/show_bug.cgi?id=115287
3688 Reviewed by Andreas Kling.
3690 * heap/BlockAllocator.cpp:
3691 (JSC::BlockAllocator::~BlockAllocator):
3692 (JSC::BlockAllocator::allRegionSetsAreEmpty):
3693 * heap/BlockAllocator.h:
3695 (JSC::BlockAllocator::RegionSet::isEmpty):
3698 2013-04-29 Mark Hahnenberg <mhahnenberg@apple.com>
3700 IndexingTypes should use hex
3701 https://bugs.webkit.org/show_bug.cgi?id=115286
3703 Decimal is kind of confusing/hard to read because they're used as bit masks. Hex seems more appropriate.
3705 Reviewed by Geoffrey Garen.
3707 * runtime/IndexingType.h:
3709 2013-04-29 Carlos Garcia Campos <cgarcia@igalia.com>
3711 Unreviewed. Fix make distcheck.
3713 * GNUmakefile.list.am: Add missing headers files to compilation
3714 and offlineasm/sh4.rb script.
3716 2013-04-28 Dean Jackson <dino@apple.com>
3718 [Mac] Disable canvas backing store scaling (HIGH_DPI_CANVAS)
3719 https://bugs.webkit.org/show_bug.cgi?id=115310
3721 Reviewed by Simon Fraser.
3723 Remove ENABLE_HIGH_DPI_CANVAS_macosx.
3725 * Configurations/FeatureDefines.xcconfig:
3727 2013-04-27 Darin Adler <darin@apple.com>
3729 Move from constructor and member function adoptCF/NS to free function adoptCF/NS.
3730 https://bugs.webkit.org/show_bug.cgi?id=115307
3732 Reviewed by Geoffrey Garen.
3734 * heap/HeapTimer.cpp:
3735 (JSC::HeapTimer::HeapTimer):
3737 (JSC::enableAssembler):
3738 Use adoptCF free function.
3740 2013-04-27 Anders Carlsson <andersca@apple.com>
3742 Try to fix the Windows build.
3744 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
3746 2013-04-25 Geoffrey Garen <ggaren@apple.com>
3748 Cleaned up pre/post inc/dec in bytecode
3749 https://bugs.webkit.org/show_bug.cgi?id=115222
3751 Reviewed by Filip Pizlo.
3753 A few related changes here:
3755 (*) Removed post_inc and post_dec. The two-result form was awkward to
3756 reason about. Being explicit about the intermediate mov and to_number
3757 reduces DFG overhead, removes some fragile ASSERTs from the DFG, and
3758 fixes a const bug. Plus, we get to blow away 262 lines of code.
3760 (*) Renamed pre_inc and pre_dec to inc and dec, since there's only one
3763 (*) Renamed to_jsnumber to to_number, to match the ECMA name.
3765 (*) Tightened up the codegen and runtime support for to_number.
3768 * JavaScriptCore.order: Order!
3770 * bytecode/CodeBlock.cpp:
3771 (JSC::CodeBlock::dumpBytecode):
3772 * bytecode/Opcode.h:
3773 (JSC::padOpcodeName):
3774 * bytecompiler/BytecodeGenerator.cpp:
3775 (JSC::BytecodeGenerator::emitInc):
3776 (JSC::BytecodeGenerator::emitDec):
3777 * bytecompiler/BytecodeGenerator.h:
3778 (JSC::BytecodeGenerator::emitToNumber):
3779 (BytecodeGenerator): Removed post_inc and post_dec.
3781 * bytecompiler/NodesCodegen.cpp:
3782 (JSC::emitPreIncOrDec): Updated for rename.
3784 (JSC::emitPostIncOrDec): Issue an explicit mov and to_number when needed.
3785 These are rare, and they boil away in the DFG.
3787 (JSC::PostfixNode::emitResolve):
3788 (JSC::PrefixNode::emitResolve): For const, use an explicit mov instead
3789 of any special forms. This fixes a bug where we would do string
3790 add/subtract instead of number.
3792 * dfg/DFGByteCodeParser.cpp:
3793 (JSC::DFG::ByteCodeParser::parseBlock):
3794 * dfg/DFGCapabilities.h:
3795 (JSC::DFG::canCompileOpcode):
3797 (JSC::JIT::privateCompileMainPass):
3798 (JSC::JIT::privateCompileSlowCases):
3800 * jit/JITArithmetic.cpp:
3801 (JSC::JIT::emit_op_inc):
3802 (JSC::JIT::emitSlow_op_inc):
3803 (JSC::JIT::emit_op_dec):
3804 (JSC::JIT::emitSlow_op_dec):
3805 * jit/JITArithmetic32_64.cpp:
3806 (JSC::JIT::emit_op_inc):
3807 (JSC::JIT::emitSlow_op_inc):
3808 (JSC::JIT::emit_op_dec):
3809 (JSC::JIT::emitSlow_op_dec): Removed post_inc/dec, and updated for renames.
3811 * jit/JITOpcodes.cpp:
3812 (JSC::JIT::emit_op_to_number):
3813 (JSC::JIT::emitSlow_op_to_number): Removed a test for number cells. There's
3816 * jit/JITOpcodes32_64.cpp:
3817 (JSC::JIT::emit_op_to_number): Use LowestTag to avoid making assumptions
3818 about the lowest valued tag.
3820 (JSC::JIT::emitSlow_op_to_number): Updated for renames.
3823 (JSC::DEFINE_STUB_FUNCTION):
3825 * llint/LLIntSlowPaths.cpp:
3826 (JSC::LLInt::LLINT_SLOW_PATH_DECL):
3827 * llint/LLIntSlowPaths.h:
3828 * llint/LowLevelInterpreter32_64.asm:
3829 * llint/LowLevelInterpreter64.asm:
3830 * parser/NodeConstructors.h:
3831 (JSC::UnaryPlusNode::UnaryPlusNode): Removed post_inc/dec, and updated for renames.
3833 * runtime/Operations.cpp:
3834 (JSC::jsIsObjectType): Removed a test for number cells. There's
3837 2013-04-27 Julien Brianceau <jbrianceau@nds.com>
3839 REGRESSION(r149114): cache flush for SH4 arch may flush an extra page.
3840 https://bugs.webkit.org/show_bug.cgi?id=115305
3842 Reviewed by Andreas Kling.
3844 * assembler/SH4Assembler.h:
3845 (JSC::SH4Assembler::cacheFlush):
3847 2013-04-26 Geoffrey Garen <ggaren@apple.com>
3849 Re-landing <http://trac.webkit.org/changeset/148999>
3851 Filled out more cases of branch folding in bytecode when emitting
3852 expressions into a branching context
3853 https://bugs.webkit.org/show_bug.cgi?id=115057
3855 Reviewed by Phil Pizlo.
3857 We can't fold the number == 1 case to boolean because all non-zero numbers
3858 down-cast to true, but only 1 is == to true.
3860 2013-04-26 Filip Pizlo <fpizlo@apple.com>
3862 Correct indentation of SymbolTable.h
3864 Rubber stamped by Mark Hahnenberg.
3866 * runtime/SymbolTable.h:
3868 2013-04-26 Roger Fong <roger_fong@apple.com>
3870 Make Apple Windows VS2010 build results into and get dependencies from __32 suffixed folders.
3871 Make the DebugSuffix configuration use _debug dependencies.
3873 * JavaScriptCore.vcxproj/JavaScriptCore.make:
3874 * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
3875 * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
3876 * JavaScriptCore.vcxproj/JavaScriptCoreCF.props:
3877 * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
3878 * JavaScriptCore.vcxproj/JavaScriptCoreDebug.props:
3879 * JavaScriptCore.vcxproj/JavaScriptCoreDebugCFLite.props:
3880 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj:
3881 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj.filters:
3882 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorBuildCmd.cmd:
3883 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorCommon.props:
3884 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorDebug.props:
3885 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPostBuild.cmd:
3886 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPreBuild.cmd:
3887 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorProduction.props:
3888 * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorRelease.props:
3889 * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.make:
3890 * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj:
3891 * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedCommon.props:
3892 * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedDebug.props:
3893 * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedProduction.props:
3894 * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedRelease.props:
3895 * JavaScriptCore.vcxproj/JavaScriptCorePostBuild.cmd:
3896 * JavaScriptCore.vcxproj/JavaScriptCorePreLink.cmd:
3897 * JavaScriptCore.vcxproj/JavaScriptCoreProduction.props:
3898 * JavaScriptCore.vcxproj/JavaScriptCoreRelease.props:
3899 * JavaScriptCore.vcxproj/JavaScriptCoreReleaseCFLite.props:
3900 * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.make:
3901 * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj:
3902 * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/build-LLIntAssembly.sh:
3903 * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.make:
3904 * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.vcxproj:
3905 * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/build-LLIntDesiredOffsets.sh:
3906 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj:
3907 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props:
3908 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.props:
3909 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.props:
3910 * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.props:
3911 * JavaScriptCore.vcxproj/build-generated-files.sh:
3912 * JavaScriptCore.vcxproj/copy-files.cmd:
3913 * JavaScriptCore.vcxproj/jsc/jsc.vcxproj:
3914 * JavaScriptCore.vcxproj/jsc/jscCommon.props:
3915 * JavaScriptCore.vcxproj/jsc/jscDebug.props:
3916 * JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd:
3917 * JavaScriptCore.vcxproj/jsc/jscPreLink.cmd:
3918 * JavaScriptCore.vcxproj/jsc/jscProduction.props:
3919 * JavaScriptCore.vcxproj/jsc/jscRelease.props:
3920 * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
3921 * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters:
3922 * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
3923 * JavaScriptCore.vcxproj/testRegExp/testRegExpDebug.props:
3924 * JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd:
3925 * JavaScriptCore.vcxproj/testRegExp/testRegExpPreLink.cmd:
3926 * JavaScriptCore.vcxproj/testRegExp/testRegExpProduction.props:
3927 * JavaScriptCore.vcxproj/testRegExp/testRegExpRelease.props:
3928 * JavaScriptCore.vcxproj/testapi/testapi.vcxproj:
3929 * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
3930 * JavaScriptCore.vcxproj/testapi/testapiCommonCFLite.props:
3931 * JavaScriptCore.vcxproj/testapi/testapiDebug.props:
3932 * JavaScriptCore.vcxproj/testapi/testapiDebugCFLite.props:
3933 * JavaScriptCore.vcxproj/testapi/testapiPreLink.cmd:
3934 * JavaScriptCore.vcxproj/testapi/testapiProduction.props:
3935 * JavaScriptCore.vcxproj/testapi/testapiRelease.props:
3936 * JavaScriptCore.vcxproj/testapi/testapiReleaseCFLite.props:
3938 2013-04-26 Roger Fong <roger_fong@apple.com>
3940 Disable sub-pixel layout on mac.
3941 https://bugs.webkit.org/show_bug.cgi?id=114999.
3943 Reviewed by Simon Fraser.
3945 * Configurations/FeatureDefines.xcconfig:
3947 2013-04-26 Oliver Hunt <oliver@apple.com>
3949 Make stack tracing more robust
3950 https://bugs.webkit.org/show_bug.cgi?id=115272
3952 Reviewed by Geoffrey Garen.
3954 CallFrame already handles stack walking confusion robustly,
3955 so we should make sure that the actual walk handles that as well.
3957 * interpreter/Interpreter.cpp:
3958 (JSC::getCallerInfo):
3960 2013-04-26 Mark Hahnenberg <mhahnenberg@apple.com>
3962 REGRESSION(r149165): It made many tests crash on 32 bit
3963 https://bugs.webkit.org/show_bug.cgi?id=115227
3965 Reviewed by Csaba Osztrogonác.
3967 m_reservation is uninitialized when ENABLE(SUPER_REGION) is false.